@esri/calcite-components 1.0.0-next.318 → 1.0.0-next.321

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 (122) hide show
  1. package/dist/calcite/assets/calcite-icon/centerAlign16.json +1 -0
  2. package/dist/calcite/assets/calcite-icon/centerAlign24.json +1 -0
  3. package/dist/calcite/assets/calcite-icon/centerAlign32.json +1 -0
  4. package/dist/calcite/assets/calcite-icon/convert16.json +1 -0
  5. package/dist/calcite/assets/calcite-icon/convert24.json +1 -0
  6. package/dist/calcite/assets/calcite-icon/convert32.json +1 -0
  7. package/dist/calcite/assets/calcite-icon/formDropdown16.json +1 -0
  8. package/dist/calcite/assets/calcite-icon/formDropdown24.json +1 -0
  9. package/dist/calcite/assets/calcite-icon/formDropdown32.json +1 -0
  10. package/dist/calcite/assets/calcite-icon/language16.json +1 -0
  11. package/dist/calcite/assets/calcite-icon/language24.json +1 -0
  12. package/dist/calcite/assets/calcite-icon/language32.json +1 -0
  13. package/dist/calcite/assets/calcite-icon/languageTranslate16.json +1 -0
  14. package/dist/calcite/assets/calcite-icon/languageTranslate24.json +1 -0
  15. package/dist/calcite/assets/calcite-icon/languageTranslate32.json +1 -0
  16. package/dist/calcite/assets/calcite-icon/leftAlign16.json +1 -0
  17. package/dist/calcite/assets/calcite-icon/leftAlign24.json +1 -0
  18. package/dist/calcite/assets/calcite-icon/leftAlign32.json +1 -0
  19. package/dist/calcite/assets/calcite-icon/terminal16.json +1 -0
  20. package/dist/calcite/assets/calcite-icon/terminal24.json +1 -0
  21. package/dist/calcite/assets/calcite-icon/terminal32.json +1 -0
  22. package/dist/calcite/assets/calcite-icon/touch16.json +1 -0
  23. package/dist/calcite/assets/calcite-icon/touch24.json +1 -0
  24. package/dist/calcite/assets/calcite-icon/touch32.json +1 -0
  25. package/dist/calcite/calcite.esm.js +1 -1
  26. package/dist/calcite/p-04bce033.entry.js +5 -0
  27. package/dist/calcite/p-1480eb2d.entry.js +5 -0
  28. package/dist/calcite/p-2cd9d307.entry.js +5 -0
  29. package/dist/calcite/{p-8b2d4eac.system.entry.js → p-4e95e13d.system.entry.js} +1 -1
  30. package/dist/calcite/p-58208234.system.entry.js +5 -0
  31. package/dist/calcite/p-6e050609.entry.js +5 -0
  32. package/dist/calcite/p-8e252799.system.js +1 -1
  33. package/dist/calcite/{p-f97e1a2d.entry.js → p-a57aa5d0.entry.js} +1 -1
  34. package/dist/calcite/p-ad617a5a.entry.js +5 -0
  35. package/dist/calcite/p-cb55c32c.system.entry.js +5 -0
  36. package/dist/calcite/p-ed82600e.system.entry.js +5 -0
  37. package/dist/calcite/{p-44a07313.system.entry.js → p-f7b5dd98.system.entry.js} +1 -1
  38. package/dist/calcite/p-fa9a1d8f.system.entry.js +5 -0
  39. package/dist/cjs/calcite-button.cjs.entry.js +2 -2
  40. package/dist/cjs/calcite-color-picker_3.cjs.entry.js +3 -3
  41. package/dist/cjs/calcite-combobox_3.cjs.entry.js +4 -1
  42. package/dist/cjs/calcite-input-time-picker_2.cjs.entry.js +349 -223
  43. package/dist/cjs/calcite-option_3.cjs.entry.js +3 -1
  44. package/dist/cjs/calcite-panel.cjs.entry.js +3 -3
  45. package/dist/cjs/calcite.cjs.js +1 -1
  46. package/dist/cjs/loader.cjs.js +1 -1
  47. package/dist/collection/components/calcite-button/calcite-button.js +3 -2
  48. package/dist/collection/components/calcite-combobox/calcite-combobox.js +4 -1
  49. package/dist/collection/components/calcite-icon/assets/calcite-icon/centerAlign16.json +1 -0
  50. package/dist/collection/components/calcite-icon/assets/calcite-icon/centerAlign24.json +1 -0
  51. package/dist/collection/components/calcite-icon/assets/calcite-icon/centerAlign32.json +1 -0
  52. package/dist/collection/components/calcite-icon/assets/calcite-icon/convert16.json +1 -0
  53. package/dist/collection/components/calcite-icon/assets/calcite-icon/convert24.json +1 -0
  54. package/dist/collection/components/calcite-icon/assets/calcite-icon/convert32.json +1 -0
  55. package/dist/collection/components/calcite-icon/assets/calcite-icon/formDropdown16.json +1 -0
  56. package/dist/collection/components/calcite-icon/assets/calcite-icon/formDropdown24.json +1 -0
  57. package/dist/collection/components/calcite-icon/assets/calcite-icon/formDropdown32.json +1 -0
  58. package/dist/collection/components/calcite-icon/assets/calcite-icon/language16.json +1 -0
  59. package/dist/collection/components/calcite-icon/assets/calcite-icon/language24.json +1 -0
  60. package/dist/collection/components/calcite-icon/assets/calcite-icon/language32.json +1 -0
  61. package/dist/collection/components/calcite-icon/assets/calcite-icon/languageTranslate16.json +1 -0
  62. package/dist/collection/components/calcite-icon/assets/calcite-icon/languageTranslate24.json +1 -0
  63. package/dist/collection/components/calcite-icon/assets/calcite-icon/languageTranslate32.json +1 -0
  64. package/dist/collection/components/calcite-icon/assets/calcite-icon/leftAlign16.json +1 -0
  65. package/dist/collection/components/calcite-icon/assets/calcite-icon/leftAlign24.json +1 -0
  66. package/dist/collection/components/calcite-icon/assets/calcite-icon/leftAlign32.json +1 -0
  67. package/dist/collection/components/calcite-icon/assets/calcite-icon/terminal16.json +1 -0
  68. package/dist/collection/components/calcite-icon/assets/calcite-icon/terminal24.json +1 -0
  69. package/dist/collection/components/calcite-icon/assets/calcite-icon/terminal32.json +1 -0
  70. package/dist/collection/components/calcite-icon/assets/calcite-icon/touch16.json +1 -0
  71. package/dist/collection/components/calcite-icon/assets/calcite-icon/touch24.json +1 -0
  72. package/dist/collection/components/calcite-icon/assets/calcite-icon/touch32.json +1 -0
  73. package/dist/collection/components/calcite-input-time-picker/calcite-input-time-picker.js +81 -76
  74. package/dist/collection/components/calcite-option/calcite-option.js +3 -1
  75. package/dist/collection/components/calcite-panel/calcite-panel.js +3 -3
  76. package/dist/collection/components/calcite-time-picker/calcite-time-picker.css +56 -91
  77. package/dist/collection/components/calcite-time-picker/calcite-time-picker.js +254 -289
  78. package/dist/collection/components/calcite-time-picker/resources.js +15 -9
  79. package/dist/collection/utils/time.js +144 -36
  80. package/dist/components/calcite-button2.js +2 -2
  81. package/dist/components/calcite-color-picker-swatch2.js +3 -3
  82. package/dist/components/calcite-combobox.js +4 -1
  83. package/dist/components/calcite-input-time-picker.js +51 -48
  84. package/dist/components/calcite-option.js +3 -1
  85. package/dist/components/calcite-panel.js +3 -3
  86. package/dist/components/calcite-time-picker2.js +320 -187
  87. package/dist/custom-elements/index.js +366 -235
  88. package/dist/esm/calcite-button.entry.js +2 -2
  89. package/dist/esm/calcite-color-picker_3.entry.js +3 -3
  90. package/dist/esm/calcite-combobox_3.entry.js +4 -1
  91. package/dist/esm/calcite-input-time-picker_2.entry.js +349 -223
  92. package/dist/esm/calcite-option_3.entry.js +3 -1
  93. package/dist/esm/calcite-panel.entry.js +3 -3
  94. package/dist/esm/calcite.js +1 -1
  95. package/dist/esm/loader.js +1 -1
  96. package/dist/esm-es5/calcite-button.entry.js +1 -1
  97. package/dist/esm-es5/calcite-color-picker_3.entry.js +1 -1
  98. package/dist/esm-es5/calcite-combobox_3.entry.js +1 -1
  99. package/dist/esm-es5/calcite-input-time-picker_2.entry.js +2 -2
  100. package/dist/esm-es5/calcite-option_3.entry.js +1 -1
  101. package/dist/esm-es5/calcite-panel.entry.js +1 -1
  102. package/dist/esm-es5/calcite.js +1 -1
  103. package/dist/esm-es5/loader.js +1 -1
  104. package/dist/extras/docs-json.json +22 -100
  105. package/dist/types/components/calcite-input-time-picker/calcite-input-time-picker.d.ts +12 -4
  106. package/dist/types/components/calcite-panel/calcite-panel.d.ts +1 -1
  107. package/dist/types/components/calcite-time-picker/calcite-time-picker.d.ts +35 -23
  108. package/dist/types/components/calcite-time-picker/resources.d.ts +14 -8
  109. package/dist/types/components.d.ts +16 -40
  110. package/dist/types/utils/time.d.ts +18 -5
  111. package/hydrate/index.js +384 -243
  112. package/package.json +10 -10
  113. package/readme.md +2 -2
  114. package/dist/calcite/p-12a9599d.system.entry.js +0 -5
  115. package/dist/calcite/p-2b137143.system.entry.js +0 -5
  116. package/dist/calcite/p-35c5e6bd.entry.js +0 -5
  117. package/dist/calcite/p-88784777.system.entry.js +0 -5
  118. package/dist/calcite/p-9634f89d.entry.js +0 -5
  119. package/dist/calcite/p-a98e5444.system.entry.js +0 -5
  120. package/dist/calcite/p-e1da1646.entry.js +0 -5
  121. package/dist/calcite/p-e78e743b.entry.js +0 -5
  122. package/dist/calcite/p-fccc1605.entry.js +0 -5
@@ -3516,11 +3516,11 @@ let CalciteButton$1 = class extends HTMLElement$1 {
3516
3516
  render() {
3517
3517
  const dir = getElementDir(this.el);
3518
3518
  const Tag = this.childElType;
3519
- const loader = (h("div", { class: CSS$I.buttonLoader }, this.hasLoader ? (h("calcite-loader", { active: true, class: this.loading ? CSS$I.loadingIn : CSS$I.loadingOut, inline: true, label: this.intlLoading, scale: "m" })) : null));
3519
+ const loaderNode = this.hasLoader ? (h("div", { class: CSS$I.buttonLoader }, h("calcite-loader", { active: true, class: this.loading ? CSS$I.loadingIn : CSS$I.loadingOut, inline: true, label: this.intlLoading, scale: "m" }))) : null;
3520
3520
  const iconStartEl = (h("calcite-icon", { class: { [CSS$I.icon]: true, [CSS$I.iconStart]: true }, flipRtl: this.iconFlipRtl === "start" || this.iconFlipRtl === "both", icon: this.iconStart, scale: "s" }));
3521
3521
  const iconEndEl = (h("calcite-icon", { class: { [CSS$I.icon]: true, [CSS$I.iconEnd]: true }, flipRtl: this.iconFlipRtl === "end" || this.iconFlipRtl === "both", icon: this.iconEnd, scale: "s" }));
3522
3522
  const contentEl = (h("span", { class: CSS$I.content }, h("slot", null)));
3523
- return (h(Tag, { "aria-label": getLabelText(this), class: { [CSS_UTILITY.rtl]: dir === "rtl", [CSS$I.contentSlotted]: this.hasContent }, disabled: this.disabled || this.loading, href: this.childElType === "a" && this.href, name: this.childElType === "button" && this.name, onClick: this.handleClick, ref: (el) => (this.childEl = el), rel: this.childElType === "a" && this.rel, tabIndex: this.disabled || this.loading ? -1 : null, target: this.childElType === "a" && this.target, type: this.childElType === "button" && this.type }, loader, this.iconStart ? iconStartEl : null, this.hasContent ? contentEl : null, this.iconEnd ? iconEndEl : null));
3523
+ return (h(Tag, { "aria-label": getLabelText(this), class: { [CSS_UTILITY.rtl]: dir === "rtl", [CSS$I.contentSlotted]: this.hasContent }, disabled: this.disabled || this.loading, href: this.childElType === "a" && this.href, name: this.childElType === "button" && this.name, onClick: this.handleClick, ref: (el) => (this.childEl = el), rel: this.childElType === "a" && this.rel, tabIndex: this.disabled || this.loading ? -1 : null, target: this.childElType === "a" && this.target, type: this.childElType === "button" && this.type }, loaderNode, this.iconStart ? iconStartEl : null, this.hasContent ? contentEl : null, this.iconEnd ? iconEndEl : null));
3524
3524
  }
3525
3525
  //--------------------------------------------------------------------------
3526
3526
  //
@@ -4301,7 +4301,7 @@ cs.get.rgb = function (string) {
4301
4301
 
4302
4302
  var abbr = /^#([a-f0-9]{3,4})$/i;
4303
4303
  var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
4304
- var rgba = /^rgba?\(\s*([+-]?\d+)\s*,?\s*([+-]?\d+)\s*,?\s*([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
4304
+ var rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
4305
4305
  var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
4306
4306
  var keyword = /^(\w+)$/;
4307
4307
 
@@ -4388,7 +4388,7 @@ cs.get.hsl = function (string) {
4388
4388
  return null;
4389
4389
  }
4390
4390
 
4391
- var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?[\d\.]+)\s*)?\)$/;
4391
+ var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
4392
4392
  var match = string.match(hsl);
4393
4393
 
4394
4394
  if (match) {
@@ -4409,7 +4409,7 @@ cs.get.hwb = function (string) {
4409
4409
  return null;
4410
4410
  }
4411
4411
 
4412
- var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
4412
+ var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
4413
4413
  var match = string.match(hwb);
4414
4414
 
4415
4415
  if (match) {
@@ -9327,7 +9327,9 @@ let CalciteCombobox$1 = class extends HTMLElement$1 {
9327
9327
  };
9328
9328
  this.setInactiveIfNotContained = (event) => {
9329
9329
  const composedPath = event.composedPath();
9330
- if (!this.active || composedPath.includes(this.el) || composedPath.includes(this.referenceEl)) {
9330
+ if ((!this.active && !this.open) ||
9331
+ composedPath.includes(this.el) ||
9332
+ composedPath.includes(this.referenceEl)) {
9331
9333
  return;
9332
9334
  }
9333
9335
  if (this.allowCustomValues && this.text) {
@@ -9342,6 +9344,7 @@ let CalciteCombobox$1 = class extends HTMLElement$1 {
9342
9344
  this.updateActiveItemIndex(-1);
9343
9345
  }
9344
9346
  this.active = false;
9347
+ this.open = false;
9345
9348
  };
9346
9349
  this.setMenuEl = (el) => {
9347
9350
  this.menuEl = el;
@@ -13706,6 +13709,72 @@ let CalciteInputMessage$1 = class extends HTMLElement$1 {
13706
13709
  };
13707
13710
 
13708
13711
  const maxTenthForMinuteAndSecond = 5;
13712
+ function createLocaleDateTimeFormatter(locale, includeSeconds = true) {
13713
+ try {
13714
+ const options = {
13715
+ hour: "2-digit",
13716
+ minute: "2-digit",
13717
+ timeZone: "UTC"
13718
+ };
13719
+ if (includeSeconds) {
13720
+ options.second = "2-digit";
13721
+ }
13722
+ return new Intl.DateTimeFormat(locale, options);
13723
+ }
13724
+ catch (e) {
13725
+ throw new Error(`Invalid locale supplied while attempting to create a DateTime formatter: ${locale}`);
13726
+ }
13727
+ }
13728
+ function formatTimePart(number) {
13729
+ const numberAsString = number.toString();
13730
+ return number >= 0 && number <= 9 ? numberAsString.padStart(2, "0") : numberAsString;
13731
+ }
13732
+ function formatTimeString(value) {
13733
+ if (!isValidTime(value)) {
13734
+ return null;
13735
+ }
13736
+ const [hourString, minuteString, secondString] = value.split(":");
13737
+ const hour = formatTimePart(parseInt(hourString));
13738
+ const minute = formatTimePart(parseInt(minuteString));
13739
+ if (secondString) {
13740
+ const second = formatTimePart(parseInt(secondString));
13741
+ return `${hour}:${minute}:${second}`;
13742
+ }
13743
+ return `${hour}:${minute}`;
13744
+ }
13745
+ function getLocaleHourCycle(locale) {
13746
+ const formatter = createLocaleDateTimeFormatter(locale);
13747
+ const parts = formatter.formatToParts(new Date(Date.UTC(0, 0, 0, 0, 0, 0)));
13748
+ return getLocalizedTimePart("meridiem", parts) ? "12" : "24";
13749
+ }
13750
+ function getLocalizedTimePart(part, parts) {
13751
+ var _a, _b, _c, _d;
13752
+ if (!part || !parts) {
13753
+ return null;
13754
+ }
13755
+ if (part === "hourSuffix") {
13756
+ const hourIndex = parts.indexOf(parts.find(({ type }) => type === "hour"));
13757
+ const minuteIndex = parts.indexOf(parts.find(({ type }) => type === "minute"));
13758
+ const hourSuffix = parts[hourIndex + 1];
13759
+ return hourSuffix && hourSuffix.type === "literal" && minuteIndex - hourIndex === 2
13760
+ ? ((_a = hourSuffix.value) === null || _a === void 0 ? void 0 : _a.trim()) || null
13761
+ : null;
13762
+ }
13763
+ if (part === "minuteSuffix") {
13764
+ const minuteIndex = parts.indexOf(parts.find(({ type }) => type === "minute"));
13765
+ const secondIndex = parts.indexOf(parts.find(({ type }) => type === "second"));
13766
+ const minuteSuffix = parts[minuteIndex + 1];
13767
+ return minuteSuffix && minuteSuffix.type === "literal" && secondIndex - minuteIndex === 2
13768
+ ? ((_b = minuteSuffix.value) === null || _b === void 0 ? void 0 : _b.trim()) || null
13769
+ : null;
13770
+ }
13771
+ if (part === "secondSuffix") {
13772
+ const secondIndex = parts.indexOf(parts.find(({ type }) => type === "second"));
13773
+ const secondSuffix = parts[secondIndex + 1];
13774
+ return secondSuffix && secondSuffix.type === "literal" ? ((_c = secondSuffix.value) === null || _c === void 0 ? void 0 : _c.trim()) || null : null;
13775
+ }
13776
+ return ((_d = parts.find(({ type }) => (part == "meridiem" ? type === "dayPeriod" : type === part))) === null || _d === void 0 ? void 0 : _d.value) || null;
13777
+ }
13709
13778
  function getMeridiem(hour) {
13710
13779
  if (!isValidNumber(hour)) {
13711
13780
  return null;
@@ -13713,51 +13782,93 @@ function getMeridiem(hour) {
13713
13782
  const hourAsNumber = parseInt(hour);
13714
13783
  return hourAsNumber >= 0 && hourAsNumber <= 11 ? "AM" : "PM";
13715
13784
  }
13716
- function getMeridiemHour(hour) {
13717
- if (!isValidNumber(hour)) {
13718
- return null;
13785
+ function isValidTime(value) {
13786
+ if (!value || value.startsWith(":") || value.endsWith(":")) {
13787
+ return false;
13719
13788
  }
13720
- const hourAsNumber = parseInt(hour);
13721
- if (hourAsNumber === 0) {
13722
- return "12";
13789
+ const splitValue = value.split(":");
13790
+ const validLength = splitValue.length > 1 && splitValue.length < 4;
13791
+ if (!validLength) {
13792
+ return false;
13793
+ }
13794
+ const [hour, minute, second] = splitValue;
13795
+ const hourAsNumber = parseInt(splitValue[0]);
13796
+ const minuteAsNumber = parseInt(splitValue[1]);
13797
+ const secondAsNumber = parseInt(splitValue[2]);
13798
+ const hourValid = isValidNumber(hour) && hourAsNumber >= 0 && hourAsNumber < 24;
13799
+ const minuteValid = isValidNumber(minute) && minuteAsNumber >= 0 && minuteAsNumber < 60;
13800
+ const secondValid = isValidNumber(second) && secondAsNumber >= 0 && secondAsNumber < 60;
13801
+ if ((hourValid && minuteValid && !second) || (hourValid && minuteValid && secondValid)) {
13802
+ return true;
13723
13803
  }
13724
- return hourAsNumber > 12 ? formatTimePart(hourAsNumber - 12) : hour;
13725
13804
  }
13726
- function parseTimeString(value) {
13727
- const timeString = formatTimeString(value);
13728
- const [hour, minute, second] = timeString ? timeString.split(":") : [null, null, null];
13729
- return {
13730
- hour,
13731
- minute,
13732
- second: second || (hour && minute ? "00" : null)
13733
- };
13805
+ function isValidTimePart(value, part) {
13806
+ if (part === "meridiem") {
13807
+ return value === "AM" || value === "PM";
13808
+ }
13809
+ if (!isValidNumber(value)) {
13810
+ return false;
13811
+ }
13812
+ const valueAsNumber = Number(value);
13813
+ return part === "hour" ? valueAsNumber >= 0 && valueAsNumber < 24 : valueAsNumber >= 0 && valueAsNumber < 60;
13734
13814
  }
13735
- function formatTimeString(value) {
13736
- if (!value || value.endsWith(":") || value.startsWith(":")) {
13815
+ function localizeTimePart(value, part, locale) {
13816
+ if (!isValidTimePart(value, part)) {
13817
+ return;
13818
+ }
13819
+ const valueAsNumber = parseInt(value);
13820
+ const date = new Date(Date.UTC(0, 0, 0, part === "hour" ? valueAsNumber : part === "meridiem" ? (value === "AM" ? 0 : 12) : 0, part === "minute" ? valueAsNumber : 0, part === "second" ? valueAsNumber : 0));
13821
+ if (!date) {
13822
+ return;
13823
+ }
13824
+ const formatter = createLocaleDateTimeFormatter(locale);
13825
+ const parts = formatter.formatToParts(date);
13826
+ return getLocalizedTimePart(part, parts);
13827
+ }
13828
+ function localizeTimeString(value, locale = "en", includeSeconds = true) {
13829
+ if (!isValidTime(value)) {
13737
13830
  return null;
13738
13831
  }
13739
- const splitValue = value.split(":");
13740
- if (splitValue.length > 1) {
13741
- const [hour, minute, second] = splitValue;
13742
- const hourAsNumber = parseInt(splitValue[0]);
13743
- const minuteAsNumber = parseInt(splitValue[1]);
13744
- const secondAsNumber = parseInt(splitValue[2]);
13745
- const hourValid = isValidNumber(hour) && hourAsNumber >= 0 && hourAsNumber < 24;
13746
- const minuteValid = isValidNumber(minute) && minuteAsNumber >= 0 && minuteAsNumber < 60;
13747
- const secondValid = isValidNumber(second) && secondAsNumber >= 0 && secondAsNumber < 60;
13748
- if ((hourValid && minuteValid && !second) || (hourValid && minuteValid && secondValid)) {
13749
- let newValue = `${formatTimePart(hourAsNumber)}:${formatTimePart(minuteAsNumber)}`;
13750
- if (secondValid) {
13751
- newValue = `${newValue}:${formatTimePart(secondAsNumber)}`;
13752
- }
13753
- return newValue;
13754
- }
13832
+ const { hour, minute, second = "0" } = parseTimeString(value);
13833
+ const dateFromTimeString = new Date(Date.UTC(0, 0, 0, parseInt(hour), parseInt(minute), parseInt(second)));
13834
+ const formatter = createLocaleDateTimeFormatter(locale, includeSeconds);
13835
+ return (formatter === null || formatter === void 0 ? void 0 : formatter.format(dateFromTimeString)) || null;
13836
+ }
13837
+ function localizeTimeStringToParts(value, locale = "en") {
13838
+ if (!isValidTime(value)) {
13839
+ return null;
13840
+ }
13841
+ const { hour, minute, second = "0" } = parseTimeString(value);
13842
+ const dateFromTimeString = new Date(Date.UTC(0, 0, 0, parseInt(hour), parseInt(minute), parseInt(second)));
13843
+ if (dateFromTimeString) {
13844
+ const formatter = createLocaleDateTimeFormatter(locale);
13845
+ const parts = formatter.formatToParts(dateFromTimeString);
13846
+ return {
13847
+ localizedHour: getLocalizedTimePart("hour", parts),
13848
+ localizedHourSuffix: getLocalizedTimePart("hourSuffix", parts),
13849
+ localizedMinute: getLocalizedTimePart("minute", parts),
13850
+ localizedMinuteSuffix: getLocalizedTimePart("minuteSuffix", parts),
13851
+ localizedSecond: getLocalizedTimePart("second", parts),
13852
+ localizedSecondSuffix: getLocalizedTimePart("secondSuffix", parts),
13853
+ localizedMeridiem: getLocalizedTimePart("meridiem", parts)
13854
+ };
13755
13855
  }
13756
13856
  return null;
13757
13857
  }
13758
- function formatTimePart(number) {
13759
- const numberAsString = number.toString();
13760
- return number >= 0 && number <= 9 ? numberAsString.padStart(2, "0") : numberAsString;
13858
+ function parseTimeString(value) {
13859
+ if (isValidTime(value)) {
13860
+ const [hour, minute, second] = value.split(":");
13861
+ return {
13862
+ hour,
13863
+ minute,
13864
+ second
13865
+ };
13866
+ }
13867
+ return {
13868
+ hour: null,
13869
+ minute: null,
13870
+ second: null
13871
+ };
13761
13872
  }
13762
13873
 
13763
13874
  const calciteInputTimePickerCss = "@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:300ms}.calcite-animate{opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:150ms ease-in-out}:host([hidden]){display:none}:host{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::slotted(input[slot=hidden-form-input]){bottom:0 !important;left:0 !important;margin:0 !important;opacity:0 !important;outline:none !important;padding:0 !important;position:absolute !important;right:0 !important;top:0 !important;-webkit-transform:none !important;transform:none !important;-webkit-appearance:none !important;z-index:-1 !important}";
@@ -13777,8 +13888,11 @@ let CalciteInputTimePicker$1 = class extends HTMLElement$1 {
13777
13888
  this.active = false;
13778
13889
  /** The disabled state of the time input */
13779
13890
  this.disabled = false;
13780
- /** Format of the hour value (12-hour or 24-hour) (this will be replaced by locale eventually) */
13781
- this.hourDisplayFormat = "12";
13891
+ /**
13892
+ * BCP 47 language tag for desired language and country format
13893
+ * @internal
13894
+ */
13895
+ this.locale = document.documentElement.lang || navigator.language || "en";
13782
13896
  /**
13783
13897
  * When true, makes the component required for form-submission.
13784
13898
  *
@@ -13802,56 +13916,60 @@ let CalciteInputTimePicker$1 = class extends HTMLElement$1 {
13802
13916
  //--------------------------------------------------------------------------
13803
13917
  this.calciteInputBlurHandler = () => {
13804
13918
  this.active = false;
13805
- const newValue = formatTimeString(this.calciteInputEl.value) || formatTimeString(this.value);
13806
- if (newValue !== this.calciteInputEl.value) {
13807
- this.setInputValue(newValue);
13808
- }
13919
+ const shouldIncludeSeconds = this.shouldIncludeSeconds();
13920
+ const localizedInputValue = localizeTimeString(this.calciteInputEl.value, this.locale, shouldIncludeSeconds);
13921
+ this.setInputValue(localizedInputValue || localizeTimeString(this.value, this.locale, shouldIncludeSeconds));
13809
13922
  };
13810
13923
  this.calciteInputFocusHandler = () => {
13811
13924
  this.active = true;
13812
13925
  };
13813
13926
  this.calciteInputInputHandler = (event) => {
13814
- this.setValue({ value: event.detail.value });
13927
+ const target = event.target;
13928
+ this.setValue({ value: target.value });
13929
+ };
13930
+ this.timePickerChangeHandler = (event) => {
13931
+ event.stopPropagation();
13932
+ const target = event.target;
13933
+ const value = target.value;
13934
+ this.setValue({ value, origin: "time-picker" });
13815
13935
  };
13816
13936
  this.setCalciteInputEl = (el) => {
13817
13937
  this.calciteInputEl = el;
13818
13938
  };
13939
+ this.setCalciteTimePickerEl = (el) => {
13940
+ this.calciteTimePickerEl = el;
13941
+ };
13819
13942
  this.setInputValue = (newInputValue) => {
13820
13943
  if (!this.calciteInputEl) {
13821
13944
  return;
13822
13945
  }
13823
- if (this.hourDisplayFormat === "12") {
13824
- const { hour, minute, second } = parseTimeString(newInputValue);
13825
- this.calciteInputEl.value = newInputValue
13826
- ? `${getMeridiemHour(hour)}:${minute}${this.step !== 60 ? ":" + second : ""} ${getMeridiem(hour)}`
13827
- : null;
13828
- }
13829
- else {
13830
- this.calciteInputEl.value = newInputValue;
13831
- }
13946
+ this.calciteInputEl.value = newInputValue;
13832
13947
  };
13833
13948
  this.setValue = ({ value, origin = "input" }) => {
13834
13949
  const previousValue = this.value;
13835
- const validatedNewValue = formatTimeString(value);
13950
+ const newValue = formatTimeString(value);
13951
+ const newLocalizedValue = localizeTimeString(newValue, this.locale, this.shouldIncludeSeconds());
13836
13952
  this.internalValueChange = origin !== "external" && origin !== "loading";
13837
13953
  const shouldEmit = origin !== "loading" &&
13838
13954
  origin !== "external" &&
13839
13955
  ((value !== this.previousValidValue && !value) ||
13840
- !!(!this.previousValidValue && validatedNewValue) ||
13841
- (validatedNewValue !== this.previousValidValue && validatedNewValue));
13956
+ !!(!this.previousValidValue && newValue) ||
13957
+ (newValue !== this.previousValidValue && newValue));
13842
13958
  if (value) {
13843
13959
  if (shouldEmit) {
13844
- this.previousValidValue = validatedNewValue;
13960
+ this.previousValidValue = newValue;
13845
13961
  }
13846
- if (validatedNewValue && validatedNewValue !== this.value) {
13847
- this.value = validatedNewValue;
13962
+ if (newValue && newValue !== this.value) {
13963
+ this.value = newValue;
13848
13964
  }
13965
+ this.localizedValue = newLocalizedValue;
13849
13966
  }
13850
13967
  else {
13851
13968
  this.value = value;
13969
+ this.localizedValue = null;
13852
13970
  }
13853
13971
  if (origin === "time-picker" || origin === "external") {
13854
- this.setInputValue(validatedNewValue);
13972
+ this.setInputValue(newLocalizedValue);
13855
13973
  }
13856
13974
  if (shouldEmit) {
13857
13975
  const changeEvent = this.calciteInputTimePickerChange.emit();
@@ -13862,17 +13980,26 @@ let CalciteInputTimePicker$1 = class extends HTMLElement$1 {
13862
13980
  this.previousValidValue = previousValue;
13863
13981
  }
13864
13982
  else {
13865
- this.previousValidValue = validatedNewValue;
13983
+ this.previousValidValue = newValue;
13866
13984
  }
13867
13985
  }
13868
13986
  };
13869
13987
  }
13988
+ localeWatcher(newLocale) {
13989
+ this.setInputValue(localizeTimeString(this.value, newLocale, this.shouldIncludeSeconds()));
13990
+ }
13870
13991
  valueWatcher(newValue) {
13871
13992
  if (!this.internalValueChange) {
13872
13993
  this.setValue({ value: newValue, origin: "external" });
13873
13994
  }
13874
13995
  this.internalValueChange = false;
13875
13996
  }
13997
+ clickHandler(event) {
13998
+ if (event.composedPath().includes(this.calciteTimePickerEl)) {
13999
+ return;
14000
+ }
14001
+ this.setFocus();
14002
+ }
13876
14003
  keyUpHandler(event) {
13877
14004
  if (event.key === "Escape" && this.active) {
13878
14005
  this.active = false;
@@ -13883,21 +14010,6 @@ let CalciteInputTimePicker$1 = class extends HTMLElement$1 {
13883
14010
  event.stopPropagation();
13884
14011
  this.active = false;
13885
14012
  }
13886
- timePickerChangeHandler(event) {
13887
- event.preventDefault();
13888
- event.stopPropagation();
13889
- if (event.detail) {
13890
- const { hour, minute, second } = event.detail;
13891
- let value;
13892
- if (hour && minute) {
13893
- value = second && this.step !== 60 ? `${hour}:${minute}:${second}` : `${hour}:${minute}`;
13894
- }
13895
- else {
13896
- value = "";
13897
- }
13898
- this.setValue({ value, origin: "time-picker" });
13899
- }
13900
- }
13901
14013
  timePickerFocusHandler(event) {
13902
14014
  event.preventDefault();
13903
14015
  event.stopPropagation();
@@ -13920,6 +14032,9 @@ let CalciteInputTimePicker$1 = class extends HTMLElement$1 {
13920
14032
  onLabelClick() {
13921
14033
  this.setFocus();
13922
14034
  }
14035
+ shouldIncludeSeconds() {
14036
+ return this.step < 60;
14037
+ }
13923
14038
  //--------------------------------------------------------------------------
13924
14039
  //
13925
14040
  // Lifecycle
@@ -13927,15 +14042,13 @@ let CalciteInputTimePicker$1 = class extends HTMLElement$1 {
13927
14042
  //--------------------------------------------------------------------------
13928
14043
  connectedCallback() {
13929
14044
  if (this.value) {
13930
- this.setValue({ value: this.value, origin: "loading" });
14045
+ this.setValue({ value: isValidTime(this.value) ? this.value : undefined, origin: "loading" });
13931
14046
  }
13932
14047
  connectLabel(this);
13933
14048
  connectForm(this);
13934
14049
  }
13935
14050
  componentDidLoad() {
13936
- if (this.calciteInputEl.value !== this.value) {
13937
- this.setInputValue(this.value);
13938
- }
14051
+ this.setInputValue(this.localizedValue);
13939
14052
  }
13940
14053
  disconnectedCallback() {
13941
14054
  disconnectLabel(this);
@@ -13947,12 +14060,12 @@ let CalciteInputTimePicker$1 = class extends HTMLElement$1 {
13947
14060
  //
13948
14061
  // --------------------------------------------------------------------------
13949
14062
  render() {
13950
- const { hour, minute, second } = parseTimeString(this.value);
13951
14063
  const popoverId = `${this.referenceElementId}-popover`;
13952
- return (h(Host, null, h("div", { "aria-controls": popoverId, "aria-haspopup": "dialog", "aria-label": this.name, "aria-owns": popoverId, id: this.referenceElementId, role: "combobox" }, h("calcite-input", { disabled: this.disabled, icon: "clock", label: getLabelText(this), onCalciteInputBlur: this.calciteInputBlurHandler, onCalciteInputFocus: this.calciteInputFocusHandler, onCalciteInputInput: this.calciteInputInputHandler, ref: this.setCalciteInputEl, scale: this.scale, step: this.step })), h("calcite-popover", { id: popoverId, label: "Time Picker", open: this.active || false, referenceElement: this.referenceElementId }, h("calcite-time-picker", { hour: hour, "hour-display-format": this.hourDisplayFormat, intlHour: this.intlHour, intlHourDown: this.intlHourDown, intlHourUp: this.intlHourUp, intlMeridiem: this.intlMeridiem, intlMeridiemDown: this.intlMeridiemDown, intlMeridiemUp: this.intlMeridiemUp, intlMinute: this.intlMinute, intlMinuteDown: this.intlMinuteDown, intlMinuteUp: this.intlMinuteUp, intlSecond: this.intlSecond, intlSecondDown: this.intlSecondDown, intlSecondUp: this.intlSecondUp, minute: minute, scale: this.scale, second: second, step: this.step })), h(HiddenFormInputSlot, { component: this })));
14064
+ return (h(Host, null, h("div", { "aria-controls": popoverId, "aria-haspopup": "dialog", "aria-label": this.name, "aria-owns": popoverId, id: this.referenceElementId, role: "combobox" }, h("calcite-input", { disabled: this.disabled, icon: "clock", label: getLabelText(this), onCalciteInputBlur: this.calciteInputBlurHandler, onCalciteInputFocus: this.calciteInputFocusHandler, onCalciteInputInput: this.calciteInputInputHandler, ref: this.setCalciteInputEl, scale: this.scale, step: this.step })), h("calcite-popover", { id: popoverId, label: "Time Picker", open: this.active || false, referenceElement: this.referenceElementId }, h("calcite-time-picker", { intlHour: this.intlHour, intlHourDown: this.intlHourDown, intlHourUp: this.intlHourUp, intlMeridiem: this.intlMeridiem, intlMeridiemDown: this.intlMeridiemDown, intlMeridiemUp: this.intlMeridiemUp, intlMinute: this.intlMinute, intlMinuteDown: this.intlMinuteDown, intlMinuteUp: this.intlMinuteUp, intlSecond: this.intlSecond, intlSecondDown: this.intlSecondDown, intlSecondUp: this.intlSecondUp, lang: this.locale, onCalciteTimePickerChange: this.timePickerChangeHandler, ref: this.setCalciteTimePickerEl, scale: this.scale, step: this.step, value: this.value })), h(HiddenFormInputSlot, { component: this })));
13953
14065
  }
13954
14066
  get el() { return this; }
13955
14067
  static get watchers() { return {
14068
+ "locale": ["localeWatcher"],
13956
14069
  "value": ["valueWatcher"]
13957
14070
  }; }
13958
14071
  static get style() { return calciteInputTimePickerCss; }
@@ -14812,8 +14925,10 @@ let CalciteOption$1 = class extends HTMLElement$1 {
14812
14925
  var _a;
14813
14926
  this.ensureTextContentDependentProps();
14814
14927
  (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, {
14928
+ attributeFilter: ["label", "value"],
14929
+ characterData: true,
14815
14930
  childList: true,
14816
- attributeFilter: ["label", "value"]
14931
+ subtree: true
14817
14932
  });
14818
14933
  }
14819
14934
  disconnectedCallback() {
@@ -15139,7 +15254,7 @@ let CalcitePanel$1 = class extends HTMLElement$1 {
15139
15254
  this.setBackRef = (node) => {
15140
15255
  this.backButtonEl = node;
15141
15256
  };
15142
- this.panelKeyUpHandler = (event) => {
15257
+ this.panelKeyDownHandler = (event) => {
15143
15258
  if (event.key === "Escape") {
15144
15259
  this.dismiss();
15145
15260
  }
@@ -15256,12 +15371,12 @@ let CalcitePanel$1 = class extends HTMLElement$1 {
15256
15371
  return (h("div", { class: CSS$j.fabContainer }, h("slot", { name: SLOTS$c.fab })));
15257
15372
  }
15258
15373
  render() {
15259
- const { dismissed, disabled, dismissible, el, loading, panelKeyUpHandler } = this;
15374
+ const { dismissed, disabled, dismissible, el, loading, panelKeyDownHandler } = this;
15260
15375
  const rtl = getElementDir(el) === "rtl";
15261
15376
  const panelNode = (h("article", { "aria-busy": loading.toString(), class: {
15262
15377
  [CSS$j.container]: true,
15263
15378
  [CSS_UTILITY.rtl]: rtl
15264
- }, hidden: dismissible && dismissed, onKeyUp: panelKeyUpHandler, ref: this.setContainerRef, tabIndex: dismissible ? 0 : -1 }, this.renderHeaderNode(), this.renderContent(), this.renderFooterSlottedContent() || this.renderFooterActions()));
15379
+ }, hidden: dismissible && dismissed, onKeyDown: panelKeyDownHandler, ref: this.setContainerRef, tabIndex: dismissible ? 0 : -1 }, this.renderHeaderNode(), this.renderContent(), this.renderFooterSlottedContent() || this.renderFooterActions()));
15265
15380
  return (h(Fragment, null, loading || disabled ? h("calcite-scrim", { loading: loading }) : null, panelNode));
15266
15381
  }
15267
15382
  get el() { return this; }
@@ -22943,26 +23058,32 @@ let CalciteTileSelectGroup$1 = class extends HTMLElement$1 {
22943
23058
  };
22944
23059
 
22945
23060
  const CSS$5 = {
23061
+ button: "button",
22946
23062
  buttonBottomLeft: "button--bottom-left",
22947
23063
  buttonBottomRight: "button--bottom-right",
22948
- button: "button",
22949
- delimiter: "delimiter",
22950
- hour: "hour",
22951
23064
  buttonHourDown: "button--hour-down",
22952
23065
  buttonHourUp: "button--hour-up",
22953
- input: "input",
22954
- meridiem: "meridiem",
22955
23066
  buttonMeridiemDown: "button--meridiem-down",
22956
23067
  buttonMeridiemUp: "button--meridiem-up",
22957
- minute: "minute",
22958
23068
  buttonMinuteDown: "button--minute-down",
22959
23069
  buttonMinuteUp: "button--minute-up",
22960
- second: "second",
22961
23070
  buttonSecondDown: "button--second-down",
22962
23071
  buttonSecondUp: "button--second-up",
22963
- timePicker: "time-picker",
22964
23072
  buttonTopLeft: "button--top-left",
22965
- buttonTopRight: "button--top-right"
23073
+ buttonTopRight: "button--top-right",
23074
+ column: "column",
23075
+ delimiter: "delimiter",
23076
+ hour: "hour",
23077
+ input: "input",
23078
+ meridiem: "meridiem",
23079
+ minute: "minute",
23080
+ second: "second",
23081
+ showMeridiem: "show-meridiem",
23082
+ showSecond: "show-second",
23083
+ "scale-s": "scale-s",
23084
+ "scale-m": "scale-m",
23085
+ "scale-l": "scale-l",
23086
+ timePicker: "time-picker"
22966
23087
  };
22967
23088
  const TEXT$2 = {
22968
23089
  hour: "Hour",
@@ -22979,8 +23100,11 @@ const TEXT$2 = {
22979
23100
  secondUp: "Increase second"
22980
23101
  };
22981
23102
 
22982
- const calciteTimePickerCss = "@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:300ms}.calcite-animate{opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:150ms ease-in-out}:host([hidden]){display:none}:host{color:var(--calcite-ui-text-1);display:inline-block;font-weight:var(--calcite-font-weight-medium);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.time-picker{-webkit-box-shadow:0 6px 20px -4px rgba(0, 0, 0, 0.1), 0 4px 12px -2px rgba(0, 0, 0, 0.08);box-shadow:0 6px 20px -4px rgba(0, 0, 0, 0.1), 0 4px 12px -2px rgba(0, 0, 0, 0.08);-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;border-radius:var(--calcite-border-radius)}span{-ms-flex-align:center;align-items:center;background-color:var(--calcite-ui-foreground-1);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center}span.button{cursor:pointer}span.button:hover,span.button:focus{background-color:var(--calcite-ui-foreground-2)}span.button:focus{outline:2px solid transparent;outline-offset:2px}span.button:active{background-color:var(--calcite-ui-foreground-3)}span.button.top-left{border-top-left-radius:var(--calcite-border-radius)}span.button.bottom-left{border-bottom-left-radius:var(--calcite-border-radius)}span.button.top-right{border-top-right-radius:var(--calcite-border-radius)}span.button.bottom-right{border-bottom-right-radius:var(--calcite-border-radius)}span.button calcite-icon{color:var(--calcite-ui-text-3)}span.input{font-weight:var(--calcite-font-weight-medium);position:relative}span.input:hover{-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-2);box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-2)}span.input:focus,span.input:hover:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-brand);box-shadow:inset 0 0 0 2px var(--calcite-ui-brand)}:host([scale=s]){font-size:var(--calcite-font-size--1)}:host([scale=s]) span{height:24px;width:40px}:host([scale=s]) .delimiter{height:72px}:host([scale=s][hour-display-format=\"12\"]) .time-picker{width:124.2px}:host([scale=s][hour-display-format=\"12\"]:not([step=\"60\"])) .time-picker{width:168px}:host([scale=s][hour-display-format=\"24\"]) .time-picker{width:84.2px}:host([scale=s][hour-display-format=\"24\"]:not([step=\"60\"])) .time-picker{width:128.4px}:host([scale=m]){font-size:var(--calcite-font-size-0)}:host([scale=m]) span{height:32px;width:44px}:host([scale=m]) .delimiter{height:96px}:host([scale=m][hour-display-format=\"12\"]) .time-picker{width:136.8px}:host([scale=m][hour-display-format=\"12\"]:not([step=\"60\"])) .time-picker{width:186px}:host([scale=m][hour-display-format=\"24\"]) .time-picker{width:92.8px}:host([scale=m][hour-display-format=\"24\"]:not([step=\"60\"])) .time-picker{width:141.6px}:host([scale=l]){font-size:var(--calcite-font-size-1)}:host([scale=l]) span{height:48px;width:64px}:host([scale=l]) .delimiter{height:144px}:host([scale=l][hour-display-format=\"12\"]) .time-picker{width:198px}:host([scale=l][hour-display-format=\"12\"]:not([step=\"60\"])) .time-picker{width:268px}:host([scale=l][hour-display-format=\"24\"]) .time-picker{width:134px}:host([scale=l][hour-display-format=\"24\"]:not([step=\"60\"])) .time-picker{width:204px}";
23103
+ const calciteTimePickerCss = "@-webkit-keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-down{0%{opacity:0;-webkit-transform:translate3D(0, -5px, 0);transform:translate3D(0, -5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;-webkit-transform:translate3D(0, 5px, 0);transform:translate3D(0, 5px, 0)}100%{opacity:1;-webkit-transform:translate3D(0, 0, 0);transform:translate3D(0, 0, 0)}}@-webkit-keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}@keyframes in-scale{0%{opacity:0;-webkit-transform:scale3D(0.95, 0.95, 1);transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;-webkit-transform:scale3D(1, 1, 1);transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:300ms}.calcite-animate{opacity:0;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:var(--calcite-animation-timing);animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{-webkit-animation-name:in;animation-name:in}.calcite-animate__in-down{-webkit-animation-name:in-down;animation-name:in-down}.calcite-animate__in-up{-webkit-animation-name:in-up;animation-name:in-up}.calcite-animate__in-scale{-webkit-animation-name:in-scale;animation-name:in-scale}:root{--calcite-popper-transition:150ms ease-in-out}:host([hidden]){display:none}:host{display:inline-block}.time-picker{background-color:var(--calcite-ui-foreground-1);display:-ms-flexbox;display:flex;font-weight:var(--calcite-font-weight-medium);-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-shadow:0 6px 20px -4px rgba(0, 0, 0, 0.1), 0 4px 12px -2px rgba(0, 0, 0, 0.08);box-shadow:0 6px 20px -4px rgba(0, 0, 0, 0.1), 0 4px 12px -2px rgba(0, 0, 0, 0.08);color:var(--calcite-ui-text-1);border-radius:var(--calcite-border-radius)}.time-picker .column{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.time-picker .button{background-color:var(--calcite-ui-foreground-1);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.time-picker .button:hover,.time-picker .button:focus{background-color:var(--calcite-ui-foreground-2);outline:2px solid transparent;outline-offset:2px}.time-picker .button:active{background-color:var(--calcite-ui-foreground-3)}.time-picker .button.top-left{border-top-left-radius:var(--calcite-border-radius)}.time-picker .button.bottom-left{border-bottom-left-radius:var(--calcite-border-radius)}.time-picker .button.top-right{border-top-right-radius:var(--calcite-border-radius)}.time-picker .button.bottom-right{border-bottom-right-radius:var(--calcite-border-radius)}.time-picker .button calcite-icon{color:var(--calcite-ui-text-3)}.time-picker .input{background-color:var(--calcite-ui-foreground-1);cursor:pointer;font-weight:var(--calcite-font-weight-medium);display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.time-picker .input:hover{-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-2);box-shadow:inset 0 0 0 2px var(--calcite-ui-foreground-2)}.time-picker .input:focus,.time-picker .input:hover:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:inset 0 0 0 2px var(--calcite-ui-brand);box-shadow:inset 0 0 0 2px var(--calcite-ui-brand)}.time-picker.scale-s{font-size:var(--calcite-font-size--1)}.time-picker.scale-s .button,.time-picker.scale-s .input{padding-left:0.75rem;padding-right:0.75rem;padding-top:0.25rem;padding-bottom:0.25rem}.time-picker.scale-s:not(.show-meridiem) .delimiter:last-child{-webkit-padding-end:0.75rem;padding-inline-end:0.75rem}.time-picker.scale-m{font-size:var(--calcite-font-size-0)}.time-picker.scale-m .button,.time-picker.scale-m .input{padding-left:1rem;padding-right:1rem;padding-top:0.5rem;padding-bottom:0.5rem}.time-picker.scale-m:not(.show-meridiem) .delimiter:last-child{-webkit-padding-end:1rem;padding-inline-end:1rem}.time-picker.scale-l{font-size:var(--calcite-font-size-1)}.time-picker.scale-l .button,.time-picker.scale-l .input{padding-left:1.25rem;padding-right:1.25rem;padding-top:0.75rem;padding-bottom:0.75rem}.time-picker.scale-l:not(.show-meridiem) .delimiter:last-child{-webkit-padding-end:1.25rem;padding-inline-end:1.25rem}";
22983
23104
 
23105
+ function capitalize(str) {
23106
+ return str.charAt(0).toUpperCase() + str.slice(1);
23107
+ }
22984
23108
  let CalciteTimePicker$1 = class extends HTMLElement$1 {
22985
23109
  constructor() {
22986
23110
  super();
@@ -22994,10 +23118,6 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
22994
23118
  // Properties
22995
23119
  //
22996
23120
  //--------------------------------------------------------------------------
22997
- /** The hour value (24-hour format) */
22998
- this.hour = null;
22999
- /** Format of the hour value (12-hour or 24-hour) (this will be replaced by locale eventually) */
23000
- this.hourDisplayFormat = "12";
23001
23121
  /** aria-label for the hour input
23002
23122
  * @default "Hour"
23003
23123
  */
@@ -23046,35 +23166,25 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23046
23166
  * @default "Increase second"
23047
23167
  */
23048
23168
  this.intlSecondUp = TEXT$2.secondUp;
23049
- /** The minute value */
23050
- this.minute = null;
23051
- /** The second value */
23052
- this.second = null;
23169
+ /**
23170
+ * BCP 47 language tag for desired language and country format
23171
+ * @internal
23172
+ */
23173
+ this.locale = document.documentElement.lang || navigator.language || "en";
23053
23174
  /** The scale (size) of the time picker */
23054
23175
  this.scale = "m";
23055
23176
  /** number that specifies the granularity that the value must adhere to */
23056
23177
  this.step = 60;
23057
- this.timeChanged = false;
23058
- // --------------------------------------------------------------------------
23059
- //
23060
- // State
23061
- //
23062
- // --------------------------------------------------------------------------
23063
- /** The am/pm value */
23064
- this.meridiem = null;
23065
- this.displayHour = this.getDisplayHour();
23066
- // --------------------------------------------------------------------------
23067
- //
23068
- // Private Methods
23069
- //
23070
- // --------------------------------------------------------------------------
23178
+ /** The selected time in UTC */
23179
+ this.value = null;
23180
+ this.showSecond = this.step < 60;
23071
23181
  this.decrementHour = () => {
23072
23182
  const newHour = !this.hour ? 0 : this.hour === "00" ? 23 : parseInt(this.hour) - 1;
23073
- this.setTime("hour", newHour);
23183
+ this.setValuePart("hour", newHour);
23074
23184
  };
23075
23185
  this.decrementMeridiem = () => {
23076
23186
  const newMeridiem = this.meridiem === "PM" ? "AM" : "PM";
23077
- this.setTime("meridiem", newMeridiem);
23187
+ this.setValuePart("meridiem", newMeridiem);
23078
23188
  };
23079
23189
  this.decrementMinuteOrSecond = (key) => {
23080
23190
  let newValue;
@@ -23085,7 +23195,7 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23085
23195
  else {
23086
23196
  newValue = 59;
23087
23197
  }
23088
- this.setTime(key, newValue);
23198
+ this.setValuePart(key, newValue);
23089
23199
  };
23090
23200
  this.decrementMinute = () => {
23091
23201
  this.decrementMinuteOrSecond("minute");
@@ -23107,7 +23217,7 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23107
23217
  const keyAsNumber = parseInt(key);
23108
23218
  let newHour;
23109
23219
  if (isValidNumber(this.hour)) {
23110
- switch (this.hourDisplayFormat) {
23220
+ switch (this.hourCycle) {
23111
23221
  case "12":
23112
23222
  newHour =
23113
23223
  this.hour === "01" && keyAsNumber >= 0 && keyAsNumber <= 2
@@ -23130,13 +23240,13 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23130
23240
  else {
23131
23241
  newHour = keyAsNumber;
23132
23242
  }
23133
- this.setTime("hour", newHour);
23243
+ this.setValuePart("hour", newHour);
23134
23244
  }
23135
23245
  else {
23136
23246
  switch (key) {
23137
23247
  case "Backspace":
23138
23248
  case "Delete":
23139
- this.setTime("hour", null);
23249
+ this.setValuePart("hour", null);
23140
23250
  break;
23141
23251
  case "ArrowDown":
23142
23252
  event.preventDefault();
@@ -23160,7 +23270,7 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23160
23270
  };
23161
23271
  this.incrementMeridiem = () => {
23162
23272
  const newMeridiem = this.meridiem === "AM" ? "PM" : "AM";
23163
- this.setTime("meridiem", newMeridiem);
23273
+ this.setValuePart("meridiem", newMeridiem);
23164
23274
  };
23165
23275
  this.incrementHour = () => {
23166
23276
  const newHour = isValidNumber(this.hour)
@@ -23168,7 +23278,7 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23168
23278
  ? 0
23169
23279
  : parseInt(this.hour) + 1
23170
23280
  : 1;
23171
- this.setTime("hour", newHour);
23281
+ this.setValuePart("hour", newHour);
23172
23282
  };
23173
23283
  this.incrementMinuteOrSecond = (key) => {
23174
23284
  const newValue = isValidNumber(this[key])
@@ -23176,7 +23286,7 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23176
23286
  ? 0
23177
23287
  : parseInt(this[key]) + 1
23178
23288
  : 0;
23179
- this.setTime(key, newValue);
23289
+ this.setValuePart(key, newValue);
23180
23290
  };
23181
23291
  this.incrementMinute = () => {
23182
23292
  this.incrementMinuteOrSecond("minute");
@@ -23192,14 +23302,14 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23192
23302
  this.meridiemKeyDownHandler = (event) => {
23193
23303
  switch (event.key) {
23194
23304
  case "a":
23195
- this.setTime("meridiem", "AM");
23305
+ this.setValuePart("meridiem", "AM");
23196
23306
  break;
23197
23307
  case "p":
23198
- this.setTime("meridiem", "PM");
23308
+ this.setValuePart("meridiem", "PM");
23199
23309
  break;
23200
23310
  case "Backspace":
23201
23311
  case "Delete":
23202
- this.setTime("meridiem", null);
23312
+ this.setValuePart("meridiem", null);
23203
23313
  break;
23204
23314
  case "ArrowUp":
23205
23315
  event.preventDefault();
@@ -23240,13 +23350,13 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23240
23350
  else {
23241
23351
  newMinute = keyAsNumber;
23242
23352
  }
23243
- this.setTime("minute", newMinute);
23353
+ this.setValuePart("minute", newMinute);
23244
23354
  }
23245
23355
  else {
23246
23356
  switch (key) {
23247
23357
  case "Backspace":
23248
23358
  case "Delete":
23249
- this.setTime("minute", null);
23359
+ this.setValuePart("minute", null);
23250
23360
  break;
23251
23361
  case "ArrowDown":
23252
23362
  event.preventDefault();
@@ -23288,13 +23398,13 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23288
23398
  else {
23289
23399
  newSecond = keyAsNumber;
23290
23400
  }
23291
- this.setTime("second", newSecond);
23401
+ this.setValuePart("second", newSecond);
23292
23402
  }
23293
23403
  else {
23294
23404
  switch (key) {
23295
23405
  case "Backspace":
23296
23406
  case "Delete":
23297
- this.setTime("second", null);
23407
+ this.setValuePart("second", null);
23298
23408
  break;
23299
23409
  case "ArrowDown":
23300
23410
  event.preventDefault();
@@ -23316,59 +23426,96 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23316
23426
  this.incrementSecond();
23317
23427
  }
23318
23428
  };
23319
- this.setTime = (key, value, emit = true) => {
23320
- switch (key) {
23321
- default:
23322
- return;
23323
- case "hour":
23324
- this.hour = typeof value === "number" ? formatTimePart(value) : value;
23325
- break;
23326
- case "minute":
23327
- this.minute = typeof value === "number" ? formatTimePart(value) : value;
23328
- break;
23329
- case "second":
23330
- this.second = typeof value === "number" ? formatTimePart(value) : value;
23331
- break;
23332
- case "meridiem":
23333
- if (isValidNumber(this.hour)) {
23334
- const hourAsNumber = parseInt(this.hour);
23335
- switch (value) {
23336
- case "AM":
23337
- if (hourAsNumber >= 12) {
23338
- this.hour = formatTimePart(hourAsNumber - 12);
23339
- }
23340
- break;
23341
- case "PM":
23342
- if (hourAsNumber < 12) {
23343
- this.hour = formatTimePart(hourAsNumber + 12);
23344
- }
23345
- break;
23346
- }
23347
- this.meridiem = value;
23348
- }
23349
- else {
23350
- this.meridiem = value;
23429
+ this.setHourEl = (el) => (this.hourEl = el);
23430
+ this.setMeridiemEl = (el) => (this.meridiemEl = el);
23431
+ this.setMinuteEl = (el) => (this.minuteEl = el);
23432
+ this.setSecondEl = (el) => (this.secondEl = el);
23433
+ this.setValue = (value, emit = true) => {
23434
+ if (isValidTime(value)) {
23435
+ const { hour, minute, second } = parseTimeString(value);
23436
+ const { localizedHour, localizedHourSuffix, localizedMinute, localizedMinuteSuffix, localizedSecond, localizedSecondSuffix, localizedMeridiem } = localizeTimeStringToParts(value, this.locale);
23437
+ this.localizedHour = localizedHour;
23438
+ this.localizedHourSuffix = localizedHourSuffix;
23439
+ this.localizedMinute = localizedMinute;
23440
+ this.localizedMinuteSuffix = localizedMinuteSuffix;
23441
+ this.localizedSecond = localizedSecond;
23442
+ this.localizedSecondSuffix = localizedSecondSuffix;
23443
+ this.hour = hour;
23444
+ this.minute = minute;
23445
+ this.second = second;
23446
+ if (localizedMeridiem) {
23447
+ this.localizedMeridiem = localizedMeridiem;
23448
+ this.meridiem = getMeridiem(this.hour);
23449
+ }
23450
+ }
23451
+ else {
23452
+ this.hour = null;
23453
+ this.localizedHour = null;
23454
+ this.localizedHourSuffix = null;
23455
+ this.localizedMeridiem = null;
23456
+ this.localizedMinute = null;
23457
+ this.localizedMinuteSuffix = null;
23458
+ this.localizedSecond = null;
23459
+ this.localizedSecondSuffix = null;
23460
+ this.meridiem = null;
23461
+ this.minute = null;
23462
+ this.second = null;
23463
+ this.value = null;
23464
+ }
23465
+ if (emit) {
23466
+ this.calciteTimePickerChange.emit();
23467
+ }
23468
+ };
23469
+ this.setValuePart = (key, value, emit = true) => {
23470
+ var _a;
23471
+ if (key === "meridiem") {
23472
+ this.meridiem = value;
23473
+ if (isValidNumber(this.hour)) {
23474
+ const hourAsNumber = parseInt(this.hour);
23475
+ switch (value) {
23476
+ case "AM":
23477
+ if (hourAsNumber >= 12) {
23478
+ this.hour = formatTimePart(hourAsNumber - 12);
23479
+ }
23480
+ break;
23481
+ case "PM":
23482
+ if (hourAsNumber < 12) {
23483
+ this.hour = formatTimePart(hourAsNumber + 12);
23484
+ }
23485
+ break;
23351
23486
  }
23352
- break;
23487
+ this.localizedHour = localizeTimePart(this.hour, "hour", this.locale);
23488
+ }
23489
+ }
23490
+ else {
23491
+ this[key] = typeof value === "number" ? formatTimePart(value) : value;
23492
+ this[`localized${capitalize(key)}`] = localizeTimePart(this[key], key, this.locale);
23493
+ }
23494
+ if (this.hour && this.minute) {
23495
+ const showSeconds = this.second && this.showSecond;
23496
+ this.value = `${this.hour}:${this.minute}:${showSeconds ? this.second : "00"}`;
23353
23497
  }
23354
- this.timeChanged = true;
23498
+ else {
23499
+ this.value = null;
23500
+ }
23501
+ this.localizedMeridiem = this.value
23502
+ ? ((_a = localizeTimeStringToParts(this.value, this.locale)) === null || _a === void 0 ? void 0 : _a.localizedMeridiem) || null
23503
+ : localizeTimePart(this.meridiem, "meridiem", this.locale);
23355
23504
  if (emit) {
23356
- this.calciteTimePickerChange.emit(this.getTime());
23505
+ this.calciteTimePickerChange.emit();
23357
23506
  }
23358
23507
  };
23359
23508
  }
23360
- hourChanged(newHour) {
23361
- if (this.hourDisplayFormat === "12" && isValidNumber(newHour)) {
23362
- this.meridiem = getMeridiem(newHour);
23363
- }
23509
+ localeWatcher(newLocale) {
23510
+ this.hourCycle = getLocaleHourCycle(newLocale);
23511
+ this.setValue(this.value, false);
23364
23512
  }
23365
- timeChangeHandler() {
23366
- const { hour, minute } = this.getTime();
23367
- if (!hour && !minute) {
23368
- this.setTime("meridiem", null, false);
23369
- }
23370
- if (this.timeChanged) {
23371
- this.timeChanged = false;
23513
+ valueWatcher(newValue) {
23514
+ this.setValue(newValue, false);
23515
+ }
23516
+ hourChanged(newHour) {
23517
+ if (this.meridiem && isValidNumber(newHour)) {
23518
+ this.setValuePart("meridiem", getMeridiem(newHour));
23372
23519
  }
23373
23520
  }
23374
23521
  //--------------------------------------------------------------------------
@@ -23399,7 +23546,7 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23399
23546
  if (this.step !== 60) {
23400
23547
  this.setFocus("second");
23401
23548
  }
23402
- else if (this.hourDisplayFormat === "12") {
23549
+ else if (this.hourCycle === "12") {
23403
23550
  this.setFocus("meridiem");
23404
23551
  }
23405
23552
  break;
@@ -23411,7 +23558,7 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23411
23558
  this.setFocus("minute");
23412
23559
  break;
23413
23560
  case "ArrowRight":
23414
- if (this.hourDisplayFormat === "12") {
23561
+ if (this.hourCycle === "12") {
23415
23562
  this.setFocus("meridiem");
23416
23563
  }
23417
23564
  break;
@@ -23441,6 +23588,11 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23441
23588
  var _a;
23442
23589
  (_a = this[`${target || "hour"}El`]) === null || _a === void 0 ? void 0 : _a.focus();
23443
23590
  }
23591
+ // --------------------------------------------------------------------------
23592
+ //
23593
+ // Private Methods
23594
+ //
23595
+ // --------------------------------------------------------------------------
23444
23596
  buttonActivated(event) {
23445
23597
  const key = event.key;
23446
23598
  if (key === " ") {
@@ -23448,40 +23600,14 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23448
23600
  }
23449
23601
  return isActivationKey(key);
23450
23602
  }
23451
- getDisplayHour() {
23452
- if (!this.hour) {
23453
- return "--";
23454
- }
23455
- if (this.hourDisplayFormat === "12") {
23456
- return getMeridiemHour(this.hour);
23457
- }
23458
- return this.hour;
23459
- }
23460
- getTime() {
23461
- return {
23462
- hour: this.hour,
23463
- minute: this.minute,
23464
- second: this.second
23465
- };
23466
- }
23467
23603
  // --------------------------------------------------------------------------
23468
23604
  //
23469
23605
  // Lifecycle
23470
23606
  //
23471
23607
  // --------------------------------------------------------------------------
23472
23608
  connectedCallback() {
23473
- if (this.hourDisplayFormat === "12") {
23474
- this.meridiem = getMeridiem(this.hour);
23475
- }
23476
- if (isValidNumber(this.hour)) {
23477
- this.hour = formatTimePart(parseInt(this.hour));
23478
- }
23479
- if (isValidNumber(this.minute)) {
23480
- this.minute = formatTimePart(parseInt(this.minute));
23481
- }
23482
- if (isValidNumber(this.second)) {
23483
- this.second = formatTimePart(parseInt(this.second));
23484
- }
23609
+ this.setValue(this.value, false);
23610
+ this.hourCycle = getLocaleHourCycle(this.locale);
23485
23611
  }
23486
23612
  // --------------------------------------------------------------------------
23487
23613
  //
@@ -23489,58 +23615,63 @@ let CalciteTimePicker$1 = class extends HTMLElement$1 {
23489
23615
  //
23490
23616
  // --------------------------------------------------------------------------
23491
23617
  render() {
23492
- const iconScale = this.scale === "s" || this.scale === "m" ? "s" : "m";
23493
- const includeSeconds = this.step !== 60;
23494
23618
  const hourIsNumber = isValidNumber(this.hour);
23619
+ const iconScale = this.scale === "s" || this.scale === "m" ? "s" : "m";
23495
23620
  const minuteIsNumber = isValidNumber(this.minute);
23496
23621
  const secondIsNumber = isValidNumber(this.second);
23497
- return (h(Host, null, h("div", { class: CSS$5.timePicker }, h("div", { role: "group" }, h("span", { "aria-label": this.intlHourUp, class: {
23622
+ const showMeridiem = this.hourCycle === "12";
23623
+ return (h("div", { class: {
23624
+ [CSS$5.timePicker]: true,
23625
+ [CSS$5.showMeridiem]: showMeridiem,
23626
+ [CSS$5.showSecond]: this.showSecond,
23627
+ [CSS$5[`scale-${this.scale}`]]: true
23628
+ } }, h("div", { class: CSS$5.column, role: "group" }, h("span", { "aria-label": this.intlHourUp, class: {
23498
23629
  [CSS$5.button]: true,
23499
23630
  [CSS$5.buttonHourUp]: true,
23500
23631
  [CSS$5.buttonTopLeft]: true
23501
- }, onClick: this.incrementHour, onKeyDown: this.hourUpButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-up", scale: iconScale })), h("span", { "aria-label": this.intlHour, "aria-valuemax": "23", "aria-valuemin": "1", "aria-valuenow": hourIsNumber && parseInt(this.hour), "aria-valuetext": this.hour, class: {
23632
+ }, onClick: this.incrementHour, onKeyDown: this.hourUpButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-up", scale: iconScale })), h("span", { "aria-label": this.intlHour, "aria-valuemax": "23", "aria-valuemin": "1", "aria-valuenow": (hourIsNumber && parseInt(this.hour)) || "0", "aria-valuetext": this.hour, class: {
23502
23633
  [CSS$5.input]: true,
23503
23634
  [CSS$5.hour]: true
23504
- }, onFocus: this.focusHandler, onKeyDown: this.hourKeyDownHandler, ref: (el) => (this.hourEl = el), role: "spinbutton", tabIndex: 0 }, this.getDisplayHour()), h("span", { "aria-label": this.intlHourDown, class: {
23635
+ }, onFocus: this.focusHandler, onKeyDown: this.hourKeyDownHandler, ref: this.setHourEl, role: "spinbutton", tabIndex: 0 }, this.localizedHour || "--"), h("span", { "aria-label": this.intlHourDown, class: {
23505
23636
  [CSS$5.button]: true,
23506
23637
  [CSS$5.buttonHourDown]: true,
23507
23638
  [CSS$5.buttonBottomLeft]: true
23508
- }, onClick: this.decrementHour, onKeyDown: this.hourDownButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-down", scale: iconScale }))), h("span", { class: CSS$5.delimiter }, ":"), h("div", { role: "group" }, h("span", { "aria-label": this.intlMinuteUp, class: {
23639
+ }, onClick: this.decrementHour, onKeyDown: this.hourDownButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-down", scale: iconScale }))), h("span", { class: CSS$5.delimiter }, this.localizedHourSuffix), h("div", { class: CSS$5.column, role: "group" }, h("span", { "aria-label": this.intlMinuteUp, class: {
23509
23640
  [CSS$5.button]: true,
23510
23641
  [CSS$5.buttonMinuteUp]: true
23511
- }, onClick: this.incrementMinute, onKeyDown: this.minuteUpButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-up", scale: iconScale })), h("span", { "aria-label": this.intlMinute, "aria-valuemax": "12", "aria-valuemin": "1", "aria-valuenow": minuteIsNumber && parseInt(this.minute), "aria-valuetext": this.minute, class: {
23642
+ }, onClick: this.incrementMinute, onKeyDown: this.minuteUpButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-up", scale: iconScale })), h("span", { "aria-label": this.intlMinute, "aria-valuemax": "12", "aria-valuemin": "1", "aria-valuenow": (minuteIsNumber && parseInt(this.minute)) || "0", "aria-valuetext": this.minute, class: {
23512
23643
  [CSS$5.input]: true,
23513
23644
  [CSS$5.minute]: true
23514
- }, onFocus: this.focusHandler, onKeyDown: this.minuteKeyDownHandler, ref: (el) => (this.minuteEl = el), role: "spinbutton", tabIndex: 0 }, this.minute ? this.minute : "--"), h("span", { "aria-label": this.intlMinuteDown, class: {
23645
+ }, onFocus: this.focusHandler, onKeyDown: this.minuteKeyDownHandler, ref: this.setMinuteEl, role: "spinbutton", tabIndex: 0 }, this.localizedMinute || "--"), h("span", { "aria-label": this.intlMinuteDown, class: {
23515
23646
  [CSS$5.button]: true,
23516
23647
  [CSS$5.buttonMinuteDown]: true
23517
- }, onClick: this.decrementMinute, onKeyDown: this.minuteDownButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-down", scale: iconScale }))), includeSeconds && h("span", { class: CSS$5.delimiter }, ":"), includeSeconds && (h("div", { role: "group" }, h("span", { "aria-label": this.intlSecondUp, class: {
23648
+ }, onClick: this.decrementMinute, onKeyDown: this.minuteDownButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-down", scale: iconScale }))), this.showSecond && h("span", { class: CSS$5.delimiter }, this.localizedMinuteSuffix), this.showSecond && (h("div", { class: CSS$5.column, role: "group" }, h("span", { "aria-label": this.intlSecondUp, class: {
23518
23649
  [CSS$5.button]: true,
23519
23650
  [CSS$5.buttonSecondUp]: true
23520
- }, onClick: this.incrementSecond, onKeyDown: this.secondUpButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-up", scale: iconScale })), h("span", { "aria-label": this.intlSecond, "aria-valuemax": "59", "aria-valuemin": "0", "aria-valuenow": secondIsNumber && parseInt(this.second), "aria-valuetext": this.second, class: {
23651
+ }, onClick: this.incrementSecond, onKeyDown: this.secondUpButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-up", scale: iconScale })), h("span", { "aria-label": this.intlSecond, "aria-valuemax": "59", "aria-valuemin": "0", "aria-valuenow": (secondIsNumber && parseInt(this.second)) || "0", "aria-valuetext": this.second, class: {
23521
23652
  [CSS$5.input]: true,
23522
23653
  [CSS$5.second]: true
23523
- }, onFocus: this.focusHandler, onKeyDown: this.secondKeyDownHandler, ref: (el) => (this.secondEl = el), role: "spinbutton", tabIndex: 0 }, this.second ? this.second : "--"), h("span", { "aria-label": this.intlSecondDown, class: {
23654
+ }, onFocus: this.focusHandler, onKeyDown: this.secondKeyDownHandler, ref: this.setSecondEl, role: "spinbutton", tabIndex: 0 }, this.localizedSecond || "--"), h("span", { "aria-label": this.intlSecondDown, class: {
23524
23655
  [CSS$5.button]: true,
23525
23656
  [CSS$5.buttonSecondDown]: true
23526
- }, onClick: this.decrementSecond, onKeyDown: this.secondDownButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-down", scale: iconScale })))), this.hourDisplayFormat === "12" && (h("div", { role: "group" }, h("span", { "aria-label": this.intlMeridiemUp, class: {
23657
+ }, onClick: this.decrementSecond, onKeyDown: this.secondDownButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-down", scale: iconScale })))), this.localizedSecondSuffix && (h("span", { class: CSS$5.delimiter }, this.localizedSecondSuffix)), showMeridiem && (h("div", { class: CSS$5.column, role: "group" }, h("span", { "aria-label": this.intlMeridiemUp, class: {
23527
23658
  [CSS$5.button]: true,
23528
23659
  [CSS$5.buttonMeridiemUp]: true,
23529
23660
  [CSS$5.buttonTopRight]: true
23530
- }, onClick: this.incrementMeridiem, onKeyDown: this.meridiemUpButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-up", scale: iconScale })), h("span", { "aria-label": this.intlMeridiem, "aria-valuemax": "2", "aria-valuemin": "1", "aria-valuenow": this.meridiem === "AM" ? "1" : this.meridiem === "PM" ? "2" : undefined, "aria-valuetext": this.meridiem, class: {
23661
+ }, onClick: this.incrementMeridiem, onKeyDown: this.meridiemUpButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-up", scale: iconScale })), h("span", { "aria-label": this.intlMeridiem, "aria-valuemax": "2", "aria-valuemin": "1", "aria-valuenow": (this.meridiem === "PM" && "2") || "1", "aria-valuetext": this.meridiem, class: {
23531
23662
  [CSS$5.input]: true,
23532
23663
  [CSS$5.meridiem]: true
23533
- }, onFocus: this.focusHandler, onKeyDown: this.meridiemKeyDownHandler, ref: (el) => (this.meridiemEl = el), role: "spinbutton", tabIndex: 0 }, this.meridiem ? this.meridiem : "--"), h("span", { "aria-label": this.intlMeridiemDown, class: {
23664
+ }, onFocus: this.focusHandler, onKeyDown: this.meridiemKeyDownHandler, ref: this.setMeridiemEl, role: "spinbutton", tabIndex: 0 }, this.localizedMeridiem || "--"), h("span", { "aria-label": this.intlMeridiemDown, class: {
23534
23665
  [CSS$5.button]: true,
23535
23666
  [CSS$5.buttonMeridiemDown]: true,
23536
23667
  [CSS$5.buttonBottomRight]: true
23537
- }, onClick: this.decrementMeridiem, onKeyDown: this.meridiemDownButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-down", scale: iconScale })))))));
23668
+ }, onClick: this.decrementMeridiem, onKeyDown: this.meridiemDownButtonKeyDownHandler, role: "button", tabIndex: -1 }, h("calcite-icon", { icon: "chevron-down", scale: iconScale }))))));
23538
23669
  }
23539
23670
  get el() { return this; }
23540
23671
  static get watchers() { return {
23541
- "hour": ["hourChanged", "timeChangeHandler"],
23542
- "minute": ["timeChangeHandler"],
23543
- "second": ["timeChangeHandler"]
23672
+ "locale": ["localeWatcher"],
23673
+ "value": ["valueWatcher"],
23674
+ "hour": ["hourChanged"]
23544
23675
  }; }
23545
23676
  static get style() { return calciteTimePickerCss; }
23546
23677
  };
@@ -24983,7 +25114,7 @@ const CalciteInlineEditable = /*@__PURE__*/proxyCustomElement(CalciteInlineEdita
24983
25114
  const CalciteInput = /*@__PURE__*/proxyCustomElement(CalciteInput$1, [1,"calcite-input",{"alignment":[513],"autofocus":[4],"clearable":[516],"disabled":[516],"groupSeparator":[4,"group-separator"],"hidden":[4],"icon":[520],"intlLoading":[1,"intl-loading"],"iconFlipRtl":[516,"icon-flip-rtl"],"label":[1],"loading":[516],"locale":[1],"localeFormat":[4,"locale-format"],"max":[514],"min":[514],"maxlength":[514],"maxLength":[514,"max-length"],"minLength":[514,"min-length"],"name":[513],"numberButtonType":[513,"number-button-type"],"placeholder":[1],"prefixText":[1,"prefix-text"],"readOnly":[4,"read-only"],"required":[4],"scale":[1537],"status":[1537],"step":[520],"suffixText":[1,"suffix-text"],"editingEnabled":[1540,"editing-enabled"],"type":[513],"value":[1025],"localizedValue":[32]}]);
24984
25115
  const CalciteInputDatePicker = /*@__PURE__*/proxyCustomElement(CalciteInputDatePicker$1, [1,"calcite-input-date-picker",{"disabled":[516],"value":[1025],"headingLevel":[2,"heading-level"],"valueAsDate":[1040],"startAsDate":[1040],"endAsDate":[1040],"minAsDate":[1040],"maxAsDate":[1040],"min":[1],"max":[1],"active":[1540],"name":[1],"intlPrevMonth":[1,"intl-prev-month"],"intlNextMonth":[1,"intl-next-month"],"locale":[1],"scale":[513],"range":[516],"required":[516],"start":[1025],"end":[1025],"overlayPositioning":[1,"overlay-positioning"],"proximitySelectionDisabled":[4,"proximity-selection-disabled"],"layout":[513],"focusedInput":[32],"localeData":[32]},[[0,"calciteDaySelect","calciteDaySelectHandler"]]]);
24985
25116
  const CalciteInputMessage = /*@__PURE__*/proxyCustomElement(CalciteInputMessage$1, [1,"calcite-input-message",{"active":[516],"icon":[520],"scale":[1537],"status":[1537],"type":[513]}]);
24986
- const CalciteInputTimePicker = /*@__PURE__*/proxyCustomElement(CalciteInputTimePicker$1, [1,"calcite-input-time-picker",{"active":[1540],"disabled":[516],"hourDisplayFormat":[1,"hour-display-format"],"intlHour":[1,"intl-hour"],"intlHourDown":[1,"intl-hour-down"],"intlHourUp":[1,"intl-hour-up"],"intlMeridiem":[1,"intl-meridiem"],"intlMeridiemDown":[1,"intl-meridiem-down"],"intlMeridiemUp":[1,"intl-meridiem-up"],"intlMinute":[1,"intl-minute"],"intlMinuteDown":[1,"intl-minute-down"],"intlMinuteUp":[1,"intl-minute-up"],"intlSecond":[1,"intl-second"],"intlSecondDown":[1,"intl-second-down"],"intlSecondUp":[1,"intl-second-up"],"name":[1],"required":[516],"scale":[513],"step":[2],"value":[1025]},[[0,"keyup","keyUpHandler"],[0,"calciteTimePickerBlur","timePickerBlurHandler"],[0,"calciteTimePickerChange","timePickerChangeHandler"],[0,"calciteTimePickerFocus","timePickerFocusHandler"]]]);
25117
+ const CalciteInputTimePicker = /*@__PURE__*/proxyCustomElement(CalciteInputTimePicker$1, [1,"calcite-input-time-picker",{"active":[1540],"disabled":[516],"intlHour":[1,"intl-hour"],"intlHourDown":[1,"intl-hour-down"],"intlHourUp":[1,"intl-hour-up"],"intlMeridiem":[1,"intl-meridiem"],"intlMeridiemDown":[1,"intl-meridiem-down"],"intlMeridiemUp":[1,"intl-meridiem-up"],"intlMinute":[1,"intl-minute"],"intlMinuteDown":[1,"intl-minute-down"],"intlMinuteUp":[1,"intl-minute-up"],"intlSecond":[1,"intl-second"],"intlSecondDown":[1,"intl-second-down"],"intlSecondUp":[1,"intl-second-up"],"locale":[1025,"lang"],"name":[1],"required":[516],"scale":[513],"step":[2],"value":[1025],"localizedValue":[32]},[[0,"click","clickHandler"],[0,"keyup","keyUpHandler"],[0,"calciteTimePickerBlur","timePickerBlurHandler"],[0,"calciteTimePickerFocus","timePickerFocusHandler"]]]);
24987
25118
  const CalciteLabel = /*@__PURE__*/proxyCustomElement(CalciteLabel$1, [1,"calcite-label",{"alignment":[513],"status":[513],"for":[513],"scale":[513],"layout":[513],"disableSpacing":[4,"disable-spacing"],"disabled":[516]}]);
24988
25119
  const CalciteLink = /*@__PURE__*/proxyCustomElement(CalciteLink$1, [1,"calcite-link",{"disabled":[516],"href":[513],"iconEnd":[513,"icon-end"],"iconFlipRtl":[513,"icon-flip-rtl"],"iconStart":[513,"icon-start"],"rel":[1],"target":[1],"childElType":[32]}]);
24989
25120
  const CalciteList = /*@__PURE__*/proxyCustomElement(CalciteList$1, [1,"calcite-list",{"headingLevel":[2,"heading-level"]}]);
@@ -25026,7 +25157,7 @@ const CalciteTabs = /*@__PURE__*/proxyCustomElement(CalciteTabs$1, [1,"calcite-t
25026
25157
  const CalciteTile = /*@__PURE__*/proxyCustomElement(CalciteTile$1, [1,"calcite-tile",{"active":[516],"description":[513],"disabled":[516],"embed":[516],"focused":[516],"heading":[513],"hidden":[516],"href":[513],"icon":[513]}]);
25027
25158
  const CalciteTileSelect = /*@__PURE__*/proxyCustomElement(CalciteTileSelect$1, [1,"calcite-tile-select",{"checked":[1540],"description":[513],"disabled":[516],"heading":[513],"hidden":[516],"icon":[513],"name":[520],"inputEnabled":[516,"input-enabled"],"inputAlignment":[513,"input-alignment"],"type":[513],"value":[8],"width":[513],"focused":[32]},[[0,"calciteCheckboxChange","checkboxChangeHandler"],[0,"calciteInternalCheckboxFocus","checkboxFocusBlurHandler"],[0,"calciteInternalCheckboxBlur","checkboxFocusBlurHandler"],[0,"calciteRadioButtonChange","radioButtonChangeHandler"],[0,"calciteInternalRadioButtonCheckedChange","radioButtonCheckedChangeHandler"],[0,"calciteInternalRadioButtonFocus","radioButtonFocusBlurHandler"],[0,"calciteInternalRadioButtonBlur","radioButtonFocusBlurHandler"],[0,"click","click"],[1,"mouseenter","mouseenter"],[1,"mouseleave","mouseleave"]]]);
25028
25159
  const CalciteTileSelectGroup = /*@__PURE__*/proxyCustomElement(CalciteTileSelectGroup$1, [1,"calcite-tile-select-group",{"layout":[513]}]);
25029
- const CalciteTimePicker = /*@__PURE__*/proxyCustomElement(CalciteTimePicker$1, [1,"calcite-time-picker",{"hour":[1025],"hourDisplayFormat":[513,"hour-display-format"],"intlHour":[1,"intl-hour"],"intlHourDown":[1,"intl-hour-down"],"intlHourUp":[1,"intl-hour-up"],"intlMeridiem":[1,"intl-meridiem"],"intlMeridiemDown":[1,"intl-meridiem-down"],"intlMeridiemUp":[1,"intl-meridiem-up"],"intlMinute":[1,"intl-minute"],"intlMinuteDown":[1,"intl-minute-down"],"intlMinuteUp":[1,"intl-minute-up"],"intlSecond":[1,"intl-second"],"intlSecondDown":[1,"intl-second-down"],"intlSecondUp":[1,"intl-second-up"],"minute":[1025],"second":[1025],"scale":[513],"step":[514],"meridiem":[32],"displayHour":[32]},[[0,"blur","hostBlurHandler"],[0,"focus","hostFocusHandler"],[0,"keydown","keyDownHandler"]]]);
25160
+ const CalciteTimePicker = /*@__PURE__*/proxyCustomElement(CalciteTimePicker$1, [1,"calcite-time-picker",{"intlHour":[1,"intl-hour"],"intlHourDown":[1,"intl-hour-down"],"intlHourUp":[1,"intl-hour-up"],"intlMeridiem":[1,"intl-meridiem"],"intlMeridiemDown":[1,"intl-meridiem-down"],"intlMeridiemUp":[1,"intl-meridiem-up"],"intlMinute":[1,"intl-minute"],"intlMinuteDown":[1,"intl-minute-down"],"intlMinuteUp":[1,"intl-minute-up"],"intlSecond":[1,"intl-second"],"intlSecondDown":[1,"intl-second-down"],"intlSecondUp":[1,"intl-second-up"],"locale":[1025,"lang"],"scale":[1],"step":[2],"value":[1025],"hour":[32],"hourCycle":[32],"localizedHour":[32],"localizedHourSuffix":[32],"localizedMeridiem":[32],"localizedMinute":[32],"localizedMinuteSuffix":[32],"localizedSecond":[32],"localizedSecondSuffix":[32],"meridiem":[32],"minute":[32],"second":[32],"showSecond":[32]},[[0,"blur","hostBlurHandler"],[0,"focus","hostFocusHandler"],[0,"keydown","keyDownHandler"]]]);
25030
25161
  const CalciteTip = /*@__PURE__*/proxyCustomElement(CalciteTip$1, [1,"calcite-tip",{"dismissed":[1540],"nonDismissible":[516,"non-dismissible"],"heading":[1],"headingLevel":[2,"heading-level"],"selected":[516],"intlClose":[1,"intl-close"]}]);
25031
25162
  const CalciteTipGroup = /*@__PURE__*/proxyCustomElement(CalciteTipGroup$1, [1,"calcite-tip-group",{"groupTitle":[1,"group-title"]}]);
25032
25163
  const CalciteTipManager = /*@__PURE__*/proxyCustomElement(CalciteTipManager$1, [1,"calcite-tip-manager",{"closed":[1540],"headingLevel":[2,"heading-level"],"intlClose":[1,"intl-close"],"intlDefaultTitle":[1,"intl-default-title"],"intlNext":[1,"intl-next"],"intlPaginationLabel":[1,"intl-pagination-label"],"intlPrevious":[1,"intl-previous"],"selectedIndex":[32],"tips":[32],"total":[32],"direction":[32],"groupTitle":[32]}]);