@ukic/canary-web-components 2.0.0-canary.37 → 2.0.0-canary.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-data-table.cjs.entry.js +6 -2
  3. package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-date-picker.cjs.entry.js +110 -57
  5. package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-navigation-group.cjs.entry.js +9 -0
  7. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-tree-item.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-tree-item.cjs.entry.js.map +1 -1
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.stories.js +605 -0
  14. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.stories.js.map +1 -0
  15. package/dist/collection/components/ic-data-table/ic-data-table.js +6 -2
  16. package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
  17. package/dist/collection/components/ic-data-table/ic-data-table.stories.js +414 -0
  18. package/dist/collection/components/ic-data-table/ic-data-table.stories.js.map +1 -0
  19. package/dist/collection/components/ic-data-table/story-data.js +155 -0
  20. package/dist/collection/components/ic-data-table/story-data.js.map +1 -1
  21. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.stories.js +98 -0
  22. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.stories.js.map +1 -0
  23. package/dist/collection/components/ic-date-input/ic-date-input.stories.js +341 -0
  24. package/dist/collection/components/ic-date-input/ic-date-input.stories.js.map +1 -0
  25. package/dist/collection/components/ic-date-picker/ic-date-picker.css +10 -3
  26. package/dist/collection/components/ic-date-picker/ic-date-picker.js +152 -57
  27. package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -1
  28. package/dist/collection/components/ic-date-picker/ic-date-picker.stories.js +167 -0
  29. package/dist/collection/components/ic-date-picker/ic-date-picker.stories.js.map +1 -0
  30. package/dist/collection/components/ic-date-picker/story-data.js +34 -3
  31. package/dist/collection/components/ic-date-picker/story-data.js.map +1 -1
  32. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.stories.js +260 -0
  33. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.stories.js.map +1 -0
  34. package/dist/collection/components/ic-select-with-multi/ic-select-multi.stories.js +144 -0
  35. package/dist/collection/components/ic-select-with-multi/ic-select-multi.stories.js.map +1 -0
  36. package/dist/collection/components/ic-tree-item/ic-tree-item.css +22 -3
  37. package/dist/collection/components/ic-tree-view/ic-tree-view.stories.js +456 -0
  38. package/dist/collection/components/ic-tree-view/ic-tree-view.stories.js.map +1 -0
  39. package/dist/components/ic-data-table.js +6 -2
  40. package/dist/components/ic-data-table.js.map +1 -1
  41. package/dist/components/ic-date-picker.js +112 -57
  42. package/dist/components/ic-date-picker.js.map +1 -1
  43. package/dist/components/ic-navigation-group.js +11 -2
  44. package/dist/components/ic-navigation-group.js.map +1 -1
  45. package/dist/components/ic-radio-option.js +1 -1
  46. package/dist/components/ic-radio-option.js.map +1 -1
  47. package/dist/components/ic-tree-item.js +1 -1
  48. package/dist/components/ic-tree-item.js.map +1 -1
  49. package/dist/core/core.esm.js +1 -1
  50. package/dist/core/core.esm.js.map +1 -1
  51. package/dist/core/p-04fe848d.entry.js +2 -0
  52. package/dist/core/p-04fe848d.entry.js.map +1 -0
  53. package/dist/core/{p-b4f824a6.entry.js → p-3ebd4703.entry.js} +2 -2
  54. package/dist/core/p-3ebd4703.entry.js.map +1 -0
  55. package/dist/core/p-bd0328f3.entry.js +2 -0
  56. package/dist/core/p-bd0328f3.entry.js.map +1 -0
  57. package/dist/core/p-cc0e0b46.entry.js +2 -0
  58. package/dist/core/p-cc0e0b46.entry.js.map +1 -0
  59. package/dist/core/p-fac387e8.entry.js +2 -0
  60. package/dist/core/p-fac387e8.entry.js.map +1 -0
  61. package/dist/esm/core.js +1 -1
  62. package/dist/esm/ic-data-table.entry.js +6 -2
  63. package/dist/esm/ic-data-table.entry.js.map +1 -1
  64. package/dist/esm/ic-date-picker.entry.js +110 -57
  65. package/dist/esm/ic-date-picker.entry.js.map +1 -1
  66. package/dist/esm/ic-navigation-group.entry.js +10 -1
  67. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  68. package/dist/esm/ic-radio-option.entry.js +1 -1
  69. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  70. package/dist/esm/ic-tree-item.entry.js +1 -1
  71. package/dist/esm/ic-tree-item.entry.js.map +1 -1
  72. package/dist/esm/loader.js +1 -1
  73. package/dist/types/components/ic-card-horizontal/ic-card-horizontal.stories.d.ts +82 -0
  74. package/dist/types/components/ic-data-table/ic-data-table.stories.d.ts +239 -0
  75. package/dist/types/components/ic-data-table/story-data.d.ts +57 -0
  76. package/dist/types/components/ic-data-table-title-bar/ic-data-table-title-bar.stories.d.ts +47 -0
  77. package/dist/types/components/ic-date-input/ic-date-input.stories.d.ts +124 -0
  78. package/dist/types/components/ic-date-picker/ic-date-picker.d.ts +18 -1
  79. package/dist/types/components/ic-date-picker/ic-date-picker.stories.d.ts +153 -0
  80. package/dist/types/components/ic-date-picker/story-data.d.ts +2 -0
  81. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.stories.d.ts +106 -0
  82. package/dist/types/components/ic-select-with-multi/ic-select-multi.stories.d.ts +106 -0
  83. package/dist/types/components/ic-tree-view/ic-tree-view.stories.d.ts +99 -0
  84. package/dist/types/components.d.ts +13 -0
  85. package/hydrate/index.js +129 -62
  86. package/package.json +12 -12
  87. package/dist/core/p-4084bce2.entry.js +0 -2
  88. package/dist/core/p-4084bce2.entry.js.map +0 -1
  89. package/dist/core/p-71bbb583.entry.js +0 -2
  90. package/dist/core/p-71bbb583.entry.js.map +0 -1
  91. package/dist/core/p-89112e37.entry.js +0 -2
  92. package/dist/core/p-89112e37.entry.js.map +0 -1
  93. package/dist/core/p-b4f824a6.entry.js.map +0 -1
  94. package/dist/core/p-fe105ed0.entry.js +0 -2
  95. package/dist/core/p-fe105ed0.entry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["icRadioOptionCss","ADDITIONAL_FIELD","TEXT_FIELD_SELECTOR","RadioOption","constructor","hostRef","this","defaultRadioValue","hasAdditionalField","skipFocus","handleClick","_a","disabled","radioElement","focus","value","el","querySelector","icCheck","emit","radioOptionSelect","swallowClick","event","stopPropagation","handleFormReset","selected","initiallySelected","additionalFieldDisplay","dynamicText","form","undefined","formaction","formenctype","formmethod","formnovalidate","formtarget","groupLabel","label","name","watchDisabledHandler","removeDisabledFalse","watchSelectedHandler","icSelectedChange","handleCheck","ev","children","Array","from","targetEl","target","includes","parentElement","disconnectedCallback","removeFormResetListener","componentWillLoad","isSlotUsed","textField","hiddenInput","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","componentWillRender","hasSlot","componentDidRender","textfield","setAttribute","removeAttribute","textfieldValueHandler","detail","stopImmediatePropagation","setFocus","setTabIndex","tabIndex","render","id","isPropDefined","h","Host","onClick","class","container","role","tabindex","type","checked","ref","variant","htmlFor","hidden","delegatesFocus"],"sources":["../web-components/dist/collection/components/ic-radio-option/ic-radio-option.css?tag=ic-radio-option&encapsulation=shadow","../web-components/dist/collection/components/ic-radio-option/ic-radio-option.js"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-style: inherit;\n vertical-align: baseline;\n}\n\n\n:host {\n display: flex;\n flex-direction: column;\n width: -moz-fit-content;\n width: fit-content;\n}\n\n:host([additional-field-display=\"static\"])\n ::slotted([slot=\"additional-field\"]) {\n margin-top: calc(var(--ic-space-sm) / 2);\n margin-left: var(--ic-space-xl);\n}\n\n/* The label turns grey when disabled */\n:host(.disabled) {\n color: var(--ic-architectural-200);\n}\n\n/* Focus states */\n\n.container input:focus + span.checkmark,\n:host(:focus) .container input:checked + span.checkmark {\n box-shadow: var(--ic-border-focus);\n}\n\n/* The container */\n.container {\n display: grid;\n grid-template-columns: min-content auto;\n position: relative;\n cursor: pointer;\n align-items: center;\n margin: var(--ic-space-xxs) 0 var(--ic-space-xxs) var(--ic-space-xxs);\n}\n\n.container.disabled,\n.container.disabled input:disabled {\n cursor: default;\n}\n\n/* Hide the browser's default radio button */\n.container input {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n display: inline-block;\n position: absolute;\n cursor: pointer;\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n border-radius: 50%;\n border: none;\n}\n\n/* Create a custom radio button */\n.checkmark {\n display: block;\n position: relative;\n top: 0;\n left: 0;\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n background-color: var(--ic-architectural-white);\n border: var(--ic-border-default);\n border-radius: 50%;\n transition: var(--ic-easing-transition-fast);\n box-sizing: border-box;\n}\n\n/* Show the indicator (dot/circle) when checked */\n.container input:checked ~ .checkmark::after {\n display: inline-block;\n}\n\n/* On mouse-over, add a light blue background color */\n.container:hover input ~ .checkmark {\n background-color: var(--ic-action-default-bg-hover-no-alpha);\n box-shadow: 0 0 0 0.25rem var(--ic-action-default-bg-hover);\n border: var(--ic-border-width) solid var(--ic-action-default);\n}\n\n/* When pressed, adds the active colours */\n.container:active input ~ .checkmark {\n background-color: var(--ic-action-default-bg-active-no-alpha);\n border: var(--ic-border-width) solid var(--ic-action-default-active);\n box-shadow: 0 0 0 0.25rem var(--ic-action-default-bg-active);\n}\n\n/* When pressed, adds the active colours */\n.container:active input:checked ~ .checkmark {\n background-color: var(--ic-action-default-bg-active);\n border: 0.125rem solid var(--ic-action-default-active);\n box-shadow: 0 0 0 0.25rem var(--ic-action-default-bg-active);\n}\n\n/* When pressed and selected, adds the active colours */\n.container:active input:checked ~ .checkmark::after {\n background-color: var(--ic-action-default-active);\n}\n\n/* When the radio button is checked */\n.container input:checked ~ .checkmark {\n border: 0.125rem solid var(--ic-action-default);\n}\n\n/* When the radio button is checked and disabled */\n.container input:checked:disabled ~ .checkmark {\n background-color: var(--ic-architectural-white);\n border: 0.125rem solid var(--ic-architectural-200);\n}\n\n/* When the radio button is disabled */\n.container input:disabled ~ .checkmark {\n border: var(--ic-border-width) dashed var(--ic-architectural-200);\n}\n\n/* When the radio button is disabled */\n.container input:disabled ~ .checkmark::after {\n background: var(--ic-architectural-200);\n}\n\n/* On mouse-over inactive */\n.container:hover input:disabled ~ .checkmark {\n background-color: var(--ic-architectural-white);\n box-shadow: none;\n border: 0.125rem solid none;\n}\n\n.container:active input:disabled ~ .checkmark::after {\n background-color: var(--ic-architectural-200);\n}\n\n/* Style the indicator (dot/circle) */\n.container .checkmark::after {\n content: \"\";\n position: absolute;\n display: none;\n top: calc(50% - var(--ic-space-xs));\n left: calc(50% - var(--ic-space-xs));\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n border-radius: 50%;\n background: var(--ic-action-default);\n}\n\n.radio-label {\n margin-left: var(--ic-space-md);\n}\n\n.additional-field-wrapper {\n margin-left: var(--ic-space-xs);\n}\n\n/* The line */\n.branch-corner {\n color: var(--ic-action-default);\n height: var(--ic-space-md);\n width: var(--ic-space-xl);\n border-radius: 0 0 0 0.188rem;\n border-bottom: 0.125rem solid var(--ic-action-default);\n border-left: 0.125rem solid var(--ic-action-default);\n margin-left: calc(-1 * var(--ic-space-1px));\n}\n\n/* The dynamic container */\n.dynamic-container {\n display: flex;\n position: relative;\n margin: var(--ic-space-xxxs) 0 var(--ic-space-xxs) var(--ic-space-md);\n gap: var(--ic-space-xs);\n}\n\n.dynamic-container.hidden {\n display: none;\n}\n\n.dynamic-text {\n color: var(--ic-action-default);\n margin-top: calc(var(--ic-space-sm) / 2);\n margin-bottom: var(--ic-space-xs);\n border-radius: 2%;\n}\n\n@media (max-width: 576px) {\n ::slotted(ic-text-field) {\n --input-width: 100%;\n }\n}\n\n@media (forced-colors: active) {\n /* Styles here only apply to Forced Colors Mode */\n\n .container input:checked ~ .checkmark,\n .container:active input:checked ~ .checkmark {\n border-color: Highlight;\n }\n\n .container input:checked ~ .checkmark::after,\n .container:active input:checked ~ .checkmark::after {\n background-color: Highlight;\n }\n\n .container input:disabled ~ .checkmark,\n .container input:checked:disabled ~ .checkmark {\n border-color: GrayText;\n }\n\n .container input:disabled ~ .checkmark::after,\n .container:active input:disabled ~ .checkmark::after {\n background-color: GrayText;\n }\n}\n\n/* Right to left */\ninput[type=\"radio\"]:dir(rtl) {\n right: 0;\n}\n\n.radio-label:dir(rtl) {\n padding-right: var(--ic-space-sm);\n padding-left: 0;\n}\n\n.branch-corner:dir(rtl) {\n border-radius: 0 0 0.188rem 0;\n border-right: 0.125rem solid var(--ic-action-default);\n border-left: none;\n}\n\n.dynamic-container:dir(rtl) {\n margin: var(--ic-space-xxxs) var(--ic-space-sm) var(--ic-space-xxs) 0;\n}\n","import { Host, h, } from \"@stencil/core\";\nimport { onComponentRequiredPropUndefined, addFormResetListener, removeFormResetListener, removeDisabledFalse, isPropDefined, isSlotUsed, } from \"../../utils/helpers\";\nconst ADDITIONAL_FIELD = \"additional-field\";\nconst TEXT_FIELD_SELECTOR = \"ic-text-field\";\n/**\n * @slot additional-field - Content to displayed alongside a radio option.\n */\nexport class RadioOption {\n constructor() {\n this.defaultRadioValue = \"\";\n this.hasAdditionalField = false;\n this.skipFocus = false;\n this.handleClick = () => {\n var _a;\n if (!this.disabled) {\n if (this.skipFocus === false) {\n this.radioElement.focus();\n }\n this.skipFocus = false;\n if (this.hasAdditionalField) {\n this.value =\n ((_a = this.el.querySelector(TEXT_FIELD_SELECTOR)) === null || _a === void 0 ? void 0 : _a.value) ||\n this.defaultRadioValue;\n }\n this.icCheck.emit({\n value: this.value,\n });\n this.radioOptionSelect.emit({\n value: this.value,\n });\n }\n };\n this.swallowClick = (event) => {\n event.stopPropagation();\n };\n this.handleFormReset = () => {\n this.skipFocus = true;\n this.selected = this.initiallySelected;\n };\n this.additionalFieldDisplay = \"static\";\n this.disabled = false;\n this.dynamicText = \"This selection requires additional answers\";\n this.form = undefined;\n this.formaction = undefined;\n this.formenctype = undefined;\n this.formmethod = undefined;\n this.formnovalidate = undefined;\n this.formtarget = undefined;\n this.groupLabel = undefined;\n this.label = undefined;\n this.name = undefined;\n this.value = undefined;\n this.selected = false;\n this.initiallySelected = this.selected;\n }\n watchDisabledHandler() {\n removeDisabledFalse(this.disabled, this.el);\n }\n watchSelectedHandler() {\n this.icSelectedChange.emit();\n }\n handleCheck(ev) {\n const children = Array.from(this.el.children);\n const targetEl = ev.target;\n if (this.additionalFieldDisplay === \"static\" &&\n (children.includes(targetEl.parentElement) || children.includes(targetEl)))\n this.icCheck.emit({ value: this.value });\n }\n disconnectedCallback() {\n removeFormResetListener(this.el, this.handleFormReset);\n }\n componentWillLoad() {\n if (isSlotUsed(this.el, ADDITIONAL_FIELD)) {\n this.hasAdditionalField = true;\n const textField = this.el.querySelector(TEXT_FIELD_SELECTOR);\n if (textField)\n textField.hiddenInput = false;\n }\n this.defaultRadioValue = this.value;\n addFormResetListener(this.el, this.handleFormReset);\n removeDisabledFalse(this.disabled, this.el);\n }\n componentDidLoad() {\n onComponentRequiredPropUndefined([{ prop: this.value, propName: \"value\" }], \"Radio Option\");\n }\n componentWillRender() {\n const hasSlot = isSlotUsed(this.el, ADDITIONAL_FIELD);\n if (hasSlot && !this.hasAdditionalField) {\n this.hasAdditionalField = true;\n const textField = this.el.querySelector(TEXT_FIELD_SELECTOR);\n if (textField)\n textField.hiddenInput = false;\n }\n else if (!hasSlot && this.hasAdditionalField) {\n this.hasAdditionalField = false;\n }\n }\n componentDidRender() {\n if (this.additionalFieldDisplay === \"static\") {\n const textfield = this.el.querySelector(TEXT_FIELD_SELECTOR);\n if (!this.selected || this.disabled) {\n textfield === null || textfield === void 0 ? void 0 : textfield.setAttribute(\"disabled\", \"\");\n }\n else {\n textfield === null || textfield === void 0 ? void 0 : textfield.removeAttribute(\"disabled\");\n }\n }\n }\n textfieldValueHandler(event) {\n if (this.selected) {\n this.value = event.detail.value || this.defaultRadioValue;\n this.icCheck.emit({\n value: this.value,\n });\n this.radioOptionSelect.emit({\n value: this.value,\n });\n }\n event.stopImmediatePropagation();\n }\n /**\n * Sets focus on the radio option.\n */\n async setFocus() {\n var _a;\n (_a = this.radioElement) === null || _a === void 0 ? void 0 : _a.focus();\n }\n /**\n * @internal Sets the tabIndex of the radio option.\n */\n async setTabIndex(value) {\n this.radioElement.tabIndex = value;\n }\n render() {\n const { additionalFieldDisplay, disabled, dynamicText, form, formaction, formenctype, formmethod, formnovalidate, formtarget, groupLabel, handleClick, hasAdditionalField, label, name, selected, swallowClick, value, } = this;\n const id = `ic-radio-option-${isPropDefined(label) || value}-${groupLabel}`;\n return (h(Host, { onClick: handleClick, class: { disabled } }, h(\"div\", { class: { container: true, disabled } }, h(\"div\", null, h(\"input\", { role: \"radio\", tabindex: selected ? \"0\" : \"-1\", type: \"radio\", name: name, id: id, value: value, disabled: disabled ? true : null, checked: selected, ref: (el) => (this.radioElement = el), form: form, formaction: formaction, formenctype: formenctype, formmethod: formmethod, formnovalidate: formnovalidate, formtarget: formtarget }), h(\"span\", { class: \"checkmark\" })), h(\"ic-typography\", { class: \"radio-label\", variant: \"body\" }, h(\"label\", { htmlFor: id }, label))), hasAdditionalField && (h(\"div\", { onClick: swallowClick, class: {\n \"dynamic-container\": true,\n hidden: additionalFieldDisplay === \"dynamic\" && !selected,\n } }, additionalFieldDisplay === \"dynamic\" && (h(\"div\", { class: \"branch-corner\" })), h(\"div\", null, additionalFieldDisplay === \"dynamic\" && (h(\"ic-typography\", { variant: \"caption\" }, h(\"p\", { class: \"dynamic-text\" }, dynamicText))), h(\"div\", { class: {\n \"additional-field-wrapper\": additionalFieldDisplay === \"static\",\n } }, h(\"slot\", { name: ADDITIONAL_FIELD })))))));\n }\n static get is() { return \"ic-radio-option\"; }\n static get encapsulation() { return \"shadow\"; }\n static get delegatesFocus() { return true; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"ic-radio-option.css\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"ic-radio-option.css\"]\n };\n }\n static get properties() {\n return {\n \"additionalFieldDisplay\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"IcAdditionalFieldTypes\",\n \"resolved\": \"\\\"dynamic\\\" | \\\"static\\\"\",\n \"references\": {\n \"IcAdditionalFieldTypes\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcAdditionalFieldTypes\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The style of additionalField that will be displayed if used.\"\n },\n \"attribute\": \"additional-field-display\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"static\\\"\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the disabled state will be set.\"\n },\n \"attribute\": \"disabled\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"dynamicText\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The text to be displayed when dynamic.\"\n },\n \"attribute\": \"dynamic-text\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"This selection requires additional answers\\\"\"\n },\n \"form\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The <form> element to associate the radio with.\"\n },\n \"attribute\": \"form\",\n \"reflect\": false\n },\n \"formaction\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The URL that processes the information submitted by the radio. It overrides the action attribute of the radio's form owner. Does nothing if there is no form owner.\"\n },\n \"attribute\": \"formaction\",\n \"reflect\": false\n },\n \"formenctype\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The way the submitted form data is encoded.\"\n },\n \"attribute\": \"formenctype\",\n \"reflect\": false\n },\n \"formmethod\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The HTTP method used to submit the form.\"\n },\n \"attribute\": \"formmethod\",\n \"reflect\": false\n },\n \"formnovalidate\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the form will not be validated when submitted.\"\n },\n \"attribute\": \"formnovalidate\",\n \"reflect\": false\n },\n \"formtarget\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The place to display the response from submitting the form. It overrides the target attribute of the radio's form owner.\"\n },\n \"attribute\": \"formtarget\",\n \"reflect\": false\n },\n \"groupLabel\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The group label for the radio option.\"\n },\n \"attribute\": \"group-label\",\n \"reflect\": false\n },\n \"label\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The label for the radio option.\"\n },\n \"attribute\": \"label\",\n \"reflect\": false\n },\n \"name\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The name for the radio option.\"\n },\n \"attribute\": \"name\",\n \"reflect\": false\n },\n \"value\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The value for the radio option.\"\n },\n \"attribute\": \"value\",\n \"reflect\": false\n },\n \"selected\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the radio option will be displayed in a selected state.\"\n },\n \"attribute\": \"selected\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n }\n };\n }\n static get states() {\n return {\n \"initiallySelected\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"icCheck\",\n \"name\": \"icCheck\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the radio option is selected.\"\n },\n \"complexType\": {\n \"original\": \"IcValueEventDetail\",\n \"resolved\": \"IcValueEventDetail\",\n \"references\": {\n \"IcValueEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcValueEventDetail\"\n }\n }\n }\n }, {\n \"method\": \"radioOptionSelect\",\n \"name\": \"radioOptionSelect\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"deprecated\",\n \"text\": \"This event should not be used anymore. Use icCheck instead.\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"IcValueEventDetail\",\n \"resolved\": \"IcValueEventDetail\",\n \"references\": {\n \"IcValueEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcValueEventDetail\"\n }\n }\n }\n }, {\n \"method\": \"icSelectedChange\",\n \"name\": \"icSelectedChange\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the radio option is selected or deselected.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }];\n }\n static get methods() {\n return {\n \"setFocus\": {\n \"complexType\": {\n \"signature\": \"() => Promise<void>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"Sets focus on the radio option.\",\n \"tags\": []\n }\n },\n \"setTabIndex\": {\n \"complexType\": {\n \"signature\": \"(value: number) => Promise<void>\",\n \"parameters\": [{\n \"name\": \"value\",\n \"type\": \"number\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Sets the tabIndex of the radio option.\"\n }]\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"disabled\",\n \"methodName\": \"watchDisabledHandler\"\n }, {\n \"propName\": \"selected\",\n \"methodName\": \"watchSelectedHandler\"\n }];\n }\n static get listeners() {\n return [{\n \"name\": \"icCheck\",\n \"method\": \"handleCheck\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"icChange\",\n \"method\": \"textfieldValueHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }];\n }\n}\n//# sourceMappingURL=ic-radio-option.js.map\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as e,h as i,H as s,g as r}from"./p-8455d1bb.js";import{r as o,i as c,o as a,a as l}from"./p-8ab58daa.js";const h=`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M7 9.5L12 14.5L17 9.5H7Z" fill="currentColor"/>\n</svg>`;const n=':host{display:block;border:none;position:relative}:host .tree-item-content{display:flex;align-items:center;min-height:calc(var(--ic-space-xl) + var(--ic-space-xs));padding:0 var(--ic-space-xs);text-decoration:none;color:var(--ic-primary-text)}::slotted([slot="router-item"]){display:flex;align-items:center;min-height:calc(var(--ic-space-xl) + var(--ic-space-xs));text-decoration:none;font-family:var(--ic-font-body-family);color:var(--ic-primary-text);padding:0 var(--ic-space-xs) !important}:host(.ic-tree-item-truncate) .tree-item-content,:host(.ic-tree-item-truncate) ::slotted([slot="router-item"]){height:calc(var(--ic-space-xl) + var(--ic-space-xs))}::slotted([slot="router-item"].ic-tree-item-single){padding-left:calc(var(--ic-space-xl) + var(--ic-space-xs)) !important}:host .tree-item-content:focus,::slotted([slot="router-item"]:focus){box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius);transition:var(--ic-transition-duration-fast);outline:none}:host .tree-item-content:hover,::slotted([slot="router-item"]:hover){background-color:var(--ic-action-dark-bg-hover) !important;cursor:pointer}:host .tree-item-content:active,::slotted([slot="router-item"]:active){background-color:var(--ic-action-dark-bg-active) !important}:host(.ic-tree-item-light) .tree-item-content:hover,:host(.ic-tree-item-light) ::slotted([slot="router-item"]:hover){background-color:var(--ic-action-light-bg-hover) !important}:host(.ic-tree-item-light) .tree-item-content:active,:host(.ic-tree-item-light) ::slotted([slot="router-item"]:active){background-color:var(--ic-action-light-bg-active) !important}:host(.ic-tree-item-selected) .tree-item-content,:host(.ic-tree-item-selected) ::slotted([slot="router-item"]){background-color:var(--ic-action-default-bg-hover)}:host(.ic-tree-item-small) .tree-item-content,:host(.ic-tree-item-small) ::slotted([slot="router-item"]){min-height:var(--ic-space-xl)}:host(.ic-tree-item-large) .tree-item-content,:host(.ic-tree-item-large) ::slotted([slot="router-item"]){min-height:var(--ic-space-xxl)}:host(.ic-tree-item-truncate.ic-tree-item-small) .tree-item-content,:host(.ic-tree-item-truncate.ic-tree-item-small) ::slotted([slot="router-item"]){height:var(--ic-space-xl)}:host(.ic-tree-item-truncate.ic-tree-item-large) .tree-item-content,:host(.ic-tree-item-truncate.ic-tree-item-large) ::slotted([slot="router-item"]){height:var(--ic-space-xxl)}:host(.ic-tree-item-disabled){pointer-events:none}:host(.ic-tree-item-disabled) .tree-item-content,:host(.ic-tree-item-disabled) .arrow-dropdown,:host(.ic-tree-item-disabled) ::slotted([slot="icon"]),:host(.ic-tree-item-disabled) ::slotted([slot="router-item"]){color:var(--ic-architectural-200);fill:var(--ic-architectural-200);pointer-events:none}:host(.ic-tree-item-light) .tree-item-content,:host(.ic-tree-item-light) .arrow-dropdown,:host(.ic-tree-item-light) ::slotted([slot="icon"]),:host(.ic-tree-item-light) ::slotted([slot="router-item"]){color:var(--ic-architectural-white);fill:var(--ic-architectural-white)}:host(.ic-tree-item-light.ic-tree-item-disabled) .tree-item-content,:host(.ic-tree-item-light.ic-tree-item-disabled) .arrow-dropdown,:host(.ic-tree-item-light.ic-tree-item-disabled) ::slotted([slot="icon"]),:host(.ic-tree-item-light.ic-tree-item-disabled) ::slotted([slot="router-item"]){color:var(--ic-architectural-300);fill:var(--ic-architectural-300)}:host .arrow-dropdown{color:var(--ic-action-default);margin-right:var(--ic-space-xs)}:host(.ic-tree-item-small) .arrow-dropdown{margin-right:var(--ic-space-xxs)}:host .tree-item-expanded{transform:rotate(180deg);margin-top:calc(-1 * var(--ic-space-xxs))}:host .ic-tree-item-single{padding-left:calc(var(--ic-space-xl) + var(--ic-space-xs))}:host(.ic-tree-item-small) .ic-tree-item-single{padding-left:calc(var(--ic-space-xl) + var(--ic-space-xxs))}.icon-container{width:var(--ic-space-lg);height:var(--ic-space-lg);margin:0 var(--ic-space-xs) 0 0}:host(.ic-tree-item-small) .icon-container{margin:0 var(--ic-space-xxs) 0 0}.ic-text-overflow{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ic-tooltip-overflow{overflow:hidden}@media (forced-colors: active){::slotted([slot="icon"]){fill:currentcolor}:host(.ic-tree-item-disabled) .tree-item-content,:host(.ic-tree-item-disabled) .arrow-dropdown,:host(.ic-tree-item-disabled) ::slotted([slot="icon"]),:host(.ic-tree-item-disabled) ::slotted([slot="router-item"]){color:GrayText !important;fill:GrayText !important}:host .tree-item-content:focus,::slotted([slot="router-item"]:focus){border:var(--ic-hc-border) !important}:host(.ic-tree-item-selected) .tree-item-content,:host(.ic-tree-item-selected) ::slotted([slot="router-item"]){color:Highlight}}';let d=0;const m=class{constructor(i){t(this,i);this.icTreeItemSelected=e(this,"icTreeItemSelected",7);this.treeItemId=`ic-tree-item-${d++}`;this.treeItemTag="IC-TREE-ITEM";this.hostMutationObserver=null;this.TOOLTIP="ic-tooltip";this.handleTreeItemClicked=()=>{if(this.isParent){this.expanded=!this.expanded;this.hasParentExpanded=true}this.updateAriaLabel();this.selected=true;this.watchSelectedHandler()};this.setTreeItemPadding=()=>{let t=1;let e=this.el.parentElement;const i=this.el.shadowRoot.querySelector(".tree-item-content");const s=Array.from(e.children).map((t=>{if(t!==this.el&&!t.querySelector('[slot="router-item"]')&&!t.querySelector('[slot="label"]')){return t.children.length>0}else{return false}})).includes(true);const r=e.tagName===this.treeItemTag;const o=this.hasRouterSlot();if(s&&!this.el.isParent||r&&!this.el.isParent){if(o){this.routerSlot.classList.add("ic-tree-item-single")}else{i.classList.add("ic-tree-item-single")}}while(e){if(e.tagName===this.treeItemTag){t++;if(!this.el.isParent&&s){i.style.paddingLeft=`calc(var(--ic-space-xl) + ${t*16}px)`}else if(!this.el.isParent){i.style.paddingLeft=`calc(var(--ic-space-xs) + ${t*24}px`}else{i.style.paddingLeft=`${t*16}px`}}e=e.parentElement}};this.truncateTreeItemLabel=t=>{const e=t.shadowRoot.querySelector(".tree-item-label");const i=e===null||e===void 0?void 0:e.closest(this.TOOLTIP);const s=t.shadowRoot.querySelector(".tree-item-content");if((e===null||e===void 0?void 0:e.scrollHeight)>(s===null||s===void 0?void 0:s.clientHeight)){e.classList.add("ic-text-overflow");if(!i){const t=document.createElement("ic-tooltip");t.setAttribute("target",this.el.id);t.setAttribute("label",e.textContent);t.classList.add("ic-tooltip-overflow");t.setAttribute("placement","right");s.appendChild(t);t.appendChild(e)}}};this.handleDisplayTooltip=t=>{const e=this.el.shadowRoot.querySelector(".tree-item-label");const i=e===null||e===void 0?void 0:e.closest(this.TOOLTIP);i===null||i===void 0?void 0:i.displayTooltip(t)};this.childTreeItems=undefined;this.appearance="dark";this.disabled=false;this.expanded=false;this.hasParentExpanded=false;this.href=undefined;this.hreflang="";this.isParent=false;this.label="";this.referrerpolicy=undefined;this.rel=undefined;this.selected=false;this.size="default";this.target=undefined;this.truncateTreeItem=undefined}watchDisabledHandler(){o(this.disabled,this.el)}watchSelectedHandler(){if(this.selected){this.icTreeItemSelected.emit({id:this.el.id})}this.updateAriaLabel()}disconnectedCallback(){var t;(t=this.hostMutationObserver)===null||t===void 0?void 0:t.disconnect()}componentWillLoad(){o(this.disabled,this.el)}componentDidLoad(){this.childTreeItems=Array.from(this.el.children).filter((t=>t.tagName===this.treeItemTag));if(this.childTreeItems.length>0){this.isParent=true}this.setTreeItemPadding();this.updateAriaLabel();setTimeout((()=>{this.truncateTreeItem&&this.truncateTreeItemLabel(this.el)}),100);!c(this.el,"label")&&a([{prop:this.label,propName:"label"}],"Tree item");this.hostMutationObserver=new MutationObserver((t=>l(t,"icon",this)));this.hostMutationObserver.observe(this.el,{childList:true})}componentDidRender(){this.truncateTreeItem&&this.truncateTreeItemLabel(this.el);if(this.expanded){this.childTreeItems.forEach((t=>{t.truncateTreeItem&&this.truncateTreeItemLabel(t)}))}}componentDidUpdate(){if(this.hasParentExpanded){this.childTreeItems.forEach((t=>{t.truncateTreeItem&&this.truncateTreeItemLabel(t)}));this.hasParentExpanded=false}}handleKeyDown(t){if(t.key==="Enter"||t.key===" "){t.stopImmediatePropagation();this.handleTreeItemClicked()}}async setFocus(){var t,e;if(this.hasRouterSlot()){(t=this.routerSlot)===null||t===void 0?void 0:t.focus()}else{(e=this.treeItemElement)===null||e===void 0?void 0:e.focus()}}async updateAriaLabel(){let t;if(this.hasRouterSlot()){t=this.routerSlot.textContent}else if(c(this.el,"label")){t=this.el.querySelector('[slot="label"]').textContent}else{t=this.label}if(this.isParent){t=`${t}, triggers submenu, ${this.expanded?"expanded":"collapsed"}`}if(this.el.parentElement){const e=Array.from(this.el.parentElement.children).filter((t=>t.tagName===this.treeItemTag));const i=e.indexOf(this.el)+1;const s=e.length;t=`${t}, ${i} of ${s}`}if(this.selected){t=`${t}, active`}if(this.disabled){t=`${t}, dimmed`}if(this.hasRouterSlot()){this.routerSlot.ariaLabel=t}else{this.treeItemElement.ariaLabel=t}}hasRouterSlot(){this.routerSlot=this.el.querySelector('[slot="router-item"]');return!!this.routerSlot}render(){const{appearance:t,disabled:e,label:r,selected:o,size:a,expanded:l}=this;const n=this.href&&!this.disabled?"a":"div";const d=n=="a"&&{href:this.href,hrefLang:this.hreflang,referrerPolicy:this.referrerpolicy,rel:this.rel,target:this.target};return i(s,{class:{[`ic-tree-item-${t}`]:true,"ic-tree-item-disabled":e,"ic-tree-item-selected":!e&&o,[`ic-tree-item-${a}`]:a!=="default","ic-tree-item-truncate":this.truncateTreeItem},id:this.treeItemId},this.hasRouterSlot()?i("slot",{name:"router-item"}):i(n,Object.assign({class:{"tree-item-content":true},tabIndex:e?-1:0,onClick:this.handleTreeItemClicked,ref:t=>this.treeItemElement=t,"aria-disabled":e?"true":"false","aria-live":"polite"},d,{onFocus:()=>this.handleDisplayTooltip(true),onBlur:()=>this.handleDisplayTooltip(false)}),this.isParent&&i("span",{class:{["arrow-dropdown"]:true,["tree-item-expanded"]:l},"aria-hidden":"true",innerHTML:h}),c(this.el,"icon")&&i("div",{class:"icon-container"},i("slot",{name:"icon"})),i("ic-typography",{class:"tree-item-label"},c(this.el,"label")?i("slot",{name:"label"}):r)),l&&i("div",{"aria-hidden":`${!l}`},i("slot",null)))}get el(){return r(this)}static get watchers(){return{disabled:["watchDisabledHandler"],selected:["watchSelectedHandler"]}}};m.style=n;export{m as ic_tree_item};
2
+ //# sourceMappingURL=p-cc0e0b46.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["icTreeItemCss","treeItemIds","TreeItem","this","treeItemId","treeItemTag","hostMutationObserver","TOOLTIP","handleTreeItemClicked","isParent","expanded","hasParentExpanded","updateAriaLabel","selected","watchSelectedHandler","setTreeItemPadding","level","parentElement","el","treeItemContent","shadowRoot","querySelector","isSiblingOfParent","Array","from","children","map","sibling","length","includes","isChild","tagName","isRouterItem","hasRouterSlot","routerSlot","classList","add","style","paddingLeft","truncateTreeItemLabel","treeItem","typographyEl","tooltip","closest","treeContent","scrollHeight","clientHeight","tooltipEl","document","createElement","setAttribute","id","textContent","appendChild","handleDisplayTooltip","display","displayTooltip","watchDisabledHandler","removeDisabledFalse","disabled","icTreeItemSelected","emit","disconnectedCallback","_a","disconnect","componentWillLoad","componentDidLoad","childTreeItems","filter","child","setTimeout","truncateTreeItem","isSlotUsed","onComponentRequiredPropUndefined","prop","label","propName","MutationObserver","mutationList","renderDynamicChildSlots","observe","childList","componentDidRender","forEach","componentDidUpdate","handleKeyDown","ev","key","stopImmediatePropagation","setFocus","focus","_b","treeItemElement","ariaLabel","treeItems","index","indexOf","parentChildren","render","appearance","size","Component","href","attrs","hrefLang","hreflang","referrerPolicy","referrerpolicy","rel","target","h","Host","class","name","Object","assign","tabIndex","onClick","ref","onFocus","onBlur","innerHTML","arrowDropdown"],"sources":["src/components/ic-tree-item/ic-tree-item.css?tag=ic-tree-item&encapsulation=shadow","src/components/ic-tree-item/ic-tree-item.tsx"],"sourcesContent":[":host {\n display: block;\n border: none;\n position: relative;\n}\n\n:host .tree-item-content {\n display: flex;\n align-items: center;\n min-height: calc(var(--ic-space-xl) + var(--ic-space-xs));\n padding: 0 var(--ic-space-xs);\n text-decoration: none;\n color: var(--ic-primary-text);\n}\n\n::slotted([slot=\"router-item\"]) {\n display: flex;\n align-items: center;\n min-height: calc(var(--ic-space-xl) + var(--ic-space-xs));\n text-decoration: none;\n font-family: var(--ic-font-body-family);\n color: var(--ic-primary-text);\n padding: 0 var(--ic-space-xs) !important;\n}\n\n:host(.ic-tree-item-truncate) .tree-item-content,\n:host(.ic-tree-item-truncate) ::slotted([slot=\"router-item\"]) {\n height: calc(var(--ic-space-xl) + var(--ic-space-xs));\n}\n\n::slotted([slot=\"router-item\"].ic-tree-item-single) {\n padding-left: calc(var(--ic-space-xl) + var(--ic-space-xs)) !important;\n}\n\n:host .tree-item-content:focus,\n::slotted([slot=\"router-item\"]:focus) {\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n transition: var(--ic-transition-duration-fast);\n outline: none;\n}\n\n:host .tree-item-content:hover,\n::slotted([slot=\"router-item\"]:hover) {\n background-color: var(--ic-action-dark-bg-hover) !important;\n cursor: pointer;\n}\n\n:host .tree-item-content:active,\n::slotted([slot=\"router-item\"]:active) {\n background-color: var(--ic-action-dark-bg-active) !important;\n}\n\n:host(.ic-tree-item-light) .tree-item-content:hover,\n:host(.ic-tree-item-light) ::slotted([slot=\"router-item\"]:hover) {\n background-color: var(--ic-action-light-bg-hover) !important;\n}\n\n:host(.ic-tree-item-light) .tree-item-content:active,\n:host(.ic-tree-item-light) ::slotted([slot=\"router-item\"]:active) {\n background-color: var(--ic-action-light-bg-active) !important;\n}\n\n:host(.ic-tree-item-selected) .tree-item-content,\n:host(.ic-tree-item-selected) ::slotted([slot=\"router-item\"]) {\n background-color: var(--ic-action-default-bg-hover);\n}\n\n:host(.ic-tree-item-small) .tree-item-content,\n:host(.ic-tree-item-small) ::slotted([slot=\"router-item\"]) {\n min-height: var(--ic-space-xl);\n}\n\n:host(.ic-tree-item-large) .tree-item-content,\n:host(.ic-tree-item-large) ::slotted([slot=\"router-item\"]) {\n min-height: var(--ic-space-xxl);\n}\n\n:host(.ic-tree-item-truncate.ic-tree-item-small) .tree-item-content,\n:host(.ic-tree-item-truncate.ic-tree-item-small)\n ::slotted([slot=\"router-item\"]) {\n height: var(--ic-space-xl);\n}\n\n:host(.ic-tree-item-truncate.ic-tree-item-large) .tree-item-content,\n:host(.ic-tree-item-truncate.ic-tree-item-large)\n ::slotted([slot=\"router-item\"]) {\n height: var(--ic-space-xxl);\n}\n\n:host(.ic-tree-item-disabled) {\n pointer-events: none;\n}\n\n:host(.ic-tree-item-disabled) .tree-item-content,\n:host(.ic-tree-item-disabled) .arrow-dropdown,\n:host(.ic-tree-item-disabled) ::slotted([slot=\"icon\"]),\n:host(.ic-tree-item-disabled) ::slotted([slot=\"router-item\"]) {\n color: var(--ic-architectural-200);\n fill: var(--ic-architectural-200);\n pointer-events: none;\n}\n\n:host(.ic-tree-item-light) .tree-item-content,\n:host(.ic-tree-item-light) .arrow-dropdown,\n:host(.ic-tree-item-light) ::slotted([slot=\"icon\"]),\n:host(.ic-tree-item-light) ::slotted([slot=\"router-item\"]) {\n color: var(--ic-architectural-white);\n fill: var(--ic-architectural-white);\n}\n\n:host(.ic-tree-item-light.ic-tree-item-disabled) .tree-item-content,\n:host(.ic-tree-item-light.ic-tree-item-disabled) .arrow-dropdown,\n:host(.ic-tree-item-light.ic-tree-item-disabled) ::slotted([slot=\"icon\"]),\n:host(.ic-tree-item-light.ic-tree-item-disabled)\n ::slotted([slot=\"router-item\"]) {\n color: var(--ic-architectural-300);\n fill: var(--ic-architectural-300);\n}\n\n:host .arrow-dropdown {\n color: var(--ic-action-default);\n margin-right: var(--ic-space-xs);\n}\n\n:host(.ic-tree-item-small) .arrow-dropdown {\n margin-right: var(--ic-space-xxs);\n}\n\n:host .tree-item-expanded {\n transform: rotate(180deg);\n margin-top: calc(-1 * var(--ic-space-xxs));\n}\n\n:host .ic-tree-item-single {\n padding-left: calc(var(--ic-space-xl) + var(--ic-space-xs));\n}\n\n:host(.ic-tree-item-small) .ic-tree-item-single {\n padding-left: calc(var(--ic-space-xl) + var(--ic-space-xxs));\n}\n\n.icon-container {\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n margin: 0 var(--ic-space-xs) 0 0;\n}\n\n:host(.ic-tree-item-small) .icon-container {\n margin: 0 var(--ic-space-xxs) 0 0;\n}\n\n.ic-text-overflow {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.ic-tooltip-overflow {\n overflow: hidden;\n}\n\n/** High Contrast **/\n@media (forced-colors: active) {\n ::slotted([slot=\"icon\"]) {\n fill: currentcolor;\n }\n\n :host(.ic-tree-item-disabled) .tree-item-content,\n :host(.ic-tree-item-disabled) .arrow-dropdown,\n :host(.ic-tree-item-disabled) ::slotted([slot=\"icon\"]),\n :host(.ic-tree-item-disabled) ::slotted([slot=\"router-item\"]) {\n color: GrayText !important;\n fill: GrayText !important;\n }\n\n :host .tree-item-content:focus,\n ::slotted([slot=\"router-item\"]:focus) {\n border: var(--ic-hc-border) !important;\n }\n\n :host(.ic-tree-item-selected) .tree-item-content,\n :host(.ic-tree-item-selected) ::slotted([slot=\"router-item\"]) {\n color: Highlight;\n }\n}\n","import {\n Component,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n Host,\n Watch,\n State,\n Listen,\n Method,\n} from \"@stencil/core\";\nimport { IcSizes, IcThemeForegroundNoDefault } from \"../../utils/types\";\nimport {\n isSlotUsed,\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n renderDynamicChildSlots,\n} from \"../../utils/helpers\";\nimport arrowDropdown from \"../../assets/arrow-dropdown.svg\";\n\nlet treeItemIds = 0;\n\n/**\n * @slot label - Content is set as the tree item label.\n * @slot icon - Content is placed to the left of the label.\n * @slot router-item - Handle routing by nesting your routes in this slot.\n */\n@Component({\n tag: \"ic-tree-item\",\n styleUrl: \"ic-tree-item.css\",\n shadow: true,\n})\nexport class TreeItem {\n private treeItemId = `ic-tree-item-${treeItemIds++}`;\n private treeItemElement: HTMLElement;\n private treeItemTag = \"IC-TREE-ITEM\";\n private routerSlot: HTMLElement;\n private hostMutationObserver: MutationObserver = null;\n private TOOLTIP = \"ic-tooltip\";\n\n @Element() el: HTMLIcTreeItemElement;\n\n @State() childTreeItems: HTMLIcTreeItemElement[];\n\n /**\n * @internal Determines whether the light or dark variant of the tree item should be displayed.\n */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n /**\n * If `true`, the tree item appears in the disabled state.\n */\n @Prop() disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the tree item appears in the expanded state.\n */\n @Prop({ mutable: true }) expanded: boolean = false;\n\n /**\n * @internal Determines if the parent tree item has been expanded.\n */\n @Prop({ mutable: true }) hasParentExpanded: boolean = false;\n\n /**\n * The URL that the tree item link points to. If set, the tree item will render as an \"a\" tag, otherwise it will render as a div.\n */\n @Prop() href?: string | undefined;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string = \"\";\n\n /**\n * @internal If `true`, the tree item is a parent of other tree items.\n */\n @Prop({ mutable: true }) isParent: boolean = false;\n\n /**\n * The label of the tree item.\n */\n @Prop() label: string = \"\";\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * If `true`, the tree item appears in the selected state.\n */\n @Prop({ mutable: true }) selected: boolean = false;\n @Watch(\"selected\")\n watchSelectedHandler() {\n if (this.selected) {\n this.icTreeItemSelected.emit({ id: this.el.id });\n }\n this.updateAriaLabel();\n }\n\n /**\n * @internal Determines the size of the tree item.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n /**\n * If `true`, the tree item label will be truncated instead of text wrapping.\n */\n @Prop() truncateTreeItem?: boolean;\n\n /**\n * Emitted when tree item is selected.\n */\n @Event() icTreeItemSelected: EventEmitter<{ id: string }>;\n\n disconnectedCallback(): void {\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n this.childTreeItems = Array.from((this.el as HTMLElement).children).filter(\n (child) => child.tagName === this.treeItemTag\n ) as HTMLIcTreeItemElement[];\n\n if (this.childTreeItems.length > 0) {\n this.isParent = true;\n }\n\n this.setTreeItemPadding();\n\n this.updateAriaLabel();\n\n setTimeout(() => {\n this.truncateTreeItem && this.truncateTreeItemLabel(this.el);\n }, 100);\n\n !isSlotUsed(this.el, \"label\") &&\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Tree item\"\n );\n\n this.hostMutationObserver = new MutationObserver((mutationList) =>\n renderDynamicChildSlots(mutationList, \"icon\", this)\n );\n this.hostMutationObserver.observe(this.el, {\n childList: true,\n });\n }\n componentDidRender(): void {\n this.truncateTreeItem && this.truncateTreeItemLabel(this.el);\n if (this.expanded) {\n this.childTreeItems.forEach((child: HTMLIcTreeItemElement) => {\n child.truncateTreeItem && this.truncateTreeItemLabel(child);\n });\n }\n }\n\n componentDidUpdate(): void {\n if (this.hasParentExpanded) {\n this.childTreeItems.forEach((child: HTMLIcTreeItemElement) => {\n child.truncateTreeItem && this.truncateTreeItemLabel(child);\n });\n this.hasParentExpanded = false;\n }\n }\n\n @Listen(\"keydown\", {})\n handleKeyDown(ev: KeyboardEvent): void {\n if (ev.key === \"Enter\" || ev.key === \" \") {\n ev.stopImmediatePropagation();\n this.handleTreeItemClicked();\n }\n }\n\n /**\n * Sets focus on the native `input`.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.hasRouterSlot()) {\n this.routerSlot?.focus();\n } else {\n this.treeItemElement?.focus();\n }\n }\n\n private handleTreeItemClicked = (): void => {\n if (this.isParent) {\n this.expanded = !this.expanded;\n this.hasParentExpanded = true;\n }\n\n this.updateAriaLabel();\n this.selected = true;\n this.watchSelectedHandler();\n };\n\n /**\n * @internal Updates the aria-label of the tree item.\n */\n @Method()\n async updateAriaLabel(): Promise<void> {\n let ariaLabel;\n\n if (this.hasRouterSlot()) {\n ariaLabel = this.routerSlot.textContent;\n } else if (isSlotUsed(this.el, \"label\")) {\n ariaLabel = this.el.querySelector('[slot=\"label\"]').textContent;\n } else {\n ariaLabel = this.label;\n }\n\n if (this.isParent) {\n ariaLabel = `${ariaLabel}, triggers submenu, ${\n this.expanded ? \"expanded\" : \"collapsed\"\n }`;\n }\n\n if (this.el.parentElement) {\n const treeItems = Array.from(\n (this.el.parentElement as HTMLElement).children\n ).filter(\n (child) => child.tagName === this.treeItemTag\n ) as HTMLIcTreeItemElement[];\n\n const index = treeItems.indexOf(this.el) + 1;\n const parentChildren = treeItems.length;\n\n ariaLabel = `${ariaLabel}, ${index} of ${parentChildren}`;\n }\n\n if (this.selected) {\n ariaLabel = `${ariaLabel}, active`;\n }\n\n if (this.disabled) {\n ariaLabel = `${ariaLabel}, dimmed`;\n }\n\n if (this.hasRouterSlot()) {\n this.routerSlot.ariaLabel = ariaLabel;\n } else {\n this.treeItemElement.ariaLabel = ariaLabel;\n }\n }\n\n private setTreeItemPadding = () => {\n let level = 1;\n let parentElement = this.el.parentElement;\n const treeItemContent = this.el.shadowRoot.querySelector(\n \".tree-item-content\"\n ) as HTMLElement;\n\n const isSiblingOfParent = Array.from(parentElement.children)\n .map((sibling) => {\n if (\n sibling !== this.el &&\n !sibling.querySelector('[slot=\"router-item\"]') &&\n !sibling.querySelector('[slot=\"label\"]')\n ) {\n return sibling.children.length > 0;\n } else {\n return false;\n }\n })\n .includes(true);\n\n const isChild = parentElement.tagName === this.treeItemTag;\n\n const isRouterItem = this.hasRouterSlot();\n\n if (\n (isSiblingOfParent && !this.el.isParent) ||\n (isChild && !this.el.isParent)\n ) {\n if (isRouterItem) {\n this.routerSlot.classList.add(\"ic-tree-item-single\");\n } else {\n treeItemContent.classList.add(\"ic-tree-item-single\");\n }\n }\n\n while (parentElement) {\n if (parentElement.tagName === this.treeItemTag) {\n level++;\n if (!this.el.isParent && isSiblingOfParent) {\n treeItemContent.style.paddingLeft = `calc(var(--ic-space-xl) + ${\n level * 16\n }px)`;\n } else if (!this.el.isParent) {\n treeItemContent.style.paddingLeft = `calc(var(--ic-space-xs) + ${\n level * 24\n }px`;\n } else {\n treeItemContent.style.paddingLeft = `${level * 16}px`;\n }\n }\n parentElement = parentElement.parentElement;\n }\n };\n\n private truncateTreeItemLabel = (treeItem: HTMLIcTreeItemElement) => {\n const typographyEl: HTMLIcTypographyElement =\n treeItem.shadowRoot.querySelector(\".tree-item-label\");\n const tooltip = typographyEl?.closest(this.TOOLTIP);\n const treeContent: HTMLElement =\n treeItem.shadowRoot.querySelector(\".tree-item-content\");\n\n if (typographyEl?.scrollHeight > treeContent?.clientHeight) {\n typographyEl.classList.add(\"ic-text-overflow\");\n\n if (!tooltip) {\n const tooltipEl = document.createElement(\"ic-tooltip\");\n tooltipEl.setAttribute(\"target\", this.el.id);\n tooltipEl.setAttribute(\"label\", typographyEl.textContent);\n tooltipEl.classList.add(\"ic-tooltip-overflow\");\n tooltipEl.setAttribute(\"placement\", \"right\");\n treeContent.appendChild(tooltipEl);\n tooltipEl.appendChild(typographyEl);\n }\n }\n };\n\n private hasRouterSlot(): boolean {\n this.routerSlot = this.el.querySelector('[slot=\"router-item\"]');\n return !!this.routerSlot;\n }\n\n private handleDisplayTooltip = (display: boolean) => {\n const typographyEl: HTMLIcTypographyElement =\n this.el.shadowRoot.querySelector(\".tree-item-label\");\n const tooltip: HTMLIcTooltipElement = typographyEl?.closest(this.TOOLTIP);\n\n tooltip?.displayTooltip(display);\n };\n\n render() {\n const { appearance, disabled, label, selected, size, expanded } = this;\n\n const Component = this.href && !this.disabled ? \"a\" : \"div\";\n\n const attrs = Component == \"a\" && {\n href: this.href,\n hrefLang: this.hreflang,\n referrerPolicy: this.referrerpolicy,\n rel: this.rel,\n target: this.target,\n };\n\n return (\n <Host\n class={{\n [`ic-tree-item-${appearance}`]: true,\n \"ic-tree-item-disabled\": disabled,\n \"ic-tree-item-selected\": !disabled && selected,\n [`ic-tree-item-${size}`]: size !== \"default\",\n \"ic-tree-item-truncate\": this.truncateTreeItem,\n }}\n id={this.treeItemId}\n >\n {this.hasRouterSlot() ? (\n <slot name=\"router-item\" />\n ) : (\n <Component\n class={{\n \"tree-item-content\": true,\n }}\n tabIndex={disabled ? -1 : 0}\n onClick={this.handleTreeItemClicked}\n ref={(el) => (this.treeItemElement = el)}\n aria-disabled={disabled ? \"true\" : \"false\"}\n aria-live=\"polite\"\n {...attrs}\n onFocus={() => this.handleDisplayTooltip(true)}\n onBlur={() => this.handleDisplayTooltip(false)}\n >\n {this.isParent && (\n <span\n class={{\n [\"arrow-dropdown\"]: true,\n [\"tree-item-expanded\"]: expanded,\n }}\n aria-hidden=\"true\"\n innerHTML={arrowDropdown}\n />\n )}\n {isSlotUsed(this.el, \"icon\") && (\n <div class=\"icon-container\">\n <slot name=\"icon\" />\n </div>\n )}\n <ic-typography class=\"tree-item-label\">\n {isSlotUsed(this.el, \"label\") ? <slot name=\"label\" /> : label}\n </ic-typography>\n </Component>\n )}\n {expanded && (\n <div aria-hidden={`${!expanded}`}>\n <slot />\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{h as t,r as e,c as i,H as s,g as a}from"./p-8455d1bb.js";import{d as h,g as n,a as o,y as r,b as l,c,e as d,f as u,h as f}from"./p-33dd24eb.js";import{s as b,k as p,l as m,m as w,r as y,o as g,n as v}from"./p-8ab58daa.js";const k=`<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 x=({focussed:e,today:i,day:s,monthInView:a,onFocusDay:h,onBlurDay:n,onSelectDay:o,selected:r,focussedDayRef:l,inRange:c,showDaysOutsideMonth:d,disableDay:u})=>{const f=()=>{o(s)};const w=()=>{h()};const y=()=>{n()};const g=b(p);const v=b(m);const k=!c||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:y,onFocus:w,ref:t=>{if(e&&t&&l){l(t)}}},(!x||x&&d)&&t("ic-typography",{variant:"subtitle-small",italic:x},s.getDate())))};const D=({size:e,focussedMonth:i,monthInView:s,onSelectMonth:a,onKeyDown:r,focussedMonthRef:l,minDate:c,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 w=!h(new Date(u,b,1),c?o(c):null,d?n(d):null);return t("ic-button",{role:"listitem",class:{"month-button":true,selected:p,focussed:m,disabled:w},"full-width":true,disabled:w,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){l(t)}}},a)})))};const z=({decadeView:e,size:i,focussedYear:s,yearInView:a,onSelectYear:h,onFocusYear:n,onBlurYear:o,onKeyDown:l,minDate:c,maxDate:d,focussedYearRef:u})=>{const f=t=>{const e=t.target;h(Number(e.getAttribute("data-year")))};const b=()=>{n()};const p=()=>{o()};const m=t=>{t.preventDefault()};const w=e[0];const y=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(w,c,d),"data-year":w,tabIndex:-1,variant:"tertiary",onClick:f,onMouseDown:m,"aria-hidden":"true",size:i},`${w-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 h=a===e;const n=s===e;return t("ic-button",{class:{"year-button":true,selected:h,focussed:n},disabled:!r(e,c,d),"data-year":e,tabIndex:n?0:-1,variant:h?"primary":"tertiary",onClick:f,"aria-label":h?"":`select ${e}`,role:"listitem","aria-current":h?"true":"false",onKeyDown:l,onFocus:b,onBlur:p,size:i,ref:t=>{if(n&&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(y,c,d),"data-year":y,tabIndex:-1,variant:"tertiary",onClick:f,onMouseDown:m,"aria-hidden":"true",size:i},`${y}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 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;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;align-items:center;background-color:var(--ic-architectural-white);z-index:var(--ic-z-index-date-picker);box-sizing:border-box;margin-top:var(--ic-space-xxxs);padding:var(--ic-space-xs);animation:fade-in-calendar var(--ic-transition-duration-slow)}:host .calendar-container.show-date-input{border:var(--ic-border-default);border-radius:var(--ic-border-radius);box-shadow:var(--ic-elevation-overlay)}:host .calendar-container.hide-date-input{position:static}: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 P="Dates in the future are not allowed. Please select a date in the past.";const I="Dates in the past are not allowed. Please select a date in the future.";const V="The date you have selected is on a day of the week that is not allowed. Please select another date.";const L=100;const C=360;const T=400;const $=440;const Y=class{constructor(s){e(this,s);this.icChange=i(this,"icChange",7);this.icSelectedDateChange=i(this,"icSelectedDateChange",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.notifyScreenReaderSelectedDate=()=>{const t=b(p);const e=b(m);this.selectedDateInfoEl.textContent=this.selectedDate?`Selected date: ${t[this.selectedDate.getDay()]}, ${this.selectedDate.getDate()} ${e[this.selectedDate.getMonth()]} ${this.selectedDate.getFullYear()}`:"Selected date cleared"};this.setSelectedDate=(t,e=true)=>{if(t===null||!l(t,this.selectedDate)){this.selectedDate=t;this.value=t;if(e){if(this.inputEl){this.inputEl.triggerIcChange(t)}else{if(this.selectedDate){this.setFocussedDate(this.selectedDate)}this.icSelectedDateChange.emit({value:t});if(!this.showDateInput&&this.selectedDateInfoEl){this.notifyScreenReaderSelectedDate()}}}}};this.handleCalendarMouseDown=t=>{const e=t.target;if(e.tagName!=="IC-BUTTON"){t.preventDefault()}};this.handleCalendarClick=t=>{this.clearDialogDescription();t.stopImmediatePropagation()};this.handleDocumentClick=()=>{if(this.showDateInput){this.calendarOpen=false}};this.keyDownHandler=t=>{if(t.key==="Escape"){if(this.calendarOpen){this.closeButtonClickHandler();if(this.inputEl){this.inputEl.setCalendarFocus()}t.stopImmediatePropagation()}}else{this.clearDialogDescription();t.stopImmediatePropagation()}};this.closeButtonClickHandler=()=>{if(this.showDateInput){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()),L)};this.todayButtonKeyDownHandler=t=>{if(t.key==="Tab"&&!t.shiftKey&&this.clearButtonEl.disabled){this.focusFirstElement();t.preventDefault()}};this.clearButtonClickHandler=()=>{this.setSelectedDate(null);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&&(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:k,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=c(o(t),this.startOfWeek);const i=d(n(t),this.startOfWeek);const s=[];let a=e;while(!l(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);if(this.showDateInput){this.calendarOpen=false;if(this.inputEl){this.inputEl.setCalendarFocus()}}};this.handleSelectMonth=t=>{this.moveMonths(t-this.monthInView);setTimeout((()=>{this.monthButtonEl.setFocus();this.monthPickerVisible=false;this.setMonthSelectedLiveRegionText()}),L)};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}),L)}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()),L);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()),L);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 h=Number(a.getDay());if(this.disableDays.includes(h)){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=n(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=n(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()),L)};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()}),L)}}else{this.setDecadeView(Math.floor(t/10)*10)}};this.setDateInputProps=()=>{const t={hideLabel:this.hideLabel,invalidDateMessage:this.invalidDateMessage,label:this.label,showClearButton:true,showCalendarButton:true,value:this.value};if(this.dateFormat!==M){t.dateFormat=this.dateFormat}if(this.disableFuture){t.disableFuture=this.disableFuture;if(this.disableFutureMessage!==P){t.disableFutureMessage=this.disableFutureMessage}}if(this.disablePast){t.disablePast=this.disablePast;if(this.disablePastMessage!==I){t.disablePastMessage=this.disablePastMessage}}if(this.disableDays.length>0){t.disableDays=this.disableDays;if(this.disableDaysMessage!==V){t.disableDaysMessage=this.disableDaysMessage}}if(this.max!==null&&this.max!==""){t.max=this.maxDate}if(this.min!==null&&this.min!==""){t.min=this.minDate}if(this.helperText!==undefined){t.helperText=this.helperText}if(this.hideHelperText!==false){t.hideHelperText=this.hideHelperText}if(this.inputId!==undefined){t.inputId=this.inputId}if(this.name!==undefined){t.name=this.name}if(this.disabled){t.disabled=this.disabled}if(this.required){t.required=this.required}if(this.size!=="default"){t.size=this.size}if(this.validationStatus!==""){t.validationStatus=this.validationStatus}if(this.validationText!==""){t.validationText=this.validationText}return t};this.renderHiddenInput=()=>!this.showDateInput?t("span",{id:this.selectedDateInfoId,class:"sr-only","aria-live":"polite"},t("span",{ref:t=>this.selectedDateInfoEl=t,role:"status"})):"";this.renderCalendar=()=>{const{monthNames:e,size:i,focussedMonth:s,focussedYear:a,monthInView:n,yearInView:o,monthPickerVisible:r,yearPickerVisible:c,orderedDaysOfWeek:d,decadeView:u,minDate:f,maxDate:b,showPickerClearButton:p,showPickerTodayButton:m,dialogDescription:w}=this;let y="";if(r){y=`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{y=`Press Enter or Space to open month picker view or use the arrow keys to change month.`}let g="";if(c){g=`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{g=`Press Enter or Space to open year picker view or use the arrow keys to change the selected year.`}const v="choose date";const k=e&&e[n]?e[n]:"Open month picker";const H=this.yearInView?this.yearInView:"Open year picker";let M=f;if(this.disablePast){const t=new Date(f);t.setDate(f.getDate()-1);M=t}return t("div",null,t("span",{id:"dialog-description",class:"sr-only"},w),t("div",{role:"dialog","aria-modal":"true","aria-label":v,"aria-describedBy":"dialog-description",class:{"calendar-container":true,"show-date-input":this.showDateInput,"hide-date-input":!this.showDateInput,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"},y),t("ic-button",{ref:t=>this.monthButtonEl=t,size:i,class:"month-picker-button","aria-haspopup":"menu","aria-expanded":r?"true":"false","full-width":"true",variant:"tertiary","aria-label":k,"aria-describedby":"select-month-hint",onKeyDown:this.monthButtonKeyDownHandler,onClick:this.monthButtonClickHandler},e[n]),this.nextMonthButton()),t("div",{class:"month-year-nav"},this.previousYearButton(),t("span",{id:"select-year-hint","aria-hidden":"true"},g),t("ic-button",{ref:t=>this.yearButtonEl=t,size:i,class:"year-picker-button","aria-haspopup":"menu","aria-expanded":c?"true":"false","full-width":"true",variant:"tertiary","aria-label":H,"aria-describedby":"select-year-hint",onKeyDown:this.yearButtonKeyDownHandler,onClick:this.yearButtonClickHandler},this.yearInView),this.nextYearButton())),!(r||c)&&t("div",{class:{calendar:true,hidden:r||c},onKeyDown:this.handleCalendarKeyDown},t("div",{class:"weekdays","aria-hidden":"true"},d.map((e=>{const s=i==="small"?e.charAt(0):e;return t("div",{class:"calendar-day-header"},t("ic-typography",{variant:"caption"},s))}))),t("div",{class:"calendar-days-container"},this.currMonthView.map((e=>t(x,{day:e,disableDay:this.disableDays.includes(Number(e.getDay())),today:l(e,this.today),selected:l(e,this.selectedDate),focussed:l(e,this.focussedDate),inRange:h(e,M,b),monthInView:n,onSelectDay:this.handleSelectDay,focussedDayRef:this.setFocussedDayEl,onFocusDay:this.onDayButtonFocusHandler,onBlurDay:this.onDayButtonBlurHandler,showDaysOutsideMonth:this.showDaysOutsideMonth}))))),t("div",{class:{"month-picker-container":true,hidden:!r}},r&&t(D,{size:i,onSelectMonth:this.handleSelectMonth,monthInView:n,focussedMonth:s,onKeyDown:this.monthPickerKeyDownHandler,focussedMonthRef:this.setFocussedMonthEl,minDate:f,maxDate:b,yearInView:o})),t("div",{class:{"year-picker-container":true,hidden:!c}},c&&t(z,{decadeView:u,size:i,focussedYear:a,onSelectYear:this.handleSelectYear,onKeyDown:this.yearPickerKeyDownHandler,onFocusYear:this.onYearButtonFocusHandler,onBlurYear:this.onYearButtonBlurHandler,yearInView:o,minDate:f,maxDate:b,focussedYearRef:this.setFocussedYearEl})),t("div",{class:{"bottom-buttons":true,"no-today":!m}},m&&t("ic-button",{id:"today-button",variant:"tertiary",ref:t=>this.todayButtonEl=t,size:i,"aria-label":"Navigate to current date",onClick:this.todayButtonClickHandler,onKeyDown:this.todayButtonKeyDownHandler,disabled:this.isCurrentMonth()},"Go to today"),p&&t("ic-button",{id:"clear-button","aria-label":"clear selected date",ref:t=>this.clearButtonEl=t,variant:"tertiary",size:i,onClick:this.clearButtonClickHandler,onKeyDown:this.clearButtonKeyDownHandler,disabled:this.value===""||this.value===null||this.value===undefined},"Clear"))),this.renderHiddenInput())};this.calendarOpen=false;this.currMonthView=[];this.currYearPickerView=[];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.hideHelperText=false;this.hideLabel=false;this.inputId=undefined;this.invalidDateMessage="Please enter a valid date.";this.label=undefined;this.max="";this.min="";this.name=undefined;this.openAtDate="";this.required=false;this.showDateInput=true;this.showDaysOutsideMonth=true;this.showPickerClearButton=true;this.showPickerTodayButton=true;this.size="default";this.startOfWeek=w.Monday;this.validationStatus="";this.validationText="";this.value=""}watchDisabledHandler(){y(this.disabled,this.el)}watchDisableFutureHandler(){this.watchMaxHandler()}watchDisablePastHandler(){this.watchMinHandler()}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)}}watchShowDateInputHandler(){if(!this.showDateInput){this.calendarOpen=true}}watchStartOfWeekHandler(){this.orderedDaysOfWeek=this.daysOfWeek.slice(this.startOfWeek).concat(this.daysOfWeek.slice(0,this.startOfWeek));if(this.calendarOpen){this.updateMonthInView()}}watchOpenHandler(){if(this.calendarOpen){if(this.inputEl){let t=T;if(this.size==="small"){t=C}else if(this.size==="large"){t=$}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||!h(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()),L);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()),L)}this.focusDay=true}componentWillLoad(){g([{prop:this.label,propName:"label"}],"Date Picker");this.monthNames=b(m);this.daysOfWeek=b(v);this.watchStartOfWeekHandler();this.watchMaxHandler();this.watchMinHandler();y(this.disabled,this.el);this.selectedDateInfoId=`${this.inputId}-selected-date-info`}componentWillRender(){this.dateInputProps=this.setDateInputProps();if(!this.showDateInput){this.calendarOpen=true}}componentWillUpdate(){this.dateInputProps=this.setDateInputProps()}componentDidLoad(){if(!this.showDateInput&&this.value){this.setSelectedDate(new Date(this.value));this.setFocussedDate(this.selectedDate)}}localCalendarButtonClickHandler(t){this.myCalendarButtonClicked=true;if(!this.calendarOpen){this.setSelectedDate(t.detail.value,false)}this.calendarOpen=!this.calendarOpen}calendarButtonClickHandler(){if(!this.myCalendarButtonClicked&&this.showDateInput){this.calendarOpen=false}this.myCalendarButtonClicked=false}render(){const{calendarOpen:e,dateInputProps:i,keyDownHandler:a,renderCalendar:h,showDateInput:n,size:o}=this;return t(s,{onKeyDown:a,class:o},n&&t("div",{class:"date-input-container"},t("ic-date-input",Object.assign({ref:t=>this.inputEl=t},i))),e&&h())}static get delegatesFocus(){return true}get el(){return a(this)}static get watchers(){return{disabled:["watchDisabledHandler"],disableFuture:["watchDisableFutureHandler"],disablePast:["watchDisablePastHandler"],max:["watchMaxHandler"],min:["watchMinHandler"],showDateInput:["watchShowDateInputHandler"],startOfWeek:["watchStartOfWeekHandler"],calendarOpen:["watchOpenHandler"],focussedDate:["watchFocussedDateHandler"],monthInView:["watchMonthInViewHandler"],yearInView:["watchYearInViewHandler"],yearPickerVisible:["watchYearPickerVisibleHandler"],monthPickerVisible:["watchMonthPickerVisibleHandler"],focussedDayEl:["watchFocussedDayEl"]}}};Y.style=H;export{Y as ic_date_picker};
2
+ //# sourceMappingURL=p-fac387e8.entry.js.map
@@ -0,0 +1 @@
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","notifyScreenReaderSelectedDate","selectedDateInfoEl","textContent","selectedDate","setSelectedDate","emit","dateMatches","value","inputEl","triggerIcChange","setFocussedDate","icSelectedDateChange","showDateInput","handleCalendarMouseDown","event","tagName","handleCalendarClick","clearDialogDescription","stopImmediatePropagation","handleDocumentClick","calendarOpen","keyDownHandler","key","closeButtonClickHandler","setCalendarFocus","focusFirstElement","monthButtonEl","setFocus","focusLastElement","showPickerClearButton","showPickerTodayButton","monthPickerVisible","focussedMonthEl","yearPickerVisible","focussedYearEl","focussedDayEl","focus","focusFocussedDay","monthButtonClickHandler","setAriaLiveRegionText","setMonthSelectedLiveRegionText","yearButtonClickHandler","getDecadeInViewText","setYearSelectedLiveRegionText","todayButtonClickHandler","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","inputProps","hideLabel","invalidDateMessage","label","showClearButton","showCalendarButton","dateFormat","disableFuture","disableFutureMessage","disablePast","disablePastMessage","disableDaysMessage","helperText","hideHelperText","inputId","name","required","validationStatus","validationText","renderHiddenInput","selectedDateInfoId","renderCalendar","orderedDaysOfWeek","monthButtonText","yearButtonText","dialogLabel","monthLabel","yearLabel","minDay","yesterday","above","calendar","dayName","header","charAt","IcWeekDays","Monday","watchDisabledHandler","removeDisabledFalse","watchDisableFutureHandler","watchMaxHandler","watchDisablePastHandler","watchMinHandler","createDate","watchShowDateInputHandler","watchStartOfWeekHandler","concat","watchOpenHandler","pickerHeight","offsetTop","offsetHeight","window","innerHeight","openAt","openAtDate","dialogDesc","document","addEventListener","removeEventListener","watchFocussedDateHandler","previous","watchMonthInViewHandler","watchYearInViewHandler","watchYearPickerVisibleHandler","watchMonthPickerVisibleHandler","watchFocussedDayEl","componentWillLoad","onComponentRequiredPropUndefined","prop","propName","IcShortDayNames","componentWillRender","dateInputProps","componentWillUpdate","componentDidLoad","localCalendarButtonClickHandler","detail","calendarButtonClickHandler","render","Host","Object","assign"],"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 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 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 .calendar-container.show-date-input {\n border: var(--ic-border-default);\n border-radius: var(--ic-border-radius);\n box-shadow: var(--ic-elevation-overlay);\n}\n\n:host .calendar-container.hide-date-input {\n position: static;\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 removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport {\n IcDateFormat,\n IcDateInputMonths,\n IcDayNames,\n IcInformationStatusOrEmpty,\n IcShortDayNames,\n IcSizes,\n IcWeekDays,\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 hideHelperText?: boolean;\n hideLabel?: boolean;\n inputId?: string;\n invalidDateMessage?: 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 showDateInput?: 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 dateInputProps: IcDateInputProps;\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 private selectedDateInfoEl: HTMLSpanElement;\n private selectedDateInfoId: string;\n\n @Element() el: HTMLIcDatePickerElement;\n\n @State() calendarOpen: boolean = false;\n @State() currMonthView: Date[] = [];\n @State() currYearPickerView: number[] = [];\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 @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\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 @Watch(\"disableFuture\")\n watchDisableFutureHandler(): void {\n this.watchMaxHandler();\n }\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 @Watch(\"disablePast\")\n watchDisablePastHandler(): void {\n this.watchMinHandler();\n }\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 * If `true`, the helper text will be visually hidden, but still read out by screenreaders.\n */\n @Prop() hideHelperText: boolean = false;\n\n /**\n * If `true`, the label will be visually hidden, but the required label will still be read out by screen readers.\n */\n @Prop() hideLabel?: boolean = false;\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 text to display as the validation message when an invalid date is entered.\n */\n @Prop() invalidDateMessage?: string = \"Please enter a valid date.\";\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 * @deprecated This prop should not be used anymore. If `false` hides the date input control and just displays the calendar.\n */\n @Prop() showDateInput?: boolean = true;\n\n @Watch(\"showDateInput\")\n watchShowDateInputHandler(): void {\n if (!this.showDateInput) {\n this.calendarOpen = true;\n }\n }\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 @Watch(\"startOfWeek\")\n watchStartOfWeekHandler(): void {\n this.orderedDaysOfWeek = this.daysOfWeek\n .slice(this.startOfWeek)\n .concat(this.daysOfWeek.slice(0, this.startOfWeek));\n if (this.calendarOpen) {\n this.updateMonthInView();\n }\n }\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 /**\n * Emitted when the selected date has changed.\n */\n @Event() icSelectedDateChange: 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\n this.watchStartOfWeekHandler();\n this.watchMaxHandler();\n this.watchMinHandler();\n removeDisabledFalse(this.disabled, this.el);\n\n this.selectedDateInfoId = `${this.inputId}-selected-date-info`;\n }\n\n componentWillRender(): void {\n this.dateInputProps = this.setDateInputProps();\n\n if (!this.showDateInput) {\n this.calendarOpen = true;\n }\n }\n\n componentWillUpdate(): void {\n this.dateInputProps = this.setDateInputProps();\n }\n\n componentDidLoad(): void {\n if (!this.showDateInput && this.value) {\n this.setSelectedDate(new Date(this.value));\n this.setFocussedDate(this.selectedDate);\n }\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\n if (!this.myCalendarButtonClicked && this.showDateInput) {\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 notifyScreenReaderSelectedDate = () => {\n const dayNames = stringEnumToArray(IcDayNames);\n const months = stringEnumToArray(IcDateInputMonths);\n\n this.selectedDateInfoEl.textContent = this.selectedDate\n ? `Selected date: ${\n dayNames[this.selectedDate.getDay()]\n }, ${this.selectedDate.getDate()} ${\n months[this.selectedDate.getMonth()]\n } ${this.selectedDate.getFullYear()}`\n : \"Selected date cleared\";\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\n if (emit) {\n if (this.inputEl) {\n this.inputEl.triggerIcChange(d);\n } else {\n if (this.selectedDate) {\n this.setFocussedDate(this.selectedDate);\n }\n\n this.icSelectedDateChange.emit({ value: d });\n if (!this.showDateInput && this.selectedDateInfoEl) {\n this.notifyScreenReaderSelectedDate();\n }\n }\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 if (this.showDateInput) {\n this.calendarOpen = false;\n }\n };\n\n private keyDownHandler = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n if (this.calendarOpen) {\n this.closeButtonClickHandler();\n if (this.inputEl) {\n this.inputEl.setCalendarFocus();\n }\n event.stopImmediatePropagation();\n }\n } else {\n this.clearDialogDescription();\n event.stopImmediatePropagation();\n }\n };\n\n private closeButtonClickHandler = () => {\n if (this.showDateInput) {\n this.calendarOpen = false;\n }\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);\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 && (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\n if (this.showDateInput) {\n this.calendarOpen = false;\n if (this.inputEl) {\n this.inputEl.setCalendarFocus();\n }\n }\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 = (): IcDateInputProps => {\n const inputProps: IcDateInputProps = {\n hideLabel: this.hideLabel,\n invalidDateMessage: this.invalidDateMessage,\n label: this.label,\n showClearButton: true,\n showCalendarButton: true,\n value: this.value,\n };\n\n if (this.dateFormat !== DEFAULT_DATE_FORMAT) {\n inputProps.dateFormat = this.dateFormat;\n }\n if (this.disableFuture) {\n inputProps.disableFuture = this.disableFuture;\n if (this.disableFutureMessage !== DEFAULT_DISABLE_DATES_FROM_NOW_MSG) {\n inputProps.disableFutureMessage = this.disableFutureMessage;\n }\n }\n if (this.disablePast) {\n inputProps.disablePast = this.disablePast;\n if (this.disablePastMessage !== DEFAULT_DISABLE_DATES_UNTIL_NOW_MSG) {\n inputProps.disablePastMessage = this.disablePastMessage;\n }\n }\n if (this.disableDays.length > 0) {\n inputProps.disableDays = this.disableDays;\n if (this.disableDaysMessage !== DEFAULT_DISABLE_DAYS_MSG) {\n inputProps.disableDaysMessage = this.disableDaysMessage;\n }\n }\n if (this.max !== null && this.max !== \"\") {\n inputProps.max = this.maxDate;\n }\n if (this.min !== null && this.min !== \"\") {\n inputProps.min = this.minDate;\n }\n if (this.helperText !== undefined) {\n inputProps.helperText = this.helperText;\n }\n if (this.hideHelperText !== false) {\n inputProps.hideHelperText = this.hideHelperText;\n }\n if (this.inputId !== undefined) {\n inputProps.inputId = this.inputId;\n }\n if (this.name !== undefined) {\n inputProps.name = this.name;\n }\n if (this.disabled) {\n inputProps.disabled = this.disabled;\n }\n if (this.required) {\n inputProps.required = this.required;\n }\n if (this.size !== \"default\") {\n inputProps.size = this.size;\n }\n if (this.validationStatus !== \"\") {\n inputProps.validationStatus = this.validationStatus;\n }\n if (this.validationText !== \"\") {\n inputProps.validationText = this.validationText;\n }\n return inputProps;\n };\n\n private renderHiddenInput = () =>\n !this.showDateInput ? (\n <span id={this.selectedDateInfoId} class=\"sr-only\" aria-live=\"polite\">\n <span ref={(el) => (this.selectedDateInfoEl = el)} role=\"status\"></span>\n </span>\n ) : (\n \"\"\n );\n\n private renderCalendar = () => {\n const {\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 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 <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 \"show-date-input\": this.showDateInput,\n \"hide-date-input\": !this.showDateInput,\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 = size === \"small\" ? dayName.charAt(0) : dayName;\n return (\n <div class=\"calendar-day-header\">\n <ic-typography variant=\"caption\">{header}</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(Number(day.getDay()))}\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\n {this.renderHiddenInput()}\n </div>\n );\n };\n\n render() {\n const {\n calendarOpen,\n dateInputProps,\n keyDownHandler,\n renderCalendar,\n showDateInput,\n size,\n } = this;\n\n return (\n <Host onKeyDown={keyDownHandler} class={size}>\n {showDateInput && (\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 )}\n\n {calendarOpen && renderCalendar()}\n </Host>\n );\n }\n}\n"],"mappings":"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"}