framework7 7.0.0-beta.6 → 7.0.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 (209) hide show
  1. package/components/accordion/accordion.lazy.js +1 -1
  2. package/components/actions/actions-class.js +6 -1
  3. package/components/actions/actions-rtl.css +1 -1
  4. package/components/actions/actions.css +1 -1
  5. package/components/actions/actions.d.ts +2 -0
  6. package/components/actions/actions.js +11 -2
  7. package/components/actions/actions.lazy.js +1 -1
  8. package/components/actions/actions.less +3 -0
  9. package/components/app/app-class.js +15 -9
  10. package/components/area-chart/area-chart-class.js +34 -18
  11. package/components/area-chart/area-chart.lazy.js +1 -1
  12. package/components/autocomplete/autocomplete-class.js +5 -1
  13. package/components/autocomplete/autocomplete.lazy.js +1 -1
  14. package/components/breadcrumbs/breadcrumbs-aurora.less +2 -0
  15. package/components/breadcrumbs/breadcrumbs-ios.less +2 -0
  16. package/components/breadcrumbs/breadcrumbs-md.less +2 -0
  17. package/components/breadcrumbs/breadcrumbs-rtl.css +1 -0
  18. package/components/breadcrumbs/breadcrumbs-vars.less +36 -0
  19. package/components/breadcrumbs/breadcrumbs.css +1 -0
  20. package/components/breadcrumbs/breadcrumbs.d.ts +15 -0
  21. package/components/breadcrumbs/breadcrumbs.js +13 -0
  22. package/components/breadcrumbs/breadcrumbs.lazy.js +1 -0
  23. package/components/breadcrumbs/breadcrumbs.less +100 -0
  24. package/components/calendar/calendar-class.js +216 -124
  25. package/components/calendar/calendar-rtl.css +1 -1
  26. package/components/calendar/calendar-vars.less +6 -10
  27. package/components/calendar/calendar.css +1 -1
  28. package/components/calendar/calendar.d.ts +2 -0
  29. package/components/calendar/calendar.js +6 -1
  30. package/components/calendar/calendar.lazy.js +1 -1
  31. package/components/calendar/calendar.less +20 -16
  32. package/components/card/card.js +23 -3
  33. package/components/card/card.lazy.js +1 -1
  34. package/components/color-picker/color-picker-class.js +19 -3
  35. package/components/color-picker/color-picker.js +5 -1
  36. package/components/color-picker/color-picker.lazy.js +1 -1
  37. package/components/data-table/data-table-class.js +5 -1
  38. package/components/data-table/data-table.lazy.js +1 -1
  39. package/components/dialog/dialog.js +30 -6
  40. package/components/dialog/dialog.lazy.js +1 -1
  41. package/components/fab/fab-rtl.css +1 -1
  42. package/components/fab/fab.css +1 -1
  43. package/components/fab/fab.js +15 -3
  44. package/components/fab/fab.lazy.js +1 -1
  45. package/components/form/form.lazy.js +1 -1
  46. package/components/gauge/gauge-class.js +10 -2
  47. package/components/gauge/gauge.d.ts +2 -2
  48. package/components/gauge/gauge.lazy.js +1 -1
  49. package/components/input/input.js +5 -1
  50. package/components/input/input.lazy.js +1 -1
  51. package/components/list-index/list-index-class.js +5 -1
  52. package/components/list-index/list-index.d.ts +1 -1
  53. package/components/list-index/list-index.lazy.js +1 -1
  54. package/components/login-screen/login-screen.js +10 -2
  55. package/components/login-screen/login-screen.lazy.js +1 -1
  56. package/components/menu/menu.js +10 -2
  57. package/components/menu/menu.lazy.js +1 -1
  58. package/components/messagebar/messagebar-class.js +25 -5
  59. package/components/messagebar/messagebar.lazy.js +1 -1
  60. package/components/messages/messages-class.js +60 -24
  61. package/components/messages/messages-rtl.css +1 -1
  62. package/components/messages/messages.css +1 -1
  63. package/components/messages/messages.lazy.js +1 -1
  64. package/components/modal/modal-class.js +10 -0
  65. package/components/navbar/navbar.js +26 -2
  66. package/components/notification/notification.d.ts +4 -4
  67. package/components/panel/panel-class.js +35 -7
  68. package/components/panel/panel.js +40 -8
  69. package/components/panel/panel.lazy.js +1 -1
  70. package/components/photo-browser/photo-browser-class.js +42 -8
  71. package/components/photo-browser/photo-browser.lazy.js +1 -1
  72. package/components/picker/picker-class.js +11 -7
  73. package/components/picker/picker-column.js +34 -270
  74. package/components/picker/picker-rtl.css +1 -1
  75. package/components/picker/picker.css +1 -1
  76. package/components/picker/picker.d.ts +2 -13
  77. package/components/picker/picker.js +5 -6
  78. package/components/picker/picker.lazy.js +1 -1
  79. package/components/picker/picker.less +28 -10
  80. package/components/pie-chart/pie-chart-class.js +16 -7
  81. package/components/pie-chart/pie-chart.lazy.js +1 -1
  82. package/components/popover/popover-class.js +20 -3
  83. package/components/popover/popover-rtl.css +1 -1
  84. package/components/popover/popover.css +1 -1
  85. package/components/popover/popover.d.ts +2 -0
  86. package/components/popover/popover.js +11 -2
  87. package/components/popover/popover.lazy.js +1 -1
  88. package/components/popover/popover.less +3 -0
  89. package/components/popup/popup-class.js +6 -1
  90. package/components/popup/popup-rtl.css +1 -1
  91. package/components/popup/popup.css +1 -1
  92. package/components/popup/popup.d.ts +4 -0
  93. package/components/popup/popup.js +11 -2
  94. package/components/popup/popup.lazy.js +1 -1
  95. package/components/popup/popup.less +4 -0
  96. package/components/preloader/preloader-ios.less +3 -0
  97. package/components/preloader/preloader-rtl.css +1 -1
  98. package/components/preloader/preloader.css +1 -1
  99. package/components/preloader/preloader.d.ts +4 -0
  100. package/components/preloader/preloader.js +10 -2
  101. package/components/preloader/preloader.lazy.js +1 -1
  102. package/components/progressbar/progressbar-aurora.less +32 -13
  103. package/components/progressbar/progressbar-ios.less +19 -7
  104. package/components/progressbar/progressbar-md.less +64 -28
  105. package/components/progressbar/progressbar-rtl.css +1 -1
  106. package/components/progressbar/progressbar.css +1 -1
  107. package/components/progressbar/progressbar.js +17 -4
  108. package/components/progressbar/progressbar.lazy.js +1 -1
  109. package/components/progressbar/progressbar.less +16 -4
  110. package/components/pull-to-refresh/pull-to-refresh-class.js +5 -1
  111. package/components/pull-to-refresh/pull-to-refresh.lazy.js +1 -1
  112. package/components/range/range.d.ts +23 -5
  113. package/components/range/range.js +10 -2
  114. package/components/range/range.lazy.js +1 -1
  115. package/components/searchbar/searchbar-class.js +6 -2
  116. package/components/searchbar/searchbar.js +20 -4
  117. package/components/searchbar/searchbar.lazy.js +1 -1
  118. package/components/sheet/sheet-class.js +21 -2
  119. package/components/sheet/sheet-rtl.css +1 -1
  120. package/components/sheet/sheet.css +1 -1
  121. package/components/sheet/sheet.d.ts +2 -0
  122. package/components/sheet/sheet.js +11 -2
  123. package/components/sheet/sheet.lazy.js +1 -1
  124. package/components/sheet/sheet.less +3 -0
  125. package/components/smart-select/smart-select-class.js +15 -3
  126. package/components/smart-select/smart-select.lazy.js +1 -1
  127. package/components/sortable/sortable.d.ts +5 -1
  128. package/components/sortable/sortable.js +45 -8
  129. package/components/sortable/sortable.lazy.js +1 -1
  130. package/components/statusbar/statusbar.d.ts +9 -9
  131. package/components/statusbar/statusbar.js +5 -1
  132. package/components/stepper/stepper.js +10 -2
  133. package/components/stepper/stepper.lazy.js +1 -1
  134. package/components/swipeout/swipeout.js +16 -3
  135. package/components/swipeout/swipeout.lazy.js +1 -1
  136. package/components/swiper/swiper-rtl.css +1 -1
  137. package/components/swiper/swiper.css +1 -1
  138. package/components/swiper/swiper.lazy.js +1 -1
  139. package/components/tabs/tabs.js +14 -7
  140. package/components/tabs/tabs.lazy.js +1 -1
  141. package/components/toast/toast.d.ts +2 -2
  142. package/components/toggle/toggle-class.js +5 -1
  143. package/components/toggle/toggle.lazy.js +1 -1
  144. package/components/toolbar/toolbar-aurora.less +0 -13
  145. package/components/toolbar/toolbar-md.less +0 -13
  146. package/components/toolbar/toolbar.js +11 -3
  147. package/components/toolbar/toolbar.less +13 -0
  148. package/components/tooltip/tooltip-class.js +5 -1
  149. package/components/tooltip/tooltip.lazy.js +1 -1
  150. package/components/touch-ripple/touch-ripple.js +5 -1
  151. package/components/treeview/treeview.lazy.js +1 -1
  152. package/components/view/view-class.js +13 -2
  153. package/components/view/view.d.ts +5 -1
  154. package/components/view/view.js +2 -0
  155. package/components/virtual-list/virtual-list-class.js +54 -9
  156. package/components/virtual-list/virtual-list.d.ts +2 -2
  157. package/components/virtual-list/virtual-list.lazy.js +1 -1
  158. package/framework7-bundle-rtl.css +252 -150
  159. package/framework7-bundle-rtl.min.css +4 -4
  160. package/framework7-bundle.css +237 -134
  161. package/framework7-bundle.esm.js +5 -4
  162. package/framework7-bundle.js +2661 -1190
  163. package/framework7-bundle.js.map +1 -1
  164. package/framework7-bundle.less +4 -3
  165. package/framework7-bundle.min.css +4 -4
  166. package/framework7-bundle.min.js +4 -4
  167. package/framework7-bundle.min.js.map +1 -1
  168. package/framework7-lite-bundle.esm.js +5 -4
  169. package/framework7-lite.esm.js +3 -3
  170. package/framework7-rtl.css +12 -21
  171. package/framework7-rtl.min.css +4 -4
  172. package/framework7-types.d.ts +5 -1
  173. package/framework7.css +11 -19
  174. package/framework7.d.ts +4 -0
  175. package/framework7.esm.js +3 -3
  176. package/framework7.js +609 -189
  177. package/framework7.js.map +1 -1
  178. package/framework7.less +3 -3
  179. package/framework7.min.css +4 -4
  180. package/framework7.min.js +4 -4
  181. package/framework7.min.js.map +1 -1
  182. package/modules/component/$h.js +5 -1
  183. package/modules/component/$jsx.js +5 -1
  184. package/modules/component/component-class.js +35 -22
  185. package/modules/component/component.d.ts +2 -2
  186. package/modules/component/component.js +7 -6
  187. package/modules/component/eventslisteners.js +5 -1
  188. package/modules/component/snabbdom/h.js +1 -1
  189. package/modules/component/vdom.js +32 -17
  190. package/modules/device/device.js +1 -1
  191. package/modules/router/back.js +16 -6
  192. package/modules/router/component-loader.js +34 -23
  193. package/modules/router/modal.js +5 -1
  194. package/modules/router/navigate.js +19 -3
  195. package/modules/router/redirect.js +5 -1
  196. package/modules/router/router-class.js +39 -10
  197. package/modules/router/swipe-back.js +7 -6
  198. package/modules/router/tab.js +6 -2
  199. package/modules/store/create-store.js +10 -2
  200. package/package.json +12 -6
  201. package/shared/$jsx.js +6 -1
  202. package/shared/class.js +33 -5
  203. package/shared/constructor-methods.js +25 -4
  204. package/shared/events-class.js +15 -3
  205. package/shared/get-device.d.ts +0 -2
  206. package/shared/get-device.js +10 -6
  207. package/shared/modal-methods.js +10 -2
  208. package/shared/request.js +45 -7
  209. package/shared/utils.js +47 -10
@@ -0,0 +1 @@
1
+ (function framework7ComponentLoader(e,t){void 0===t&&(t=!0);e.$;var o=e.utils,s=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,o.bindMethods);const r={};var a={name:"breadrumbs",create(){s(this,{breadrumbs:r})}};if(t){if(e.prototype.modules&&e.prototype.modules[a.name])return;e.use(a),e.instance&&(e.instance.useModuleParams(a,e.instance.params),e.instance.useModule(a))}return a}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
@@ -0,0 +1,100 @@
1
+ /* === Breadcrumbs === */
2
+ @import './breadcrumbs-vars.less';
3
+
4
+ .breadcrumbs {
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: flex-start;
8
+ font-size: var(--f7-breadcrumbs-font-size);
9
+ overflow: auto;
10
+ white-space: nowrap;
11
+ padding: var(--f7-breadcrumbs-padding);
12
+ &::-webkit-scrollbar {
13
+ display: none;
14
+ opacity: 0;
15
+ }
16
+ }
17
+ .breadcrumbs-separator,
18
+ .breadcrumbs-item,
19
+ .breadcrumbs-collapsed {
20
+ flex-shrink: 0;
21
+ --f7-touch-ripple-color: transparent !important;
22
+ & + & {
23
+ margin-left: var(--f7-breadcrumbs-spacing);
24
+ }
25
+ }
26
+ .breadcrumbs-item {
27
+ color: var(--f7-breadcrumbs-item-color);
28
+ font-weight: var(--f7-breadcrumbs-item-font-weight);
29
+ padding: var(--f7-breadcrumbs-item-padding);
30
+ background-color: var(--f7-breadcrumbs-item-bg-color);
31
+ display: flex;
32
+ align-items: center;
33
+ .icon {
34
+ font-size: var(--f7-breadcrumbs-icon-size);
35
+ width: var(--f7-breadcrumbs-icon-size);
36
+ height: var(--f7-breadcrumbs-icon-size);
37
+ }
38
+ a {
39
+ color: inherit;
40
+ --f7-touch-ripple-color: transparent !important;
41
+ }
42
+ &-active {
43
+ color: var(--f7-breadcrumbs-item-active-color, var(--f7-breadcrumbs-item-color));
44
+ font-weight: var(--f7-breadcrumbs-item-active-font-weight);
45
+ }
46
+ }
47
+ .breadcrumbs-separator {
48
+ color: var(--f7-breadcrumbs-separator-color);
49
+ height: 24px;
50
+ overflow: hidden;
51
+ display: flex;
52
+ align-items: center;
53
+ &::after {
54
+ .core-icons-font();
55
+ content: var(--f7-breadcrumbs-separator-icon);
56
+ width: 12px;
57
+ }
58
+ .ios &::after {
59
+ font-size: 12px;
60
+ height: 11px;
61
+ }
62
+ .md &::after {
63
+ font-size: 18px;
64
+ height: 18px;
65
+ }
66
+ .aurora &::after {
67
+ font-size: 12px;
68
+ height: 11px;
69
+ }
70
+ }
71
+ .breadcrumbs-collapsed {
72
+ display: flex;
73
+ align-items: center;
74
+ padding: 0 6px;
75
+ background: var(--f7-breadcrumbs-collapsed-bg-color);
76
+ height: 1em;
77
+ border-radius: 4px;
78
+ cursor: pointer;
79
+ &::before,
80
+ &::after,
81
+ span {
82
+ content: '';
83
+ width: 4px;
84
+ height: 4px;
85
+ background: var(--f7-breadcrumbs-collapsed-color);
86
+ border-radius: 50%;
87
+ }
88
+ span {
89
+ margin: 0 3px;
90
+ }
91
+ }
92
+ .if-ios-theme({
93
+ @import './breadcrumbs-ios.less';
94
+ });
95
+ .if-md-theme({
96
+ @import './breadcrumbs-md.less';
97
+ });
98
+ .if-aurora-theme({
99
+ @import './breadcrumbs-aurora.less';
100
+ });
@@ -8,7 +8,11 @@ import { getSupport } from '../../shared/get-support.js';
8
8
  import $jsx from '../../shared/$jsx.js';
9
9
 
10
10
  class Calendar extends Framework7Class {
11
- constructor(app, params = {}) {
11
+ constructor(app, params) {
12
+ if (params === void 0) {
13
+ params = {};
14
+ }
15
+
12
16
  super(params, [app]);
13
17
  const calendar = this;
14
18
  calendar.params = extend({}, app.params.calendar, params);
@@ -48,17 +52,34 @@ class Calendar extends Framework7Class {
48
52
  allowTouchMove: true,
49
53
  hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple
50
54
  });
51
- calendar.dayFormatter = new Intl.DateTimeFormat(calendar.params.locale, {
52
- day: 'numeric'
53
- });
54
- calendar.monthFormatter = new Intl.DateTimeFormat(calendar.params.locale, {
55
- month: 'long'
56
- });
57
- calendar.yearFormatter = new Intl.DateTimeFormat(calendar.params.locale, {
58
- year: 'numeric'
59
- });
60
- calendar.timeSelectorFormatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);
61
- const timeFormatCheckDate = calendar.timeSelectorFormatter.format(new Date()).toLowerCase();
55
+
56
+ calendar.dayFormatter = date => {
57
+ const formatter = new Intl.DateTimeFormat(calendar.params.locale, {
58
+ day: 'numeric'
59
+ });
60
+ return formatter.format(date).replace(/日/, '');
61
+ };
62
+
63
+ calendar.monthFormatter = date => {
64
+ const formatter = new Intl.DateTimeFormat(calendar.params.locale, {
65
+ month: 'long'
66
+ });
67
+ return formatter.format(date);
68
+ };
69
+
70
+ calendar.yearFormatter = date => {
71
+ const formatter = new Intl.DateTimeFormat(calendar.params.locale, {
72
+ year: 'numeric'
73
+ });
74
+ return formatter.format(date);
75
+ };
76
+
77
+ calendar.timeSelectorFormatter = date => {
78
+ const formatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);
79
+ return formatter.format(date);
80
+ };
81
+
82
+ const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();
62
83
  calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0; // Auto names
63
84
 
64
85
  let {
@@ -106,6 +127,7 @@ class Calendar extends Framework7Class {
106
127
  if (calendar.isPopover()) return;
107
128
  if (!calendar.opened || calendar.closing) return;
108
129
  if ($targetEl.closest('[class*="backdrop"]').length) return;
130
+ if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover) return;
109
131
 
110
132
  if ($inputEl && $inputEl.length > 0) {
111
133
  if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {
@@ -320,61 +342,17 @@ class Calendar extends Framework7Class {
320
342
  }
321
343
 
322
344
  function onMonthSelectorClick() {
323
- $el.append(calendar.renderMonthPicker());
324
- }
325
-
326
- function onMonthSelectorItemClick() {
327
- const $clickedEl = $(this);
328
-
329
- if ($clickedEl.hasClass('calendar-month-picker-item-current')) {
330
- $el.find('.calendar-month-picker').remove();
331
- return;
332
- }
333
-
334
- $el.find('.calendar-month-picker-item-current').add($clickedEl).toggleClass('calendar-month-picker-item-current');
335
- const index = $clickedEl.index();
336
- const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
337
- const monthIndex = calendar.currentMonth;
338
- const diff = localeMonthIndex - monthIndex;
339
- const diffIndex = index - diff;
340
- calendar.setYearMonth(calendar.currentYear, diffIndex, 0);
341
- setTimeout(() => {
342
- $el.find('.calendar-month-picker').remove();
343
- }, 200);
345
+ calendar.openMonthPicker();
344
346
  }
345
347
 
346
348
  function onYearSelectorClick() {
347
- $el.append(calendar.renderYearPicker());
348
- const $currentEl = $el.find('.calendar-year-picker-item-current');
349
- const $yearPickerEl = $el.find('.calendar-year-picker');
350
- if (!$currentEl || !$currentEl.length) return;
351
- $yearPickerEl.scrollTop($currentEl[0].offsetTop - $yearPickerEl[0].offsetHeight / 2 + $currentEl[0].offsetHeight / 2);
352
- }
353
-
354
- function onYearSelectorItemClick() {
355
- const $clickedEl = $(this);
356
-
357
- if ($clickedEl.hasClass('calendar-year-picker-item-current')) {
358
- $el.find('.calendar-year-picker').remove();
359
- return;
360
- }
361
-
362
- $el.find('.calendar-year-picker-item-current').add($clickedEl).toggleClass('calendar-year-picker-item-current');
363
- const year = parseInt($clickedEl.attr('data-year'), 10);
364
- calendar.setYearMonth(year, undefined, 0);
365
- setTimeout(() => {
366
- $el.find('.calendar-year-picker').remove();
367
- }, 200);
349
+ calendar.openYearPicker();
368
350
  }
369
351
 
370
352
  function onTimeSelectorClick() {
371
353
  calendar.openTimePicker();
372
354
  }
373
355
 
374
- function onTimePickerCloseClick() {
375
- calendar.closeTimePicker();
376
- }
377
-
378
356
  const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {
379
357
  passive: true,
380
358
  capture: false
@@ -387,17 +365,14 @@ class Calendar extends Framework7Class {
387
365
 
388
366
  if (calendar.params.monthPicker) {
389
367
  $el.find('.current-month-value').on('click', onMonthSelectorClick);
390
- $el.on('click', '.calendar-month-picker-item', onMonthSelectorItemClick);
391
368
  }
392
369
 
393
370
  if (calendar.params.yearPicker) {
394
371
  $el.find('.current-year-value').on('click', onYearSelectorClick);
395
- $el.on('click', '.calendar-year-picker-item', onYearSelectorItemClick);
396
372
  }
397
373
 
398
374
  if (calendar.hasTimePicker) {
399
375
  $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);
400
- $el.on('click', '.calendar-time-picker-close', onTimePickerCloseClick);
401
376
  } // Day clicks
402
377
 
403
378
 
@@ -417,17 +392,14 @@ class Calendar extends Framework7Class {
417
392
 
418
393
  if (calendar.params.monthPicker) {
419
394
  $el.find('.current-month-value').off('click', onMonthSelectorClick);
420
- $el.off('click', '.calendar-month-picker-item', onMonthSelectorItemClick);
421
395
  }
422
396
 
423
397
  if (calendar.params.yearPicker) {
424
398
  $el.find('.current-year-value').off('click', onYearSelectorClick);
425
- $el.off('click', '.calendar-year-picker-item', onYearSelectorItemClick);
426
399
  }
427
400
 
428
401
  if (calendar.hasTimePicker) {
429
402
  $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);
430
- $el.off('click', '.calendar-time-picker-close', onTimePickerCloseClick);
431
403
  }
432
404
 
433
405
  $wrapperEl.off('click', handleDayClick);
@@ -487,7 +459,7 @@ class Calendar extends Framework7Class {
487
459
 
488
460
  for (let i = 0; i < 24; i += 1) {
489
461
  const date = new Date().setMonth(i, 1);
490
- const currentYear = calendar.yearFormatter.format(date);
462
+ const currentYear = calendar.yearFormatter(date);
491
463
 
492
464
  if (year && currentYear !== year) {
493
465
  if (yearStarted) yearEnded = true;
@@ -787,7 +759,7 @@ class Calendar extends Framework7Class {
787
759
  }
788
760
 
789
761
  if ($el && $el.length > 0 && calendar.hasTimePicker) {
790
- $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter.format(value[0]) : calendar.params.timePickerPlaceholder);
762
+ $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter(value[0]) : calendar.params.timePickerPlaceholder);
791
763
  }
792
764
 
793
765
  if ($inputEl && $inputEl.length || params.header) {
@@ -1042,7 +1014,11 @@ class Calendar extends Framework7Class {
1042
1014
  }
1043
1015
  }
1044
1016
 
1045
- resetMonth(transition = '') {
1017
+ resetMonth(transition) {
1018
+ if (transition === void 0) {
1019
+ transition = '';
1020
+ }
1021
+
1046
1022
  const calendar = this;
1047
1023
  const {
1048
1024
  $wrapperEl,
@@ -1234,9 +1210,9 @@ class Calendar extends Framework7Class {
1234
1210
  let date = new Date(d);
1235
1211
  let year = date.getFullYear();
1236
1212
  let month = date.getMonth();
1237
- let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));
1213
+ let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));
1238
1214
  if (localeMonth < 0) localeMonth = month;
1239
- let localeYear = calendar.yearFormatter.format(date);
1215
+ let localeYear = calendar.yearFormatter(date);
1240
1216
 
1241
1217
  if (offset === 'next') {
1242
1218
  if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);
@@ -1249,9 +1225,9 @@ class Calendar extends Framework7Class {
1249
1225
  if (offset === 'next' || offset === 'prev') {
1250
1226
  month = date.getMonth();
1251
1227
  year = date.getFullYear();
1252
- localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));
1228
+ localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));
1253
1229
  if (localeMonth < 0) localeMonth = month;
1254
- localeYear = calendar.yearFormatter.format(date);
1230
+ localeYear = calendar.yearFormatter(date);
1255
1231
  }
1256
1232
 
1257
1233
  const currentValues = [];
@@ -1404,7 +1380,7 @@ class Calendar extends Framework7Class {
1404
1380
  dayDate = new Date(dayDate);
1405
1381
  const dayYear = dayDate.getFullYear();
1406
1382
  const dayMonth = dayDate.getMonth();
1407
- const dayNumberDisplay = calendar.dayFormatter.format(dayDate); // prettier-ignore
1383
+ const dayNumberDisplay = calendar.dayFormatter(dayDate); // prettier-ignore
1408
1384
 
1409
1385
  rowHtml += `
1410
1386
  <div data-year="${dayYear}" data-month="${dayMonth}" data-day="${dayNumber}" class="calendar-day${addClass}" data-date="${dayYear}-${dayMonth}-${dayNumber}">
@@ -1466,16 +1442,6 @@ class Calendar extends Framework7Class {
1466
1442
  })));
1467
1443
  }
1468
1444
 
1469
- renderMonthPicker() {
1470
- const calendar = this;
1471
- const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
1472
- return $jsx("div", {
1473
- class: "calendar-month-picker"
1474
- }, calendar.monthNames.map((m, index) => $jsx("div", {
1475
- class: `calendar-month-picker-item ${localeMonth === index ? 'calendar-month-picker-item-current' : ''}`
1476
- }, $jsx("span", null, m))));
1477
- }
1478
-
1479
1445
  renderYearSelector() {
1480
1446
  const calendar = this;
1481
1447
 
@@ -1498,35 +1464,6 @@ class Calendar extends Framework7Class {
1498
1464
  }, $jsx("i", {
1499
1465
  class: "icon icon-next"
1500
1466
  })));
1501
- }
1502
-
1503
- renderYearPicker() {
1504
- const calendar = this;
1505
- const currentYear = calendar.currentYear;
1506
- let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;
1507
-
1508
- if (calendar.params.minDate) {
1509
- yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());
1510
- }
1511
-
1512
- let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;
1513
-
1514
- if (calendar.params.maxDate) {
1515
- yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());
1516
- }
1517
-
1518
- const years = [];
1519
-
1520
- for (let i = yearMin; i <= yearMax; i += 1) {
1521
- years.push(i);
1522
- }
1523
-
1524
- return $jsx("div", {
1525
- class: "calendar-year-picker"
1526
- }, years.map(year => $jsx("div", {
1527
- "data-year": year,
1528
- class: `calendar-year-picker-item ${year === currentYear ? 'calendar-year-picker-item-current' : ''}`
1529
- }, $jsx("span", null, calendar.yearFormatter.format(new Date().setFullYear(year))))));
1530
1467
  } // eslint-disable-next-line
1531
1468
 
1532
1469
 
@@ -1534,10 +1471,10 @@ class Calendar extends Framework7Class {
1534
1471
  const calendar = this;
1535
1472
  const value = calendar.value && calendar.value[0];
1536
1473
  let timeString;
1537
- if (value) timeString = calendar.timeSelectorFormatter.format(value);
1474
+ if (value) timeString = calendar.timeSelectorFormatter(value);
1538
1475
  return $jsx("div", {
1539
1476
  class: "calendar-time-selector"
1540
- }, $jsx("a", {
1477
+ }, $jsx("span", null, calendar.params.timePickerLabel), $jsx("a", {
1541
1478
  class: "link"
1542
1479
  }, timeString || calendar.params.timePickerPlaceholder));
1543
1480
  }
@@ -1697,6 +1634,142 @@ class Calendar extends Framework7Class {
1697
1634
  return calendar.renderInline();
1698
1635
  }
1699
1636
 
1637
+ openMonthPicker() {
1638
+ const calendar = this;
1639
+ const {
1640
+ $el,
1641
+ app
1642
+ } = calendar;
1643
+ if (!$el || !$el.length) return;
1644
+ $el.append('<div class="popover calendar-popover calendar-month-picker-popover"><div class="popover-inner"><div class="calendar-month-picker"></div></div></div>');
1645
+ calendar.monthPickerPopover = app.popover.create({
1646
+ el: $el.find('.calendar-month-picker-popover'),
1647
+ targetEl: $el.find('.calendar-month-selector'),
1648
+ backdrop: true,
1649
+ backdropUnique: true,
1650
+ on: {
1651
+ close() {
1652
+ calendar.closeMonthPicker();
1653
+ },
1654
+
1655
+ closed() {
1656
+ if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();
1657
+ calendar.monthPickerPopover.destroy();
1658
+
1659
+ if (calendar.monthPickerInstance) {
1660
+ calendar.monthPickerInstance.close();
1661
+ calendar.monthPickerInstance.destroy();
1662
+ }
1663
+
1664
+ delete calendar.monthPickerInstance;
1665
+ delete calendar.monthPickerPopover;
1666
+ }
1667
+
1668
+ }
1669
+ });
1670
+ calendar.monthPickerPopover.open();
1671
+ const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
1672
+ const values = [];
1673
+ const displayValues = [];
1674
+ calendar.monthNames.forEach((m, index) => {
1675
+ values.push(index);
1676
+ displayValues.push(m);
1677
+ });
1678
+ calendar.monthPickerInstance = app.picker.create({
1679
+ containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),
1680
+ value: [localeMonth],
1681
+ toolbar: false,
1682
+ rotateEffect: false,
1683
+ toolbarCloseText: calendar.params.toolbarCloseText,
1684
+ cols: [{
1685
+ values,
1686
+ displayValues
1687
+ }]
1688
+ });
1689
+ }
1690
+
1691
+ closeMonthPicker() {
1692
+ const calendar = this;
1693
+ if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened) calendar.monthPickerPopover.close();
1694
+ const index = calendar.monthPickerInstance.value[0];
1695
+ const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
1696
+ const monthIndex = calendar.currentMonth;
1697
+ const diff = localeMonthIndex - monthIndex;
1698
+ const diffIndex = index - diff;
1699
+ calendar.setYearMonth(calendar.currentYear, diffIndex, 0);
1700
+ }
1701
+
1702
+ openYearPicker() {
1703
+ const calendar = this;
1704
+ const {
1705
+ $el,
1706
+ app
1707
+ } = calendar;
1708
+ if (!$el || !$el.length) return;
1709
+ $el.append('<div class="popover calendar-popover calendar-year-picker-popover"><div class="popover-inner"><div class="calendar-year-picker"></div></div></div>');
1710
+ calendar.yearPickerPopover = app.popover.create({
1711
+ el: $el.find('.calendar-year-picker-popover'),
1712
+ targetEl: $el.find('.calendar-year-selector'),
1713
+ backdrop: true,
1714
+ backdropUnique: true,
1715
+ on: {
1716
+ close() {
1717
+ calendar.closeYearPicker();
1718
+ },
1719
+
1720
+ closed() {
1721
+ if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();
1722
+ calendar.yearPickerPopover.destroy();
1723
+
1724
+ if (calendar.yearPickerInstance) {
1725
+ calendar.yearPickerInstance.close();
1726
+ calendar.yearPickerInstance.destroy();
1727
+ }
1728
+
1729
+ delete calendar.yearPickerInstance;
1730
+ delete calendar.yearPickerPopover;
1731
+ }
1732
+
1733
+ }
1734
+ });
1735
+ calendar.yearPickerPopover.open();
1736
+ const currentYear = calendar.currentYear;
1737
+ let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;
1738
+
1739
+ if (calendar.params.minDate) {
1740
+ yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());
1741
+ }
1742
+
1743
+ let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;
1744
+
1745
+ if (calendar.params.maxDate) {
1746
+ yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());
1747
+ }
1748
+
1749
+ const years = [];
1750
+
1751
+ for (let i = yearMin; i <= yearMax; i += 1) {
1752
+ years.push(i);
1753
+ }
1754
+
1755
+ calendar.yearPickerInstance = app.picker.create({
1756
+ containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),
1757
+ value: [currentYear],
1758
+ toolbar: false,
1759
+ rotateEffect: false,
1760
+ toolbarCloseText: calendar.params.toolbarCloseText,
1761
+ cols: [{
1762
+ values: years
1763
+ }]
1764
+ });
1765
+ }
1766
+
1767
+ closeYearPicker() {
1768
+ const calendar = this;
1769
+ if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened) calendar.yearPickerPopover.close();
1770
+ calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);
1771
+ }
1772
+
1700
1773
  openTimePicker() {
1701
1774
  const calendar = this;
1702
1775
  const {
@@ -1705,7 +1778,7 @@ class Calendar extends Framework7Class {
1705
1778
  is12HoursFormat
1706
1779
  } = calendar;
1707
1780
  if (!$el || !$el.length) return;
1708
- $el.append('<div class="calendar-time-picker"></div>');
1781
+ $el.append('<div class="popover calendar-popover calendar-time-picker-popover"><div class="popover-inner"><div class="calendar-time-picker"></div></div></div>');
1709
1782
  const hoursArr = [];
1710
1783
  const minutesArr = [];
1711
1784
  const hoursMin = is12HoursFormat ? 1 : 0;
@@ -1733,10 +1806,36 @@ class Calendar extends Framework7Class {
1733
1806
  if (value[0] === 0) value[0] = 12;
1734
1807
  }
1735
1808
 
1809
+ calendar.timePickerPopover = app.popover.create({
1810
+ el: $el.find('.calendar-time-picker-popover'),
1811
+ targetEl: $el.find('.calendar-time-selector .link'),
1812
+ backdrop: true,
1813
+ backdropUnique: true,
1814
+ on: {
1815
+ close() {
1816
+ calendar.closeTimePicker();
1817
+ },
1818
+
1819
+ closed() {
1820
+ if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();
1821
+ calendar.timePickerPopover.destroy();
1822
+
1823
+ if (calendar.timePickerInstance) {
1824
+ calendar.timePickerInstance.close();
1825
+ calendar.timePickerInstance.destroy();
1826
+ }
1827
+
1828
+ delete calendar.timePickerInstance;
1829
+ delete calendar.timePickerPopover;
1830
+ }
1831
+
1832
+ }
1833
+ });
1834
+ calendar.timePickerPopover.open();
1736
1835
  calendar.timePickerInstance = app.picker.create({
1737
- containerEl: $el.find('.calendar-time-picker'),
1836
+ containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),
1738
1837
  value,
1739
- toolbar: true,
1838
+ toolbar: false,
1740
1839
  rotateEffect: false,
1741
1840
  toolbarCloseText: calendar.params.toolbarCloseText,
1742
1841
  cols: [{
@@ -1751,7 +1850,6 @@ class Calendar extends Framework7Class {
1751
1850
  values: ['AM', 'PM']
1752
1851
  }] : [])]
1753
1852
  });
1754
- calendar.timePickerInstance.$el.find('.toolbar a').removeClass('sheet-close popover-close').addClass('calendar-time-picker-close');
1755
1853
  }
1756
1854
 
1757
1855
  closeTimePicker() {
@@ -1785,13 +1883,7 @@ class Calendar extends Framework7Class {
1785
1883
  }
1786
1884
 
1787
1885
  calendar.setValue([value]);
1788
- calendar.timePickerInstance.close();
1789
- calendar.timePickerInstance.destroy();
1790
- delete calendar.timePickerInstance;
1791
- }
1792
-
1793
- if (calendar.$el && calendar.$el.length) {
1794
- calendar.$el.find('.calendar-time-picker').remove();
1886
+ if (calendar.timePickerPopover && calendar.timePickerPopover.opened) calendar.timePickerPopover.close();
1795
1887
  }
1796
1888
  }
1797
1889
 
@@ -1 +1 @@
1
- :root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-modal-border-radius:4px;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-selected-text-color:#fff;--f7-calendar-prev-next-text-color:#b8b8b8;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-day-text-color:#000;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-modal-bg-color:#fff;--f7-calendar-picker-bg-color:#fff;--f7-calendar-picker-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-calendar-picker-hover-bg-color:rgba(0, 0, 0, 0.03);--f7-calendar-time-selector-bg-color:rgba(0, 0, 0, 0.1)}:root .dark,:root.dark{--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-modal-bg-color:#121212;--f7-calendar-sheet-bg-color:#121212;--f7-calendar-picker-bg-color:#1c1c1d;--f7-calendar-picker-pressed-bg-color:rgba(255, 255, 255, 0.08);--f7-calendar-picker-hover-bg-color:rgba(255, 255, 255, 0.03);--f7-calendar-time-selector-bg-color:rgba(255, 255, 255, 0.1)}.ios{--f7-calendar-sheet-border-color:#929499;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-row-border-color:rgba(0, 0, 0, 0.25);--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-row-border-color:var(--f7-bars-border-color);--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:20px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-row-border-color:transparent;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px}.md .dark,.md.dark{--f7-calendar-day-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:18px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 16px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-footer-padding:0 16px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:16px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-row-border-color:transparent;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.aurora .dark,.aurora.dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.calendar{overflow:hidden;height:var(--f7-calendar-height);width:100%;display:flex;flex-direction:column}.aurora .calendar{--f7-toolbar-border-color:transparent;--f7-bars-border-color:transparent}.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);padding-bottom:var(--f7-safe-area-bottom);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom))}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-header{width:100%;position:relative;overflow:hidden;flex-shrink:0;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;padding:var(--f7-calendar-header-padding);background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight)}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{width:100%;flex-shrink:0;padding:var(--f7-calendar-footer-padding);background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-footer-height);font-size:var(--f7-calendar-header-font-size);display:flex;justify-content:flex-end;box-sizing:border-box;align-items:center;position:relative}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{content:'';position:absolute;background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal{position:absolute;height:var(--f7-calendar-modal-height);overflow:hidden;top:50%;left:50%;min-width:300px;max-width:var(--f7-calendar-modal-max-width);transform:translate3d(-50%,100vh,0);transition-property:transform;display:flex;z-index:13500;background:var(--f7-calendar-modal-bg-color);width:90%;border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-elevation-24)}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{display:flex;box-sizing:border-box;position:relative;font-size:var(--f7-calendar-week-header-font-size);background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-week-header .calendar-week-day{flex-shrink:1;width:calc(100% / 7);text-align:center;line-height:var(--f7-calendar-week-header-height)}.calendar-months{width:100%;height:100%;overflow:hidden;position:relative;flex-shrink:10}.calendar-months-wrapper{position:relative;width:100%;height:100%;transition:.3s}.calendar-month{display:flex;flex-direction:column;width:100%;height:100%;position:absolute;left:0;top:0}.calendar-row{height:16.66666667%;display:flex;flex-shrink:1;width:100%;position:relative;box-sizing:border-box;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-row:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{flex-shrink:1;display:flex;justify-content:center;align-items:center;box-sizing:border-box;width:14.28571429%;text-align:center;cursor:pointer;z-index:20;color:var(--f7-calendar-day-text-color);height:100%;font-size:var(--f7-calendar-day-font-size)}.calendar-day-today .calendar-day-number{color:var(--f7-calendar-today-text-color,var(--f7-theme-color));background-color:var(--f7-calendar-today-bg-color)}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{color:var(--f7-calendar-selected-text-color);background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color))}.calendar-day-number{display:inline-block;border-radius:50%;position:relative;width:var(--f7-calendar-day-size);height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size)}.calendar-day-events{position:absolute;display:flex;left:0;width:100%;top:100%;align-items:center;justify-content:center;margin-top:1px}.calendar-day-event{width:var(--f7-calendar-event-dot-size);height:var(--f7-calendar-event-dot-size);border-radius:calc(var(--f7-calendar-event-dot-size)/ 2);background-color:var(--f7-calendar-event-bg-color)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{width:100%;height:var(--f7-calendar-day-size);content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:-1;background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));opacity:.2}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-range .calendar-day-number{background-color:transparent;color:inherit}.calendar-month-selector,.calendar-year-selector{display:flex;justify-content:space-between;align-items:center;width:50%;max-width:200px;flex-shrink:10;margin-left:auto;margin-right:auto}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;position:relative;overflow:hidden;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{position:absolute;width:100%;height:100%;left:0px;top:0px;background:var(--f7-calendar-picker-bg-color);z-index:1000;-webkit-user-select:none;user-select:none}.calendar-month-picker,.calendar-year-picker{flex-wrap:wrap;font-size:var(--f7-calendar-picker-font-size);display:flex}.calendar-month-picker-item,.calendar-year-picker-item{display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;cursor:pointer;transition-duration:.1s;box-sizing:border-box}.calendar-month-picker-item span,.calendar-year-picker-item span{white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;position:relative;overflow:hidden;pointer-events:none}.device-desktop.aurora .calendar-month-picker-item:hover,.device-desktop.aurora .calendar-year-picker-item:hover{background-color:var(--f7-calendar-picker-hover-bg-color)}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state,.device-desktop.aurora .calendar-month-picker-item.active-state,.device-desktop.aurora .calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.calendar-month-picker-item:after{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-month-picker-item:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;width:1px;height:100%;transform-origin:0% 50%;transform:scaleX(calc(1 / var(--f7-device-pixel-ratio)))}.sheet-modal .calendar-month-picker-item{width:25%;height:33.33333333%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before{display:none!important}.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{width:33.33333333%;height:25%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(3n+1):before{display:none!important}.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{overflow:auto;--webkit-overflow-scrolling:touch}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-year-picker-item:after{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-time-selector{flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);position:relative;display:flex;justify-content:center;padding:12px 16px}.calendar-time-selector:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-time-selector a{overflow:hidden;position:relative;justify-content:center;align-items:center;display:flex;min-width:200px;box-sizing:border-box;height:var(--f7-calendar-time-selector-height);background-color:var(--f7-calendar-time-selector-bg-color);padding:0 10px;border-radius:8px}.calendar-time-selector .segmented{margin-left:8px}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{height:100%;display:flex;flex-direction:column}
1
+ :root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-modal-border-radius:4px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-selected-text-color:#fff;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-day-text-color:#000;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-modal-bg-color:#fff;--f7-calendar-picker-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-calendar-picker-hover-bg-color:rgba(0, 0, 0, 0.03);--f7-calendar-time-selector-bg-color:rgba(0, 0, 0, 0.05)}:root .dark,:root.dark{--f7-calendar-week-header-text-color:#aaa;--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-modal-bg-color:#121212;--f7-calendar-sheet-bg-color:#121212;--f7-calendar-picker-pressed-bg-color:rgba(255, 255, 255, 0.08);--f7-calendar-picker-hover-bg-color:rgba(255, 255, 255, 0.03);--f7-calendar-time-selector-bg-color:rgba(255, 255, 255, 0.1)}.ios{--f7-calendar-sheet-border-color:#929499;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:20px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px}.md .dark,.md.dark{--f7-calendar-day-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:18px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 16px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-footer-padding:0 16px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:16px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.aurora .dark,.aurora.dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.calendar{overflow:hidden;height:var(--f7-calendar-height);width:100%;display:flex;flex-direction:column}.aurora .calendar{--f7-toolbar-border-color:transparent;--f7-bars-border-color:transparent}.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);padding-bottom:var(--f7-safe-area-bottom);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom))}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-header{width:100%;position:relative;overflow:hidden;flex-shrink:0;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;padding:var(--f7-calendar-header-padding);background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight)}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{width:100%;flex-shrink:0;padding:var(--f7-calendar-footer-padding);background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-footer-height);font-size:var(--f7-calendar-header-font-size);display:flex;justify-content:flex-end;box-sizing:border-box;align-items:center;position:relative}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{content:'';position:absolute;background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal{position:absolute;height:var(--f7-calendar-modal-height);overflow:hidden;top:50%;left:50%;min-width:300px;max-width:var(--f7-calendar-modal-max-width);transform:translate3d(-50%,100vh,0);transition-property:transform;display:flex;z-index:13500;background:var(--f7-calendar-modal-bg-color);width:90%;border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-elevation-24)}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{display:flex;box-sizing:border-box;position:relative;font-size:var(--f7-calendar-week-header-font-size);background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-week-header .calendar-week-day{flex-shrink:1;width:calc(100% / 7);text-align:center;line-height:var(--f7-calendar-week-header-height)}.calendar-months{width:100%;height:100%;overflow:hidden;position:relative;flex-shrink:10}.calendar-months-wrapper{position:relative;width:100%;height:100%;transition:.3s}.calendar-month{display:flex;flex-direction:column;width:100%;height:100%;position:absolute;left:0;top:0}.calendar-row{height:16.66666667%;display:flex;flex-shrink:1;width:100%;position:relative;box-sizing:border-box;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{flex-shrink:1;display:flex;justify-content:center;align-items:center;box-sizing:border-box;width:14.28571429%;text-align:center;cursor:pointer;z-index:20;color:var(--f7-calendar-day-text-color);height:100%;font-size:var(--f7-calendar-day-font-size)}.calendar-day-today .calendar-day-number{color:var(--f7-calendar-today-text-color,var(--f7-theme-color));background-color:var(--f7-calendar-today-bg-color)}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{color:var(--f7-calendar-selected-text-color);background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color))}.calendar-day-number{display:inline-block;border-radius:50%;position:relative;width:var(--f7-calendar-day-size);height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size)}.calendar-day-events{position:absolute;display:flex;left:0;width:100%;top:100%;align-items:center;justify-content:center;margin-top:1px}.calendar-day-event{width:var(--f7-calendar-event-dot-size);height:var(--f7-calendar-event-dot-size);border-radius:calc(var(--f7-calendar-event-dot-size)/ 2);background-color:var(--f7-calendar-event-bg-color)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{width:100%;height:var(--f7-calendar-day-size);content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:-1;background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));opacity:.2}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-range .calendar-day-number{background-color:transparent;color:inherit}.calendar-month-selector,.calendar-year-selector{display:flex;justify-content:space-between;align-items:center;width:50%;max-width:200px;flex-shrink:10;margin-left:auto;margin-right:auto}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;position:relative;overflow:hidden;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{position:relative;width:100%;height:100%;-webkit-user-select:none;user-select:none;background:0 0}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;cursor:pointer;transition-duration:.1s;box-sizing:border-box}.calendar-month-picker-item span,.calendar-year-picker-item span{white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;position:relative;overflow:hidden;pointer-events:none}.device-desktop.aurora .calendar-month-picker-item:hover,.device-desktop.aurora .calendar-year-picker-item:hover{background-color:var(--f7-calendar-picker-hover-bg-color)}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state,.device-desktop.aurora .calendar-month-picker-item.active-state,.device-desktop.aurora .calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{width:25%;height:33.33333333%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before{display:none!important}.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{width:33.33333333%;height:25%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(3n+1):before{display:none!important}.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{overflow:auto;--webkit-overflow-scrolling:touch}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);position:relative;display:flex;justify-content:space-between;align-items:center;padding:12px 16px}.calendar-time-selector a{overflow:hidden;position:relative;justify-content:center;align-items:center;display:flex;box-sizing:border-box;height:var(--f7-calendar-time-selector-height);background-color:var(--f7-calendar-time-selector-bg-color);padding:0 16px;border-radius:8px}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{height:100%;display:flex;flex-direction:column}