@sepale/components 0.0.0-stage → 0.1.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 (261) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -3
  3. package/dist/components/Accordion.svelte +48 -0
  4. package/dist/components/Accordion.svelte.d.ts +24 -0
  5. package/dist/components/Alert.svelte +107 -0
  6. package/dist/components/Alert.svelte.d.ts +40 -0
  7. package/dist/components/Avatar.svelte +75 -0
  8. package/dist/components/Avatar.svelte.d.ts +37 -0
  9. package/dist/components/Badge.svelte +46 -0
  10. package/dist/components/Badge.svelte.d.ts +22 -0
  11. package/dist/components/Breadcrumbs.svelte +36 -0
  12. package/dist/components/Breadcrumbs.svelte.d.ts +18 -0
  13. package/dist/components/Bubble.svelte +43 -0
  14. package/dist/components/Bubble.svelte.d.ts +23 -0
  15. package/dist/components/Button.svelte +132 -0
  16. package/dist/components/Button.svelte.d.ts +40 -0
  17. package/dist/components/Calendar.svelte +193 -0
  18. package/dist/components/Calendar.svelte.d.ts +60 -0
  19. package/dist/components/Card.svelte +69 -0
  20. package/dist/components/Card.svelte.d.ts +37 -0
  21. package/dist/components/Carousel.svelte +550 -0
  22. package/dist/components/Carousel.svelte.d.ts +124 -0
  23. package/dist/components/Checkbox.svelte +48 -0
  24. package/dist/components/Checkbox.svelte.d.ts +26 -0
  25. package/dist/components/Chip.svelte +60 -0
  26. package/dist/components/Chip.svelte.d.ts +26 -0
  27. package/dist/components/ChipsInput.svelte +158 -0
  28. package/dist/components/ChipsInput.svelte.d.ts +64 -0
  29. package/dist/components/Collapse.svelte +101 -0
  30. package/dist/components/Collapse.svelte.d.ts +46 -0
  31. package/dist/components/ColorPicker.svelte +135 -0
  32. package/dist/components/ColorPicker.svelte.d.ts +44 -0
  33. package/dist/components/Combobox.svelte +496 -0
  34. package/dist/components/Combobox.svelte.d.ts +96 -0
  35. package/dist/components/DataControl.svelte +754 -0
  36. package/dist/components/DataControl.svelte.d.ts +143 -0
  37. package/dist/components/DataHandler.svelte +67 -0
  38. package/dist/components/DataHandler.svelte.d.ts +44 -0
  39. package/dist/components/DatePicker.svelte +185 -0
  40. package/dist/components/DatePicker.svelte.d.ts +56 -0
  41. package/dist/components/Dialog.svelte +194 -0
  42. package/dist/components/Dialog.svelte.d.ts +51 -0
  43. package/dist/components/Divider.svelte +54 -0
  44. package/dist/components/Divider.svelte.d.ts +27 -0
  45. package/dist/components/Dock.svelte +34 -0
  46. package/dist/components/Dock.svelte.d.ts +18 -0
  47. package/dist/components/Drawer.svelte +174 -0
  48. package/dist/components/Drawer.svelte.d.ts +51 -0
  49. package/dist/components/Dropdown.svelte +183 -0
  50. package/dist/components/Dropdown.svelte.d.ts +52 -0
  51. package/dist/components/Editable.svelte +292 -0
  52. package/dist/components/Editable.svelte.d.ts +113 -0
  53. package/dist/components/EmptyState.svelte +64 -0
  54. package/dist/components/EmptyState.svelte.d.ts +29 -0
  55. package/dist/components/Fieldset.svelte +42 -0
  56. package/dist/components/Fieldset.svelte.d.ts +20 -0
  57. package/dist/components/FileDropzone.svelte +154 -0
  58. package/dist/components/FileDropzone.svelte.d.ts +45 -0
  59. package/dist/components/FileExplorer.svelte +643 -0
  60. package/dist/components/FileExplorer.svelte.d.ts +114 -0
  61. package/dist/components/FileInput.svelte +125 -0
  62. package/dist/components/FileInput.svelte.d.ts +51 -0
  63. package/dist/components/FloatingLabel.svelte +38 -0
  64. package/dist/components/FloatingLabel.svelte.d.ts +24 -0
  65. package/dist/components/Footer.svelte +68 -0
  66. package/dist/components/Footer.svelte.d.ts +37 -0
  67. package/dist/components/Grid.svelte +122 -0
  68. package/dist/components/Grid.svelte.d.ts +72 -0
  69. package/dist/components/Hero.svelte +62 -0
  70. package/dist/components/Hero.svelte.d.ts +33 -0
  71. package/dist/components/Input.svelte +184 -0
  72. package/dist/components/Input.svelte.d.ts +65 -0
  73. package/dist/components/Join.svelte +38 -0
  74. package/dist/components/Join.svelte.d.ts +21 -0
  75. package/dist/components/Kanban.svelte +284 -0
  76. package/dist/components/Kanban.svelte.d.ts +93 -0
  77. package/dist/components/Label.svelte +32 -0
  78. package/dist/components/Label.svelte.d.ts +21 -0
  79. package/dist/components/LaptopFrame.svelte +44 -0
  80. package/dist/components/LaptopFrame.svelte.d.ts +21 -0
  81. package/dist/components/List.svelte +95 -0
  82. package/dist/components/List.svelte.d.ts +69 -0
  83. package/dist/components/Loading.svelte +37 -0
  84. package/dist/components/Loading.svelte.d.ts +17 -0
  85. package/dist/components/Menu.svelte +144 -0
  86. package/dist/components/Menu.svelte.d.ts +53 -0
  87. package/dist/components/MobileFrame.svelte +41 -0
  88. package/dist/components/MobileFrame.svelte.d.ts +21 -0
  89. package/dist/components/Navbar.svelte +49 -0
  90. package/dist/components/Navbar.svelte.d.ts +25 -0
  91. package/dist/components/NumberInput.svelte +255 -0
  92. package/dist/components/NumberInput.svelte.d.ts +68 -0
  93. package/dist/components/Pagination.svelte +169 -0
  94. package/dist/components/Pagination.svelte.d.ts +50 -0
  95. package/dist/components/Progress.svelte +65 -0
  96. package/dist/components/Progress.svelte.d.ts +28 -0
  97. package/dist/components/RadialProgress.svelte +48 -0
  98. package/dist/components/RadialProgress.svelte.d.ts +20 -0
  99. package/dist/components/Radio.svelte +50 -0
  100. package/dist/components/Radio.svelte.d.ts +28 -0
  101. package/dist/components/Range.svelte +53 -0
  102. package/dist/components/Range.svelte.d.ts +26 -0
  103. package/dist/components/Rating.svelte +90 -0
  104. package/dist/components/Rating.svelte.d.ts +41 -0
  105. package/dist/components/Select.svelte +338 -0
  106. package/dist/components/Select.svelte.d.ts +74 -0
  107. package/dist/components/Sidebar.svelte +100 -0
  108. package/dist/components/Sidebar.svelte.d.ts +54 -0
  109. package/dist/components/Skeleton.svelte +40 -0
  110. package/dist/components/Skeleton.svelte.d.ts +18 -0
  111. package/dist/components/Stat.svelte +71 -0
  112. package/dist/components/Stat.svelte.d.ts +35 -0
  113. package/dist/components/Stats.svelte +38 -0
  114. package/dist/components/Stats.svelte.d.ts +22 -0
  115. package/dist/components/Steps.svelte +204 -0
  116. package/dist/components/Steps.svelte.d.ts +66 -0
  117. package/dist/components/Subtitle.svelte +44 -0
  118. package/dist/components/Subtitle.svelte.d.ts +26 -0
  119. package/dist/components/Swatch.svelte +61 -0
  120. package/dist/components/Swatch.svelte.d.ts +27 -0
  121. package/dist/components/Switch.svelte +105 -0
  122. package/dist/components/Switch.svelte.d.ts +44 -0
  123. package/dist/components/Table.svelte +243 -0
  124. package/dist/components/Table.svelte.d.ts +121 -0
  125. package/dist/components/Tabs.svelte +142 -0
  126. package/dist/components/Tabs.svelte.d.ts +80 -0
  127. package/dist/components/Text.svelte +43 -0
  128. package/dist/components/Text.svelte.d.ts +25 -0
  129. package/dist/components/Textarea.svelte +76 -0
  130. package/dist/components/Textarea.svelte.d.ts +39 -0
  131. package/dist/components/Title.svelte +46 -0
  132. package/dist/components/Title.svelte.d.ts +29 -0
  133. package/dist/components/Toast.svelte +154 -0
  134. package/dist/components/Toast.svelte.d.ts +49 -0
  135. package/dist/components/Toggle.svelte +48 -0
  136. package/dist/components/Toggle.svelte.d.ts +25 -0
  137. package/dist/components/Tooltip.svelte +70 -0
  138. package/dist/components/Tooltip.svelte.d.ts +34 -0
  139. package/dist/components/WindowFrame.svelte +53 -0
  140. package/dist/components/WindowFrame.svelte.d.ts +24 -0
  141. package/dist/components/accordion-context.d.ts +8 -0
  142. package/dist/components/accordion-context.js +25 -0
  143. package/dist/components/color.d.ts +39 -0
  144. package/dist/components/color.js +92 -0
  145. package/dist/components/data-handler.svelte.d.ts +362 -0
  146. package/dist/components/data-handler.svelte.js +690 -0
  147. package/dist/components/file-icons.d.ts +25 -0
  148. package/dist/components/file-icons.js +46 -0
  149. package/dist/family-types.d.ts +45 -0
  150. package/dist/family-types.js +73 -0
  151. package/dist/generated/classes.d.ts +17 -0
  152. package/dist/generated/classes.js +2511 -0
  153. package/dist/generated/components.d.ts +39 -0
  154. package/dist/generated/components.js +28666 -0
  155. package/dist/generated/registry.d.ts +35 -0
  156. package/dist/generated/registry.js +2658 -0
  157. package/dist/index.d.ts +73 -0
  158. package/dist/index.js +99 -0
  159. package/dist/sepale-types.d.ts +8 -0
  160. package/dist/sepale-types.js +200 -0
  161. package/dist/theme.d.ts +123 -0
  162. package/dist/theme.js +226 -0
  163. package/dist/variants.d.ts +124 -0
  164. package/dist/variants.js +70 -0
  165. package/dist/vendor/air-datepicker/LICENSE.md +21 -0
  166. package/dist/vendor/air-datepicker/README.md +19 -0
  167. package/dist/vendor/air-datepicker/buttonPresets.d.ts +13 -0
  168. package/dist/vendor/air-datepicker/buttonPresets.js +12 -0
  169. package/dist/vendor/air-datepicker/consts.d.ts +18 -0
  170. package/dist/vendor/air-datepicker/consts.js +35 -0
  171. package/dist/vendor/air-datepicker/datepicker.d.ts +289 -0
  172. package/dist/vendor/air-datepicker/datepicker.js +1435 -0
  173. package/dist/vendor/air-datepicker/datepickerBody.d.ts +46 -0
  174. package/dist/vendor/air-datepicker/datepickerBody.js +386 -0
  175. package/dist/vendor/air-datepicker/datepickerButtons.d.ts +25 -0
  176. package/dist/vendor/air-datepicker/datepickerButtons.js +85 -0
  177. package/dist/vendor/air-datepicker/datepickerCell.d.ts +35 -0
  178. package/dist/vendor/air-datepicker/datepickerCell.js +297 -0
  179. package/dist/vendor/air-datepicker/datepickerKeyboard.d.ts +26 -0
  180. package/dist/vendor/air-datepicker/datepickerKeyboard.js +207 -0
  181. package/dist/vendor/air-datepicker/datepickerNav.d.ts +31 -0
  182. package/dist/vendor/air-datepicker/datepickerNav.js +200 -0
  183. package/dist/vendor/air-datepicker/datepickerTime.d.ts +60 -0
  184. package/dist/vendor/air-datepicker/datepickerTime.js +276 -0
  185. package/dist/vendor/air-datepicker/defaults.d.ts +65 -0
  186. package/dist/vendor/air-datepicker/defaults.js +79 -0
  187. package/dist/vendor/air-datepicker/index.d.ts +168 -0
  188. package/dist/vendor/air-datepicker/index.js +3 -0
  189. package/dist/vendor/air-datepicker/locale/ar.d.ts +4 -0
  190. package/dist/vendor/air-datepicker/locale/ar.js +14 -0
  191. package/dist/vendor/air-datepicker/locale/bg.d.ts +4 -0
  192. package/dist/vendor/air-datepicker/locale/bg.js +14 -0
  193. package/dist/vendor/air-datepicker/locale/ca.d.ts +4 -0
  194. package/dist/vendor/air-datepicker/locale/ca.js +14 -0
  195. package/dist/vendor/air-datepicker/locale/cs.d.ts +4 -0
  196. package/dist/vendor/air-datepicker/locale/cs.js +14 -0
  197. package/dist/vendor/air-datepicker/locale/da.d.ts +4 -0
  198. package/dist/vendor/air-datepicker/locale/da.js +14 -0
  199. package/dist/vendor/air-datepicker/locale/de.d.ts +4 -0
  200. package/dist/vendor/air-datepicker/locale/de.js +14 -0
  201. package/dist/vendor/air-datepicker/locale/el.d.ts +4 -0
  202. package/dist/vendor/air-datepicker/locale/el.js +14 -0
  203. package/dist/vendor/air-datepicker/locale/en.d.ts +4 -0
  204. package/dist/vendor/air-datepicker/locale/en.js +14 -0
  205. package/dist/vendor/air-datepicker/locale/es.d.ts +4 -0
  206. package/dist/vendor/air-datepicker/locale/es.js +14 -0
  207. package/dist/vendor/air-datepicker/locale/eu.d.ts +4 -0
  208. package/dist/vendor/air-datepicker/locale/eu.js +14 -0
  209. package/dist/vendor/air-datepicker/locale/fi.d.ts +4 -0
  210. package/dist/vendor/air-datepicker/locale/fi.js +14 -0
  211. package/dist/vendor/air-datepicker/locale/fr.d.ts +4 -0
  212. package/dist/vendor/air-datepicker/locale/fr.js +14 -0
  213. package/dist/vendor/air-datepicker/locale/hr.d.ts +4 -0
  214. package/dist/vendor/air-datepicker/locale/hr.js +14 -0
  215. package/dist/vendor/air-datepicker/locale/hu.d.ts +4 -0
  216. package/dist/vendor/air-datepicker/locale/hu.js +14 -0
  217. package/dist/vendor/air-datepicker/locale/id.d.ts +4 -0
  218. package/dist/vendor/air-datepicker/locale/id.js +14 -0
  219. package/dist/vendor/air-datepicker/locale/it.d.ts +4 -0
  220. package/dist/vendor/air-datepicker/locale/it.js +14 -0
  221. package/dist/vendor/air-datepicker/locale/ja.d.ts +4 -0
  222. package/dist/vendor/air-datepicker/locale/ja.js +14 -0
  223. package/dist/vendor/air-datepicker/locale/ko.d.ts +4 -0
  224. package/dist/vendor/air-datepicker/locale/ko.js +14 -0
  225. package/dist/vendor/air-datepicker/locale/nb.d.ts +4 -0
  226. package/dist/vendor/air-datepicker/locale/nb.js +14 -0
  227. package/dist/vendor/air-datepicker/locale/nl.d.ts +4 -0
  228. package/dist/vendor/air-datepicker/locale/nl.js +14 -0
  229. package/dist/vendor/air-datepicker/locale/pl.d.ts +4 -0
  230. package/dist/vendor/air-datepicker/locale/pl.js +14 -0
  231. package/dist/vendor/air-datepicker/locale/pt-BR.d.ts +4 -0
  232. package/dist/vendor/air-datepicker/locale/pt-BR.js +14 -0
  233. package/dist/vendor/air-datepicker/locale/pt.d.ts +4 -0
  234. package/dist/vendor/air-datepicker/locale/pt.js +14 -0
  235. package/dist/vendor/air-datepicker/locale/ro.d.ts +4 -0
  236. package/dist/vendor/air-datepicker/locale/ro.js +14 -0
  237. package/dist/vendor/air-datepicker/locale/ru.d.ts +4 -0
  238. package/dist/vendor/air-datepicker/locale/ru.js +14 -0
  239. package/dist/vendor/air-datepicker/locale/si.d.ts +4 -0
  240. package/dist/vendor/air-datepicker/locale/si.js +14 -0
  241. package/dist/vendor/air-datepicker/locale/sk.d.ts +4 -0
  242. package/dist/vendor/air-datepicker/locale/sk.js +14 -0
  243. package/dist/vendor/air-datepicker/locale/sl.d.ts +4 -0
  244. package/dist/vendor/air-datepicker/locale/sl.js +14 -0
  245. package/dist/vendor/air-datepicker/locale/sv.d.ts +4 -0
  246. package/dist/vendor/air-datepicker/locale/sv.js +14 -0
  247. package/dist/vendor/air-datepicker/locale/th.d.ts +4 -0
  248. package/dist/vendor/air-datepicker/locale/th.js +14 -0
  249. package/dist/vendor/air-datepicker/locale/tr.d.ts +4 -0
  250. package/dist/vendor/air-datepicker/locale/tr.js +16 -0
  251. package/dist/vendor/air-datepicker/locale/uk.d.ts +4 -0
  252. package/dist/vendor/air-datepicker/locale/uk.js +14 -0
  253. package/dist/vendor/air-datepicker/locale/zh.d.ts +4 -0
  254. package/dist/vendor/air-datepicker/locale/zh.js +14 -0
  255. package/dist/vendor/air-datepicker/typedefs.d.ts +3 -0
  256. package/dist/vendor/air-datepicker/typedefs.js +15 -0
  257. package/dist/vendor/air-datepicker/utils.d.ts +155 -0
  258. package/dist/vendor/air-datepicker/utils.js +395 -0
  259. package/dist/vendor/air-datepicker/withEvents.d.ts +1 -0
  260. package/dist/vendor/air-datepicker/withEvents.js +39 -0
  261. package/package.json +44 -3
@@ -0,0 +1,200 @@
1
+ // @ts-nocheck — vendored code, typed by index.d.ts; not ours to check.
2
+ // air-datepicker 3.6.0 (MIT, Timofey Marochkin) — see LICENSE.md and README.md.
3
+ import {
4
+ closest,
5
+ createElement,
6
+ getEl,
7
+ toggleClass,
8
+ getDecade, getParsedDate,
9
+ removeClass
10
+ } from './utils.js';
11
+
12
+ import consts from './consts.js';
13
+
14
+ export default class DatepickerNav {
15
+ constructor({dp, opts}) {
16
+ this.dp = dp;
17
+ this.opts = opts;
18
+
19
+ this.init();
20
+ }
21
+
22
+ init() {
23
+ this._createElement();
24
+ this._buildBaseHtml();
25
+ this._defineDOM();
26
+
27
+ this.render();
28
+
29
+ this.handleNavStatus();
30
+ this._bindEvents();
31
+ this._bindDatepickerEvents();
32
+ }
33
+
34
+ _defineDOM() {
35
+ this.$title = getEl('.air-datepicker-nav--title', this.$el);
36
+ this.$prev = getEl('[data-action="prev"]', this.$el);
37
+ this.$next = getEl('[data-action="next"]', this.$el);
38
+ }
39
+
40
+ _bindEvents() {
41
+ this.$el.addEventListener('click', this.onClickNav);
42
+ this.$title.addEventListener('click', this.onClickNavTitle);
43
+ }
44
+
45
+ _bindDatepickerEvents() {
46
+ this.dp.on(consts.eventChangeViewDate, this.onChangeViewDate);
47
+ this.dp.on(consts.eventChangeCurrentView, this.onChangeCurrentView);
48
+
49
+ if (this.isNavIsFunction) {
50
+ // Wait till time is added to date
51
+ this.dp.on(consts.eventChangeSelectedDate, this.renderDelay);
52
+
53
+ if (this.dp.opts.timepicker) {
54
+ this.dp.on(consts.eventChangeTime, this.render);
55
+ }
56
+ }
57
+ }
58
+
59
+ destroy() {
60
+ this.dp.off(consts.eventChangeViewDate, this.onChangeViewDate);
61
+ this.dp.off(consts.eventChangeCurrentView, this.onChangeCurrentView);
62
+ if (this.isNavIsFunction) {
63
+ this.dp.off(consts.eventChangeSelectedDate, this.renderDelay);
64
+ if (this.dp.opts.timepicker) {
65
+ this.dp.off(consts.eventChangeTime, this.render);
66
+ }
67
+ }
68
+ }
69
+
70
+ _createElement() {
71
+ this.$el = createElement({
72
+ tagName: 'nav',
73
+ className: 'air-datepicker-nav'
74
+ });
75
+ }
76
+
77
+ _getTitle() {
78
+ let {dp, opts} = this;
79
+ let template = opts.navTitles[dp.currentView];
80
+
81
+ if (typeof template === 'function') {
82
+ return template(dp);
83
+ }
84
+
85
+ return dp.formatDate(dp.viewDate, template);
86
+ }
87
+
88
+ handleNavStatus() {
89
+ let {disableNavWhenOutOfRange} = this.opts;
90
+ let {minDate, maxDate} = this.dp;
91
+ if (!(minDate || maxDate) || !disableNavWhenOutOfRange) return;
92
+
93
+ let {year, month} = this.dp.parsedViewDate;
94
+ let minDateParsed = minDate ? getParsedDate(minDate) : false;
95
+ let maxDateParsed = maxDate ? getParsedDate(maxDate) : false;
96
+
97
+ switch (this.dp.currentView) {
98
+ case consts.days:
99
+ if (minDate && (minDateParsed.month >= month && minDateParsed.year >= year)) {
100
+ this._disableNav('prev');
101
+ }
102
+ if (maxDate && maxDateParsed.month <= month && maxDateParsed.year <= year) {
103
+ this._disableNav('next');
104
+ }
105
+ break;
106
+ case consts.months:
107
+ if (minDate && minDateParsed.year >= year) {
108
+ this._disableNav('prev');
109
+ }
110
+ if (maxDate && maxDateParsed.year <= year) {
111
+ this._disableNav('next');
112
+ }
113
+ break;
114
+ case consts.years: {
115
+ let decade = getDecade(this.dp.viewDate);
116
+ if (minDate && minDateParsed.year >= decade[0]) {
117
+ this._disableNav('prev');
118
+ }
119
+ if (maxDate && maxDateParsed.year <= decade[1]) {
120
+ this._disableNav('next');
121
+ }
122
+ break;
123
+ }
124
+ }
125
+ }
126
+
127
+ _disableNav(actionName) {
128
+ getEl('[data-action="' + actionName + '"]', this.$el).classList.add('-disabled-');
129
+ }
130
+
131
+ _resetNavStatus() {
132
+ removeClass(this.$el.querySelectorAll('.air-datepicker-nav--action'), '-disabled-');
133
+ }
134
+
135
+ onClickNav = (e) => {
136
+ let $item = closest(e.target, '.air-datepicker-nav--action');
137
+ if (!$item) return;
138
+
139
+ let actionName = $item.dataset.action;
140
+
141
+ this.dp[actionName]();
142
+ }
143
+
144
+ onChangeViewDate = () => {
145
+ this.render();
146
+ this._resetNavStatus();
147
+ this.handleNavStatus();
148
+ }
149
+
150
+ onChangeCurrentView = () => {
151
+ this.render();
152
+ this._resetNavStatus();
153
+ this.handleNavStatus();
154
+ }
155
+
156
+ onClickNavTitle = () => {
157
+ if (this.dp.isFinalView) return;
158
+ this.dp.up();
159
+ }
160
+
161
+ _buildBaseHtml() {
162
+ let {prevHtml, nextHtml} = this.opts;
163
+
164
+ this.$el.innerHTML = '' +
165
+ `<div class="air-datepicker-nav--action" data-action="prev">${prevHtml}</div>` +
166
+ '<div class="air-datepicker-nav--title"></div>' +
167
+ `<div class="air-datepicker-nav--action" data-action="next">${nextHtml}</div>`;
168
+ }
169
+
170
+ get isNavIsFunction() {
171
+ let {navTitles} = this.opts;
172
+
173
+ return Object.keys(navTitles).find((view) => {
174
+ return typeof navTitles[view] === 'function';
175
+ });
176
+ }
177
+
178
+ update = () => {
179
+ let {prevHtml, nextHtml} = this.opts;
180
+
181
+ this.$prev.innerHTML = prevHtml;
182
+ this.$next.innerHTML = nextHtml;
183
+
184
+ this._resetNavStatus();
185
+ this.render();
186
+ this.handleNavStatus();
187
+ }
188
+
189
+ renderDelay = () => {
190
+ setTimeout(this.render);
191
+ }
192
+
193
+ render = () => {
194
+ this.$title.innerHTML = this._getTitle();
195
+
196
+ toggleClass(this.$title, {
197
+ '-disabled-': this.dp.isFinalView
198
+ });
199
+ }
200
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Timepicker
3
+ *
4
+ * How does it work:
5
+ * Timepicker has its own hour and minute values. At the start they will be equal to current time, or to min/max date values.
6
+ * When user selects date, timepicker add its values to the date (when consts.eventChangeSelectedDate is triggered).
7
+ * When lastSelectedDate is changed (e.g. when user clicks on already selected date in multiple dates mode or in range mode)
8
+ * then hour and minute values are taken from this date and stored in a timepicker instance.
9
+ *
10
+ */
11
+ export default class DatepickerTime {
12
+ constructor({ opts, dp }?: {});
13
+ opts: any;
14
+ dp: any;
15
+ ampm: boolean | undefined;
16
+ init(): void;
17
+ bindDatepickerEvents(): void;
18
+ bindDOMEvents(): void;
19
+ createElement(): void;
20
+ $el: HTMLElement | undefined;
21
+ destroy(): void;
22
+ buildHtml(): void;
23
+ defineDOM(): void;
24
+ $ranges: NodeListOf<Element> | undefined;
25
+ $hours: any;
26
+ $minutes: any;
27
+ $hoursText: any;
28
+ $minutesText: any;
29
+ $ampm: any;
30
+ setTime(date: any): void;
31
+ addTimeToDate(date: any): void;
32
+ setMinMaxTime(date: any): void;
33
+ setCurrentTime(date: any): void;
34
+ set hours(val: any);
35
+ get hours(): any;
36
+ minutes: number | undefined;
37
+ setMinMaxTimeFromOptions(): void;
38
+ minHours: any;
39
+ minMinutes: any;
40
+ maxHours: any;
41
+ maxMinutes: any;
42
+ setMinTimeFromMinDate(date: any): void;
43
+ setMaxTimeFromMaxDate(date: any): void;
44
+ updateSliders(): void;
45
+ updateText(): void;
46
+ toggleTimepickerIsActive: (value: any) => void;
47
+ onChangeSelectedDate: ({ date, updateTime }: {
48
+ date: any;
49
+ updateTime?: boolean | undefined;
50
+ }) => void;
51
+ onChangeLastSelectedDate: (date: any) => void;
52
+ onChangeInputRange: (e: any) => void;
53
+ onMouseEnterLeave: (e: any) => void;
54
+ onFocus: () => void;
55
+ onBlur: () => void;
56
+ _hours: any;
57
+ displayHours: any;
58
+ dayPeriod: string | undefined;
59
+ render(): void;
60
+ }
@@ -0,0 +1,276 @@
1
+ // @ts-nocheck — vendored code, typed by index.d.ts; not ours to check.
2
+ // air-datepicker 3.6.0 (MIT, Timofey Marochkin) — see LICENSE.md and README.md.
3
+ import {
4
+ addEventListener,
5
+ clamp,
6
+ classNames,
7
+ createElement,
8
+ getEl,
9
+ getLeadingZeroNum,
10
+ getParsedDate,
11
+ isSameDate,
12
+ setAttribute,
13
+ getWordBoundaryRegExp, getDayPeriodFromHours24,
14
+ } from './utils.js';
15
+
16
+ import consts from './consts.js';
17
+
18
+ /**
19
+ * Timepicker
20
+ *
21
+ * How does it work:
22
+ * Timepicker has its own hour and minute values. At the start they will be equal to current time, or to min/max date values.
23
+ * When user selects date, timepicker add its values to the date (when consts.eventChangeSelectedDate is triggered).
24
+ * When lastSelectedDate is changed (e.g. when user clicks on already selected date in multiple dates mode or in range mode)
25
+ * then hour and minute values are taken from this date and stored in a timepicker instance.
26
+ *
27
+ */
28
+ export default class DatepickerTime {
29
+ constructor({opts, dp} = {}) {
30
+ this.opts = opts;
31
+ this.dp = dp;
32
+ let {timeFormat} = this.dp.locale;
33
+
34
+ if (timeFormat && (timeFormat.match(getWordBoundaryRegExp('h')) || timeFormat.match(getWordBoundaryRegExp('hh')))) {
35
+ this.ampm = true;
36
+ }
37
+
38
+ this.init();
39
+ }
40
+
41
+ init() {
42
+ this.setTime(this.dp.lastSelectedDate || this.dp.viewDate);
43
+ this.createElement();
44
+ this.buildHtml();
45
+ this.defineDOM();
46
+ this.render();
47
+
48
+ this.bindDatepickerEvents();
49
+ this.bindDOMEvents();
50
+ }
51
+
52
+ bindDatepickerEvents() {
53
+ this.dp.on(consts.eventChangeSelectedDate, this.onChangeSelectedDate);
54
+ this.dp.on(consts.eventChangeLastSelectedDate, this.onChangeLastSelectedDate);
55
+ }
56
+
57
+ bindDOMEvents() {
58
+ let changeEvent = 'input';
59
+ if (navigator.userAgent.match(/trident/gi)) {
60
+ changeEvent = 'change';
61
+ }
62
+
63
+ addEventListener(this.$ranges, changeEvent, this.onChangeInputRange);
64
+ addEventListener(this.$ranges, 'mouseenter', this.onMouseEnterLeave);
65
+ addEventListener(this.$ranges, 'mouseleave', this.onMouseEnterLeave);
66
+ addEventListener(this.$ranges, 'focus', this.onFocus);
67
+ addEventListener(this.$ranges, 'mousedown', this.onFocus);
68
+ addEventListener(this.$ranges, 'blur', this.onBlur);
69
+ }
70
+
71
+ createElement() {
72
+ this.$el = createElement({className: classNames('air-datepicker-time', {'-am-pm-': this.dp.ampm})});
73
+ }
74
+
75
+ destroy() {
76
+ this.dp.off(consts.eventChangeSelectedDate, this.onChangeSelectedDate);
77
+ this.dp.off(consts.eventChangeLastSelectedDate, this.onChangeLastSelectedDate);
78
+ this.$el.parentNode.removeChild(this.$el);
79
+ }
80
+
81
+ buildHtml() {
82
+ let {
83
+ ampm, hours, displayHours, minutes, minHours, minMinutes, maxHours, maxMinutes, dayPeriod,
84
+ opts: {hoursStep, minutesStep}
85
+ } = this;
86
+
87
+ this.$el.innerHTML = '' +
88
+ '<div class="air-datepicker-time--current">' +
89
+ ` <span class="air-datepicker-time--current-hours">${getLeadingZeroNum(displayHours)}</span>` +
90
+ ' <span class="air-datepicker-time--current-colon">:</span>' +
91
+ ` <span class="air-datepicker-time--current-minutes">${getLeadingZeroNum(minutes)}</span>` +
92
+ ` ${ampm ? `<span class='air-datepicker-time--current-ampm'>${dayPeriod}</span>` : ''}` +
93
+ '</div>' +
94
+ '<div class="air-datepicker-time--sliders">' +
95
+ ' <div class="air-datepicker-time--row">' +
96
+ // eslint-disable-next-line max-len
97
+ ` <input type="range" name="hours" value="${hours}" min="${minHours}" max="${maxHours}" step="${hoursStep}"/>` +
98
+ ' </div>' +
99
+ ' <div class="air-datepicker-time--row">' +
100
+ // eslint-disable-next-line max-len
101
+ ` <input type="range" name="minutes" value="${minutes}" min="${minMinutes}" max="${maxMinutes}" step="${minutesStep}"/>` +
102
+ ' </div>' +
103
+ '</div>';
104
+ }
105
+
106
+ defineDOM() {
107
+ let getElWithContext = selector => getEl(selector, this.$el);
108
+
109
+ this.$ranges = this.$el.querySelectorAll('[type="range"]');
110
+ this.$hours = getElWithContext('[name="hours"]');
111
+ this.$minutes = getElWithContext('[name="minutes"]');
112
+ this.$hoursText = getElWithContext('.air-datepicker-time--current-hours');
113
+ this.$minutesText = getElWithContext('.air-datepicker-time--current-minutes');
114
+ this.$ampm = getElWithContext('.air-datepicker-time--current-ampm');
115
+ }
116
+
117
+
118
+ setTime(date) {
119
+ this.setMinMaxTime(date);
120
+ this.setCurrentTime(date);
121
+ }
122
+
123
+ addTimeToDate(date) {
124
+ if (!date) return;
125
+ date.setHours(this.hours);
126
+ date.setMinutes(this.minutes);
127
+ }
128
+
129
+ setMinMaxTime(date) {
130
+ this.setMinMaxTimeFromOptions();
131
+
132
+ if (date) {
133
+ let {minDate, maxDate} = this.dp;
134
+ if (minDate && isSameDate(date, minDate)) {
135
+ this.setMinTimeFromMinDate(minDate);
136
+ }
137
+ if (maxDate && isSameDate(date, maxDate)) {
138
+ this.setMaxTimeFromMaxDate(maxDate);
139
+ }
140
+ }
141
+ }
142
+
143
+ setCurrentTime(date) {
144
+ let {hours, minutes} = date ? getParsedDate(date) : this;
145
+
146
+ this.hours = clamp(hours, this.minHours, this.maxHours);
147
+ this.minutes = clamp(minutes, this.minMinutes, this.maxMinutes);
148
+ }
149
+
150
+ setMinMaxTimeFromOptions() {
151
+ let maxHoursPossible = 23,
152
+ maxMinutesPossible = 59,
153
+ {minHours, minMinutes, maxHours, maxMinutes} = this.opts;
154
+
155
+ this.minHours = clamp(minHours, 0, maxHoursPossible);
156
+ this.minMinutes = clamp(minMinutes, 0, maxMinutesPossible);
157
+ this.maxHours = clamp(maxHours, 0, maxHoursPossible);
158
+ this.maxMinutes = clamp(maxMinutes, 0, maxMinutesPossible);
159
+ }
160
+
161
+ setMinTimeFromMinDate(date) {
162
+ let {lastSelectedDate} = this.dp;
163
+
164
+ this.minHours = date.getHours();
165
+
166
+ if (lastSelectedDate && lastSelectedDate.getHours() > date.getHours()) {
167
+ this.minMinutes = this.opts.minMinutes;
168
+ } else {
169
+ this.minMinutes = date.getMinutes();
170
+ }
171
+ }
172
+
173
+ setMaxTimeFromMaxDate(date) {
174
+ let {lastSelectedDate} = this.dp;
175
+
176
+ this.maxHours = date.getHours();
177
+
178
+ if (lastSelectedDate && lastSelectedDate.getHours() < date.getHours()) {
179
+ this.maxMinutes = this.opts.maxMinutes;
180
+ } else {
181
+ this.maxMinutes = date.getMinutes();
182
+ }
183
+ }
184
+
185
+ updateSliders() {
186
+ setAttribute(this.$hours, {
187
+ min: this.minHours,
188
+ max: this.maxHours
189
+ }).value = this.hours;
190
+
191
+ setAttribute(this.$minutes, {
192
+ min: this.minMinutes,
193
+ max: this.maxMinutes
194
+ }).value = this.minutes;
195
+ }
196
+
197
+ updateText() {
198
+ this.$hoursText.innerHTML = getLeadingZeroNum(this.displayHours);
199
+ this.$minutesText.innerHTML = getLeadingZeroNum(this.minutes);
200
+
201
+ if (this.ampm) {
202
+ this.$ampm.innerHTML = this.dayPeriod;
203
+ }
204
+ }
205
+
206
+ toggleTimepickerIsActive = (value) => {
207
+ this.dp.timepickerIsActive = value;
208
+ }
209
+
210
+ onChangeSelectedDate = ({date, updateTime = false}) => {
211
+ if (!date) return;
212
+
213
+ // Check if date is minDate or maxDate and set timepicker's time to corresponding values
214
+ this.setMinMaxTime(date);
215
+ this.setCurrentTime(updateTime ? date : false);
216
+
217
+ this.addTimeToDate(date);
218
+ }
219
+
220
+ onChangeLastSelectedDate = (date) => {
221
+ if (!date) return;
222
+
223
+ this.setTime(date);
224
+ this.render();
225
+ }
226
+
227
+ onChangeInputRange = (e) => {
228
+ let $target = e.target,
229
+ name = $target.getAttribute('name');
230
+
231
+ this[name] = $target.value;
232
+ this.updateText();
233
+
234
+ this.dp.trigger(consts.eventChangeTime, {
235
+ hours: this.hours,
236
+ minutes: this.minutes
237
+ });
238
+ }
239
+
240
+ onMouseEnterLeave = (e) => {
241
+ let name = e.target.getAttribute('name'),
242
+ $el = this.$minutesText;
243
+
244
+ if (name === 'hours') {
245
+ $el = this.$hoursText;
246
+ }
247
+
248
+ $el.classList.toggle('-focus-');
249
+ }
250
+
251
+ onFocus = () => {
252
+ this.toggleTimepickerIsActive(true);
253
+ }
254
+
255
+ onBlur = () => {
256
+ this.toggleTimepickerIsActive(false);
257
+ }
258
+
259
+ set hours(val) {
260
+ this._hours = val;
261
+
262
+ let {hours, dayPeriod} = getDayPeriodFromHours24(val);
263
+
264
+ this.displayHours = this.ampm ? hours : val;
265
+ this.dayPeriod = dayPeriod;
266
+ }
267
+
268
+ get hours() {
269
+ return this._hours;
270
+ }
271
+
272
+ render() {
273
+ this.updateSliders();
274
+ this.updateText();
275
+ }
276
+ }
@@ -0,0 +1,65 @@
1
+ declare namespace _default {
2
+ export let classes: string;
3
+ export let inline: boolean;
4
+ export { localeEn as locale };
5
+ export let startDate: Date;
6
+ export let firstDay: string;
7
+ export let weekends: number[];
8
+ export let dateFormat: string;
9
+ export let altField: string;
10
+ export let altFieldDateFormat: string;
11
+ export let toggleSelected: boolean;
12
+ export let keyboardNav: boolean;
13
+ export let selectedDates: boolean;
14
+ export let container: string;
15
+ export let isMobile: boolean;
16
+ export let visible: boolean;
17
+ export let position: string;
18
+ export let offset: number;
19
+ export let view: string;
20
+ export let minView: string;
21
+ export let showOtherMonths: boolean;
22
+ export let selectOtherMonths: boolean;
23
+ export let moveToOtherMonthsOnSelect: boolean;
24
+ export let showOtherYears: boolean;
25
+ export let selectOtherYears: boolean;
26
+ export let moveToOtherYearsOnSelect: boolean;
27
+ export let minDate: string;
28
+ export let maxDate: string;
29
+ export let disableNavWhenOutOfRange: boolean;
30
+ export let multipleDates: boolean;
31
+ export let multipleDatesSeparator: string;
32
+ export let range: boolean;
33
+ export let dynamicRange: boolean;
34
+ export let buttons: boolean;
35
+ export let monthsField: string;
36
+ export let showEvent: string;
37
+ export let autoClose: boolean;
38
+ export let fixedHeight: boolean;
39
+ export let prevHtml: string;
40
+ export let nextHtml: string;
41
+ export namespace navTitles {
42
+ let days: string;
43
+ let months: string;
44
+ let years: string;
45
+ }
46
+ export let timepicker: boolean;
47
+ export let onlyTimepicker: boolean;
48
+ export let dateTimeSeparator: string;
49
+ export let timeFormat: string;
50
+ export let minHours: number;
51
+ export let maxHours: number;
52
+ export let minMinutes: number;
53
+ export let maxMinutes: number;
54
+ export let hoursStep: number;
55
+ export let minutesStep: number;
56
+ export let onSelect: boolean;
57
+ export let onChangeViewDate: boolean;
58
+ export let onChangeView: boolean;
59
+ export let onRenderCell: boolean;
60
+ export let onShow: boolean;
61
+ export let onHide: boolean;
62
+ export let onClickDayName: boolean;
63
+ }
64
+ export default _default;
65
+ import localeEn from './locale/en.js';
@@ -0,0 +1,79 @@
1
+ // @ts-nocheck — vendored code, typed by index.d.ts; not ours to check.
2
+ // air-datepicker 3.6.0 (MIT, Timofey Marochkin) — see LICENSE.md and README.md.
3
+ import localeEn from './locale/en.js';
4
+ import consts from './consts.js';
5
+
6
+ export default {
7
+ classes: '',
8
+ inline: false,
9
+ locale: localeEn,
10
+ startDate: new Date(),
11
+ firstDay: '',
12
+ weekends: [6, 0],
13
+ dateFormat: '',
14
+ altField: '',
15
+ altFieldDateFormat: 'T',
16
+ toggleSelected: true,
17
+ keyboardNav: true,
18
+ selectedDates: false,
19
+ container: '',
20
+ isMobile: false,
21
+ visible: false,
22
+
23
+ position: 'bottom left',
24
+ offset: 12,
25
+
26
+ view: consts.days,
27
+ minView: consts.days,
28
+
29
+ showOtherMonths: true,
30
+ selectOtherMonths: true,
31
+ moveToOtherMonthsOnSelect: true,
32
+
33
+ showOtherYears: true,
34
+ selectOtherYears: true,
35
+ moveToOtherYearsOnSelect: true,
36
+
37
+ minDate: '',
38
+ maxDate: '',
39
+ disableNavWhenOutOfRange: true,
40
+
41
+ multipleDates: false, // Boolean or Number
42
+ multipleDatesSeparator: ', ',
43
+ range: false,
44
+ dynamicRange: true,
45
+ buttons: false,
46
+ monthsField: 'monthsShort',
47
+
48
+ showEvent: 'focus',
49
+ autoClose: false,
50
+ fixedHeight: false,
51
+
52
+ // navigation
53
+ prevHtml: '<svg><path d="M 17,12 l -5,5 l 5,5"></path></svg>',
54
+ nextHtml: '<svg><path d="M 14,12 l 5,5 l -5,5"></path></svg>',
55
+ navTitles: {
56
+ days: 'MMMM, <i>yyyy</i>',
57
+ months: 'yyyy',
58
+ years: 'yyyy1 - yyyy2'
59
+ },
60
+
61
+ timepicker: false,
62
+ onlyTimepicker: false,
63
+ dateTimeSeparator: ' ',
64
+ timeFormat: '',
65
+ minHours: 0,
66
+ maxHours: 24,
67
+ minMinutes: 0,
68
+ maxMinutes: 59,
69
+ hoursStep: 1,
70
+ minutesStep: 1,
71
+
72
+ onSelect: false,
73
+ onChangeViewDate: false,
74
+ onChangeView: false,
75
+ onRenderCell: false,
76
+ onShow: false,
77
+ onHide: false,
78
+ onClickDayName: false,
79
+ };