@ionic/core 9.0.11-dev.11793889755.165fa328 → 9.0.11-dev.11793900758.1bf6a6e5

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 (42) hide show
  1. package/components/ion-accordion.js +1 -1
  2. package/components/ion-datetime-button.js +1 -1
  3. package/components/ion-datetime.js +1 -1
  4. package/components/{p-BCQSEpww.js → p-B7ExaLVL.js} +1 -1
  5. package/css/ionic/bundle.ionic.css +1 -1
  6. package/css/ionic/bundle.ionic.css.map +1 -1
  7. package/css/ionic/core.ionic.css +1 -1
  8. package/css/ionic/core.ionic.css.map +1 -1
  9. package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-datetime-button.cjs.entry.js +33 -6
  11. package/dist/cjs/ion-datetime.cjs.entry.js +339 -37
  12. package/dist/cjs/ionic.cjs.js +1 -1
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/collection/components/accordion/accordion.ionic.css +11 -6
  15. package/dist/collection/components/datetime/datetime.ionic.css +211 -5
  16. package/dist/collection/components/datetime/datetime.ios.css +164 -0
  17. package/dist/collection/components/datetime/datetime.js +394 -36
  18. package/dist/collection/components/datetime/datetime.md.css +152 -0
  19. package/dist/collection/components/datetime/utils/state.js +18 -1
  20. package/dist/collection/components/datetime-button/datetime-button.js +34 -6
  21. package/dist/docs.json +153 -3
  22. package/dist/esm/{format-NT7iHsbA.js → format-DUHrIiJq.js} +1 -1
  23. package/dist/esm/ion-accordion_2.entry.js +1 -1
  24. package/dist/esm/ion-datetime-button.entry.js +34 -7
  25. package/dist/esm/ion-datetime.entry.js +340 -38
  26. package/dist/esm/ionic.js +1 -1
  27. package/dist/esm/loader.js +1 -1
  28. package/dist/html.html-data.json +21 -1
  29. package/dist/ionic/ionic.esm.js +1 -1
  30. package/dist/ionic/{p-0f694e87.entry.js → p-8b107444.entry.js} +1 -1
  31. package/dist/ionic/{p-BtccSO5J.js → p-CaOPF8Xt.js} +1 -1
  32. package/dist/ionic/p-ceca04fb.entry.js +4 -0
  33. package/dist/ionic/p-ec99dc1f.entry.js +4 -0
  34. package/dist/types/components/datetime/datetime-interface.d.ts +4 -0
  35. package/dist/types/components/datetime/datetime.d.ts +73 -6
  36. package/dist/types/components/datetime/utils/state.d.ts +5 -2
  37. package/dist/types/components.d.ts +37 -4
  38. package/hydrate/index.js +381 -44
  39. package/hydrate/index.mjs +381 -44
  40. package/package.json +1 -1
  41. package/dist/ionic/p-0743a26a.entry.js +0 -4
  42. package/dist/ionic/p-ad46d2fd.entry.js +0 -4
@@ -5,7 +5,7 @@ import { r as registerInstance, c as printIonError, h, f as Host, g as getElemen
5
5
  import { f as addEventListener, c as componentOnReady } from './helpers-B_F2b1gy.js';
6
6
  import { c as createColorClasses } from './theme-BUF_V-Kg.js';
7
7
  import { c as getIonTheme } from './ionic-global-DSbFWXp3.js';
8
- import { D as parseDate, d as getHourCycle, P as getLocalizedDateTime, O as getLocalizedTime } from './format-NT7iHsbA.js';
8
+ import { E as parseDate, d as getHourCycle, P as getLocalizedDateTime, O as getLocalizedTime, l as isAfter } from './format-DUHrIiJq.js';
9
9
  import './index-ZjP4CjeZ.js';
10
10
  import './focus-visible-BYk20Mf5.js';
11
11
  import './dir-Dj4J3LkD.js';
@@ -52,7 +52,7 @@ const DatetimeButton = class {
52
52
  if (!datetimeEl) {
53
53
  return;
54
54
  }
55
- const { value, locale, formatOptions, hourCycle, preferWheel, multiple, titleSelectedDatesFormatter } = datetimeEl;
55
+ const { value, locale, formatOptions, hourCycle, preferWheel, multiple, selectionMode, titleSelectedDatesFormatter, } = datetimeEl;
56
56
  const parsedValues = this.getParsedDateValues(value);
57
57
  /**
58
58
  * Both ion-datetime and ion-datetime-button default to today's date and
@@ -64,6 +64,8 @@ const DatetimeButton = class {
64
64
  if (!parsedDatetimes) {
65
65
  return;
66
66
  }
67
+ const isRangeMode = selectionMode === 'range';
68
+ const isMultipleMode = selectionMode === 'multiple' || (selectionMode === undefined && multiple);
67
69
  /**
68
70
  * If developers incorrectly use multiple="true"
69
71
  * with non "date" datetimes, then just select
@@ -73,11 +75,12 @@ const DatetimeButton = class {
73
75
  */
74
76
  const firstParsedDatetime = parsedDatetimes[0];
75
77
  const computedHourCycle = getHourCycle(locale, hourCycle);
78
+ const dateFormatOptions = formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' };
76
79
  this.dateText = this.timeText = undefined;
77
80
  switch (datetimePresentation) {
78
81
  case 'date-time':
79
82
  case 'time-date':
80
- const dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' });
83
+ const dateText = getLocalizedDateTime(locale, firstParsedDatetime, dateFormatOptions);
81
84
  const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions?.time);
82
85
  if (preferWheel) {
83
86
  this.dateText = `${dateText} ${timeText}`;
@@ -88,7 +91,31 @@ const DatetimeButton = class {
88
91
  }
89
92
  break;
90
93
  case 'date':
91
- if (multiple && parsedValues.length !== 1) {
94
+ if (isRangeMode && parsedValues.length >= 2) {
95
+ /**
96
+ * Use the first and last entries in date order, matching
97
+ * how ion-datetime reads a range value.
98
+ */
99
+ let startIndex = 0;
100
+ let endIndex = parsedValues.length - 1;
101
+ if (isAfter(parsedDatetimes[startIndex], parsedDatetimes[endIndex])) {
102
+ [startIndex, endIndex] = [endIndex, startIndex];
103
+ }
104
+ const rangeValues = [parsedValues[startIndex], parsedValues[endIndex]];
105
+ const startDate = getLocalizedDateTime(locale, parsedDatetimes[startIndex], dateFormatOptions);
106
+ const endDate = getLocalizedDateTime(locale, parsedDatetimes[endIndex], dateFormatOptions);
107
+ let rangeText = `${startDate} - ${endDate}`;
108
+ if (titleSelectedDatesFormatter !== undefined) {
109
+ try {
110
+ rangeText = titleSelectedDatesFormatter(rangeValues);
111
+ }
112
+ catch (e) {
113
+ printIonError('[ion-datetime-button] - Exception in provided `titleSelectedDatesFormatter`:', e);
114
+ }
115
+ }
116
+ this.dateText = rangeText;
117
+ }
118
+ else if (isMultipleMode && parsedValues.length !== 1) {
92
119
  let headerText = `${parsedValues.length} days`; // default/fallback for multiple selection
93
120
  if (titleSelectedDatesFormatter !== undefined) {
94
121
  try {
@@ -101,7 +128,7 @@ const DatetimeButton = class {
101
128
  this.dateText = headerText;
102
129
  }
103
130
  else {
104
- this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' });
131
+ this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, dateFormatOptions);
105
132
  }
106
133
  break;
107
134
  case 'time':
@@ -338,11 +365,11 @@ const DatetimeButton = class {
338
365
  render() {
339
366
  const { color, dateText, timeText, selectedButton, datetimeActive, disabled } = this;
340
367
  const theme = getIonTheme(this);
341
- return (h(Host, { key: '73ba9456313d46e63db37c48b23b38e8e1f88ec6', class: createColorClasses(color, {
368
+ return (h(Host, { key: 'e022c5c280d4f889c1ba7ca3e96b38063c5add30', class: createColorClasses(color, {
342
369
  [theme]: true,
343
370
  [`${selectedButton}-active`]: datetimeActive,
344
371
  ['datetime-button-disabled']: disabled,
345
- }) }, dateText && (h("button", { key: '51f70f2d08823ccd399976c09152c278e0ef108e', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, h("slot", { key: '8422d6ca39d3bdecbefe6686afb9c2bcdb271a54', name: "date-target" }, dateText), theme === 'md' && h("ion-ripple-effect", { key: 'f4c1c9c6bcdf772eb326371b9ab3795f7fbc0848' }))), timeText && (h("button", { key: '709a8bc9d0231bfc3c580bcca9065ccc66f4b7da', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, h("slot", { key: '2860f54f5a73aa3a42397a1a72619d6369a79025', name: "time-target" }, timeText), theme === 'md' && h("ion-ripple-effect", { key: '306f594bffa84fea1f5e2528cab5ee56c0364e34' })))));
372
+ }) }, dateText && (h("button", { key: 'b1267d98cefbce7666b0cafa083c42f3116e2398', class: "ion-activatable", id: "date-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleDateClick, disabled: disabled, part: "native", ref: (el) => (this.dateTargetEl = el) }, h("slot", { key: '3fdfa6adf73ee1e35cdb7f318f1d1ddcf4ab4d7b', name: "date-target" }, dateText), theme === 'md' && h("ion-ripple-effect", { key: 'a832d63c77fffe8d7e0d28827bbb469726373d1e' }))), timeText && (h("button", { key: 'c589bdf2b8221609713f0d3554494dd08a1f2e5b', class: "ion-activatable", id: "time-button", "aria-expanded": datetimeActive ? 'true' : 'false', onClick: this.handleTimeClick, disabled: disabled, part: "native", ref: (el) => (this.timeTargetEl = el) }, h("slot", { key: '10769ddadf7933d78744facaaa153bb413ff484a', name: "time-target" }, timeText), theme === 'md' && h("ion-ripple-effect", { key: '7832de031919ddfb312528b45a3dc8e1c20edea6' })))));
346
373
  }
347
374
  get el() { return getElement(this); }
348
375
  };