@sapudex/web-components 2.29.0 → 2.30.0

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 (172) hide show
  1. package/cypress/specs/FilterMenu.cy.tsx +39 -1
  2. package/cypress/specs/List.cy.tsx +171 -0
  3. package/cypress/specs/ReviewItem.cy.tsx +48 -14
  4. package/cypress/support/component-imports.instrumented.ts +4 -0
  5. package/cypress/support/component-imports.src.ts +5 -1
  6. package/dist/Avatar.d.ts +1 -0
  7. package/dist/Avatar.js +9 -0
  8. package/dist/Avatar.js.map +1 -1
  9. package/dist/FilterMenu.d.ts +2 -0
  10. package/dist/FilterMenu.js +2 -0
  11. package/dist/FilterMenu.js.map +1 -1
  12. package/dist/ImageGridTickerTemplate.js +2 -1
  13. package/dist/ImageGridTickerTemplate.js.map +1 -1
  14. package/dist/List.d.ts +4 -2
  15. package/dist/List.js +42 -9
  16. package/dist/List.js.map +1 -1
  17. package/dist/ListGroupHeader.d.ts +4 -0
  18. package/dist/ListGroupHeader.js +26 -1
  19. package/dist/ListGroupHeader.js.map +1 -1
  20. package/dist/ListGroupHeaderBase.js +1 -1
  21. package/dist/ListGroupHeaderBase.js.map +1 -1
  22. package/dist/ListItem.js +1 -1
  23. package/dist/ListItem.js.map +1 -1
  24. package/dist/ListItemBase.d.ts +40 -1
  25. package/dist/ListItemBase.js +70 -3
  26. package/dist/ListItemBase.js.map +1 -1
  27. package/dist/MastheadItem.d.ts +9 -2
  28. package/dist/MastheadItem.js +19 -15
  29. package/dist/MastheadItem.js.map +1 -1
  30. package/dist/MastheadMenu.d.ts +2 -2
  31. package/dist/MastheadMenu.js +9 -9
  32. package/dist/MastheadMenu.js.map +1 -1
  33. package/dist/Pagination.js +1 -1
  34. package/dist/Pagination.js.map +1 -1
  35. package/dist/ReviewItem.d.ts +8 -7
  36. package/dist/ReviewItem.js +35 -36
  37. package/dist/ReviewItem.js.map +1 -1
  38. package/dist/ReviewItemTemplate.js +3 -1
  39. package/dist/ReviewItemTemplate.js.map +1 -1
  40. package/dist/SearchableListBase.d.ts +3 -0
  41. package/dist/SearchableListBase.js +37 -1
  42. package/dist/SearchableListBase.js.map +1 -1
  43. package/dist/SelectBox.js +0 -1
  44. package/dist/SelectBox.js.map +1 -1
  45. package/dist/TextField.d.ts +1 -1
  46. package/dist/TextField.js.map +1 -1
  47. package/dist/assets/{InputSuggestions-GMbG8xQ2.js → InputSuggestions-CaAXs3ok.js} +1 -1
  48. package/dist/assets/{ListItemStandardExpandableTextTemplate-IyZB_qzJ.js → ListItemStandardExpandableTextTemplate-CPqUBd--.js} +1 -1
  49. package/dist/assets/{bundle.esm-Dg7j0PXg.js → bundle.esm-L-7H6J4f.js} +213 -213
  50. package/dist/assets/messagebundle_en-J-MHTtdL.js +1 -0
  51. package/dist/css/themes/FilterMenu.css +1 -1
  52. package/dist/css/themes/ImageGridTicker.css +1 -1
  53. package/dist/css/themes/ListGroupHeader.css +1 -1
  54. package/dist/css/themes/ListItem.css +1 -1
  55. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  56. package/dist/css/themes/MastheadItem.css +1 -1
  57. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  58. package/dist/css/themes/Modal.css +1 -1
  59. package/dist/css/themes/RatingIndicator.css +1 -1
  60. package/dist/css/themes/ReviewItem.css +1 -1
  61. package/dist/css/themes/Slider.css +1 -1
  62. package/dist/custom-elements-internal.json +965 -17
  63. package/dist/custom-elements.json +712 -10
  64. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  65. package/dist/generated/i18n/i18n-defaults.d.ts +5 -1
  66. package/dist/generated/i18n/i18n-defaults.js +5 -1
  67. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  68. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +21 -10
  69. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
  70. package/dist/generated/templates/ListItemTemplate.lit.js +21 -19
  71. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  72. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +1 -1
  73. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
  74. package/dist/generated/templates/MastheadItemTemplate.lit.js +33 -25
  75. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  76. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +5 -5
  77. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  78. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +1 -1
  79. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  80. package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
  81. package/dist/generated/themes/FilterMenu.css.js +1 -1
  82. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  83. package/dist/generated/themes/ImageGridTicker.css.d.ts +1 -1
  84. package/dist/generated/themes/ImageGridTicker.css.js +1 -1
  85. package/dist/generated/themes/ImageGridTicker.css.js.map +1 -1
  86. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  87. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  88. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  89. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  90. package/dist/generated/themes/ListItem.css.js +1 -1
  91. package/dist/generated/themes/ListItem.css.js.map +1 -1
  92. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  93. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  94. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  95. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  96. package/dist/generated/themes/MastheadItem.css.js +1 -1
  97. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  98. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  99. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  100. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  101. package/dist/generated/themes/Modal.css.d.ts +1 -1
  102. package/dist/generated/themes/Modal.css.js +1 -1
  103. package/dist/generated/themes/Modal.css.js.map +1 -1
  104. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  105. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  106. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  107. package/dist/generated/themes/ReviewItem.css.d.ts +1 -1
  108. package/dist/generated/themes/ReviewItem.css.js +1 -1
  109. package/dist/generated/themes/ReviewItem.css.js.map +1 -1
  110. package/dist/generated/themes/Slider.css.d.ts +1 -1
  111. package/dist/generated/themes/Slider.css.js +1 -1
  112. package/dist/generated/themes/Slider.css.js.map +1 -1
  113. package/dist/messagebundle.properties +6 -0
  114. package/dist/messagebundle_en.properties +2 -0
  115. package/dist/types/SearchableListBase.d.ts +1 -0
  116. package/dist/types/SearchableListBase.js.map +1 -1
  117. package/dist/vscode.html-custom-data.json +122 -12
  118. package/dist/web-types.json +271 -11
  119. package/package.json +1 -1
  120. package/src/Avatar.ts +9 -0
  121. package/src/FilterMenu.ts +4 -0
  122. package/src/ImageGridTickerTemplate.tsx +3 -1
  123. package/src/List.ts +48 -11
  124. package/src/ListGroupHeader.hbs +130 -15
  125. package/src/ListGroupHeader.ts +31 -1
  126. package/src/ListGroupHeaderBase.ts +1 -1
  127. package/src/ListItem.hbs +15 -0
  128. package/src/ListItem.ts +1 -1
  129. package/src/ListItemBase.ts +107 -1
  130. package/src/MastheadCountrySelector.hbs +1 -1
  131. package/src/MastheadItem.hbs +31 -23
  132. package/src/MastheadItem.ts +20 -18
  133. package/src/MastheadMenu.ts +10 -9
  134. package/src/MastheadMobileMenu.hbs +5 -5
  135. package/src/Pagination.ts +1 -1
  136. package/src/ReviewItem.ts +45 -35
  137. package/src/ReviewItemTemplate.tsx +16 -14
  138. package/src/SearchableListBase.hbs +3 -0
  139. package/src/SearchableListBase.ts +52 -1
  140. package/src/SelectBox.ts +0 -1
  141. package/src/TextField.ts +1 -1
  142. package/src/generated/i18n/i18n-defaults.ts +2 -2
  143. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +21 -10
  144. package/src/generated/templates/ListItemTemplate.lit.ts +21 -19
  145. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +1 -1
  146. package/src/generated/templates/MastheadItemTemplate.lit.ts +33 -25
  147. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +5 -5
  148. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +1 -1
  149. package/src/generated/themes/FilterMenu.css.ts +1 -1
  150. package/src/generated/themes/ImageGridTicker.css.ts +1 -1
  151. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  152. package/src/generated/themes/ListItem.css.ts +1 -1
  153. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  154. package/src/generated/themes/MastheadItem.css.ts +1 -1
  155. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  156. package/src/generated/themes/Modal.css.ts +1 -1
  157. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  158. package/src/generated/themes/ReviewItem.css.ts +1 -1
  159. package/src/generated/themes/Slider.css.ts +1 -1
  160. package/src/i18n/messagebundle.properties +6 -0
  161. package/src/i18n/messagebundle_en.properties +2 -0
  162. package/src/themes/FilterMenu.css +2 -2
  163. package/src/themes/ImageGridTicker.css +2 -26
  164. package/src/themes/ListGroupHeader.css +103 -8
  165. package/src/themes/ListItem.css +67 -15
  166. package/src/themes/MastheadCountrySelector.css +2 -0
  167. package/src/themes/MastheadItem.css +31 -3
  168. package/src/themes/MastheadProfileMenu.css +1 -9
  169. package/src/themes/Modal.css +2 -1
  170. package/src/themes/ReviewItem.css +18 -1
  171. package/src/types/SearchableListBase.ts +1 -0
  172. package/dist/assets/messagebundle_en-DfoXjU7o.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MastheadMenu.js","sourceRoot":"","sources":["../src/MastheadMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport \"@ui5/webcomponents-icons/dist/action.js\";\nimport {\n isUp, isDown, isTabNext, isTabPrevious, isHome, isEnd,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UDExBadge from \"./Badge.js\";\nimport UDExMastheadMenuItem, { UDExItemType } from \"./MastheadMenuItem.js\";\nimport type UDExMastheadItem from \"./MastheadItem.js\";\nimport UDExDivider from \"./Divider.js\";\nimport MastheadMenuTemplate from \"./generated/templates/MastheadMenuTemplate.lit.js\";\nimport parseArrayFromString from \"./utils/parseArrayFromString.js\";\nimport AnalyticsName from \"./types/AnalyticsName.js\";\nimport { OVERVIEW } from \"./generated/i18n/i18n-defaults.js\";\nimport type { UDExScrollIntoViewOptions } from \"./types/List.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport MastheadMenuCss from \"./generated/themes/MastheadMenu.css.js\";\n\nconst rowClass = \"udex-masthead-menu_with-one-column\";\n\nexport type Item = {\n title: string;\n url: string;\n externalLink: boolean;\n isDivider?: boolean;\n};\n\nexport type SubMenuLinkItem = {\n categoryId: string;\n category: string;\n url: string;\n items: Item[];\n};\n\nexport type MenuItem = {\n subMenuLinkItems: SubMenuLinkItem[];\n};\n\ntype UDExMastheadMenuMenuItemClickEventDetail = {\n category?: string,\n analyticsPath: Array<string>,\n analyticsName: AnalyticsName,\n originalEvent: PointerEvent,\n item: UDExMastheadMenuItem,\n sourceNode: HTMLElement,\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-masthead-menu</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/MastheadMenu.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-masthead-menu\",\n renderer: litRender,\n styles: MastheadMenuCss,\n template: MastheadMenuTemplate,\n dependencies: [Icon, UDExBadge, UDExMastheadMenuItem, UDExDivider],\n})\n\n/**\n * Fires when menu item is clicked\n *\n * @allowPreventDefault\n * @public\n * @param {string} category The category of the clicked menu item\n * @param {Array<string>} analyticsPath The analytics path for the clicked menu item\n * @param {AnalyticsName} analyticsName The analytics name for the clicked menu item\n * @param {PointerEvent} originalEvent The original event object\n * @param {UDExMastheadMenuItem} item The clicked menu item\n * @param {HTMLElement} sourceNode The source node of the clicked menu item\n */\n@event(\"menu-item-click\", { bubbles: true })\n\nclass UDExMastheadMenu extends UI5Element {\n eventDetails!: {\n \"menu-item-click\": UDExMastheadMenuMenuItemClickEventDetail\n };\n /**\n * Defines a menu heading\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n menuTitle: string = \"\";\n\n /**\n * List of the menu items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: String })\n subItems: string = \"[]\";\n\n /**\n * Defines the mobile mode for component\n *\n * @private\n */\n @property({ type: Boolean })\n _isMobileMode!: boolean;\n\n /**\n * Defines the scroll behavior for the items of the component.\n *\n * @default undefined\n * @private\n */\n @property()\n _scrollIntoView?: `${UDExScrollIntoViewOptions}`;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n handleKeyDown(e: KeyboardEvent): void {\n const isFirstItem = e.target === this.links[0];\n const isLastItem = e.target === this.links[this.links.length - 1];\n\n if (isUp(e) || (isTabPrevious(e) && !isFirstItem)) {\n this.handleUpArrow(e);\n }\n if (isDown(e) || (isTabNext(e) && !isLastItem)) {\n this.handleDownArrow(e);\n }\n if (isHome(e)) {\n this.handleHomeKey(e);\n }\n if (isEnd(e)) {\n this.handleEndKey(e);\n }\n }\n\n handleHomeKey(e: KeyboardEvent): void {\n e.preventDefault();\n const firstItem = this.links[0];\n firstItem.focus();\n }\n\n handleEndKey(e: KeyboardEvent): void {\n e.preventDefault();\n const lastItem = this.links[this.links.length - 1];\n lastItem.focus();\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n e.preventDefault();\n const currentItem = e.target as UDExMastheadMenuItem;\n this.focusPreviousItem(currentItem);\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n e.preventDefault();\n const currentItem = e.target as UDExMastheadMenuItem;\n this.focusNextItem(currentItem);\n }\n\n handleMenuItemClick(e: PointerEvent): void {\n const menuItem = e.target as UDExMastheadMenuItem;\n if (!menuItem.url?.length) {\n return;\n }\n\n const mainItem = this.closest(\"[udex-masthead-item]\") as UDExMastheadItem;\n const menuList = menuItem.closest(\".udex-masthead-menu__list\") as HTMLElement;\n const sourceNode = menuItem.shadowRoot?.querySelector(\".udex-masthead-menu-item\") as HTMLElement;\n const category = menuList?.getAttribute(\"category\") || \"\";\n\n const eventDetail: UDExMastheadMenuMenuItemClickEventDetail = {\n analyticsPath: [mainItem?.label, category, menuItem.label].filter(Boolean),\n analyticsName: AnalyticsName.Header,\n originalEvent: e,\n item: menuItem,\n sourceNode,\n ...(menuItem.type !== UDExItemType.Heading && { category }),\n };\n\n this.fireDecoratorEvent(\"menu-item-click\", eventDetail);\n }\n\n focusPreviousItem(item: UDExMastheadMenuItem): void {\n const currentSelectedIndex = this.getCurrentIndex(item);\n const lastItemIndex = this.links.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n if (this._scrollIntoView) {\n this.scrollToItem(this.links[previousSelectIndex]);\n }\n this.links[previousSelectIndex].focus();\n }\n\n focusNextItem(item: UDExMastheadMenuItem): void {\n const currentSelectedIndex = this.getCurrentIndex(item);\n const nextSelectIndex = currentSelectedIndex + 1 > this.links.length - 1 ? 0 : currentSelectedIndex + 1;\n if (this._scrollIntoView) {\n this.scrollToItem(this.links[nextSelectIndex]);\n }\n this.links[nextSelectIndex].focus();\n }\n\n getCurrentIndex(item: UDExMastheadMenuItem): number {\n return this.links.indexOf(item);\n }\n\n scrollToItem(item: UDExMastheadMenuItem): void {\n item.scrollIntoView({ block: this._scrollIntoView?.toLowerCase() as ScrollLogicalPosition });\n }\n\n get links(): Array<UDExMastheadMenuItem> {\n const menuItems: Array<UDExMastheadMenuItem> = Array.from(this.shadowRoot!.querySelectorAll(\"[udex-masthead-menu-item]\"));\n return menuItems.filter(({ url }) => url && url.length > 0);\n }\n\n get itemsList(): Array<MenuItem> {\n let id = 1;\n const parsedItems: Array<MenuItem> = parseArrayFromString(this.subItems);\n\n return parsedItems.map((mainItem: MenuItem) => {\n mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((subMenu: SubMenuLinkItem) => {\n subMenu.categoryId = `${id++}`;\n subMenu.items = subMenu.items.map((item: Item) => ({\n ...item,\n ...(item.title === \"-\" && { isDivider: true }),\n }));\n\n return subMenu;\n });\n\n return mainItem;\n });\n }\n\n get oneRowClass(): string {\n const hasOneColumn = this.itemsList.length === 1 && this.itemsList[0].subMenuLinkItems.length === 1;\n return hasOneColumn ? rowClass : \"\";\n }\n\n get overviewHeaderLinkText(): string {\n return translate(UDExMastheadMenu, OVERVIEW);\n }\n}\n\nUDExMastheadMenu.define();\n\nexport default UDExMastheadMenu;\nexport type { UDExMastheadMenuMenuItemClickEventDetail };\n"]}
1
+ {"version":3,"file":"MastheadMenu.js","sourceRoot":"","sources":["../src/MastheadMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport \"@ui5/webcomponents-icons/dist/action.js\";\nimport {\n isTabNext, isTabPrevious, isHome, isEnd,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UDExBadge from \"./Badge.js\";\nimport UDExMastheadMenuItem, { UDExItemType } from \"./MastheadMenuItem.js\";\nimport type UDExMastheadItem from \"./MastheadItem.js\";\nimport UDExDivider from \"./Divider.js\";\nimport MastheadMenuTemplate from \"./generated/templates/MastheadMenuTemplate.lit.js\";\nimport parseArrayFromString from \"./utils/parseArrayFromString.js\";\nimport AnalyticsName from \"./types/AnalyticsName.js\";\nimport { OVERVIEW } from \"./generated/i18n/i18n-defaults.js\";\nimport type { UDExScrollIntoViewOptions } from \"./types/List.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport MastheadMenuCss from \"./generated/themes/MastheadMenu.css.js\";\n\nconst rowClass = \"udex-masthead-menu_with-one-column\";\n\nexport type Item = {\n title: string;\n url: string;\n externalLink: boolean;\n isDivider?: boolean;\n};\n\nexport type SubMenuLinkItem = {\n categoryId: string;\n category: string;\n url: string;\n items: Item[];\n};\n\nexport type MenuItem = {\n subMenuLinkItems: SubMenuLinkItem[];\n};\n\ntype UDExMastheadMenuMenuItemClickEventDetail = {\n category?: string,\n analyticsPath: Array<string>,\n analyticsName: AnalyticsName,\n originalEvent: PointerEvent,\n item: UDExMastheadMenuItem,\n sourceNode: HTMLElement,\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-masthead-menu</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/MastheadMenu.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-masthead-menu\",\n renderer: litRender,\n styles: MastheadMenuCss,\n template: MastheadMenuTemplate,\n dependencies: [Icon, UDExBadge, UDExMastheadMenuItem, UDExDivider],\n})\n\n/**\n * Fires when menu item is clicked\n *\n * @allowPreventDefault\n * @public\n * @param {string} category The category of the clicked menu item\n * @param {Array<string>} analyticsPath The analytics path for the clicked menu item\n * @param {AnalyticsName} analyticsName The analytics name for the clicked menu item\n * @param {PointerEvent} originalEvent The original event object\n * @param {UDExMastheadMenuItem} item The clicked menu item\n * @param {HTMLElement} sourceNode The source node of the clicked menu item\n */\n@event(\"menu-item-click\", { bubbles: true })\n\nclass UDExMastheadMenu extends UI5Element {\n eventDetails!: {\n \"menu-item-click\": UDExMastheadMenuMenuItemClickEventDetail\n };\n /**\n * Defines a menu heading\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n menuTitle: string = \"\";\n\n /**\n * List of the menu items\n *\n * @default \"[]\"\n * @public\n */\n @property({ type: String })\n subItems: string = \"[]\";\n\n /**\n * Defines the mobile mode for component\n *\n * @private\n */\n @property({ type: Boolean })\n _isMobileMode!: boolean;\n\n /**\n * Defines the scroll behavior for the items of the component.\n *\n * @default undefined\n * @private\n */\n @property()\n _scrollIntoView?: `${UDExScrollIntoViewOptions}`;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n handleKeyDown(e: KeyboardEvent): void {\n const isFirstItem = e.target === this.links[0];\n const isLastItem = e.target === this.links[this.links.length - 1];\n\n if (isTabPrevious(e) && !isFirstItem) {\n this.handlePreviousItemFocus(e);\n }\n if (isTabNext(e) && !isLastItem) {\n this.handleNextItemFocus(e);\n }\n if (isHome(e)) {\n this.handleHomeKey(e);\n }\n if (isEnd(e)) {\n this.handleEndKey(e);\n }\n }\n\n handleHomeKey(e: KeyboardEvent): void {\n e.preventDefault();\n const firstItem = this.links[0];\n firstItem.focus();\n }\n\n handleEndKey(e: KeyboardEvent): void {\n e.preventDefault();\n const lastItem = this.links[this.links.length - 1];\n lastItem.focus();\n }\n\n handlePreviousItemFocus(e: KeyboardEvent): void {\n e.preventDefault();\n const currentItem = e.target as UDExMastheadMenuItem;\n this.focusPreviousItem(currentItem);\n }\n\n handleNextItemFocus(e: KeyboardEvent): void {\n e.preventDefault();\n const currentItem = e.target as UDExMastheadMenuItem;\n this.focusNextItem(currentItem);\n }\n\n handleMenuItemClick(e: PointerEvent): void {\n const menuItem = e.target as UDExMastheadMenuItem;\n if (!menuItem.url?.length) {\n return;\n }\n\n const mainItem = this.closest(\"[udex-masthead-item]\") as UDExMastheadItem;\n const menuList = menuItem.closest(\".udex-masthead-menu__list\") as HTMLElement;\n const sourceNode = menuItem.shadowRoot?.querySelector(\".udex-masthead-menu-item\") as HTMLElement;\n const category = menuList?.getAttribute(\"category\") || \"\";\n\n const eventDetail: UDExMastheadMenuMenuItemClickEventDetail = {\n analyticsPath: [mainItem?.label, category, menuItem.label].filter(Boolean),\n analyticsName: AnalyticsName.Header,\n originalEvent: e,\n item: menuItem,\n sourceNode,\n ...(menuItem.type !== UDExItemType.Heading && { category }),\n };\n\n this.fireDecoratorEvent(\"menu-item-click\", eventDetail);\n }\n\n focusPreviousItem(item: UDExMastheadMenuItem): void {\n const currentSelectedIndex = this.getCurrentIndex(item);\n const lastItemIndex = this.links.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n if (this._scrollIntoView) {\n this.scrollToItem(this.links[previousSelectIndex]);\n }\n this.links[previousSelectIndex].focus();\n }\n\n focusNextItem(item: UDExMastheadMenuItem): void {\n const currentSelectedIndex = this.getCurrentIndex(item);\n const nextSelectIndex = currentSelectedIndex + 1 > this.links.length - 1 ? 0 : currentSelectedIndex + 1;\n if (this._scrollIntoView) {\n this.scrollToItem(this.links[nextSelectIndex]);\n }\n this.links[nextSelectIndex].focus();\n }\n\n getCurrentIndex(item: UDExMastheadMenuItem): number {\n return this.links.indexOf(item);\n }\n\n scrollToItem(item: UDExMastheadMenuItem): void {\n item.scrollIntoView({ block: this._scrollIntoView?.toLowerCase() as ScrollLogicalPosition });\n }\n\n get links(): Array<UDExMastheadMenuItem> {\n const menuItems: Array<UDExMastheadMenuItem> = Array.from(this.shadowRoot!.querySelectorAll(\"[udex-masthead-menu-item]\"));\n return menuItems.filter(({ url }) => url && url.length > 0);\n }\n\n get itemsList(): Array<MenuItem> {\n let id = 1;\n const parsedItems: Array<MenuItem> = parseArrayFromString(this.subItems);\n\n return parsedItems.map((mainItem: MenuItem) => {\n mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((subMenu: SubMenuLinkItem) => {\n subMenu.categoryId = `${id++}`;\n\n subMenu.items = subMenu.items ? subMenu.items.map((item: Item) => ({\n ...item,\n ...(item.title === \"-\" && { isDivider: true }),\n })) : [];\n\n return subMenu;\n });\n\n return mainItem;\n });\n }\n\n get oneRowClass(): string {\n const hasOneColumn = this.itemsList.length === 1 && this.itemsList[0].subMenuLinkItems.length === 1;\n return hasOneColumn ? rowClass : \"\";\n }\n\n get overviewHeaderLinkText(): string {\n return translate(UDExMastheadMenu, OVERVIEW);\n }\n}\n\nUDExMastheadMenu.define();\n\nexport default UDExMastheadMenu;\nexport type { UDExMastheadMenuMenuItemClickEventDetail };\n"]}
@@ -243,7 +243,7 @@ let UDExPagination = UDExPagination_1 = class UDExPagination extends UI5Element
243
243
  this._visiblePages = [];
244
244
  return;
245
245
  }
246
- if (!this._pages.length || this._visiblePages.length < this.displayNumber) {
246
+ if (!this._pages.length || this._visiblePages.length !== this.displayNumber) {
247
247
  this._firstPageIndex = 0;
248
248
  this._lastPageIndex = pages > this.displayNumber ? this.displayNumber : pages;
249
249
  this._pageFocusedManually = false;
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../src/Pagination.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.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 {\n OF,\n PAGINATION_PAGE,\n SELECTED,\n ACTIVATE_PAGE,\n PREVIOUS_PAGE,\n NEXT_PAGE,\n CURRENT_PAGE,\n DISABLED,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport Button from \"./Button.js\";\nimport translate from \"./utils/translate.js\";\n\n// Template\nimport PaginationTemplate from \"./PaginationTemplate.js\";\n\n// Styles\nimport PaginationCss from \"./generated/themes/Pagination.css.js\";\n\nexport interface Page {\n index: number;\n value: number;\n active: boolean;\n accessibleName: string;\n ariaCurrent?: string\n}\n\nexport enum UDExPaginationType {\n full = \"full\",\n short = \"short\",\n}\n\nexport enum UDExDisplayType {\n desktop = \"desktop\",\n mobile = \"mobile\"\n}\n\ntype UDExPaginationChangeEventDetail = {\n currentPage: number,\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n * The <code>udex-pagination</code> component is a pagination component used to navigate thought the pages.\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-pagination\n * @public\n */\n@customElement({\n tag: \"udex-pagination\",\n renderer: jsxRenderer,\n styles: PaginationCss,\n template: PaginationTemplate,\n dependencies: [Button],\n})\n/**\n * Fires when pagination item was clicked.\n *\n * @allowPreventDefault\n * @param {number} currentPage The current page number.\n * @public\n */\n@event(\"change\", { bubbles: true })\nclass UDExPagination extends UI5Element {\n eventDetails!: {\n \"change\": UDExPaginationChangeEventDetail,\n };\n /**\n * Defines number of pages.\n *\n * @public\n * @default 0\n */\n @property({ type: Number })\n pages: number = 0;\n\n /**\n * Defines type of pagination.\n *\n * @public\n * @default \"full\"\n */\n @property()\n type: `${UDExPaginationType}` = UDExPaginationType.full;\n\n /**\n * Define display purpose.\n *\n * @public\n * @default \"desktop\"\n */\n @property()\n display: `${UDExDisplayType}` = UDExDisplayType.desktop;\n\n /**\n * Current index of pagination page.\n * @public\n * @default 0\n */\n @property({ type: Number })\n currentPageIndex: number = 0;\n\n /**\n * Defines direction of the input.\n *\n * @private\n */\n @property({ type: String })\n _direction?: string;\n\n /**\n * Defines if the previous button is in pseudo-disabled.\n *\n * @private\n */\n @property({ type: Boolean })\n _nextButtonPseudoDisabled!: boolean;\n\n /**\n * Defines if the previous button is in pseudo-disabled.\n *\n * @private\n */\n @property({ type: Boolean })\n _prevButtonPseudoDisabled!: boolean;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _pages: Page[];\n _visiblePages: Page[];\n\n _previousPageElement?: HTMLElement;\n\n _mobileDisplayNumber: number;\n _desktopDisplayNumber: number;\n _firstPageIndex!: number;\n _lastPageIndex!: number;\n _pageFocusedManually!: boolean;\n\n constructor() {\n super();\n this.pages = 0;\n this._pages = [];\n this._visiblePages = [];\n this.currentPageIndex = 0;\n this._mobileDisplayNumber = 5;\n this._desktopDisplayNumber = 10;\n this._pageFocusedManually = false;\n }\n\n onEnterDOM() {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onBeforeRendering(): void {\n this.setupPages(this.pages);\n }\n\n get nextButtonDisabled(): boolean {\n return this.currentPageIndex + 1 === this.pages;\n }\n\n get prevButtonDisabled(): boolean {\n return this.currentPageIndex === 0;\n }\n\n get typeFull(): boolean {\n return (\n this.type === UDExPaginationType.full || this.display === UDExDisplayType.mobile\n );\n }\n\n get typeShort(): boolean {\n return (\n this.type === UDExPaginationType.short && this.display !== UDExDisplayType.mobile\n );\n }\n\n get shortTextStart(): string {\n if (!this.pages) {\n return \"\";\n }\n return `${this.currentPageIndex + 1}`;\n }\n\n get shortTextEnd(): string {\n if (!this.pages) {\n return \"\";\n }\n return `${this.pages}`;\n }\n\n get shortTextSeparator(): string {\n if (!this.pages) {\n return \"\";\n }\n return ` ${translate(UDExPagination, OF)} `;\n }\n\n get paginationAccessibleName(): string {\n if (this.typeShort) {\n return this.paginationShortAccessibleName;\n }\n return `${translate(UDExPagination, CURRENT_PAGE)} ${this.currentPageIndex + 1}`;\n }\n\n get pageAccessibleName(): string {\n return translate(UDExPagination, PAGINATION_PAGE);\n }\n\n get paginationShortAccessibleName(): string {\n return `${this.pageAccessibleName} ${this.shortTextStart} ${this.shortTextSeparator} ${this.shortTextEnd}`;\n }\n\n get activatePageAccessibleText() {\n return translate(UDExPagination, ACTIVATE_PAGE);\n }\n\n get previousPageAccessibleName(): string {\n if (this._prevButtonPseudoDisabled || this.prevButtonDisabled) {\n const effectiveDisabledText = this._prevButtonPseudoDisabled ? `${translate(UDExPagination, DISABLED)}` : \"\";\n return `${translate(UDExPagination, PREVIOUS_PAGE)} ${effectiveDisabledText}`;\n }\n return `${this.typeShort && this.nextButtonDisabled ? this.paginationShortAccessibleName : \"\"} ${translate(UDExPagination, PREVIOUS_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex}`;\n }\n\n get previousBtnTooltip(): string {\n return !this.prevButtonDisabled ? `${translate(UDExPagination, PREVIOUS_PAGE)}` : \"\";\n }\n\n get nextPageAccessibleName(): string {\n if (this._nextButtonPseudoDisabled || this.nextButtonDisabled) {\n const effectiveDisabledText = this._nextButtonPseudoDisabled ? `${translate(UDExPagination, DISABLED)}` : \"\";\n return `${translate(UDExPagination, NEXT_PAGE)} ${effectiveDisabledText}`;\n }\n return `${this.typeShort && this.prevButtonDisabled ? this.paginationShortAccessibleName : \"\"} ${translate(UDExPagination, NEXT_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex + 2}`;\n }\n\n get nextBtnTooltip(): string {\n return !this.nextButtonDisabled ? `${translate(UDExPagination, NEXT_PAGE)}` : \"\";\n }\n\n get pagination(): Page[] {\n return this._visiblePages;\n }\n\n get paginationClass(): string {\n let classes = \"udex-pagination\";\n if (this._direction === \"rtl\") {\n classes = `${classes} udex-pagination--${this._direction}`;\n }\n if (!this.display) {\n return classes;\n }\n return `${classes} udex-pagination--${this.display} udex-pagination--${this.type}`;\n }\n\n get displayNumber(): number {\n const lastIndex = this.display === UDExDisplayType.mobile ? this._mobileDisplayNumber : this._desktopDisplayNumber;\n return lastIndex;\n }\n\n get pageOffset(): number {\n if (this.display === UDExDisplayType.mobile) {\n return Math.floor(this._mobileDisplayNumber / 2);\n }\n return this._desktopDisplayNumber / 2 - 1;\n }\n\n setActive(element: HTMLElement): void {\n const pageIndex = element.getAttribute(\"data-index\")\n ? parseInt(element.getAttribute(\"data-index\") || \"\")\n : null;\n if (pageIndex === null) {\n return;\n }\n\n this.currentPageIndex = pageIndex;\n this._pageFocusedManually = true;\n this._previousPageElement = element;\n }\n\n setNextPage(e: Event): void {\n e.preventDefault();\n const currentPage = this.currentPageIndex ?? 1;\n if (this.pages && currentPage >= this.pages - 1) {\n return;\n }\n\n this.currentPageIndex = currentPage + 1;\n const isLastPage = this.currentPageIndex === (this.pages - 1);\n this._pageFocusedManually = false;\n this._nextButtonPseudoDisabled = isLastPage;\n\n if (isLastPage) {\n if (this.typeShort) {\n this.focusActiveArrow();\n } else {\n this.focusActivePage();\n }\n }\n\n this.emitChangeEvent();\n }\n\n get effectiveNextButtonDisabled(): boolean {\n return !this._nextButtonPseudoDisabled && this.nextButtonDisabled;\n }\n\n get effectivePrevButtonDisabled(): boolean {\n return !this._prevButtonPseudoDisabled && this.prevButtonDisabled;\n }\n\n handlePrevFocusOut(): void {\n this._prevButtonPseudoDisabled = false;\n }\n\n handleNextFocusOut(): void {\n this._nextButtonPseudoDisabled = false;\n }\n\n setPrevPage(e: Event): void {\n e.preventDefault();\n const currentPage = this.currentPageIndex ?? 1;\n if (this.pages && currentPage <= 0) {\n return;\n }\n\n this.currentPageIndex -= 1;\n const isFirstPage = this.currentPageIndex === 0;\n this._pageFocusedManually = false;\n this._prevButtonPseudoDisabled = isFirstPage;\n\n if (isFirstPage) {\n if (this.typeShort) {\n this.focusActiveArrow();\n } else {\n this.focusActivePage();\n }\n }\n\n this.emitChangeEvent();\n }\n\n setupPages(pages: number) {\n if (!pages) {\n this._visiblePages = [];\n return;\n }\n\n if (!this._pages.length || this._visiblePages.length < this.displayNumber) {\n this._firstPageIndex = 0;\n this._lastPageIndex = pages > this.displayNumber ? this.displayNumber : pages;\n this._pageFocusedManually = false;\n }\n\n this._pages = this.setupPagesData();\n\n if (this.currentPageIndex < this._firstPageIndex || this.currentPageIndex - this._firstPageIndex <= this.pageOffset) {\n this._visiblePages = this.shiftVisiblePages(true);\n return;\n }\n\n this._visiblePages = this.shiftVisiblePages();\n }\n\n setupPagesData(): Page[] {\n const updatedPages = [];\n if (this.pages) {\n this._previousPageElement?.removeAttribute(\"aria-current\");\n for (let index = 0; index < this.pages; index++) {\n const isCurrent = index === this.currentPageIndex;\n const ariaCurrent = \"page\";\n const accessibleName = this.getPageAccessibleName(index);\n updatedPages.push({\n index,\n value: index + 1,\n active: isCurrent,\n accessibleName,\n ...(isCurrent && { ariaCurrent }),\n });\n }\n }\n return updatedPages;\n }\n\n shiftVisiblePages(shiftBackwards: boolean = false): Page[] {\n if (shiftBackwards) {\n while (this.currentPageIndex - this._firstPageIndex < this.pageOffset && this._firstPageIndex > 0) {\n this._firstPageIndex--;\n this._lastPageIndex--;\n }\n } else {\n while (this._lastPageIndex - this.currentPageIndex - 1 < this.pageOffset && this._lastPageIndex < this.pages) {\n this._firstPageIndex++;\n this._lastPageIndex++;\n }\n }\n return this._pages.slice(this._firstPageIndex, this._lastPageIndex);\n }\n\n getPageAccessibleName(index: number): string {\n const isCurrent = index === this.currentPageIndex;\n\n const accessibleName = isCurrent ? `\n ${this.pageAccessibleName} ${index + 1} ${translate(UDExPagination, OF)} ${this.pages}, ${translate(UDExPagination, SELECTED)}` : `\n ${this.pageAccessibleName} ${index + 1} ${translate(UDExPagination, OF)} ${this.pages}`;\n\n return accessibleName;\n }\n\n onPageClick(e: Event) {\n e.preventDefault();\n const target = e.target as HTMLElement;\n const element = target !== e.currentTarget ? (target.parentNode as HTMLElement) : target;\n if (element.getAttribute(\"active\") !== null) {\n return;\n }\n this.setActive(element);\n this.emitChangeEvent();\n }\n\n emitChangeEvent() {\n this.fireDecoratorEvent(\"change\", { currentPage: this.currentPageIndex + 1 });\n }\n\n focusActivePage() {\n const activePageItem = this.shadowRoot?.querySelector<HTMLElement>(`.udex-pagination__page[data-index=\"${this.currentPageIndex}\"]`);\n activePageItem?.focus();\n }\n\n focusActiveArrow() {\n const activeArrow = this.shadowRoot?.querySelector(`.udex-pagination__arrow--${this.currentPageIndex === 0 ? \"next\" : \"prev\"}`);\n activeArrow?.shadowRoot?.querySelector<HTMLElement>(\"button\")?.focus();\n }\n\n onAfterRendering() {\n if (this._pageFocusedManually) {\n this.focusActivePage();\n }\n\n if (this.type === UDExPaginationType.full) {\n return;\n }\n\n const shortPaginationElement = this.shadowRoot?.querySelector<HTMLElement>(\n \".udex-pagination__item--short\",\n );\n\n if (!shortPaginationElement) {\n return;\n }\n\n const directionStyles: string = window\n .getComputedStyle(shortPaginationElement)\n .getPropertyValue(\"direction\");\n if (!directionStyles) {\n this._direction = \"ltr\";\n } else {\n this._direction = directionStyles;\n }\n }\n}\n\nUDExPagination.define();\n\nexport default UDExPagination;\nexport type { UDExPaginationChangeEventDetail };\n"]}
1
+ {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../src/Pagination.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.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 {\n OF,\n PAGINATION_PAGE,\n SELECTED,\n ACTIVATE_PAGE,\n PREVIOUS_PAGE,\n NEXT_PAGE,\n CURRENT_PAGE,\n DISABLED,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport Button from \"./Button.js\";\nimport translate from \"./utils/translate.js\";\n\n// Template\nimport PaginationTemplate from \"./PaginationTemplate.js\";\n\n// Styles\nimport PaginationCss from \"./generated/themes/Pagination.css.js\";\n\nexport interface Page {\n index: number;\n value: number;\n active: boolean;\n accessibleName: string;\n ariaCurrent?: string\n}\n\nexport enum UDExPaginationType {\n full = \"full\",\n short = \"short\",\n}\n\nexport enum UDExDisplayType {\n desktop = \"desktop\",\n mobile = \"mobile\"\n}\n\ntype UDExPaginationChangeEventDetail = {\n currentPage: number,\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n * The <code>udex-pagination</code> component is a pagination component used to navigate thought the pages.\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-pagination\n * @public\n */\n@customElement({\n tag: \"udex-pagination\",\n renderer: jsxRenderer,\n styles: PaginationCss,\n template: PaginationTemplate,\n dependencies: [Button],\n})\n/**\n * Fires when pagination item was clicked.\n *\n * @allowPreventDefault\n * @param {number} currentPage The current page number.\n * @public\n */\n@event(\"change\", { bubbles: true })\nclass UDExPagination extends UI5Element {\n eventDetails!: {\n \"change\": UDExPaginationChangeEventDetail,\n };\n /**\n * Defines number of pages.\n *\n * @public\n * @default 0\n */\n @property({ type: Number })\n pages: number = 0;\n\n /**\n * Defines type of pagination.\n *\n * @public\n * @default \"full\"\n */\n @property()\n type: `${UDExPaginationType}` = UDExPaginationType.full;\n\n /**\n * Define display purpose.\n *\n * @public\n * @default \"desktop\"\n */\n @property()\n display: `${UDExDisplayType}` = UDExDisplayType.desktop;\n\n /**\n * Current index of pagination page.\n * @public\n * @default 0\n */\n @property({ type: Number })\n currentPageIndex: number = 0;\n\n /**\n * Defines direction of the input.\n *\n * @private\n */\n @property({ type: String })\n _direction?: string;\n\n /**\n * Defines if the previous button is in pseudo-disabled.\n *\n * @private\n */\n @property({ type: Boolean })\n _nextButtonPseudoDisabled!: boolean;\n\n /**\n * Defines if the previous button is in pseudo-disabled.\n *\n * @private\n */\n @property({ type: Boolean })\n _prevButtonPseudoDisabled!: boolean;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _pages: Page[];\n _visiblePages: Page[];\n\n _previousPageElement?: HTMLElement;\n\n _mobileDisplayNumber: number;\n _desktopDisplayNumber: number;\n _firstPageIndex!: number;\n _lastPageIndex!: number;\n _pageFocusedManually!: boolean;\n\n constructor() {\n super();\n this.pages = 0;\n this._pages = [];\n this._visiblePages = [];\n this.currentPageIndex = 0;\n this._mobileDisplayNumber = 5;\n this._desktopDisplayNumber = 10;\n this._pageFocusedManually = false;\n }\n\n onEnterDOM() {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onBeforeRendering(): void {\n this.setupPages(this.pages);\n }\n\n get nextButtonDisabled(): boolean {\n return this.currentPageIndex + 1 === this.pages;\n }\n\n get prevButtonDisabled(): boolean {\n return this.currentPageIndex === 0;\n }\n\n get typeFull(): boolean {\n return (\n this.type === UDExPaginationType.full || this.display === UDExDisplayType.mobile\n );\n }\n\n get typeShort(): boolean {\n return (\n this.type === UDExPaginationType.short && this.display !== UDExDisplayType.mobile\n );\n }\n\n get shortTextStart(): string {\n if (!this.pages) {\n return \"\";\n }\n return `${this.currentPageIndex + 1}`;\n }\n\n get shortTextEnd(): string {\n if (!this.pages) {\n return \"\";\n }\n return `${this.pages}`;\n }\n\n get shortTextSeparator(): string {\n if (!this.pages) {\n return \"\";\n }\n return ` ${translate(UDExPagination, OF)} `;\n }\n\n get paginationAccessibleName(): string {\n if (this.typeShort) {\n return this.paginationShortAccessibleName;\n }\n return `${translate(UDExPagination, CURRENT_PAGE)} ${this.currentPageIndex + 1}`;\n }\n\n get pageAccessibleName(): string {\n return translate(UDExPagination, PAGINATION_PAGE);\n }\n\n get paginationShortAccessibleName(): string {\n return `${this.pageAccessibleName} ${this.shortTextStart} ${this.shortTextSeparator} ${this.shortTextEnd}`;\n }\n\n get activatePageAccessibleText() {\n return translate(UDExPagination, ACTIVATE_PAGE);\n }\n\n get previousPageAccessibleName(): string {\n if (this._prevButtonPseudoDisabled || this.prevButtonDisabled) {\n const effectiveDisabledText = this._prevButtonPseudoDisabled ? `${translate(UDExPagination, DISABLED)}` : \"\";\n return `${translate(UDExPagination, PREVIOUS_PAGE)} ${effectiveDisabledText}`;\n }\n return `${this.typeShort && this.nextButtonDisabled ? this.paginationShortAccessibleName : \"\"} ${translate(UDExPagination, PREVIOUS_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex}`;\n }\n\n get previousBtnTooltip(): string {\n return !this.prevButtonDisabled ? `${translate(UDExPagination, PREVIOUS_PAGE)}` : \"\";\n }\n\n get nextPageAccessibleName(): string {\n if (this._nextButtonPseudoDisabled || this.nextButtonDisabled) {\n const effectiveDisabledText = this._nextButtonPseudoDisabled ? `${translate(UDExPagination, DISABLED)}` : \"\";\n return `${translate(UDExPagination, NEXT_PAGE)} ${effectiveDisabledText}`;\n }\n return `${this.typeShort && this.prevButtonDisabled ? this.paginationShortAccessibleName : \"\"} ${translate(UDExPagination, NEXT_PAGE)}. ${this.activatePageAccessibleText} ${this.currentPageIndex + 2}`;\n }\n\n get nextBtnTooltip(): string {\n return !this.nextButtonDisabled ? `${translate(UDExPagination, NEXT_PAGE)}` : \"\";\n }\n\n get pagination(): Page[] {\n return this._visiblePages;\n }\n\n get paginationClass(): string {\n let classes = \"udex-pagination\";\n if (this._direction === \"rtl\") {\n classes = `${classes} udex-pagination--${this._direction}`;\n }\n if (!this.display) {\n return classes;\n }\n return `${classes} udex-pagination--${this.display} udex-pagination--${this.type}`;\n }\n\n get displayNumber(): number {\n const lastIndex = this.display === UDExDisplayType.mobile ? this._mobileDisplayNumber : this._desktopDisplayNumber;\n return lastIndex;\n }\n\n get pageOffset(): number {\n if (this.display === UDExDisplayType.mobile) {\n return Math.floor(this._mobileDisplayNumber / 2);\n }\n return this._desktopDisplayNumber / 2 - 1;\n }\n\n setActive(element: HTMLElement): void {\n const pageIndex = element.getAttribute(\"data-index\")\n ? parseInt(element.getAttribute(\"data-index\") || \"\")\n : null;\n if (pageIndex === null) {\n return;\n }\n\n this.currentPageIndex = pageIndex;\n this._pageFocusedManually = true;\n this._previousPageElement = element;\n }\n\n setNextPage(e: Event): void {\n e.preventDefault();\n const currentPage = this.currentPageIndex ?? 1;\n if (this.pages && currentPage >= this.pages - 1) {\n return;\n }\n\n this.currentPageIndex = currentPage + 1;\n const isLastPage = this.currentPageIndex === (this.pages - 1);\n this._pageFocusedManually = false;\n this._nextButtonPseudoDisabled = isLastPage;\n\n if (isLastPage) {\n if (this.typeShort) {\n this.focusActiveArrow();\n } else {\n this.focusActivePage();\n }\n }\n\n this.emitChangeEvent();\n }\n\n get effectiveNextButtonDisabled(): boolean {\n return !this._nextButtonPseudoDisabled && this.nextButtonDisabled;\n }\n\n get effectivePrevButtonDisabled(): boolean {\n return !this._prevButtonPseudoDisabled && this.prevButtonDisabled;\n }\n\n handlePrevFocusOut(): void {\n this._prevButtonPseudoDisabled = false;\n }\n\n handleNextFocusOut(): void {\n this._nextButtonPseudoDisabled = false;\n }\n\n setPrevPage(e: Event): void {\n e.preventDefault();\n const currentPage = this.currentPageIndex ?? 1;\n if (this.pages && currentPage <= 0) {\n return;\n }\n\n this.currentPageIndex -= 1;\n const isFirstPage = this.currentPageIndex === 0;\n this._pageFocusedManually = false;\n this._prevButtonPseudoDisabled = isFirstPage;\n\n if (isFirstPage) {\n if (this.typeShort) {\n this.focusActiveArrow();\n } else {\n this.focusActivePage();\n }\n }\n\n this.emitChangeEvent();\n }\n\n setupPages(pages: number) {\n if (!pages) {\n this._visiblePages = [];\n return;\n }\n\n if (!this._pages.length || this._visiblePages.length !== this.displayNumber) {\n this._firstPageIndex = 0;\n this._lastPageIndex = pages > this.displayNumber ? this.displayNumber : pages;\n this._pageFocusedManually = false;\n }\n\n this._pages = this.setupPagesData();\n\n if (this.currentPageIndex < this._firstPageIndex || this.currentPageIndex - this._firstPageIndex <= this.pageOffset) {\n this._visiblePages = this.shiftVisiblePages(true);\n return;\n }\n\n this._visiblePages = this.shiftVisiblePages();\n }\n\n setupPagesData(): Page[] {\n const updatedPages = [];\n if (this.pages) {\n this._previousPageElement?.removeAttribute(\"aria-current\");\n for (let index = 0; index < this.pages; index++) {\n const isCurrent = index === this.currentPageIndex;\n const ariaCurrent = \"page\";\n const accessibleName = this.getPageAccessibleName(index);\n updatedPages.push({\n index,\n value: index + 1,\n active: isCurrent,\n accessibleName,\n ...(isCurrent && { ariaCurrent }),\n });\n }\n }\n return updatedPages;\n }\n\n shiftVisiblePages(shiftBackwards: boolean = false): Page[] {\n if (shiftBackwards) {\n while (this.currentPageIndex - this._firstPageIndex < this.pageOffset && this._firstPageIndex > 0) {\n this._firstPageIndex--;\n this._lastPageIndex--;\n }\n } else {\n while (this._lastPageIndex - this.currentPageIndex - 1 < this.pageOffset && this._lastPageIndex < this.pages) {\n this._firstPageIndex++;\n this._lastPageIndex++;\n }\n }\n return this._pages.slice(this._firstPageIndex, this._lastPageIndex);\n }\n\n getPageAccessibleName(index: number): string {\n const isCurrent = index === this.currentPageIndex;\n\n const accessibleName = isCurrent ? `\n ${this.pageAccessibleName} ${index + 1} ${translate(UDExPagination, OF)} ${this.pages}, ${translate(UDExPagination, SELECTED)}` : `\n ${this.pageAccessibleName} ${index + 1} ${translate(UDExPagination, OF)} ${this.pages}`;\n\n return accessibleName;\n }\n\n onPageClick(e: Event) {\n e.preventDefault();\n const target = e.target as HTMLElement;\n const element = target !== e.currentTarget ? (target.parentNode as HTMLElement) : target;\n if (element.getAttribute(\"active\") !== null) {\n return;\n }\n this.setActive(element);\n this.emitChangeEvent();\n }\n\n emitChangeEvent() {\n this.fireDecoratorEvent(\"change\", { currentPage: this.currentPageIndex + 1 });\n }\n\n focusActivePage() {\n const activePageItem = this.shadowRoot?.querySelector<HTMLElement>(`.udex-pagination__page[data-index=\"${this.currentPageIndex}\"]`);\n activePageItem?.focus();\n }\n\n focusActiveArrow() {\n const activeArrow = this.shadowRoot?.querySelector(`.udex-pagination__arrow--${this.currentPageIndex === 0 ? \"next\" : \"prev\"}`);\n activeArrow?.shadowRoot?.querySelector<HTMLElement>(\"button\")?.focus();\n }\n\n onAfterRendering() {\n if (this._pageFocusedManually) {\n this.focusActivePage();\n }\n\n if (this.type === UDExPaginationType.full) {\n return;\n }\n\n const shortPaginationElement = this.shadowRoot?.querySelector<HTMLElement>(\n \".udex-pagination__item--short\",\n );\n\n if (!shortPaginationElement) {\n return;\n }\n\n const directionStyles: string = window\n .getComputedStyle(shortPaginationElement)\n .getPropertyValue(\"direction\");\n if (!directionStyles) {\n this._direction = \"ltr\";\n } else {\n this._direction = directionStyles;\n }\n }\n}\n\nUDExPagination.define();\n\nexport default UDExPagination;\nexport type { UDExPaginationChangeEventDetail };\n"]}
@@ -45,12 +45,6 @@ declare class UDExReviewItem extends UI5Element {
45
45
  * @public
46
46
  */
47
47
  text: string;
48
- /**
49
- * Defines whether button for showing truncated text is shown.
50
- * @default 2
51
- * @private
52
- */
53
- _textLineLimit: number;
54
48
  /**
55
49
  * Defines whether the text is expanded.
56
50
  * @default false
@@ -83,6 +77,12 @@ declare class UDExReviewItem extends UI5Element {
83
77
  * @slot
84
78
  */
85
79
  date: Array<HTMLElement>;
80
+ /**
81
+ * Slot for custom content.
82
+ *
83
+ * @slot
84
+ */
85
+ content?: Array<HTMLElement>;
86
86
  static i18nBundle: I18nBundle;
87
87
  _handleResizeBound: ResizeObserverCallback;
88
88
  _textElement: HTMLElement;
@@ -94,11 +94,12 @@ declare class UDExReviewItem extends UI5Element {
94
94
  onEnterDOM(): void;
95
95
  onExitDOM(): void;
96
96
  onAfterRendering(): void;
97
+ _handleResize(): void;
97
98
  _toggleText(): void;
98
99
  _checkTextOverflow(): void;
100
+ get textElement(): HTMLElement;
99
101
  get buttonText(): string;
100
102
  get reviewItemClasses(): string;
101
103
  get validatedRating(): number;
102
- getTextElement(): HTMLElement;
103
104
  }
104
105
  export default UDExReviewItem;
@@ -13,7 +13,7 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
13
13
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
14
14
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
15
15
  import ReviewItemTemplate from "./ReviewItemTemplate.js";
16
- import { READ_LESS, READ_MORE } from "./generated/i18n/i18n-defaults.js";
16
+ import { SHOW_LESS, SHOW_MORE } from "./generated/i18n/i18n-defaults.js";
17
17
  import translate from "./utils/translate.js";
18
18
  // Styles
19
19
  import ReviewItemCss from "./generated/themes/ReviewItem.css.js";
@@ -44,19 +44,12 @@ let UDExReviewItem = UDExReviewItem_1 = class UDExReviewItem extends UI5Element
44
44
  * @public
45
45
  */
46
46
  this.rating = 0;
47
- /**
48
- * Defines whether button for showing truncated text is shown.
49
- * @default 2
50
- * @private
51
- */
52
- this._textLineLimit = 2;
53
- this._maxHeight = 48;
47
+ this._maxHeight = 90;
54
48
  this._maxRating = 5;
55
49
  this._minRating = 0;
56
- this._handleResizeBound = this._checkTextOverflow.bind(this);
50
+ this._handleResizeBound = this._handleResize.bind(this);
57
51
  }
58
52
  onEnterDOM() {
59
- this._maxHeight = 48;
60
53
  this._completeText = this.text;
61
54
  ResizeHandler.register(this, this._handleResizeBound);
62
55
  }
@@ -64,42 +57,52 @@ let UDExReviewItem = UDExReviewItem_1 = class UDExReviewItem extends UI5Element
64
57
  ResizeHandler.deregister(this, this._handleResizeBound);
65
58
  }
66
59
  onAfterRendering() {
67
- this._textElement = this.getTextElement();
68
- this._checkTextOverflow();
60
+ this._textElement = this.textElement;
61
+ if (this.text) {
62
+ this._checkTextOverflow();
63
+ }
64
+ }
65
+ _handleResize() {
66
+ if (this.text) {
67
+ this._checkTextOverflow();
68
+ }
69
69
  }
70
70
  _toggleText() {
71
71
  this._textExpanded = !this._textExpanded;
72
- if (this._textExpanded) {
73
- this._completeText = this.text;
74
- this._textElement.classList.add("udex-review-item__text-expanded");
75
- }
76
- else {
77
- this._textElement.classList.remove("udex-review-item__text-expanded");
78
- this._completeText = this._visibleText;
79
- }
72
+ this._completeText = this._textExpanded ? this.text : this._visibleText;
73
+ this._textElement.classList.toggle("udex-review-item__text-expanded", this._textExpanded);
80
74
  }
81
75
  _checkTextOverflow() {
82
76
  const words = this.text.split(" ");
83
77
  const canvas = document.createElement("canvas");
84
78
  const context = canvas.getContext("2d");
85
- context.font = `16px sans-serif`;
86
- let currentLineWidth = 0;
79
+ context.font = "16px sans-serif";
80
+ const maxWidth = this._textElement.offsetWidth;
87
81
  let visibleText = "";
88
- words.forEach(word => {
89
- const wordWidth = context.measureText(`${word} `).width;
90
- if (currentLineWidth + wordWidth <= 2 * this._textElement.offsetWidth) {
91
- visibleText += `${word} `;
92
- currentLineWidth += wordWidth;
82
+ const lineHeight = 22; // Approximate line height for 16px font
83
+ for (let i = 0; i < words.length; i++) {
84
+ const testText = visibleText + (visibleText ? " " : "") + words[i];
85
+ const metrics = context.measureText(testText);
86
+ const textWidth = metrics.width;
87
+ const estimatedLines = Math.ceil(textWidth / maxWidth);
88
+ const estimatedHeight = estimatedLines * lineHeight;
89
+ if (estimatedHeight > this._maxHeight) {
90
+ break;
93
91
  }
94
- });
92
+ visibleText = testText;
93
+ }
95
94
  this._visibleText = visibleText;
96
95
  if (!this._textExpanded) {
97
96
  this._completeText = visibleText;
98
97
  }
99
98
  this._showTextExpander = (!this._textExpanded && this._completeText.length < this.text.length) || (this._textExpanded && visibleText.length < this.text.length);
100
99
  }
100
+ get textElement() {
101
+ const textElement = this.shadowRoot?.getElementById("udex-review-item__text");
102
+ return textElement;
103
+ }
101
104
  get buttonText() {
102
- return this._textExpanded ? translate(UDExReviewItem_1, READ_LESS) : translate(UDExReviewItem_1, READ_MORE);
105
+ return this._textExpanded ? translate(UDExReviewItem_1, SHOW_LESS) : translate(UDExReviewItem_1, SHOW_MORE);
103
106
  }
104
107
  get reviewItemClasses() {
105
108
  const ratingTop = this.showRatingTop ? " udex-review-item__rating-top" : "";
@@ -116,10 +119,6 @@ let UDExReviewItem = UDExReviewItem_1 = class UDExReviewItem extends UI5Element
116
119
  }
117
120
  return this.rating;
118
121
  }
119
- getTextElement() {
120
- const textElement = this.shadowRoot?.getElementById("udex-review-item__text");
121
- return textElement;
122
- }
123
122
  };
124
123
  __decorate([
125
124
  property({ type: Boolean })
@@ -133,9 +132,6 @@ __decorate([
133
132
  __decorate([
134
133
  property({ type: String })
135
134
  ], UDExReviewItem.prototype, "text", void 0);
136
- __decorate([
137
- property({ type: Number })
138
- ], UDExReviewItem.prototype, "_textLineLimit", void 0);
139
135
  __decorate([
140
136
  property({ type: Boolean })
141
137
  ], UDExReviewItem.prototype, "_textExpanded", void 0);
@@ -151,6 +147,9 @@ __decorate([
151
147
  __decorate([
152
148
  slot()
153
149
  ], UDExReviewItem.prototype, "date", void 0);
150
+ __decorate([
151
+ slot()
152
+ ], UDExReviewItem.prototype, "content", void 0);
154
153
  __decorate([
155
154
  i18n("@sapudex/web-components")
156
155
  ], UDExReviewItem, "i18nBundle", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ReviewItem.js","sourceRoot":"","sources":["../src/ReviewItem.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ReviewItemTemplate from \"./ReviewItemTemplate.js\";\nimport { READ_LESS, READ_MORE } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport ReviewItemCss from \"./generated/themes/ReviewItem.css.js\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-review-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/ReviewItem.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-review-item\",\n renderer: jsxRenderer,\n styles: ReviewItemCss,\n template: ReviewItemTemplate,\n})\n\nclass UDExReviewItem extends UI5Element {\n /**\n * Defines the position of the rating in review.\n * @default false\n * @public\n */\n @property({ type: Boolean })\n showRatingTop!: boolean;\n\n /**\n * Defines the rating in the review.\n *\n * @default 0\n * @public\n */\n @property({ type: Number })\n rating: number = 0;\n\n /**\n * Defines the title of the review.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n reviewTitle!: string;\n\n /**\n * Defines the text of the review.\n * @default \"\"\n * @public\n */\n @property({ type: String })\n text!: string;\n\n /**\n * Defines whether button for showing truncated text is shown.\n * @default 2\n * @private\n */\n @property({ type: Number })\n _textLineLimit: number = 2;\n\n /**\n * Defines whether the text is expanded.\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _textExpanded!: boolean;\n\n /**\n * Defines whether button for showing truncated text is shown.\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _showTextExpander!: boolean;\n\n /**\n * Defines the text, consisting of visible and invisible parts of the original text.\n * @default \"\"\n * @private\n */\n @property({ type: String })\n _completeText!: string;\n\n /**\n * Defines the author's name and company.\n *\n * @default \"\"\n * @slot\n */\n @slot()\n author!: Array<HTMLElement>;\n\n /**\n * Defines the date of the review.\n *\n * @default \"\"\n * @slot\n */\n @slot()\n date!: Array<HTMLElement>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _handleResizeBound: ResizeObserverCallback;\n _textElement!: HTMLElement;\n _visibleText!: string;\n _maxHeight: number = 48;\n _maxRating: number = 5;\n _minRating: number = 0;\n\n constructor() {\n super();\n this._handleResizeBound = this._checkTextOverflow.bind(this);\n }\n\n onEnterDOM(): void {\n this._maxHeight = 48;\n this._completeText = this.text;\n ResizeHandler.register(this, this._handleResizeBound);\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n onAfterRendering(): void {\n this._textElement = this.getTextElement();\n this._checkTextOverflow();\n }\n\n _toggleText() {\n this._textExpanded = !this._textExpanded;\n if (this._textExpanded) {\n this._completeText = this.text;\n this._textElement.classList.add(\"udex-review-item__text-expanded\");\n } else {\n this._textElement.classList.remove(\"udex-review-item__text-expanded\");\n this._completeText = this._visibleText;\n }\n }\n\n _checkTextOverflow() {\n const words = this.text.split(\" \");\n\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\")!;\n context.font = `16px sans-serif`;\n\n let currentLineWidth = 0;\n let visibleText = \"\";\n\n words.forEach(word => {\n const wordWidth = context.measureText(`${word} `).width;\n if (currentLineWidth + wordWidth <= 2 * this._textElement.offsetWidth) {\n visibleText += `${word} `;\n currentLineWidth += wordWidth;\n }\n });\n\n this._visibleText = visibleText;\n if (!this._textExpanded) {\n this._completeText = visibleText;\n }\n\n this._showTextExpander = (!this._textExpanded && this._completeText.length < this.text.length) || (this._textExpanded && visibleText.length < this.text.length);\n }\n\n get buttonText(): string {\n return this._textExpanded ? translate(UDExReviewItem, READ_LESS) : translate(UDExReviewItem, READ_MORE);\n }\n\n get reviewItemClasses(): string {\n const ratingTop = this.showRatingTop ? \" udex-review-item__rating-top\" : \"\";\n return `udex-review-item${ratingTop}`;\n }\n\n get validatedRating(): number {\n if (this.rating > this._maxRating) {\n console.warn(\"UDEx Review: The rating shouldn't be more than 5.\");\n return this._maxRating;\n }\n if (this.rating < this._minRating) {\n console.warn(\"UDEx Review: The rating shouldn't be less than 0.\");\n return this._minRating;\n }\n return this.rating;\n }\n\n getTextElement(): HTMLElement {\n const textElement = this.shadowRoot?.getElementById(\"udex-review-item__text\");\n return textElement!;\n }\n}\n\nUDExReviewItem.define();\n\nexport default UDExReviewItem;\n"]}
1
+ {"version":3,"file":"ReviewItem.js","sourceRoot":"","sources":["../src/ReviewItem.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,WAAW,MAAM,iDAAiD,CAAC;AAC1E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,IAAI,MAAM,iDAAiD,CAAC;AAGnE,OAAO,aAAa,MAAM,wDAAwD,CAAC;AACnF,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAE7C,SAAS;AACT,OAAO,aAAa,MAAM,sCAAsC,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AAQH,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,UAAU;IA+FrC;QACE,KAAK,EAAE,CAAC;QAvFV;;;;;WAKG;QAED,WAAM,GAAW,CAAC,CAAC;QA2ErB,eAAU,GAAW,EAAE,CAAC;QACxB,eAAU,GAAW,CAAC,CAAC;QACvB,eAAU,GAAW,CAAC,CAAC;QAIrB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,UAAU;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,SAAS;QACP,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,iCAAiC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5F,CAAC;IAED,kBAAkB;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;QACzC,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAC/C,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,wCAAwC;QAE/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;YAEhC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;YACvD,MAAM,eAAe,GAAG,cAAc,GAAG,UAAU,CAAC;YAEpD,IAAI,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM;YACR,CAAC;YAED,WAAW,GAAG,QAAQ,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClK,CAAC;IAED,IAAI,WAAW;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,wBAAwB,CAAC,CAAC;QAC9E,OAAO,WAAY,CAAC;IACtB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAc,EAAE,SAAS,CAAC,CAAC;IAC1G,CAAC;IAED,IAAI,iBAAiB;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,mBAAmB,SAAS,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF,CAAA;AApLG;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDACF;AASxB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACN;AASnB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACJ;AAQrB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACX;AAQd;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDACF;AAQxB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;yDACE;AAQ5B;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qDACF;AASvB;IADD,IAAI,EAAE;8CACuB;AAS5B;IADD,IAAI,EAAE;4CACqB;AAQ1B;IADD,IAAI,EAAE;+CACwB;AAGxB;IADN,IAAI,CAAC,yBAAyB,CAAC;wCACF;AAtF1B,cAAc;IAPnB,aAAa,CAAC;QACb,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,kBAAkB;KAC7B,CAAC;GAEI,cAAc,CA2LnB;AAED,cAAc,CAAC,MAAM,EAAE,CAAC;AAExB,eAAe,cAAc,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ReviewItemTemplate from \"./ReviewItemTemplate.js\";\nimport { SHOW_LESS, SHOW_MORE } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport ReviewItemCss from \"./generated/themes/ReviewItem.css.js\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-review-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/ReviewItem.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-review-item\",\n renderer: jsxRenderer,\n styles: ReviewItemCss,\n template: ReviewItemTemplate,\n})\n\nclass UDExReviewItem extends UI5Element {\n /**\n * Defines the position of the rating in review.\n * @default false\n * @public\n */\n @property({ type: Boolean })\n showRatingTop!: boolean;\n\n /**\n * Defines the rating in the review.\n *\n * @default 0\n * @public\n */\n @property({ type: Number })\n rating: number = 0;\n\n /**\n * Defines the title of the review.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n reviewTitle!: string;\n\n /**\n * Defines the text of the review.\n * @default \"\"\n * @public\n */\n @property({ type: String })\n text!: string;\n\n /**\n * Defines whether the text is expanded.\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _textExpanded!: boolean;\n\n /**\n * Defines whether button for showing truncated text is shown.\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _showTextExpander!: boolean;\n\n /**\n * Defines the text, consisting of visible and invisible parts of the original text.\n * @default \"\"\n * @private\n */\n @property({ type: String })\n _completeText!: string;\n\n /**\n * Defines the author's name and company.\n *\n * @default \"\"\n * @slot\n */\n @slot()\n author!: Array<HTMLElement>;\n\n /**\n * Defines the date of the review.\n *\n * @default \"\"\n * @slot\n */\n @slot()\n date!: Array<HTMLElement>;\n\n /**\n * Slot for custom content.\n *\n * @slot\n */\n @slot()\n content?: Array<HTMLElement>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _handleResizeBound: ResizeObserverCallback;\n _textElement!: HTMLElement;\n _visibleText!: string;\n _maxHeight: number = 90;\n _maxRating: number = 5;\n _minRating: number = 0;\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n }\n\n onEnterDOM(): void {\n this._completeText = this.text;\n ResizeHandler.register(this, this._handleResizeBound);\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n onAfterRendering(): void {\n this._textElement = this.textElement;\n if (this.text) {\n this._checkTextOverflow();\n }\n }\n\n _handleResize(): void {\n if (this.text) {\n this._checkTextOverflow();\n }\n }\n\n _toggleText() {\n this._textExpanded = !this._textExpanded;\n this._completeText = this._textExpanded ? this.text : this._visibleText;\n this._textElement.classList.toggle(\"udex-review-item__text-expanded\", this._textExpanded);\n }\n\n _checkTextOverflow() {\n const words = this.text.split(\" \");\n\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\")!;\n context.font = \"16px sans-serif\";\n\n const maxWidth = this._textElement.offsetWidth;\n let visibleText = \"\";\n const lineHeight = 22; // Approximate line height for 16px font\n\n for (let i = 0; i < words.length; i++) {\n const testText = visibleText + (visibleText ? \" \" : \"\") + words[i];\n const metrics = context.measureText(testText);\n const textWidth = metrics.width;\n\n const estimatedLines = Math.ceil(textWidth / maxWidth);\n const estimatedHeight = estimatedLines * lineHeight;\n\n if (estimatedHeight > this._maxHeight) {\n break;\n }\n\n visibleText = testText;\n }\n\n this._visibleText = visibleText;\n if (!this._textExpanded) {\n this._completeText = visibleText;\n }\n\n this._showTextExpander = (!this._textExpanded && this._completeText.length < this.text.length) || (this._textExpanded && visibleText.length < this.text.length);\n }\n\n get textElement(): HTMLElement {\n const textElement = this.shadowRoot?.getElementById(\"udex-review-item__text\");\n return textElement!;\n }\n\n get buttonText(): string {\n return this._textExpanded ? translate(UDExReviewItem, SHOW_LESS) : translate(UDExReviewItem, SHOW_MORE);\n }\n\n get reviewItemClasses(): string {\n const ratingTop = this.showRatingTop ? \" udex-review-item__rating-top\" : \"\";\n return `udex-review-item${ratingTop}`;\n }\n\n get validatedRating(): number {\n if (this.rating > this._maxRating) {\n console.warn(\"UDEx Review: The rating shouldn't be more than 5.\");\n return this._maxRating;\n }\n if (this.rating < this._minRating) {\n console.warn(\"UDEx Review: The rating shouldn't be less than 0.\");\n return this._minRating;\n }\n return this.rating;\n }\n}\n\nUDExReviewItem.define();\n\nexport default UDExReviewItem;\n"]}
@@ -5,6 +5,8 @@ import UDExButtonSize from "./types/ButtonSize.js";
5
5
  import UDExButtonDesign from "./types/ButtonDesign.js";
6
6
  export default function ReviewItemTemplate() {
7
7
  const rootClass = "udex-review-item";
8
- return (_jsxs("div", { className: this.reviewItemClasses, children: [_jsxs("div", { className: `${rootClass}__rating-container`, children: [_jsx(UDExRatingIndicator, { value: this.validatedRating, max: this._maxRating, readonly: true }), this.date && (_jsx("slot", { className: `${rootClass}__date`, slot: "date", name: "date" }))] }), _jsxs("div", { className: `${rootClass}__text-container`, children: [_jsx("div", { className: `${rootClass}__title`, children: this.reviewTitle }), _jsxs("div", { className: `${rootClass}__text-wrapper`, children: [_jsx("p", { className: `${rootClass}__text`, id: `${rootClass}__text`, children: this._completeText }), this._showTextExpander && (_jsx(UDExButton, { id: "reviewExpander", class: `${rootClass}__text-expander`, design: UDExButtonDesign.Invisible, size: UDExButtonSize.Large, onClick: this._toggleText.bind(this), children: this.buttonText }))] }), this.author && (_jsx("slot", { slot: "author", name: "author", className: `${rootClass}__author` }))] })] }));
8
+ return (_jsxs("div", { className: this.reviewItemClasses, children: [_jsxs("div", { className: `${rootClass}__rating-container`, children: [_jsx(UDExRatingIndicator, { value: this.validatedRating, max: this._maxRating, readonly: true }), this.date && (_jsx("slot", { className: `${rootClass}__date`, slot: "date", name: "date" }))] }), _jsxs("div", { className: `${rootClass}__text-container`, children: [this.reviewTitle &&
9
+ _jsx("div", { className: `${rootClass}__title`, children: this.reviewTitle }), _jsx("div", { className: `${rootClass}__text-wrapper`, children: _jsxs("slot", { slot: "content", name: "content", children: [_jsx("p", { className: `${rootClass}__text`, id: `${rootClass}__text`, children: this._completeText }), this._showTextExpander &&
10
+ _jsx(UDExButton, { id: "reviewExpander", class: `${rootClass}__text-expander`, design: UDExButtonDesign.Invisible, size: UDExButtonSize.Large, onClick: this._toggleText.bind(this), children: this.buttonText })] }) }), this.author && (_jsx("slot", { slot: "author", name: "author", className: `${rootClass}__author` }))] })] }));
9
11
  }
10
12
  //# sourceMappingURL=ReviewItemTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReviewItemTemplate.js","sourceRoot":"","sources":["../src/ReviewItemTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,mBAAmB,MAAM,sBAAsB,CAAC;AACvD,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,kBAAkB;IACxC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,iBAAiB,aACpC,eAAK,SAAS,EAAE,GAAG,SAAS,oBAAoB,aAC9C,KAAC,mBAAmB,IAClB,KAAK,EAAE,IAAI,CAAC,eAAe,EAC3B,GAAG,EAAE,IAAI,CAAC,UAAU,EACpB,QAAQ,SACY,EACrB,IAAI,CAAC,IAAI,IAAI,CACZ,eACE,SAAS,EAAE,GAAG,SAAS,QAAQ,EAC/B,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,MAAM,GACN,CACR,IACG,EACN,eAAK,SAAS,EAAE,GAAG,SAAS,kBAAkB,aAC5C,cAAK,SAAS,EAAE,GAAG,SAAS,SAAS,YAAG,IAAI,CAAC,WAAW,GAAO,EAC/D,eAAK,SAAS,EAAE,GAAG,SAAS,gBAAgB,aAC1C,YAAG,SAAS,EAAE,GAAG,SAAS,QAAQ,EAAE,EAAE,EAAE,GAAG,SAAS,QAAQ,YACzD,IAAI,CAAC,aAAa,GACjB,EACH,IAAI,CAAC,iBAAiB,IAAI,CACzB,KAAC,UAAU,IACT,EAAE,EAAC,gBAAgB,EACnB,KAAK,EAAE,GAAG,SAAS,iBAAiB,EACpC,MAAM,EAAE,gBAAgB,CAAC,SAAS,EAClC,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YACnC,IAAI,CAAC,UAAU,GACL,CACd,IACG,EACL,IAAI,CAAC,MAAM,IAAI,CACd,eAAM,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,SAAS,UAAU,GAAS,CAC7E,IACG,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type ReviewItem from \"./ReviewItem.js\";\nimport UDExRatingIndicator from \"./RatingIndicator.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\n\nexport default function ReviewItemTemplate(this: ReviewItem) {\n const rootClass = \"udex-review-item\";\n\n return (\n <div className={this.reviewItemClasses}>\n <div className={`${rootClass}__rating-container`}>\n <UDExRatingIndicator\n value={this.validatedRating}\n max={this._maxRating}\n readonly>\n </UDExRatingIndicator>\n {this.date && (\n <slot\n className={`${rootClass}__date`}\n slot=\"date\"\n name=\"date\">\n </slot>\n )}\n </div>\n <div className={`${rootClass}__text-container`}>\n <div className={`${rootClass}__title`}>{this.reviewTitle}</div>\n <div className={`${rootClass}__text-wrapper`}>\n <p className={`${rootClass}__text`} id={`${rootClass}__text`}>\n {this._completeText}\n </p>\n {this._showTextExpander && (\n <UDExButton\n id=\"reviewExpander\"\n class={`${rootClass}__text-expander`}\n design={UDExButtonDesign.Invisible}\n size={UDExButtonSize.Large}\n onClick={this._toggleText.bind(this)}>\n {this.buttonText}\n </UDExButton>\n )}\n </div>\n {this.author && (\n <slot slot=\"author\" name=\"author\" className={`${rootClass}__author`}></slot>\n )}\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"ReviewItemTemplate.js","sourceRoot":"","sources":["../src/ReviewItemTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,mBAAmB,MAAM,sBAAsB,CAAC;AACvD,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,kBAAkB;IACxC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,iBAAiB,aACpC,eAAK,SAAS,EAAE,GAAG,SAAS,oBAAoB,aAC9C,KAAC,mBAAmB,IAClB,KAAK,EAAE,IAAI,CAAC,eAAe,EAC3B,GAAG,EAAE,IAAI,CAAC,UAAU,EACpB,QAAQ,SACY,EACrB,IAAI,CAAC,IAAI,IAAI,CACZ,eACE,SAAS,EAAE,GAAG,SAAS,QAAQ,EAC/B,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,MAAM,GACN,CACR,IACG,EACN,eAAK,SAAS,EAAE,GAAG,SAAS,kBAAkB,aAC3C,IAAI,CAAC,WAAW;wBACf,cAAK,SAAS,EAAE,GAAG,SAAS,SAAS,YAAG,IAAI,CAAC,WAAW,GAAO,EAEjE,cAAK,SAAS,EAAE,GAAG,SAAS,gBAAgB,YAC1C,gBAAM,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,SAAS,aACjC,YAAG,SAAS,EAAE,GAAG,SAAS,QAAQ,EAAE,EAAE,EAAE,GAAG,SAAS,QAAQ,YAAG,IAAI,CAAC,aAAa,GAAK,EACrF,IAAI,CAAC,iBAAiB;oCACrB,KAAC,UAAU,IACT,EAAE,EAAC,gBAAgB,EACnB,KAAK,EAAE,GAAG,SAAS,iBAAiB,EACpC,MAAM,EAAE,gBAAgB,CAAC,SAAS,EAClC,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YACnC,IAAI,CAAC,UAAU,GACL,IAEV,GACH,EACL,IAAI,CAAC,MAAM,IAAI,CACd,eAAM,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,SAAS,UAAU,GAAS,CAC7E,IACG,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type ReviewItem from \"./ReviewItem.js\";\nimport UDExRatingIndicator from \"./RatingIndicator.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\n\nexport default function ReviewItemTemplate(this: ReviewItem) {\n const rootClass = \"udex-review-item\";\n\n return (\n <div className={this.reviewItemClasses}>\n <div className={`${rootClass}__rating-container`}>\n <UDExRatingIndicator\n value={this.validatedRating}\n max={this._maxRating}\n readonly>\n </UDExRatingIndicator>\n {this.date && (\n <slot\n className={`${rootClass}__date`}\n slot=\"date\"\n name=\"date\">\n </slot>\n )}\n </div>\n <div className={`${rootClass}__text-container`}>\n {this.reviewTitle &&\n <div className={`${rootClass}__title`}>{this.reviewTitle}</div>\n }\n <div className={`${rootClass}__text-wrapper`}>\n <slot slot=\"content\" name=\"content\">\n <p className={`${rootClass}__text`} id={`${rootClass}__text`}>{this._completeText}</p>\n {this._showTextExpander &&\n <UDExButton\n id=\"reviewExpander\"\n class={`${rootClass}__text-expander`}\n design={UDExButtonDesign.Invisible}\n size={UDExButtonSize.Large}\n onClick={this._toggleText.bind(this)}>\n {this.buttonText}\n </UDExButton>\n }\n </slot>\n </div>\n {this.author && (\n <slot slot=\"author\" name=\"author\" className={`${rootClass}__author`}></slot>\n )}\n </div>\n </div>\n );\n}\n"]}
@@ -155,6 +155,7 @@ declare class UDExSearchableListBase extends UI5Element {
155
155
  static i18nBundle: I18nBundle;
156
156
  _shouldFilterItems?: boolean;
157
157
  _accSearchResultInfo?: string;
158
+ _groupCollapseStateBeforeSearch: Map<string, boolean>;
158
159
  constructor();
159
160
  onBeforeRendering(): void;
160
161
  onItemPress(e: CustomEvent): void;
@@ -180,6 +181,8 @@ declare class UDExSearchableListBase extends UI5Element {
180
181
  isIncludes(string: string, value: string): boolean;
181
182
  revertSelectedItems(items: Array<UDExListItemBase>): void;
182
183
  syncFilteredItems(): void;
184
+ saveGroupCollapseState(): void;
185
+ restoreGroupCollapseState(): void;
183
186
  getSlottedItems(items: Array<UDExListItemBase | UDExListGroupHeaderBase>): Array<UDExListItemBase | UDExListGroupHeaderBase>;
184
187
  getItemFromList(itemId: string): UDExItemFromList;
185
188
  fireSelectionChange(itemId: string): void;
@@ -68,6 +68,7 @@ let UDExSearchableListBase = UDExSearchableListBase_1 = class UDExSearchableList
68
68
  this.defaultAccessibleRole = "list";
69
69
  this._shouldFilterItems = false;
70
70
  this._filteredItems = [];
71
+ this._groupCollapseStateBeforeSearch = new Map();
71
72
  }
72
73
  onBeforeRendering() {
73
74
  if (!this._shouldFilterItems) {
@@ -132,7 +133,14 @@ let UDExSearchableListBase = UDExSearchableListBase_1 = class UDExSearchableList
132
133
  }
133
134
  onSearch(value) {
134
135
  const searchValue = value;
135
- this._shouldFilterItems = true;
136
+ const hasSearchQuery = searchValue !== "";
137
+ if (hasSearchQuery && !this._shouldFilterItems) {
138
+ this.saveGroupCollapseState();
139
+ }
140
+ if (!hasSearchQuery && this._shouldFilterItems) {
141
+ this.restoreGroupCollapseState();
142
+ }
143
+ this._shouldFilterItems = hasSearchQuery;
136
144
  this._filteredItems = this.filterItems(this.getProcessedItems(), searchValue);
137
145
  const items = this.getFlattenItemsArray(this._filteredItems);
138
146
  this._accSearchResultInfo = items.length ? `${items.length} ${this.resultReturnedText}` : this.noMatchesFoundText;
@@ -157,13 +165,19 @@ let UDExSearchableListBase = UDExSearchableListBase_1 = class UDExSearchableList
157
165
  resetSearch() {
158
166
  const search = this.getSearch();
159
167
  search.value = "";
168
+ this._shouldFilterItems = false;
169
+ this.restoreGroupCollapseState();
160
170
  this._filteredItems = this.filterItems(this.getProcessedItems(), "");
161
171
  }
162
172
  filterItems(items, str) {
173
+ const hasSearchQuery = str !== "";
163
174
  return items.filter(preparedItem => {
164
175
  const { isGroup, item } = preparedItem;
165
176
  if (isGroup) {
166
177
  preparedItem.groupItems = this.filterItemsForLabel(preparedItem.groupItems, str);
178
+ if (hasSearchQuery && preparedItem.groupItems.length > 0) {
179
+ item.collapsed = false;
180
+ }
167
181
  return preparedItem.groupItems.length > 0;
168
182
  }
169
183
  return this.checkAndUpdateLabel(item, str);
@@ -210,6 +224,28 @@ let UDExSearchableListBase = UDExSearchableListBase_1 = class UDExSearchableList
210
224
  this._filteredItems = this.getProcessedItems();
211
225
  }
212
226
  }
227
+ saveGroupCollapseState() {
228
+ this._groupCollapseStateBeforeSearch.clear();
229
+ this.items.forEach(item => {
230
+ if (item.isGroup) {
231
+ this._groupCollapseStateBeforeSearch.set(item._id, Boolean(item.collapsed));
232
+ }
233
+ });
234
+ }
235
+ restoreGroupCollapseState() {
236
+ if (!this._groupCollapseStateBeforeSearch.size) {
237
+ return;
238
+ }
239
+ this.items.forEach(item => {
240
+ if (item.isGroup) {
241
+ const collapsed = this._groupCollapseStateBeforeSearch.get(item._id);
242
+ if (collapsed !== undefined) {
243
+ item.collapsed = collapsed;
244
+ }
245
+ }
246
+ });
247
+ this._groupCollapseStateBeforeSearch.clear();
248
+ }
213
249
  getSlottedItems(items) {
214
250
  const arr = [];
215
251
  items.forEach(item => {