framework7 7.0.0-beta.10 → 7.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/components/actions/actions-class.js +6 -1
  2. package/components/actions/actions-rtl.css +1 -1
  3. package/components/actions/actions.css +1 -1
  4. package/components/actions/actions.d.ts +2 -0
  5. package/components/actions/actions.js +1 -0
  6. package/components/actions/actions.lazy.js +1 -1
  7. package/components/actions/actions.less +3 -0
  8. package/components/breadcrumbs/breadcrumbs-aurora.less +2 -0
  9. package/components/breadcrumbs/breadcrumbs-ios.less +2 -0
  10. package/components/breadcrumbs/breadcrumbs-md.less +2 -0
  11. package/components/breadcrumbs/breadcrumbs-rtl.css +1 -0
  12. package/components/breadcrumbs/breadcrumbs-vars.less +36 -0
  13. package/components/breadcrumbs/breadcrumbs.css +1 -0
  14. package/components/breadcrumbs/breadcrumbs.d.ts +15 -0
  15. package/components/breadcrumbs/breadcrumbs.js +13 -0
  16. package/components/breadcrumbs/breadcrumbs.lazy.js +1 -0
  17. package/components/breadcrumbs/breadcrumbs.less +100 -0
  18. package/components/calendar/calendar-class.js +206 -122
  19. package/components/calendar/calendar-rtl.css +1 -1
  20. package/components/calendar/calendar-vars.less +6 -10
  21. package/components/calendar/calendar.css +1 -1
  22. package/components/calendar/calendar.d.ts +2 -0
  23. package/components/calendar/calendar.js +1 -0
  24. package/components/calendar/calendar.lazy.js +1 -1
  25. package/components/calendar/calendar.less +20 -16
  26. package/components/list-index/list-index.d.ts +1 -1
  27. package/components/modal/modal-class.js +10 -0
  28. package/components/notification/notification.d.ts +4 -4
  29. package/components/picker/picker-class.js +6 -6
  30. package/components/picker/picker-column.js +34 -270
  31. package/components/picker/picker-rtl.css +1 -1
  32. package/components/picker/picker.css +1 -1
  33. package/components/picker/picker.d.ts +2 -13
  34. package/components/picker/picker.js +0 -5
  35. package/components/picker/picker.lazy.js +1 -1
  36. package/components/picker/picker.less +28 -10
  37. package/components/popover/popover-class.js +15 -2
  38. package/components/popover/popover-rtl.css +1 -1
  39. package/components/popover/popover.css +1 -1
  40. package/components/popover/popover.d.ts +2 -0
  41. package/components/popover/popover.js +1 -0
  42. package/components/popover/popover.lazy.js +1 -1
  43. package/components/popover/popover.less +3 -0
  44. package/components/popup/popup-class.js +6 -1
  45. package/components/popup/popup-rtl.css +1 -1
  46. package/components/popup/popup.css +1 -1
  47. package/components/popup/popup.d.ts +4 -0
  48. package/components/popup/popup.js +1 -0
  49. package/components/popup/popup.lazy.js +1 -1
  50. package/components/popup/popup.less +4 -0
  51. package/components/preloader/preloader.d.ts +4 -0
  52. package/components/progressbar/progressbar-aurora.less +32 -13
  53. package/components/progressbar/progressbar-ios.less +19 -7
  54. package/components/progressbar/progressbar-md.less +64 -28
  55. package/components/progressbar/progressbar-rtl.css +1 -1
  56. package/components/progressbar/progressbar.css +1 -1
  57. package/components/progressbar/progressbar.js +1 -1
  58. package/components/progressbar/progressbar.lazy.js +1 -1
  59. package/components/progressbar/progressbar.less +16 -4
  60. package/components/range/range.d.ts +23 -5
  61. package/components/sheet/sheet-class.js +6 -1
  62. package/components/sheet/sheet-rtl.css +1 -1
  63. package/components/sheet/sheet.css +1 -1
  64. package/components/sheet/sheet.d.ts +2 -0
  65. package/components/sheet/sheet.js +1 -0
  66. package/components/sheet/sheet.lazy.js +1 -1
  67. package/components/sheet/sheet.less +3 -0
  68. package/components/sortable/sortable.d.ts +5 -1
  69. package/components/sortable/sortable.js +15 -2
  70. package/components/sortable/sortable.lazy.js +1 -1
  71. package/components/swiper/swiper-rtl.css +1 -1
  72. package/components/swiper/swiper.css +1 -1
  73. package/components/swiper/swiper.lazy.js +1 -1
  74. package/components/tabs/tabs.js +4 -5
  75. package/components/tabs/tabs.lazy.js +1 -1
  76. package/components/toast/toast.d.ts +2 -2
  77. package/components/toolbar/toolbar-aurora.less +0 -13
  78. package/components/toolbar/toolbar-md.less +0 -13
  79. package/components/toolbar/toolbar.js +1 -1
  80. package/components/toolbar/toolbar.less +13 -0
  81. package/components/view/view.d.ts +2 -0
  82. package/components/view/view.js +1 -0
  83. package/framework7-bundle-rtl.css +249 -150
  84. package/framework7-bundle-rtl.min.css +4 -4
  85. package/framework7-bundle.css +234 -134
  86. package/framework7-bundle.esm.js +5 -4
  87. package/framework7-bundle.js +927 -713
  88. package/framework7-bundle.js.map +1 -1
  89. package/framework7-bundle.less +4 -3
  90. package/framework7-bundle.min.css +4 -4
  91. package/framework7-bundle.min.js +4 -4
  92. package/framework7-bundle.min.js.map +1 -1
  93. package/framework7-lite-bundle.esm.js +5 -4
  94. package/framework7-lite.esm.js +3 -3
  95. package/framework7-rtl.css +12 -21
  96. package/framework7-rtl.min.css +4 -4
  97. package/framework7-types.d.ts +5 -1
  98. package/framework7.css +11 -19
  99. package/framework7.d.ts +4 -0
  100. package/framework7.esm.js +3 -3
  101. package/framework7.js +38 -13
  102. package/framework7.js.map +1 -1
  103. package/framework7.less +3 -3
  104. package/framework7.min.css +4 -4
  105. package/framework7.min.js +4 -4
  106. package/framework7.min.js.map +1 -1
  107. package/modules/router/back.js +11 -1
  108. package/modules/router/tab.js +1 -1
  109. package/package.json +9 -5
@@ -48,17 +48,34 @@ class Calendar extends Framework7Class {
48
48
  allowTouchMove: true,
49
49
  hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple
50
50
  });
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();
51
+
52
+ calendar.dayFormatter = date => {
53
+ const formatter = new Intl.DateTimeFormat(calendar.params.locale, {
54
+ day: 'numeric'
55
+ });
56
+ return formatter.format(date).replace(/日/, '');
57
+ };
58
+
59
+ calendar.monthFormatter = date => {
60
+ const formatter = new Intl.DateTimeFormat(calendar.params.locale, {
61
+ month: 'long'
62
+ });
63
+ return formatter.format(date);
64
+ };
65
+
66
+ calendar.yearFormatter = date => {
67
+ const formatter = new Intl.DateTimeFormat(calendar.params.locale, {
68
+ year: 'numeric'
69
+ });
70
+ return formatter.format(date);
71
+ };
72
+
73
+ calendar.timeSelectorFormatter = date => {
74
+ const formatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);
75
+ return formatter.format(date);
76
+ };
77
+
78
+ const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();
62
79
  calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0; // Auto names
63
80
 
64
81
  let {
@@ -106,6 +123,7 @@ class Calendar extends Framework7Class {
106
123
  if (calendar.isPopover()) return;
107
124
  if (!calendar.opened || calendar.closing) return;
108
125
  if ($targetEl.closest('[class*="backdrop"]').length) return;
126
+ if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover) return;
109
127
 
110
128
  if ($inputEl && $inputEl.length > 0) {
111
129
  if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {
@@ -320,61 +338,17 @@ class Calendar extends Framework7Class {
320
338
  }
321
339
 
322
340
  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);
341
+ calendar.openMonthPicker();
344
342
  }
345
343
 
346
344
  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);
345
+ calendar.openYearPicker();
368
346
  }
369
347
 
370
348
  function onTimeSelectorClick() {
371
349
  calendar.openTimePicker();
372
350
  }
373
351
 
374
- function onTimePickerCloseClick() {
375
- calendar.closeTimePicker();
376
- }
377
-
378
352
  const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {
379
353
  passive: true,
380
354
  capture: false
@@ -387,17 +361,14 @@ class Calendar extends Framework7Class {
387
361
 
388
362
  if (calendar.params.monthPicker) {
389
363
  $el.find('.current-month-value').on('click', onMonthSelectorClick);
390
- $el.on('click', '.calendar-month-picker-item', onMonthSelectorItemClick);
391
364
  }
392
365
 
393
366
  if (calendar.params.yearPicker) {
394
367
  $el.find('.current-year-value').on('click', onYearSelectorClick);
395
- $el.on('click', '.calendar-year-picker-item', onYearSelectorItemClick);
396
368
  }
397
369
 
398
370
  if (calendar.hasTimePicker) {
399
371
  $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);
400
- $el.on('click', '.calendar-time-picker-close', onTimePickerCloseClick);
401
372
  } // Day clicks
402
373
 
403
374
 
@@ -417,17 +388,14 @@ class Calendar extends Framework7Class {
417
388
 
418
389
  if (calendar.params.monthPicker) {
419
390
  $el.find('.current-month-value').off('click', onMonthSelectorClick);
420
- $el.off('click', '.calendar-month-picker-item', onMonthSelectorItemClick);
421
391
  }
422
392
 
423
393
  if (calendar.params.yearPicker) {
424
394
  $el.find('.current-year-value').off('click', onYearSelectorClick);
425
- $el.off('click', '.calendar-year-picker-item', onYearSelectorItemClick);
426
395
  }
427
396
 
428
397
  if (calendar.hasTimePicker) {
429
398
  $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);
430
- $el.off('click', '.calendar-time-picker-close', onTimePickerCloseClick);
431
399
  }
432
400
 
433
401
  $wrapperEl.off('click', handleDayClick);
@@ -487,7 +455,7 @@ class Calendar extends Framework7Class {
487
455
 
488
456
  for (let i = 0; i < 24; i += 1) {
489
457
  const date = new Date().setMonth(i, 1);
490
- const currentYear = calendar.yearFormatter.format(date);
458
+ const currentYear = calendar.yearFormatter(date);
491
459
 
492
460
  if (year && currentYear !== year) {
493
461
  if (yearStarted) yearEnded = true;
@@ -787,7 +755,7 @@ class Calendar extends Framework7Class {
787
755
  }
788
756
 
789
757
  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);
758
+ $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter(value[0]) : calendar.params.timePickerPlaceholder);
791
759
  }
792
760
 
793
761
  if ($inputEl && $inputEl.length || params.header) {
@@ -1234,9 +1202,9 @@ class Calendar extends Framework7Class {
1234
1202
  let date = new Date(d);
1235
1203
  let year = date.getFullYear();
1236
1204
  let month = date.getMonth();
1237
- let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));
1205
+ let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));
1238
1206
  if (localeMonth < 0) localeMonth = month;
1239
- let localeYear = calendar.yearFormatter.format(date);
1207
+ let localeYear = calendar.yearFormatter(date);
1240
1208
 
1241
1209
  if (offset === 'next') {
1242
1210
  if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);
@@ -1249,9 +1217,9 @@ class Calendar extends Framework7Class {
1249
1217
  if (offset === 'next' || offset === 'prev') {
1250
1218
  month = date.getMonth();
1251
1219
  year = date.getFullYear();
1252
- localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));
1220
+ localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));
1253
1221
  if (localeMonth < 0) localeMonth = month;
1254
- localeYear = calendar.yearFormatter.format(date);
1222
+ localeYear = calendar.yearFormatter(date);
1255
1223
  }
1256
1224
 
1257
1225
  const currentValues = [];
@@ -1404,7 +1372,7 @@ class Calendar extends Framework7Class {
1404
1372
  dayDate = new Date(dayDate);
1405
1373
  const dayYear = dayDate.getFullYear();
1406
1374
  const dayMonth = dayDate.getMonth();
1407
- const dayNumberDisplay = calendar.dayFormatter.format(dayDate); // prettier-ignore
1375
+ const dayNumberDisplay = calendar.dayFormatter(dayDate); // prettier-ignore
1408
1376
 
1409
1377
  rowHtml += `
1410
1378
  <div data-year="${dayYear}" data-month="${dayMonth}" data-day="${dayNumber}" class="calendar-day${addClass}" data-date="${dayYear}-${dayMonth}-${dayNumber}">
@@ -1466,16 +1434,6 @@ class Calendar extends Framework7Class {
1466
1434
  })));
1467
1435
  }
1468
1436
 
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
1437
  renderYearSelector() {
1480
1438
  const calendar = this;
1481
1439
 
@@ -1498,35 +1456,6 @@ class Calendar extends Framework7Class {
1498
1456
  }, $jsx("i", {
1499
1457
  class: "icon icon-next"
1500
1458
  })));
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
1459
  } // eslint-disable-next-line
1531
1460
 
1532
1461
 
@@ -1534,10 +1463,10 @@ class Calendar extends Framework7Class {
1534
1463
  const calendar = this;
1535
1464
  const value = calendar.value && calendar.value[0];
1536
1465
  let timeString;
1537
- if (value) timeString = calendar.timeSelectorFormatter.format(value);
1466
+ if (value) timeString = calendar.timeSelectorFormatter(value);
1538
1467
  return $jsx("div", {
1539
1468
  class: "calendar-time-selector"
1540
- }, $jsx("a", {
1469
+ }, $jsx("span", null, calendar.params.timePickerLabel), $jsx("a", {
1541
1470
  class: "link"
1542
1471
  }, timeString || calendar.params.timePickerPlaceholder));
1543
1472
  }
@@ -1697,6 +1626,142 @@ class Calendar extends Framework7Class {
1697
1626
  return calendar.renderInline();
1698
1627
  }
1699
1628
 
1629
+ openMonthPicker() {
1630
+ const calendar = this;
1631
+ const {
1632
+ $el,
1633
+ app
1634
+ } = calendar;
1635
+ if (!$el || !$el.length) return;
1636
+ $el.append('<div class="popover calendar-popover calendar-month-picker-popover"><div class="popover-inner"><div class="calendar-month-picker"></div></div></div>');
1637
+ calendar.monthPickerPopover = app.popover.create({
1638
+ el: $el.find('.calendar-month-picker-popover'),
1639
+ targetEl: $el.find('.calendar-month-selector'),
1640
+ backdrop: true,
1641
+ backdropUnique: true,
1642
+ on: {
1643
+ close() {
1644
+ calendar.closeMonthPicker();
1645
+ },
1646
+
1647
+ closed() {
1648
+ if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();
1649
+ calendar.monthPickerPopover.destroy();
1650
+
1651
+ if (calendar.monthPickerInstance) {
1652
+ calendar.monthPickerInstance.close();
1653
+ calendar.monthPickerInstance.destroy();
1654
+ }
1655
+
1656
+ delete calendar.monthPickerInstance;
1657
+ delete calendar.monthPickerPopover;
1658
+ }
1659
+
1660
+ }
1661
+ });
1662
+ calendar.monthPickerPopover.open();
1663
+ const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
1664
+ const values = [];
1665
+ const displayValues = [];
1666
+ calendar.monthNames.forEach((m, index) => {
1667
+ values.push(index);
1668
+ displayValues.push(m);
1669
+ });
1670
+ calendar.monthPickerInstance = app.picker.create({
1671
+ containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),
1672
+ value: [localeMonth],
1673
+ toolbar: false,
1674
+ rotateEffect: false,
1675
+ toolbarCloseText: calendar.params.toolbarCloseText,
1676
+ cols: [{
1677
+ values,
1678
+ displayValues
1679
+ }]
1680
+ });
1681
+ }
1682
+
1683
+ closeMonthPicker() {
1684
+ const calendar = this;
1685
+ if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened) calendar.monthPickerPopover.close();
1686
+ const index = calendar.monthPickerInstance.value[0];
1687
+ const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
1688
+ const monthIndex = calendar.currentMonth;
1689
+ const diff = localeMonthIndex - monthIndex;
1690
+ const diffIndex = index - diff;
1691
+ calendar.setYearMonth(calendar.currentYear, diffIndex, 0);
1692
+ }
1693
+
1694
+ openYearPicker() {
1695
+ const calendar = this;
1696
+ const {
1697
+ $el,
1698
+ app
1699
+ } = calendar;
1700
+ if (!$el || !$el.length) return;
1701
+ $el.append('<div class="popover calendar-popover calendar-year-picker-popover"><div class="popover-inner"><div class="calendar-year-picker"></div></div></div>');
1702
+ calendar.yearPickerPopover = app.popover.create({
1703
+ el: $el.find('.calendar-year-picker-popover'),
1704
+ targetEl: $el.find('.calendar-year-selector'),
1705
+ backdrop: true,
1706
+ backdropUnique: true,
1707
+ on: {
1708
+ close() {
1709
+ calendar.closeYearPicker();
1710
+ },
1711
+
1712
+ closed() {
1713
+ if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();
1714
+ calendar.yearPickerPopover.destroy();
1715
+
1716
+ if (calendar.yearPickerInstance) {
1717
+ calendar.yearPickerInstance.close();
1718
+ calendar.yearPickerInstance.destroy();
1719
+ }
1720
+
1721
+ delete calendar.yearPickerInstance;
1722
+ delete calendar.yearPickerPopover;
1723
+ }
1724
+
1725
+ }
1726
+ });
1727
+ calendar.yearPickerPopover.open();
1728
+ const currentYear = calendar.currentYear;
1729
+ let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;
1730
+
1731
+ if (calendar.params.minDate) {
1732
+ yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());
1733
+ }
1734
+
1735
+ let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;
1736
+
1737
+ if (calendar.params.maxDate) {
1738
+ yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());
1739
+ }
1740
+
1741
+ const years = [];
1742
+
1743
+ for (let i = yearMin; i <= yearMax; i += 1) {
1744
+ years.push(i);
1745
+ }
1746
+
1747
+ calendar.yearPickerInstance = app.picker.create({
1748
+ containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),
1749
+ value: [currentYear],
1750
+ toolbar: false,
1751
+ rotateEffect: false,
1752
+ toolbarCloseText: calendar.params.toolbarCloseText,
1753
+ cols: [{
1754
+ values: years
1755
+ }]
1756
+ });
1757
+ }
1758
+
1759
+ closeYearPicker() {
1760
+ const calendar = this;
1761
+ if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened) calendar.yearPickerPopover.close();
1762
+ calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);
1763
+ }
1764
+
1700
1765
  openTimePicker() {
1701
1766
  const calendar = this;
1702
1767
  const {
@@ -1705,7 +1770,7 @@ class Calendar extends Framework7Class {
1705
1770
  is12HoursFormat
1706
1771
  } = calendar;
1707
1772
  if (!$el || !$el.length) return;
1708
- $el.append('<div class="calendar-time-picker"></div>');
1773
+ $el.append('<div class="popover calendar-popover calendar-time-picker-popover"><div class="popover-inner"><div class="calendar-time-picker"></div></div></div>');
1709
1774
  const hoursArr = [];
1710
1775
  const minutesArr = [];
1711
1776
  const hoursMin = is12HoursFormat ? 1 : 0;
@@ -1733,10 +1798,36 @@ class Calendar extends Framework7Class {
1733
1798
  if (value[0] === 0) value[0] = 12;
1734
1799
  }
1735
1800
 
1801
+ calendar.timePickerPopover = app.popover.create({
1802
+ el: $el.find('.calendar-time-picker-popover'),
1803
+ targetEl: $el.find('.calendar-time-selector .link'),
1804
+ backdrop: true,
1805
+ backdropUnique: true,
1806
+ on: {
1807
+ close() {
1808
+ calendar.closeTimePicker();
1809
+ },
1810
+
1811
+ closed() {
1812
+ if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();
1813
+ calendar.timePickerPopover.destroy();
1814
+
1815
+ if (calendar.timePickerInstance) {
1816
+ calendar.timePickerInstance.close();
1817
+ calendar.timePickerInstance.destroy();
1818
+ }
1819
+
1820
+ delete calendar.timePickerInstance;
1821
+ delete calendar.timePickerPopover;
1822
+ }
1823
+
1824
+ }
1825
+ });
1826
+ calendar.timePickerPopover.open();
1736
1827
  calendar.timePickerInstance = app.picker.create({
1737
- containerEl: $el.find('.calendar-time-picker'),
1828
+ containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),
1738
1829
  value,
1739
- toolbar: true,
1830
+ toolbar: false,
1740
1831
  rotateEffect: false,
1741
1832
  toolbarCloseText: calendar.params.toolbarCloseText,
1742
1833
  cols: [{
@@ -1751,7 +1842,6 @@ class Calendar extends Framework7Class {
1751
1842
  values: ['AM', 'PM']
1752
1843
  }] : [])]
1753
1844
  });
1754
- calendar.timePickerInstance.$el.find('.toolbar a').removeClass('sheet-close popover-close').addClass('calendar-time-picker-close');
1755
1845
  }
1756
1846
 
1757
1847
  closeTimePicker() {
@@ -1785,13 +1875,7 @@ class Calendar extends Framework7Class {
1785
1875
  }
1786
1876
 
1787
1877
  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();
1878
+ if (calendar.timePickerPopover && calendar.timePickerPopover.opened) calendar.timePickerPopover.close();
1795
1879
  }
1796
1880
  }
1797
1881
 
@@ -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}
@@ -14,16 +14,14 @@
14
14
  --f7-calendar-footer-border-color: var(--f7-bars-border-color);
15
15
  --f7-calendar-footer-link-color: var(--f7-bars-link-color);
16
16
  --f7-calendar-footer-text-color: var(--f7-bars-text-color);
17
- --f7-calendar-week-header-bg-color: var(--f7-bars-bg-color);
18
- --f7-calendar-week-header-text-color: var(--f7-bars-text-color);
19
17
  */
18
+ --f7-calendar-week-header-bg-color: transparent;
20
19
  --f7-calendar-footer-padding: 0 8px;
21
20
  --f7-calendar-week-header-font-size: 11px;
22
21
  --f7-calendar-selected-text-color: #fff;
23
22
  /*
24
23
  --f7-calendar-selected-bg-color: var(--f7-theme-color);
25
24
  */
26
- --f7-calendar-prev-next-text-color: #b8b8b8;
27
25
  --f7-calendar-disabled-text-color: #d4d4d4;
28
26
  --f7-calendar-event-dot-size: 4px;
29
27
  /*
@@ -34,19 +32,21 @@
34
32
  */
35
33
  --f7-calendar-time-selector-height: 28px;
36
34
  .light-vars({
35
+ --f7-calendar-week-header-text-color: #5e5e5e;
36
+ --f7-calendar-prev-next-text-color: #c8c8c8;
37
37
  --f7-calendar-day-text-color: #000;
38
38
  --f7-calendar-sheet-bg-color: #fff;
39
39
  --f7-calendar-modal-bg-color: #fff;
40
- --f7-calendar-picker-bg-color: #fff;
41
40
  --f7-calendar-picker-pressed-bg-color: rgba(0,0,0,0.1);
42
41
  --f7-calendar-picker-hover-bg-color: rgba(0,0,0,0.03);
43
- --f7-calendar-time-selector-bg-color: rgba(0,0,0,0.1);
42
+ --f7-calendar-time-selector-bg-color: rgba(0,0,0,0.05);
44
43
  });
45
44
  .dark-vars({
45
+ --f7-calendar-week-header-text-color: #aaa;
46
+ --f7-calendar-prev-next-text-color: #5e5e5e;
46
47
  --f7-calendar-sheet-border-color: var(--f7-bars-border-color);
47
48
  --f7-calendar-modal-bg-color: #121212;
48
49
  --f7-calendar-sheet-bg-color: #121212;
49
- --f7-calendar-picker-bg-color: #1c1c1d;
50
50
  --f7-calendar-picker-pressed-bg-color: rgba(255,255,255,0.08);
51
51
  --f7-calendar-picker-hover-bg-color: rgba(255,255,255,0.03);
52
52
  --f7-calendar-time-selector-bg-color: rgba(255,255,255,0.1);
@@ -66,12 +66,10 @@
66
66
  --f7-calendar-picker-font-size: 17px;
67
67
  --f7-calendar-time-selector-font-size: 17px;
68
68
  .light-vars({
69
- --f7-calendar-row-border-color: rgba(0,0,0,0.25);
70
69
  --f7-calendar-today-text-color: #000;
71
70
  --f7-calendar-today-bg-color: #e3e3e3;
72
71
  });
73
72
  .dark-vars({
74
- --f7-calendar-row-border-color: var(--f7-bars-border-color);
75
73
  --f7-calendar-day-text-color: #fff;
76
74
  --f7-calendar-today-text-color: #fff;
77
75
  --f7-calendar-today-bg-color: #333;
@@ -86,7 +84,6 @@
86
84
  --f7-calendar-footer-height: 48px;
87
85
  --f7-calendar-footer-font-size: 14px;
88
86
  --f7-calendar-week-header-height: 24px;
89
- --f7-calendar-row-border-color: transparent;
90
87
  --f7-calendar-day-font-size: 14px;
91
88
  /*
92
89
  --f7-calendar-today-text-color: var(--f7-theme-color);
@@ -113,7 +110,6 @@
113
110
  --f7-calendar-day-size: 32px;
114
111
  --f7-calendar-picker-font-size: 16px;
115
112
  --f7-calendar-time-selector-font-size: 14px;
116
- --f7-calendar-row-border-color: transparent;
117
113
  .light-vars({
118
114
  --f7-calendar-today-text-color: #000;
119
115
  --f7-calendar-today-bg-color: #e3e3e3;