@ionic/core 8.5.4-dev.11744209290.123af9eb → 8.5.4-dev.11744646756.1244bf71

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 (236) hide show
  1. package/components/data.js +29 -4
  2. package/components/ion-datetime.js +70 -28
  3. package/components/ion-toggle.js +11 -4
  4. package/dist/cjs/{app-globals-Di9ZJzjm.js → app-globals-CSpnImi2.js} +1 -1
  5. package/dist/cjs/{button-active-BlMN9Iyq.js → button-active-BzpKQ5zN.js} +1 -1
  6. package/dist/cjs/{data-DlPf8ZXm.js → data-BQSLLJwc.js} +30 -5
  7. package/dist/cjs/{hardware-back-button-lTgcqUpk.js → hardware-back-button-B0yu2YGK.js} +2 -2
  8. package/dist/cjs/{index-BE9YH63j.js → index-04WNNW0S.js} +5 -5
  9. package/dist/cjs/{index-CquwaYOd.js → index-3N0K8CTt.js} +1 -1
  10. package/dist/cjs/{index-CXThGkw7.js → index-BjVGGb_k.js} +3 -3
  11. package/dist/cjs/{index-rYFHa7ZR.js → index-D7kGM2E_.js} +1 -1
  12. package/dist/cjs/{index-BVfbh2cJ.js → index-qOuhvt-6.js} +18 -1
  13. package/dist/cjs/index.cjs.js +9 -9
  14. package/dist/cjs/{input-shims-DA_nJulF.js → input-shims-B23RZ_yw.js} +4 -4
  15. package/dist/cjs/{input.utils-UHOCoNWM.js → input.utils-BvrpMdKU.js} +1 -1
  16. package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
  17. package/dist/cjs/ion-action-sheet.cjs.entry.js +6 -6
  18. package/dist/cjs/ion-alert.cjs.entry.js +6 -6
  19. package/dist/cjs/ion-app_8.cjs.entry.js +9 -9
  20. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  21. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  22. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  23. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  24. package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
  25. package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
  26. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  27. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  28. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
  30. package/dist/cjs/ion-datetime_3.cjs.entry.js +75 -34
  31. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  32. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  33. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +4 -4
  34. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  35. package/dist/cjs/ion-input.cjs.entry.js +4 -4
  36. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  37. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  38. package/dist/cjs/ion-loading.cjs.entry.js +5 -5
  39. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  40. package/dist/cjs/ion-modal.cjs.entry.js +7 -7
  41. package/dist/cjs/ion-nav_2.cjs.entry.js +4 -4
  42. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-picker-column.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-picker.cjs.entry.js +1 -1
  45. package/dist/cjs/ion-popover.cjs.entry.js +6 -6
  46. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  47. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  48. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  49. package/dist/cjs/ion-refresher_2.cjs.entry.js +4 -4
  50. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  51. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  52. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  53. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  54. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  55. package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
  56. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  57. package/dist/cjs/ion-select-modal.cjs.entry.js +5 -5
  58. package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
  59. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  60. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  61. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  62. package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
  63. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  64. package/dist/cjs/ion-textarea.cjs.entry.js +4 -4
  65. package/dist/cjs/ion-toast.cjs.entry.js +5 -5
  66. package/dist/cjs/ion-toggle.cjs.entry.js +12 -5
  67. package/dist/cjs/{ionic-global-AdqEvgj6.js → ionic-global-D0fKFhpt.js} +1 -1
  68. package/dist/cjs/ionic.cjs.js +5 -5
  69. package/dist/cjs/{ios.transition-B8HcmmPx.js → ios.transition-Cyrk-CkT.js} +4 -4
  70. package/dist/cjs/loader.cjs.js +4 -4
  71. package/dist/cjs/{md.transition-54O0AjJC.js → md.transition-Bh2J94f4.js} +4 -4
  72. package/dist/cjs/{overlays-CSyZW4m0.js → overlays-hvRku41m.js} +3 -3
  73. package/dist/cjs/{status-tap-B1Kcv7yf.js → status-tap-EJ9Sb5hb.js} +4 -4
  74. package/dist/collection/collection-manifest.json +1 -1
  75. package/dist/collection/components/datetime/datetime.ios.css +7 -2
  76. package/dist/collection/components/datetime/datetime.js +87 -26
  77. package/dist/collection/components/datetime/datetime.md.css +9 -3
  78. package/dist/collection/components/datetime/utils/data.js +29 -4
  79. package/dist/collection/components/toggle/toggle.js +11 -3
  80. package/dist/docs.json +26 -2
  81. package/dist/esm/{app-globals-CispSZgz.js → app-globals-C0a0o4Av.js} +1 -1
  82. package/dist/esm/{button-active-D92yWoWC.js → button-active-BQqkZ_sm.js} +1 -1
  83. package/dist/esm/{data-Dq3-TN9Z.js → data-omKWOMer.js} +30 -5
  84. package/dist/esm/{hardware-back-button-CRemSDoj.js → hardware-back-button-RMajLSrZ.js} +2 -2
  85. package/dist/esm/{index-DYJvRcE0.js → index-BKfOgUuW.js} +5 -5
  86. package/dist/esm/{index-DZLiflRE.js → index-C7r3mIlB.js} +3 -3
  87. package/dist/esm/{index-DWiwgv23.js → index-CDohRbVJ.js} +1 -1
  88. package/dist/esm/{index-PfJyigSK.js → index-DR2njD_q.js} +1 -1
  89. package/dist/esm/{index-C5UXyyFe.js → index-EP3pwcdb.js} +18 -1
  90. package/dist/esm/index.js +9 -9
  91. package/dist/esm/{input-shims-BL_oixbH.js → input-shims-Clcc9pEO.js} +4 -4
  92. package/dist/esm/{input.utils-Bd73EHpQ.js → input.utils-BeGXuyDm.js} +1 -1
  93. package/dist/esm/ion-accordion_2.entry.js +3 -3
  94. package/dist/esm/ion-action-sheet.entry.js +6 -6
  95. package/dist/esm/ion-alert.entry.js +6 -6
  96. package/dist/esm/ion-app_8.entry.js +9 -9
  97. package/dist/esm/ion-avatar_3.entry.js +2 -2
  98. package/dist/esm/ion-back-button.entry.js +2 -2
  99. package/dist/esm/ion-backdrop.entry.js +2 -2
  100. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  101. package/dist/esm/ion-button_2.entry.js +3 -3
  102. package/dist/esm/ion-card_5.entry.js +2 -2
  103. package/dist/esm/ion-checkbox.entry.js +2 -2
  104. package/dist/esm/ion-chip.entry.js +2 -2
  105. package/dist/esm/ion-col_3.entry.js +2 -2
  106. package/dist/esm/ion-datetime-button.entry.js +4 -4
  107. package/dist/esm/ion-datetime_3.entry.js +75 -34
  108. package/dist/esm/ion-fab_3.entry.js +2 -2
  109. package/dist/esm/ion-img.entry.js +2 -2
  110. package/dist/esm/ion-infinite-scroll_2.entry.js +4 -4
  111. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  112. package/dist/esm/ion-input.entry.js +4 -4
  113. package/dist/esm/ion-item-option_3.entry.js +4 -4
  114. package/dist/esm/ion-item_8.entry.js +2 -2
  115. package/dist/esm/ion-loading.entry.js +5 -5
  116. package/dist/esm/ion-menu_3.entry.js +6 -6
  117. package/dist/esm/ion-modal.entry.js +7 -7
  118. package/dist/esm/ion-nav_2.entry.js +4 -4
  119. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  120. package/dist/esm/ion-picker-column.entry.js +2 -2
  121. package/dist/esm/ion-picker.entry.js +1 -1
  122. package/dist/esm/ion-popover.entry.js +6 -6
  123. package/dist/esm/ion-progress-bar.entry.js +2 -2
  124. package/dist/esm/ion-radio_2.entry.js +2 -2
  125. package/dist/esm/ion-range.entry.js +4 -4
  126. package/dist/esm/ion-refresher_2.entry.js +4 -4
  127. package/dist/esm/ion-reorder_2.entry.js +4 -4
  128. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  129. package/dist/esm/ion-route_4.entry.js +2 -2
  130. package/dist/esm/ion-searchbar.entry.js +2 -2
  131. package/dist/esm/ion-segment-content.entry.js +1 -1
  132. package/dist/esm/ion-segment-view.entry.js +1 -1
  133. package/dist/esm/ion-segment_2.entry.js +2 -2
  134. package/dist/esm/ion-select-modal.entry.js +5 -5
  135. package/dist/esm/ion-select_3.entry.js +5 -5
  136. package/dist/esm/ion-spinner.entry.js +2 -2
  137. package/dist/esm/ion-split-pane.entry.js +2 -2
  138. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  139. package/dist/esm/ion-tab_2.entry.js +1 -1
  140. package/dist/esm/ion-text.entry.js +2 -2
  141. package/dist/esm/ion-textarea.entry.js +4 -4
  142. package/dist/esm/ion-toast.entry.js +5 -5
  143. package/dist/esm/ion-toggle.entry.js +12 -5
  144. package/dist/esm/{ionic-global-GkM1xiqt.js → ionic-global-CrB2BPUW.js} +1 -1
  145. package/dist/esm/ionic.js +6 -6
  146. package/dist/esm/{ios.transition-BcTzvx5_.js → ios.transition-BObaMu_w.js} +4 -4
  147. package/dist/esm/loader.js +5 -5
  148. package/dist/esm/{md.transition-DYGWIgPE.js → md.transition-BYk9oj5T.js} +4 -4
  149. package/dist/esm/{overlays-BuSzwtlC.js → overlays-DUDTB6a2.js} +3 -3
  150. package/dist/esm/{status-tap-BPk7Ddsi.js → status-tap-Az5SFsVV.js} +4 -4
  151. package/dist/html.html-data.json +4 -0
  152. package/dist/ionic/index.esm.js +1 -1
  153. package/dist/ionic/ionic.esm.js +1 -1
  154. package/dist/ionic/{p-49b72347.entry.js → p-006975c7.entry.js} +1 -1
  155. package/dist/ionic/{p-e01503b2.entry.js → p-00acbe36.entry.js} +1 -1
  156. package/dist/ionic/p-03abd858.entry.js +4 -0
  157. package/dist/ionic/{p-6a8928b1.entry.js → p-141822bc.entry.js} +1 -1
  158. package/dist/ionic/p-17e8ff6b.entry.js +4 -0
  159. package/dist/ionic/{p-879a7b00.entry.js → p-189c7fe9.entry.js} +1 -1
  160. package/dist/ionic/{p-72d7dd7c.entry.js → p-18b4709f.entry.js} +1 -1
  161. package/dist/ionic/{p-171d5d3e.entry.js → p-1bea6291.entry.js} +1 -1
  162. package/dist/ionic/{p-9ca05f27.entry.js → p-1f3d9d38.entry.js} +1 -1
  163. package/dist/ionic/{p-9d8be89a.entry.js → p-20b45b04.entry.js} +1 -1
  164. package/dist/ionic/{p-7deacfed.entry.js → p-2959ef70.entry.js} +1 -1
  165. package/dist/ionic/{p-ccbc5737.entry.js → p-2b9a91c2.entry.js} +1 -1
  166. package/dist/ionic/{p-a8506291.entry.js → p-2c58164d.entry.js} +1 -1
  167. package/dist/ionic/{p-6d4f1c6e.entry.js → p-2d142503.entry.js} +1 -1
  168. package/dist/ionic/{p-930ec949.entry.js → p-3129a2c6.entry.js} +1 -1
  169. package/dist/ionic/{p-3628b1f7.entry.js → p-3a5bc7b1.entry.js} +1 -1
  170. package/dist/ionic/{p-b3485dee.entry.js → p-40e55257.entry.js} +1 -1
  171. package/dist/ionic/{p-841761ee.entry.js → p-45f3c7d9.entry.js} +1 -1
  172. package/dist/ionic/{p-6f5d9223.entry.js → p-46f82b82.entry.js} +1 -1
  173. package/dist/ionic/p-47ccb59d.entry.js +4 -0
  174. package/dist/ionic/{p-9d7d6758.entry.js → p-4bd5bd61.entry.js} +1 -1
  175. package/dist/ionic/{p-414f60f0.entry.js → p-52043361.entry.js} +1 -1
  176. package/dist/ionic/{p-8ca2b22c.entry.js → p-527660e0.entry.js} +1 -1
  177. package/dist/ionic/{p-2a2ab89d.entry.js → p-601f0d27.entry.js} +1 -1
  178. package/dist/ionic/{p-ddc1c497.entry.js → p-644759cb.entry.js} +1 -1
  179. package/dist/ionic/{p-c0634ff3.entry.js → p-657e9085.entry.js} +1 -1
  180. package/dist/ionic/{p-10f11601.entry.js → p-67178c9b.entry.js} +1 -1
  181. package/dist/ionic/{p-a1581941.entry.js → p-67b4c53d.entry.js} +1 -1
  182. package/dist/ionic/p-6cab60b7.entry.js +4 -0
  183. package/dist/ionic/{p-92aed080.entry.js → p-6ceef433.entry.js} +1 -1
  184. package/dist/ionic/{p-85d22d84.entry.js → p-6d8983d1.entry.js} +1 -1
  185. package/dist/ionic/{p-10e11b67.entry.js → p-79851759.entry.js} +1 -1
  186. package/dist/ionic/{p-d3ee5846.entry.js → p-7cdee842.entry.js} +1 -1
  187. package/dist/ionic/{p-52eca165.entry.js → p-7d026411.entry.js} +1 -1
  188. package/dist/ionic/{p-a3ec5708.entry.js → p-7d4b2506.entry.js} +1 -1
  189. package/dist/ionic/{p-fc3eb210.entry.js → p-8b6eb546.entry.js} +1 -1
  190. package/dist/ionic/{p-d7a76cd0.entry.js → p-8fc1959d.entry.js} +1 -1
  191. package/dist/ionic/{p-261e3a47.entry.js → p-9092b7fb.entry.js} +1 -1
  192. package/dist/ionic/{p-b8a159eb.entry.js → p-9cac4dc7.entry.js} +1 -1
  193. package/dist/ionic/{p-06d06c2f.entry.js → p-9fe56809.entry.js} +1 -1
  194. package/dist/ionic/{p-CeCT60rb.js → p-C-oNjncL.js} +1 -1
  195. package/dist/ionic/{p-B1sP_kPm.js → p-C-xl6pej.js} +1 -1
  196. package/dist/ionic/p-C5Aon1Kb.js +4 -0
  197. package/dist/ionic/{p-CdKu7oC9.js → p-Cg19OPuo.js} +1 -1
  198. package/dist/ionic/{p-CdWpy93z.js → p-CwbsDRzJ.js} +1 -1
  199. package/dist/ionic/p-D0SqsSaH.js +4 -0
  200. package/dist/ionic/p-DCi8BSH3.js +4 -0
  201. package/dist/ionic/{p-BTEIaRld.js → p-DGw3g412.js} +1 -1
  202. package/dist/ionic/{p-lw61HGQ-.js → p-DSMkBmnY.js} +1 -1
  203. package/dist/ionic/{p-B3UoCFcu.js → p-D_2UPtUV.js} +1 -1
  204. package/dist/ionic/{p-CiN6q3Lh.js → p-DonNC93r.js} +1 -1
  205. package/dist/ionic/p-EP3pwcdb.js +5 -0
  206. package/dist/ionic/{p-XWSYNdC9.js → p-HRylM0tf.js} +1 -1
  207. package/dist/ionic/{p-C3eOXAUO.js → p-RyPJq84W.js} +1 -1
  208. package/dist/ionic/{p-B8iLKNde.js → p-Uz6zKimy.js} +1 -1
  209. package/dist/ionic/{p-210385cd.entry.js → p-a5570370.entry.js} +1 -1
  210. package/dist/ionic/{p-2469206a.entry.js → p-a5ee3eb8.entry.js} +1 -1
  211. package/dist/ionic/{p-a951373a.entry.js → p-a92657fc.entry.js} +1 -1
  212. package/dist/ionic/{p-d6a3361a.entry.js → p-a9997b1b.entry.js} +1 -1
  213. package/dist/ionic/{p-d85dfc51.entry.js → p-b1f3c158.entry.js} +1 -1
  214. package/dist/ionic/{p-a1767652.entry.js → p-be19e061.entry.js} +1 -1
  215. package/dist/ionic/{p-49419ffd.entry.js → p-c5157026.entry.js} +1 -1
  216. package/dist/ionic/{p-bb3cf0f1.entry.js → p-c6e0f544.entry.js} +1 -1
  217. package/dist/ionic/{p-2f416d26.entry.js → p-e116bb40.entry.js} +1 -1
  218. package/dist/ionic/{p-75959e43.entry.js → p-e8526b09.entry.js} +1 -1
  219. package/dist/ionic/{p-dcf2e017.entry.js → p-f1f6326a.entry.js} +1 -1
  220. package/dist/ionic/{p-B61pJgh5.js → p-uzIBoXdl.js} +1 -1
  221. package/dist/types/components/datetime/datetime-interface.d.ts +1 -0
  222. package/dist/types/components/datetime/datetime.d.ts +6 -0
  223. package/dist/types/components/datetime/utils/data.d.ts +3 -1
  224. package/dist/types/components/datetime/utils/manipulation.d.ts +1 -0
  225. package/dist/types/components.d.ts +8 -0
  226. package/hydrate/index.js +143 -39
  227. package/hydrate/index.mjs +143 -39
  228. package/package.json +2 -2
  229. package/dist/ionic/p-3bd766ca.entry.js +0 -4
  230. package/dist/ionic/p-76878c5f.entry.js +0 -4
  231. package/dist/ionic/p-8e57bbf1.entry.js +0 -4
  232. package/dist/ionic/p-BwAZiDRk.js +0 -4
  233. package/dist/ionic/p-C5UXyyFe.js +0 -5
  234. package/dist/ionic/p-DYo1kLGy.js +0 -4
  235. package/dist/ionic/p-f9c55d46.entry.js +0 -4
  236. package/dist/ionic/p-zEz12j4K.js +0 -4
package/hydrate/index.js CHANGED
@@ -349,7 +349,7 @@ const initialize = (userConfig = {}) => {
349
349
  const globalScripts = initialize;
350
350
 
351
351
  /*
352
- Stencil Hydrate Platform v4.29.2 | MIT Licensed | https://stenciljs.com
352
+ Stencil Hydrate Platform v4.29.3 | MIT Licensed | https://stenciljs.com
353
353
  */
354
354
  var __defProp = Object.defineProperty;
355
355
  var __export = (target, all) => {
@@ -1288,7 +1288,15 @@ var _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/;
1288
1288
  var _shadowDOMSelectorsRe = [/::shadow/g, /::content/g];
1289
1289
  var _selectorReSuffix = "([>\\s~+[.,{:][\\s\\S]*)?$";
1290
1290
  var _polyfillHostRe = /-shadowcsshost/gim;
1291
- var createSupportsRuleRe = (selector) => new RegExp(`((?<!(^@supports(.*)))|(?<={.*))(${selector}\\b)`, "gim");
1291
+ var createSupportsRuleRe = (selector) => {
1292
+ const safeSelector2 = escapeRegExpSpecialCharacters(selector);
1293
+ return new RegExp(
1294
+ // First capture group: match any context before the selector that's not inside @supports selector()
1295
+ // Using negative lookahead to avoid matching inside @supports selector(...) condition
1296
+ `(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${safeSelector2}))(${safeSelector2}\\b)`,
1297
+ "g"
1298
+ );
1299
+ };
1292
1300
  var _colonSlottedRe = createSupportsRuleRe("::slotted");
1293
1301
  var _colonHostRe = createSupportsRuleRe(":host");
1294
1302
  var _colonHostContextRe = createSupportsRuleRe(":host-context");
@@ -1363,7 +1371,16 @@ var escapeBlocks = (input) => {
1363
1371
  return strEscapedBlocks;
1364
1372
  };
1365
1373
  var insertPolyfillHostInCssText = (cssText) => {
1374
+ const supportsBlocks = [];
1375
+ cssText = cssText.replace(/@supports\s+selector\s*\(\s*([^)]*)\s*\)/g, (_, selectorContent) => {
1376
+ const placeholder = `__supports_${supportsBlocks.length}__`;
1377
+ supportsBlocks.push(selectorContent);
1378
+ return `@supports selector(${placeholder})`;
1379
+ });
1366
1380
  cssText = cssText.replace(_colonHostContextRe, `$1${_polyfillHostContext}`).replace(_colonHostRe, `$1${_polyfillHost}`).replace(_colonSlottedRe, `$1${_polyfillSlotted}`);
1381
+ supportsBlocks.forEach((originalSelector, index) => {
1382
+ cssText = cssText.replace(`__supports_${index}__`, originalSelector);
1383
+ });
1367
1384
  return cssText;
1368
1385
  };
1369
1386
  var convertColonRule = (cssText, regExp, partReplacer) => {
@@ -11594,8 +11611,17 @@ const getDaysOfWeek = (locale, mode, firstDayOfWeek = 0) => {
11594
11611
  * the firstDayOfWeek value (Sunday by default)
11595
11612
  * using null values.
11596
11613
  */
11597
- const getDaysOfMonth = (month, year, firstDayOfWeek) => {
11614
+ const getDaysOfMonth = (month, year, firstDayOfWeek, showAdjacentDays = false) => {
11598
11615
  const numDays = getNumDaysInMonth(month, year);
11616
+ let previousNumDays; //previous month number of days
11617
+ if (month === 1) {
11618
+ // If the current month is January, the previous month should be December of the previous year.
11619
+ previousNumDays = getNumDaysInMonth(12, year - 1);
11620
+ }
11621
+ else {
11622
+ // Otherwise, the previous month should be the current month - 1 of the same year.
11623
+ previousNumDays = getNumDaysInMonth(month - 1, year);
11624
+ }
11599
11625
  const firstOfMonth = new Date(`${month}/1/${year}`).getDay();
11600
11626
  /**
11601
11627
  * To get the first day of the month aligned on the correct
@@ -11619,10 +11645,26 @@ const getDaysOfMonth = (month, year, firstDayOfWeek) => {
11619
11645
  const offset = firstOfMonth >= firstDayOfWeek ? firstOfMonth - (firstDayOfWeek + 1) : 6 - (firstDayOfWeek - firstOfMonth);
11620
11646
  let days = [];
11621
11647
  for (let i = 1; i <= numDays; i++) {
11622
- days.push({ day: i, dayOfWeek: (offset + i) % 7 });
11648
+ days.push({ day: i, dayOfWeek: (offset + i) % 7, isAdjacentDay: false });
11623
11649
  }
11624
- for (let i = 0; i <= offset; i++) {
11625
- days = [{ day: null, dayOfWeek: null }, ...days];
11650
+ if (showAdjacentDays) {
11651
+ for (let i = 0; i <= offset; i++) {
11652
+ // Using offset create previous month adjacent day, starting from last day
11653
+ days = [{ day: previousNumDays - i, dayOfWeek: (previousNumDays - i) % 7, isAdjacentDay: true }, ...days];
11654
+ }
11655
+ // Calculate positiveOffset
11656
+ // The calendar will display 42 days (6 rows of 7 columns)
11657
+ // Knowing this the offset is 41 (we start at index 0)
11658
+ // minus (the previous offset + the current month days)
11659
+ const positiveOffset = 41 - (numDays + offset);
11660
+ for (let i = 0; i < positiveOffset; i++) {
11661
+ days.push({ day: i + 1, dayOfWeek: (numDays + offset + i) % 7, isAdjacentDay: true });
11662
+ }
11663
+ }
11664
+ else {
11665
+ for (let i = 0; i <= offset; i++) {
11666
+ days = [{ day: null, dayOfWeek: null, isAdjacentDay: false }, ...days];
11667
+ }
11626
11668
  }
11627
11669
  return days;
11628
11670
  };
@@ -12228,9 +12270,9 @@ const checkForPresentationFormatMismatch = (el, presentation, formatOptions) =>
12228
12270
  }
12229
12271
  };
12230
12272
 
12231
- const datetimeIosCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled) .calendar-days-of-week,:host(.datetime-disabled) .datetime-time{opacity:0.4}:host(.datetime-readonly){pointer-events:none;}:host(.datetime-readonly) .calendar-action-buttons,:host(.datetime-readonly) .calendar-body,:host(.datetime-readonly) .datetime-year{pointer-events:initial}:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]{opacity:1}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.datetime-action-buttons .datetime-action-buttons-container{display:-ms-flexbox;display:flex}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-button{--background:transparent}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}.calendar-days-of-week .day-of-week{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}.calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle{color:var(--ion-color-base)}.calendar-month-year{min-width:0}.calendar-month-year-toggle{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}.calendar-month-year-toggle::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}.calendar-month-year-toggle.ion-focused::after{background:currentColor}.calendar-month-year-toggle:disabled{opacity:0.3;pointer-events:none}.calendar-month-year-toggle ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}.calendar-month-year-toggle #toggle-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}ion-picker{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}:host{--background:var(--ion-color-light, #f4f5f8);--background-rgb:var(--ion-color-light-rgb, 244, 245, 248);--title-color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),:host(.datetime-presentation-date:not(.datetime-prefer-wheel)){min-height:350px}:host .datetime-header{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #cccccc));font-size:min(0.875rem, 22.4px)}:host .datetime-header .datetime-title{color:var(--title-color)}:host .datetime-header .datetime-selected-date{margin-top:10px}.calendar-month-year-toggle{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-height:44px;font-size:min(1rem, 25.6px);font-weight:600}.calendar-month-year-toggle.ion-focused::after{opacity:0.15}.calendar-month-year-toggle #toggle-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,:host .calendar-action-buttons ion-buttons ion-button{color:var(--ion-color-base)}:host .calendar-action-buttons ion-buttons{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}:host .calendar-action-buttons ion-buttons ion-button{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}:host .calendar-days-of-week{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, var(--ion-text-color-step-700, #b3b3b3));font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){.calendar-days-of-week .day-of-week{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}.calendar-day{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){.calendar-days-of-week .day-of-week{width:auto;height:auto;overflow:initial}.calendar-day{border-radius:32px}}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}:host .calendar-day-wrapper{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}:host .calendar-day{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}.calendar-day.calendar-day-active{background:rgba(var(--ion-color-base-rgb), 0.2);font-size:min(1.375rem, 35.2px)}:host .calendar-day.calendar-day-today{color:var(--ion-color-base)}:host .calendar-day.calendar-day-active{color:var(--ion-color-base);font-weight:600}:host .calendar-day.calendar-day-today.calendar-day-active{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}:host .datetime-time .time-header{font-weight:600}:host .datetime-buttons{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #cccccc))}:host .datetime-buttons ::slotted(ion-buttons),:host .datetime-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}:host .datetime-action-buttons{width:100%}";
12273
+ const datetimeIosCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled) .calendar-days-of-week,:host(.datetime-disabled) .datetime-time{opacity:0.4}:host(.datetime-readonly){pointer-events:none;}:host(.datetime-readonly) .calendar-action-buttons,:host(.datetime-readonly) .calendar-body,:host(.datetime-readonly) .datetime-year{pointer-events:initial}:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]{opacity:1}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.datetime-action-buttons .datetime-action-buttons-container{display:-ms-flexbox;display:flex}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-button{--background:transparent}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}.calendar-days-of-week .day-of-week{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}.calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:not(.calendar-day-adjacent-day):focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle{color:var(--ion-color-base)}.calendar-month-year{min-width:0}.calendar-month-year-toggle{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}.calendar-month-year-toggle::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}.calendar-month-year-toggle.ion-focused::after{background:currentColor}.calendar-month-year-toggle:disabled{opacity:0.3;pointer-events:none}.calendar-month-year-toggle ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}.calendar-month-year-toggle #toggle-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}ion-picker{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}:host{--background:var(--ion-color-light, #f4f5f8);--background-rgb:var(--ion-color-light-rgb, 244, 245, 248);--title-color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),:host(.datetime-presentation-date:not(.datetime-prefer-wheel)){min-height:350px}:host .datetime-header{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #cccccc));font-size:min(0.875rem, 22.4px)}:host .datetime-header .datetime-title{color:var(--title-color)}:host .datetime-header .datetime-selected-date{margin-top:10px}.calendar-month-year-toggle{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-height:44px;font-size:min(1rem, 25.6px);font-weight:600}.calendar-month-year-toggle.ion-focused::after{opacity:0.15}.calendar-month-year-toggle #toggle-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,:host .calendar-action-buttons ion-buttons ion-button{color:var(--ion-color-base)}:host .calendar-action-buttons ion-buttons{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}:host .calendar-action-buttons ion-buttons ion-button{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}:host .calendar-days-of-week{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, var(--ion-text-color-step-700, #b3b3b3));font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){.calendar-days-of-week .day-of-week{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}.calendar-day{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){.calendar-days-of-week .day-of-week{width:auto;height:auto;overflow:initial}.calendar-day{border-radius:32px}}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}:host .calendar-day-wrapper{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}:host .calendar-day{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}.calendar-day.calendar-day-active{background:rgba(var(--ion-color-base-rgb), 0.2);font-size:min(1.375rem, 35.2px)}:host .calendar-day.calendar-day-today{color:var(--ion-color-base)}:host .calendar-day.calendar-day-active,:host .calendar-day.calendar-day-adjacent-day.calendar-day-active{color:var(--ion-color-base);font-weight:600}:host .calendar-day.calendar-day-today.calendar-day-active{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host .calendar-day.calendar-day-adjacent-day{color:var(--ion-color-step-300, var(--ion-text-color-step-700, #b3b3b3))}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}:host .datetime-time .time-header{font-weight:600}:host .datetime-buttons{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #cccccc))}:host .datetime-buttons ::slotted(ion-buttons),:host .datetime-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}:host .datetime-action-buttons{width:100%}";
12232
12274
 
12233
- const datetimeMdCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled) .calendar-days-of-week,:host(.datetime-disabled) .datetime-time{opacity:0.4}:host(.datetime-readonly){pointer-events:none;}:host(.datetime-readonly) .calendar-action-buttons,:host(.datetime-readonly) .calendar-body,:host(.datetime-readonly) .datetime-year{pointer-events:initial}:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]{opacity:1}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.datetime-action-buttons .datetime-action-buttons-container{display:-ms-flexbox;display:flex}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-button{--background:transparent}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}.calendar-days-of-week .day-of-week{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}.calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle{color:var(--ion-color-base)}.calendar-month-year{min-width:0}.calendar-month-year-toggle{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}.calendar-month-year-toggle::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}.calendar-month-year-toggle.ion-focused::after{background:currentColor}.calendar-month-year-toggle:disabled{opacity:0.3;pointer-events:none}.calendar-month-year-toggle ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}.calendar-month-year-toggle #toggle-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}ion-picker{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}:host{--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #ffffff));--title-color:var(--ion-color-contrast)}:host .datetime-header{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}:host .datetime-header .datetime-title{font-size:0.75rem;text-transform:uppercase}:host .datetime-header .datetime-selected-date{margin-top:30px;font-size:2.125rem}:host .calendar-action-buttons ion-button{--color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}.calendar-month-year-toggle{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;min-height:48px;background:transparent;color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959));z-index:1}.calendar-month-year-toggle.ion-focused::after{opacity:0.04}.calendar-month-year-toggle ion-ripple-effect{color:currentColor}@media (any-hover: hover){.calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after{background:currentColor;opacity:0.04}}:host .calendar-days-of-week{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray));font-size:0.875rem;line-height:36px}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}:host .calendar-day{width:42px;min-width:42px;height:42px;font-size:0.875rem}:host .calendar-day.calendar-day-today{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}:host .calendar-day.calendar-day-active{color:var(--ion-color-contrast)}.calendar-day.calendar-day-active{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}:host .time-header{color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}:host(.datetime-presentation-month) .datetime-year,:host(.datetime-presentation-year) .datetime-year,:host(.datetime-presentation-month-year) .datetime-year{margin-top:20px;margin-bottom:20px}:host .datetime-buttons{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
12275
+ const datetimeMdCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}:host(.datetime-size-fixed){width:auto;height:auto}:host(.datetime-size-fixed:not(.datetime-prefer-wheel)){max-width:350px}:host(.datetime-size-fixed.datetime-prefer-wheel){min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}:host(.datetime-size-cover){width:100%}:host .calendar-body,:host .datetime-year{opacity:0}:host(:not(.datetime-ready)) .datetime-year{position:absolute;pointer-events:none}:host(.datetime-ready) .calendar-body{opacity:1}:host(.datetime-ready) .datetime-year{display:none;opacity:1}:host .wheel-order-year-first .day-column{-ms-flex-order:3;order:3;text-align:end}:host .wheel-order-year-first .month-column{-ms-flex-order:2;order:2;text-align:end}:host .wheel-order-year-first .year-column{-ms-flex-order:1;order:1;text-align:start}:host .datetime-calendar,:host .datetime-year{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}:host(.show-month-and-year) .datetime-year{display:-ms-flexbox;display:flex}:host(.show-month-and-year) .calendar-next-prev,:host(.show-month-and-year) .calendar-days-of-week,:host(.show-month-and-year) .calendar-body,:host(.show-month-and-year) .datetime-time{display:none}:host(.month-year-picker-open) .datetime-footer{display:none}:host(.datetime-disabled){pointer-events:none}:host(.datetime-disabled) .calendar-days-of-week,:host(.datetime-disabled) .datetime-time{opacity:0.4}:host(.datetime-readonly){pointer-events:none;}:host(.datetime-readonly) .calendar-action-buttons,:host(.datetime-readonly) .calendar-body,:host(.datetime-readonly) .datetime-year{pointer-events:initial}:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]{opacity:1}:host .datetime-header .datetime-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}:host .datetime-action-buttons.has-clear-button{width:100%}:host .datetime-action-buttons ion-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.datetime-action-buttons .datetime-action-buttons-container{display:-ms-flexbox;display:flex}:host .calendar-action-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host .calendar-action-buttons ion-button{--background:transparent}:host .calendar-days-of-week{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}.calendar-days-of-week .day-of-week{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}:host .calendar-body{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}:host .calendar-body .calendar-month{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}:host .calendar-body .calendar-month-disabled{scroll-snap-align:none}:host .calendar-body::-webkit-scrollbar{display:none}:host .calendar-body .calendar-month-grid{display:grid;grid-template-columns:repeat(7, 1fr)}:host .calendar-day-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}.calendar-day{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}:host .calendar-day[disabled]{pointer-events:none;opacity:0.4}.calendar-day:not(.calendar-day-adjacent-day):focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}:host .datetime-time{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host(.datetime-presentation-time) .datetime-time{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host ion-popover{--height:200px}:host .time-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}:host .time-body{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}:host .time-body-active{color:var(--ion-color-base)}:host(.in-item){position:static}:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle{color:var(--ion-color-base)}.calendar-month-year{min-width:0}.calendar-month-year-toggle{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}.calendar-month-year-toggle::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}.calendar-month-year-toggle.ion-focused::after{background:currentColor}.calendar-month-year-toggle:disabled{opacity:0.3;pointer-events:none}.calendar-month-year-toggle ion-icon{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}.calendar-month-year-toggle #toggle-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}ion-picker{--highlight-background:var(--wheel-highlight-background);--highlight-border-radius:var(--wheel-highlight-border-radius);--fade-background-rgb:var(--wheel-fade-background-rgb)}:host{--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #ffffff));--title-color:var(--ion-color-contrast)}:host .datetime-header{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}:host .datetime-header .datetime-title{font-size:0.75rem;text-transform:uppercase}:host .datetime-header .datetime-selected-date{margin-top:30px;font-size:2.125rem}:host .calendar-action-buttons ion-button{--color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}.calendar-month-year-toggle{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;min-height:48px;background:transparent;color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959));z-index:1}.calendar-month-year-toggle.ion-focused::after{opacity:0.04}.calendar-month-year-toggle ion-ripple-effect{color:currentColor}@media (any-hover: hover){.calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after{background:currentColor;opacity:0.04}}:host .calendar-days-of-week{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray));font-size:0.875rem;line-height:36px}:host .calendar-body .calendar-month .calendar-month-grid{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}:host .calendar-day{width:42px;min-width:42px;height:42px;font-size:0.875rem}:host .calendar-day.calendar-day-today{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}:host .calendar-day.calendar-day-active,:host .calendar-day.calendar-day-adjacent-day.calendar-day-active{color:var(--ion-color-contrast)}.calendar-day.calendar-day-active,.calendar-day.calendar-day-active:focus{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}:host .calendar-day.calendar-day-adjacent-day{color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host .datetime-time{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}:host .time-header{color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}:host(.datetime-presentation-month) .datetime-year,:host(.datetime-presentation-year) .datetime-year,:host(.datetime-presentation-month-year) .datetime-year{margin-top:20px;margin-bottom:20px}:host .datetime-buttons{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
12234
12276
 
12235
12277
  /**
12236
12278
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
@@ -12277,6 +12319,7 @@ class Datetime {
12277
12319
  hour: 13,
12278
12320
  minute: 52,
12279
12321
  ampm: 'pm',
12322
+ isAdjacentDay: false,
12280
12323
  };
12281
12324
  this.isTimePopoverOpen = false;
12282
12325
  /**
@@ -12297,6 +12340,12 @@ class Datetime {
12297
12340
  * If `true`, the datetime appears normal but the selected date cannot be changed.
12298
12341
  */
12299
12342
  this.readonly = false;
12343
+ /**
12344
+ * If `true`, the datetime calendar displays a six-week (42-day) layout,
12345
+ * including days from the previous and next months to fill the grid.
12346
+ * These adjacent days are selectable unless disabled.
12347
+ */
12348
+ this.showAdjacentDays = false;
12300
12349
  /**
12301
12350
  * Which values you want to select. `"date"` will show
12302
12351
  * a calendar picker to select the month, day, and year. `"time"`
@@ -12579,12 +12628,15 @@ class Datetime {
12579
12628
  };
12580
12629
  this.focusWorkingDay = (currentMonth) => {
12581
12630
  /**
12582
- * Get the number of padding days so
12631
+ * Get the number of offset days so
12583
12632
  * we know how much to offset our next selector by
12584
12633
  * to grab the correct calendar-day element.
12585
12634
  */
12586
- const padding = currentMonth.querySelectorAll('.calendar-day-padding');
12587
- const { day } = this.workingParts;
12635
+ const { day, month, year } = this.workingParts;
12636
+ const firstOfMonth = new Date(`${month}/1/${year}`).getDay();
12637
+ const offset = firstOfMonth >= this.firstDayOfWeek
12638
+ ? firstOfMonth - this.firstDayOfWeek
12639
+ : 7 - (this.firstDayOfWeek - firstOfMonth);
12588
12640
  if (day === null) {
12589
12641
  return;
12590
12642
  }
@@ -12592,7 +12644,7 @@ class Datetime {
12592
12644
  * Get the calendar day element
12593
12645
  * and focus it.
12594
12646
  */
12595
- const dayEl = currentMonth.querySelector(`.calendar-day-wrapper:nth-of-type(${padding.length + day}) .calendar-day`);
12647
+ const dayEl = currentMonth.querySelector(`.calendar-day-wrapper:nth-of-type(${offset + day}) .calendar-day`);
12596
12648
  if (dayEl) {
12597
12649
  dayEl.focus();
12598
12650
  }
@@ -13606,10 +13658,36 @@ class Datetime {
13606
13658
  'calendar-month': true,
13607
13659
  // Prevents scroll snap swipe gestures for months outside of the min/max bounds
13608
13660
  'calendar-month-disabled': !isWorkingMonth && swipeDisabled,
13609
- } }, hAsync("div", { class: "calendar-month-grid" }, getDaysOfMonth(month, year, this.firstDayOfWeek % 7).map((dateObject, index) => {
13610
- const { day, dayOfWeek } = dateObject;
13611
- const { el, highlightedDates, isDateEnabled, multiple } = this;
13612
- const referenceParts = { month, day, year };
13661
+ } }, hAsync("div", { class: "calendar-month-grid" }, getDaysOfMonth(month, year, this.firstDayOfWeek % 7, this.showAdjacentDays).map((dateObject, index) => {
13662
+ const { day, dayOfWeek, isAdjacentDay } = dateObject;
13663
+ const { el, highlightedDates, isDateEnabled, multiple, showAdjacentDays } = this;
13664
+ let _month = month;
13665
+ let _year = year;
13666
+ if (showAdjacentDays && isAdjacentDay && day !== null) {
13667
+ if (day > 20) {
13668
+ // Leading with the adjacent day from the previous month
13669
+ // if its a adjacent day and is higher than '20' (last week even in feb)
13670
+ if (month === 1) {
13671
+ _year = year - 1;
13672
+ _month = 12;
13673
+ }
13674
+ else {
13675
+ _month = month - 1;
13676
+ }
13677
+ }
13678
+ else if (day < 15) {
13679
+ // Leading with the adjacent day from the next month
13680
+ // if its a adjacent day and is lower than '15' (first two weeks)
13681
+ if (month === 12) {
13682
+ _year = year + 1;
13683
+ _month = 1;
13684
+ }
13685
+ else {
13686
+ _month = month + 1;
13687
+ }
13688
+ }
13689
+ }
13690
+ const referenceParts = { month: _month, day, year: _year, isAdjacentDay };
13613
13691
  const isCalendarPadding = day === null;
13614
13692
  const { isActive, isToday, ariaLabel, ariaSelected, disabled: isDayDisabled, text, } = getCalendarDayState(this.locale, referenceParts, this.activeParts, this.todayParts, this.minParts, this.maxParts, this.parsedDayValues);
13615
13693
  const dateIsoString = convertDataToISO(referenceParts);
@@ -13639,15 +13717,18 @@ class Datetime {
13639
13717
  * Custom highlight styles should not override the style for selected dates,
13640
13718
  * nor apply to "filler days" at the start of the grid.
13641
13719
  */
13642
- if (highlightedDates !== undefined && !isActive && day !== null) {
13720
+ if (highlightedDates !== undefined && !isActive && day !== null && !isAdjacentDay) {
13643
13721
  dateStyle = getHighlightStyles(highlightedDates, dateIsoString, el);
13644
13722
  }
13645
13723
  let dateParts = undefined;
13646
13724
  // "Filler days" at the beginning of the grid should not get the calendar day
13647
13725
  // CSS parts added to them
13648
- if (!isCalendarPadding) {
13726
+ if (!isCalendarPadding && !isAdjacentDay) {
13649
13727
  dateParts = `calendar-day${isActive ? ' active' : ''}${isToday ? ' today' : ''}${isCalDayDisabled ? ' disabled' : ''}`;
13650
13728
  }
13729
+ else if (isAdjacentDay) {
13730
+ dateParts = `calendar-day${isCalDayDisabled ? ' disabled' : ''}`;
13731
+ }
13651
13732
  return (hAsync("div", { class: "calendar-day-wrapper" }, hAsync("button", {
13652
13733
  // We need to use !important for the inline styles here because
13653
13734
  // otherwise the CSS shadow parts will override these styles.
@@ -13660,31 +13741,33 @@ class Datetime {
13660
13741
  el.style.setProperty('color', `${dateStyle ? dateStyle.textColor : ''}`, 'important');
13661
13742
  el.style.setProperty('background-color', `${dateStyle ? dateStyle.backgroundColor : ''}`, 'important');
13662
13743
  }
13663
- }, tabindex: "-1", "data-day": day, "data-month": month, "data-year": year, "data-index": index, "data-day-of-week": dayOfWeek, disabled: isButtonDisabled, class: {
13744
+ }, tabindex: "-1", "data-day": day, "data-month": _month, "data-year": _year, "data-index": index, "data-day-of-week": dayOfWeek, disabled: isButtonDisabled, class: {
13664
13745
  'calendar-day-padding': isCalendarPadding,
13665
13746
  'calendar-day': true,
13666
13747
  'calendar-day-active': isActive,
13667
13748
  'calendar-day-constrained': isCalDayConstrained,
13668
13749
  'calendar-day-today': isToday,
13750
+ 'calendar-day-adjacent-day': isAdjacentDay,
13669
13751
  }, part: dateParts, "aria-hidden": isCalendarPadding ? 'true' : null, "aria-selected": ariaSelected, "aria-label": ariaLabel, onClick: () => {
13670
13752
  if (isCalendarPadding) {
13671
13753
  return;
13672
13754
  }
13673
- this.setWorkingParts(Object.assign(Object.assign({}, this.workingParts), { month,
13674
- day,
13675
- year }));
13676
- // multiple only needs date info, so we can wipe out other fields like time
13677
- if (multiple) {
13678
- this.setActiveParts({
13679
- month,
13680
- day,
13681
- year,
13682
- }, isActive);
13755
+ if (isAdjacentDay) {
13756
+ // The user selected a day outside the current month. Ignore this button, as the month will be re-rendered.
13757
+ this.el.blur();
13758
+ this.activeParts = Object.assign(Object.assign({}, activePart), referenceParts);
13759
+ this.animateToDate(referenceParts);
13760
+ this.confirm();
13683
13761
  }
13684
13762
  else {
13685
- this.setActiveParts(Object.assign(Object.assign({}, activePart), { month,
13686
- day,
13687
- year }));
13763
+ this.setWorkingParts(Object.assign(Object.assign({}, this.workingParts), referenceParts));
13764
+ // Multiple only needs date info so we can wipe out other fields like time.
13765
+ if (multiple) {
13766
+ this.setActiveParts(referenceParts, isActive);
13767
+ }
13768
+ else {
13769
+ this.setActiveParts(Object.assign(Object.assign({}, activePart), referenceParts));
13770
+ }
13688
13771
  }
13689
13772
  }
13690
13773
  }, text)));
@@ -13855,7 +13938,7 @@ class Datetime {
13855
13938
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
13856
13939
  const hasWheelVariant = hasDatePresentation && preferWheel;
13857
13940
  renderHiddenInput(true, el, name, formatValue(value), disabled);
13858
- return (hAsync(Host, { key: '08d429533a09c600b936ad1e022658051c765595', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
13941
+ return (hAsync(Host, { key: 'aa9d515bd5fda60f924bbed4f4f1c6fa7244a4a2', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
13859
13942
  [mode]: true,
13860
13943
  ['datetime-readonly']: readonly,
13861
13944
  ['datetime-disabled']: disabled,
@@ -13865,7 +13948,7 @@ class Datetime {
13865
13948
  [`datetime-size-${size}`]: true,
13866
13949
  [`datetime-prefer-wheel`]: hasWheelVariant,
13867
13950
  [`datetime-grid`]: isGridStyle,
13868
- })) }, hAsync("div", { key: 'f4ff0fcd1e059767a7ef14fcc76ebfd55d23a97b', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
13951
+ })) }, hAsync("div", { key: 'c85a22ea1b64ec5bf28e4d4c1567d72b6b8ce630', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
13869
13952
  }
13870
13953
  get el() { return getElement(this); }
13871
13954
  static get watchers() { return {
@@ -13895,6 +13978,7 @@ class Datetime {
13895
13978
  "formatOptions": [16, "format-options"],
13896
13979
  "readonly": [4],
13897
13980
  "isDateEnabled": [16, "is-date-enabled"],
13981
+ "showAdjacentDays": [4, "show-adjacent-days"],
13898
13982
  "min": [1025],
13899
13983
  "max": [1025],
13900
13984
  "presentation": [1],
@@ -34851,12 +34935,19 @@ class Toggle {
34851
34935
  }
34852
34936
  };
34853
34937
  this.onClick = (ev) => {
34938
+ /**
34939
+ * The haptics for the toggle on tap is
34940
+ * an iOS-only feature. As such, it should
34941
+ * only trigger on iOS.
34942
+ */
34943
+ const enableHaptics = isPlatform('ios');
34854
34944
  if (this.disabled) {
34855
34945
  return;
34856
34946
  }
34857
34947
  ev.preventDefault();
34858
34948
  if (this.lastDrag + 300 < Date.now()) {
34859
34949
  this.toggleChecked();
34950
+ enableHaptics && hapticSelection();
34860
34951
  }
34861
34952
  };
34862
34953
  this.onFocus = () => {
@@ -34984,7 +35075,7 @@ class Toggle {
34984
35075
  const value = this.getValue();
34985
35076
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
34986
35077
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
34987
- return (hAsync(Host, { key: 'c6db7f5bc0b358944c0d79e24aeb4d319793422f', "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, onClick: this.onClick, class: createColorClasses$1(color, {
35078
+ return (hAsync(Host, { key: '4aaa06d203551c3044e9917ea0c4e5d293bf97bc', "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, onClick: this.onClick, class: createColorClasses$1(color, {
34988
35079
  [mode]: true,
34989
35080
  'in-item': hostContext('ion-item', el),
34990
35081
  'toggle-activated': activated,
@@ -34994,10 +35085,10 @@ class Toggle {
34994
35085
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
34995
35086
  [`toggle-label-placement-${labelPlacement}`]: true,
34996
35087
  [`toggle-${rtl}`]: true,
34997
- }) }, hAsync("label", { key: 'f49531391f4513d084061c27ebc4c4eb1dcd02ab', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: 'f4ab2dc29eae053f54613d1304f755e151037f47', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, this.inheritedAttributes)), hAsync("div", { key: '85674bfab5ec1e422c787d025c4f9f5b3aadd4f2', class: {
35088
+ }) }, hAsync("label", { key: 'c8474c9c44ec6130e6380791b74c2b6ce1c0f9e4', class: "toggle-wrapper" }, hAsync("input", Object.assign({ key: '6f9ba22ffeb1660e4238a98bdbb8dc4bcce3f229', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, this.inheritedAttributes)), hAsync("div", { key: '6e980fae20ae17e3c879c555155a16a974726527', class: {
34998
35089
  'label-text-wrapper': true,
34999
35090
  'label-text-wrapper-hidden': !this.hasLabel,
35000
- }, part: "label" }, hAsync("slot", { key: '9bdf7e85c95dc7373f18894ebfe6ad022f098107' }), this.renderHintText()), hAsync("div", { key: '33883642b38421a82001e37db3dd5e5c643785b0', class: "native-wrapper" }, this.renderToggleControl()))));
35091
+ }, part: "label" }, hAsync("slot", { key: '2a5bc3c46ca0983c86bd1b7497f153c389e6d01f' }), this.renderHintText()), hAsync("div", { key: '3e99e2ba44cb2bade251f723e78165e21261598c', class: "native-wrapper" }, this.renderToggleControl()))));
35001
35092
  }
35002
35093
  get el() { return getElement(this); }
35003
35094
  static get watchers() { return {
@@ -36179,7 +36270,7 @@ var NAMESPACE = (
36179
36270
  );
36180
36271
 
36181
36272
  /*
36182
- Stencil Hydrate Runner v4.29.2 | MIT Licensed | https://stenciljs.com
36273
+ Stencil Hydrate Runner v4.29.3 | MIT Licensed | https://stenciljs.com
36183
36274
  */
36184
36275
  var __defProp = Object.defineProperty;
36185
36276
  var __export = (target, all) => {
@@ -50563,6 +50654,11 @@ var shouldIgnoreError = (msg) => {
50563
50654
  };
50564
50655
  var TASK_CANCELED_MSG = `task canceled`;
50565
50656
 
50657
+ // src/utils/regular-expression.ts
50658
+ var escapeRegExpSpecialCharacters = (text) => {
50659
+ return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
50660
+ };
50661
+
50566
50662
  // src/utils/remote-value.ts
50567
50663
  var RemoteValue = class _RemoteValue {
50568
50664
  /**
@@ -50756,7 +50852,15 @@ var _cssColonHostRe = new RegExp("(" + _polyfillHost + _parenSuffix, "gim");
50756
50852
  var _cssColonHostContextRe = new RegExp("(" + _polyfillHostContext + _parenSuffix, "gim");
50757
50853
  var _cssColonSlottedRe = new RegExp("(" + _polyfillSlotted + _parenSuffix, "gim");
50758
50854
  var _polyfillHostNoCombinator = _polyfillHost + "-no-combinator";
50759
- var createSupportsRuleRe = (selector) => new RegExp(`((?<!(^@supports(.*)))|(?<={.*))(${selector}\\b)`, "gim");
50855
+ var createSupportsRuleRe = (selector) => {
50856
+ const safeSelector = escapeRegExpSpecialCharacters(selector);
50857
+ return new RegExp(
50858
+ // First capture group: match any context before the selector that's not inside @supports selector()
50859
+ // Using negative lookahead to avoid matching inside @supports selector(...) condition
50860
+ `(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${safeSelector}))(${safeSelector}\\b)`,
50861
+ "g"
50862
+ );
50863
+ };
50760
50864
  var _colonSlottedRe = createSupportsRuleRe("::slotted");
50761
50865
  var _colonHostRe = createSupportsRuleRe(":host");
50762
50866
  var _colonHostContextRe = createSupportsRuleRe(":host-context");