@ui5/webcomponents 2.25.0-rc.0 → 2.25.0-rc.3

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 (148) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/CarouselTemplate.js +1 -1
  4. package/dist/CarouselTemplate.js.map +1 -1
  5. package/dist/DynamicDateRange.d.ts +11 -0
  6. package/dist/DynamicDateRange.js +12 -0
  7. package/dist/DynamicDateRange.js.map +1 -1
  8. package/dist/DynamicDateRangeInputTemplate.js +1 -1
  9. package/dist/DynamicDateRangeInputTemplate.js.map +1 -1
  10. package/dist/IToolbarArrowNavProvider.d.ts +32 -0
  11. package/dist/IToolbarArrowNavProvider.js +4 -0
  12. package/dist/IToolbarArrowNavProvider.js.map +1 -0
  13. package/dist/Input.d.ts +3 -1
  14. package/dist/Input.js +26 -0
  15. package/dist/Input.js.map +1 -1
  16. package/dist/InputIcon.d.ts +105 -0
  17. package/dist/InputIcon.js +189 -0
  18. package/dist/InputIcon.js.map +1 -0
  19. package/dist/InputIconTemplate.d.ts +2 -0
  20. package/dist/InputIconTemplate.js +13 -0
  21. package/dist/InputIconTemplate.js.map +1 -0
  22. package/dist/ListItemCustom.js.map +1 -1
  23. package/dist/MenuItem.js +1 -1
  24. package/dist/MenuItem.js.map +1 -1
  25. package/dist/MenuSeparator.d.ts +7 -14
  26. package/dist/MenuSeparator.js +5 -24
  27. package/dist/MenuSeparator.js.map +1 -1
  28. package/dist/MenuSeparatorTemplate.js +1 -2
  29. package/dist/MenuSeparatorTemplate.js.map +1 -1
  30. package/dist/MultiComboBoxItem.d.ts +1 -0
  31. package/dist/MultiComboBoxItem.js +7 -1
  32. package/dist/MultiComboBoxItem.js.map +1 -1
  33. package/dist/MultiComboBoxItemTemplate.js +4 -2
  34. package/dist/MultiComboBoxItemTemplate.js.map +1 -1
  35. package/dist/RatingIndicator.d.ts +2 -0
  36. package/dist/RatingIndicator.js +2 -0
  37. package/dist/RatingIndicator.js.map +1 -1
  38. package/dist/SliderTemplate.js +1 -1
  39. package/dist/SliderTemplate.js.map +1 -1
  40. package/dist/Table.js +4 -2
  41. package/dist/Table.js.map +1 -1
  42. package/dist/Toolbar.d.ts +40 -3
  43. package/dist/Toolbar.js +225 -6
  44. package/dist/Toolbar.js.map +1 -1
  45. package/dist/ToolbarItem.d.ts +30 -0
  46. package/dist/ToolbarItem.js +202 -0
  47. package/dist/ToolbarItem.js.map +1 -1
  48. package/dist/ToolbarItemBase.d.ts +10 -0
  49. package/dist/ToolbarItemBase.js +19 -0
  50. package/dist/ToolbarItemBase.js.map +1 -1
  51. package/dist/ToolbarSelect.d.ts +4 -2
  52. package/dist/ToolbarSelect.js +7 -4
  53. package/dist/ToolbarSelect.js.map +1 -1
  54. package/dist/ToolbarSelectOption.d.ts +7 -0
  55. package/dist/ToolbarSelectOption.js +4 -1
  56. package/dist/ToolbarSelectOption.js.map +1 -1
  57. package/dist/ToolbarSelectTemplate.js +1 -1
  58. package/dist/ToolbarSelectTemplate.js.map +1 -1
  59. package/dist/TreeItemBase.js.map +1 -1
  60. package/dist/bundle.esm.js +1 -0
  61. package/dist/bundle.esm.js.map +1 -1
  62. package/dist/css/themes/ColorPalette.css +1 -1
  63. package/dist/css/themes/ComboBox.css +1 -1
  64. package/dist/css/themes/DatePicker.css +1 -1
  65. package/dist/css/themes/DynamicDateRange.css +1 -1
  66. package/dist/css/themes/FileUploader.css +1 -1
  67. package/dist/css/themes/Input.css +1 -1
  68. package/dist/css/themes/InputIcon.css +1 -1
  69. package/dist/css/themes/MultiComboBox.css +1 -1
  70. package/dist/css/themes/MultiComboBoxItem.css +1 -1
  71. package/dist/css/themes/MultiInput.css +1 -1
  72. package/dist/css/themes/Select.css +1 -1
  73. package/dist/css/themes/StepInput.css +1 -1
  74. package/dist/css/themes/TimePicker.css +1 -1
  75. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  76. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +1 -1
  77. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  78. package/dist/custom-elements-internal.json +240 -40
  79. package/dist/custom-elements.json +223 -25
  80. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  81. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  82. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  83. package/dist/generated/themes/ColorPalette.css.d.ts +1 -1
  84. package/dist/generated/themes/ColorPalette.css.js +1 -1
  85. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  86. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  87. package/dist/generated/themes/ComboBox.css.js +1 -1
  88. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  89. package/dist/generated/themes/DatePicker.css.d.ts +1 -1
  90. package/dist/generated/themes/DatePicker.css.js +1 -1
  91. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  92. package/dist/generated/themes/DynamicDateRange.css.d.ts +1 -1
  93. package/dist/generated/themes/DynamicDateRange.css.js +1 -1
  94. package/dist/generated/themes/DynamicDateRange.css.js.map +1 -1
  95. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  96. package/dist/generated/themes/FileUploader.css.js +1 -1
  97. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  98. package/dist/generated/themes/Input.css.d.ts +1 -1
  99. package/dist/generated/themes/Input.css.js +1 -1
  100. package/dist/generated/themes/Input.css.js.map +1 -1
  101. package/dist/generated/themes/InputIcon.css.d.ts +1 -1
  102. package/dist/generated/themes/InputIcon.css.js +1 -1
  103. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  104. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  105. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  106. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  107. package/dist/generated/themes/MultiComboBoxItem.css.d.ts +1 -1
  108. package/dist/generated/themes/MultiComboBoxItem.css.js +1 -1
  109. package/dist/generated/themes/MultiComboBoxItem.css.js.map +1 -1
  110. package/dist/generated/themes/MultiInput.css.d.ts +1 -1
  111. package/dist/generated/themes/MultiInput.css.js +1 -1
  112. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  113. package/dist/generated/themes/Select.css.d.ts +1 -1
  114. package/dist/generated/themes/Select.css.js +1 -1
  115. package/dist/generated/themes/Select.css.js.map +1 -1
  116. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  117. package/dist/generated/themes/StepInput.css.js +1 -1
  118. package/dist/generated/themes/StepInput.css.js.map +1 -1
  119. package/dist/generated/themes/TimePicker.css.d.ts +1 -1
  120. package/dist/generated/themes/TimePicker.css.js +1 -1
  121. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  122. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  123. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  124. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  125. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  126. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +1 -1
  127. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  128. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  129. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  130. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  131. package/dist/vscode.html-custom-data.json +57 -4
  132. package/dist/web-types.json +117 -22
  133. package/package.json +11 -11
  134. package/src/CarouselTemplate.tsx +0 -1
  135. package/src/DynamicDateRangeInputTemplate.tsx +1 -0
  136. package/src/InputIconTemplate.tsx +42 -0
  137. package/src/MenuSeparatorTemplate.tsx +2 -4
  138. package/src/MultiComboBoxItemTemplate.tsx +4 -1
  139. package/src/SliderTemplate.tsx +1 -0
  140. package/src/ToolbarSelectTemplate.tsx +1 -0
  141. package/src/i18n/messagebundle.properties +1 -1
  142. package/src/themes/ColorPalette.css +1 -0
  143. package/src/themes/DatePicker.css +1 -2
  144. package/src/themes/Input.css +4 -0
  145. package/src/themes/InputIcon.css +104 -3
  146. package/src/themes/MultiComboBoxItem.css +2 -0
  147. package/src/themes/sap_horizon/Card-parameters.css +1 -1
  148. package/src/themes/sap_horizon_dark/Card-parameters.css +1 -1
@@ -6,7 +6,7 @@ export default function CarouselTemplate() {
6
6
  return (_jsxs("section", { class: {
7
7
  "ui5-carousel-root": true,
8
8
  [`ui5-carousel-background-${this._backgroundDesign}`]: true,
9
- }, role: "region", "aria-label": this.ariaLabelTxt, "aria-roledescription": this._roleDescription, onFocusIn: this._onfocusin, onKeyDown: this._onkeydown, onMouseOut: this._onmouseout, onMouseOver: this._onmouseover, onTouchStart: this._ontouchstart, onMouseDown: this._onmousedown, children: [_jsxs("div", { class: this.classes.viewport, part: "content", children: [_jsx("div", { role: "list", "aria-label": this._ariaListLabel, class: this.classes.content, style: { transform: `translate3d(${this._isRTL ? "" : "-"}${this._currentPageIndex * (this._itemWidth || 0)}px, 0, 0` }, children: this.items.map((itemInfo, i) => _jsx("div", { "data-sap-focus-ref": this._focusedItemIndex === i ? true : undefined, id: itemInfo.id, class: {
9
+ }, "aria-label": this.ariaLabelTxt, "aria-roledescription": this._roleDescription, onFocusIn: this._onfocusin, onKeyDown: this._onkeydown, onMouseOut: this._onmouseout, onMouseOver: this._onmouseover, onTouchStart: this._ontouchstart, onMouseDown: this._onmousedown, children: [_jsxs("div", { class: this.classes.viewport, part: "content", children: [_jsx("div", { role: "list", "aria-label": this._ariaListLabel, class: this.classes.content, style: { transform: `translate3d(${this._isRTL ? "" : "-"}${this._currentPageIndex * (this._itemWidth || 0)}px, 0, 0` }, children: this.items.map((itemInfo, i) => _jsx("div", { "data-sap-focus-ref": this._focusedItemIndex === i ? true : undefined, id: itemInfo.id, class: {
10
10
  "ui5-carousel-item": true,
11
11
  "ui5-carousel-item--hidden": !itemInfo.visible,
12
12
  }, style: { width: `${this._itemWidth || 0}px` }, part: "item", role: "listitem", "aria-posinset": itemInfo.posinset, "aria-setsize": itemInfo.setsize, "aria-hidden": !itemInfo.visible, tabindex: itemInfo.tabIndex, children: _jsx("slot", { name: itemInfo.item._individualSlot, tabindex: itemInfo.tabIndex }) })) }), this.showArrows.content &&
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselTemplate.js","sourceRoot":"","sources":["../src/CarouselTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type Carousel from \"./Carousel.js\";\nimport Icon from \"./Icon.js\";\nimport slimArrowLeft from \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\n\nexport default function CarouselTemplate(this: Carousel) {\n\treturn (\n\t\t<section\n\t\t\tclass={{\n\t\t\t\t\"ui5-carousel-root\": true,\n\t\t\t\t[`ui5-carousel-background-${this._backgroundDesign}`]: true,\n\t\t\t}}\n\t\t\trole=\"region\"\n\t\t\taria-label={this.ariaLabelTxt}\n\t\t\taria-roledescription={this._roleDescription}\n\t\t\tonFocusIn={this._onfocusin}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonMouseOut={this._onmouseout}\n\t\t\tonMouseOver={this._onmouseover}\n\t\t\tonTouchStart={this._ontouchstart}\n\t\t\tonMouseDown={this._onmousedown}\n\t\t>\n\t\t\t<div class={this.classes.viewport} part=\"content\">\n\t\t\t\t<div role=\"list\" aria-label={this._ariaListLabel} class={this.classes.content} style={{ transform: `translate3d(${this._isRTL ? \"\" : \"-\"}${this._currentPageIndex * (this._itemWidth || 0)}px, 0, 0` }}>\n\t\t\t\t\t{this.items.map((itemInfo, i) =>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tdata-sap-focus-ref={this._focusedItemIndex === i ? true : undefined}\n\t\t\t\t\t\t\tid={itemInfo.id}\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"ui5-carousel-item\": true,\n\t\t\t\t\t\t\t\t\"ui5-carousel-item--hidden\": !itemInfo.visible,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstyle={{ width: `${this._itemWidth || 0}px` }}\n\t\t\t\t\t\t\tpart=\"item\"\n\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\taria-posinset={itemInfo.posinset}\n\t\t\t\t\t\t\taria-setsize={itemInfo.setsize}\n\t\t\t\t\t\t\taria-hidden={!itemInfo.visible}\n\t\t\t\t\t\t\ttabindex= {itemInfo.tabIndex}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<slot name={itemInfo.item._individualSlot} tabindex={itemInfo.tabIndex}></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{this.showArrows.content &&\n\t\t\t\t\t<div class=\"ui5-carousel-navigation-arrows\">\n\t\t\t\t\t\t{arrowBack.call(this)}\n\t\t\t\t\t\t{arrowForward.call(this)}\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t{this.renderNavigation &&\n\t\t\t\t<div class={this.classes.navigation}>\n\t\t\t\t\t{this.showArrows.navigation && arrowBack.call(this)}\n\t\t\t\t\t<div class=\"ui5-carousel-navigation\">\n\t\t\t\t\t\t{ !this.hidePageIndicator && navIndicator.call(this) }\n\t\t\t\t\t</div>\n\t\t\t\t\t{this.showArrows.navigation && arrowForward.call(this)}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</section>\n\t);\n}\n\nfunction arrowBack(this: Carousel) {\n\treturn <Icon name={slimArrowLeft}\n\t\ttabindex={-1}\n\t\tdata-ui5-arrow-back\n\t\ttitle={this.previousPageText}\n\t\tmode=\"Decorative\"\n\t\tclass={{\n\t\t\t\"ui5-carousel-navigation-button\": true,\n\t\t\t\"ui5-carousel-navigation-button--hidden\": !this.hasPrev\n\t\t}}\n\t\tonClick={this._navButtonClick}\n\t/>;\n}\n\nfunction arrowForward(this: Carousel) {\n\treturn <Icon name={slimArrowRight}\n\t\ttabindex={-1}\n\t\tdata-ui5-arrow-forward\n\t\ttitle={this.nextPageText}\n\t\tmode=\"Decorative\"\n\t\tclass={{\n\t\t\t\"ui5-carousel-navigation-button\": true,\n\t\t\t\"ui5-carousel-navigation-button--hidden\": !this.hasNext\n\t\t}}\n\t\tonClick={this._navButtonClick}\n\t/>;\n}\n\nfunction navIndicator(this: Carousel) {\n\treturn this.isPageTypeDots ? this.dots.map(dot =>\n\t\t<div\n\t\t\taria-label={dot.ariaLabel}\n\t\t\trole=\"presentation\"\n\t\t\taria-hidden=\"true\"\n\t\t\tclass={{\n\t\t\t\t\"ui5-carousel-navigation-dot\": true,\n\t\t\t\t\"ui5-carousel-navigation-dot--active\": dot.active\n\t\t\t}}\n\t\t></div>)\n\t\t:\n\t\t<div\n\t\t\tdir=\"auto\"\n\t\t\tclass=\"ui5-carousel-navigation-text\"\n\t\t>{this._currentPageIndex + 1}&nbsp;{this.ofText}&nbsp;{this.pagesCount}</div>;\n}\n"]}
1
+ {"version":3,"file":"CarouselTemplate.js","sourceRoot":"","sources":["../src/CarouselTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type Carousel from \"./Carousel.js\";\nimport Icon from \"./Icon.js\";\nimport slimArrowLeft from \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\n\nexport default function CarouselTemplate(this: Carousel) {\n\treturn (\n\t\t<section\n\t\t\tclass={{\n\t\t\t\t\"ui5-carousel-root\": true,\n\t\t\t\t[`ui5-carousel-background-${this._backgroundDesign}`]: true,\n\t\t\t}}\n\t\t\taria-label={this.ariaLabelTxt}\n\t\t\taria-roledescription={this._roleDescription}\n\t\t\tonFocusIn={this._onfocusin}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonMouseOut={this._onmouseout}\n\t\t\tonMouseOver={this._onmouseover}\n\t\t\tonTouchStart={this._ontouchstart}\n\t\t\tonMouseDown={this._onmousedown}\n\t\t>\n\t\t\t<div class={this.classes.viewport} part=\"content\">\n\t\t\t\t<div role=\"list\" aria-label={this._ariaListLabel} class={this.classes.content} style={{ transform: `translate3d(${this._isRTL ? \"\" : \"-\"}${this._currentPageIndex * (this._itemWidth || 0)}px, 0, 0` }}>\n\t\t\t\t\t{this.items.map((itemInfo, i) =>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tdata-sap-focus-ref={this._focusedItemIndex === i ? true : undefined}\n\t\t\t\t\t\t\tid={itemInfo.id}\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"ui5-carousel-item\": true,\n\t\t\t\t\t\t\t\t\"ui5-carousel-item--hidden\": !itemInfo.visible,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstyle={{ width: `${this._itemWidth || 0}px` }}\n\t\t\t\t\t\t\tpart=\"item\"\n\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\taria-posinset={itemInfo.posinset}\n\t\t\t\t\t\t\taria-setsize={itemInfo.setsize}\n\t\t\t\t\t\t\taria-hidden={!itemInfo.visible}\n\t\t\t\t\t\t\ttabindex= {itemInfo.tabIndex}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<slot name={itemInfo.item._individualSlot} tabindex={itemInfo.tabIndex}></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{this.showArrows.content &&\n\t\t\t\t\t<div class=\"ui5-carousel-navigation-arrows\">\n\t\t\t\t\t\t{arrowBack.call(this)}\n\t\t\t\t\t\t{arrowForward.call(this)}\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t{this.renderNavigation &&\n\t\t\t\t<div class={this.classes.navigation}>\n\t\t\t\t\t{this.showArrows.navigation && arrowBack.call(this)}\n\t\t\t\t\t<div class=\"ui5-carousel-navigation\">\n\t\t\t\t\t\t{ !this.hidePageIndicator && navIndicator.call(this) }\n\t\t\t\t\t</div>\n\t\t\t\t\t{this.showArrows.navigation && arrowForward.call(this)}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</section>\n\t);\n}\n\nfunction arrowBack(this: Carousel) {\n\treturn <Icon name={slimArrowLeft}\n\t\ttabindex={-1}\n\t\tdata-ui5-arrow-back\n\t\ttitle={this.previousPageText}\n\t\tmode=\"Decorative\"\n\t\tclass={{\n\t\t\t\"ui5-carousel-navigation-button\": true,\n\t\t\t\"ui5-carousel-navigation-button--hidden\": !this.hasPrev\n\t\t}}\n\t\tonClick={this._navButtonClick}\n\t/>;\n}\n\nfunction arrowForward(this: Carousel) {\n\treturn <Icon name={slimArrowRight}\n\t\ttabindex={-1}\n\t\tdata-ui5-arrow-forward\n\t\ttitle={this.nextPageText}\n\t\tmode=\"Decorative\"\n\t\tclass={{\n\t\t\t\"ui5-carousel-navigation-button\": true,\n\t\t\t\"ui5-carousel-navigation-button--hidden\": !this.hasNext\n\t\t}}\n\t\tonClick={this._navButtonClick}\n\t/>;\n}\n\nfunction navIndicator(this: Carousel) {\n\treturn this.isPageTypeDots ? this.dots.map(dot =>\n\t\t<div\n\t\t\taria-label={dot.ariaLabel}\n\t\t\trole=\"presentation\"\n\t\t\taria-hidden=\"true\"\n\t\t\tclass={{\n\t\t\t\t\"ui5-carousel-navigation-dot\": true,\n\t\t\t\t\"ui5-carousel-navigation-dot--active\": dot.active\n\t\t\t}}\n\t\t></div>)\n\t\t:\n\t\t<div\n\t\t\tdir=\"auto\"\n\t\t\tclass=\"ui5-carousel-navigation-text\"\n\t\t>{this._currentPageIndex + 1}&nbsp;{this.ofText}&nbsp;{this.pagesCount}</div>;\n}\n"]}
@@ -126,6 +126,13 @@ declare class DynamicDateRange extends UI5Element {
126
126
  * @default false
127
127
  */
128
128
  open: boolean;
129
+ /**
130
+ * Receives id(or many ids) of the elements that label the component.
131
+ * @default undefined
132
+ * @public
133
+ * @since 2.25.0
134
+ */
135
+ accessibleNameRef?: string;
129
136
  _currentOption?: IDynamicDateRangeOption;
130
137
  _lastSelectedOption?: IDynamicDateRangeOption;
131
138
  currentValue?: DynamicDateRangeValue;
@@ -147,6 +154,10 @@ declare class DynamicDateRange extends UI5Element {
147
154
  * @private
148
155
  */
149
156
  get _iconMode(): IconMode.Decorative | IconMode.Interactive;
157
+ get _ariaLabelText(): string;
158
+ get _accInfo(): {
159
+ ariaLabel: string | undefined;
160
+ };
150
161
  get tooltipNavigationIcon(): string;
151
162
  get popoverAccessibleName(): string;
152
163
  _togglePicker(): void;
@@ -15,6 +15,7 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
15
15
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
16
16
  import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
17
17
  import { isF4, isShow } from "@ui5/webcomponents-base/dist/Keys.js";
18
+ import { getAssociatedLabelForTexts, getAllAccessibleNameRefTexts, } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
18
19
  import DynamicDateRangeTemplate from "./DynamicDateRangeTemplate.js";
19
20
  import IconMode from "./types/IconMode.js";
20
21
  import { DYNAMIC_DATE_RANGE_SELECTED_TEXT, DYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT, DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP, DYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME, } from "./generated/i18n/i18n-defaults.js";
@@ -158,6 +159,14 @@ let DynamicDateRange = DynamicDateRange_1 = class DynamicDateRange extends UI5El
158
159
  get _iconMode() {
159
160
  return isDesktop() ? IconMode.Decorative : IconMode.Interactive;
160
161
  }
162
+ get _ariaLabelText() {
163
+ return getAllAccessibleNameRefTexts(this) || getAssociatedLabelForTexts(this) || "";
164
+ }
165
+ get _accInfo() {
166
+ return {
167
+ ariaLabel: this._ariaLabelText || undefined,
168
+ };
169
+ }
161
170
  get tooltipNavigationIcon() {
162
171
  return DynamicDateRange_1.i18nBundle.getText(DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP);
163
172
  }
@@ -349,6 +358,9 @@ __decorate([
349
358
  __decorate([
350
359
  property({ type: Boolean })
351
360
  ], DynamicDateRange.prototype, "open", void 0);
361
+ __decorate([
362
+ property()
363
+ ], DynamicDateRange.prototype, "accessibleNameRef", void 0);
352
364
  __decorate([
353
365
  property({ type: Object })
354
366
  ], DynamicDateRange.prototype, "_currentOption", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicDateRange.js","sourceRoot":"","sources":["../src/DynamicDateRange.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,KAAK,MAAM,kDAAkD,CAAC;AACrE,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AACrE,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAI3C,OAAO,EACN,gCAAgC,EAChC,sCAAsC,EACtC,0CAA0C,EAC1C,0CAA0C,GAC1C,MAAM,mCAAmC,CAAC;AAE3C,gCAAgC;AAChC,OAAO,qEAAqE,CAAC;AAE7E,SAAS;AACT,OAAO,mBAAmB,MAAM,4CAA4C,CAAC;AAC7E,OAAO,0BAA0B,MAAM,mDAAmD,CAAC;AAC3F,OAAO,0BAA0B,MAAM,mDAAmD,CAAC;AAuD3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAsBH,IAAM,gBAAgB,wBAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QAgBC;;;;;WAKG;QAEH,YAAO,GAAG,EAAE,CAAC;QAEb;;;;WAIG;QAEH,SAAI,GAAG,KAAK,CAAC;QAUb,mBAAc,GAAmC,EAAE,CAAC;IAuTrD,CAAC;IA7SA,iBAAiB;QAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACtD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACrB,MAAM,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAChC,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC/B,CAAC,EAAE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,wBAAwB;QACvB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,kCAAkC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,cAAc,GAAmC,EAAE,CAAC;YAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA4E,CAAC;YAE7G,iCAAiC;YACjC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC3B,MAAM,WAAW,GAAG,kBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,WAAW,EAAE,CAAC;oBACjB,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;oBAC1D,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvB,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE;gBACnD,cAAc,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,OAAO,cAAc,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,OAAe;QAC3B,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,kBAAkB;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAE,IAAiB,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACtF,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAoB,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC;IAED,sBAAsB;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/B,OAAO;QACR,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7C,OAAO;QACR,CAAC;QAED,kEAAkE;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAEpH,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAoB,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS;QACZ,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IACjE,CAAC;IAED,IAAI,qBAAqB;QACxB,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,qBAAqB;QACxB,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IACxF,CAAC;IAED,aAAa;QACZ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAClB,CAAC;IACF,CAAC;IAED,aAAa,CAAC,CAAc;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACzE,IAAI,CAAC,YAAY,EAAE,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC9F,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,CAAC;IACF,CAAC;IAED,SAAS,CAAC,QAAiB;QAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAEtF,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,kBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE9D,IAAI,WAAW,EAAE,CAAC;gBACjB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;gBAE9F,IAAI,cAAc,EAAE,CAAC;oBACpB,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACnC,OAAO,cAAc,CAAC;gBACvB,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;gBACvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAEvC,OAAO,YAAY,CAAC;YACrB,CAAC;QACF,CAAC;QAED,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,CAAQ;QACrB,MAAM,KAAK,GAAI,CAAC,CAAC,MAAgB,EAAE,KAAK,CAAC;QAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAElC,OAAO;QACR,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtF,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9F,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAA4B;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAgB,CAAC;IACtE,CAAC;IAED,IAAI,yBAAyB;QAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;IACxC,CAAC;IAED,YAAY;QACX,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACzG,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAEvE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;YAC3B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,CAAC;QAEpC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,MAAM;QACL,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,CAAC;QAEpC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,mBAAmB;QAClB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,CAAC;IACF,CAAC;IAED,cAAc;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAED,IAAI,gBAAgB;QACnB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjE,IAAI,aAAa,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvD,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;gBAC7D,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACvD,OAAO,GAAG,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,gCAAgC,CAAC,KAAK,WAAW,EAAE,CAAC;YACnG,CAAC;QACF,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvC,OAAO,GAAG,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,gCAAgC,CAAC,KAAK,WAAW,EAAE,CAAC;YACnG,CAAC;QACF,CAAC;QAED,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IACpF,CAAC;IAED,qBAAqB,CAAC,CAAc;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,qBAAqB,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAA0B,CAAC;QAE1G,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa;QACpE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,EAAE,MAAM,CAAC;QAC1C,CAAC;QAED,gDAAgD;QAChD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;YACvF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IAED,cAAc,CAAC,CAAgB;QAC9B,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC7B,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC7B,CAAC;QACF,CAAC;IACF,CAAC;IAED,oBAAoB;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QACtB,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,CAAgB;QAChC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,+CAA+C;YACnE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAgB,EAAE,MAAyC;QAC1E,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;;AApTM,+BAAc,GAA4E,IAAI,GAAG,EAAE,AAArF,CAAsF;AA7B3G;IADC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;+CACF;AAS9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDACd;AAQb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8CACf;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACc;AAKzC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDACU;AAOrC;IADC,KAAK,CAAC,aAAa,CAAC;gDACN;AAGf;IADC,KAAK,CAAC,YAAY,CAAC;+CACP;AA3CN;IADN,IAAI,CAAC,oBAAoB,CAAC;0CACG;AANzB,gBAAgB;IArBrB,aAAa,CAAC;QACd,GAAG,EAAE,wBAAwB;QAC7B,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,wBAAwB;QAClC,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE;YACP,mBAAmB;YACnB,0BAA0B;YAC1B,0BAA0B;SAC1B;KACD,CAAC;IAEF;;;OAGG;;IACF,KAAK,CAAC,QAAQ,EAAE;QAChB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;KAChB,CAAC;GACI,gBAAgB,CAgWrB;AAED,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAE1B,eAAe,gBAAgB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport type { JsxTemplate } from \"@ui5/webcomponents-base/dist/index.js\";\nimport { isF4, isShow } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport DynamicDateRangeTemplate from \"./DynamicDateRangeTemplate.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport type Input from \"./Input.js\";\nimport type List from \"./List.js\";\nimport type ListItem from \"./ListItem.js\";\nimport {\n\tDYNAMIC_DATE_RANGE_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP,\n\tDYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// default calendar for bundling\nimport \"@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js\";\n\n// Styles\nimport dynamicDateRangeCss from \"./generated/themes/DynamicDateRange.css.js\";\nimport dynamicDateRangePopoverCss from \"./generated/themes/DynamicDateRangePopover.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\n\ntype DynamicDateRangeValue = {\n\t/**\n\t * The key of the option.\n\t * @default \"\"\n\t * @public\n\t */\n\toperator: string;\n\n\t/**\n\t * Values of the dynamic date range.\n\t * @default []\n\t * @public\n\t */\n\tvalues?: Array<Date> | Array<number>;\n}\n\n/**\n * Represents a dynamic date range option used by the `ui5-dynamic-date-range` component.\n *\n * Represents a dynamic date range option used for handling dynamic date ranges.\n * This interface defines the structure and behavior required for implementing\n * dynamic date range options, including formatting, parsing, validation, and\n * conversion of date range values.\n *\n * * Properties:\n * - `icon`: The icon associated with the dynamic date range option, typically used for UI representation.\n * - `operator`: A unique operator identifying the dynamic date range option.\n * - `text`: The display text for the dynamic date range option.\n * - `template` (optional): A JSX template for rendering the dynamic date range option.\n *\n * Methods:\n * - `format(value: DynamicDateRangeValue): string`: Formats the given dynamic date range value into a string representation.\n * - `parse(value: string): DynamicDateRangeValue | undefined`: Parses a string into a dynamic date range value.\n * - `toDates(value: DynamicDateRangeValue): Array<Date>`: Converts a dynamic date range value into an array of `Date` objects.\n * - `handleSelectionChange?(event: CustomEvent): DynamicDateRangeValue | undefined`: (Optional) Handles selection changes in the UI of the dynamic date range option.\n * - `isValidString(value: string): boolean`: Validates whether a given string is a valid representation of the dynamic date range value.\n *\n * @public\n * @since 2.11.0\n */\ninterface IDynamicDateRangeOption {\n\ticon: string;\n\toperator: string;\n\ttext: string;\n\tformat: (value: DynamicDateRangeValue) => string;\n\tparse: (value: string) => DynamicDateRangeValue | undefined;\n\ttoDates: (value: DynamicDateRangeValue) => Array<Date>;\n\thandleSelectionChange?: (event: CustomEvent, value: DynamicDateRangeValue | undefined) => DynamicDateRangeValue | undefined;\n\ttemplate?: JsxTemplate;\n\tisValidString: (value: string) => boolean;\n\tresetState?: () => void;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., \"Today\", \"Yesterday\", etc.).\n * It allows users to select a date range from a predefined set of options or enter custom dates.\n *\n * ### Usage\n *\n * The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.\n * It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.\n * Every option should be registered using the `DynamicDateRange.register` method.\n *\n * If needed, you can also create a range of dates based on specific option using the `toDates` method.\n *\n * ### Standard Options\n *\n * The component comes with a set of standard options, including:\n * - \"TODAY\" - Represents the current date. An example value is `{ operator: \"TODAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Today.js\";`\n * - \"YESTERDAY\" - Represents the previous date. An example value is `{ operator: \"YESTERDAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js\";`\n * - \"TOMORROW\" - Represents the next date. An example value is `{ operator: \"TOMORROW\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js\";`\n * - \"DATE\" - Represents a single date. An example value is `{ operator: \"DATE\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js\";`\n * - \"DATERANGE\" - Represents a range of dates. An example value is `{ operator: \"DATERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js\";`\n * - \"DATETIMERANGE\" - Represents a range of dates with times. An example value is `{ operator: \"DATETIMERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateTimeRange.js\";`\n * - \"FROMDATETIME\" - Represents a range from date and time. An example value is `{ operator: \"FROMDATETIME\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/FromDateTime.js\";`\n * - \"TODATETIME\" - Represents a range to date and time. An example value is `{ operator: \"TODATETIME\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/ToDateTime.js\";`\n * - \"LASTDAYS\" - Represents Last X Days from today. An example value is `{ operator: \"LASTDAYS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTWEEKS\" - Represents Last X Weeks from today. An example value is `{ operator: \"LASTWEEKS\", values: [3]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTMONTHS\" - Represents Last X Months from today. An example value is `{ operator: \"LASTMONTHS\", values: [6]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTQUARTERS\" - Represents Last X Quarters from today. An example value is `{ operator: \"LASTQUARTERS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTYEARS\" - Represents Last X Years from today. An example value is `{ operator: \"LASTYEARS\", values: [1]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"NEXTDAYS\" - Represents Next X Days from today. An example value is `{ operator: \"NEXTDAYS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTWEEKS\" - Represents Next X Weeks from today. An example value is `{ operator: \"NEXTWEEKS\", values: [3]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTMONTHS\" - Represents Next X Months from today. An example value is `{ operator: \"NEXTMONTHS\", values: [6]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTQUARTERS\" - Represents Next X Quarters from today. An example value is `{ operator: \"NEXTQUARTERS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTYEARS\" - Represents Next X Years from today. An example value is `{ operator: \"NEXTYEARS\", values: [1]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/DynamicDateRange.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @public\n * @since 2.11.0\n */\n@customElement({\n\ttag: \"ui5-dynamic-date-range\",\n\tlanguageAware: true,\n\tcldr: true,\n\ttemplate: DynamicDateRangeTemplate,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tdynamicDateRangeCss,\n\t\tResponsivePopoverCommonCss,\n\t\tdynamicDateRangePopoverCss,\n\t],\n})\n\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout or a value is selected in the popover.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass DynamicDateRange extends UI5Element {\n\teventDetails!: {\n\t\tchange: void,\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t/**\n\t * Defines the value object.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ noAttribute: true })\n\tvalue?: DynamicDateRangeValue;\n\n\t/**\n\t * Defines the options listed as a string, separated by commas and using capital case.\n\t * Example: \"TODAY, YESTERDAY, DATERANGE\"\n\t * @public\n\t * @default \"\"\n\t */\n\t@property({ type: String })\n\toptions = \"\";\n\n\t/**\n\t * Defines the open or closed state of the popover.\n\t * @private\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@property({ type: Object })\n\t_currentOption?: IDynamicDateRangeOption;\n\n\t_lastSelectedOption?: IDynamicDateRangeOption;\n\n\t@property({ type: Object })\n\tcurrentValue?: DynamicDateRangeValue;\n\n\toptionsObjects: Array<IDynamicDateRangeOption> = [];\n\n\tstatic optionsClasses: Map<string, new (operators?: Array<string>) => IDynamicDateRangeOption> = new Map();\n\n\t@query(\"[ui5-input]\")\n\t_input?: Input;\n\n\t@query(\"[ui5-list]\")\n\t_list?: List;\n\n\tonBeforeRendering() {\n\t\tthis.optionsObjects = this._createNormalizedOptions();\n\t\tthis._focusSelectedItem();\n\t}\n\n\tasync onAfterRendering() {\n\t\tawait renderFinished().then(() => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._focusLastSelectedItem();\n\t\t\t}, 0);\n\t\t});\n\t}\n\n\t/**\n\t * Creates and normalizes options from the options string\n\t */\n\t_createNormalizedOptions(): Array<IDynamicDateRangeOption> {\n\t\tif (!this.optionsObjects.length) { // initialize options on first use\n\t\t\tconst optionKeys = this.splitOptions(this.options).filter(Boolean);\n\t\t\tconst createdOptions: Array<IDynamicDateRangeOption> = [];\n\t\t\tconst classToOperators = new Map<new(operators?: Array<string>) => IDynamicDateRangeOption, Array<string>>();\n\n\t\t\t// Group operators by their class\n\t\t\toptionKeys.forEach(option => {\n\t\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(option);\n\t\t\t\tif (OptionClass) {\n\t\t\t\t\tconst operators = classToOperators.get(OptionClass) || [];\n\t\t\t\t\toperators.push(option);\n\t\t\t\t\tclassToOperators.set(OptionClass, operators);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tclassToOperators.forEach((operators, OptionClass) => {\n\t\t\t\tcreatedOptions.push(new OptionClass(operators));\n\t\t\t});\n\n\t\t\treturn createdOptions;\n\t\t}\n\t\treturn this.optionsObjects;\n\t}\n\n\tsplitOptions(options: string): Array<string> {\n\t\treturn options.split(\",\").map(s => s.trim());\n\t}\n\n\t_focusSelectedItem() {\n\t\tif (!this.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listItem = this._list?.items.find(item => (item as ListItem).selected === true);\n\t\tif (listItem) {\n\t\t\tthis._list?.focusItem(listItem as ListItem);\n\t\t}\n\t}\n\n\t_focusLastSelectedItem() {\n\t\tif (!this._lastSelectedOption) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure the list exists and has items\n\t\tif (!this._list || !this._list.items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the index of the last selected option in the options array\n\t\tconst optionIndex = this.optionsObjects.findIndex(option => option.operator === this._lastSelectedOption?.operator);\n\n\t\tif (optionIndex >= 0 && optionIndex < this._list.items.length) {\n\t\t\tconst listItem = this._list.items[optionIndex];\n\t\t\tthis._list.focusItem(listItem as ListItem);\n\t\t}\n\t}\n\n\t/**\n\t * Defines whether the value help icon is hidden\n\t * @private\n\t */\n\tget _iconMode() {\n\t\treturn isDesktop() ? IconMode.Decorative : IconMode.Interactive;\n\t}\n\n\tget tooltipNavigationIcon() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP);\n\t}\n\n\tget popoverAccessibleName() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME);\n\t}\n\n\t_togglePicker(): void {\n\t\tif (this.open) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.open = true;\n\t\t}\n\t}\n\n\t_selectOption(e: CustomEvent): void {\n\t\tthis._currentOption = this.optionsObjects.find(option => option.text === e.detail.item.textContent);\n\t\tthis._lastSelectedOption = this._currentOption;\n\n\t\tif (!this._currentOption?.template) {\n\t\t\tthis.currentValue = this._currentOption?.parse(this._currentOption.text);\n\t\t\tthis._submitValue();\n\t\t} else if (!this.currentValue || this.currentValue.operator !== this._currentOption.operator) {\n\t\t\tthis.currentValue = undefined;\n\t\t}\n\n\t\tif (this._currentOption?.operator === this.value?.operator) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tgetOption(operator?: string) {\n\t\tif (!operator) {\n\t\t\treturn this._currentOption;\n\t\t}\n\n\t\tconst resultOption = this.optionsObjects.find(option => option.operator === operator);\n\n\t\tif (!resultOption) {\n\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(operator);\n\n\t\t\tif (OptionClass) {\n\t\t\t\tconst existingOption = this.optionsObjects.find(option => option.constructor === OptionClass);\n\n\t\t\t\tif (existingOption) {\n\t\t\t\t\texistingOption.operator = operator;\n\t\t\t\t\treturn existingOption;\n\t\t\t\t}\n\n\t\t\t\tconst optionObject = new OptionClass();\n\t\t\t\tthis.optionsObjects.push(optionObject);\n\n\t\t\t\treturn optionObject;\n\t\t\t}\n\t\t}\n\n\t\treturn resultOption;\n\t}\n\n\tonInputChange(e: Event): void {\n\t\tconst value = (e.target as Input)?.value;\n\n\t\tif (!value) {\n\t\t\tthis.value = undefined;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentOption = this.optionsObjects.find(option => option.isValidString(value));\n\n\t\tthis.value = currentOption ? this.getOption(currentOption.operator)?.parse(value) : undefined;\n\n\t\tif (this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\t}\n\n\tonButtonBackClick() {\n\t\tthis._currentOption = undefined;\n\t}\n\n\t/**\n\t * Converts a `value` into concrete `startDate` and `endDate` JavaScript `Date` objects.\n\t *\n\t * @public\n\t * @param value The option to convert into an array of date ranges\n\t * @returns An array of two `Date` objects representing the start and end dates.\n\t */\n\ttoDates(value: DynamicDateRangeValue): Array<Date> {\n\t\treturn this.getOption(value.operator)?.toDates(value) as Array<Date>;\n\t}\n\n\tget _hasCurrentOptionTemplate(): boolean {\n\t\treturn !!this._currentOption?.template;\n\t}\n\n\t_submitValue() {\n\t\tconst valueToSubmit = this.currentValue || { operator: this._currentOption?.operator || \"\", values: [] };\n\t\tconst displayString = this._currentOption?.format(valueToSubmit) || \"\";\n\n\t\tif (this._input) {\n\t\t\tthis._input.value = displayString;\n\t\t}\n\n\t\tif (!this._currentOption || !valueToSubmit.operator) {\n\t\t\tthis.value = undefined;\n\t\t} else if (this._currentOption.isValidString(displayString)) {\n\t\t\tthis.value = valueToSubmit;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t} else {\n\t\t\tthis.value = undefined;\n\t\t}\n\n\t\tthis._currentOption?.resetState?.();\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\t_close() {\n\t\tthis._currentOption?.resetState?.();\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\tonPopoverBeforeOpen() {\n\t\tif (this.currentValue !== this.value) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tonPopoverClose() {\n\t\tthis._close();\n\t}\n\n\tget currentValueText() {\n\t\tif (this.currentValue) {\n\t\t\tconst correctOption = this.getOption(this.currentValue.operator);\n\t\t\tif (correctOption) {\n\t\t\t\tconst dates = correctOption.toDates(this.currentValue);\n\t\t\t\tconst displayValue = { ...this.currentValue, values: dates };\n\t\t\t\tconst displayText = correctOption.format(displayValue);\n\t\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${displayText}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this._currentOption) {\n\t\t\tconst emptyValue = { operator: this._currentOption.operator, values: [] };\n\t\t\tconst displayText = this._currentOption.format(emptyValue);\n\t\t\tif (displayText && displayText.trim()) {\n\t\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${displayText}`;\n\t\t\t}\n\t\t}\n\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT);\n\t}\n\n\thandleSelectionChange(e: CustomEvent) {\n\t\tconst value = this._currentOption?.handleSelectionChange?.(e, this.currentValue) as DynamicDateRangeValue;\n\n\t\tthis.currentValue = JSON.parse(JSON.stringify(value)); // deep clone\n\t\tif (this.currentValue) {\n\t\t\tthis.currentValue.values = value?.values;\n\t\t}\n\n\t\t// Update _currentOption if the operator changed\n\t\tif (this.currentValue && this.currentValue.operator !== this._currentOption?.operator) {\n\t\t\tthis._currentOption = this.getOption(this.currentValue.operator);\n\t\t}\n\t}\n\n\tonInputKeyDown(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault();\n\t\t\tif (this.open) {\n\t\t\t\tif (!isF4(e)) {\n\t\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t}\n\t\t}\n\t}\n\n\t_toggleAndFocusInput() {\n\t\tthis._togglePicker();\n\t\tif (this.open) {\n\t\t\tthis._input?.focus();\n\t\t}\n\t}\n\n\tonKeyDownPopover(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault(); // Prevent scroll on Alt/Option + Arrow Up/Down\n\t\t\tthis._toggleAndFocusInput();\n\t\t}\n\t}\n\n\t/**\n\t * Registers a new dynamic date range option with a unique key.\n\t *\n\t * Example:\n\t * DynamicDateRange.register(\"LASTWEEK\", LastWeek);\n\t */\n\tstatic register(operator: string, option: new () => IDynamicDateRangeOption): void {\n\t\toperator = operator.toUpperCase();\n\n\t\tif (!this.optionsClasses.has(operator)) {\n\t\t\tthis.optionsClasses.set(operator, option);\n\t\t}\n\t}\n\n\tstatic getOptionClass(operator: string): (new () => IDynamicDateRangeOption) | undefined {\n\t\treturn this.optionsClasses.get(operator);\n\t}\n}\n\nDynamicDateRange.define();\n\nexport default DynamicDateRange;\n\nexport type {\n\tDynamicDateRangeValue,\n\tIDynamicDateRangeOption,\n};\n"]}
1
+ {"version":3,"file":"DynamicDateRange.js","sourceRoot":"","sources":["../src/DynamicDateRange.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport query from \"@ui5/webcomponents-base/dist/decorators/query.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport type { JsxTemplate } from \"@ui5/webcomponents-base/dist/index.js\";\nimport { isF4, isShow } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n\tgetAssociatedLabelForTexts,\n\tgetAllAccessibleNameRefTexts,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport DynamicDateRangeTemplate from \"./DynamicDateRangeTemplate.js\";\nimport IconMode from \"./types/IconMode.js\";\nimport type Input from \"./Input.js\";\nimport type List from \"./List.js\";\nimport type ListItem from \"./ListItem.js\";\nimport {\n\tDYNAMIC_DATE_RANGE_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT,\n\tDYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP,\n\tDYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// default calendar for bundling\nimport \"@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js\";\n\n// Styles\nimport dynamicDateRangeCss from \"./generated/themes/DynamicDateRange.css.js\";\nimport dynamicDateRangePopoverCss from \"./generated/themes/DynamicDateRangePopover.css.js\";\nimport ResponsivePopoverCommonCss from \"./generated/themes/ResponsivePopoverCommon.css.js\";\n\ntype DynamicDateRangeValue = {\n\t/**\n\t * The key of the option.\n\t * @default \"\"\n\t * @public\n\t */\n\toperator: string;\n\n\t/**\n\t * Values of the dynamic date range.\n\t * @default []\n\t * @public\n\t */\n\tvalues?: Array<Date> | Array<number>;\n}\n\n/**\n * Represents a dynamic date range option used by the `ui5-dynamic-date-range` component.\n *\n * Represents a dynamic date range option used for handling dynamic date ranges.\n * This interface defines the structure and behavior required for implementing\n * dynamic date range options, including formatting, parsing, validation, and\n * conversion of date range values.\n *\n * * Properties:\n * - `icon`: The icon associated with the dynamic date range option, typically used for UI representation.\n * - `operator`: A unique operator identifying the dynamic date range option.\n * - `text`: The display text for the dynamic date range option.\n * - `template` (optional): A JSX template for rendering the dynamic date range option.\n *\n * Methods:\n * - `format(value: DynamicDateRangeValue): string`: Formats the given dynamic date range value into a string representation.\n * - `parse(value: string): DynamicDateRangeValue | undefined`: Parses a string into a dynamic date range value.\n * - `toDates(value: DynamicDateRangeValue): Array<Date>`: Converts a dynamic date range value into an array of `Date` objects.\n * - `handleSelectionChange?(event: CustomEvent): DynamicDateRangeValue | undefined`: (Optional) Handles selection changes in the UI of the dynamic date range option.\n * - `isValidString(value: string): boolean`: Validates whether a given string is a valid representation of the dynamic date range value.\n *\n * @public\n * @since 2.11.0\n */\ninterface IDynamicDateRangeOption {\n\ticon: string;\n\toperator: string;\n\ttext: string;\n\tformat: (value: DynamicDateRangeValue) => string;\n\tparse: (value: string) => DynamicDateRangeValue | undefined;\n\ttoDates: (value: DynamicDateRangeValue) => Array<Date>;\n\thandleSelectionChange?: (event: CustomEvent, value: DynamicDateRangeValue | undefined) => DynamicDateRangeValue | undefined;\n\ttemplate?: JsxTemplate;\n\tisValidString: (value: string) => boolean;\n\tresetState?: () => void;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-dynamic-date-range` component provides a flexible interface to define date ranges using a combination of absolute dates, relative intervals, and preset ranges (e.g., \"Today\", \"Yesterday\", etc.).\n * It allows users to select a date range from a predefined set of options or enter custom dates.\n *\n * ### Usage\n *\n * The component is typically used in scenarios where users need to filter data based on date ranges, such as in reports, dashboards, or data analysis tools.\n * It can be used with the predefined options or extended with custom options to suit specific requirements. You can create your own options by extending the `IDynamicDateRangeOption` interface.\n * Every option should be registered using the `DynamicDateRange.register` method.\n *\n * If needed, you can also create a range of dates based on specific option using the `toDates` method.\n *\n * ### Standard Options\n *\n * The component comes with a set of standard options, including:\n * - \"TODAY\" - Represents the current date. An example value is `{ operator: \"TODAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Today.js\";`\n * - \"YESTERDAY\" - Represents the previous date. An example value is `{ operator: \"YESTERDAY\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Yesterday.js\";`\n * - \"TOMORROW\" - Represents the next date. An example value is `{ operator: \"TOMORROW\"}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/Tomorrow.js\";`\n * - \"DATE\" - Represents a single date. An example value is `{ operator: \"DATE\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/SingleDate.js\";`\n * - \"DATERANGE\" - Represents a range of dates. An example value is `{ operator: \"DATERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateRange.js\";`\n * - \"DATETIMERANGE\" - Represents a range of dates with times. An example value is `{ operator: \"DATETIMERANGE\", values: [new Date(), new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/DateTimeRange.js\";`\n * - \"FROMDATETIME\" - Represents a range from date and time. An example value is `{ operator: \"FROMDATETIME\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/FromDateTime.js\";`\n * - \"TODATETIME\" - Represents a range to date and time. An example value is `{ operator: \"TODATETIME\", values: [new Date()]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/ToDateTime.js\";`\n * - \"LASTDAYS\" - Represents Last X Days from today. An example value is `{ operator: \"LASTDAYS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTWEEKS\" - Represents Last X Weeks from today. An example value is `{ operator: \"LASTWEEKS\", values: [3]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTMONTHS\" - Represents Last X Months from today. An example value is `{ operator: \"LASTMONTHS\", values: [6]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTQUARTERS\" - Represents Last X Quarters from today. An example value is `{ operator: \"LASTQUARTERS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"LASTYEARS\" - Represents Last X Years from today. An example value is `{ operator: \"LASTYEARS\", values: [1]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/LastOptions.js\";`\n * - \"NEXTDAYS\" - Represents Next X Days from today. An example value is `{ operator: \"NEXTDAYS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTWEEKS\" - Represents Next X Weeks from today. An example value is `{ operator: \"NEXTWEEKS\", values: [3]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTMONTHS\" - Represents Next X Months from today. An example value is `{ operator: \"NEXTMONTHS\", values: [6]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTQUARTERS\" - Represents Next X Quarters from today. An example value is `{ operator: \"NEXTQUARTERS\", values: [2]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n * - \"NEXTYEARS\" - Represents Next X Years from today. An example value is `{ operator: \"NEXTYEARS\", values: [1]}`. Import: `import \"@ui5/webcomponents/dist/dynamic-date-range-options/NextOptions.js\";`\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/DynamicDateRange.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @public\n * @since 2.11.0\n */\n@customElement({\n\ttag: \"ui5-dynamic-date-range\",\n\tlanguageAware: true,\n\tcldr: true,\n\ttemplate: DynamicDateRangeTemplate,\n\trenderer: jsxRenderer,\n\tstyles: [\n\t\tdynamicDateRangeCss,\n\t\tResponsivePopoverCommonCss,\n\t\tdynamicDateRangePopoverCss,\n\t],\n})\n\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout or a value is selected in the popover.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass DynamicDateRange extends UI5Element {\n\teventDetails!: {\n\t\tchange: void,\n\t}\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t/**\n\t * Defines the value object.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ noAttribute: true })\n\tvalue?: DynamicDateRangeValue;\n\n\t/**\n\t * Defines the options listed as a string, separated by commas and using capital case.\n\t * Example: \"TODAY, YESTERDAY, DATERANGE\"\n\t * @public\n\t * @default \"\"\n\t */\n\t@property({ type: String })\n\toptions = \"\";\n\n\t/**\n\t * Defines the open or closed state of the popover.\n\t * @private\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Receives id(or many ids) of the elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.25.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t@property({ type: Object })\n\t_currentOption?: IDynamicDateRangeOption;\n\n\t_lastSelectedOption?: IDynamicDateRangeOption;\n\n\t@property({ type: Object })\n\tcurrentValue?: DynamicDateRangeValue;\n\n\toptionsObjects: Array<IDynamicDateRangeOption> = [];\n\n\tstatic optionsClasses: Map<string, new (operators?: Array<string>) => IDynamicDateRangeOption> = new Map();\n\n\t@query(\"[ui5-input]\")\n\t_input?: Input;\n\n\t@query(\"[ui5-list]\")\n\t_list?: List;\n\n\tonBeforeRendering() {\n\t\tthis.optionsObjects = this._createNormalizedOptions();\n\t\tthis._focusSelectedItem();\n\t}\n\n\tasync onAfterRendering() {\n\t\tawait renderFinished().then(() => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._focusLastSelectedItem();\n\t\t\t}, 0);\n\t\t});\n\t}\n\n\t/**\n\t * Creates and normalizes options from the options string\n\t */\n\t_createNormalizedOptions(): Array<IDynamicDateRangeOption> {\n\t\tif (!this.optionsObjects.length) { // initialize options on first use\n\t\t\tconst optionKeys = this.splitOptions(this.options).filter(Boolean);\n\t\t\tconst createdOptions: Array<IDynamicDateRangeOption> = [];\n\t\t\tconst classToOperators = new Map<new(operators?: Array<string>) => IDynamicDateRangeOption, Array<string>>();\n\n\t\t\t// Group operators by their class\n\t\t\toptionKeys.forEach(option => {\n\t\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(option);\n\t\t\t\tif (OptionClass) {\n\t\t\t\t\tconst operators = classToOperators.get(OptionClass) || [];\n\t\t\t\t\toperators.push(option);\n\t\t\t\t\tclassToOperators.set(OptionClass, operators);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tclassToOperators.forEach((operators, OptionClass) => {\n\t\t\t\tcreatedOptions.push(new OptionClass(operators));\n\t\t\t});\n\n\t\t\treturn createdOptions;\n\t\t}\n\t\treturn this.optionsObjects;\n\t}\n\n\tsplitOptions(options: string): Array<string> {\n\t\treturn options.split(\",\").map(s => s.trim());\n\t}\n\n\t_focusSelectedItem() {\n\t\tif (!this.value) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst listItem = this._list?.items.find(item => (item as ListItem).selected === true);\n\t\tif (listItem) {\n\t\t\tthis._list?.focusItem(listItem as ListItem);\n\t\t}\n\t}\n\n\t_focusLastSelectedItem() {\n\t\tif (!this._lastSelectedOption) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure the list exists and has items\n\t\tif (!this._list || !this._list.items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the index of the last selected option in the options array\n\t\tconst optionIndex = this.optionsObjects.findIndex(option => option.operator === this._lastSelectedOption?.operator);\n\n\t\tif (optionIndex >= 0 && optionIndex < this._list.items.length) {\n\t\t\tconst listItem = this._list.items[optionIndex];\n\t\t\tthis._list.focusItem(listItem as ListItem);\n\t\t}\n\t}\n\n\t/**\n\t * Defines whether the value help icon is hidden\n\t * @private\n\t */\n\tget _iconMode() {\n\t\treturn isDesktop() ? IconMode.Decorative : IconMode.Interactive;\n\t}\n\n\tget _ariaLabelText() {\n\t\treturn getAllAccessibleNameRefTexts(this) || getAssociatedLabelForTexts(this) || \"\";\n\t}\n\n\tget _accInfo() {\n\t\treturn {\n\t\t\tariaLabel: this._ariaLabelText || undefined,\n\t\t};\n\t}\n\n\tget tooltipNavigationIcon() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_NAVIGATION_ICON_TOOLTIP);\n\t}\n\n\tget popoverAccessibleName() {\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_POPOVER_ACCESSIBLE_NAME);\n\t}\n\n\t_togglePicker(): void {\n\t\tif (this.open) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.open = true;\n\t\t}\n\t}\n\n\t_selectOption(e: CustomEvent): void {\n\t\tthis._currentOption = this.optionsObjects.find(option => option.text === e.detail.item.textContent);\n\t\tthis._lastSelectedOption = this._currentOption;\n\n\t\tif (!this._currentOption?.template) {\n\t\t\tthis.currentValue = this._currentOption?.parse(this._currentOption.text);\n\t\t\tthis._submitValue();\n\t\t} else if (!this.currentValue || this.currentValue.operator !== this._currentOption.operator) {\n\t\t\tthis.currentValue = undefined;\n\t\t}\n\n\t\tif (this._currentOption?.operator === this.value?.operator) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tgetOption(operator?: string) {\n\t\tif (!operator) {\n\t\t\treturn this._currentOption;\n\t\t}\n\n\t\tconst resultOption = this.optionsObjects.find(option => option.operator === operator);\n\n\t\tif (!resultOption) {\n\t\t\tconst OptionClass = DynamicDateRange.getOptionClass(operator);\n\n\t\t\tif (OptionClass) {\n\t\t\t\tconst existingOption = this.optionsObjects.find(option => option.constructor === OptionClass);\n\n\t\t\t\tif (existingOption) {\n\t\t\t\t\texistingOption.operator = operator;\n\t\t\t\t\treturn existingOption;\n\t\t\t\t}\n\n\t\t\t\tconst optionObject = new OptionClass();\n\t\t\t\tthis.optionsObjects.push(optionObject);\n\n\t\t\t\treturn optionObject;\n\t\t\t}\n\t\t}\n\n\t\treturn resultOption;\n\t}\n\n\tonInputChange(e: Event): void {\n\t\tconst value = (e.target as Input)?.value;\n\n\t\tif (!value) {\n\t\t\tthis.value = undefined;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentOption = this.optionsObjects.find(option => option.isValidString(value));\n\n\t\tthis.value = currentOption ? this.getOption(currentOption.operator)?.parse(value) : undefined;\n\n\t\tif (this.value) {\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\t}\n\n\tonButtonBackClick() {\n\t\tthis._currentOption = undefined;\n\t}\n\n\t/**\n\t * Converts a `value` into concrete `startDate` and `endDate` JavaScript `Date` objects.\n\t *\n\t * @public\n\t * @param value The option to convert into an array of date ranges\n\t * @returns An array of two `Date` objects representing the start and end dates.\n\t */\n\ttoDates(value: DynamicDateRangeValue): Array<Date> {\n\t\treturn this.getOption(value.operator)?.toDates(value) as Array<Date>;\n\t}\n\n\tget _hasCurrentOptionTemplate(): boolean {\n\t\treturn !!this._currentOption?.template;\n\t}\n\n\t_submitValue() {\n\t\tconst valueToSubmit = this.currentValue || { operator: this._currentOption?.operator || \"\", values: [] };\n\t\tconst displayString = this._currentOption?.format(valueToSubmit) || \"\";\n\n\t\tif (this._input) {\n\t\t\tthis._input.value = displayString;\n\t\t}\n\n\t\tif (!this._currentOption || !valueToSubmit.operator) {\n\t\t\tthis.value = undefined;\n\t\t} else if (this._currentOption.isValidString(displayString)) {\n\t\t\tthis.value = valueToSubmit;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t} else {\n\t\t\tthis.value = undefined;\n\t\t}\n\n\t\tthis._currentOption?.resetState?.();\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\t_close() {\n\t\tthis._currentOption?.resetState?.();\n\n\t\tthis._currentOption = undefined;\n\t\tthis.open = false;\n\t}\n\n\tonPopoverBeforeOpen() {\n\t\tif (this.currentValue !== this.value) {\n\t\t\tthis.currentValue = this.value;\n\t\t}\n\t}\n\n\tonPopoverClose() {\n\t\tthis._close();\n\t}\n\n\tget currentValueText() {\n\t\tif (this.currentValue) {\n\t\t\tconst correctOption = this.getOption(this.currentValue.operator);\n\t\t\tif (correctOption) {\n\t\t\t\tconst dates = correctOption.toDates(this.currentValue);\n\t\t\t\tconst displayValue = { ...this.currentValue, values: dates };\n\t\t\t\tconst displayText = correctOption.format(displayValue);\n\t\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${displayText}`;\n\t\t\t}\n\t\t}\n\n\t\tif (this._currentOption) {\n\t\t\tconst emptyValue = { operator: this._currentOption.operator, values: [] };\n\t\t\tconst displayText = this._currentOption.format(emptyValue);\n\t\t\tif (displayText && displayText.trim()) {\n\t\t\t\treturn `${DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_SELECTED_TEXT)}: ${displayText}`;\n\t\t\t}\n\t\t}\n\n\t\treturn DynamicDateRange.i18nBundle.getText(DYNAMIC_DATE_RANGE_EMPTY_SELECTED_TEXT);\n\t}\n\n\thandleSelectionChange(e: CustomEvent) {\n\t\tconst value = this._currentOption?.handleSelectionChange?.(e, this.currentValue) as DynamicDateRangeValue;\n\n\t\tthis.currentValue = JSON.parse(JSON.stringify(value)); // deep clone\n\t\tif (this.currentValue) {\n\t\t\tthis.currentValue.values = value?.values;\n\t\t}\n\n\t\t// Update _currentOption if the operator changed\n\t\tif (this.currentValue && this.currentValue.operator !== this._currentOption?.operator) {\n\t\t\tthis._currentOption = this.getOption(this.currentValue.operator);\n\t\t}\n\t}\n\n\tonInputKeyDown(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault();\n\t\t\tif (this.open) {\n\t\t\t\tif (!isF4(e)) {\n\t\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._toggleAndFocusInput();\n\t\t\t}\n\t\t}\n\t}\n\n\t_toggleAndFocusInput() {\n\t\tthis._togglePicker();\n\t\tif (this.open) {\n\t\t\tthis._input?.focus();\n\t\t}\n\t}\n\n\tonKeyDownPopover(e: KeyboardEvent) {\n\t\tif (isShow(e)) {\n\t\t\te.preventDefault(); // Prevent scroll on Alt/Option + Arrow Up/Down\n\t\t\tthis._toggleAndFocusInput();\n\t\t}\n\t}\n\n\t/**\n\t * Registers a new dynamic date range option with a unique key.\n\t *\n\t * Example:\n\t * DynamicDateRange.register(\"LASTWEEK\", LastWeek);\n\t */\n\tstatic register(operator: string, option: new () => IDynamicDateRangeOption): void {\n\t\toperator = operator.toUpperCase();\n\n\t\tif (!this.optionsClasses.has(operator)) {\n\t\t\tthis.optionsClasses.set(operator, option);\n\t\t}\n\t}\n\n\tstatic getOptionClass(operator: string): (new () => IDynamicDateRangeOption) | undefined {\n\t\treturn this.optionsClasses.get(operator);\n\t}\n}\n\nDynamicDateRange.define();\n\nexport default DynamicDateRange;\n\nexport type {\n\tDynamicDateRangeValue,\n\tIDynamicDateRangeOption,\n};\n"]}
@@ -3,7 +3,7 @@ import Icon from "./Icon.js";
3
3
  import Input from "./Input.js";
4
4
  import appointment from "@ui5/webcomponents-icons/dist/appointment-2.js";
5
5
  export default function DynamicDateRangeInputTemplate() {
6
- return (_jsx("div", { class: "ui5-dynamic-date-range-root", children: _jsx(Input, { "data-sap-focus-ref": true, id: `${this._id}-inner`, class: "ui5-dynamic-date-range-input", value: this.value && this.getOption(this.value?.operator)?.format(this.value), onChange: this.onInputChange, onKeyDown: this.onInputKeyDown, children: _jsx(Icon, { id: `${this._id}-value-help`, slot: "icon", name: appointment, tabindex: -1, mode: this._iconMode, onClick: this._togglePicker, class: {
6
+ return (_jsx("div", { class: "ui5-dynamic-date-range-root", children: _jsx(Input, { "data-sap-focus-ref": true, id: `${this._id}-inner`, class: "ui5-dynamic-date-range-input", value: this.value && this.getOption(this.value?.operator)?.format(this.value), _inputAccInfo: this._accInfo, onChange: this.onInputChange, onKeyDown: this.onInputKeyDown, children: _jsx(Icon, { id: `${this._id}-value-help`, slot: "icon", name: appointment, tabindex: -1, mode: this._iconMode, onClick: this._togglePicker, class: {
7
7
  "inputIcon": true,
8
8
  "inputIcon--pressed": this.open,
9
9
  } }) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicDateRangeInputTemplate.js","sourceRoot":"","sources":["../src/DynamicDateRangeInputTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,WAAW,MAAM,gDAAgD,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,6BAA6B;IACpD,OAAO,CACN,cAAK,KAAK,EAAC,6BAA6B,YACvC,KAAC,KAAK,gCAEL,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,EACvB,KAAK,EAAC,8BAA8B,EACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7E,QAAQ,EAAE,IAAI,CAAC,aAAa,EAC5B,SAAS,EAAE,IAAI,CAAC,cAAc,YAE9B,KAAC,IAAI,IACJ,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,EAC5B,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,KAAK,EAAE;oBACN,WAAW,EAAE,IAAI;oBACjB,oBAAoB,EAAE,IAAI,CAAC,IAAI;iBAC/B,GACA,GAEK,GACH,CACN,CAAC;AACH,CAAC","sourcesContent":["import type DynamicDateRange from \"./DynamicDateRange.js\";\nimport Icon from \"./Icon.js\";\nimport Input from \"./Input.js\";\nimport appointment from \"@ui5/webcomponents-icons/dist/appointment-2.js\";\n\nexport default function DynamicDateRangeInputTemplate(this: DynamicDateRange) {\n\treturn (\n\t\t<div class=\"ui5-dynamic-date-range-root\">\n\t\t\t<Input\n\t\t\t\tdata-sap-focus-ref\n\t\t\t\tid={`${this._id}-inner`}\n\t\t\t\tclass=\"ui5-dynamic-date-range-input\"\n\t\t\t\tvalue={this.value && this.getOption(this.value?.operator)?.format(this.value)}\n\t\t\t\tonChange={this.onInputChange}\n\t\t\t\tonKeyDown={this.onInputKeyDown}\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tid={`${this._id}-value-help`}\n\t\t\t\t\tslot=\"icon\"\n\t\t\t\t\tname={appointment}\n\t\t\t\t\ttabindex={-1}\n\t\t\t\t\tmode={this._iconMode}\n\t\t\t\t\tonClick={this._togglePicker}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"inputIcon\": true,\n\t\t\t\t\t\t\"inputIcon--pressed\": this.open,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t</Input>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"file":"DynamicDateRangeInputTemplate.js","sourceRoot":"","sources":["../src/DynamicDateRangeInputTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,WAAW,MAAM,gDAAgD,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,6BAA6B;IACpD,OAAO,CACN,cAAK,KAAK,EAAC,6BAA6B,YACvC,KAAC,KAAK,gCAEL,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,EACvB,KAAK,EAAC,8BAA8B,EACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAC7E,aAAa,EAAE,IAAI,CAAC,QAAQ,EAC5B,QAAQ,EAAE,IAAI,CAAC,aAAa,EAC5B,SAAS,EAAE,IAAI,CAAC,cAAc,YAE9B,KAAC,IAAI,IACJ,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,EAC5B,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,KAAK,EAAE;oBACN,WAAW,EAAE,IAAI;oBACjB,oBAAoB,EAAE,IAAI,CAAC,IAAI;iBAC/B,GACA,GAEK,GACH,CACN,CAAC;AACH,CAAC","sourcesContent":["import type DynamicDateRange from \"./DynamicDateRange.js\";\nimport Icon from \"./Icon.js\";\nimport Input from \"./Input.js\";\nimport appointment from \"@ui5/webcomponents-icons/dist/appointment-2.js\";\n\nexport default function DynamicDateRangeInputTemplate(this: DynamicDateRange) {\n\treturn (\n\t\t<div class=\"ui5-dynamic-date-range-root\">\n\t\t\t<Input\n\t\t\t\tdata-sap-focus-ref\n\t\t\t\tid={`${this._id}-inner`}\n\t\t\t\tclass=\"ui5-dynamic-date-range-input\"\n\t\t\t\tvalue={this.value && this.getOption(this.value?.operator)?.format(this.value)}\n\t\t\t\t_inputAccInfo={this._accInfo}\n\t\t\t\tonChange={this.onInputChange}\n\t\t\t\tonKeyDown={this.onInputKeyDown}\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tid={`${this._id}-value-help`}\n\t\t\t\t\tslot=\"icon\"\n\t\t\t\t\tname={appointment}\n\t\t\t\t\ttabindex={-1}\n\t\t\t\t\tmode={this._iconMode}\n\t\t\t\t\tonClick={this._togglePicker}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t\"inputIcon\": true,\n\t\t\t\t\t\t\"inputIcon--pressed\": this.open,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t</Input>\n\t\t</div>\n\t);\n}\n"]}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Represents the boundary state of a component's internal navigation
3
+ * (e.g. a text cursor position inside an input field).
4
+ */
5
+ export type ToolbarArrowNavState = {
6
+ atLeftEnd: boolean;
7
+ atRightEnd: boolean;
8
+ };
9
+ /**
10
+ * Interface for components that can be placed inside a `ui5-toolbar-item` and
11
+ * manage their own internal keyboard navigation (e.g. a text cursor in an input
12
+ * field). Components that implement this interface report their boundary state
13
+ * to the toolbar so the toolbar knows when to move focus to the next item.
14
+ *
15
+ * ### Return value of `getArrowNavState`
16
+ * - `undefined` - the component has no internal navigation state to report at
17
+ * this moment (e.g. it is not focused). The toolbar will not intercept the
18
+ * arrow key.
19
+ * - `{ atLeftEnd: true }` - the internal cursor/selection is at the left
20
+ * boundary; the toolbar may move focus to the previous item on ArrowLeft.
21
+ * - `{ atRightEnd: true }` - the internal cursor/selection is at the right
22
+ * boundary; the toolbar may move focus to the next item on ArrowRight.
23
+ * - `{ atLeftEnd: false, atRightEnd: false }` - the cursor is in the middle;
24
+ * the toolbar does not intercept the arrow key.
25
+ *
26
+ * @public
27
+ * @since 2.25.0
28
+ */
29
+ export interface IToolbarArrowNavProvider {
30
+ getArrowNavState(): ToolbarArrowNavState | undefined;
31
+ }
32
+ export declare function isToolbarArrowNavProvider(el: unknown): el is IToolbarArrowNavProvider;
@@ -0,0 +1,4 @@
1
+ export function isToolbarArrowNavProvider(el) {
2
+ return typeof el.getArrowNavState === "function";
3
+ }
4
+ //# sourceMappingURL=IToolbarArrowNavProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IToolbarArrowNavProvider.js","sourceRoot":"","sources":["../src/IToolbarArrowNavProvider.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,yBAAyB,CAAC,EAAW;IACpD,OAAO,OAAQ,EAA+B,CAAC,gBAAgB,KAAK,UAAU,CAAC;AAChF,CAAC","sourcesContent":["/**\n * Represents the boundary state of a component's internal navigation\n * (e.g. a text cursor position inside an input field).\n */\nexport type ToolbarArrowNavState = {\n\tatLeftEnd: boolean;\n\tatRightEnd: boolean;\n};\n\n/**\n * Interface for components that can be placed inside a `ui5-toolbar-item` and\n * manage their own internal keyboard navigation (e.g. a text cursor in an input\n * field). Components that implement this interface report their boundary state\n * to the toolbar so the toolbar knows when to move focus to the next item.\n *\n * ### Return value of `getArrowNavState`\n * - `undefined` - the component has no internal navigation state to report at\n * this moment (e.g. it is not focused). The toolbar will not intercept the\n * arrow key.\n * - `{ atLeftEnd: true }` - the internal cursor/selection is at the left\n * boundary; the toolbar may move focus to the previous item on ArrowLeft.\n * - `{ atRightEnd: true }` - the internal cursor/selection is at the right\n * boundary; the toolbar may move focus to the next item on ArrowRight.\n * - `{ atLeftEnd: false, atRightEnd: false }` - the cursor is in the middle;\n * the toolbar does not intercept the arrow key.\n *\n * @public\n * @since 2.25.0\n */\nexport interface IToolbarArrowNavProvider {\n\tgetArrowNavState(): ToolbarArrowNavState | undefined;\n}\n\nexport function isToolbarArrowNavProvider(el: unknown): el is IToolbarArrowNavProvider {\n\treturn typeof (el as IToolbarArrowNavProvider).getArrowNavState === \"function\";\n}\n"]}
package/dist/Input.d.ts CHANGED
@@ -12,6 +12,7 @@ import type InputSuggestions from "./features/InputSuggestions.js";
12
12
  import InputType from "./types/InputType.js";
13
13
  import type Popover from "./Popover.js";
14
14
  import type { IIcon } from "./Icon.js";
15
+ import type { ToolbarArrowNavState, IToolbarArrowNavProvider } from "./IToolbarArrowNavProvider.js";
15
16
  import type { ListItemClickEventDetail, ListSelectionChangeEventDetail } from "./List.js";
16
17
  import type { ListItemBaseClickEventDetail } from "./ListItemBase.js";
17
18
  import type ResponsivePopover from "./ResponsivePopover.js";
@@ -105,7 +106,7 @@ type InputSuggestionScrollEventDetail = {
105
106
  * @csspart input - Used to style the native input element
106
107
  * @csspart clear-icon - Used to style the clear icon, which can be pressed to clear user input text
107
108
  */
108
- declare class Input extends UI5Element implements SuggestionComponent, IFormInputElement {
109
+ declare class Input extends UI5Element implements SuggestionComponent, IFormInputElement, IToolbarArrowNavProvider {
109
110
  eventDetails: {
110
111
  "change": InputEventDetail;
111
112
  "input": InputEventDetail;
@@ -472,6 +473,7 @@ declare class Input extends UI5Element implements SuggestionComponent, IFormInpu
472
473
  getInputValue(): string;
473
474
  getInputDOMRef(): HTMLInputElement | Input | null;
474
475
  getInputDOMRefSync(): HTMLInputElement | null;
476
+ getArrowNavState(): ToolbarArrowNavState | undefined;
475
477
  /**
476
478
  * Returns a reference to the native input element
477
479
  * @protected
package/dist/Input.js CHANGED
@@ -305,6 +305,14 @@ let Input = Input_1 = class Input extends UI5Element {
305
305
  }
306
306
  this._effectiveShowClearIcon = (this.showClearIcon && !!this.value && !this.readonly && !this.disabled);
307
307
  this.style.setProperty("--_ui5-input-icons-count", `${this.iconsCount}`);
308
+ // Sync value state to slotted input icons
309
+ this.icon.forEach((iconElement) => {
310
+ if (iconElement.hasAttribute("ui5-input-icon")) {
311
+ iconElement.valueState = this.valueState;
312
+ iconElement.readonly = this.readonly;
313
+ iconElement._parentDisabled = this.disabled;
314
+ }
315
+ });
308
316
  const hasItems = !!this._flattenItems.length;
309
317
  const hasValue = !!this.value;
310
318
  const isFocused = this.shadowRoot.querySelector("input") === getActiveElement();
@@ -1036,6 +1044,24 @@ let Input = Input_1 = class Input extends UI5Element {
1036
1044
  }
1037
1045
  return this.nativeInput;
1038
1046
  }
1047
+ getArrowNavState() {
1048
+ const input = this.getInputDOMRefSync();
1049
+ if (!input) {
1050
+ return undefined;
1051
+ }
1052
+ const active = getActiveElement();
1053
+ const isInputFocused = !!active && (active === input || input.contains(active));
1054
+ if (!isInputFocused) {
1055
+ return undefined;
1056
+ }
1057
+ const caret = input.selectionStart ?? 0;
1058
+ const caretEnd = input.selectionEnd ?? caret;
1059
+ const len = input.value?.length ?? 0;
1060
+ // A non-collapsed selection is not a navigation boundary: Left/Right should
1061
+ // collapse the selection (native behaviour), not exit to the next toolbar item.
1062
+ const collapsed = caret === caretEnd;
1063
+ return { atLeftEnd: collapsed && caret === 0, atRightEnd: collapsed && caretEnd >= len };
1064
+ }
1039
1065
  /**
1040
1066
  * Returns a reference to the native input element
1041
1067
  * @protected