@esri/calcite-components 1.0.0-next.421 → 1.0.0-next.424

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 (56) hide show
  1. package/dist/calcite/calcite.esm.js +1 -1
  2. package/dist/calcite/calcite.js +1 -1
  3. package/dist/calcite/p-0ba91238.system.entry.js +5 -0
  4. package/dist/calcite/{p-afe59546.entry.js → p-2139226c.entry.js} +1 -1
  5. package/dist/calcite/p-2692ac43.entry.js +5 -0
  6. package/dist/calcite/p-58392046.system.entry.js +5 -0
  7. package/dist/calcite/p-62afcb36.system.js +5 -0
  8. package/dist/calcite/p-69d5736f.entry.js +5 -0
  9. package/dist/calcite/p-7fb5fec5.entry.js +5 -0
  10. package/dist/calcite/p-958600ba.system.entry.js +5 -0
  11. package/dist/calcite/{p-9ad8c7c5.system.entry.js → p-fe3f4e0e.system.entry.js} +1 -1
  12. package/dist/cjs/calcite-date-picker_4.cjs.entry.js +27 -19
  13. package/dist/cjs/calcite-graph_2.cjs.entry.js +67 -38
  14. package/dist/cjs/calcite-input-date-picker.cjs.entry.js +10 -5
  15. package/dist/cjs/calcite-input-time-picker_2.cjs.entry.js +6 -1
  16. package/dist/cjs/calcite.cjs.js +2 -2
  17. package/dist/cjs/loader.cjs.js +2 -2
  18. package/dist/collection/collection-manifest.json +1 -1
  19. package/dist/collection/components/date-picker-month-header/date-picker-month-header.js +27 -19
  20. package/dist/collection/components/input-date-picker/input-date-picker.css +5 -0
  21. package/dist/collection/components/input-date-picker/input-date-picker.js +35 -4
  22. package/dist/collection/components/input-time-picker/input-time-picker.js +32 -1
  23. package/dist/collection/components/slider/slider.js +76 -41
  24. package/dist/components/calcite-input-date-picker.js +12 -6
  25. package/dist/components/calcite-input-time-picker.js +7 -1
  26. package/dist/components/calcite-slider.js +67 -38
  27. package/dist/components/date-picker-month-header.js +27 -19
  28. package/dist/custom-elements/index.js +112 -65
  29. package/dist/esm/calcite-date-picker_4.entry.js +27 -19
  30. package/dist/esm/calcite-graph_2.entry.js +67 -38
  31. package/dist/esm/calcite-input-date-picker.entry.js +11 -6
  32. package/dist/esm/calcite-input-time-picker_2.entry.js +6 -1
  33. package/dist/esm/calcite.js +2 -2
  34. package/dist/esm/loader.js +2 -2
  35. package/dist/esm-es5/calcite-date-picker_4.entry.js +1 -1
  36. package/dist/esm-es5/calcite-graph_2.entry.js +1 -1
  37. package/dist/esm-es5/calcite-input-date-picker.entry.js +1 -1
  38. package/dist/esm-es5/calcite-input-time-picker_2.entry.js +1 -1
  39. package/dist/esm-es5/calcite.js +1 -1
  40. package/dist/esm-es5/loader.js +1 -1
  41. package/dist/extras/docs-json.json +94 -4
  42. package/dist/types/components/date-picker-month-header/date-picker-month-header.d.ts +3 -1
  43. package/dist/types/components/input-date-picker/input-date-picker.d.ts +6 -1
  44. package/dist/types/components/input-time-picker/input-time-picker.d.ts +6 -0
  45. package/dist/types/components/slider/slider.d.ts +5 -2
  46. package/dist/types/components.d.ts +22 -2
  47. package/hydrate/index.js +115 -66
  48. package/package.json +14 -14
  49. package/readme.md +2 -2
  50. package/dist/calcite/p-872e82a6.system.entry.js +0 -5
  51. package/dist/calcite/p-a3527241.system.entry.js +0 -5
  52. package/dist/calcite/p-a38fe099.entry.js +0 -5
  53. package/dist/calcite/p-c4cb35ba.system.entry.js +0 -5
  54. package/dist/calcite/p-cb847074.entry.js +0 -5
  55. package/dist/calcite/p-e22ab8fa.entry.js +0 -5
  56. package/dist/calcite/p-fe9380a0.system.js +0 -5
@@ -755,20 +755,23 @@ const DatePickerMonthHeader = class {
755
755
  * Increment year on UP/DOWN keys
756
756
  */
757
757
  this.onYearKey = (e) => {
758
- const year = e.target.value;
758
+ const localizedYear = e.target.value;
759
759
  switch (e.key) {
760
760
  case "ArrowDown":
761
761
  e.preventDefault();
762
- this.setYear(year, -1);
762
+ this.setYear({ localizedYear, offset: -1 });
763
763
  break;
764
764
  case "ArrowUp":
765
765
  e.preventDefault();
766
- this.setYear(year, 1);
766
+ this.setYear({ localizedYear, offset: 1 });
767
767
  break;
768
768
  }
769
769
  };
770
- this.yearChanged = (event) => {
771
- this.setYear(event.target.value);
770
+ this.onYearChange = (event) => {
771
+ this.setYear({ localizedYear: event.target.value });
772
+ };
773
+ this.onYearInput = (event) => {
774
+ this.setYear({ localizedYear: event.target.value, commit: false });
772
775
  };
773
776
  this.prevMonthClick = (e) => {
774
777
  this.handleArrowClick(e, this.prevMonthDate);
@@ -824,7 +827,7 @@ const DatePickerMonthHeader = class {
824
827
  return (h(Fragment, null, h("a", { "aria-disabled": (this.prevMonthDate.getMonth() === activeMonth).toString(), "aria-label": this.intlPrevMonth, class: "chevron", href: "#", onClick: this.prevMonthClick, onKeyDown: this.prevMonthKeydown, role: "button", tabindex: this.prevMonthDate.getMonth() === activeMonth ? -1 : 0 }, h("calcite-icon", { "flip-rtl": true, icon: "chevron-left", scale: iconScale })), h("div", { class: { text: true, "text--reverse": reverse } }, h(Heading, { class: "month", level: this.headingLevel }, localizedMonth), h("span", { class: "year-wrap" }, h("input", { "aria-label": this.intlYear, class: {
825
828
  year: true,
826
829
  "year--suffix": !!suffix
827
- }, inputmode: "numeric", maxlength: "4", minlength: "1", onInput: this.yearChanged, onKeyDown: this.onYearKey, pattern: "\\d*", ref: (el) => (this.yearInput = el), type: "text", value: localizedYear }), suffix && (h("span", { class: "suffix" }, h("span", { "aria-hidden": "true", class: "suffix__invisible" }, localizedYear), " " + suffix)))), h("a", { "aria-disabled": (this.nextMonthDate.getMonth() === activeMonth).toString(), "aria-label": this.intlNextMonth, class: "chevron", href: "#", onClick: this.nextMonthClick, onKeyDown: this.nextMonthKeydown, role: "button", tabindex: this.nextMonthDate.getMonth() === activeMonth ? -1 : 0 }, h("calcite-icon", { "flip-rtl": true, icon: "chevron-right", scale: iconScale }))));
830
+ }, inputmode: "numeric", maxlength: "4", minlength: "1", onChange: this.onYearChange, onInput: this.onYearInput, onKeyDown: this.onYearKey, pattern: "\\d*", ref: (el) => (this.yearInput = el), type: "text", value: localizedYear }), suffix && (h("span", { class: "suffix" }, h("span", { "aria-hidden": "true", class: "suffix__invisible" }, localizedYear), " " + suffix)))), h("a", { "aria-disabled": (this.nextMonthDate.getMonth() === activeMonth).toString(), "aria-label": this.intlNextMonth, class: "chevron", href: "#", onClick: this.nextMonthClick, onKeyDown: this.nextMonthKeydown, role: "button", tabindex: this.nextMonthDate.getMonth() === activeMonth ? -1 : 0 }, h("calcite-icon", { "flip-rtl": true, icon: "chevron-right", scale: iconScale }))));
828
831
  }
829
832
  setNextPrevMonthDates() {
830
833
  if (!this.activeDate) {
@@ -833,27 +836,32 @@ const DatePickerMonthHeader = class {
833
836
  this.nextMonthDate = dateFromRange(nextMonth(this.activeDate), this.min, this.max);
834
837
  this.prevMonthDate = dateFromRange(prevMonth(this.activeDate), this.min, this.max);
835
838
  }
836
- /**
837
- * Parse localized year string from input,
838
- * set to active if in range
839
- */
840
- setYear(localizedYear, increment = 0) {
841
- const { min, max, activeDate, localeData, yearInput } = this;
839
+ getInRangeDate({ localizedYear, offset = 0 }) {
840
+ const { min, max, activeDate, localeData } = this;
842
841
  const parsedYear = parseNumber(localizedYear, localeData);
843
842
  const length = parsedYear.toString().length;
844
- const year = isNaN(parsedYear) ? false : parsedYear + increment;
843
+ const year = isNaN(parsedYear) ? false : parsedYear + offset;
845
844
  const inRange = year && (!min || min.getFullYear() <= year) && (!max || max.getFullYear() >= year);
846
- // if you've supplied a year and it's in range, update active date
845
+ // if you've supplied a year and it's in range
847
846
  if (year && inRange && length === localizedYear.length) {
848
847
  const nextDate = new Date(activeDate);
849
848
  nextDate.setFullYear(year);
850
- const inRangeDate = dateFromRange(nextDate, min, max);
849
+ return dateFromRange(nextDate, min, max);
850
+ }
851
+ }
852
+ /**
853
+ * Parse localized year string from input,
854
+ * set to active if in range
855
+ */
856
+ setYear({ localizedYear, commit = true, offset = 0 }) {
857
+ const { yearInput, activeDate, localeData } = this;
858
+ const inRangeDate = this.getInRangeDate({ localizedYear, offset });
859
+ // if you've supplied a year and it's in range, update active date
860
+ if (inRangeDate) {
851
861
  this.calciteDatePickerSelect.emit(inRangeDate);
852
- yearInput.value = localizeNumber(inRangeDate.getFullYear(), localeData);
853
862
  }
854
- else {
855
- // leave the current active date and clean up garbage input
856
- yearInput.value = localizeNumber(activeDate.getFullYear(), localeData);
863
+ if (commit) {
864
+ yearInput.value = localizeNumber((inRangeDate || activeDate).getFullYear(), localeData);
857
865
  }
858
866
  }
859
867
  get el() { return getElement(this); }
@@ -201,6 +201,9 @@ Graph.style = graphCss;
201
201
 
202
202
  const sliderCss = "@charset \"UTF-8\";@-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:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.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:var(--calcite-animation-timing)}:host([hidden]){display:none}.scale--s{--calcite-slider-handle-size:10px;--calcite-slider-handle-extension-height:6.5px;--calcite-slider-container-font-size:var(--calcite-font-size--3)}.scale--s .handle__label,.scale--s .tick__label{line-height:.75rem}.scale--m{--calcite-slider-handle-size:14px;--calcite-slider-handle-extension-height:8px;--calcite-slider-container-font-size:var(--calcite-font-size--2)}.scale--m .handle__label,.scale--m .tick__label{line-height:1rem}.scale--l{--calcite-slider-handle-size:16px;--calcite-slider-handle-extension-height:10.5px;--calcite-slider-container-font-size:var(--calcite-font-size--1)}.scale--l .handle__label,.scale--l .tick__label{line-height:1rem}.handle__label,.tick__label{font-weight:var(--calcite-font-weight-medium);color:var(--calcite-ui-text-2);font-size:var(--calcite-slider-container-font-size)}:host{display:block}.container{position:relative;display:block;padding:calc(var(--calcite-slider-handle-size) * 0.5);margin:calc(var(--calcite-slider-handle-size) * 0.5) 0;--calcite-slider-full-handle-height:calc(\n var(--calcite-slider-handle-size) + var(--calcite-slider-handle-extension-height)\n )}:host([disabled]){pointer-events:none;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:var(--calcite-ui-opacity-disabled)}:host([disabled]) .track__range,:host([disabled]) .tick--active{background-color:var(--calcite-ui-text-3)}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.scale--s .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset:-6px}.scale--m .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset:-8px}.scale--l .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset:-9px}:host([precise]:not([has-histogram])) .container .thumb--value{--calcite-slider-thumb-y-offset:calc(var(--calcite-slider-full-handle-height) * -1)}.thumb-container{position:relative;max-width:100%}.thumb{--calcite-slider-thumb-x-offset:calc(var(--calcite-slider-handle-size) * 0.5);position:absolute;margin:0px;display:-ms-flexbox;display:flex;cursor:pointer;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;border-style:none;background-color:transparent;padding:0px;font-family:inherit;outline:2px solid transparent;outline-offset:2px;-webkit-transform:translate(var(--calcite-slider-thumb-x-offset), var(--calcite-slider-thumb-y-offset));transform:translate(var(--calcite-slider-thumb-x-offset), var(--calcite-slider-thumb-y-offset))}.thumb .handle__label.static,.thumb .handle__label.transformed{position:absolute;top:0px;bottom:0px;opacity:0}.thumb .handle__label.hyphen::after{content:\"—\";display:inline-block;width:1em}.thumb .handle__label.hyphen--wrap{display:-ms-flexbox;display:flex}.thumb .handle{-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:9999px;background-color:var(--calcite-ui-foreground-1);outline-offset:0;outline-color:transparent;-webkit-transition:outline-offset 100ms ease-in-out, outline-color 100ms ease-in-out;transition:outline-offset 100ms ease-in-out, outline-color 100ms ease-in-out;height:var(--calcite-slider-handle-size);width:var(--calcite-slider-handle-size);-webkit-box-shadow:0 0 0 2px var(--calcite-ui-text-3) inset;box-shadow:0 0 0 2px var(--calcite-ui-text-3) inset;-webkit-transition:border var(--calcite-internal-animation-timing-medium) ease, background-color var(--calcite-internal-animation-timing-medium) ease, -webkit-box-shadow var(--calcite-animation-timing) ease;transition:border var(--calcite-internal-animation-timing-medium) ease, background-color var(--calcite-internal-animation-timing-medium) ease, -webkit-box-shadow var(--calcite-animation-timing) ease;transition:border var(--calcite-internal-animation-timing-medium) ease, background-color var(--calcite-internal-animation-timing-medium) ease, box-shadow var(--calcite-animation-timing) ease;transition:border var(--calcite-internal-animation-timing-medium) ease, background-color var(--calcite-internal-animation-timing-medium) ease, box-shadow var(--calcite-animation-timing) ease, -webkit-box-shadow var(--calcite-animation-timing) ease}.thumb .handle-extension{width:0.125rem;height:var(--calcite-slider-handle-extension-height);background-color:var(--calcite-ui-text-3)}.thumb:hover .handle{-webkit-box-shadow:0 0 0 3px var(--calcite-ui-brand) inset;box-shadow:0 0 0 3px var(--calcite-ui-brand) inset}.thumb:hover .handle-extension{background-color:var(--calcite-ui-brand)}.thumb:focus .handle{outline:2px solid var(--calcite-ui-brand);outline-offset:2px}.thumb:focus .handle-extension{background-color:var(--calcite-ui-brand)}.thumb.thumb--minValue{-webkit-transform:translate(calc(var(--calcite-slider-thumb-x-offset) * -1), var(--calcite-slider-thumb-y-offset));transform:translate(calc(var(--calcite-slider-thumb-x-offset) * -1), var(--calcite-slider-thumb-y-offset))}.thumb.thumb--precise{--calcite-slider-thumb-y-offset:-2px}:host([label-handles]) .thumb{--calcite-slider-thumb-x-offset:50%}:host([label-handles]):host(:not([has-histogram])) .scale--s .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset:-23px}:host([label-handles]):host(:not([has-histogram])) .scale--m .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset:-30px}:host([label-handles]):host(:not([has-histogram])) .scale--l .thumb:not(.thumb--precise){--calcite-slider-thumb-y-offset:-32px}:host([has-histogram][label-handles]) .handle__label,:host([label-handles]:not([has-histogram])) .thumb--minValue.thumb--precise .handle__label{margin-top:0.5em}:host(:not([has-histogram]):not([precise])) .handle__label,:host([label-handles]:not([has-histogram])) .thumb--value .handle__label{margin-bottom:0.5em}:host([label-handles][precise]):host(:not([has-histogram])) .scale--s .thumb--value{--calcite-slider-thumb-y-offset:-33px}:host([label-handles][precise]):host(:not([has-histogram])) .scale--m .thumb--value{--calcite-slider-thumb-y-offset:-44px}:host([label-handles][precise]):host(:not([has-histogram])) .scale--l .thumb--value{--calcite-slider-thumb-y-offset:-49px}.thumb:focus .handle,.thumb--active .handle{background-color:var(--calcite-ui-brand);-webkit-box-shadow:0 0 8px 0 rgba(0, 0, 0, 0.16);box-shadow:0 0 8px 0 rgba(0, 0, 0, 0.16)}.thumb:hover.thumb--precise:after,.thumb:focus.thumb--precise:after,.thumb--active.thumb--precise:after{background-color:var(--calcite-ui-brand)}.track{position:relative;height:0.125rem;border-radius:0px;background-color:var(--calcite-ui-border-2);-webkit-transition:all var(--calcite-internal-animation-timing-medium) ease-in;transition:all var(--calcite-internal-animation-timing-medium) ease-in}.track__range{position:absolute;top:0px;height:0.125rem;background-color:var(--calcite-ui-brand)}.container--range .track__range:hover{cursor:ew-resize}.container--range .track__range:after{position:absolute;width:100%;content:\"\";top:calc(var(--calcite-slider-full-handle-height) * 0.5 * -1);height:calc(var(--calcite-slider-handle-size) + var(--calcite-slider-handle-extension-height))}.tick{position:absolute;height:0.25rem;width:0.125rem;border-width:1px;border-style:solid;background-color:var(--calcite-ui-border-input);border-color:var(--calcite-ui-foreground-1);top:-2px;pointer-events:none;-webkit-margin-start:calc(-1 * 0.125rem);margin-inline-start:calc(-1 * 0.125rem)}.tick--active{background-color:var(--calcite-ui-brand)}.tick__label{pointer-events:none;margin-top:0.875rem;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.tick__label--min{-webkit-transition:opacity var(--calcite-animation-timing);transition:opacity var(--calcite-animation-timing)}.tick__label--max{-webkit-transition:opacity var(--calcite-internal-animation-timing-fast);transition:opacity var(--calcite-internal-animation-timing-fast)}:host([has-histogram][label-handles]) .tick__label--min,:host([has-histogram][label-handles]) .tick__label--max,:host([has-histogram][precise]) .tick__label--min,:host([has-histogram][precise]) .tick__label--max{font-weight:var(--calcite-font-weight-normal);color:var(--calcite-ui-text-3)}.graph{color:var(--calcite-ui-foreground-3);height:48px}:host([label-ticks][ticks]) .container{padding-bottom:calc(0.875rem + var(--calcite-slider-container-font-size))}:host([has-histogram]):host([precise][label-handles]) .container{padding-bottom:calc(var(--calcite-slider-full-handle-height) + 1em)}:host([has-histogram]):host([label-handles]:not([precise])) .container{padding-bottom:calc(var(--calcite-slider-handle-size) * 0.5 + 1em)}:host([has-histogram]):host([precise]:not([label-handles])) .container{padding-bottom:var(--calcite-slider-full-handle-height)}:host(:not([has-histogram])):host([precise]:not([label-handles])) .container{padding-top:var(--calcite-slider-full-handle-height)}:host(:not([has-histogram])):host([precise]:not([label-handles])) .container--range{padding-bottom:var(--calcite-slider-full-handle-height)}:host(:not([has-histogram])):host([label-handles]:not([precise])) .container{padding-top:calc(var(--calcite-slider-full-handle-height) + 4px)}:host(:not([has-histogram])):host([label-handles][precise]) .container{padding-top:calc(var(--calcite-slider-full-handle-height) + var(--calcite-slider-container-font-size) + 4px)}:host(:not([has-histogram])):host([label-handles][precise]) .container--range{padding-bottom:calc(var(--calcite-slider-full-handle-height) + var(--calcite-slider-container-font-size) + 4px)}::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}";
203
203
 
204
+ function isRange(value) {
205
+ return Array.isArray(value);
206
+ }
204
207
  const Slider = class {
205
208
  constructor(hostRef) {
206
209
  registerInstance(this, hostRef);
@@ -241,13 +244,12 @@ const Slider = class {
241
244
  /** Interval to move on up/down keys */
242
245
  this.step = 1;
243
246
  /** Currently selected number (if single select) */
244
- this.value = null;
247
+ this.value = 0;
245
248
  /**
246
249
  * Specify the scale of the slider, defaults to m
247
250
  */
248
251
  this.scale = "m";
249
252
  this.guid = `calcite-slider-${guid()}`;
250
- this.isRange = false;
251
253
  this.activeProp = "value";
252
254
  this.minMaxValueRange = null;
253
255
  this.minValueDragRange = null;
@@ -257,7 +259,7 @@ const Slider = class {
257
259
  event.preventDefault();
258
260
  if (this.dragProp) {
259
261
  const value = this.translate(event.clientX || event.pageX);
260
- if (this.isRange && this.dragProp === "minMaxValue") {
262
+ if (isRange(this.value) && this.dragProp === "minMaxValue") {
261
263
  if (this.minValueDragRange && this.maxValueDragRange && this.minMaxValueRange) {
262
264
  const newMinValue = value - this.minValueDragRange;
263
265
  const newMaxValue = value + this.maxValueDragRange;
@@ -303,12 +305,20 @@ const Slider = class {
303
305
  histogramWatcher(newHistogram) {
304
306
  this.hasHistogram = !!newHistogram;
305
307
  }
308
+ valueHandler() {
309
+ this.setMinMaxFromValue();
310
+ }
311
+ minMaxValueHandler() {
312
+ this.setValueFromMinMax();
313
+ }
306
314
  //--------------------------------------------------------------------------
307
315
  //
308
316
  // Lifecycle
309
317
  //
310
318
  //--------------------------------------------------------------------------
311
319
  connectedCallback() {
320
+ this.setMinMaxFromValue();
321
+ this.setValueFromMinMax();
312
322
  connectLabel(this);
313
323
  connectForm(this);
314
324
  }
@@ -318,11 +328,12 @@ const Slider = class {
318
328
  this.removeDragListeners();
319
329
  }
320
330
  componentWillLoad() {
321
- this.isRange = !!(this.maxValue || this.maxValue === 0);
322
331
  this.tickValues = this.generateTickValues();
323
- this.value = this.clamp(this.value);
332
+ if (!isRange(this.value)) {
333
+ this.value = this.clamp(this.value);
334
+ }
324
335
  afterConnectDefaultValueSet(this, this.value);
325
- if (this.snap) {
336
+ if (this.snap && !isRange(this.value)) {
326
337
  this.value = this.getClosestStep(this.value);
327
338
  }
328
339
  if (this.histogram) {
@@ -332,9 +343,9 @@ const Slider = class {
332
343
  componentDidRender() {
333
344
  if (this.labelHandles) {
334
345
  this.adjustHostObscuredHandleLabel("value");
335
- if (this.isRange) {
346
+ if (isRange(this.value)) {
336
347
  this.adjustHostObscuredHandleLabel("minValue");
337
- if (!(this.precise && this.isRange && !this.hasHistogram)) {
348
+ if (!(this.precise && !this.hasHistogram)) {
338
349
  this.hyphenateCollidingRangeHandleLabels();
339
350
  }
340
351
  }
@@ -344,50 +355,50 @@ const Slider = class {
344
355
  }
345
356
  render() {
346
357
  const id = this.el.id || this.guid;
358
+ const maxProp = isRange(this.value) ? "maxValue" : "value";
359
+ const value = isRange(this.value) ? this.maxValue : this.value;
347
360
  const min = this.minValue || this.min;
348
- const max = this.maxValue || this.value;
349
- const maxProp = this.isRange ? "maxValue" : "value";
350
- const value = this[maxProp];
351
361
  const useMinValue = this.shouldUseMinValue();
352
362
  const minInterval = this.getUnitInterval(useMinValue ? this.minValue : min) * 100;
353
- const maxInterval = this.getUnitInterval(max) * 100;
363
+ const maxInterval = this.getUnitInterval(value) * 100;
354
364
  const mirror = this.shouldMirror();
355
365
  const leftThumbOffset = `${mirror ? 100 - minInterval : minInterval}%`;
356
366
  const rightThumbOffset = `${mirror ? maxInterval : 100 - maxInterval}%`;
357
- const handle = (h("div", { "aria-disabled": this.disabled, "aria-label": this.isRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
367
+ const valueIsRange = isRange(this.value);
368
+ const handle = (h("div", { "aria-disabled": this.disabled, "aria-label": valueIsRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
358
369
  thumb: true,
359
370
  "thumb--value": true,
360
371
  "thumb--active": this.lastDragProp !== "minMaxValue" && this.dragProp === maxProp
361
372
  }, onBlur: () => (this.activeProp = null), onFocus: () => (this.activeProp = maxProp), onPointerDown: () => this.dragStart(maxProp), ref: (el) => (this.maxHandle = el), role: "slider", style: { right: rightThumbOffset }, tabIndex: 0 }, h("div", { class: "handle" })));
362
- const labeledHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": this.isRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
373
+ const labeledHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": valueIsRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
363
374
  thumb: true,
364
375
  "thumb--value": true,
365
376
  "thumb--active": this.lastDragProp !== "minMaxValue" && this.dragProp === maxProp
366
377
  }, onBlur: () => (this.activeProp = null), onFocus: () => (this.activeProp = maxProp), onPointerDown: () => this.dragStart(maxProp), ref: (el) => (this.maxHandle = el), role: "slider", style: { right: rightThumbOffset }, tabIndex: 0 }, h("span", { "aria-hidden": "true", class: "handle__label handle__label--value" }, value ? value.toLocaleString() : value), h("span", { "aria-hidden": "true", class: "handle__label handle__label--value static" }, value ? value.toLocaleString() : value), h("span", { "aria-hidden": "true", class: "handle__label handle__label--value transformed" }, value ? value.toLocaleString() : value), h("div", { class: "handle" })));
367
- const histogramLabeledHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": this.isRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
378
+ const histogramLabeledHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": valueIsRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
368
379
  thumb: true,
369
380
  "thumb--value": true,
370
381
  "thumb--active": this.lastDragProp !== "minMaxValue" && this.dragProp === maxProp
371
382
  }, onBlur: () => (this.activeProp = null), onFocus: () => (this.activeProp = maxProp), onPointerDown: () => this.dragStart(maxProp), ref: (el) => (this.maxHandle = el), role: "slider", style: { right: rightThumbOffset }, tabIndex: 0 }, h("div", { class: "handle" }), h("span", { "aria-hidden": "true", class: "handle__label handle__label--value" }, value ? value.toLocaleString() : value), h("span", { "aria-hidden": "true", class: "handle__label handle__label--value static" }, value ? value.toLocaleString() : value), h("span", { "aria-hidden": "true", class: "handle__label handle__label--value transformed" }, value ? value.toLocaleString() : value)));
372
- const preciseHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": this.isRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
383
+ const preciseHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": valueIsRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
373
384
  thumb: true,
374
385
  "thumb--value": true,
375
386
  "thumb--active": this.lastDragProp !== "minMaxValue" && this.dragProp === maxProp,
376
387
  "thumb--precise": true
377
388
  }, onBlur: () => (this.activeProp = null), onFocus: () => (this.activeProp = maxProp), onPointerDown: () => this.dragStart(maxProp), ref: (el) => (this.maxHandle = el), role: "slider", style: { right: rightThumbOffset }, tabIndex: 0 }, h("div", { class: "handle" }), h("div", { class: "handle-extension" })));
378
- const histogramPreciseHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": this.isRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
389
+ const histogramPreciseHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": valueIsRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
379
390
  thumb: true,
380
391
  "thumb--value": true,
381
392
  "thumb--active": this.lastDragProp !== "minMaxValue" && this.dragProp === maxProp,
382
393
  "thumb--precise": true
383
394
  }, onBlur: () => (this.activeProp = null), onFocus: () => (this.activeProp = maxProp), onPointerDown: () => this.dragStart(maxProp), ref: (el) => (this.maxHandle = el), role: "slider", style: { right: rightThumbOffset }, tabIndex: 0 }, h("div", { class: "handle-extension" }), h("div", { class: "handle" })));
384
- const labeledPreciseHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": this.isRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
395
+ const labeledPreciseHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": valueIsRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
385
396
  thumb: true,
386
397
  "thumb--value": true,
387
398
  "thumb--active": this.lastDragProp !== "minMaxValue" && this.dragProp === maxProp,
388
399
  "thumb--precise": true
389
400
  }, onBlur: () => (this.activeProp = null), onFocus: () => (this.activeProp = maxProp), onPointerDown: () => this.dragStart(maxProp), ref: (el) => (this.maxHandle = el), role: "slider", style: { right: rightThumbOffset }, tabIndex: 0 }, h("span", { "aria-hidden": "true", class: "handle__label handle__label--value" }, value ? value.toLocaleString() : value), h("span", { "aria-hidden": "true", class: "handle__label handle__label--value static" }, value ? value.toLocaleString() : value), h("span", { "aria-hidden": "true", class: "handle__label handle__label--value transformed" }, value ? value.toLocaleString() : value), h("div", { class: "handle" }), h("div", { class: "handle-extension" })));
390
- const histogramLabeledPreciseHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": this.isRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
401
+ const histogramLabeledPreciseHandle = (h("div", { "aria-disabled": this.disabled, "aria-label": valueIsRange ? this.maxLabel : this.minLabel, "aria-orientation": "horizontal", "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": value, class: {
391
402
  thumb: true,
392
403
  "thumb--value": true,
393
404
  "thumb--active": this.lastDragProp !== "minMaxValue" && this.dragProp === maxProp,
@@ -422,14 +433,14 @@ const Slider = class {
422
433
  }, onBlur: () => (this.activeProp = null), onFocus: () => (this.activeProp = "minValue"), onPointerDown: () => this.dragStart("minValue"), ref: (el) => (this.minHandle = el), role: "slider", style: { left: leftThumbOffset }, tabIndex: 0 }, h("div", { class: "handle-extension" }), h("div", { class: "handle" }), h("span", { "aria-hidden": "true", class: "handle__label handle__label--minValue" }, this.minValue && this.minValue.toLocaleString()), h("span", { "aria-hidden": "true", class: "handle__label handle__label--minValue static" }, this.minValue && this.minValue.toLocaleString()), h("span", { "aria-hidden": "true", class: "handle__label handle__label--minValue transformed" }, this.minValue && this.minValue.toLocaleString())));
423
434
  return (h(Host, { id: id, onTouchStart: this.handleTouchStart }, h("div", { class: {
424
435
  ["container"]: true,
425
- ["container--range"]: this.isRange,
436
+ ["container--range"]: valueIsRange,
426
437
  [`scale--${this.scale}`]: true
427
438
  } }, this.renderGraph(), h("div", { class: "track", ref: this.storeTrackRef }, h("div", { class: "track__range", onPointerDown: () => this.dragStart("minMaxValue"), style: {
428
439
  left: `${mirror ? 100 - maxInterval : minInterval}%`,
429
440
  right: `${mirror ? minInterval : 100 - maxInterval}%`
430
441
  } }), h("div", { class: "ticks" }, this.tickValues.map((tick) => {
431
442
  const tickOffset = `${this.getUnitInterval(tick) * 100}%`;
432
- let activeTicks = tick >= min && tick <= max;
443
+ let activeTicks = tick >= min && tick <= value;
433
444
  if (useMinValue) {
434
445
  activeTicks = tick >= this.minValue && tick <= this.maxValue;
435
446
  }
@@ -440,23 +451,24 @@ const Slider = class {
440
451
  left: mirror ? "" : tickOffset,
441
452
  right: mirror ? tickOffset : ""
442
453
  } }, this.renderTickLabel(tick)));
443
- }))), h("div", { class: "thumb-container" }, !this.precise && !this.labelHandles && this.isRange && minHandle, !this.hasHistogram &&
454
+ }))), h("div", { class: "thumb-container" }, !this.precise && !this.labelHandles && valueIsRange && minHandle, !this.hasHistogram &&
444
455
  !this.precise &&
445
456
  this.labelHandles &&
446
- this.isRange &&
447
- minLabeledHandle, this.precise && !this.labelHandles && this.isRange && minPreciseHandle, this.precise && this.labelHandles && this.isRange && minLabeledPreciseHandle, this.hasHistogram &&
457
+ valueIsRange &&
458
+ minLabeledHandle, this.precise && !this.labelHandles && valueIsRange && minPreciseHandle, this.precise && this.labelHandles && valueIsRange && minLabeledPreciseHandle, this.hasHistogram &&
448
459
  !this.precise &&
449
460
  this.labelHandles &&
450
- this.isRange &&
461
+ valueIsRange &&
451
462
  minHistogramLabeledHandle, !this.precise && !this.labelHandles && handle, !this.hasHistogram && !this.precise && this.labelHandles && labeledHandle, !this.hasHistogram && this.precise && !this.labelHandles && preciseHandle, this.hasHistogram && this.precise && !this.labelHandles && histogramPreciseHandle, !this.hasHistogram && this.precise && this.labelHandles && labeledPreciseHandle, this.hasHistogram && !this.precise && this.labelHandles && histogramLabeledHandle, this.hasHistogram &&
452
463
  this.precise &&
453
464
  this.labelHandles &&
454
465
  histogramLabeledPreciseHandle, h(HiddenFormInputSlot, { component: this })))));
455
466
  }
456
467
  renderGraph() {
457
- return this.histogram ? (h("calcite-graph", { class: "graph", colorStops: this.histogramStops, data: this.histogram, highlightMax: this.isRange ? this.maxValue : this.value, highlightMin: this.isRange ? this.minValue : this.min, max: this.max, min: this.min })) : null;
468
+ return this.histogram ? (h("calcite-graph", { class: "graph", colorStops: this.histogramStops, data: this.histogram, highlightMax: isRange(this.value) ? this.maxValue : this.value, highlightMin: isRange(this.value) ? this.minValue : this.min, max: this.max, min: this.min })) : null;
458
469
  }
459
470
  renderTickLabel(tick) {
471
+ const valueIsRange = isRange(this.value);
460
472
  const isMinTickLabel = tick === this.min;
461
473
  const isMaxTickLabel = tick === this.max;
462
474
  const tickLabel = (h("span", { class: {
@@ -464,26 +476,26 @@ const Slider = class {
464
476
  "tick__label--min": isMinTickLabel,
465
477
  "tick__label--max": isMaxTickLabel
466
478
  } }, tick.toLocaleString()));
467
- if (this.labelTicks && !this.hasHistogram && !this.isRange) {
479
+ if (this.labelTicks && !this.hasHistogram && !valueIsRange) {
468
480
  return tickLabel;
469
481
  }
470
482
  if (this.labelTicks &&
471
483
  !this.hasHistogram &&
472
- this.isRange &&
484
+ valueIsRange &&
473
485
  !this.precise &&
474
486
  !this.labelHandles) {
475
487
  return tickLabel;
476
488
  }
477
489
  if (this.labelTicks &&
478
490
  !this.hasHistogram &&
479
- this.isRange &&
491
+ valueIsRange &&
480
492
  !this.precise &&
481
493
  this.labelHandles) {
482
494
  return tickLabel;
483
495
  }
484
496
  if (this.labelTicks &&
485
497
  !this.hasHistogram &&
486
- this.isRange &&
498
+ valueIsRange &&
487
499
  this.precise &&
488
500
  (isMinTickLabel || isMaxTickLabel)) {
489
501
  return tickLabel;
@@ -567,7 +579,7 @@ const Slider = class {
567
579
  const x = event.clientX || event.pageX;
568
580
  const position = this.translate(x);
569
581
  let prop = "value";
570
- if (this.isRange) {
582
+ if (isRange(this.value)) {
571
583
  const inRange = position >= this.minValue && position <= this.maxValue;
572
584
  if (inRange && this.lastDragProp === "minMaxValue") {
573
585
  prop = "minMaxValue";
@@ -603,6 +615,19 @@ const Slider = class {
603
615
  // Private Methods
604
616
  //
605
617
  //--------------------------------------------------------------------------
618
+ setValueFromMinMax() {
619
+ const { minValue, maxValue } = this;
620
+ if (typeof minValue === "number" && typeof maxValue === "number") {
621
+ this.value = [minValue, maxValue];
622
+ }
623
+ }
624
+ setMinMaxFromValue() {
625
+ const { value } = this;
626
+ if (isRange(value)) {
627
+ this.minValue = value[0];
628
+ this.maxValue = value[1];
629
+ }
630
+ }
606
631
  onLabelClick() {
607
632
  this.setFocus();
608
633
  }
@@ -610,7 +635,7 @@ const Slider = class {
610
635
  return this.mirrored && !this.hasHistogram;
611
636
  }
612
637
  shouldUseMinValue() {
613
- if (!this.isRange) {
638
+ if (!isRange(this.value)) {
614
639
  return false;
615
640
  }
616
641
  return ((this.hasHistogram && this.maxValue === 0) || (!this.hasHistogram && this.minValue === 0));
@@ -823,19 +848,20 @@ const Slider = class {
823
848
  * Hides bounding tick labels that are obscured by either handle.
824
849
  */
825
850
  hideObscuredBoundingTickLabels() {
826
- if (!this.hasHistogram && !this.isRange && !this.labelHandles && !this.precise) {
851
+ const valueIsRange = isRange(this.value);
852
+ if (!this.hasHistogram && !valueIsRange && !this.labelHandles && !this.precise) {
827
853
  return;
828
854
  }
829
- if (!this.hasHistogram && !this.isRange && this.labelHandles && !this.precise) {
855
+ if (!this.hasHistogram && !valueIsRange && this.labelHandles && !this.precise) {
830
856
  return;
831
857
  }
832
- if (!this.hasHistogram && !this.isRange && !this.labelHandles && this.precise) {
858
+ if (!this.hasHistogram && !valueIsRange && !this.labelHandles && this.precise) {
833
859
  return;
834
860
  }
835
- if (!this.hasHistogram && !this.isRange && this.labelHandles && this.precise) {
861
+ if (!this.hasHistogram && !valueIsRange && this.labelHandles && this.precise) {
836
862
  return;
837
863
  }
838
- if (!this.hasHistogram && this.isRange && !this.precise) {
864
+ if (!this.hasHistogram && valueIsRange && !this.precise) {
839
865
  return;
840
866
  }
841
867
  if (this.hasHistogram && !this.precise && !this.labelHandles) {
@@ -912,7 +938,10 @@ const Slider = class {
912
938
  }
913
939
  get el() { return getElement(this); }
914
940
  static get watchers() { return {
915
- "histogram": ["histogramWatcher"]
941
+ "histogram": ["histogramWatcher"],
942
+ "value": ["valueHandler"],
943
+ "minValue": ["minMaxValueHandler"],
944
+ "maxValue": ["minMaxValueHandler"]
916
945
  }; }
917
946
  };
918
947
  Slider.style = sliderCss;
@@ -6,14 +6,14 @@ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement
6
6
  import { T as TEXT, d as dateToISO, a as dateFromISO, b as dateFromRange, g as getLocaleData, s as sameDate, p as parseDateString, i as inRange } from './resources-73dac782.js';
7
7
  import { c as connectLabel, d as disconnectLabel, g as getLabelText } from './label-68f22660.js';
8
8
  import { c as connectForm, d as disconnectForm, H as HiddenFormInputSlot } from './form-5e4609eb.js';
9
- import { u as updatePopper, C as CSS, c as createPopper, d as defaultMenuPlacement, p as popperMenuFlipPlacements } from './popper-da45ec93.js';
9
+ import { d as defaultMenuPlacement, u as updatePopper, C as CSS, c as createPopper, p as popperMenuFlipPlacements } from './popper-da45ec93.js';
10
10
  import { u as updateHostInteraction } from './interactive-48b5cc0f.js';
11
11
  import './locale-fc850b7c.js';
12
12
  import './number-8779395f.js';
13
13
  import './dom-e7fa77b9.js';
14
14
  import './guid-196bd5ea.js';
15
15
 
16
- const inputDatePickerCss = "@-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:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.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}:host{--calcite-icon-size:1rem;--calcite-spacing-eighth:0.125rem;--calcite-spacing-quarter:0.25rem;--calcite-spacing-half:0.5rem;--calcite-spacing-three-quarters:0.75rem;--calcite-spacing:1rem;--calcite-spacing-plus-quarter:1.25rem;--calcite-spacing-plus-half:1.5rem;--calcite-spacing-double:2rem;--calcite-menu-min-width:10rem;--calcite-header-min-height:3rem;--calcite-footer-min-height:3rem}:root{--calcite-popper-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host{position:relative;display:inline-block;width:100%;overflow:visible;vertical-align:top;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}:host([disabled]){pointer-events:none;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:var(--calcite-ui-opacity-disabled)}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.calendar-picker-wrapper{position:static;width:100%;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.input-wrapper{position:relative}:host([range]) .input-container{display:-ms-flexbox;display:flex}:host([range]) .input-wrapper{-ms-flex:1 1 auto;flex:1 1 auto}:host([range]) .horizontal-arrow-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;border-width:1px;border-left-width:0px;border-right-width:0px;border-style:solid;border-color:var(--calcite-ui-border-input);background-color:var(--calcite-ui-background);padding-top:0px;padding-bottom:0px;padding-left:0.25rem;padding-right:0.25rem}:host([range][layout=vertical]) .input-wrapper{width:100%}:host([range][layout=vertical]) .input-container{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start}:host([range][layout=vertical]) .calendar-picker-wrapper--end{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host([range][layout=vertical]) .vertical-arrow-container{top:1.5rem;position:absolute;left:0px;z-index:10;margin-left:1px;margin-right:1px;background-color:var(--calcite-ui-foreground-1);padding-left:0.625rem;padding-right:0.625rem}:host([scale=s][range]:not([layout=vertical])) .calendar-picker-wrapper{width:216px}:host([scale=m][range]:not([layout=vertical])) .calendar-picker-wrapper{width:286px}:host([scale=l][range]:not([layout=vertical])) .calendar-picker-wrapper{width:398px}.menu-container{display:block;position:absolute;z-index:900;-webkit-transform:scale(0);transform:scale(0);visibility:hidden;pointer-events:none}.menu-container .calcite-popper-anim{position:relative;z-index:1;-webkit-transition:var(--calcite-popper-transition);transition:var(--calcite-popper-transition);visibility:hidden;-webkit-transition-property:visibility, opacity, -webkit-transform;transition-property:visibility, opacity, -webkit-transform;transition-property:transform, visibility, opacity;transition-property:transform, visibility, opacity, -webkit-transform;opacity:0;-webkit-box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);border-radius:0.25rem}.menu-container[data-popper-placement^=bottom] .calcite-popper-anim{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.menu-container[data-popper-placement^=top] .calcite-popper-anim{-webkit-transform:translateY(5px);transform:translateY(5px)}.menu-container[data-popper-placement^=left] .calcite-popper-anim{-webkit-transform:translateX(5px);transform:translateX(5px)}.menu-container[data-popper-placement^=right] .calcite-popper-anim{-webkit-transform:translateX(-5px);transform:translateX(-5px)}.menu-container[data-popper-placement] .calcite-popper-anim--active{opacity:1;visibility:visible;-webkit-transform:translate(0);transform:translate(0)}.menu-container--active .menu-container .calcite-popper-anim{position:relative;z-index:1;-webkit-transition:var(--calcite-popper-transition);transition:var(--calcite-popper-transition);visibility:hidden;-webkit-transition-property:visibility, opacity, -webkit-transform;transition-property:visibility, opacity, -webkit-transform;transition-property:transform, visibility, opacity;transition-property:transform, visibility, opacity, -webkit-transform;opacity:0;-webkit-box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);border-radius:0.25rem}.menu-container--active .menu-container[data-popper-placement^=bottom] .calcite-popper-anim{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.menu-container--active .menu-container[data-popper-placement^=top] .calcite-popper-anim{-webkit-transform:translateY(5px);transform:translateY(5px)}.menu-container--active .menu-container[data-popper-placement^=left] .calcite-popper-anim{-webkit-transform:translateX(5px);transform:translateX(5px)}.menu-container--active .menu-container[data-popper-placement^=right] .calcite-popper-anim{-webkit-transform:translateX(-5px);transform:translateX(-5px)}.menu-container--active .menu-container[data-popper-placement] .calcite-popper-anim--active{opacity:1;visibility:visible;-webkit-transform:translate(0);transform:translate(0)}.input .calcite-input__wrapper{margin-top:0px}:host([range][layout=vertical][scale=m]) .vertical-arrow-container{top:1.5rem;padding-left:0.75rem}:host([range][layout=vertical][scale=m]) .vertical-arrow-container calcite-icon{height:0.75rem;width:0.75rem;min-width:0px}:host([range][layout=vertical][scale=l]) .vertical-arrow-container{top:2.25rem;padding-left:0.875rem;padding-right:0.875rem}:host([range][layout=vertical][active]) .vertical-arrow-container{display: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}";
16
+ const inputDatePickerCss = "@-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:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.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}:host{--calcite-icon-size:1rem;--calcite-spacing-eighth:0.125rem;--calcite-spacing-quarter:0.25rem;--calcite-spacing-half:0.5rem;--calcite-spacing-three-quarters:0.75rem;--calcite-spacing:1rem;--calcite-spacing-plus-quarter:1.25rem;--calcite-spacing-plus-half:1.5rem;--calcite-spacing-double:2rem;--calcite-menu-min-width:10rem;--calcite-header-min-height:3rem;--calcite-footer-min-height:3rem}:root{--calcite-popper-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host{position:relative;display:inline-block;width:100%;overflow:visible;vertical-align:top;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}:host([disabled]){pointer-events:none;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:var(--calcite-ui-opacity-disabled)}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.calendar-picker-wrapper{position:static;width:100%;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.input-wrapper{position:relative}:host([range]) .input-container{display:-ms-flexbox;display:flex}:host([range]) .input-wrapper{-ms-flex:1 1 auto;flex:1 1 auto}:host([range]) .horizontal-arrow-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;border-width:1px;border-left-width:0px;border-right-width:0px;border-style:solid;border-color:var(--calcite-ui-border-input);background-color:var(--calcite-ui-background);padding-top:0px;padding-bottom:0px;padding-left:0.25rem;padding-right:0.25rem}:host([range][layout=vertical]) .input-wrapper{width:100%}:host([range][layout=vertical]) .input-container{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start}:host([range][layout=vertical]) .calendar-picker-wrapper--end{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host([range][layout=vertical]) .vertical-arrow-container{top:1.5rem;position:absolute;left:0px;z-index:10;margin-left:1px;margin-right:1px;background-color:var(--calcite-ui-foreground-1);padding-left:0.625rem;padding-right:0.625rem}:host([scale=s][range]:not([layout=vertical])) .calendar-picker-wrapper{width:216px}:host([scale=m][range]:not([layout=vertical])) .calendar-picker-wrapper{width:286px}:host([scale=l][range]:not([layout=vertical])) .calendar-picker-wrapper{width:398px}.menu-container{display:block;position:absolute;z-index:900;-webkit-transform:scale(0);transform:scale(0);visibility:hidden;pointer-events:none}.menu-container .calcite-popper-anim{position:relative;z-index:1;-webkit-transition:var(--calcite-popper-transition);transition:var(--calcite-popper-transition);visibility:hidden;-webkit-transition-property:visibility, opacity, -webkit-transform;transition-property:visibility, opacity, -webkit-transform;transition-property:transform, visibility, opacity;transition-property:transform, visibility, opacity, -webkit-transform;opacity:0;-webkit-box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);border-radius:0.25rem}.menu-container[data-popper-placement^=bottom] .calcite-popper-anim{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.menu-container[data-popper-placement^=top] .calcite-popper-anim{-webkit-transform:translateY(5px);transform:translateY(5px)}.menu-container[data-popper-placement^=left] .calcite-popper-anim{-webkit-transform:translateX(5px);transform:translateX(5px)}.menu-container[data-popper-placement^=right] .calcite-popper-anim{-webkit-transform:translateX(-5px);transform:translateX(-5px)}.menu-container[data-popper-placement] .calcite-popper-anim--active{opacity:1;visibility:visible;-webkit-transform:translate(0);transform:translate(0)}:host([active]) .menu-container{pointer-events:initial;visibility:visible}.menu-container--active .menu-container .calcite-popper-anim{position:relative;z-index:1;-webkit-transition:var(--calcite-popper-transition);transition:var(--calcite-popper-transition);visibility:hidden;-webkit-transition-property:visibility, opacity, -webkit-transform;transition-property:visibility, opacity, -webkit-transform;transition-property:transform, visibility, opacity;transition-property:transform, visibility, opacity, -webkit-transform;opacity:0;-webkit-box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);box-shadow:0 0 16px 0 rgba(0, 0, 0, 0.16);border-radius:0.25rem}.menu-container--active .menu-container[data-popper-placement^=bottom] .calcite-popper-anim{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.menu-container--active .menu-container[data-popper-placement^=top] .calcite-popper-anim{-webkit-transform:translateY(5px);transform:translateY(5px)}.menu-container--active .menu-container[data-popper-placement^=left] .calcite-popper-anim{-webkit-transform:translateX(5px);transform:translateX(5px)}.menu-container--active .menu-container[data-popper-placement^=right] .calcite-popper-anim{-webkit-transform:translateX(-5px);transform:translateX(-5px)}.menu-container--active .menu-container[data-popper-placement] .calcite-popper-anim--active{opacity:1;visibility:visible;-webkit-transform:translate(0);transform:translate(0)}.input .calcite-input__wrapper{margin-top:0px}:host([range][layout=vertical][scale=m]) .vertical-arrow-container{top:1.5rem;padding-left:0.75rem}:host([range][layout=vertical][scale=m]) .vertical-arrow-container calcite-icon{height:0.75rem;width:0.75rem;min-width:0px}:host([range][layout=vertical][scale=l]) .vertical-arrow-container{top:2.25rem;padding-left:0.875rem;padding-right:0.875rem}:host([range][layout=vertical][active]) .vertical-arrow-container{display: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}";
17
17
 
18
18
  const InputDatePicker = class {
19
19
  constructor(hostRef) {
@@ -50,6 +50,11 @@ const InputDatePicker = class {
50
50
  this.locale = document.documentElement.lang || "en";
51
51
  /** specify the scale of the date picker */
52
52
  this.scale = "m";
53
+ /**
54
+ * Determines where the date-picker component will be positioned relative to the input.
55
+ * @default "bottom-leading"
56
+ */
57
+ this.placement = defaultMenuPlacement;
53
58
  /** Range mode activation */
54
59
  this.range = false;
55
60
  /**
@@ -202,13 +207,13 @@ const InputDatePicker = class {
202
207
  }
203
208
  /** Updates the position of the component. */
204
209
  async reposition() {
205
- const { popper, menuEl } = this;
210
+ const { placement, popper, menuEl } = this;
206
211
  const modifiers = this.getModifiers();
207
212
  popper
208
213
  ? await updatePopper({
209
214
  el: menuEl,
210
215
  modifiers,
211
- placement: defaultMenuPlacement,
216
+ placement,
212
217
  popper
213
218
  })
214
219
  : this.createPopper();
@@ -312,7 +317,7 @@ const InputDatePicker = class {
312
317
  }
313
318
  createPopper() {
314
319
  this.destroyPopper();
315
- const { menuEl, referenceEl, overlayPositioning } = this;
320
+ const { menuEl, placement, referenceEl, overlayPositioning } = this;
316
321
  if (!menuEl || !referenceEl) {
317
322
  return;
318
323
  }
@@ -321,7 +326,7 @@ const InputDatePicker = class {
321
326
  el: menuEl,
322
327
  modifiers,
323
328
  overlayPositioning,
324
- placement: defaultMenuPlacement,
329
+ placement,
325
330
  referenceEl
326
331
  });
327
332
  }
@@ -214,6 +214,11 @@ const InputTimePicker = class {
214
214
  this.required = false;
215
215
  /** The scale (size) of the time input */
216
216
  this.scale = "m";
217
+ /**
218
+ * Determines where the popover will be positioned relative to the input.
219
+ * @see [PopperPlacement](https://github.com/Esri/calcite-components/blob/master/src/utils/popper.ts#L25)
220
+ */
221
+ this.placement = "auto";
217
222
  /** number (seconds) that specifies the granularity that the value must adhere to */
218
223
  this.step = 60;
219
224
  /** The selected time in UTC (always 24-hour format) */
@@ -387,7 +392,7 @@ const InputTimePicker = class {
387
392
  // --------------------------------------------------------------------------
388
393
  render() {
389
394
  const popoverId = `${this.referenceElementId}-popover`;
390
- 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, 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 })));
395
+ 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, placement: this.placement, 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 })));
391
396
  }
392
397
  get el() { return getElement(this); }
393
398
  static get watchers() { return {