@ukic/canary-web-components 2.0.0-canary.10 → 2.0.0-canary.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/helpers-7a069459.js.map +1 -1
  3. package/dist/cjs/helpers-f75cf7cf.js.map +1 -1
  4. package/dist/cjs/ic-badge.cjs.entry.js +15 -7
  5. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-date-input.cjs.entry.js +24 -8
  7. package/dist/cjs/ic-date-input.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-date-picker.cjs.entry.js +3 -3
  9. package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-dialog.cjs.entry.js +2 -1
  11. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/collection/components/ic-date-input/ic-date-input.js +52 -8
  14. package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -1
  15. package/dist/collection/components/ic-date-input/test/basic/ic-date-input.spec.js +0 -17
  16. package/dist/collection/components/ic-date-input/test/basic/ic-date-input.spec.js.map +1 -1
  17. package/dist/collection/components/ic-date-picker/ic-date-picker.js +3 -3
  18. package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -1
  19. package/dist/collection/components/ic-date-picker/story-data.js +1 -0
  20. package/dist/collection/components/ic-date-picker/story-data.js.map +1 -1
  21. package/dist/collection/utils/helpers.js +14 -0
  22. package/dist/collection/utils/helpers.js.map +1 -1
  23. package/dist/components/helpers.js.map +1 -1
  24. package/dist/components/helpers2.js.map +1 -1
  25. package/dist/components/ic-badge.js +16 -8
  26. package/dist/components/ic-badge.js.map +1 -1
  27. package/dist/components/ic-date-input2.js +26 -9
  28. package/dist/components/ic-date-input2.js.map +1 -1
  29. package/dist/components/ic-date-picker.js +3 -3
  30. package/dist/components/ic-date-picker.js.map +1 -1
  31. package/dist/components/ic-dialog.js +2 -1
  32. package/dist/components/ic-dialog.js.map +1 -1
  33. package/dist/core/core.esm.js +1 -1
  34. package/dist/core/core.esm.js.map +1 -1
  35. package/dist/core/{p-ca8cbd6a.entry.js → p-0080bbce.entry.js} +2 -2
  36. package/dist/core/{p-6690bc04.entry.js → p-02d0ecd2.entry.js} +2 -2
  37. package/dist/core/{p-a0f9b259.entry.js → p-0388b484.entry.js} +2 -2
  38. package/dist/core/{p-982a6e88.entry.js → p-06aef486.entry.js} +2 -2
  39. package/dist/core/{p-1ce75941.entry.js → p-0b32ba5b.entry.js} +2 -2
  40. package/dist/core/{p-d4fdd8c1.entry.js → p-170f6408.entry.js} +2 -2
  41. package/dist/core/{p-2c1fecb9.entry.js → p-1857e9a7.entry.js} +2 -2
  42. package/dist/core/{p-a42c2f37.entry.js → p-1f1b4b8b.entry.js} +2 -2
  43. package/dist/core/{p-2e2e0099.entry.js → p-21da96a9.entry.js} +2 -2
  44. package/dist/core/{p-b306cbc8.entry.js → p-221d03e1.entry.js} +2 -2
  45. package/dist/core/{p-7cecf5d5.entry.js → p-23a13636.entry.js} +2 -2
  46. package/dist/core/{p-86012178.entry.js → p-25a458bf.entry.js} +2 -2
  47. package/dist/core/{p-d35c7c18.js → p-2c3cdfa3.js} +2 -2
  48. package/dist/core/{p-d35c7c18.js.map → p-2c3cdfa3.js.map} +1 -1
  49. package/dist/core/{p-5fe96107.entry.js → p-2f31bb92.entry.js} +2 -2
  50. package/dist/core/{p-8c90110a.entry.js → p-31fdb740.entry.js} +2 -2
  51. package/dist/core/p-40ba5a51.entry.js +2 -0
  52. package/dist/core/p-40ba5a51.entry.js.map +1 -0
  53. package/dist/core/p-4f0178a7.entry.js +2 -0
  54. package/dist/core/{p-d5c99ec3.entry.js.map → p-4f0178a7.entry.js.map} +1 -1
  55. package/dist/core/{p-9d540656.entry.js → p-56d01bdb.entry.js} +2 -2
  56. package/dist/core/p-5d6750ea.entry.js +2 -0
  57. package/dist/core/p-5d6750ea.entry.js.map +1 -0
  58. package/dist/core/{p-776671cf.entry.js → p-655df7fe.entry.js} +2 -2
  59. package/dist/core/{p-1b7d426b.entry.js → p-65a8c1d6.entry.js} +2 -2
  60. package/dist/core/{p-a6447b13.entry.js → p-6e32683c.entry.js} +2 -2
  61. package/dist/core/{p-5e2e6c3b.entry.js → p-70b48a14.entry.js} +2 -2
  62. package/dist/core/{p-76d26018.entry.js → p-7373beb0.entry.js} +2 -2
  63. package/dist/core/{p-1832f4b5.entry.js → p-75a2cdac.entry.js} +2 -2
  64. package/dist/core/{p-8ab12a15.entry.js → p-7c0f24b6.entry.js} +2 -2
  65. package/dist/core/{p-98448bdb.entry.js → p-8f1aa87d.entry.js} +2 -2
  66. package/dist/core/{p-e74f1d09.entry.js → p-95374ba1.entry.js} +2 -2
  67. package/dist/core/{p-06ae5bec.entry.js → p-98c8d46a.entry.js} +2 -2
  68. package/dist/core/{p-f55ad6ae.entry.js → p-9f9b3151.entry.js} +2 -2
  69. package/dist/core/{p-4f1ffa39.entry.js → p-a16c6ff3.entry.js} +2 -2
  70. package/dist/core/{p-5392bca0.entry.js → p-a22fd338.entry.js} +2 -2
  71. package/dist/core/{p-85609bdd.entry.js → p-a6e9a8e7.entry.js} +2 -2
  72. package/dist/core/p-b1e3f20a.entry.js +2 -0
  73. package/dist/core/{p-8ea47d42.entry.js.map → p-b1e3f20a.entry.js.map} +1 -1
  74. package/dist/core/{p-5759d771.entry.js → p-b1e646e4.entry.js} +2 -2
  75. package/dist/core/{p-d3856ed3.entry.js → p-b3ce9fe4.entry.js} +2 -2
  76. package/dist/core/{p-33679c06.entry.js → p-c680c7f9.entry.js} +2 -2
  77. package/dist/core/p-cd799087.js.map +1 -1
  78. package/dist/core/{p-0939ce92.entry.js → p-ce898d90.entry.js} +2 -2
  79. package/dist/core/p-d184d9e2.entry.js +2 -0
  80. package/dist/core/p-d184d9e2.entry.js.map +1 -0
  81. package/dist/core/{p-16f67397.entry.js → p-df5d7aa4.entry.js} +2 -2
  82. package/dist/core/{p-9d01a7ad.entry.js → p-df63896a.entry.js} +2 -2
  83. package/dist/core/{p-62e22508.entry.js → p-e21083c8.entry.js} +2 -2
  84. package/dist/core/{p-47ac6838.entry.js → p-e2155d7f.entry.js} +2 -2
  85. package/dist/core/{p-caf857de.entry.js → p-e33bdca9.entry.js} +2 -2
  86. package/dist/core/{p-3745da83.entry.js → p-e9e7a7f9.entry.js} +2 -2
  87. package/dist/core/{p-c7820c23.entry.js → p-ee09f1b3.entry.js} +2 -2
  88. package/dist/core/{p-f91527a0.entry.js → p-eeacd610.entry.js} +2 -2
  89. package/dist/core/{p-6c0e2ceb.entry.js → p-f24c9356.entry.js} +2 -2
  90. package/dist/core/p-f5d5f0be.entry.js +2 -0
  91. package/dist/core/p-f5d5f0be.entry.js.map +1 -0
  92. package/dist/core/{p-d32692e2.entry.js → p-f62cd6d2.entry.js} +2 -2
  93. package/dist/core/{p-ae422058.entry.js → p-fb58d1d1.entry.js} +2 -2
  94. package/dist/esm/core.js +1 -1
  95. package/dist/esm/{helpers-7aa21b0a.js → helpers-b5f64263.js} +2 -2
  96. package/dist/esm/{helpers-7aa21b0a.js.map → helpers-b5f64263.js.map} +1 -1
  97. package/dist/esm/helpers-f328a7b6.js.map +1 -1
  98. package/dist/esm/ic-accordion.entry.js +1 -1
  99. package/dist/esm/ic-alert.entry.js +1 -1
  100. package/dist/esm/ic-back-to-top.entry.js +1 -1
  101. package/dist/esm/ic-badge.entry.js +16 -8
  102. package/dist/esm/ic-badge.entry.js.map +1 -1
  103. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  104. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  105. package/dist/esm/ic-button_3.entry.js +1 -1
  106. package/dist/esm/ic-card.entry.js +1 -1
  107. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  108. package/dist/esm/ic-checkbox.entry.js +1 -1
  109. package/dist/esm/ic-chip.entry.js +1 -1
  110. package/dist/esm/ic-data-row.entry.js +1 -1
  111. package/dist/esm/ic-date-input.entry.js +24 -8
  112. package/dist/esm/ic-date-input.entry.js.map +1 -1
  113. package/dist/esm/ic-date-picker.entry.js +3 -3
  114. package/dist/esm/ic-date-picker.entry.js.map +1 -1
  115. package/dist/esm/ic-dialog.entry.js +3 -2
  116. package/dist/esm/ic-dialog.entry.js.map +1 -1
  117. package/dist/esm/ic-divider.entry.js +1 -1
  118. package/dist/esm/ic-empty-state.entry.js +1 -1
  119. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  120. package/dist/esm/ic-footer-link.entry.js +1 -1
  121. package/dist/esm/ic-footer.entry.js +1 -1
  122. package/dist/esm/ic-hero.entry.js +1 -1
  123. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  124. package/dist/esm/ic-input-component-container_4.entry.js +1 -1
  125. package/dist/esm/ic-link.entry.js +1 -1
  126. package/dist/esm/ic-menu-group.entry.js +1 -1
  127. package/dist/esm/ic-menu-item.entry.js +1 -1
  128. package/dist/esm/ic-menu.entry.js +1 -1
  129. package/dist/esm/ic-navigation-button.entry.js +1 -1
  130. package/dist/esm/ic-navigation-group.entry.js +1 -1
  131. package/dist/esm/ic-navigation-item.entry.js +1 -1
  132. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  133. package/dist/esm/ic-page-header.entry.js +1 -1
  134. package/dist/esm/ic-pagination_4.entry.js +1 -1
  135. package/dist/esm/ic-popover-menu.entry.js +1 -1
  136. package/dist/esm/ic-radio-group.entry.js +1 -1
  137. package/dist/esm/ic-radio-option.entry.js +1 -1
  138. package/dist/esm/ic-search-bar.entry.js +1 -1
  139. package/dist/esm/ic-side-navigation.entry.js +1 -1
  140. package/dist/esm/ic-status-tag.entry.js +1 -1
  141. package/dist/esm/ic-step.entry.js +1 -1
  142. package/dist/esm/ic-stepper.entry.js +1 -1
  143. package/dist/esm/ic-switch.entry.js +1 -1
  144. package/dist/esm/ic-tab-group.entry.js +1 -1
  145. package/dist/esm/ic-tab-panel.entry.js +1 -1
  146. package/dist/esm/ic-tab.entry.js +1 -1
  147. package/dist/esm/ic-theme.entry.js +1 -1
  148. package/dist/esm/ic-toast.entry.js +1 -1
  149. package/dist/esm/ic-toggle-button.entry.js +1 -1
  150. package/dist/esm/ic-top-navigation.entry.js +1 -1
  151. package/dist/esm/ic-typography.entry.js +1 -1
  152. package/dist/esm/loader.js +1 -1
  153. package/dist/types/components/ic-date-input/ic-date-input.d.ts +6 -0
  154. package/dist/types/components.d.ts +1 -0
  155. package/dist/types/utils/helpers.d.ts +1 -0
  156. package/hydrate/index.js +46 -20
  157. package/package.json +3 -3
  158. package/dist/core/p-36508aad.entry.js +0 -2
  159. package/dist/core/p-36508aad.entry.js.map +0 -1
  160. package/dist/core/p-550a5674.entry.js +0 -2
  161. package/dist/core/p-550a5674.entry.js.map +0 -1
  162. package/dist/core/p-8ea47d42.entry.js +0 -2
  163. package/dist/core/p-d5c99ec3.entry.js +0 -2
  164. package/dist/core/p-e5d76564.entry.js +0 -2
  165. package/dist/core/p-e5d76564.entry.js.map +0 -1
  166. package/dist/core/p-e84b0310.entry.js +0 -2
  167. package/dist/core/p-e84b0310.entry.js.map +0 -1
  168. /package/dist/core/{p-ca8cbd6a.entry.js.map → p-0080bbce.entry.js.map} +0 -0
  169. /package/dist/core/{p-6690bc04.entry.js.map → p-02d0ecd2.entry.js.map} +0 -0
  170. /package/dist/core/{p-a0f9b259.entry.js.map → p-0388b484.entry.js.map} +0 -0
  171. /package/dist/core/{p-982a6e88.entry.js.map → p-06aef486.entry.js.map} +0 -0
  172. /package/dist/core/{p-1ce75941.entry.js.map → p-0b32ba5b.entry.js.map} +0 -0
  173. /package/dist/core/{p-d4fdd8c1.entry.js.map → p-170f6408.entry.js.map} +0 -0
  174. /package/dist/core/{p-2c1fecb9.entry.js.map → p-1857e9a7.entry.js.map} +0 -0
  175. /package/dist/core/{p-a42c2f37.entry.js.map → p-1f1b4b8b.entry.js.map} +0 -0
  176. /package/dist/core/{p-2e2e0099.entry.js.map → p-21da96a9.entry.js.map} +0 -0
  177. /package/dist/core/{p-b306cbc8.entry.js.map → p-221d03e1.entry.js.map} +0 -0
  178. /package/dist/core/{p-7cecf5d5.entry.js.map → p-23a13636.entry.js.map} +0 -0
  179. /package/dist/core/{p-86012178.entry.js.map → p-25a458bf.entry.js.map} +0 -0
  180. /package/dist/core/{p-5fe96107.entry.js.map → p-2f31bb92.entry.js.map} +0 -0
  181. /package/dist/core/{p-8c90110a.entry.js.map → p-31fdb740.entry.js.map} +0 -0
  182. /package/dist/core/{p-9d540656.entry.js.map → p-56d01bdb.entry.js.map} +0 -0
  183. /package/dist/core/{p-776671cf.entry.js.map → p-655df7fe.entry.js.map} +0 -0
  184. /package/dist/core/{p-1b7d426b.entry.js.map → p-65a8c1d6.entry.js.map} +0 -0
  185. /package/dist/core/{p-a6447b13.entry.js.map → p-6e32683c.entry.js.map} +0 -0
  186. /package/dist/core/{p-5e2e6c3b.entry.js.map → p-70b48a14.entry.js.map} +0 -0
  187. /package/dist/core/{p-76d26018.entry.js.map → p-7373beb0.entry.js.map} +0 -0
  188. /package/dist/core/{p-1832f4b5.entry.js.map → p-75a2cdac.entry.js.map} +0 -0
  189. /package/dist/core/{p-8ab12a15.entry.js.map → p-7c0f24b6.entry.js.map} +0 -0
  190. /package/dist/core/{p-98448bdb.entry.js.map → p-8f1aa87d.entry.js.map} +0 -0
  191. /package/dist/core/{p-e74f1d09.entry.js.map → p-95374ba1.entry.js.map} +0 -0
  192. /package/dist/core/{p-06ae5bec.entry.js.map → p-98c8d46a.entry.js.map} +0 -0
  193. /package/dist/core/{p-f55ad6ae.entry.js.map → p-9f9b3151.entry.js.map} +0 -0
  194. /package/dist/core/{p-4f1ffa39.entry.js.map → p-a16c6ff3.entry.js.map} +0 -0
  195. /package/dist/core/{p-5392bca0.entry.js.map → p-a22fd338.entry.js.map} +0 -0
  196. /package/dist/core/{p-85609bdd.entry.js.map → p-a6e9a8e7.entry.js.map} +0 -0
  197. /package/dist/core/{p-5759d771.entry.js.map → p-b1e646e4.entry.js.map} +0 -0
  198. /package/dist/core/{p-d3856ed3.entry.js.map → p-b3ce9fe4.entry.js.map} +0 -0
  199. /package/dist/core/{p-33679c06.entry.js.map → p-c680c7f9.entry.js.map} +0 -0
  200. /package/dist/core/{p-0939ce92.entry.js.map → p-ce898d90.entry.js.map} +0 -0
  201. /package/dist/core/{p-16f67397.entry.js.map → p-df5d7aa4.entry.js.map} +0 -0
  202. /package/dist/core/{p-9d01a7ad.entry.js.map → p-df63896a.entry.js.map} +0 -0
  203. /package/dist/core/{p-62e22508.entry.js.map → p-e21083c8.entry.js.map} +0 -0
  204. /package/dist/core/{p-47ac6838.entry.js.map → p-e2155d7f.entry.js.map} +0 -0
  205. /package/dist/core/{p-caf857de.entry.js.map → p-e33bdca9.entry.js.map} +0 -0
  206. /package/dist/core/{p-3745da83.entry.js.map → p-e9e7a7f9.entry.js.map} +0 -0
  207. /package/dist/core/{p-c7820c23.entry.js.map → p-ee09f1b3.entry.js.map} +0 -0
  208. /package/dist/core/{p-f91527a0.entry.js.map → p-eeacd610.entry.js.map} +0 -0
  209. /package/dist/core/{p-6c0e2ceb.entry.js.map → p-f24c9356.entry.js.map} +0 -0
  210. /package/dist/core/{p-d32692e2.entry.js.map → p-f62cd6d2.entry.js.map} +0 -0
  211. /package/dist/core/{p-ae422058.entry.js.map → p-fb58d1d1.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["icDateInputCss","inputIds","DateInput","this","ARIA_INVALID","ARIA_LABEL","ARIA_LABELLED_BY","EVENT_OBJECT_STRING","FIT_TO_VALUE","initialValue","value","INPUT_EVENT_OBJECT_STRING","inputsInOrder","isAfterMax","isBeforeMin","isDateSetFromKeyboardEvent","isDisabledDate","isValidDay","isValidMonth","isValidDate","isZuluTime","KEYBOARD_EVENT_OBJECT_STRING","MAX_DAY","MAX_MONTH","previousSelectedDate","selectedDate","setInputPasteValue","input","pastedValue","inputEl","classList","add","checkSingleCopiedValueIsValid","isValid","Number","dayInputEl","monthInputEl","yearInputEl","isKeyboardOrEvent","event","Object","prototype","toString","call","setDateValidity","isEmptyString","day","month","handleInput","inputEvent","target","inputType","preventAutoFormatting","length","setInputValue","notifyScreenReader","moveToNextInput","setPreventInput","setFitToValueStyling","setValidationMessage","handleKeyDown","isInputPrevented","eventKey","key","toLowerCase","regex","test","ctrlKey","metaKey","preventDefault","setPasteInvalidText","handleLeftRightArrowKeyPress","handleUpDownArrowKeyPress","preventInput","handleFocus","select","handleBlur","autocompleteInput","moveToPreviousInput","notifyScreenReaderSelectedDate","dayNames","stringEnumToArray","IcDayNames","months","IcDateInputMonths","selectedDateInfoEl","textContent","getDay","getDate","getMonth","getFullYear","minValue","maxValue","Date","handleDateChange","force","dateMatches","forEach","year","invalidDateText","setValueAndEmitChange","updateInputValues","slicePastedDate","valueLength","datePart","slice","isPastedStringDateValid","handlePaste","clipboardData","getData","setPastedValueAndValidation","setDate","date","undefined","remove","isDateOrEpoch","newDate","convertToDoubleDigits","defaultDateArray","splitStringDate","dateFormat","formatMinMax","formattedDate","clear","newValue","convertToDate","isSelectedDateDisabled","setAttribute","removeAttribute","disablePast","disablePastMessage","minDate","disableFuture","disableFutureMessage","maxDate","disableDays","disableDaysMessage","setInputsInOrder","inputs","el","shadowRoot","querySelectorAll","push","setAriaLabelledBy","disabled","_a","inputCompContainerEl","getAttribute","removeAriaLabelledBy","labelEl","querySelector","labelId","inputId","id","hasValidation","validationStatus","validationText","labelledBy","screenReaderInfoId","getInputDescribedByText","helperText","defaultHelperText","selectedDateInfoId","assistiveHintId","isPrevented","preventDayInput","preventMonthInput","preventYearInput","getInputFromDatePart","dayInput","h","class","ref","placeholder","onPaste","inputmode","pattern","onKeyDown","monthInput","yearInput","maxLength","getInputsInOrder","dateParts","split","part","substring","getDescOfInputsOrder","description","getScreenReaderInfo","inputDescriptors","required","IcInformationStatus","Error","selectedString","selectionStart","selectionEnd","currentDate","isNotToday","toDateString","includes","currentInput","currentInputPos","findIndex","nextInput","focus","autocompleteYear","inputValue","yearNumbers","autocompletedInput","number","index","handleHostBlur","removeLabelledBy","icBlur","emit","handleHostFocus","activeElement","match","icFocus","handleFormReset","getAriaLabel","notifyScreenReaderArrowKeys","liveRegion","announcement","ariaLabel","notifyScreenReaderInput","setAriaInvalid","validDay","validMonth","validDate","disabledDate","handleClear","handleCalendarOpen","ev","stopImmediatePropagation","calendarButtonEl","displayTooltip","calendarButtonClicked","icChange","handleCalendarFocus","calendarFocused","handleCalendarBlur","handleClearFocus","clearButtonFocused","handleClearBlur","relatedTarget","watchMaxHandler","createDate","max","watchMinHandler","min","disconnectedCallback","removeFormResetListener","componentWillLoad","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","label","propName","addEventListener","asteriskSpan","document","createElement","appendChild","componentWillUpdate","componentDidRender","setCalendarFocus","setDisableDays","days","nextParsedValue","extractDateFromZuluDateTime","pasteZuluDateTime","dateValue","isNumeric","displayPastedValidation","previousInvalidDateTest","isPasteValidationDisplayed","render","showClearButton","showCalendarButton","size","hasCustomValidation","assistiveHint","renderHiddenInput","name","Host","onBlur","onFocus","for","role","innerHTML","Clear","onClick","variant","appearance","IcThemeForegroundEnum","Light","Dark","divider","Calendar","Default","status","message"],"sources":["src/components/ic-date-input/ic-date-input.css?tag=ic-date-input&encapsulation=shadow","src/components/ic-date-input/ic-date-input.tsx"],"sourcesContent":["@import \"../../../dist/core/normalize.css\";\n\ninput {\n border: 0;\n height: 100%;\n padding: 0;\n outline: none;\n background: none;\n -moz-appearance: textfield;\n appearance: textfield;\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n}\n\nic-input-component-container {\n cursor: text;\n}\n\nic-input-component-container,\nic-input-component-container:hover {\n color: var(--ic-color-tertiary-text);\n}\n\n.focus-indicator {\n padding: var(--ic-space-xxxs) var(--ic-space-xs);\n align-items: center;\n}\n\n.day-input {\n width: 1.438rem;\n}\n\n.month-input {\n width: 1.813rem;\n}\n\n.year-input,\n.year-input.fit-to-value {\n width: 2.313rem;\n}\n\n.fit-to-value {\n width: 1.25rem;\n}\n\n.sr-only {\n position: absolute;\n left: -9999px;\n}\n\n.input-container {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n}\n\n.action-buttons {\n display: flex;\n align-items: center;\n}\n\n.show-calendar-button-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.clear-button,\n.calendar-button {\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n margin: 0;\n}\n\n.clear-button.hidden {\n display: none;\n}\n\n.clear-button:focus,\n.calendar-button:focus,\n.clear-button:active,\n.calendar-button:active {\n background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow) !important;\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.calendar-button:focus,\n.clear-button:active *,\n.calendar-button:active * {\n fill: var(--ic-architectural-white);\n}\n\n.divider {\n margin: 0 var(--ic-space-xxs);\n width: var(--ic-space-1px);\n background-color: var(--ic-architectural-400);\n border-radius: var(--ic-space-1px);\n}\n\n.divider.small {\n height: var(--ic-space-md);\n}\n\n.divider.default {\n height: calc(var(--ic-space-sm) + var(--ic-space-xs));\n}\n\n.divider.large {\n height: var(--ic-space-lg);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Host,\n Method,\n Watch,\n} from \"@stencil/core\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcSizes,\n IcThemeForegroundEnum,\n IcDateFormat,\n IcDateInputMonths,\n IcDayNames,\n IcWeekDays,\n} from \"../../utils/types\";\nimport {\n convertToDoubleDigits,\n createDate,\n dateMatches,\n extractDateFromZuluDateTime,\n isDateOrEpoch,\n splitStringDate,\n} from \"../../utils/date-helpers\";\nimport {\n addFormResetListener,\n getInputDescribedByText,\n isEmptyString,\n isNumeric,\n onComponentRequiredPropUndefined,\n removeFormResetListener,\n renderHiddenInput,\n stringEnumToArray,\n} from \"../../utils/helpers\";\nimport Clear from \"../../assets/clear-icon.svg\";\nimport Calendar from \"../../assets/calendar.svg\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-date-input\",\n styleUrl: \"ic-date-input.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class DateInput {\n private ARIA_INVALID = \"aria-invalid\";\n private ARIA_LABEL = \"aria-label\";\n private ARIA_LABELLED_BY = \"aria-labelledby\";\n private assistiveHintId: string;\n private calendarButtonEl: HTMLIcButtonElement;\n private dayInputEl: HTMLInputElement;\n private defaultHelperText: string;\n private EVENT_OBJECT_STRING = \"[object Event]\";\n private FIT_TO_VALUE = \"fit-to-value\";\n\n private initialValue = this.value;\n private inputCompContainerEl: HTMLIcInputComponentContainerElement;\n private INPUT_EVENT_OBJECT_STRING = \"[object InputEvent]\";\n private inputsInOrder: HTMLInputElement[] = [];\n\n private isAfterMax: boolean = false;\n private isBeforeMin: boolean = false;\n private isDateSetFromKeyboardEvent: boolean = false;\n private isDisabledDate: boolean = false;\n private isPasteValidationDisplayed: boolean;\n private isValidDay: boolean = true;\n private isValidMonth: boolean = true;\n private isValidDate: boolean = true;\n private isZuluTime: boolean = false;\n\n private KEYBOARD_EVENT_OBJECT_STRING = \"[object KeyboardEvent]\";\n private MAX_DAY = 31;\n private MAX_MONTH = 12;\n private monthInputEl: HTMLInputElement;\n\n private preventAutoFormatting: boolean;\n private preventDayInput: boolean;\n private preventMonthInput: boolean;\n private preventYearInput: boolean;\n\n private previousInvalidDateTest: string;\n private previousSelectedDate: Date = null;\n\n private selectedDate: Date = null;\n private selectedDateInfoEl: HTMLSpanElement;\n private screenReaderInfoId: string;\n private selectedDateInfoId: string;\n\n private yearInputEl: HTMLInputElement;\n\n @Element() el: HTMLIcDateInputElement;\n\n @State() day: string = \"\";\n @State() invalidDateText: string;\n @State() maxDate: Date;\n @State() minDate: Date;\n @State() month: string = \"\";\n @State() year: string = \"\";\n @State() calendarFocused: boolean = false;\n @State() clearButtonFocused: boolean = false;\n @State() removeLabelledBy: boolean = false;\n\n /**\n * The format in which the date will be displayed.\n */\n // eslint-disable-next-line sonarjs/no-duplicate-string\n @Prop() dateFormat?: IcDateFormat = \"DD/MM/YYYY\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * The days of the week to disable.\n */\n @Prop({ mutable: true }) disableDays?: IcWeekDays[] = [];\n\n /**\n * The text to display as the validation message when `disableDays` is set and a disabled date is entered.\n */\n @Prop() disableDaysMessage?: string =\n \"The date you have selected is on a day of the week that is not allowed. Please select another date.\";\n\n /**\n * If `true`, dates in the future are not allowed. A validation message will appear if a date in the future is entered.\n */\n @Prop() disableFuture?: boolean = false;\n\n /**\n * The text to display as the validation message when `disableFuture` is true and a date in the future is entered.\n */\n @Prop() disableFutureMessage?: string =\n \"Dates in the future are not allowed. Please select a date in the past.\";\n\n /**\n * If `true`, dates in the past are not allowed. A validation message will appear if a date in the past is entered.\n */\n @Prop() disablePast?: boolean = false;\n\n /**\n * The text to display as the validation message when `disablePast` is true and a date in the past is entered.\n */\n @Prop() disablePastMessage?: string =\n \"Dates in the past are not allowed. Please select a date in the future.\";\n\n /**\n * The helper text that will be displayed for additional field guidance. This will default to the text \"Use format\" along with the `dateFormat` value.\n */\n @Prop({ mutable: true }) helperText?: string;\n\n /**\n * The ID for the input.\n */\n @Prop() inputId?: string = `ic-date-input-${inputIds++}`;\n\n /**\n * The label for the date input.\n */\n @Prop() label!: string;\n\n /**\n * The latest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disableFuture` is set to `true`.\n */\n @Prop() max?: string | Date = \"\";\n\n @Watch(\"max\")\n watchMaxHandler(): void {\n if (this.disableFuture) {\n this.maxDate = new Date();\n } else {\n this.maxDate = createDate(this.max, this.dateFormat);\n }\n }\n\n /**\n * The earliest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disablePast` is set to `true`.\n */\n @Prop() min?: string | Date = \"\";\n\n @Watch(\"min\")\n watchMinHandler(): void {\n if (this.disablePast) {\n this.minDate = new Date();\n } else {\n this.minDate = createDate(this.min, this.dateFormat);\n }\n }\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * If `true`, the input will require a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * @internal If `true`, a button which displays the calendar view when clicked will be displayed.\n */\n @Prop() showCalendarButton?: boolean = false;\n\n /**\n * If `true`, a button which clears the date input when clicked will be displayed.\n */\n @Prop() showClearButton?: boolean = true;\n\n /**\n * The size of the date input to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The value of the date input. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n */\n @Prop({ mutable: true }) value?: string | Date | null | undefined = \"\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'. This will override the built-in date validation.\n */\n @Prop({ mutable: true }) validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message. This will override the built-in date validation.\n */\n @Prop() validationText?: string = \"\";\n\n /**\n * @internal Emitted when the calendar is opened.\n */\n @Event() calendarButtonClicked: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() icBlur: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the input gains focus.\n */\n @Event() icFocus: EventEmitter<{ value: Date }>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n }\n\n componentWillLoad(): void {\n this.defaultHelperText = `Use format ${this.dateFormat}`;\n\n if (isEmptyString(this.helperText)) {\n this.helperText = this.defaultHelperText;\n }\n\n this.watchMinHandler();\n this.watchMaxHandler();\n\n if (this.value) {\n this.setDate(this.value);\n }\n\n this.screenReaderInfoId = `${this.inputId}-screen-reader-info`;\n this.assistiveHintId = `${this.inputId}-assistive-hint`;\n this.selectedDateInfoId = `${this.inputId}-selected-date-info`;\n\n addFormResetListener(this.el, this.handleFormReset);\n }\n\n componentDidLoad(): void {\n this.setInputsInOrder();\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Date Input\"\n );\n\n if (this.value) {\n this.updateInputValues(this.day, this.month, this.year);\n this.inputsInOrder.forEach((input) => {\n input.classList.add(this.FIT_TO_VALUE);\n });\n }\n\n this.setAriaInvalid(\n this.isValidDay,\n this.isValidMonth,\n this.isValidDate,\n this.isDisabledDate\n );\n\n if (this.value) {\n this.notifyScreenReaderSelectedDate();\n }\n\n this.inputsInOrder.forEach((input) => {\n input.addEventListener(\"input\", this.handleInput);\n input.addEventListener(\"focus\", this.handleFocus);\n input.addEventListener(\"blur\", this.handleBlur);\n });\n\n // Prevent asterisk being read out after the label by screen reader (by applying aria-hidden)\n // Needed because label is included in 'aria-labelledby' instead of using 'aria-label'\n const labelEl = this.el.shadowRoot.querySelector(\"label\");\n if (this.required) {\n const asteriskSpan = document.createElement(\"span\");\n asteriskSpan.setAttribute(\"aria-hidden\", \"true\");\n asteriskSpan.textContent = \" *\";\n labelEl?.appendChild(asteriskSpan);\n }\n }\n\n componentWillUpdate(): void {\n if (!this.isDateSetFromKeyboardEvent) {\n this.setDate(this.value);\n }\n this.setAriaInvalid(\n this.isValidDay,\n this.isValidMonth,\n this.isValidDate,\n this.isDisabledDate\n );\n this.handleDateChange(false);\n this.isDateSetFromKeyboardEvent = false;\n }\n\n componentDidRender(): void {\n if (this.removeLabelledBy) {\n this.removeAriaLabelledBy();\n return;\n }\n\n this.setAriaLabelledBy();\n }\n\n /**\n * Returns the value as a Date object\n * @returns Date\n */\n @Method()\n async getDate(): Promise<Date> {\n return this.selectedDate;\n }\n\n /**\n * @internal Sets focus on the calendar button.\n */\n @Method()\n async setCalendarFocus(): Promise<void> {\n if (this.calendarButtonEl) {\n this.calendarButtonEl.focus();\n }\n }\n\n /**\n * @internal Used to pass disabledDays from parent component.\n */\n @Method()\n async setDisableDays(days: IcWeekDays[]): Promise<void> {\n this.disableDays = days;\n }\n\n private setInputPasteValue = (input: EventTarget, pastedValue: string) => {\n const inputEl = input as HTMLInputElement;\n\n inputEl.value = pastedValue;\n inputEl.classList.add(this.FIT_TO_VALUE);\n };\n\n private checkSingleCopiedValueIsValid = (\n input: EventTarget,\n pastedValue: string\n ) => {\n let isValid = false;\n const value = Number(pastedValue);\n\n switch (input) {\n case this.dayInputEl:\n isValid = value >= 1 && value <= this.MAX_DAY;\n break;\n case this.monthInputEl:\n isValid = value >= 1 && value <= this.MAX_MONTH;\n break;\n case this.yearInputEl:\n isValid = true;\n break;\n default:\n isValid = false;\n break;\n }\n\n return isValid;\n };\n\n /**\n * Using Object.prototype.string to determine type if event from user\n * @param event - event object used to differentiate keyboard, generic or input event\n * @returns boolean\n */\n private isKeyboardOrEvent = (event: Event) => {\n return (\n Object.prototype.toString.call(event) === this.EVENT_OBJECT_STRING ||\n Object.prototype.toString.call(event) ===\n this.KEYBOARD_EVENT_OBJECT_STRING\n );\n };\n\n private setDateValidity = () => {\n if (!isEmptyString(this.day)) {\n this.isValidDay = +this.day > this.MAX_DAY ? false : true;\n } else {\n this.isValidDay = true;\n }\n\n if (!isEmptyString(this.month)) {\n this.isValidMonth = +this.month > this.MAX_MONTH ? false : true;\n } else {\n this.isValidMonth = true;\n }\n };\n\n private handleInput = (event: Event) => {\n const inputEvent = event as InputEvent;\n const input = event.target as HTMLInputElement;\n\n if (input !== this.yearInputEl) {\n // Only auto-format if input event is not a character being deleted\n // and not as user is changing value using up / down keys\n if (\n inputEvent.inputType !== \"deleteContentBackward\" &&\n !this.preventAutoFormatting\n ) {\n if (\n input.value.length === 1 &&\n ((input === this.dayInputEl && +input.value >= 4) ||\n (input === this.monthInputEl && +input.value >= 2)) &&\n +input.value <= 9\n ) {\n this.setInputValue(input);\n this.notifyScreenReader(input, event);\n this.moveToNextInput(input);\n }\n\n if (input.value.length === 2) {\n if (+input.value === 0) {\n input.value = \"01\";\n }\n this.setInputValue(input);\n this.setPreventInput(input, true);\n this.notifyScreenReader(input, event);\n this.moveToNextInput(input);\n } else {\n this.setPreventInput(input, false);\n }\n } else if (this.preventAutoFormatting) {\n /**\n * Using arrow keys prevents auto formatting so need to deal with\n * switching from arrow keys to inputting numbers\n **/\n if (input.value.length === 2 && !this.isKeyboardOrEvent(event)) {\n this.setInputValue(input);\n this.setPreventInput(input, true);\n this.moveToNextInput(input);\n } else {\n this.setInputValue(input);\n }\n }\n\n if (input.value.length !== 2) {\n this.setPreventInput(input, false);\n }\n } else {\n if (input.value.length === 4) {\n this.setInputValue(input);\n if (\n Object.prototype.toString.call(event) !== this.EVENT_OBJECT_STRING\n ) {\n this.moveToNextInput(input);\n }\n this.setPreventInput(input, true);\n } else {\n this.setInputValue(input, true);\n this.setPreventInput(input, false);\n }\n }\n\n // Add / remove class to make input width match size of value i.e. 2 digits' width for day / month, 4 for year\n this.setFitToValueStyling(input);\n\n if (input.value.length === 0) {\n this.setInputValue(input, true);\n this.setValidationMessage();\n }\n\n this.notifyScreenReader(input, event);\n };\n\n private handleKeyDown = (event: KeyboardEvent, isInputPrevented: boolean) => {\n const input = event.target as HTMLInputElement;\n\n const eventKey = event.key.toLowerCase();\n // Regex required due to FF allowing all characters as values for number text field.\n const regex =\n /-?\\d*\\.?\\d+(e[-+]?\\d+)?|[/-]|arrowup|arrowdown|arrowleft|arrowright|shift|tab|backspace|delete/;\n if (\n !regex.test(eventKey) &&\n !(\n (event.ctrlKey || event.metaKey) &&\n (eventKey === \"v\" || eventKey === \"c\")\n )\n ) {\n event.preventDefault();\n }\n\n switch (eventKey) {\n case \"/\":\n case \"-\":\n case \".\":\n event.preventDefault();\n this.setPasteInvalidText();\n this.moveToNextInput(input);\n break;\n case \"arrowright\":\n case \"arrowleft\":\n event.preventDefault();\n this.handleLeftRightArrowKeyPress(input, eventKey);\n break;\n case \"arrowup\":\n case \"arrowdown\":\n this.preventAutoFormatting = true;\n this.handleUpDownArrowKeyPress(input, event);\n break;\n default:\n break;\n }\n\n this.preventInput(event, isInputPrevented);\n this.isDateSetFromKeyboardEvent = true;\n };\n\n private handleFocus = (event: FocusEvent) => {\n // Highlight / select all characters in input for easy replacement\n const input = event.target as HTMLInputElement;\n\n input.select();\n };\n\n private handleBlur = (event: FocusEvent) => {\n const input = event.target as HTMLInputElement;\n\n this.setPasteInvalidText();\n this.autocompleteInput(input);\n };\n\n private handleLeftRightArrowKeyPress = (\n input: HTMLInputElement,\n key: string\n ) => {\n if (key === \"arrowright\") {\n this.moveToNextInput(input);\n } else {\n this.moveToPreviousInput(input);\n }\n\n this.setPasteInvalidText();\n };\n\n private notifyScreenReaderSelectedDate = () => {\n const dayNames = stringEnumToArray(IcDayNames);\n const months = stringEnumToArray(IcDateInputMonths);\n\n this.selectedDateInfoEl.textContent = `Selected date: ${\n dayNames[this.selectedDate.getDay()]\n }, ${this.selectedDate.getDate()} ${\n months[this.selectedDate.getMonth()]\n } ${this.selectedDate.getFullYear()}`;\n };\n\n private handleUpDownArrowKeyPress = (\n input: HTMLInputElement,\n event: KeyboardEvent\n ) => {\n const minValue = input === this.yearInputEl ? 0 : 1;\n\n let maxValue;\n\n switch (input) {\n case this.dayInputEl:\n maxValue = this.MAX_DAY;\n break;\n case this.monthInputEl:\n maxValue = this.MAX_MONTH;\n break;\n case this.yearInputEl:\n maxValue = 9999;\n }\n\n // Make value loop round when min / max reached\n if (input?.value) {\n if (event.key === \"ArrowUp\") {\n if (+input.value === maxValue) {\n event.preventDefault();\n input.value = `0${minValue}`;\n } else {\n input.value =\n +input.value + 1 < 10\n ? `0${+input.value + 1}`\n : (+input.value + 1).toString();\n }\n this.notifyScreenReader(input, event);\n }\n\n if (event.key === \"ArrowDown\") {\n if (+input.value === minValue) {\n event.preventDefault();\n input.value = maxValue.toString();\n } else {\n input.value =\n +input.value - 1 < 10\n ? `0${+input.value - 1}`\n : (+input.value - 1).toString();\n }\n this.notifyScreenReader(input, event);\n }\n } else {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n if (input === this.yearInputEl) {\n input.value = new Date().getFullYear().toString();\n } else {\n input.value = maxValue.toString();\n }\n this.notifyScreenReader(input, event);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n if (input === this.yearInputEl) {\n input.value = new Date().getFullYear().toString();\n } else {\n input.value = `0${minValue}`;\n }\n this.notifyScreenReader(input, event);\n }\n }\n\n this.setInputValue(input);\n this.setFitToValueStyling(input);\n };\n\n private handleDateChange = (force: boolean) => {\n // Prevent icChange being emitted when each individual input is changed\n // This method is used within componentWillUpdate instead of using @Watch('value');\n if (force || !dateMatches(this.selectedDate, this.previousSelectedDate)) {\n if (this.value) {\n this.inputsInOrder.forEach((input) => {\n input.classList.add(this.FIT_TO_VALUE);\n });\n }\n if (this.day && this.month && this.year && this.invalidDateText === \"\") {\n this.setValueAndEmitChange(this.selectedDate);\n this.notifyScreenReaderSelectedDate();\n } else if (\n !(this.selectedDate === null && this.previousSelectedDate === null)\n ) {\n this.setValueAndEmitChange(null);\n this.selectedDateInfoEl.textContent = \"\";\n }\n this.previousSelectedDate = this.selectedDate;\n\n if (!this.isDateSetFromKeyboardEvent) {\n this.updateInputValues(this.day, this.month, this.year);\n }\n }\n };\n\n private slicePastedDate = (valueLength: number, datePart: string): string => {\n return datePart.length > valueLength\n ? datePart.slice(0, valueLength)\n : datePart;\n };\n\n private isPastedStringDateValid = (value: string) => {\n if (\n /\\d+-\\d+-\\d+$/.test(value) ||\n /\\d+\\/\\d+\\/\\d+/.test(value) ||\n /\\d+\\.\\d+\\.\\d+/.test(value)\n ) {\n return true;\n }\n\n if (\n /[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(?::[0-9]{2}(?:\\.\\d+)?)?Z/.test(\n value\n )\n ) {\n this.isZuluTime = true;\n return true;\n }\n\n return false;\n };\n\n // Set value of each input to value of pasted date part\n // Allows formats separated by '-' or '/'\n private handlePaste = (event: ClipboardEvent) => {\n event.preventDefault();\n\n const pastedValue = event.clipboardData.getData(\"Text\");\n const isValidDate = this.isPastedStringDateValid(pastedValue);\n\n this.setPastedValueAndValidation(isValidDate, pastedValue, event);\n };\n\n private setDate = (date: string | Date) => {\n if (date === null || date === \"\" || date === undefined) {\n this.day = null;\n this.month = null;\n this.year = null;\n this.inputsInOrder.forEach((input) => {\n input.classList.remove(this.FIT_TO_VALUE);\n this.setPreventInput(input, false);\n });\n this.handleDateChange(true);\n } else {\n if (isDateOrEpoch(date)) {\n let newDate;\n if (typeof date === \"string\") {\n // Checking if epoch date time\n newDate = new Date(+date);\n } else {\n newDate = date;\n }\n\n this.day = convertToDoubleDigits(newDate.getDate());\n this.month = convertToDoubleDigits(newDate.getMonth() + 1);\n this.year = newDate.getFullYear().toString();\n } else if (typeof date === \"string\") {\n const defaultDateArray = splitStringDate(date, this.dateFormat);\n this.year = defaultDateArray[0];\n this.month = defaultDateArray[1];\n this.day = defaultDateArray[2];\n }\n }\n\n this.setValidationMessage();\n };\n\n private formatMinMax = (date: Date) => {\n let formattedDate;\n\n const day = convertToDoubleDigits(date.getDate());\n const month = convertToDoubleDigits(date.getMonth() + 1);\n const year = date.getFullYear();\n\n switch (this.dateFormat) {\n case \"DD/MM/YYYY\":\n formattedDate = `${day}/${month}/${year}`;\n break;\n case \"MM/DD/YYYY\":\n formattedDate = `${month}/${day}/${year}`;\n break;\n case \"YYYY/MM/DD\":\n formattedDate = `${year}/${month}/${day}`;\n break;\n default:\n break;\n }\n return formattedDate;\n };\n private updateInputValues = (day: string, month: string, year: string) => {\n this.dayInputEl.value = day;\n this.monthInputEl.value = month;\n this.yearInputEl.value = year;\n };\n\n // Set value in state based on input\n private setInputValue = (input: HTMLInputElement, clear = false) => {\n const newValue = clear ? \"\" : input.value;\n\n switch (input) {\n case this.dayInputEl:\n this.day = newValue;\n break;\n case this.monthInputEl:\n this.month = newValue;\n break;\n case this.yearInputEl:\n if (this.year !== newValue) {\n this.year = newValue;\n }\n }\n\n this.setValidationMessage();\n };\n\n private setValidationMessage = () => {\n this.setDateValidity();\n\n if (\n !isEmptyString(this.day) &&\n !isEmptyString(this.month) &&\n !isEmptyString(this.year)\n ) {\n // Check whether date actually exists\n // (used https://www.hectane.com/blog/javascript-date-validation-with-leap-year)\n this.selectedDate = this.convertToDate(this.year, this.month, this.day);\n this.isValidDate =\n +this.selectedDate !== 0 && this.selectedDate.getDate() == +this.day;\n this.isDisabledDate = this.isSelectedDateDisabled();\n\n if (!this.isValidDate || this.isDisabledDate) {\n this.inputsInOrder.forEach((input) =>\n input.setAttribute(this.ARIA_INVALID, \"true\")\n );\n } else {\n this.inputsInOrder.forEach((input) =>\n input.removeAttribute(this.ARIA_INVALID)\n );\n }\n } else {\n this.selectedDate = null;\n }\n\n if (!(this.isValidDay && this.isValidMonth && this.isValidDate)) {\n this.invalidDateText = \"Please enter a valid date.\";\n } else if (this.isDisabledDate && this.selectedDate !== null) {\n if (this.isBeforeMin) {\n if (this.disablePast) {\n this.invalidDateText = this.disablePastMessage;\n } else {\n this.invalidDateText = `Please enter a date after ${this.formatMinMax(\n this.minDate\n )}.`;\n }\n } else if (this.isAfterMax) {\n if (this.disableFuture) {\n this.invalidDateText = this.disableFutureMessage;\n } else {\n this.invalidDateText = `Please enter a date before ${this.formatMinMax(\n this.maxDate\n )}.`;\n }\n } else if (this.disableDays.length !== 0) {\n this.invalidDateText = this.disableDaysMessage;\n } else {\n if (this.disablePast) {\n this.invalidDateText = this.disablePastMessage;\n }\n if (this.disableFuture) {\n this.invalidDateText = this.disableFutureMessage;\n }\n }\n } else {\n this.invalidDateText = \"\";\n }\n };\n\n // Set refs to the input elements in the order they are displayed (based on the dateFormat)\n private setInputsInOrder = () => {\n const inputs = this.el.shadowRoot.querySelectorAll(\"input\");\n inputs.forEach((input) => this.inputsInOrder.push(input));\n };\n\n // Includes text usually added using aria-describedby\n // (which doesn't work on input component container)\n private setAriaLabelledBy = () => {\n if (\n this.disabled &&\n !isEmptyString(\n this.inputCompContainerEl?.getAttribute(this.ARIA_LABELLED_BY)\n )\n ) {\n this.removeAriaLabelledBy();\n return;\n }\n\n if (this.disabled) {\n return;\n }\n\n const labelEl = this.el.shadowRoot.querySelector(\"label\");\n const labelId = `${this.inputId}-label`;\n\n if (labelEl !== null && labelEl !== undefined) {\n labelEl.id = labelId;\n\n const hasValidation =\n (!isEmptyString(this.validationStatus) &&\n !isEmptyString(this.validationText)) ||\n !isEmptyString(this.invalidDateText);\n\n const labelledBy = `${labelId} ${\n this.screenReaderInfoId\n } ${getInputDescribedByText(\n this.inputId,\n this.helperText !== \"\" && this.helperText !== this.defaultHelperText,\n hasValidation\n )} ${this.selectedDate ? this.selectedDateInfoId : \"\"} ${\n this.assistiveHintId\n }`;\n this.inputCompContainerEl.setAttribute(this.ARIA_LABELLED_BY, labelledBy);\n }\n };\n\n // Sets boolean for each input, used to limit the number of characters within each field (2 for day / month, 4 for year)\n private setPreventInput = (input: HTMLInputElement, isPrevented: boolean) => {\n switch (input) {\n case this.dayInputEl:\n this.preventDayInput = isPrevented;\n break;\n case this.monthInputEl:\n this.preventMonthInput = isPrevented;\n break;\n case this.yearInputEl:\n this.preventYearInput = isPrevented;\n }\n };\n\n // Get input based on letter representing each date part (\"D\", \"M\" or \"Y\")\n // (retrieved from dateFormat)\n private getInputFromDatePart = (datePart: string) => {\n const dayInput = (\n <input\n class=\"day-input\"\n id=\"day-input\"\n ref={(el) => (this.dayInputEl = el)}\n aria-label=\"day\"\n placeholder=\"DD\"\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventDayInput)}\n ></input>\n );\n\n const monthInput = (\n <input\n id=\"month-input\"\n class=\"month-input\"\n ref={(el) => (this.monthInputEl = el)}\n aria-label=\"month\"\n placeholder=\"MM\"\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventMonthInput)}\n ></input>\n );\n\n const yearInput = (\n <input\n id=\"year-input\"\n class=\"year-input\"\n ref={(el) => (this.yearInputEl = el)}\n aria-label=\"year\"\n placeholder=\"YYYY\"\n maxLength={4}\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventYearInput)}\n ></input>\n );\n\n let input;\n\n switch (datePart) {\n case \"D\":\n input = dayInput;\n break;\n case \"M\":\n input = monthInput;\n break;\n case \"Y\":\n input = yearInput;\n }\n\n return input;\n };\n\n // Get input elements in order of chosen date format\n private getInputsInOrder = () => {\n const dateParts = this.dateFormat.split(\"/\");\n\n const inputsInOrder: HTMLInputElement[] = [];\n\n dateParts.forEach((part: string) => {\n inputsInOrder.push(this.getInputFromDatePart(part.substring(0, 1)));\n });\n\n return inputsInOrder;\n };\n\n // To add to the end of assistive hint to make it clearer that each date part has its own input\n // that can be changed individually\n private getDescOfInputsOrder = () => {\n let description;\n\n switch (this.dateFormat) {\n case \"DD/MM/YYYY\":\n description = \"day, month, and year\";\n break;\n case \"MM/DD/YYYY\":\n description = \"month, day, and year\";\n break;\n case \"YYYY/MM/DD\":\n description = \"year, month, and day\";\n }\n\n return description;\n };\n\n // Add 'required' or 'invalid data' to span used in aria-labelledby\n // Many ARIA attributes aren't read out by screen reader when on the input component container\n private getScreenReaderInfo = (validationStatus: string) => {\n let inputDescriptors = \"\";\n\n if (this.required) {\n inputDescriptors += \"required\";\n }\n\n if (validationStatus === IcInformationStatus.Error) {\n inputDescriptors += \" invalid data\";\n }\n\n return inputDescriptors === \"\" ? \"\" : inputDescriptors + \", \";\n };\n\n // Prevent non-number characters being entered\n // ('e' or '.' - which are usually allowed in <input type=\"number\">)\n // And limit the number of characters within each field (2 for day / month, 4 for year)\n // (because 'maxlength' doesn't work on <input type=\"number\">)\n private preventInput = (event: KeyboardEvent, isInputPrevented: boolean) => {\n const key = event.key;\n const input = event.target as HTMLInputElement;\n let selectedString;\n\n if (input) {\n selectedString = input.value.substring(\n input.selectionStart,\n input.selectionEnd\n );\n }\n\n if (\n key === \"e\" ||\n key === \".\" ||\n key === \"-\" ||\n (event.key >= \"0\" &&\n event.key <= \"9\" &&\n isInputPrevented &&\n !selectedString)\n ) {\n event.preventDefault();\n }\n };\n\n // Get whether date has been disabled using disableFuture or disablePast prop, but always allow current day\n // Consider using dateClamp and inDateRange\n private isSelectedDateDisabled = () => {\n const currentDate = new Date();\n this.isAfterMax = false;\n this.isBeforeMin = false;\n\n let disabled = false;\n const isNotToday =\n this.selectedDate.toDateString() !== currentDate.toDateString();\n\n if (this.minDate && this.selectedDate < this.minDate && isNotToday) {\n this.isBeforeMin = true;\n disabled = true;\n }\n\n if (this.maxDate && this.selectedDate > this.maxDate && isNotToday) {\n this.isAfterMax = true;\n disabled = true;\n }\n\n if (this.disableDays.includes(this.selectedDate.getDay())) {\n disabled = true;\n }\n\n if (\n ((this.disablePast && this.selectedDate < currentDate) ||\n (this.disableFuture && this.selectedDate > currentDate)) &&\n isNotToday\n ) {\n disabled = true;\n }\n\n return disabled;\n };\n\n private moveToNextInput = (currentInput: HTMLInputElement) => {\n const currentInputPos = this.inputsInOrder.findIndex(\n (input) => input === currentInput\n );\n const nextInput = this.inputsInOrder[currentInputPos + 1];\n\n this.preventAutoFormatting = false;\n\n if (nextInput) {\n nextInput.focus();\n }\n };\n\n private moveToPreviousInput = (currentInput: HTMLInputElement) => {\n const currentInputPos = this.inputsInOrder.findIndex(\n (input) => input === currentInput\n );\n\n this.preventAutoFormatting = false;\n\n if (this.inputsInOrder[currentInputPos - 1]) {\n this.inputsInOrder[currentInputPos - 1].focus();\n }\n };\n\n private autocompleteInput = (input: HTMLInputElement) => {\n if (input === this.yearInputEl) {\n this.autocompleteYear();\n } else {\n const inputValue = input.value;\n\n // Autocomplete input as 2 characters (leading zero) when only 1 character entered (for day and month)\n if (inputValue.length === 1) {\n if (+inputValue === 0) {\n input.value = \"01\";\n } else {\n input.value = `0${inputValue}`;\n }\n }\n }\n\n if (input.value) {\n this.setInputValue(input);\n }\n };\n\n // Autocomplete year as current millennium when fewer than 4 characters entered\n private autocompleteYear = () => {\n const inputValue = this.yearInputEl.value;\n const yearNumbers = [\"2\", \"0\", \"0\"];\n\n let autocompletedInput = \"\";\n\n if (inputValue) {\n yearNumbers.forEach((number, index) => {\n if (inputValue.length + index <= 3) {\n autocompletedInput += number;\n }\n });\n\n this.yearInputEl.value = `${autocompletedInput}${inputValue}`;\n }\n };\n\n private convertToDate = (\n year: string,\n month: string,\n day: string\n ): Date | null => {\n if (!isEmptyString(year) && !isEmptyString(month) && !isEmptyString(day)) {\n return new Date(+year, +month - 1, +day);\n } else {\n return null;\n }\n };\n\n private handleHostBlur = () => {\n this.removeLabelledBy = false;\n this.icBlur.emit({ value: this.selectedDate });\n };\n\n private handleHostFocus = () => {\n if (this.el.shadowRoot.activeElement.id.match(/(day|month|year)-input$/)) {\n this.removeLabelledBy = false;\n } else {\n this.removeLabelledBy = true;\n }\n this.icFocus.emit({ value: this.selectedDate });\n };\n\n private handleFormReset = () => {\n // Get the initial value and populate day, month and year again.\n this.setDate(this.initialValue);\n this.setValidationMessage();\n this.handleDateChange(false);\n };\n\n private getAriaLabel = (input: HTMLInputElement): string => {\n return input.getAttribute(this.ARIA_LABEL);\n };\n\n private notifyScreenReaderArrowKeys = (input: HTMLInputElement) => {\n const liveRegion = this.el.shadowRoot.querySelector(\"#live-region\");\n let announcement = \"\";\n const ariaLabel = this.getAriaLabel(input);\n\n if (liveRegion && input.value) {\n if (\n input === this.monthInputEl &&\n !!IcDateInputMonths[+input.value - 1]\n ) {\n announcement = `${input.value} - ${\n IcDateInputMonths[+input.value - 1]\n }, ${ariaLabel}`;\n }\n\n if (input === this.dayInputEl || input === this.yearInputEl) {\n announcement = `${input.value}, ${ariaLabel}`;\n }\n\n liveRegion.textContent = announcement;\n }\n };\n\n private removeAriaLabelledBy() {\n this.inputCompContainerEl.removeAttribute(this.ARIA_LABELLED_BY);\n }\n\n private setPastedValueAndValidation(\n isValidDate: boolean,\n pastedValue: string,\n event: ClipboardEvent\n ) {\n switch (true) {\n case isValidDate: {\n const nextParsedValue = this.isZuluTime\n ? extractDateFromZuluDateTime(pastedValue)\n : pastedValue;\n const dateParts = nextParsedValue.split(/-|\\/|\\./);\n this.inputsInOrder.forEach((input, index) => {\n input.classList.add(this.FIT_TO_VALUE);\n\n if (this.isZuluTime) {\n this.pasteZuluDateTime(dateParts, index);\n } else {\n let dateValue;\n\n if (input === this.dayInputEl || input === this.monthInputEl) {\n dateValue = this.slicePastedDate(2, dateParts[index]);\n } else {\n dateValue = this.slicePastedDate(4, dateParts[index]);\n }\n\n input.value = dateValue;\n\n this.setInputValue(input);\n this.autocompleteInput(input);\n }\n });\n this.isZuluTime = false;\n break;\n }\n\n case (pastedValue.length === 1 ||\n pastedValue.length === 2 ||\n pastedValue.length === 4) &&\n isNumeric(pastedValue):\n if (this.checkSingleCopiedValueIsValid(event.target, pastedValue)) {\n // Check if copied value can be pasted into input\n this.setInputPasteValue(event.target, pastedValue);\n this.setInputValue(event.target as HTMLInputElement);\n } else {\n this.displayPastedValidation(event);\n }\n break;\n\n case pastedValue.length === 3 && isNumeric(pastedValue):\n if (event.target !== this.yearInputEl) {\n this.displayPastedValidation(event);\n } else {\n this.setInputPasteValue(event.target, pastedValue);\n this.setInputValue(event.target as HTMLInputElement);\n }\n break;\n\n case pastedValue.length >= 5 && isNumeric(pastedValue):\n this.displayPastedValidation(event);\n }\n }\n\n private pasteZuluDateTime(dateParts: string[], index: number) {\n // ['YYYY', 'MM', 'DD']\n if (index === 0) {\n const dateValue = this.slicePastedDate(4, dateParts[index]);\n this.yearInputEl.value = dateValue;\n this.setInputValue(this.yearInputEl);\n } else if (index === 1) {\n // The month value is the second item in the array\n const dateValue = this.slicePastedDate(2, dateParts[index]);\n this.monthInputEl.value = dateValue;\n this.setInputValue(this.monthInputEl);\n } else {\n const dateValue = this.slicePastedDate(2, dateParts[index]);\n this.dayInputEl.value = dateValue;\n this.setInputValue(this.dayInputEl);\n }\n }\n\n private displayPastedValidation(event: ClipboardEvent) {\n if (this.invalidDateText?.length > 0) {\n this.previousInvalidDateTest = this.invalidDateText;\n }\n\n this.invalidDateText = `Please paste a valid ${this.getAriaLabel(\n event.target as HTMLInputElement\n )}`;\n\n this.validationStatus = IcInformationStatus.Error;\n this.isPasteValidationDisplayed = true;\n }\n\n private setPasteInvalidText() {\n if (this.isPasteValidationDisplayed) {\n this.invalidDateText = this.previousInvalidDateTest ?? \"\";\n this.isPasteValidationDisplayed = false;\n\n // This is to prevent setDate from triggering within componentWillUpdate\n this.isDateSetFromKeyboardEvent = true;\n }\n }\n\n private notifyScreenReader(input: HTMLInputElement, event: Event) {\n const liveRegion = this.el.shadowRoot.querySelector(\"#live-region\");\n\n if (liveRegion) {\n if (this.isKeyboardOrEvent(event)) {\n this.notifyScreenReaderArrowKeys(input);\n } else if (\n Object.prototype.toString.call(event) === this.INPUT_EVENT_OBJECT_STRING\n ) {\n this.notifyScreenReaderInput(input, liveRegion as HTMLElement);\n }\n }\n }\n\n private notifyScreenReaderInput = (\n input: HTMLInputElement,\n liveRegion: HTMLElement\n ) => {\n let announcement = \"\";\n const ariaLabel = this.getAriaLabel(input);\n\n if (input === this.dayInputEl || input === this.monthInputEl) {\n if (input.value.length === 2) {\n if (\n input === this.monthInputEl &&\n !!IcDateInputMonths[+input.value - 1] &&\n this.isValidMonth\n ) {\n announcement = `${input.value} - ${\n IcDateInputMonths[+input.value - 1]\n }, ${ariaLabel}`;\n }\n\n if (input === this.dayInputEl && this.isValidDay) {\n announcement = `${input.value}, ${ariaLabel}`;\n }\n } else {\n announcement = \"\";\n }\n } else {\n if (input.value.length === 4) {\n announcement = `${input.value}, ${ariaLabel}`;\n } else {\n announcement = \"\";\n }\n }\n liveRegion.textContent = announcement;\n };\n\n private setFitToValueStyling = (input: HTMLInputElement) => {\n if (input.value) {\n input.classList.add(this.FIT_TO_VALUE);\n } else {\n input.classList.remove(this.FIT_TO_VALUE);\n }\n };\n\n private setAriaInvalid = (\n validDay: boolean,\n validMonth: boolean,\n validDate: boolean,\n disabledDate: boolean\n ) => {\n if (this.inputsInOrder.length) {\n this.inputsInOrder.forEach((input) => {\n input.removeAttribute(this.ARIA_INVALID);\n });\n\n if (!validDay) {\n this.dayInputEl.setAttribute(this.ARIA_INVALID, \"true\");\n }\n\n if (!validMonth) {\n this.monthInputEl.setAttribute(this.ARIA_INVALID, \"true\");\n }\n\n if (!validDate || disabledDate) {\n this.inputsInOrder.forEach((input) => {\n input.setAttribute(this.ARIA_INVALID, \"true\");\n });\n }\n }\n };\n\n private handleClear = () => {\n this.inputsInOrder.forEach((input) => {\n input.classList.remove(this.FIT_TO_VALUE);\n this.setInputValue(input, true);\n this.setPreventInput(input, false);\n });\n this.isDateSetFromKeyboardEvent = false;\n this.setValidationMessage();\n this.handleDateChange(true);\n\n this.inputsInOrder[0].focus();\n };\n\n private handleCalendarOpen = (ev: MouseEvent) => {\n ev.stopImmediatePropagation();\n this.calendarButtonEl.shadowRoot\n .querySelector(\"ic-tooltip\")\n .displayTooltip(false);\n this.calendarButtonClicked.emit({ value: this.selectedDate });\n this.calendarButtonEl.shadowRoot\n .querySelector(\"ic-tooltip\")\n .displayTooltip(false);\n this.isDateSetFromKeyboardEvent = false;\n };\n\n private setValueAndEmitChange = (value: Date) => {\n if (!dateMatches(new Date(this.value), value)) {\n this.icChange.emit({ value: value });\n this.value = value;\n }\n };\n\n private handleCalendarFocus = () => {\n this.calendarFocused = true;\n };\n\n private handleCalendarBlur = () => {\n this.calendarFocused = false;\n };\n\n private handleClearFocus = () => {\n this.removeLabelledBy = true;\n this.clearButtonFocused = true;\n };\n\n private handleClearBlur = (ev: FocusEvent) => {\n this.clearButtonFocused = false;\n if ((ev.relatedTarget as HTMLElement)?.id.match(/(day|year)-input$/)) {\n this.removeLabelledBy = false;\n return;\n }\n\n this.removeLabelledBy = true;\n };\n\n render() {\n const {\n inputId,\n label,\n disabled,\n helperText,\n showClearButton,\n showCalendarButton,\n size,\n } = this;\n\n const hasCustomValidation =\n !isEmptyString(this.validationStatus) &&\n !isEmptyString(this.validationText);\n\n const validationStatus = hasCustomValidation\n ? this.validationStatus\n : !isEmptyString(this.invalidDateText)\n ? IcInformationStatus.Error\n : \"\";\n\n const assistiveHint = `Type or use the up and down arrow keys to change the values for the ${this.getDescOfInputsOrder()}.`;\n\n renderHiddenInput(\n true,\n this.el,\n this.name,\n this.convertToDate(this.year, this.month, this.day),\n this.disabled\n );\n\n return (\n <Host onBlur={this.handleHostBlur} onFocus={this.handleHostFocus}>\n <ic-input-container disabled={disabled}>\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n disabled={disabled}\n ></ic-input-label>\n <span id={this.screenReaderInfoId} class=\"sr-only\" aria-hidden=\"true\">\n {this.getScreenReaderInfo(validationStatus)}\n {`${this.defaultHelperText}.`}\n </span>\n <span id={this.assistiveHintId} class=\"sr-only\" aria-hidden=\"true\">\n {assistiveHint}\n </span>\n <span id=\"live-region\" aria-live=\"assertive\" class=\"sr-only\"></span>\n <ic-input-component-container\n id={inputId}\n ref={(el: HTMLIcInputComponentContainerElement) =>\n (this.inputCompContainerEl = el)\n }\n disabled={disabled}\n validationStatus={validationStatus}\n size={size}\n role=\"group\"\n >\n <div class=\"input-container\">\n <div class=\"date-inputs\">\n {this.getInputsInOrder()[0]}/{this.getInputsInOrder()[1]}/\n {this.getInputsInOrder()[2]}\n </div>\n <div class=\"action-buttons\">\n {showClearButton && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear input\"\n class={{\n [\"clear-button\"]: true,\n [\"hidden\"]:\n isEmptyString(this.day) &&\n isEmptyString(this.month) &&\n isEmptyString(this.year),\n }}\n disabled={this.disabled}\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearFocus}\n onBlur={this.handleClearBlur}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n size={size}\n ></ic-button>\n )}\n {showCalendarButton && (\n <div class=\"show-calendar-button-wrapper\">\n <div class={{ divider: true, [size]: true }}></div>\n <ic-button\n id=\"calendar-button\"\n ref={(el: HTMLIcButtonElement) =>\n (this.calendarButtonEl = el)\n }\n aria-label=\"Display calendar\"\n aria-haspopup=\"dialog\"\n class=\"calendar-button\"\n disabled={this.disabled}\n innerHTML={Calendar}\n onClick={this.handleCalendarOpen}\n variant=\"icon\"\n size={size}\n onFocus={this.handleCalendarFocus}\n onBlur={this.handleCalendarBlur}\n appearance={\n this.calendarFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Default\n }\n ></ic-button>\n </div>\n )}\n </div>\n </div>\n </ic-input-component-container>\n <span id={this.selectedDateInfoId} class=\"sr-only\" aria-live=\"polite\">\n <span\n ref={(el) => (this.selectedDateInfoEl = el)}\n role=\"status\"\n ></span>\n </span>\n {(hasCustomValidation || !isEmptyString(this.invalidDateText)) && (\n <ic-input-validation\n status={validationStatus}\n message={\n hasCustomValidation ? this.validationText : this.invalidDateText\n }\n for={inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as e,h as t,H as n,g as i}from"./p-8455d1bb.js";import{I as o}from"./p-fd186591.js";import{u as a,t as r,a as s,d as c}from"./p-d35c7c18.js";const h='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:block;background-color:var(--ic-theme-tertiary);color:var(--ic-theme-text);--hero-heading-bottom-margin:var(--ic-space-md)}:host(.dark){background-color:var(--ic-theme-secondary)}:host(.has-background-image){background-repeat:no-repeat;background-position:right -6.25rem;background-size:auto calc(100% + 6.25rem);box-shadow:var(--ic-elevation-inset)}@media (prefers-reduced-motion){:host(.has-background-image){background-position:right -6.25rem !important}}ic-typography.heading-bottom-spacing{margin-bottom:var(--hero-heading-bottom-margin)}.section-container{display:flex;align-items:center;height:100%}.left-container{padding:var(--ic-space-xl) 0}.left-container:not(.left-container-full-width){flex-basis:50%}.left-container-full-width{width:100%}.right-container{flex-basis:50%}.interaction-container{display:flex;gap:var(--ic-space-md);margin-top:var(--ic-space-lg);flex-wrap:wrap}.secondary-container{display:flex;flex-direction:column;justify-content:center;border-left:var(--ic-space-xxxs) solid var(--ic-theme-text)}.secondary-subheading{margin-top:var(--ic-space-xxs)}:host([content-aligned="left"]) .left-container,:host([content-aligned="left"]) .interaction-container{justify-content:flex-start;text-align:left}:host([content-aligned="center"]) .left-container,:host([content-aligned="center"]) .interaction-container{justify-content:center;text-align:center}@media (min-width: 992px){.left-container-full-width{width:66.6%}}@media (min-width: 1044px){:host,.section-container{min-height:13rem}:host(.small),:host(.small) .section-container{min-height:10.813rem}.left-container:not(.left-container-full-width){flex-basis:66.6%}.left-container{min-height:9rem}.right-container{flex-basis:33.3%;margin-left:3.125rem}.secondary-container{min-height:9rem}.secondary-heading,.secondary-subheading{margin-left:3.938rem}}@media (min-width: 801px) and (max-width: 1043px){:host(.has-background-image){background-image:none !important}:host,.section-container{min-height:16rem}:host(.small),:host(.small) .section-container{min-height:15rem}:host(.secondary-heading),:host(.secondary-heading) .section-container{min-height:14rem}.left-container{min-height:10rem}.secondary-container{min-height:10rem}.secondary-heading,.secondary-subheading{margin-left:5.922rem}.right-container{margin-left:3.125rem}}@media (min-width: 641px) and (max-width: 800px){:host(.has-background-image){background-image:none !important}:host,.section-container{min-height:16rem}:host(.small),:host(.small) .section-container{min-height:15rem}:host(.secondary-heading),:host(.secondary-heading) .section-container{min-height:14rem}.left-container{min-height:10rem}.secondary-container{min-height:10rem}.secondary-heading,.secondary-subheading{margin-left:2.125rem}.right-container{margin-left:3.125rem}}@media (min-width: 481px) and (max-width: 640px){:host(.has-background-image){background-image:none !important}:host,.section-container{min-height:13rem}:host(.small),:host(.small) .section-container{min-height:10.813rem}:host(.secondary-heading),:host(.secondary-heading) .section-container{min-height:17.5rem}:host(.secondary-heading) .section-container,:host(.small) .section-container,.section-container{flex-direction:column;align-items:flex-start}.left-container{height:-moz-fit-content;height:fit-content}.secondary-container{height:-moz-fit-content;height:fit-content;border:none}.right-container{margin-bottom:2.5rem}}@media (max-width: 480px){:host(.has-background-image){background-image:none !important}:host,.section-container{min-height:12rem}:host,.right-container{margin-bottom:var(--ic-space-md)}:host(.small),:host(.small) .section-container{min-height:10.813rem}:host(.secondary-heading),:host(.secondary-heading) .section-container{min-height:16.5rem}:host(.secondary-heading) .section-container,:host(.small) .section-container,.section-container{flex-direction:column;align-items:flex-start}.left-container{height:-moz-fit-content;height:fit-content}.secondary-container{height:-moz-fit-content;height:fit-content;border:none}}';const d=class{constructor(t){e(this,t);this.foregroundColor=a();this.rightContent=false;this.leftContentFullWidth=!this.rightContent&&this.secondaryHeading===undefined;this.scrollFactor="right -100px";this.aligned="left";this.backgroundImage=undefined;this.contentAligned="left";this.disableBackgroundParallax=false;this.heading=undefined;this.secondaryHeading=undefined;this.secondarySubheading=undefined;this.size="default";this.small=false;this.subheading=undefined}componentWillLoad(){this.rightContent=r(this.el,"secondary")}componentDidLoad(){s([{prop:this.heading,propName:"heading"}],"Hero")}componentWillRender(){this.rightContent=r(this.el,"secondary")}themeChangeHandler(e){const t=e.detail;this.foregroundColor=t.mode}doScroll(){if(this.disableBackgroundParallax){return}const e=document.scrollingElement.scrollTop;const t=.4;const n=-100+e*t;this.scrollFactor="right "+n+"px"}render(){const{aligned:e,small:i,size:a,heading:r,subheading:s,secondaryHeading:h,secondarySubheading:d,foregroundColor:l,backgroundImage:m,scrollFactor:g}=this;let p={};if(c(m)){p={"background-image":"url("+m+")","background-position":g}}return t(n,{class:{[o.Dark]:l===o.Dark,["has-background-image"]:m!==undefined,["small"]:i||a==="small",["secondary-heading"]:!!h},style:p},t("ic-section-container",{aligned:e,fullHeight:true,class:"section-container"},t("div",{class:{["left-container"]:true,["left-container-full-width"]:this.leftContentFullWidth}},t("div",{class:"heading"},t("slot",{name:"heading"},t("ic-typography",{variant:i||a==="small"?"h2":"h1",class:{["heading-bottom-spacing"]:!i&&a!=="small"}},r))),t("div",{class:"subheading"},t("slot",{name:"subheading"},t("ic-typography",{variant:"body"},s))),t("div",{class:"interaction-container"},t("slot",{name:"interaction"}))),(c(h)||this.rightContent)&&t("div",{class:"right-container"},t("slot",{name:"secondary"},h&&t("div",{class:"secondary-container"},t("div",{class:"secondary-heading"},t("ic-typography",{variant:"h4"},h)),t("div",{class:"secondary-subheading"},t("ic-typography",{variant:"subtitle-small"},d)))))))}get el(){return i(this)}};d.style=h;export{d as ic_hero};
2
- //# sourceMappingURL=p-8ea47d42.entry.js.map
@@ -1,2 +0,0 @@
1
- import{r as t,h as e,H as s,g as i}from"./p-8455d1bb.js";import{C as a}from"./p-0aa9ce8b.js";import{d as c}from"./p-d35c7c18.js";import"./p-fd186591.js";const r=`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M7.99935 4.32666L13.0193 13H2.97935L7.99935 4.32666ZM7.99935 1.66666L0.666016 14.3333H15.3327L7.99935 1.66666ZM8.66602 11H7.33268V12.3333H8.66602V11ZM8.66602 6.99999H7.33268V9.66666H8.66602V6.99999Z" fill="currentColor"/>\n</svg>`;const o=":host{display:flex;flex:auto}.step{display:flex;flex:1 1 0}.step-icon{display:flex;justify-content:center}.step-title,.step-subtitle,.step-status,.next-step{white-space:pre-line}.visually-hidden{position:absolute;left:-625rem;top:auto;width:1px;height:1px;overflow:hidden}:host(.compact){-moz-column-gap:var(--ic-space-sm);column-gap:var(--ic-space-sm);--compact-step-inner-color:var(--ic-status-info);--compact-step-circular-line-width:var(--ic-space-xxs)}:host(.compact) .step{-moz-column-gap:var(--ic-space-sm);column-gap:var(--ic-space-sm)}:host(.compact) .step:not(.current){display:none;opacity:0;visibility:hidden}.compact-step-progress-indicator{margin:var(--ic-space-xs) 0 0}:host ic-loading-indicator::part(ic-loading-container){border-radius:50%;background-color:var(--ic-architectural-white)}:host(.compact) .step-title-area{display:flex;flex-direction:column;width:14.25rem}.info-line{display:flex;-moz-column-gap:var(--ic-space-xs);column-gap:var(--ic-space-xs)}.step-status{display:flex;color:var(--ic-color-secondary-text);-moz-column-gap:var(--ic-space-xxxs);column-gap:var(--ic-space-xxxs)}.compact-step-completed .step-status{color:var(--ic-status-success)}.compact-step-disabled :is(.step-title,.step-status){color:var(--ic-color-tertiary-text)}.step-num{color:var(--ic-color-secondary-text);white-space:nowrap}:host(.compact) .step-icon{margin:var(--ic-space-xxxs)}:host(.compact) .step-icon svg{width:var(--ic-space-md);height:var(--ic-space-md)}:host(.default) .step{flex-direction:column}:host(.default.last-step){flex-grow:initial}.step-top{display:flex;width:100%;align-items:center;align-self:flex-start;height:2.5rem}:host(.default) .step-icon{border-radius:50%;background-color:var(--ic-architectural-white)}.step-icon-inner{width:var(--ic-space-xl);height:var(--ic-space-xl);display:flex;justify-content:center;align-items:center;border-radius:50%}:host(.default) .current{color:var(--ic-status-info)}:host(.default) .step-title-area{margin:var(--ic-space-xs) 0;padding-right:var(--ic-space-xs);width:100%}:host(.default) .step-title,.step-subtitle{width:-moz-fit-content;width:fit-content}.step-subtitle{color:var(--ic-color-tertiary-text)}.current .step-subtitle{color:var(--ic-color-primary-text)}:host(.default) .completed{color:var(--ic-status-success)}.active .step-icon-inner{box-shadow:inset var(--ic-architectural-200) 0 0 0 0.125rem}.current .step-icon-inner{background-color:var(--ic-status-info);color:white}.disabled{color:var(--ic-architectural-200)}.disabled .step-icon-inner{border:var(--ic-border-width) dashed var(--ic-architectural-200);width:calc(var(--ic-space-xl) - var(--ic-space-xxxs));height:calc(var(--ic-space-xl) - var(--ic-space-xxxs))}.disabled .step-title-area{color:var(--ic-color-tertiary-text)}.completed .step-icon-inner{background:var(--ic-status-success);box-shadow:inset var(--ic-status-success) 0 0 0 var(--ic-space-xxxs);border-radius:100%}:host(.default) .current .step-icon{border:var(--ic-space-xxxs) solid var(--ic-status-info);padding:var(--ic-space-xxxs);margin:0 calc(-1 * var(--ic-space-xxxs));}.step-connect{height:var(--ic-space-xxxs);background-color:var(--ic-architectural-200);margin:0 var(--ic-space-xs);border-radius:var(--ic-space-xxs);width:100%}.aligned-full-width.step-connect{min-width:6.25rem;width:100%}.disabled .step-connect{height:0;background-color:rgb(0 0 0 / 0%);border-top:0.125rem dashed var(--ic-architectural-200);border-radius:0}.completed .step-connect{background-color:var(--ic-status-success)}.step-connect-inner{width:70%;display:flex;flex:auto;height:var(--ic-space-xxxs);border-radius:var(--ic-space-xxs);background-color:var(--ic-status-info)}.step-icon-inner .check-icon{padding-top:var(--ic-space-xxs)}.step-icon-inner .check-icon svg{width:var(--ic-space-md);height:auto}.step-icon-inner .check-icon>svg>path{fill:var(--ic-color-white-text)}@media (forced-colors: active){.compact-step-disabled :is(.step-title,.step-status){color:GrayText}.step-connect:not(.disabled .step-connect){border:var(--ic-hc-border)}.active .step-icon-inner,.completed .step-icon-inner,.current .step-icon-inner{forced-color-adjust:none;box-shadow:inset canvastext 0 0 0 0.125rem;background-color:transparent;color:canvastext}:host(.default) .current .step-icon{padding:0;border:none}.disabled,.disabled .step-title-area{color:GrayText}.step-connect-inner,.completed .step-connect{background-color:canvastext}.step-icon-inner .check-icon>svg>path{fill:canvastext}}";const n=class{constructor(e){t(this,e);this.compactStepStyling=undefined;this.current=false;this.lastStep=undefined;this.lastStepNum=undefined;this.nextStepTitle=undefined;this.progress=undefined;this.stepNum=undefined;this.stepStatus=undefined;this.stepSubtitle=undefined;this.stepTitle=undefined;this.variant=undefined;this.stepType="active"}stepTypeChangeHandler(){if(this.variant==="compact"&&this.stepType==="current"){this.current=true}else{this.current=false}}render(){let t="";if(this.stepType==="completed"){t=". Completed step"}else if(this.stepType==="disabled"){t=". Non-required step"}else if(this.stepStatus==="required"){t=". Required step"}else if(this.stepStatus==="optional"){t=". Optional step"}let i;if(c(this.stepStatus)){i=this.stepStatus[0].toUpperCase()+this.stepStatus.slice(1)}let o;if(this.stepType==="disabled"||this.compactStepStyling==="disabled"){o="Not required"}else if(this.compactStepStyling==="completed"){o="Completed"}let n;if(this.stepType==="completed"||this.compactStepStyling==="completed"){n=e("span",{class:"check-icon step-icon","aria-hidden":"true",innerHTML:a})}else if(this.stepType==="disabled"||this.compactStepStyling==="disabled"){n=e("span",{class:"warning-icon step-icon","aria-hidden":"true",innerHTML:r})}const l=e("div",{class:{["step"]:true,["current"]:this.current,[`compact-step-${this.compactStepStyling}`]:!!this.compactStepStyling}},e("ic-loading-indicator",{class:{"compact-step-progress-indicator":true,"not-required":this.stepType==="disabled"||this.compactStepStyling==="disabled"},"aria-hidden":"true",size:"small","inner-label":this.stepNum,progress:this.progress}),e("div",{class:"step-title-area"},e("ic-typography",{variant:"h4",class:"step-title"},this.stepTitle),e("div",{class:"info-line"},e("ic-typography",{variant:"caption",class:"step-num"},`${this.stepNum} of ${this.lastStepNum}`,e("span",{class:"visually-hidden"}," steps")),(this.stepSubtitle||this.stepType==="completed"||this.stepType==="disabled"||this.variant==="compact"&&!!this.compactStepStyling&&this.compactStepStyling!=="active"||!!this.stepStatus)&&e("div",{class:"step-status"},n!==undefined&&n,(this.stepSubtitle||o)&&e("ic-typography",{variant:"caption"},this.stepSubtitle!==null&&c(this.stepSubtitle)?this.stepSubtitle:this.stepType==="disabled"||this.variant==="compact"&&this.compactStepStyling==="disabled"||this.stepType==="completed"||this.variant==="compact"&&this.compactStepStyling==="completed"?o:this.stepStatus&&i))),this.lastStep?e("ic-typography",{variant:"subtitle-small",class:"next-step"},"Last step"):c(this.nextStepTitle)&&e("ic-typography",{variant:"subtitle-small",class:"next-step"},"Next",e("span",{class:"visually-hidden"}," step is"),":"," ",this.nextStepTitle)));let p;if(this.stepType!=="completed"){p=e("ic-typography",{variant:"subtitle-small"},e("span",{class:"step-icon-inner","aria-hidden":"true"},this.stepNum))}else{p=e("div",{class:"step-icon-inner","aria-hidden":"true"},e("span",{class:"check-icon",innerHTML:a}))}const d=this.stepType==="current"&&e("div",{class:"step-connect-inner"});const h=!this.lastStep&&e("div",{class:{["step-connect"]:true,["aligned-full-width"]:this.el.parentElement.classList.contains("default")&&!this.el.parentElement.classList.contains("aligned-left")}},d);const u=e("div",{class:{["step"]:true,[`${this.stepType}`]:true}},e("div",{class:"step-top"},e("div",{class:"step-icon"},p),h),(this.stepTitle||this.stepSubtitle||this.stepStatus)&&e("div",{class:"step-title-area"},this.stepTitle&&e("ic-typography",{variant:"subtitle-large",class:"step-title"},this.stepTitle),this.stepTitle&&(this.stepSubtitle||this.stepStatus)&&e("ic-typography",{variant:"caption",class:"step-subtitle"},this.stepSubtitle!==null&&c(this.stepSubtitle)?this.stepSubtitle:i)));return e(s,{role:"listitem","aria-label":`Step ${this.stepNum}${t}`,"aria-current":(this.current||this.stepType==="current")&&"step",class:{["aligned-full-width"]:this.el.parentElement.classList.contains("default")&&!this.el.parentElement.classList.contains("aligned-left"),[`${this.variant}`]:true}},this.variant==="compact"?l:u)}get el(){return i(this)}static get watchers(){return{stepType:["stepTypeChangeHandler"]}}};n.style=o;export{n as ic_step};
2
- //# sourceMappingURL=p-d5c99ec3.entry.js.map
@@ -1,2 +0,0 @@
1
- import{h as t,r as e,c as i,H as s,g as a}from"./p-8455d1bb.js";import{d as n,g as h,a as o,y as r,b as c,c as l,e as d,f as u,h as f}from"./p-33dd24eb.js";import{s as b,I as p,a as m,b as y,o as w,c as g}from"./p-cd799087.js";const v=`<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M9.70687 6L8.29688 7.41L12.8769 12L8.29688 16.59L9.70687 18L15.7069 12L9.70687 6Z" fill="currentColor"/>\n</svg>\n`;const k=({focussed:e,today:i,day:s,monthInView:a,onFocusDay:n,onBlurDay:h,onSelectDay:o,selected:r,focussedDayRef:c,inRange:l,showDaysOutsideMonth:d,disableDay:u})=>{const f=()=>{o(s)};const y=()=>{n()};const w=()=>{h()};const g=b(p);const v=b(m);const k=!l||u;const x=a!==s.getMonth();const D=k||x&&!d;return t("div",{class:"day-button-container"},t("button",{class:{"day-button":true,"outside-month":x,"outside-range":k,hidden:x&&!d,disabled:D,today:i,selected:r,focussed:e},tabIndex:e?0:-1,"aria-hidden":x?"true":"false","aria-disabled":D?"true":"false","aria-current":i?"date":undefined,"aria-label":D||x||k?undefined:`Choose ${g[s.getDay()]}, ${s.getDate()} ${v[s.getMonth()]} ${s.getFullYear()}`,disabled:D,onClick:f,onBlur:w,onFocus:y,ref:t=>{if(e&&t&&c){c(t)}}},(!x||x&&d)&&t("ic-typography",{variant:"subtitle-small",italic:x},s.getDate())))};const x=({size:e,focussedMonth:i,monthInView:s,onSelectMonth:a,onKeyDown:r,focussedMonthRef:c,minDate:l,maxDate:d,yearInView:u})=>{const f=t=>{const e=t.target;a(Number(e.getAttribute("data-month")))};const p=b(m);return t("div",{class:{"month-picker":true},role:"list"},p.map(((a,b)=>{const p=s===b;const m=i===b;const y=!n(new Date(u,b,1),l?o(l):null,d?h(d):null);return t("ic-button",{role:"listitem",class:{"month-button":true,selected:p,focussed:m,disabled:y},"full-width":true,disabled:y,variant:p?"primary":"tertiary","data-month":b,size:e,tabIndex:m?0:-1,"aria-current":p?"true":"false","aria-label":p?"":`select ${a}`,onClick:f,onKeyDown:r,ref:t=>{if(m&&t){c(t)}}},a)})))};const D=({decadeView:e,size:i,focussedYear:s,yearInView:a,onSelectYear:n,onFocusYear:h,onBlurYear:o,onKeyDown:c,minDate:l,maxDate:d,focussedYearRef:u})=>{const f=t=>{const e=t.target;n(Number(e.getAttribute("data-year")))};const b=()=>{h()};const p=()=>{o()};const m=t=>{t.preventDefault()};const y=e[0];const w=e[11];const g=e.slice(1,11);return t("div",{class:"year-picker",role:"list"},t("div",{class:"prev-decade","aria-hidden":"true"},t("ic-button",{id:"prev-decade-button",class:{"year-button":true},disabled:!r(y,l,d),"data-year":y,tabIndex:-1,variant:"tertiary",onClick:f,onMouseDown:m,"aria-hidden":"true",size:i},`${y-9}s`,t("svg",{slot:"left-icon",width:"12",height:"12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t("path",{d:"M11.3333 5.33341H3.21996L6.94663 1.60675L5.99996 0.666748L0.666626 6.00008L5.99996 11.3334L6.93996 10.3934L3.21996 6.66675H11.3333V5.33341Z",fill:"currentColor"})))),g.map((e=>{const n=a===e;const h=s===e;return t("ic-button",{class:{"year-button":true,selected:n,focussed:h},disabled:!r(e,l,d),"data-year":e,tabIndex:h?0:-1,variant:n?"primary":"tertiary",onClick:f,"aria-label":n?"":`select ${e}`,role:"listitem","aria-current":n?"true":"false",onKeyDown:c,onFocus:b,onBlur:p,size:i,ref:t=>{if(h&&t){u(t)}}},e)})),t("div",{class:"next-decade","aria-hidden":"true"},t("ic-button",{id:"next-decade-button",class:{"year-button":true,flip:true},disabled:!r(w,l,d),"data-year":w,tabIndex:-1,variant:"tertiary",onClick:f,onMouseDown:m,"aria-hidden":"true",size:i},`${w}s`,t("svg",{slot:"right-icon",width:"12",height:"12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},t("path",{d:"M11.3333 5.33341H3.21996L6.94663 1.60675L5.99996 0.666748L0.666626 6.00008L5.99996 11.3334L6.93996 10.3934L3.21996 6.66675H11.3333V5.33341Z",fill:"currentColor"})))))};const z='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:block;position:relative;--month-year-picker-button-width:5rem;--month-button-width:5.5rem;--input-field-width:var(--input-width, 19.125rem)}:host(.large){--month-button-width:6.3125rem;--input-field-width:var(--input-width, 21.125rem)}:host(.small){--month-button-width:6.25rem;--input-field-width:var(--input-width, 17.125rem)}:host .date-input-container{position:relative}ic-date-input{--input-width:var(--input-field-width)}:host .calendar-container{min-width:19rem;max-width:23.5rem;width:var(--input-width);display:flex;flex-direction:column;gap:var(--ic-space-xs);position:absolute;border:var(--ic-border-default);border-radius:var(--ic-border-radius);align-items:center;background-color:var(--ic-architectural-white);z-index:var(--ic-z-index-date-picker);box-sizing:border-box;box-shadow:var(--ic-elevation-overlay);margin-top:var(--ic-space-xxxs);padding:var(--ic-space-xs);animation:fade-in-calendar var(--ic-transition-duration-slow)}:host(.small) .calendar-container{min-width:17rem;max-width:21.5rem}:host(.large) .calendar-container{min-width:21rem;max-width:25.5rem}:host .calendar-container.above{bottom:calc(var(--ic-space-xxl) - var(--ic-space-xxs))}:host .month-year-nav-container{display:flex;justify-content:space-between;align-items:center;align-self:stretch}:host .month-year-nav-container.hidden{display:none}:host .month-year-nav{display:flex;justify-content:space-between;align-items:center;flex:1 0 0}:host .month-picker,:host .year-picker{flex-wrap:wrap;display:inline-flex;align-items:center;width:17.5rem;-moz-column-gap:var(--ic-space-xs);column-gap:var(--ic-space-xs);row-gap:var(--ic-space-xxs)}:host(.small) .month-picker,:host(.small) .year-picker{width:13.125rem}:host(.large) .month-picker,:host(.large) .year-picker{width:20rem}:host .month-picker-button,:host .year-picker-button{width:5rem;--min-width:5rem}:host .month-button,:host .year-button{width:var(--month-button-width)}:host .month-button.focussed,:host .year-button.focussed{z-index:1}:host .month-button::part(button),:host .year-button::part(button){min-width:var(--month-button-width)}:host .prev-decade .year-button svg{margin-right:calc(-1 * var(--ic-space-xl));padding-top:var(--ic-space-sm)}:host .prev-decade .year-button::part(button){padding-left:0;padding-right:var(--ic-space-lg)}:host(.small) .prev-decade .year-button::part(button){padding-left:0;padding-right:calc(var(--ic-space-lg) + var(--ic-space-xxs))}:host .next-decade .year-button svg{margin-left:calc(-1 * var(--ic-space-xl));padding-top:var(--ic-space-sm)}:host .next-decade .year-button::part(button){padding-right:0;padding-left:var(--ic-space-lg)}:host(.small) .next-decade .year-button::part(button),:host(.large) .next-decade .year-button::part(button){padding-left:var(--ic-space-xl)}:host .bottom-buttons{padding-top:var(--ic-space-xs);display:flex;justify-content:space-between;align-items:center;align-self:stretch;animation:fade-in-buttons var(--ic-transition-duration-slow)}:host(.small) .bottom-buttons{padding-top:var(--ic-space-xxs)}:host .bottom-buttons.no-today{align-items:flex-end;flex-direction:column}:host .bottom-buttons.hidden{display:none}:host .calendar{display:flex;flex-direction:column;align-items:flex-start;width:15.75rem;animation:fade-in-buttons var(--ic-transition-duration-slow)}:host(.large) .calendar{width:19.25rem}:host(.small) .calendar{padding-bottom:var(--ic-space-xxs);width:14rem}:host .hidden{display:none}:host .weekdays{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:var(--ic-space-xs);align-self:stretch}:host .calendar-days-container{display:flex;flex-wrap:wrap;justify-content:space-between;row-gap:var(--ic-space-xs);padding:var(--ic-space-xxs) 0}:host(.small) .calendar-days-container{padding:var(--ic-space-xxxs) 0}:host(.large) .calendar-days-container{padding:var(--ic-space-xs) 0}:host .calendar-day-header{display:flex;width:2rem;padding:var(--ic-space-xxs) 0;justify-content:center;align-items:center}:host(.small) .calendar-day-header,:host(.large) .calendar-day-header{padding:var(--ic-space-xxs)}:host .calendar-day-header ic-typography{color:var(--ic-color-tertiary-text);text-align:center}:host .day-button-container{display:flex;justify-content:center;align-items:center;width:2.25rem;height:2.25rem}:host(.small) .day-button-container{width:2rem;height:2rem}:host(.large) .day-button-container{width:2.5rem;height:2.5rem}:host .day-button{display:flex;position:relative;justify-content:center;align-items:center;border:0;border-radius:2rem;background-color:var(--ic-architectural-white);width:2rem;height:2rem;cursor:pointer;transition:var(--ic-easing-transition-fast);z-index:0}:host .day-button.disabled{cursor:default}:host(.large) .day-button{width:2.25rem;height:2.25rem}:host(.small) .day-button{width:1.75rem;height:1.75rem}:host .day-button ic-typography{width:1.75rem;color:var(--ic-color-primary-text)}:host .day-button.outside-range ic-typography{color:var(--ic-architectural-400)}:host .day-button.outside-month ic-typography{font-weight:var(--ic-font-weight-regular) !important}:host .day-button.outside-month:not(.outside-range):not(.selected) ic-typography{color:var(--ic-color-primary-text)}:host .day-button:hover:not(.disabled){background-color:var(--ic-action-dark-bg-hover)}:host .day-button:active:not(.disabled){background-color:var(--ic-action-dark-bg-active)}@media (prefers-reduced-motion: no-preference){:host .day-button:hover:not(.disabled):not(.focussed),:host .day-button:active:not(.disabled):not(.focussed){transition:background-color var(--ic-transition-duration-slow) ease-in-out}}:host .day-button.selected:not(.hidden){background-color:var(--ic-action-default)}:host .day-button.selected ic-typography{color:var(--ic-color-white-text)}:host .day-button.selected:not(.hidden):hover{background-color:var(--ic-action-default-hover)}:host .day-button.selected:not(.hidden):active{background-color:var(--ic-action-default-active)}:host .day-button.focussed{z-index:1}:host .day-button:focus{outline:none}:host .day-button.focussed:focus{box-shadow:var(--ic-border-focus)}:host .day-button.today:not(.hidden)::after{content:"";position:absolute;width:0.875rem;height:0.125rem;bottom:0.4rem;border-radius:var(--ic-border-radius);background-color:var(--ic-action-default)}:host(.small) .day-button.today::after{bottom:0.35rem}:host(.large) .day-button.today::after{width:1rem}:host .day-button.today.selected::after{background-color:var(--ic-architectural-white)}:host #select-month-hint,:host #select-year-hint{display:none}.sr-only{position:absolute;left:-9999px}@media (prefers-reduced-motion: reduce){:host .calendar-container,:host .calendar,:host .bottom-buttons{animation:none}}@keyframes fade-in-buttons{0%{opacity:0}50%{opacity:0}100%{opacity:1}}@keyframes fade-in-calendar{0%{display:flex;max-height:0}100%{display:flex;max-height:600px}}@media (forced-colors: active){:host .day-button.today:not(.hidden)::after{background-color:highlight}:host .day-button.selected:not(.hidden){background-color:highlight}:host .day-button.focussed:focus{border:var(--ic-hc-border)}:host .month-button.selected::part(button),:host .year-button.selected::part(button){background-color:highlight}}';const M="DD/MM/YYYY";const H="Dates in the future are not allowed. Please select a date in the past.";const V="Dates in the past are not allowed. Please select a date in the future.";const P="The date you have selected is on a day of the week that is not allowed. Please select another date.";const I=100;const L=360;const T=400;const Y=440;const C=class{constructor(s){e(this,s);this.icChange=i(this,"icChange",7);this.clearButtonEl=null;this.daysOfWeek=[];this.dayButtonFocussed=false;this.dayPickerKeyboardNav=false;this.dialogDescription="";this.focusDay=true;this.liveRegionEl=null;this.monthNames=[];this.monthInViewUpdateHandled=false;this.myCalendarButtonClicked=false;this.showPickerAbove=false;this.today=new Date;this.todayButtonEl=null;this.yearButtonFocussed=false;this.setDecadeView=t=>{let e=t-1;const i=[];while(e<=t+10){i.push(e);e++}this.decadeView=i;this.decadeStart=i[1];this.decadeEnd=i[10]};this.setSelectedDate=(t,e=true)=>{if(t===null||!c(t,this.selectedDate)){this.selectedDate=t;this.value=t;if(e){this.icChange.emit({value:t})}}};this.handleCalendarMouseDown=t=>{const e=t.target;if(e.tagName!=="IC-BUTTON"){t.preventDefault()}};this.handleCalendarClick=t=>{this.clearDialogDescription();t.stopImmediatePropagation()};this.handleDocumentClick=()=>{this.calendarOpen=false};this.keyDownHandler=t=>{if(t.key==="Escape"){this.closeButtonClickHandler();this.inputEl.setCalendarFocus()}else{this.clearDialogDescription()}t.stopImmediatePropagation()};this.closeButtonClickHandler=()=>{this.calendarOpen=false};this.focusFirstElement=()=>{this.monthButtonEl.setFocus()};this.focusLastElement=()=>{if(this.showPickerClearButton&&!this.clearButtonEl.disabled){this.clearButtonEl.setFocus()}else if(this.showPickerTodayButton&&!this.todayButtonEl.disabled){this.todayButtonEl.setFocus()}else if(this.monthPickerVisible){this.focussedMonthEl.setFocus()}else if(this.yearPickerVisible){this.focussedYearEl.setFocus()}else{this.focussedDayEl.focus()}};this.focusFocussedDay=()=>{this.focussedDayEl.focus()};this.monthButtonClickHandler=()=>{this.yearPickerVisible=false;this.focusDay=false;this.monthPickerVisible=!this.monthPickerVisible;if(this.monthPickerVisible){this.setAriaLiveRegionText("Month picker view open")}else{this.setMonthSelectedLiveRegionText()}};this.yearButtonClickHandler=()=>{this.monthPickerVisible=false;this.focusDay=false;this.yearPickerVisible=!this.yearPickerVisible;if(this.yearPickerVisible){this.setAriaLiveRegionText(`Year picker view open. ${this.getDecadeInViewText()}`)}else{this.setYearSelectedLiveRegionText()}};this.todayButtonClickHandler=()=>{this.yearPickerVisible=false;this.monthPickerVisible=false;this.setFocussedDate(new Date);this.setAriaLiveRegionText(this.getMonthInViewText());setTimeout((()=>this.focusFocussedDay()),I)};this.todayButtonKeyDownHandler=t=>{if(t.key==="Tab"&&!t.shiftKey&&this.clearButtonEl.disabled){this.focusFirstElement();t.preventDefault()}};this.clearButtonClickHandler=()=>{this.setSelectedDate(null,false);let t="Selected date cleared.";if(!this.monthPickerVisible&&!this.yearPickerVisible){t+=` ${this.getMonthInViewText()}`}if(this.monthPickerVisible){this.focussedMonthEl.setFocus()}else if(this.yearPickerVisible){this.focussedYearEl.setFocus()}else{this.focusFocussedDay()}this.setAriaLiveRegionText(t)};this.setMonthSelectedLiveRegionText=()=>{this.setAriaLiveRegionText(`${this.monthNames[this.monthInView]} selected. ${this.getMonthInViewText()}`)};this.setYearSelectedLiveRegionText=()=>{this.setAriaLiveRegionText(`${this.yearInView} selected. ${this.getMonthInViewText()}`)};this.getMonthInViewText=()=>`${this.monthNames[this.monthInView]} ${this.yearInView} currently in view.`;this.getDecadeInViewText=()=>`${this.decadeStart} to ${this.decadeEnd} currently in view.`;this.setAriaLiveRegionText=t=>{this.liveRegionEl.innerText=t};this.clearDialogDescription=()=>{this.dialogDescription=""};this.clearButtonKeyDownHandler=t=>{if(t.key==="Tab"&&!t.shiftKey){this.focusFirstElement();t.preventDefault()}};this.goToPreviousMonth=(t=false)=>{this.focusDay=t;this.moveMonths(-1)};this.goToNextMonth=(t=false)=>{this.focusDay=t;this.moveMonths(1)};this.goToPreviousYear=(t=false)=>{if(this.isPrevYearAllowed()){this.focusDay=t;this.moveYears(-1)}};this.goToNextYear=(t=false)=>{if(this.isNextYearAllowed()){this.focusDay=t;this.moveYears(1)}};this.navButtonMouseDownHandler=t=>{t.preventDefault()};this.renderMonthYearNavButton=(e,i,s)=>{const a=this.size;return t("div",{"aria-hidden":"true"},t("ic-button",{id:e,disableTooltip:true,disabled:s,onClick:this.monthYearNavClickHandler,class:{flip:i},variant:"icon",innerHTML:v,size:a,tabIndex:-1,"aria-hidden":"true",onMouseDown:this.navButtonMouseDownHandler}))};this.monthYearNavClickHandler=t=>{const e=t.target;switch(e.id){case"previous-month-button":this.goToPreviousMonth(this.dayButtonFocussed);break;case"next-month-button":this.goToNextMonth(this.dayButtonFocussed);break;case"previous-year-button":this.goToPreviousYear(this.dayButtonFocussed);break;case"next-year-button":this.goToNextYear(this.dayButtonFocussed);break}};this.previousMonthButton=()=>{let t=false;if(this.focussedDate!==null&&this.minDate!==null){const e=this.focussedDate.getFullYear()===this.minDate.getFullYear();if(e){t=this.monthInView-1<this.minDate.getMonth()}}return this.renderMonthYearNavButton("previous-month-button",true,t)};this.nextMonthButton=()=>{let t=false;if(this.focussedDate!==null&&this.maxDate!==null){const e=this.focussedDate.getFullYear()===this.maxDate.getFullYear();if(e){t=this.monthInView+1>this.maxDate.getMonth()}}return this.renderMonthYearNavButton("next-month-button",false,t)};this.previousYearButton=()=>this.renderMonthYearNavButton("previous-year-button",true,!this.isPrevYearAllowed());this.nextYearButton=()=>this.renderMonthYearNavButton("next-year-button",false,!this.isNextYearAllowed());this.isPrevYearAllowed=()=>this.isYearAllowed(this.yearInView-1);this.isNextYearAllowed=()=>this.isYearAllowed(this.yearInView+1);this.isYearAllowed=t=>r(t,this.minDate,this.maxDate);this.getMonthView=t=>{const e=l(o(t),this.startOfWeek);const i=d(h(t),this.startOfWeek);const s=[];let a=e;while(!c(a,i)){s.push(a);a=new Date(a);a.setDate(a.getDate()+1)}s.push(a);return s};this.isCurrentMonth=()=>{const t=new Date;return t.getFullYear()===this.yearInView&&t.getMonth()===this.monthInView};this.updateMonthInView=()=>{this.currMonthView=this.getMonthView(this.focussedDate);this.focussedDay=this.focussedDate.getDate();this.monthInView=this.focussedDate.getMonth();this.yearInView=this.focussedDate.getFullYear();if(this.dayPickerKeyboardNav){this.monthInViewUpdateHandled=true;this.setAriaLiveRegionText(this.getMonthInViewText());this.dayPickerKeyboardNav=false}};this.handleSelectDay=t=>{this.setSelectedDate(t);this.calendarOpen=false;this.inputEl.setCalendarFocus()};this.handleSelectMonth=t=>{this.moveMonths(t-this.monthInView);setTimeout((()=>{this.monthButtonEl.setFocus();this.monthPickerVisible=false;this.setMonthSelectedLiveRegionText()}),I)};this.handleSelectYear=t=>{const e=this.decadeView.indexOf(t);if(e>0&&e<this.decadeView.length-1){this.moveYears(t-this.yearInView);this.focusDay=false;const e=this.monthNames[this.monthInView];this.setAriaLiveRegionText(`${t} selected. ${e} ${t} currently in view.`);setTimeout((()=>{this.yearButtonEl.setFocus();this.yearPickerVisible=false}),I)}else{const e=t-this.focussedYear>0?10:-10;this.updateFocussedYear(e,this.yearButtonFocussed);this.setAriaLiveRegionText(this.getDecadeInViewText())}};this.monthPickerKeyDownHandler=t=>{let e=true;switch(t.key){case"ArrowUp":case"ArrowLeft":this.updateFocussedMonth(-1);break;case"ArrowDown":case"ArrowRight":this.updateFocussedMonth(1);break;case"Home":this.updateFocussedMonth(-this.focussedMonth);break;case"End":this.updateFocussedMonth(11-this.focussedMonth);break;case"Tab":e=this.calendarTabHandler(t);break;case"Escape":t.stopImmediatePropagation();this.monthPickerVisible=false;setTimeout((()=>this.focusFocussedDay()),I);break;default:e=false}if(e){t.preventDefault()}};this.yearPickerKeyDownHandler=t=>{let e=true;switch(t.key){case"ArrowUp":case"ArrowLeft":this.updateFocussedYear(-1);break;case"ArrowDown":case"ArrowRight":this.updateFocussedYear(1);break;case"Home":if(this.focussedYear>this.decadeStart){this.updateFocussedYear(this.decadeStart-this.focussedYear)}break;case"End":if(this.focussedYear<this.decadeEnd){this.updateFocussedYear(this.decadeEnd-this.focussedYear)}break;case"PageUp":this.updateFocussedYear(-10);break;case"PageDown":this.updateFocussedYear(10);break;case"Tab":e=this.calendarTabHandler(t);break;case"Escape":t.stopImmediatePropagation();this.yearPickerVisible=false;setTimeout((()=>this.focusFocussedDay()),I);break;default:e=false}if(e){t.preventDefault()}};this.onYearButtonFocusHandler=()=>{this.yearButtonFocussed=true};this.onYearButtonBlurHandler=()=>{this.yearButtonFocussed=false};this.monthButtonKeyDownHandler=t=>{let e=false;switch(t.key){case"ArrowLeft":case"ArrowUp":e=true;this.goToPreviousMonth();break;case"ArrowRight":case"ArrowDown":e=true;this.goToNextMonth();break;case"Home":e=true;this.focusDay=false;this.moveMonths(-this.monthInView);break;case"End":e=true;this.focusDay=false;this.moveMonths(11-this.monthInView);break;case"Tab":if(t.shiftKey){e=true;this.focusLastElement()}break;case"Escape":if(this.monthPickerVisible){this.monthPickerVisible=false;t.stopImmediatePropagation()}break}if(e){t.preventDefault()}};this.yearButtonKeyDownHandler=t=>{let e=false;switch(t.key){case"ArrowLeft":case"ArrowUp":e=true;this.goToPreviousYear();break;case"ArrowRight":case"ArrowDown":e=true;this.goToNextYear();break;case"Home":if(this.yearPickerVisible&&this.yearInView>this.decadeStart){e=true;this.moveYears(this.decadeStart-this.yearInView)}break;case"End":if(this.yearPickerVisible&&this.yearInView<this.decadeEnd){e=true;this.moveYears(this.decadeEnd-this.focussedYear)}break;case"PageUp":e=true;this.focusDay=false;this.moveYears(-10);break;case"PageDown":e=true;this.focusDay=false;this.moveYears(10);break;case"Escape":if(this.yearPickerVisible){this.yearPickerVisible=false;t.stopImmediatePropagation()}break}if(e){t.preventDefault()}};this.handleCalendarKeyDown=t=>{let e=true;switch(t.key){case"ArrowDown":this.dayPickerKeyboardNav=true;this.moveDays(7);break;case"ArrowUp":this.dayPickerKeyboardNav=true;this.moveDays(-7);break;case"ArrowLeft":this.dayPickerKeyboardNav=true;this.moveDays(-1*this.getNextDayToFocus(this.focussedDate,false));break;case"ArrowRight":this.dayPickerKeyboardNav=true;this.moveDays(this.getNextDayToFocus(this.focussedDate,true));break;case"PageUp":this.dayPickerKeyboardNav=true;t.shiftKey?this.moveYears(-1):this.moveMonths(-1);break;case"PageDown":this.dayPickerKeyboardNav=true;t.shiftKey?this.moveYears(1):this.moveMonths(1);break;case"Home":this.dayPickerKeyboardNav=true;this.setFocussedDate(new Date(this.focussedYear,this.focussedMonth,1));break;case"End":this.dayPickerKeyboardNav=true;this.setFocussedDate(new Date(this.focussedYear,this.focussedMonth+1,0));break;case"Tab":e=this.calendarTabHandler(t);break;default:e=false;break}if(e){t.preventDefault()}};this.calendarTabHandler=t=>{let e=false;if(!t.shiftKey&&(!this.showPickerTodayButton||this.isCurrentMonth())&&(!this.showPickerClearButton||this.clearButtonEl.disabled)){this.focusFirstElement();e=true}else if(t.shiftKey){this.yearButtonEl.setFocus();e=true}return e};this.onDayButtonFocusHandler=()=>{this.dayButtonFocussed=true};this.onDayButtonBlurHandler=()=>{this.dayButtonFocussed=false};this.getNextDayToFocus=(t,e,i=1)=>{const s=e?1:-1;const a=new Date(t);a.setDate(a.getDate()+s);const n=Number(a.getDay());if(this.disableDays.includes(n)){return this.getNextDayToFocus(a,e,i+1)}else{return i}};this.moveDays=t=>{const e=new Date(this.focussedDate);e.setDate(e.getDate()+t);this.setFocussedDate(e)};this.moveMonths=t=>{const e=this.focussedDate.getMonth()+t;const i=new Date(new Date(o(this.focussedDate)).setMonth(e));const s=h(i);const a=new Date(new Date(this.focussedDate).setMonth(e));this.setFocussedDate(u(a,i,s));if(this.monthPickerVisible===false&&this.yearPickerVisible===false&&this.monthInViewUpdateHandled===false){this.setAriaLiveRegionText(this.getMonthInViewText())}this.monthInViewUpdateHandled=false};this.moveYears=t=>{const e=this.focussedDate.getFullYear()+t;const i=new Date(new Date(o(this.focussedDate)).setFullYear(e));const s=h(i);const a=new Date(new Date(this.focussedDate).setFullYear(e));this.setFocussedDate(u(a,i,s));if(this.monthPickerVisible===false&&this.yearPickerVisible===false&&this.monthInViewUpdateHandled===false){this.setAriaLiveRegionText(this.getMonthInViewText())}this.monthInViewUpdateHandled=false};this.updateFocussedMonth=t=>{const e=new Date(this.focussedYear,this.focussedMonth,1);e.setMonth(this.focussedMonth+t);const i=u(e,this.minDate,this.maxDate);this.focussedMonth=i.getMonth();setTimeout((()=>this.focussedMonthEl.setFocus()),I)};this.updateFocussedYear=(t,e=true)=>{const i=new Date((new Date).setFullYear(this.focussedYear+t));const s=u(i,this.minDate,this.maxDate);this.setFocussedYear(s.getFullYear(),e)};this.setFocussedDate=t=>{this.focussedDate=u(t,this.minDate,this.maxDate)};this.setFocussedDayEl=t=>{this.focussedDayEl=t};this.setFocussedMonthEl=t=>{this.focussedMonthEl=t};this.setFocussedYearEl=t=>{this.focussedYearEl=t};this.setFocussedYear=(t,e=true)=>{const i=this.focussedYear;this.focussedYear=t;if(this.yearPickerVisible){const s=Math.floor(t/10)*10;const a=Math.floor(i/10)*10;if(s!==a){this.setDecadeView(s);this.setAriaLiveRegionText(this.getDecadeInViewText())}if(e){setTimeout((()=>{if(this.focussedYearEl!==null)this.focussedYearEl.setFocus()}),I)}}else{this.setDecadeView(Math.floor(t/10)*10)}};this.setDateInputProps=()=>{const t=!this.disablePast||this.disablePastMessage===V?"":this.disablePastMessage;const e=!this.disableFuture||this.disableFutureMessage===H?"":this.disableFutureMessage;const i=!this.disableDays.length||this.disableDaysMessage===P?"":this.disableDaysMessage;if(this.dateFormat!==M){this.dateInputProps.dateFormat=this.dateFormat}if(this.disableFuture){this.dateInputProps.disableFuture=this.disableFuture;if(e!==""){this.dateInputProps.disableFutureMessage=e}}if(this.disablePast){this.dateInputProps.disablePast=this.disablePast;if(t!==""){this.dateInputProps.disablePastMessage=t}}if(this.disableDays.length>0){this.dateInputProps.disableDays=this.disableDays;if(i!==""){this.dateInputProps.disableDaysMessage=i}}this.dateInputProps.label=this.label;if(this.max!==null&&this.max!==""){this.dateInputProps.max=this.maxDate}if(this.min!==null&&this.min!==""){this.dateInputProps.min=this.minDate}if(this.helperText!==undefined){this.dateInputProps.helperText=this.helperText}if(this.inputId!==undefined){this.dateInputProps.inputId=this.inputId}if(this.name!==undefined){this.dateInputProps.name=this.name}this.dateInputProps.showClearButton=true;this.dateInputProps.showCalendarButton=true;if(this.disabled){this.dateInputProps.disabled=this.disabled}if(this.required){this.dateInputProps.required=this.required}if(this.size!=="default"){this.dateInputProps.size=this.size}if(this.validationStatus!==""){this.dateInputProps.validationStatus=this.validationStatus}if(this.validationText!==""){this.dateInputProps.validationText=this.validationText}this.dateInputProps.value=this.value};this.calendarOpen=false;this.currMonthView=[];this.currYearPickerView=[];this.dateInputProps={label:""};this.decadeView=[];this.focussedDate=null;this.focussedDay=undefined;this.focussedDayEl=undefined;this.focussedMonth=undefined;this.focussedMonthEl=undefined;this.focussedYear=undefined;this.maxDate=null;this.minDate=null;this.monthInView=undefined;this.monthPickerVisible=false;this.orderedDaysOfWeek=[];this.selectedDate=null;this.yearInView=undefined;this.yearPickerVisible=false;this.dateFormat="DD/MM/YYYY";this.disabled=false;this.disableDays=[];this.disableDaysMessage="The date you have selected is on a day of the week that is not allowed. Please select another date.";this.disableFuture=false;this.disableFutureMessage="Dates in the future are not allowed. Please select a date in the past.";this.disablePast=false;this.disablePastMessage="Dates in the past are not allowed. Please select a date in the future.";this.helperText=undefined;this.inputId=undefined;this.label=undefined;this.max="";this.min="";this.name=undefined;this.openAtDate="";this.required=false;this.showDaysOutsideMonth=true;this.showPickerClearButton=true;this.showPickerTodayButton=true;this.size="default";this.startOfWeek=y.Monday;this.validationStatus="";this.validationText="";this.value=""}watchMaxHandler(){if(this.disableFuture){this.maxDate=new Date}else{this.maxDate=f(this.max,this.dateFormat)}}watchMinHandler(){if(this.disablePast){this.minDate=new Date}else{this.minDate=f(this.min,this.dateFormat)}}watchOpenHandler(){if(this.calendarOpen){if(this.inputEl){let t=T;if(this.size==="small"){t=L}else if(this.size==="large"){t=Y}if(this.el.offsetTop+this.inputEl.offsetHeight+t>window.innerHeight&&this.el.offsetTop>t){this.showPickerAbove=true}else{this.showPickerAbove=false}}if(this.selectedDate===null||!n(this.selectedDate,this.minDate,this.maxDate)){let t=new Date;if(this.openAtDate!==""){t=f(this.openAtDate,this.dateFormat)}this.setFocussedDate(t)}else{this.setFocussedDate(this.selectedDate)}let t=this.getMonthInViewText();if(this.selectedDate===null){t+=" No date selected."}t+=" Use arrow keys to change day. Press enter or space to select a date or press escape to close the picker";this.dialogDescription=t;setTimeout((()=>this.focusFocussedDay()),I);document.addEventListener("click",this.handleDocumentClick)}else{document.removeEventListener("click",this.handleDocumentClick);this.monthPickerVisible=false;this.yearPickerVisible=false}}watchFocussedDateHandler(t,e){if(e===null||!(e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth())){this.updateMonthInView()}}watchMonthInViewHandler(){this.focussedMonth=this.monthInView}watchYearInViewHandler(){this.setFocussedYear(this.yearInView,false)}watchYearPickerVisibleHandler(){if(!this.yearPickerVisible){this.setFocussedYear(this.yearInView)}}watchMonthPickerVisibleHandler(){if(!this.monthPickerVisible){this.focussedMonth=this.monthInView}}watchFocussedDayEl(){if(this.focusDay){setTimeout((()=>this.focusFocussedDay()),I)}this.focusDay=true}componentWillLoad(){w([{prop:this.label,propName:"label"}],"Date Picker");this.monthNames=b(m);this.daysOfWeek=b(g);this.orderedDaysOfWeek=this.daysOfWeek.splice(this.startOfWeek,this.daysOfWeek.length).concat(this.daysOfWeek.splice(0,this.startOfWeek));this.watchMaxHandler();this.watchMinHandler()}localCalendarButtonClickHandler(t){this.myCalendarButtonClicked=true;if(!this.calendarOpen){this.setSelectedDate(t.detail.value,false)}this.calendarOpen=!this.calendarOpen}calendarButtonClickHandler(){if(!this.myCalendarButtonClicked){this.calendarOpen=false}this.myCalendarButtonClicked=false}render(){const{calendarOpen:e,dateInputProps:i,monthNames:a,size:h,focussedMonth:o,focussedYear:r,monthInView:l,yearInView:d,monthPickerVisible:u,yearPickerVisible:f,orderedDaysOfWeek:b,decadeView:p,minDate:m,maxDate:y,showPickerClearButton:w,showPickerTodayButton:g,dialogDescription:v}=this;let z="";if(u){z=`Use the arrow keys to change the selected month. To return to day picker view, press Enter or Space to select a month, or press Escape.`}else{z=`Press Enter or Space to open month picker view or use the arrow keys to change month.`}let M="";if(f){M=`Use the arrow keys to change the selected year. To return to day picker view, press Enter or Space to select a year, or press Escape.`}else{M=`Press Enter or Space to open year picker view or use the arrow keys to change the selected year.`}this.setDateInputProps();const H="choose date";const V=a&&a[l]?a[l]:"Open month picker";const P=this.yearInView?this.yearInView:"Open year picker";let I=m;if(this.disablePast){const t=new Date(m);t.setDate(m.getDate()-1);I=t}return t(s,{onKeyDown:this.keyDownHandler,class:h},t("div",{class:"date-input-container"},t("ic-date-input",Object.assign({ref:t=>this.inputEl=t},i))),e&&t("div",null,t("span",{id:"dialog-description",class:"sr-only"},v),t("div",{role:"dialog","aria-modal":"true","aria-label":H,"aria-describedBy":"dialog-description",class:{"calendar-container":true,above:this.showPickerAbove},onMouseDown:this.handleCalendarMouseDown,onClick:this.handleCalendarClick},t("span",{ref:t=>this.liveRegionEl=t,id:"live-region","aria-live":"assertive",class:"sr-only"}),t("div",{class:{"month-year-nav-container":true}},t("div",{class:"month-year-nav"},this.previousMonthButton(),t("span",{id:"select-month-hint","aria-hidden":"true"},z),t("ic-button",{ref:t=>this.monthButtonEl=t,size:h,class:"month-picker-button","aria-haspopup":"menu","aria-expanded":u?"true":"false","full-width":"true",variant:"tertiary","aria-label":V,"aria-describedby":"select-month-hint",onKeyDown:this.monthButtonKeyDownHandler,onClick:this.monthButtonClickHandler},a[l]),this.nextMonthButton()),t("div",{class:"month-year-nav"},this.previousYearButton(),t("span",{id:"select-year-hint","aria-hidden":"true"},M),t("ic-button",{ref:t=>this.yearButtonEl=t,size:h,class:"year-picker-button","aria-haspopup":"menu","aria-expanded":f?"true":"false","full-width":"true",variant:"tertiary","aria-label":P,"aria-describedby":"select-year-hint",onKeyDown:this.yearButtonKeyDownHandler,onClick:this.yearButtonClickHandler},this.yearInView),this.nextYearButton())),!(u||f)&&t("div",{class:{calendar:true,hidden:u||f},onKeyDown:this.handleCalendarKeyDown},t("div",{class:"weekdays","aria-hidden":"true"},b.map((e=>{const i=h==="small"?e.charAt(0):e;return t("div",{class:"calendar-day-header"},t("ic-typography",{variant:"caption"},i))}))),t("div",{class:"calendar-days-container"},this.currMonthView.map((e=>t(k,{day:e,disableDay:this.disableDays.includes(Number(e.getDay())),today:c(e,this.today),selected:c(e,this.selectedDate),focussed:c(e,this.focussedDate),inRange:n(e,I,y),monthInView:l,onSelectDay:this.handleSelectDay,focussedDayRef:this.setFocussedDayEl,onFocusDay:this.onDayButtonFocusHandler,onBlurDay:this.onDayButtonBlurHandler,showDaysOutsideMonth:this.showDaysOutsideMonth}))))),t("div",{class:{"month-picker-container":true,hidden:!u}},u&&t(x,{size:h,onSelectMonth:this.handleSelectMonth,monthInView:l,focussedMonth:o,onKeyDown:this.monthPickerKeyDownHandler,focussedMonthRef:this.setFocussedMonthEl,minDate:m,maxDate:y,yearInView:d})),t("div",{class:{"year-picker-container":true,hidden:!f}},f&&t(D,{decadeView:p,size:h,focussedYear:r,onSelectYear:this.handleSelectYear,onKeyDown:this.yearPickerKeyDownHandler,onFocusYear:this.onYearButtonFocusHandler,onBlurYear:this.onYearButtonBlurHandler,yearInView:d,minDate:m,maxDate:y,focussedYearRef:this.setFocussedYearEl})),t("div",{class:{"bottom-buttons":true,"no-today":!g}},g&&t("ic-button",{id:"today-button",variant:"tertiary",ref:t=>this.todayButtonEl=t,size:h,"aria-label":"Navigate to current date",onClick:this.todayButtonClickHandler,onKeyDown:this.todayButtonKeyDownHandler,disabled:this.isCurrentMonth()},"Go to today"),w&&t("ic-button",{id:"clear-button","aria-label":"clear selected date",ref:t=>this.clearButtonEl=t,variant:"tertiary",size:h,onClick:this.clearButtonClickHandler,onKeyDown:this.clearButtonKeyDownHandler,disabled:this.value===""||this.value===null||this.value===undefined},"Clear")))))}static get delegatesFocus(){return true}get el(){return a(this)}static get watchers(){return{max:["watchMaxHandler"],min:["watchMinHandler"],calendarOpen:["watchOpenHandler"],focussedDate:["watchFocussedDateHandler"],monthInView:["watchMonthInViewHandler"],yearInView:["watchYearInViewHandler"],yearPickerVisible:["watchYearPickerVisibleHandler"],monthPickerVisible:["watchMonthPickerVisibleHandler"],focussedDayEl:["watchFocussedDayEl"]}}};C.style=z;export{C as ic_date_picker};
2
- //# sourceMappingURL=p-e5d76564.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["DayButton","focussed","today","day","monthInView","onFocusDay","onBlurDay","onSelectDay","selected","focussedDayRef","inRange","showDaysOutsideMonth","disableDay","handleDayClick","handleDayFocus","handleDayBlur","dayNames","stringEnumToArray","IcDayNames","months","IcDateInputMonths","outsideRange","outsideMonth","getMonth","disabled","h","class","hidden","tabIndex","undefined","getDay","getDate","getFullYear","onClick","onBlur","onFocus","ref","el","variant","italic","MonthPicker","size","focussedMonth","onSelectMonth","onKeyDown","focussedMonthRef","minDate","maxDate","yearInView","handleMonthClick","ev","button","target","Number","getAttribute","monthNames","role","map","month","index","current","dateInRange","Date","getMonthStart","getMonthEnd","YearPicker","decadeView","focussedYear","onSelectYear","onFocusYear","onBlurYear","focussedYearRef","handleYearClick","handleYearFocus","handleYearBlur","navButtonMouseDownHandler","preventDefault","prevDecade","nextDecade","years","slice","id","yearInRange","onMouseDown","slot","width","height","fill","xmlns","d","yr","flip","icDatePickerCss","DEFAULT_DATE_FORMAT","DEFAULT_DISABLE_DATES_FROM_NOW_MSG","DEFAULT_DISABLE_DATES_UNTIL_NOW_MSG","DEFAULT_DISABLE_DAYS_MSG","FOCUS_TIMER","PICKER_HEIGHT_SMALL","PICKER_HEIGHT_DEFAULT","PICKER_HEIGHT_LARGE","DatePicker","this","clearButtonEl","daysOfWeek","dayButtonFocussed","dayPickerKeyboardNav","dialogDescription","focusDay","liveRegionEl","monthInViewUpdateHandled","myCalendarButtonClicked","showPickerAbove","todayButtonEl","yearButtonFocussed","setDecadeView","start","currYear","decadeArr","push","decadeStart","decadeEnd","setSelectedDate","emit","dateMatches","selectedDate","value","icChange","handleCalendarMouseDown","event","tagName","handleCalendarClick","clearDialogDescription","stopImmediatePropagation","handleDocumentClick","calendarOpen","keyDownHandler","key","closeButtonClickHandler","inputEl","setCalendarFocus","focusFirstElement","monthButtonEl","setFocus","focusLastElement","showPickerClearButton","showPickerTodayButton","monthPickerVisible","focussedMonthEl","yearPickerVisible","focussedYearEl","focussedDayEl","focus","focusFocussedDay","monthButtonClickHandler","setAriaLiveRegionText","setMonthSelectedLiveRegionText","yearButtonClickHandler","getDecadeInViewText","setYearSelectedLiveRegionText","todayButtonClickHandler","setFocussedDate","getMonthInViewText","setTimeout","todayButtonKeyDownHandler","shiftKey","clearButtonClickHandler","text","innerText","clearButtonKeyDownHandler","goToPreviousMonth","moveMonths","goToNextMonth","goToPreviousYear","isPrevYearAllowed","moveYears","goToNextYear","isNextYearAllowed","renderMonthYearNavButton","buttonSize","disableTooltip","monthYearNavClickHandler","innerHTML","chevron","previousMonthButton","focussedDate","yearMatch","nextMonthButton","previousYearButton","nextYearButton","isYearAllowed","getMonthView","date","getWeekStart","startOfWeek","end","getWeekEnd","days","setDate","isCurrentMonth","updateMonthInView","currMonthView","focussedDay","handleSelectDay","handleSelectMonth","handleSelectYear","year","yrPos","indexOf","length","monthName","yearButtonEl","updateFocussedYear","monthPickerKeyDownHandler","handled","updateFocussedMonth","calendarTabHandler","yearPickerKeyDownHandler","onYearButtonFocusHandler","onYearButtonBlurHandler","monthButtonKeyDownHandler","yearButtonKeyDownHandler","handleCalendarKeyDown","moveDays","getNextDayToFocus","onDayButtonFocusHandler","onDayButtonBlurHandler","currDay","forward","level","move","nextDay","nextDayNum","disableDays","includes","numDays","numMonths","newMonth","min","setMonth","max","newDate","clampDate","numYears","newYear","setFullYear","adjust","focusYear","setFocussedYear","setFocussedDayEl","element","setFocussedMonthEl","setFocussedYearEl","prevYear","newDecade","Math","floor","oldDecade","setDateInputProps","untilNowMsg","disablePast","disablePastMessage","fromNowMsg","disableFuture","disableFutureMessage","disableDaysMsg","disableDaysMessage","dateFormat","dateInputProps","label","helperText","inputId","name","showClearButton","showCalendarButton","required","validationStatus","validationText","IcWeekDays","Monday","watchMaxHandler","createDate","watchMinHandler","watchOpenHandler","pickerHeight","offsetTop","offsetHeight","window","innerHeight","openAt","openAtDate","dialogDesc","document","addEventListener","removeEventListener","watchFocussedDateHandler","previous","watchMonthInViewHandler","watchYearInViewHandler","watchYearPickerVisibleHandler","watchMonthPickerVisibleHandler","watchFocussedDayEl","componentWillLoad","onComponentRequiredPropUndefined","prop","propName","IcShortDayNames","orderedDaysOfWeek","splice","concat","localCalendarButtonClickHandler","detail","calendarButtonClickHandler","render","monthButtonText","yearButtonText","dialogLabel","monthLabel","yearLabel","minDay","yesterday","Host","Object","assign","above","calendar","dayName","header","charAt"],"sources":["src/components/ic-date-picker/ic-day-button.tsx","src/components/ic-date-picker/ic-month-picker.tsx","src/components/ic-date-picker/ic-year-picker.tsx","src/components/ic-date-picker/ic-date-picker.css?tag=ic-date-picker&encapsulation=shadow","src/components/ic-date-picker/ic-date-picker.tsx"],"sourcesContent":["import { h, FunctionalComponent } from \"@stencil/core\";\nimport { stringEnumToArray } from \"../../utils/helpers\";\nimport { IcDayNames, IcDateInputMonths } from \"../../utils/types\";\n\nexport type DayButtonProps = {\n focussed: boolean;\n today: boolean;\n day: Date;\n monthInView: number;\n onFocusDay: () => void;\n onBlurDay: () => void;\n onSelectDay: (day: Date) => void;\n selected: boolean;\n focussedDayRef?: (element: HTMLButtonElement) => void;\n inRange: boolean;\n showDaysOutsideMonth: boolean;\n disableDay: boolean;\n};\n\nexport const DayButton: FunctionalComponent<DayButtonProps> = ({\n focussed,\n today,\n day,\n monthInView,\n onFocusDay,\n onBlurDay,\n onSelectDay,\n selected,\n focussedDayRef,\n inRange,\n showDaysOutsideMonth,\n disableDay,\n}) => {\n const handleDayClick = (): void => {\n onSelectDay(day);\n };\n\n const handleDayFocus = (): void => {\n onFocusDay();\n };\n\n const handleDayBlur = (): void => {\n onBlurDay();\n };\n\n const dayNames = stringEnumToArray(IcDayNames);\n const months = stringEnumToArray(IcDateInputMonths);\n const outsideRange = !inRange || disableDay;\n const outsideMonth = monthInView !== day.getMonth();\n const disabled = outsideRange || (outsideMonth && !showDaysOutsideMonth);\n\n return (\n <div class=\"day-button-container\">\n <button\n class={{\n \"day-button\": true,\n \"outside-month\": outsideMonth,\n \"outside-range\": outsideRange,\n hidden: outsideMonth && !showDaysOutsideMonth,\n disabled: disabled,\n today: today,\n selected: selected,\n focussed: focussed,\n }}\n tabIndex={focussed ? 0 : -1}\n aria-hidden={outsideMonth ? \"true\" : \"false\"}\n aria-disabled={disabled ? \"true\" : \"false\"}\n aria-current={today ? \"date\" : undefined}\n aria-label={\n disabled || outsideMonth || outsideRange\n ? undefined\n : `Choose ${dayNames[day.getDay()]}, ${day.getDate()} ${\n months[day.getMonth()]\n } ${day.getFullYear()}`\n }\n disabled={disabled}\n onClick={handleDayClick}\n onBlur={handleDayBlur}\n onFocus={handleDayFocus}\n ref={(el: HTMLButtonElement) => {\n if (focussed && el && focussedDayRef) {\n focussedDayRef(el);\n }\n }}\n >\n {(!outsideMonth || (outsideMonth && showDaysOutsideMonth)) && (\n <ic-typography variant=\"subtitle-small\" italic={outsideMonth}>\n {day.getDate()}\n </ic-typography>\n )}\n </button>\n </div>\n );\n};\n","import { h, FunctionalComponent } from \"@stencil/core\";\nimport {\n dateInRange,\n getMonthStart,\n getMonthEnd,\n} from \"../../utils/date-helpers\";\nimport { stringEnumToArray } from \"../../utils/helpers\";\nimport { IcSizes, IcDateInputMonths } from \"../../utils/types\";\n\nexport type MonthPickerProps = {\n size: IcSizes;\n focussedMonth: number;\n monthInView: number;\n yearInView: number;\n onSelectMonth: (month: number) => void;\n onKeyDown: (ev: KeyboardEvent) => void;\n focussedMonthRef: (element: HTMLIcButtonElement) => void;\n minDate: Date;\n maxDate: Date;\n};\n\nexport const MonthPicker: FunctionalComponent<MonthPickerProps> = ({\n size,\n focussedMonth,\n monthInView,\n onSelectMonth,\n onKeyDown,\n focussedMonthRef,\n minDate,\n maxDate,\n yearInView,\n}) => {\n const handleMonthClick = (ev: MouseEvent): void => {\n const button = ev.target as HTMLElement;\n onSelectMonth(Number(button.getAttribute(\"data-month\")));\n };\n\n const monthNames = stringEnumToArray(IcDateInputMonths);\n\n return (\n <div\n class={{\n \"month-picker\": true,\n }}\n role=\"list\"\n >\n {monthNames.map((month, index) => {\n const current = monthInView === index;\n const focussed = focussedMonth === index;\n const outsideRange = !dateInRange(\n new Date(yearInView, index, 1),\n minDate ? getMonthStart(minDate) : null,\n maxDate ? getMonthEnd(maxDate) : null\n );\n\n return (\n <ic-button\n role=\"listitem\"\n class={{\n \"month-button\": true,\n selected: current,\n focussed: focussed,\n disabled: outsideRange,\n }}\n full-width\n disabled={outsideRange}\n variant={current ? \"primary\" : \"tertiary\"}\n data-month={index}\n size={size}\n tabIndex={focussed ? 0 : -1}\n aria-current={current ? \"true\" : \"false\"}\n aria-label={current ? \"\" : `select ${month}`}\n onClick={handleMonthClick}\n onKeyDown={onKeyDown}\n ref={(el: HTMLIcButtonElement) => {\n if (focussed && el) {\n focussedMonthRef(el);\n }\n }}\n >\n {month}\n </ic-button>\n );\n })}\n </div>\n );\n};\n","import { h, FunctionalComponent } from \"@stencil/core\";\nimport { yearInRange } from \"../../utils/date-helpers\";\nimport { IcSizes } from \"../../utils/types\";\n\nexport type YearPickerProps = {\n decadeView: number[];\n size: IcSizes;\n focussedYear: number;\n yearInView: number;\n onSelectYear: (year: number) => void;\n onKeyDown: (ev: KeyboardEvent) => void;\n onFocusYear: () => void;\n onBlurYear: () => void;\n minDate: Date;\n maxDate: Date;\n focussedYearRef: (element: HTMLIcButtonElement) => void;\n};\n\nexport const YearPicker: FunctionalComponent<YearPickerProps> = ({\n decadeView,\n size,\n focussedYear,\n yearInView,\n onSelectYear,\n onFocusYear,\n onBlurYear,\n onKeyDown,\n minDate,\n maxDate,\n focussedYearRef,\n}) => {\n const handleYearClick = (ev: MouseEvent): void => {\n const button = ev.target as HTMLElement;\n onSelectYear(Number(button.getAttribute(\"data-year\")));\n };\n\n const handleYearFocus = (): void => {\n onFocusYear();\n };\n\n const handleYearBlur = (): void => {\n onBlurYear();\n };\n\n const navButtonMouseDownHandler = (ev: MouseEvent): void => {\n ev.preventDefault();\n };\n\n const prevDecade = decadeView[0];\n const nextDecade = decadeView[11];\n const years = decadeView.slice(1, 11);\n\n return (\n <div class=\"year-picker\" role=\"list\">\n <div class=\"prev-decade\" aria-hidden=\"true\">\n <ic-button\n id=\"prev-decade-button\"\n class={{\n \"year-button\": true,\n }}\n disabled={!yearInRange(prevDecade, minDate, maxDate)}\n data-year={prevDecade}\n tabIndex={-1}\n variant=\"tertiary\"\n onClick={handleYearClick}\n onMouseDown={navButtonMouseDownHandler}\n aria-hidden=\"true\"\n size={size}\n >\n {`${prevDecade - 9}s`}\n <svg\n slot=\"left-icon\"\n width=\"12\"\n height=\"12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.3333 5.33341H3.21996L6.94663 1.60675L5.99996 0.666748L0.666626 6.00008L5.99996 11.3334L6.93996 10.3934L3.21996 6.66675H11.3333V5.33341Z\"\n fill=\"currentColor\"\n />\n </svg>\n </ic-button>\n </div>\n {years.map((yr) => {\n const current = yearInView === yr;\n const focussed = focussedYear === yr;\n return (\n <ic-button\n class={{\n \"year-button\": true,\n selected: current,\n focussed: focussed,\n }}\n disabled={!yearInRange(yr, minDate, maxDate)}\n data-year={yr}\n tabIndex={focussed ? 0 : -1}\n variant={current ? \"primary\" : \"tertiary\"}\n onClick={handleYearClick}\n aria-label={current ? \"\" : `select ${yr}`}\n role=\"listitem\"\n aria-current={current ? \"true\" : \"false\"}\n onKeyDown={onKeyDown}\n onFocus={handleYearFocus}\n onBlur={handleYearBlur}\n size={size}\n ref={(el: HTMLIcButtonElement) => {\n if (focussed && el) {\n focussedYearRef(el);\n }\n }}\n >\n {yr}\n </ic-button>\n );\n })}\n <div class=\"next-decade\" aria-hidden=\"true\">\n <ic-button\n id=\"next-decade-button\"\n class={{\n \"year-button\": true,\n flip: true,\n }}\n disabled={!yearInRange(nextDecade, minDate, maxDate)}\n data-year={nextDecade}\n tabIndex={-1}\n variant=\"tertiary\"\n onClick={handleYearClick}\n onMouseDown={navButtonMouseDownHandler}\n aria-hidden=\"true\"\n size={size}\n >\n {`${nextDecade}s`}\n <svg\n slot=\"right-icon\"\n width=\"12\"\n height=\"12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.3333 5.33341H3.21996L6.94663 1.60675L5.99996 0.666748L0.666626 6.00008L5.99996 11.3334L6.93996 10.3934L3.21996 6.66675H11.3333V5.33341Z\"\n fill=\"currentColor\"\n />\n </svg>\n </ic-button>\n </div>\n </div>\n );\n};\n","@import \"../../../dist/core/normalize.css\";\n\n/**\n* @prop --input-width: Width of the input field\n @prop --ic-z-index-date-picker: z-index of date picker.\n*/\n\n:host {\n display: block;\n position: relative;\n\n --month-year-picker-button-width: 5rem;\n --month-button-width: 5.5rem;\n --input-field-width: var(--input-width, 19.125rem);\n}\n\n:host(.large) {\n --month-button-width: 6.3125rem;\n --input-field-width: var(--input-width, 21.125rem);\n}\n\n:host(.small) {\n --month-button-width: 6.25rem;\n --input-field-width: var(--input-width, 17.125rem);\n}\n\n:host .date-input-container {\n position: relative;\n}\n\nic-date-input {\n --input-width: var(--input-field-width);\n}\n\n:host .calendar-container {\n min-width: 19rem;\n max-width: 23.5rem;\n width: var(--input-width);\n display: flex;\n flex-direction: column;\n gap: var(--ic-space-xs);\n position: absolute;\n border: var(--ic-border-default);\n border-radius: var(--ic-border-radius);\n align-items: center;\n background-color: var(--ic-architectural-white);\n z-index: var(--ic-z-index-date-picker);\n box-sizing: border-box;\n box-shadow: var(--ic-elevation-overlay);\n margin-top: var(--ic-space-xxxs);\n padding: var(--ic-space-xs);\n animation: fade-in-calendar var(--ic-transition-duration-slow);\n}\n\n:host(.small) .calendar-container {\n min-width: 17rem;\n max-width: 21.5rem;\n}\n\n:host(.large) .calendar-container {\n min-width: 21rem;\n max-width: 25.5rem;\n}\n\n:host .calendar-container.above {\n bottom: calc(var(--ic-space-xxl) - var(--ic-space-xxs));\n}\n\n:host .month-year-nav-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-self: stretch;\n}\n\n:host .month-year-nav-container.hidden {\n display: none;\n}\n\n:host .month-year-nav {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex: 1 0 0;\n}\n\n:host .month-picker,\n:host .year-picker {\n flex-wrap: wrap;\n display: inline-flex;\n align-items: center;\n width: 17.5rem;\n column-gap: var(--ic-space-xs);\n row-gap: var(--ic-space-xxs);\n}\n\n:host(.small) .month-picker,\n:host(.small) .year-picker {\n width: 13.125rem;\n}\n\n:host(.large) .month-picker,\n:host(.large) .year-picker {\n width: 20rem;\n}\n\n:host .month-picker-button,\n:host .year-picker-button {\n width: 5rem;\n\n --min-width: 5rem;\n}\n\n:host .month-button,\n:host .year-button {\n width: var(--month-button-width);\n}\n\n:host .month-button.focussed,\n:host .year-button.focussed {\n z-index: 1;\n}\n\n:host .month-button::part(button),\n:host .year-button::part(button) {\n min-width: var(--month-button-width);\n}\n\n:host .prev-decade .year-button svg {\n margin-right: calc(-1 * var(--ic-space-xl));\n padding-top: var(--ic-space-sm);\n}\n\n:host .prev-decade .year-button::part(button) {\n padding-left: 0;\n padding-right: var(--ic-space-lg);\n}\n\n:host(.small) .prev-decade .year-button::part(button) {\n padding-left: 0;\n padding-right: calc(var(--ic-space-lg) + var(--ic-space-xxs));\n}\n\n:host .next-decade .year-button svg {\n margin-left: calc(-1 * var(--ic-space-xl));\n padding-top: var(--ic-space-sm);\n}\n\n:host .next-decade .year-button::part(button) {\n padding-right: 0;\n padding-left: var(--ic-space-lg);\n}\n\n:host(.small) .next-decade .year-button::part(button),\n:host(.large) .next-decade .year-button::part(button) {\n padding-left: var(--ic-space-xl);\n}\n\n:host .bottom-buttons {\n padding-top: var(--ic-space-xs);\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-self: stretch;\n animation: fade-in-buttons var(--ic-transition-duration-slow);\n}\n\n:host(.small) .bottom-buttons {\n padding-top: var(--ic-space-xxs);\n}\n\n:host .bottom-buttons.no-today {\n align-items: flex-end;\n flex-direction: column;\n}\n\n:host .bottom-buttons.hidden {\n display: none;\n}\n\n:host .calendar {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n width: 15.75rem;\n animation: fade-in-buttons var(--ic-transition-duration-slow);\n}\n\n:host(.large) .calendar {\n width: 19.25rem;\n}\n\n:host(.small) .calendar {\n padding-bottom: var(--ic-space-xxs);\n width: 14rem;\n}\n\n:host .hidden {\n display: none;\n}\n\n:host .weekdays {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: var(--ic-space-xs);\n align-self: stretch;\n}\n\n:host .calendar-days-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n row-gap: var(--ic-space-xs);\n padding: var(--ic-space-xxs) 0;\n}\n\n:host(.small) .calendar-days-container {\n padding: var(--ic-space-xxxs) 0;\n}\n\n:host(.large) .calendar-days-container {\n padding: var(--ic-space-xs) 0;\n}\n\n:host .calendar-day-header {\n display: flex;\n width: 2rem;\n padding: var(--ic-space-xxs) 0;\n justify-content: center;\n align-items: center;\n}\n\n:host(.small) .calendar-day-header,\n:host(.large) .calendar-day-header {\n padding: var(--ic-space-xxs);\n}\n\n:host .calendar-day-header ic-typography {\n color: var(--ic-color-tertiary-text);\n text-align: center;\n}\n\n:host .day-button-container {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 2.25rem;\n height: 2.25rem;\n}\n\n:host(.small) .day-button-container {\n width: 2rem;\n height: 2rem;\n}\n\n:host(.large) .day-button-container {\n width: 2.5rem;\n height: 2.5rem;\n}\n\n:host .day-button {\n display: flex;\n position: relative;\n justify-content: center;\n align-items: center;\n border: 0;\n border-radius: 2rem;\n background-color: var(--ic-architectural-white);\n width: 2rem;\n height: 2rem;\n cursor: pointer;\n transition: var(--ic-easing-transition-fast);\n z-index: 0;\n}\n\n:host .day-button.disabled {\n cursor: default;\n}\n\n:host(.large) .day-button {\n width: 2.25rem;\n height: 2.25rem;\n}\n\n:host(.small) .day-button {\n width: 1.75rem;\n height: 1.75rem;\n}\n\n:host .day-button ic-typography {\n width: 1.75rem;\n color: var(--ic-color-primary-text);\n}\n\n:host .day-button.outside-range ic-typography {\n color: var(--ic-architectural-400);\n}\n\n:host .day-button.outside-month ic-typography {\n font-weight: var(--ic-font-weight-regular) !important;\n}\n\n:host\n .day-button.outside-month:not(.outside-range):not(.selected)\n ic-typography {\n color: var(--ic-color-primary-text);\n}\n\n:host .day-button:hover:not(.disabled) {\n background-color: var(--ic-action-dark-bg-hover);\n}\n\n:host .day-button:active:not(.disabled) {\n background-color: var(--ic-action-dark-bg-active);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :host .day-button:hover:not(.disabled):not(.focussed),\n :host .day-button:active:not(.disabled):not(.focussed) {\n transition: background-color var(--ic-transition-duration-slow) ease-in-out;\n }\n}\n\n:host .day-button.selected:not(.hidden) {\n background-color: var(--ic-action-default);\n}\n\n:host .day-button.selected ic-typography {\n color: var(--ic-color-white-text);\n}\n\n:host .day-button.selected:not(.hidden):hover {\n background-color: var(--ic-action-default-hover);\n}\n\n:host .day-button.selected:not(.hidden):active {\n background-color: var(--ic-action-default-active);\n}\n\n:host .day-button.focussed {\n z-index: 1;\n}\n\n:host .day-button:focus {\n outline: none;\n}\n\n:host .day-button.focussed:focus {\n box-shadow: var(--ic-border-focus);\n}\n\n:host .day-button.today:not(.hidden)::after {\n content: \"\";\n position: absolute;\n width: 0.875rem;\n height: 0.125rem;\n bottom: 0.4rem;\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-action-default);\n}\n\n:host(.small) .day-button.today::after {\n bottom: 0.35rem;\n}\n\n:host(.large) .day-button.today::after {\n width: 1rem;\n}\n\n:host .day-button.today.selected::after {\n background-color: var(--ic-architectural-white);\n}\n\n:host #select-month-hint,\n:host #select-year-hint {\n display: none;\n}\n\n.sr-only {\n position: absolute;\n left: -9999px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host .calendar-container,\n :host .calendar,\n :host .bottom-buttons {\n animation: none;\n }\n}\n\n@keyframes fade-in-buttons {\n 0% {\n opacity: 0;\n }\n\n 50% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes fade-in-calendar {\n 0% {\n display: flex;\n max-height: 0;\n }\n\n 100% {\n display: flex;\n max-height: 600px;\n }\n}\n\n@media (forced-colors: active) {\n :host .day-button.today:not(.hidden)::after {\n background-color: highlight;\n }\n\n :host .day-button.selected:not(.hidden) {\n background-color: highlight;\n }\n\n :host .day-button.focussed:focus {\n border: var(--ic-hc-border);\n }\n\n :host .month-button.selected::part(button),\n :host .year-button.selected::part(button) {\n background-color: highlight;\n }\n}\n","import {\n Component,\n Element,\n Host,\n h,\n Prop,\n Listen,\n Watch,\n State,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\nimport {\n createDate,\n clampDate,\n dateMatches,\n dateInRange,\n getMonthStart,\n getMonthEnd,\n getWeekEnd,\n getWeekStart,\n yearInRange,\n} from \"../../utils/date-helpers\";\nimport {\n stringEnumToArray,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcWeekDays,\n IcShortDayNames,\n IcDateInputMonths,\n IcDateFormat,\n IcSizes,\n IcInformationStatusOrEmpty,\n} from \"../../utils/types\";\nimport chevron from \"../../assets/chevron-icon.svg\";\nimport { DayButton } from \"./ic-day-button\";\nimport { MonthPicker } from \"./ic-month-picker\";\nimport { YearPicker } from \"./ic-year-picker\";\n\nconst DEFAULT_DATE_FORMAT = \"DD/MM/YYYY\";\nconst DEFAULT_DISABLE_DATES_FROM_NOW_MSG =\n \"Dates in the future are not allowed. Please select a date in the past.\";\nconst DEFAULT_DISABLE_DATES_UNTIL_NOW_MSG =\n \"Dates in the past are not allowed. Please select a date in the future.\";\nconst DEFAULT_DISABLE_DAYS_MSG =\n \"The date you have selected is on a day of the week that is not allowed. Please select another date.\";\nconst FOCUS_TIMER = 100;\nconst PICKER_HEIGHT_SMALL = 360;\nconst PICKER_HEIGHT_DEFAULT = 400;\nconst PICKER_HEIGHT_LARGE = 440;\n\ninterface IcDateInputProps {\n dateFormat?: IcDateFormat;\n disabled?: boolean;\n disableDays?: IcWeekDays[];\n disableDaysMessage?: string;\n disableFuture?: boolean;\n disableFutureMessage?: string;\n disablePast?: boolean;\n disablePastMessage?: string;\n helperText?: string;\n inputId?: string;\n label: string;\n max?: string | Date;\n min?: string | Date;\n name?: string;\n required?: boolean;\n showClearButton?: boolean;\n showCalendarButton?: boolean;\n size?: IcSizes;\n value?: string | Date;\n validationStatus?: IcInformationStatusOrEmpty;\n validationText?: string;\n}\n\n@Component({\n tag: \"ic-date-picker\",\n styleUrl: \"ic-date-picker.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class DatePicker {\n private inputEl: HTMLIcDateInputElement;\n private clearButtonEl: HTMLIcButtonElement = null;\n private daysOfWeek: string[] = [];\n private dayButtonFocussed: boolean = false;\n private dayPickerKeyboardNav: boolean = false;\n private decadeStart: number;\n private decadeEnd: number;\n private dialogDescription: string = \"\";\n private focusDay: boolean = true;\n private focussedYearEl: HTMLIcButtonElement;\n private liveRegionEl: HTMLElement = null;\n private monthButtonEl: HTMLIcButtonElement;\n private monthNames: string[] = [];\n private monthInViewUpdateHandled: boolean = false;\n private myCalendarButtonClicked: boolean = false;\n private showPickerAbove: boolean = false;\n private today = new Date();\n private todayButtonEl: HTMLIcButtonElement = null;\n private yearButtonEl: HTMLIcButtonElement;\n private yearButtonFocussed: boolean = false;\n\n @Element() el: HTMLIcDatePickerElement;\n\n @State() calendarOpen: boolean = false;\n @State() currMonthView: Date[] = [];\n @State() currYearPickerView: number[] = [];\n @State() dateInputProps: IcDateInputProps = { label: \"\" };\n @State() decadeView: number[] = [];\n @State() focussedDate: Date = null;\n @State() focussedDay: number;\n @State() focussedDayEl: HTMLButtonElement;\n @State() focussedMonth: number;\n @State() focussedMonthEl: HTMLIcButtonElement;\n @State() focussedYear: number;\n @State() maxDate: Date = null;\n @State() minDate: Date = null;\n @State() monthInView: number;\n @State() monthPickerVisible: boolean = false;\n @State() orderedDaysOfWeek: string[] = [];\n @State() selectedDate: Date = null;\n @State() yearInView: number;\n @State() yearPickerVisible: boolean = false;\n\n /**\n * The format in which the date will be displayed.\n */\n @Prop() dateFormat?: IcDateFormat = \"DD/MM/YYYY\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * The days of the week to disable.\n */\n @Prop() disableDays?: IcWeekDays[] = [];\n\n /**\n * The text to display as the validation message when `disableDays` is `true` and a disabled date is entered.\n */\n @Prop() disableDaysMessage?: string =\n \"The date you have selected is on a day of the week that is not allowed. Please select another date.\";\n\n /**\n * If `true`, dates in the future are not allowed. A validation message will appear if a date in the future is entered.\n */\n @Prop() disableFuture?: boolean = false;\n\n /**\n * The text to display as the validation message when `disableFuture` is `true` and a date in the future is entered.\n */\n @Prop() disableFutureMessage?: string =\n \"Dates in the future are not allowed. Please select a date in the past.\";\n\n /**\n * If `true`, dates in the past are not allowed. A validation message will appear if a date in the past is entered.\n */\n @Prop() disablePast?: boolean = false;\n\n /**\n * The text to display as the validation message when `disablePast` is `true` and a date in the past is entered.\n */\n @Prop() disablePastMessage?: string =\n \"Dates in the past are not allowed. Please select a date in the future.\";\n\n /**\n * The helper text that will be displayed for additional field guidance. This will default to the text \"Use format\" along with the `dateFormat` value.\n */\n @Prop() helperText?: string;\n\n /**\n * The ID for the input field. The default will be an automatically generated value.\n */\n @Prop() inputId?: string;\n\n /**\n * The label for the date input.\n */\n @Prop() label!: string;\n\n /**\n * The latest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disableFuture` is set to `true`.\n */\n @Prop() max?: string | Date = \"\";\n\n @Watch(\"max\")\n watchMaxHandler(): void {\n if (this.disableFuture) {\n this.maxDate = new Date();\n } else {\n this.maxDate = createDate(this.max, this.dateFormat);\n }\n }\n\n /**\n * The earliest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disablePast` is set to `true`.\n */\n @Prop() min?: string | Date = \"\";\n\n @Watch(\"min\")\n watchMinHandler(): void {\n if (this.disablePast) {\n this.minDate = new Date();\n } else {\n this.minDate = createDate(this.min, this.dateFormat);\n }\n }\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name?: string;\n\n /**\n * The date visible when the calendar opens. Used if no date is currently selected.\n * The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n */\n @Prop() openAtDate: string | Date = \"\";\n\n /**\n * If `true`, the input will require a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * If `true`, days outside the current month will be visible in the date picker.\n */\n @Prop() showDaysOutsideMonth?: boolean = true;\n\n /**\n * If `true`, the `Clear` button on the date picker will be visible.\n */\n @Prop() showPickerClearButton?: boolean = true;\n\n /**\n * If `true`, the `Go to today` button on the date picker will be visible.\n */\n @Prop() showPickerTodayButton?: boolean = true;\n\n /**\n * The size of the date picker to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The first day of the week. `0` for Sunday, `1` for Monday, etc.\n * Default is Monday.\n */\n @Prop() startOfWeek?: IcWeekDays = IcWeekDays.Monday;\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'. This will override the built-in date validation.\n */\n @Prop() validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message. This will override the built-in date validation.\n */\n @Prop() validationText?: string = \"\";\n\n /**\n * The value of the date picker. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n */\n @Prop({ mutable: true }) value?: string | Date | null | undefined = \"\";\n\n @Watch(\"calendarOpen\")\n watchOpenHandler(): void {\n if (this.calendarOpen) {\n if (this.inputEl) {\n let pickerHeight = PICKER_HEIGHT_DEFAULT;\n if (this.size === \"small\") {\n pickerHeight = PICKER_HEIGHT_SMALL;\n } else if (this.size === \"large\") {\n pickerHeight = PICKER_HEIGHT_LARGE;\n }\n if (\n this.el.offsetTop + this.inputEl.offsetHeight + pickerHeight >\n window.innerHeight &&\n this.el.offsetTop > pickerHeight\n ) {\n this.showPickerAbove = true;\n } else {\n this.showPickerAbove = false;\n }\n }\n if (\n this.selectedDate === null ||\n !dateInRange(this.selectedDate, this.minDate, this.maxDate)\n ) {\n let openAt = new Date();\n if (this.openAtDate !== \"\") {\n openAt = createDate(this.openAtDate, this.dateFormat);\n }\n this.setFocussedDate(openAt);\n } else {\n this.setFocussedDate(this.selectedDate);\n }\n let dialogDesc = this.getMonthInViewText();\n if (this.selectedDate === null) {\n dialogDesc += \" No date selected.\";\n }\n dialogDesc +=\n \" Use arrow keys to change day. Press enter or space to select a date or press escape to close the picker\";\n this.dialogDescription = dialogDesc;\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n document.addEventListener(\"click\", this.handleDocumentClick);\n } else {\n document.removeEventListener(\"click\", this.handleDocumentClick);\n this.monthPickerVisible = false;\n this.yearPickerVisible = false;\n }\n }\n\n @Watch(\"focussedDate\")\n watchFocussedDateHandler(current: Date, previous: Date): void {\n if (\n previous === null ||\n !(\n previous.getFullYear() === current.getFullYear() &&\n previous.getMonth() === current.getMonth()\n )\n ) {\n this.updateMonthInView();\n }\n }\n\n @Watch(\"monthInView\")\n watchMonthInViewHandler(): void {\n this.focussedMonth = this.monthInView;\n }\n\n @Watch(\"yearInView\")\n watchYearInViewHandler(): void {\n this.setFocussedYear(this.yearInView, false);\n }\n\n @Watch(\"yearPickerVisible\")\n watchYearPickerVisibleHandler(): void {\n if (!this.yearPickerVisible) {\n this.setFocussedYear(this.yearInView);\n }\n }\n\n @Watch(\"monthPickerVisible\")\n watchMonthPickerVisibleHandler(): void {\n if (!this.monthPickerVisible) {\n this.focussedMonth = this.monthInView;\n }\n }\n\n @Watch(\"focussedDayEl\")\n watchFocussedDayEl(): void {\n if (this.focusDay) {\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n }\n\n this.focusDay = true;\n }\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<{ value: Date }>;\n\n componentWillLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Date Picker\"\n );\n\n this.monthNames = stringEnumToArray(IcDateInputMonths);\n this.daysOfWeek = stringEnumToArray(IcShortDayNames);\n this.orderedDaysOfWeek = this.daysOfWeek\n .splice(this.startOfWeek, this.daysOfWeek.length)\n .concat(this.daysOfWeek.splice(0, this.startOfWeek));\n\n this.watchMaxHandler();\n this.watchMinHandler();\n }\n\n @Listen(\"calendarButtonClicked\")\n localCalendarButtonClickHandler(ev: CustomEvent): void {\n this.myCalendarButtonClicked = true;\n if (!this.calendarOpen) {\n this.setSelectedDate(ev.detail.value, false);\n }\n\n this.calendarOpen = !this.calendarOpen;\n }\n\n @Listen(\"calendarButtonClicked\", { target: \"document\" })\n calendarButtonClickHandler(): void {\n //closes this picker if calendar button in another clicked\n if (!this.myCalendarButtonClicked) {\n this.calendarOpen = false;\n }\n this.myCalendarButtonClicked = false;\n }\n\n private setDecadeView = (start: number) => {\n let currYear = start - 1;\n const decadeArr = [];\n while (currYear <= start + 10) {\n decadeArr.push(currYear);\n currYear++;\n }\n this.decadeView = decadeArr;\n this.decadeStart = decadeArr[1];\n this.decadeEnd = decadeArr[10];\n };\n\n private setSelectedDate = (d: Date, emit = true): void => {\n if (d === null || !dateMatches(d, this.selectedDate)) {\n this.selectedDate = d;\n this.value = d;\n if (emit) {\n this.icChange.emit({ value: d });\n }\n }\n };\n\n private handleCalendarMouseDown = (event: MouseEvent): void => {\n const target = event.target as HTMLElement;\n if (target.tagName !== \"IC-BUTTON\") {\n event.preventDefault();\n }\n };\n\n private handleCalendarClick = (event: MouseEvent): void => {\n this.clearDialogDescription();\n event.stopImmediatePropagation();\n };\n\n private handleDocumentClick = (): void => {\n this.calendarOpen = false;\n };\n\n private keyDownHandler = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n this.closeButtonClickHandler();\n this.inputEl.setCalendarFocus();\n } else {\n this.clearDialogDescription();\n }\n event.stopImmediatePropagation();\n };\n\n private closeButtonClickHandler = () => {\n this.calendarOpen = false;\n };\n\n private focusFirstElement = () => {\n this.monthButtonEl.setFocus();\n };\n\n private focusLastElement = () => {\n if (this.showPickerClearButton && !this.clearButtonEl.disabled) {\n this.clearButtonEl.setFocus();\n } else if (this.showPickerTodayButton && !this.todayButtonEl.disabled) {\n this.todayButtonEl.setFocus();\n } else if (this.monthPickerVisible) {\n this.focussedMonthEl.setFocus();\n } else if (this.yearPickerVisible) {\n this.focussedYearEl.setFocus();\n } else {\n this.focussedDayEl.focus();\n }\n };\n\n private focusFocussedDay = () => {\n this.focussedDayEl.focus();\n };\n\n private monthButtonClickHandler = () => {\n this.yearPickerVisible = false;\n this.focusDay = false;\n this.monthPickerVisible = !this.monthPickerVisible;\n if (this.monthPickerVisible) {\n this.setAriaLiveRegionText(\"Month picker view open\");\n } else {\n this.setMonthSelectedLiveRegionText();\n }\n };\n\n private yearButtonClickHandler = () => {\n this.monthPickerVisible = false;\n this.focusDay = false;\n this.yearPickerVisible = !this.yearPickerVisible;\n if (this.yearPickerVisible) {\n this.setAriaLiveRegionText(\n `Year picker view open. ${this.getDecadeInViewText()}`\n );\n } else {\n this.setYearSelectedLiveRegionText();\n }\n };\n\n private todayButtonClickHandler = () => {\n this.yearPickerVisible = false;\n this.monthPickerVisible = false;\n this.setFocussedDate(new Date());\n this.setAriaLiveRegionText(this.getMonthInViewText());\n\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n };\n\n private todayButtonKeyDownHandler = (ev: KeyboardEvent) => {\n if (ev.key === \"Tab\" && !ev.shiftKey && this.clearButtonEl.disabled) {\n this.focusFirstElement();\n ev.preventDefault();\n }\n };\n\n private clearButtonClickHandler = () => {\n this.setSelectedDate(null, false);\n let text = \"Selected date cleared.\";\n if (!this.monthPickerVisible && !this.yearPickerVisible) {\n text += ` ${this.getMonthInViewText()}`;\n }\n if (this.monthPickerVisible) {\n this.focussedMonthEl.setFocus();\n } else if (this.yearPickerVisible) {\n this.focussedYearEl.setFocus();\n } else {\n this.focusFocussedDay();\n }\n this.setAriaLiveRegionText(text);\n };\n\n private setMonthSelectedLiveRegionText = () => {\n this.setAriaLiveRegionText(\n `${\n this.monthNames[this.monthInView]\n } selected. ${this.getMonthInViewText()}`\n );\n };\n\n private setYearSelectedLiveRegionText = () => {\n this.setAriaLiveRegionText(\n `${this.yearInView} selected. ${this.getMonthInViewText()}`\n );\n };\n\n private getMonthInViewText = () => {\n return `${this.monthNames[this.monthInView]} ${\n this.yearInView\n } currently in view.`;\n };\n\n private getDecadeInViewText = () => {\n return `${this.decadeStart} to ${this.decadeEnd} currently in view.`;\n };\n\n private setAriaLiveRegionText = (text: string) => {\n this.liveRegionEl.innerText = text;\n };\n\n private clearDialogDescription = () => {\n this.dialogDescription = \"\";\n };\n\n private clearButtonKeyDownHandler = (ev: KeyboardEvent) => {\n if (ev.key === \"Tab\" && !ev.shiftKey) {\n this.focusFirstElement();\n ev.preventDefault();\n }\n };\n\n private goToPreviousMonth = (focusDay = false) => {\n this.focusDay = focusDay;\n this.moveMonths(-1);\n };\n\n private goToNextMonth = (focusDay = false) => {\n this.focusDay = focusDay;\n this.moveMonths(1);\n };\n\n private goToPreviousYear = (focusDay = false) => {\n if (this.isPrevYearAllowed()) {\n this.focusDay = focusDay;\n this.moveYears(-1);\n }\n };\n\n private goToNextYear = (focusDay = false) => {\n if (this.isNextYearAllowed()) {\n this.focusDay = focusDay;\n this.moveYears(1);\n }\n };\n\n private navButtonMouseDownHandler = (ev: MouseEvent): void => {\n ev.preventDefault();\n };\n\n private renderMonthYearNavButton = (\n id: string,\n flip: boolean,\n disabled: boolean\n ): void => {\n const buttonSize = this.size;\n return (\n <div aria-hidden=\"true\">\n <ic-button\n id={id}\n disableTooltip={true}\n disabled={disabled}\n onClick={this.monthYearNavClickHandler}\n class={{ flip: flip }}\n variant=\"icon\"\n innerHTML={chevron}\n size={buttonSize}\n tabIndex={-1}\n aria-hidden=\"true\"\n onMouseDown={this.navButtonMouseDownHandler}\n />\n </div>\n );\n };\n\n private monthYearNavClickHandler = (ev: Event): void => {\n const target = ev.target as Element;\n switch (target.id) {\n case \"previous-month-button\":\n this.goToPreviousMonth(this.dayButtonFocussed);\n break;\n\n case \"next-month-button\":\n this.goToNextMonth(this.dayButtonFocussed);\n break;\n\n case \"previous-year-button\":\n this.goToPreviousYear(this.dayButtonFocussed);\n break;\n\n case \"next-year-button\":\n this.goToNextYear(this.dayButtonFocussed);\n break;\n }\n };\n\n private previousMonthButton = (): void => {\n let disabled = false;\n if (this.focussedDate !== null && this.minDate !== null) {\n const yearMatch =\n this.focussedDate.getFullYear() === this.minDate.getFullYear();\n if (yearMatch) {\n disabled = this.monthInView - 1 < this.minDate.getMonth();\n }\n }\n return this.renderMonthYearNavButton(\n \"previous-month-button\",\n true,\n disabled\n );\n };\n\n private nextMonthButton = (): void => {\n let disabled = false;\n if (this.focussedDate !== null && this.maxDate !== null) {\n const yearMatch =\n this.focussedDate.getFullYear() === this.maxDate.getFullYear();\n if (yearMatch) {\n disabled = this.monthInView + 1 > this.maxDate.getMonth();\n }\n }\n return this.renderMonthYearNavButton(\"next-month-button\", false, disabled);\n };\n\n private previousYearButton = (): void => {\n return this.renderMonthYearNavButton(\n \"previous-year-button\",\n true,\n !this.isPrevYearAllowed()\n );\n };\n\n private nextYearButton = (): void => {\n return this.renderMonthYearNavButton(\n \"next-year-button\",\n false,\n !this.isNextYearAllowed()\n );\n };\n\n private isPrevYearAllowed = (): boolean => {\n return this.isYearAllowed(this.yearInView - 1);\n };\n\n private isNextYearAllowed = (): boolean => {\n return this.isYearAllowed(this.yearInView + 1);\n };\n\n private isYearAllowed = (yr: number): boolean => {\n return yearInRange(yr, this.minDate, this.maxDate);\n };\n\n private getMonthView = (date: Date): Date[] => {\n const start = getWeekStart(getMonthStart(date), this.startOfWeek);\n const end = getWeekEnd(getMonthEnd(date), this.startOfWeek);\n\n const days: Date[] = [];\n let current = start;\n\n while (!dateMatches(current, end)) {\n days.push(current);\n current = new Date(current);\n current.setDate(current.getDate() + 1);\n }\n\n days.push(current);\n\n return days;\n };\n\n private isCurrentMonth = (): boolean => {\n const d = new Date();\n return (\n d.getFullYear() === this.yearInView && d.getMonth() === this.monthInView\n );\n };\n\n private updateMonthInView = (): void => {\n this.currMonthView = this.getMonthView(this.focussedDate);\n\n this.focussedDay = this.focussedDate.getDate();\n this.monthInView = this.focussedDate.getMonth();\n this.yearInView = this.focussedDate.getFullYear();\n\n if (this.dayPickerKeyboardNav) {\n this.monthInViewUpdateHandled = true;\n this.setAriaLiveRegionText(this.getMonthInViewText());\n this.dayPickerKeyboardNav = false;\n }\n };\n\n private handleSelectDay = (day: Date): void => {\n this.setSelectedDate(day);\n this.calendarOpen = false;\n this.inputEl.setCalendarFocus();\n };\n\n private handleSelectMonth = (month: number): void => {\n this.moveMonths(month - this.monthInView);\n setTimeout(() => {\n this.monthButtonEl.setFocus();\n this.monthPickerVisible = false;\n this.setMonthSelectedLiveRegionText();\n }, FOCUS_TIMER);\n };\n\n private handleSelectYear = (year: number): void => {\n const yrPos = this.decadeView.indexOf(year);\n if (yrPos > 0 && yrPos < this.decadeView.length - 1) {\n this.moveYears(year - this.yearInView);\n this.focusDay = false;\n const monthName = this.monthNames[this.monthInView];\n this.setAriaLiveRegionText(\n `${year} selected. ${monthName} ${year} currently in view.`\n );\n setTimeout(() => {\n this.yearButtonEl.setFocus();\n this.yearPickerVisible = false;\n }, FOCUS_TIMER);\n } else {\n const moveYears = year - this.focussedYear > 0 ? 10 : -10;\n this.updateFocussedYear(moveYears, this.yearButtonFocussed);\n this.setAriaLiveRegionText(this.getDecadeInViewText());\n }\n };\n\n private monthPickerKeyDownHandler = (ev: KeyboardEvent): void => {\n let handled = true;\n switch (ev.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.updateFocussedMonth(-1);\n break;\n\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.updateFocussedMonth(1);\n break;\n\n case \"Home\":\n this.updateFocussedMonth(-this.focussedMonth);\n break;\n\n case \"End\":\n this.updateFocussedMonth(11 - this.focussedMonth);\n break;\n\n case \"Tab\":\n handled = this.calendarTabHandler(ev);\n break;\n\n case \"Escape\":\n ev.stopImmediatePropagation();\n this.monthPickerVisible = false;\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n break;\n\n default:\n handled = false;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private yearPickerKeyDownHandler = (ev: KeyboardEvent): void => {\n let handled = true;\n switch (ev.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.updateFocussedYear(-1);\n break;\n\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.updateFocussedYear(1);\n break;\n\n case \"Home\":\n if (this.focussedYear > this.decadeStart) {\n this.updateFocussedYear(this.decadeStart - this.focussedYear);\n }\n break;\n\n case \"End\":\n if (this.focussedYear < this.decadeEnd) {\n this.updateFocussedYear(this.decadeEnd - this.focussedYear);\n }\n break;\n\n case \"PageUp\":\n this.updateFocussedYear(-10);\n break;\n\n case \"PageDown\":\n this.updateFocussedYear(10);\n break;\n\n case \"Tab\":\n handled = this.calendarTabHandler(ev);\n break;\n\n case \"Escape\":\n ev.stopImmediatePropagation();\n this.yearPickerVisible = false;\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n break;\n\n default:\n handled = false;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private onYearButtonFocusHandler = () => {\n this.yearButtonFocussed = true;\n };\n\n private onYearButtonBlurHandler = () => {\n this.yearButtonFocussed = false;\n };\n\n private monthButtonKeyDownHandler = (ev: KeyboardEvent): void => {\n let handled = false;\n switch (ev.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n handled = true;\n this.goToPreviousMonth();\n break;\n\n case \"ArrowRight\":\n case \"ArrowDown\":\n handled = true;\n this.goToNextMonth();\n break;\n\n case \"Home\":\n handled = true;\n this.focusDay = false;\n this.moveMonths(-this.monthInView);\n break;\n\n case \"End\":\n handled = true;\n this.focusDay = false;\n this.moveMonths(11 - this.monthInView);\n break;\n\n case \"Tab\":\n if (ev.shiftKey) {\n handled = true;\n this.focusLastElement();\n }\n break;\n\n case \"Escape\":\n if (this.monthPickerVisible) {\n this.monthPickerVisible = false;\n ev.stopImmediatePropagation();\n }\n break;\n\n default:\n break;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private yearButtonKeyDownHandler = (ev: KeyboardEvent): void => {\n let handled = false;\n switch (ev.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n handled = true;\n this.goToPreviousYear();\n break;\n\n case \"ArrowRight\":\n case \"ArrowDown\":\n handled = true;\n this.goToNextYear();\n break;\n\n case \"Home\":\n if (this.yearPickerVisible && this.yearInView > this.decadeStart) {\n handled = true;\n this.moveYears(this.decadeStart - this.yearInView);\n }\n break;\n\n case \"End\":\n if (this.yearPickerVisible && this.yearInView < this.decadeEnd) {\n handled = true;\n this.moveYears(this.decadeEnd - this.focussedYear);\n }\n break;\n\n case \"PageUp\":\n handled = true;\n this.focusDay = false;\n this.moveYears(-10);\n break;\n\n case \"PageDown\":\n handled = true;\n this.focusDay = false;\n this.moveYears(10);\n break;\n\n case \"Escape\":\n if (this.yearPickerVisible) {\n this.yearPickerVisible = false;\n ev.stopImmediatePropagation();\n }\n break;\n\n default:\n break;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private handleCalendarKeyDown = (ev: KeyboardEvent): void => {\n let handled = true;\n switch (ev.key) {\n case \"ArrowDown\":\n this.dayPickerKeyboardNav = true;\n this.moveDays(7);\n break;\n\n case \"ArrowUp\":\n this.dayPickerKeyboardNav = true;\n this.moveDays(-7);\n break;\n\n case \"ArrowLeft\":\n this.dayPickerKeyboardNav = true;\n this.moveDays(-1 * this.getNextDayToFocus(this.focussedDate, false));\n break;\n\n case \"ArrowRight\":\n this.dayPickerKeyboardNav = true;\n this.moveDays(this.getNextDayToFocus(this.focussedDate, true));\n break;\n\n case \"PageUp\":\n this.dayPickerKeyboardNav = true;\n ev.shiftKey ? this.moveYears(-1) : this.moveMonths(-1);\n break;\n\n case \"PageDown\":\n this.dayPickerKeyboardNav = true;\n ev.shiftKey ? this.moveYears(1) : this.moveMonths(1);\n break;\n\n case \"Home\":\n this.dayPickerKeyboardNav = true;\n this.setFocussedDate(\n new Date(this.focussedYear, this.focussedMonth, 1)\n );\n break;\n\n case \"End\":\n this.dayPickerKeyboardNav = true;\n this.setFocussedDate(\n new Date(this.focussedYear, this.focussedMonth + 1, 0)\n );\n break;\n\n case \"Tab\":\n handled = this.calendarTabHandler(ev);\n break;\n\n default:\n handled = false;\n break;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private calendarTabHandler = (ev: KeyboardEvent): boolean => {\n let handled = false;\n if (\n !ev.shiftKey &&\n (!this.showPickerTodayButton || this.isCurrentMonth()) &&\n (!this.showPickerClearButton || this.clearButtonEl.disabled)\n ) {\n this.focusFirstElement();\n handled = true;\n } else if (ev.shiftKey) {\n this.yearButtonEl.setFocus();\n handled = true;\n }\n return handled;\n };\n\n private onDayButtonFocusHandler = () => {\n this.dayButtonFocussed = true;\n };\n\n private onDayButtonBlurHandler = () => {\n this.dayButtonFocussed = false;\n };\n\n private getNextDayToFocus = (\n currDay: Date,\n forward: boolean,\n level = 1\n ): number => {\n const move = forward ? 1 : -1;\n const nextDay = new Date(currDay);\n nextDay.setDate(nextDay.getDate() + move);\n const nextDayNum = Number(nextDay.getDay());\n if (this.disableDays.includes(nextDayNum)) {\n return this.getNextDayToFocus(nextDay, forward, level + 1);\n } else {\n return level;\n }\n };\n\n private moveDays = (numDays: number): void => {\n const d = new Date(this.focussedDate);\n d.setDate(d.getDate() + numDays);\n this.setFocussedDate(d);\n };\n\n private moveMonths = (numMonths: number): void => {\n const newMonth = this.focussedDate.getMonth() + numMonths;\n const min = new Date(\n new Date(getMonthStart(this.focussedDate)).setMonth(newMonth)\n );\n const max = getMonthEnd(min);\n const newDate = new Date(new Date(this.focussedDate).setMonth(newMonth));\n this.setFocussedDate(clampDate(newDate, min, max));\n\n if (\n this.monthPickerVisible === false &&\n this.yearPickerVisible === false &&\n this.monthInViewUpdateHandled === false\n ) {\n this.setAriaLiveRegionText(this.getMonthInViewText());\n }\n this.monthInViewUpdateHandled = false;\n };\n\n private moveYears = (numYears: number): void => {\n const newYear = this.focussedDate.getFullYear() + numYears;\n const min = new Date(\n new Date(getMonthStart(this.focussedDate)).setFullYear(newYear)\n );\n const max = getMonthEnd(min);\n const newDate = new Date(new Date(this.focussedDate).setFullYear(newYear));\n this.setFocussedDate(clampDate(newDate, min, max));\n\n if (\n this.monthPickerVisible === false &&\n this.yearPickerVisible === false &&\n this.monthInViewUpdateHandled === false\n ) {\n this.setAriaLiveRegionText(this.getMonthInViewText());\n }\n this.monthInViewUpdateHandled = false;\n };\n\n private updateFocussedMonth = (adjust: number): void => {\n const d = new Date(this.focussedYear, this.focussedMonth, 1);\n d.setMonth(this.focussedMonth + adjust);\n const newDate = clampDate(d, this.minDate, this.maxDate);\n this.focussedMonth = newDate.getMonth();\n setTimeout(() => this.focussedMonthEl.setFocus(), FOCUS_TIMER);\n };\n\n private updateFocussedYear = (adjust: number, focusYear = true): void => {\n const d = new Date(new Date().setFullYear(this.focussedYear + adjust));\n const newDate = clampDate(d, this.minDate, this.maxDate);\n this.setFocussedYear(newDate.getFullYear(), focusYear);\n };\n\n private setFocussedDate = (d: Date): void => {\n this.focussedDate = clampDate(d, this.minDate, this.maxDate);\n };\n\n private setFocussedDayEl = (element: HTMLButtonElement) => {\n this.focussedDayEl = element;\n };\n\n private setFocussedMonthEl = (element: HTMLIcButtonElement) => {\n this.focussedMonthEl = element;\n };\n\n private setFocussedYearEl = (element: HTMLIcButtonElement) => {\n this.focussedYearEl = element;\n };\n\n private setFocussedYear = (newYear: number, focus = true): void => {\n const prevYear = this.focussedYear;\n this.focussedYear = newYear;\n if (this.yearPickerVisible) {\n const newDecade = Math.floor(newYear / 10) * 10;\n const oldDecade = Math.floor(prevYear / 10) * 10;\n if (newDecade !== oldDecade) {\n this.setDecadeView(newDecade);\n this.setAriaLiveRegionText(this.getDecadeInViewText());\n }\n if (focus) {\n setTimeout(() => {\n if (this.focussedYearEl !== null) this.focussedYearEl.setFocus();\n }, FOCUS_TIMER);\n }\n } else {\n this.setDecadeView(Math.floor(newYear / 10) * 10);\n }\n };\n\n private setDateInputProps = (): void => {\n const untilNowMsg =\n !this.disablePast ||\n this.disablePastMessage === DEFAULT_DISABLE_DATES_UNTIL_NOW_MSG\n ? \"\"\n : this.disablePastMessage;\n const fromNowMsg =\n !this.disableFuture ||\n this.disableFutureMessage === DEFAULT_DISABLE_DATES_FROM_NOW_MSG\n ? \"\"\n : this.disableFutureMessage;\n const disableDaysMsg =\n !this.disableDays.length ||\n this.disableDaysMessage === DEFAULT_DISABLE_DAYS_MSG\n ? \"\"\n : this.disableDaysMessage;\n\n if (this.dateFormat !== DEFAULT_DATE_FORMAT) {\n this.dateInputProps.dateFormat = this.dateFormat;\n }\n if (this.disableFuture) {\n this.dateInputProps.disableFuture = this.disableFuture;\n if (fromNowMsg !== \"\") {\n this.dateInputProps.disableFutureMessage = fromNowMsg;\n }\n }\n if (this.disablePast) {\n this.dateInputProps.disablePast = this.disablePast;\n if (untilNowMsg !== \"\") {\n this.dateInputProps.disablePastMessage = untilNowMsg;\n }\n }\n if (this.disableDays.length > 0) {\n this.dateInputProps.disableDays = this.disableDays;\n if (disableDaysMsg !== \"\") {\n this.dateInputProps.disableDaysMessage = disableDaysMsg;\n }\n }\n this.dateInputProps.label = this.label;\n if (this.max !== null && this.max !== \"\") {\n this.dateInputProps.max = this.maxDate;\n }\n if (this.min !== null && this.min !== \"\") {\n this.dateInputProps.min = this.minDate;\n }\n if (this.helperText !== undefined) {\n this.dateInputProps.helperText = this.helperText;\n }\n if (this.inputId !== undefined) {\n this.dateInputProps.inputId = this.inputId;\n }\n if (this.name !== undefined) {\n this.dateInputProps.name = this.name;\n }\n this.dateInputProps.showClearButton = true;\n this.dateInputProps.showCalendarButton = true;\n if (this.disabled) {\n this.dateInputProps.disabled = this.disabled;\n }\n if (this.required) {\n this.dateInputProps.required = this.required;\n }\n if (this.size !== \"default\") {\n this.dateInputProps.size = this.size;\n }\n if (this.validationStatus !== \"\") {\n this.dateInputProps.validationStatus = this.validationStatus;\n }\n if (this.validationText !== \"\") {\n this.dateInputProps.validationText = this.validationText;\n }\n this.dateInputProps.value = this.value;\n };\n\n render() {\n const {\n calendarOpen,\n dateInputProps,\n monthNames,\n size,\n focussedMonth,\n focussedYear,\n monthInView,\n yearInView,\n monthPickerVisible,\n yearPickerVisible,\n orderedDaysOfWeek,\n decadeView,\n minDate,\n maxDate,\n showPickerClearButton,\n showPickerTodayButton,\n dialogDescription,\n } = this;\n\n let monthButtonText = \"\";\n if (monthPickerVisible) {\n monthButtonText = `Use the arrow keys to change the selected month. To return to day picker view, press Enter or Space to select a month, or press Escape.`;\n } else {\n monthButtonText = `Press Enter or Space to open month picker view or use the arrow keys to change month.`;\n }\n\n let yearButtonText = \"\";\n if (yearPickerVisible) {\n yearButtonText = `Use the arrow keys to change the selected year. To return to day picker view, press Enter or Space to select a year, or press Escape.`;\n } else {\n yearButtonText = `Press Enter or Space to open year picker view or use the arrow keys to change the selected year.`;\n }\n\n this.setDateInputProps();\n\n const dialogLabel = \"choose date\";\n\n const monthLabel =\n monthNames && monthNames[monthInView]\n ? monthNames[monthInView]\n : \"Open month picker\";\n const yearLabel = this.yearInView ? this.yearInView : \"Open year picker\";\n\n let minDay = minDate;\n if (this.disablePast) {\n const yesterday = new Date(minDate);\n yesterday.setDate(minDate.getDate() - 1);\n minDay = yesterday;\n }\n\n return (\n <Host onKeyDown={this.keyDownHandler} class={size}>\n <div class=\"date-input-container\">\n <ic-date-input\n ref={(el) => (this.inputEl = el)}\n {...dateInputProps}\n ></ic-date-input>\n </div>\n {calendarOpen && (\n <div>\n <span id=\"dialog-description\" class=\"sr-only\">\n {dialogDescription}\n </span>\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={dialogLabel}\n aria-describedBy=\"dialog-description\"\n class={{\n \"calendar-container\": true,\n above: this.showPickerAbove,\n }}\n onMouseDown={this.handleCalendarMouseDown}\n onClick={this.handleCalendarClick}\n >\n <span\n ref={(el) => (this.liveRegionEl = el)}\n id=\"live-region\"\n aria-live=\"assertive\"\n class=\"sr-only\"\n ></span>\n <div\n class={{\n \"month-year-nav-container\": true,\n }}\n >\n <div class=\"month-year-nav\">\n {this.previousMonthButton()}\n <span id=\"select-month-hint\" aria-hidden=\"true\">\n {monthButtonText}\n </span>\n <ic-button\n ref={(el: HTMLIcButtonElement) => (this.monthButtonEl = el)}\n size={size}\n class=\"month-picker-button\"\n aria-haspopup=\"menu\"\n aria-expanded={monthPickerVisible ? \"true\" : \"false\"}\n full-width=\"true\"\n variant=\"tertiary\"\n aria-label={monthLabel}\n aria-describedby=\"select-month-hint\"\n onKeyDown={this.monthButtonKeyDownHandler}\n onClick={this.monthButtonClickHandler}\n >\n {monthNames[monthInView]}\n </ic-button>\n {this.nextMonthButton()}\n </div>\n <div class=\"month-year-nav\">\n {this.previousYearButton()}\n <span id=\"select-year-hint\" aria-hidden=\"true\">\n {yearButtonText}\n </span>\n <ic-button\n ref={(el: HTMLIcButtonElement) => (this.yearButtonEl = el)}\n size={size}\n class=\"year-picker-button\"\n aria-haspopup=\"menu\"\n aria-expanded={yearPickerVisible ? \"true\" : \"false\"}\n full-width=\"true\"\n variant=\"tertiary\"\n aria-label={yearLabel}\n aria-describedby=\"select-year-hint\"\n onKeyDown={this.yearButtonKeyDownHandler}\n onClick={this.yearButtonClickHandler}\n >\n {this.yearInView}\n </ic-button>\n {this.nextYearButton()}\n </div>\n </div>\n {!(monthPickerVisible || yearPickerVisible) && (\n <div\n class={{\n calendar: true,\n hidden: monthPickerVisible || yearPickerVisible,\n }}\n onKeyDown={this.handleCalendarKeyDown}\n >\n <div class=\"weekdays\" aria-hidden=\"true\">\n {orderedDaysOfWeek.map((dayName) => {\n const header =\n size === \"small\" ? dayName.charAt(0) : dayName;\n return (\n <div class=\"calendar-day-header\">\n <ic-typography variant=\"caption\">\n {header}\n </ic-typography>\n </div>\n );\n })}\n </div>\n\n <div class=\"calendar-days-container\">\n {this.currMonthView.map((day) => (\n <DayButton\n day={day}\n disableDay={this.disableDays.includes(\n Number(day.getDay())\n )}\n today={dateMatches(day, this.today)}\n selected={dateMatches(day, this.selectedDate)}\n focussed={dateMatches(day, this.focussedDate)}\n inRange={dateInRange(day, minDay, maxDate)}\n monthInView={monthInView}\n onSelectDay={this.handleSelectDay}\n focussedDayRef={this.setFocussedDayEl}\n onFocusDay={this.onDayButtonFocusHandler}\n onBlurDay={this.onDayButtonBlurHandler}\n showDaysOutsideMonth={this.showDaysOutsideMonth}\n ></DayButton>\n ))}\n </div>\n </div>\n )}\n <div\n class={{\n \"month-picker-container\": true,\n hidden: !monthPickerVisible,\n }}\n >\n {monthPickerVisible && (\n <MonthPicker\n size={size}\n onSelectMonth={this.handleSelectMonth}\n monthInView={monthInView}\n focussedMonth={focussedMonth}\n onKeyDown={this.monthPickerKeyDownHandler}\n focussedMonthRef={this.setFocussedMonthEl}\n minDate={minDate}\n maxDate={maxDate}\n yearInView={yearInView}\n ></MonthPicker>\n )}\n </div>\n <div\n class={{\n \"year-picker-container\": true,\n hidden: !yearPickerVisible,\n }}\n >\n {yearPickerVisible && (\n <YearPicker\n decadeView={decadeView}\n size={size}\n focussedYear={focussedYear}\n onSelectYear={this.handleSelectYear}\n onKeyDown={this.yearPickerKeyDownHandler}\n onFocusYear={this.onYearButtonFocusHandler}\n onBlurYear={this.onYearButtonBlurHandler}\n yearInView={yearInView}\n minDate={minDate}\n maxDate={maxDate}\n focussedYearRef={this.setFocussedYearEl}\n ></YearPicker>\n )}\n </div>\n <div\n class={{\n \"bottom-buttons\": true,\n \"no-today\": !showPickerTodayButton,\n }}\n >\n {showPickerTodayButton && (\n <ic-button\n id=\"today-button\"\n variant=\"tertiary\"\n ref={(el: HTMLIcButtonElement) => (this.todayButtonEl = el)}\n size={size}\n aria-label=\"Navigate to current date\"\n onClick={this.todayButtonClickHandler}\n onKeyDown={this.todayButtonKeyDownHandler}\n disabled={this.isCurrentMonth()}\n >\n Go to today\n </ic-button>\n )}\n {showPickerClearButton && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"clear selected date\"\n ref={(el: HTMLIcButtonElement) => (this.clearButtonEl = el)}\n variant=\"tertiary\"\n size={size}\n onClick={this.clearButtonClickHandler}\n onKeyDown={this.clearButtonKeyDownHandler}\n disabled={\n this.value === \"\" ||\n this.value === null ||\n this.value === undefined\n }\n >\n Clear\n </ic-button>\n )}\n </div>\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}