@ui5/webcomponents 2.21.0-rc.4 → 2.22.0-rc.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 (127) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/Button.d.ts +11 -0
  4. package/dist/Button.js +3 -0
  5. package/dist/Button.js.map +1 -1
  6. package/dist/Calendar.d.ts +39 -0
  7. package/dist/Calendar.js +109 -3
  8. package/dist/Calendar.js.map +1 -1
  9. package/dist/CalendarHeaderTemplate.d.ts +13 -1
  10. package/dist/CalendarHeaderTemplate.js +48 -12
  11. package/dist/CalendarHeaderTemplate.js.map +1 -1
  12. package/dist/CalendarTemplate.js +58 -2
  13. package/dist/CalendarTemplate.js.map +1 -1
  14. package/dist/Carousel.js +1 -1
  15. package/dist/Carousel.js.map +1 -1
  16. package/dist/DateRangePicker.d.ts +27 -0
  17. package/dist/DateRangePicker.js +57 -3
  18. package/dist/DateRangePicker.js.map +1 -1
  19. package/dist/DateRangePickerTemplate.js +7 -3
  20. package/dist/DateRangePickerTemplate.js.map +1 -1
  21. package/dist/DateTimePicker.js +0 -3
  22. package/dist/DateTimePicker.js.map +1 -1
  23. package/dist/Popup.js +4 -0
  24. package/dist/Popup.js.map +1 -1
  25. package/dist/SliderHandle.d.ts +0 -8
  26. package/dist/SliderHandle.js +0 -11
  27. package/dist/SliderHandle.js.map +1 -1
  28. package/dist/SliderTemplate.js +1 -1
  29. package/dist/SliderTemplate.js.map +1 -1
  30. package/dist/TimePicker.d.ts +3 -2
  31. package/dist/TimePicker.js +1 -0
  32. package/dist/TimePicker.js.map +1 -1
  33. package/dist/css/themes/Breadcrumbs.css +1 -1
  34. package/dist/css/themes/Calendar.css +1 -1
  35. package/dist/css/themes/DatePickerPopover.css +1 -1
  36. package/dist/css/themes/Popup.css +1 -1
  37. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  38. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  39. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  40. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  41. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  42. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  43. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +8 -0
  44. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  45. package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +13 -1
  46. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  47. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  48. package/dist/custom-elements-internal.json +84 -23
  49. package/dist/custom-elements.json +76 -19
  50. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  51. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  52. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  53. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  54. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  55. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  56. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  57. package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
  58. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  59. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  60. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  61. package/dist/generated/i18n/i18n-defaults.js +3 -1
  62. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  63. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  64. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  65. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  66. package/dist/generated/themes/Calendar.css.d.ts +1 -1
  67. package/dist/generated/themes/Calendar.css.js +1 -1
  68. package/dist/generated/themes/Calendar.css.js.map +1 -1
  69. package/dist/generated/themes/DatePickerPopover.css.d.ts +1 -1
  70. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  71. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  72. package/dist/generated/themes/Popup.css.d.ts +1 -1
  73. package/dist/generated/themes/Popup.css.js +1 -1
  74. package/dist/generated/themes/Popup.css.js.map +1 -1
  75. package/dist/generated/themes/ResponsivePopoverCommon.css.d.ts +1 -1
  76. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  77. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  78. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  79. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  80. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  81. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  82. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  83. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  84. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  85. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  86. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  87. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  88. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  89. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  90. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  91. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  92. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  93. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  94. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +8 -0
  95. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  96. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  97. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  98. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  99. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
  100. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +13 -1
  101. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
  102. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  103. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  104. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  105. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  106. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  107. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  108. package/dist/vscode.html-custom-data.json +20 -5
  109. package/dist/web-types.json +41 -11
  110. package/package.json +9 -9
  111. package/src/CalendarHeaderTemplate.tsx +148 -77
  112. package/src/CalendarTemplate.tsx +203 -66
  113. package/src/DateRangePickerTemplate.tsx +29 -1
  114. package/src/SliderTemplate.tsx +0 -1
  115. package/src/i18n/messagebundle.properties +6 -0
  116. package/src/themes/Breadcrumbs.css +7 -6
  117. package/src/themes/Calendar.css +144 -0
  118. package/src/themes/DatePickerPopover.css +3 -2
  119. package/src/themes/Popup.css +4 -0
  120. package/src/themes/ResponsivePopoverCommon.css +6 -1
  121. package/src/themes/base/CalendarHeader-parameters.css +9 -0
  122. package/src/themes/base/TextArea-parameters.css +1 -1
  123. package/src/themes/base/sizes-parameters.css +12 -0
  124. package/src/themes/sap_horizon/TextArea-parameters.css +0 -1
  125. package/src/themes/sap_horizon_dark/TextArea-parameters.css +0 -1
  126. package/src/themes/sap_horizon_hcb/parameters-bundle.css +1 -0
  127. package/src/themes/sap_horizon_hcw/parameters-bundle.css +1 -0
package/dist/Button.d.ts CHANGED
@@ -109,6 +109,17 @@ declare class Button extends UI5Element implements IButton {
109
109
  * @deprecated Set the "type" property to "Submit" to achieve the same result. The "submits" property is ignored if "type" is set to any value other than "Button".
110
110
  */
111
111
  submits: boolean;
112
+ /**
113
+ * Associates the button with a form element by the form's `id` attribute.
114
+ * When set, the button can submit or reset the specified form even if the button
115
+ * is not a descendant of that form.
116
+ *
117
+ * **Note:** This property takes effect only when the button's "type" property is set to "Submit" or "Reset".
118
+ * @default undefined
119
+ * @public
120
+ * @since 2.21.0
121
+ */
122
+ form?: string;
112
123
  /**
113
124
  * Defines the tooltip of the component.
114
125
  *
package/dist/Button.js CHANGED
@@ -480,6 +480,9 @@ __decorate([
480
480
  __decorate([
481
481
  property({ type: Boolean })
482
482
  ], Button.prototype, "submits", void 0);
483
+ __decorate([
484
+ property()
485
+ ], Button.prototype, "form", void 0);
483
486
  __decorate([
484
487
  property()
485
488
  ], Button.prototype, "tooltip", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot, DefaultSlot } 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 slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport {\n\tisSpace,\n\tisEnter,\n\tisEscape,\n\tisShift,\n\tisSpaceShift,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n\tgetAllAccessibleNameRefTexts,\n\tregisterUI5Element,\n\tderegisterUI5Element,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport type { AccessibilityAttributes, AriaRole } from \"@ui5/webcomponents-base\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { I18nText } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getIconAccessibleName } from \"@ui5/webcomponents-base/dist/asset-registries/Icons.js\";\n\nimport {\n\tisDesktop,\n\tisSafari,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport willShowContent from \"@ui5/webcomponents-base/dist/util/willShowContent.js\";\nimport { submitForm, resetForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport { getEnableDefaultTooltips } from \"@ui5/webcomponents-base/dist/config/Tooltips.js\";\nimport toLowercaseEnumValue from \"@ui5/webcomponents-base/dist/util/toLowercaseEnumValue.js\";\nimport ButtonDesign from \"./types/ButtonDesign.js\";\nimport ButtonType from \"./types/ButtonType.js\";\nimport ButtonBadgeDesign from \"./types/ButtonBadgeDesign.js\";\nimport ButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport type ButtonBadge from \"./ButtonBadge.js\";\nimport ButtonTemplate from \"./ButtonTemplate.js\";\nimport {\n\tBUTTON_ARIA_TYPE_ACCEPT,\n\tBUTTON_ARIA_TYPE_REJECT,\n\tBUTTON_ARIA_TYPE_EMPHASIZED,\n\tBUTTON_ARIA_TYPE_ATTENTION,\n\tBUTTON_BADGE_ONE_ITEM,\n\tBUTTON_BADGE_MANY_ITEMS,\n\tBUTTON_ROLE_DESCRIPTION,\n\tLINK_ROLE_DESCRIPTION,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport buttonCss from \"./generated/themes/Button.css.js\";\n\n/**\n * Interface for components that may be used as a button inside numerous higher-order components\n * @public\n */\ninterface IButton extends HTMLElement, ITabbable {\n\tnonInteractive: boolean;\n}\n\nlet isGlobalHandlerAttached = false;\nlet activeButton: Button | null = null;\n\ntype ButtonAccessibilityAttributes = Pick<AccessibilityAttributes, \"expanded\" | \"hasPopup\" | \"controls\" | \"ariaKeyShortcuts\" | \"ariaLabel\">;\n\ntype ButtonClickEventDetail = {\n\toriginalEvent: MouseEvent,\n\taltKey: boolean;\n\tctrlKey: boolean;\n\tmetaKey: boolean;\n\tshiftKey: boolean;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-button` component represents a simple push button.\n * It enables users to trigger actions by clicking or tapping the `ui5-button`, or by pressing\n * certain keyboard keys, such as Enter.\n *\n * ### Usage\n *\n * For the `ui5-button` UI, you can define text, icon, or both. You can also specify\n * whether the text or the icon is displayed first.\n *\n * You can choose from a set of predefined types that offer different\n * styling to correspond to the triggered action.\n *\n * You can set the `ui5-button` as enabled or disabled. An enabled\n * `ui5-button` can be pressed by clicking or tapping it. The button changes\n * its style to provide visual feedback to the user that it is pressed or hovered over with\n * the mouse cursor. A disabled `ui5-button` appears inactive and cannot be pressed.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Button.js\";`\n * @csspart button - Used to style the native button element\n * @csspart icon - Used to style the icon in the native button element\n * @csspart endIcon - Used to style the end icon in the native button element\n * @constructor\n * @extends UI5Element\n * @implements { IButton }\n * @public\n */\n@customElement({\n\ttag: \"ui5-button\",\n\tformAssociated: true,\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: ButtonTemplate,\n\tstyles: buttonCss,\n\tshadowRootOptions: { delegatesFocus: true },\n})\n/**\n * Fired when the component is activated either with a mouse/tap or by using the Enter or Space key.\n *\n * **Note:** The event will not be fired if the `disabled` property is set to `true`.\n *\n * @since 2.10.0\n * @public\n * @param {Event} originalEvent Returns original event that comes from user's **click** interaction\n * @param {boolean} altKey Returns whether the \"ALT\" key was pressed when the event was triggered.\n * @param {boolean} ctrlKey Returns whether the \"CTRL\" key was pressed when the event was triggered.\n * @param {boolean} metaKey Returns whether the \"META\" key was pressed when the event was triggered.\n * @param {boolean} shiftKey Returns whether the \"SHIFT\" key was pressed when the event was triggered.\n */\n@event(\"click\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n/**\n * Fired whenever the active state of the component changes.\n * @private\n */\n@event(\"active-state-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass Button extends UI5Element implements IButton {\n\teventDetails!: {\n\t\t\"click\": ButtonClickEventDetail,\n\t\t\"active-state-change\": void,\n\t};\n\n\t/**\n\t * Defines the component design.\n\t * @default \"Default\"\n\t * @public\n\t */\n\t@property()\n\tdesign: `${ButtonDesign}` = \"Default\";\n\n\t/**\n\t * Defines whether the component is disabled.\n\t * A disabled component can't be pressed or\n\t * focused, and it is not in the tab chain.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines the icon, displayed as graphical element within the component.\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * Example:\n\t * See all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines the icon, displayed as graphical element within the component after the button text.\n\t *\n\t * **Note:** It is highly recommended to use `endIcon` property only together with `icon` and/or `text` properties.\n\t * Usage of `endIcon` only should be avoided.\n\t *\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * Example:\n\t * See all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tendIcon?: string;\n\n\t/**\n\t * When set to `true`, the component will\n\t * automatically submit the nearest HTML form element on `press`.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.`\n\t * @default false\n\t * @public\n\t * @deprecated Set the \"type\" property to \"Submit\" to achieve the same result. The \"submits\" property is ignored if \"type\" is set to any value other than \"Button\".\n\t */\n\t@property({ type: Boolean })\n\tsubmits = false;\n\n\t/**\n\t * Defines the tooltip of the component.\n\t *\n\t * **Note:** A tooltip attribute should be provided for icon-only buttons, in order to represent their exact meaning/function.\n\t * @default undefined\n\t * @public\n\t * @since 1.2.0\n\t */\n\t@property()\n\ttooltip?: string;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property()\n\taccessibleName?: string;\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 1.1.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following fields are supported:\n\t *\n\t * - **expanded**: Indicates whether the button, or another grouping element it controls, is currently expanded or collapsed.\n\t * Accepts the following string values: `true` or `false`\n\t *\n\t * - **hasPopup**: Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by the button.\n\t * Accepts the following string values: `dialog`, `grid`, `listbox`, `menu` or `tree`.\n\t *\n\t * - **ariaLabel**: Defines the accessible ARIA name of the component.\n\t * Accepts any string value.\n\t *\n\t * - **ariaKeyShortcuts**: Defines keyboard shortcuts that activate or give focus to the button.\n\t *\n\t * - **controls**: Identifies the element (or elements) whose contents or presence are controlled by the button element.\n\t * Accepts a lowercase string value.\n\t *\n\t * @public\n\t * @since 1.2.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\taccessibilityAttributes: ButtonAccessibilityAttributes = {};\n\n\t/**\n\t * Defines the accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.5.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Defines whether the button has special form-related functionality.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * @default \"Button\"\n\t * @public\n\t * @since 1.15.0\n\t */\n\t@property()\n\ttype: `${ButtonType}` = \"Button\";\n\n\t/**\n\t * Describes the accessibility role of the button.\n\t *\n\t * **Note:** Use <code>ButtonAccessibleRole.Link</code> role only with a press handler, which performs a navigation. In all other scenarios the default button semantics are recommended.\n\t *\n\t * @default \"Button\"\n\t * @public\n\t * @since 1.23\n\t */\n\t@property()\n\taccessibleRole: `${ButtonAccessibleRole}` = \"Button\";\n\n\t/**\n\t * Used to switch the active state (pressed or not) of the component.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tactive = false;\n\n\t/**\n\t * Defines if a content has been added to the default slot\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ticonOnly = false;\n\n\t/**\n\t * Indicates if the elements has a slotted icon\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thasIcon = false;\n\n\t/**\n\t * Indicates if the elements has a slotted end icon\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thasEndIcon = false;\n\n\t/**\n\t * Indicates if the element is focusable\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tnonInteractive = false;\n\n\t/**\n\t * Defines whether the button shows a loading indicator.\n\t *\n\t * **Note:** If set to `true`, a busy indicator component will be displayed on the related button.\n\t * @default false\n\t * @public\n\t * @since 2.13.0\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Specifies the delay in milliseconds before the loading indicator appears within the associated button.\n\t * @default 1000\n\t * @public\n\t * @since 2.13.0\n\t */\n\t@property({ type: Number })\n\tloadingDelay = 1000;\n\n\t/**\n\t * The button's current title is determined by either the `tooltip` property or the icon's tooltip, with the `tooltip`\n\t * property taking precedence if both are set.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tbuttonTitle?: string;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_iconSettings: object = {};\n\n\t/**\n\t * Defines the tabIndex of the component.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tforcedTabIndex = \"0\";\n\n\t/**\n\t * @since 1.0.0-rc.13\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_isTouch = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_cancelAction = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_isSpacePressed = false;\n\n\t/**\n\t * Constantly updated value of texts collected from the accessibleNameRef elements\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\t_accessibleNameRefTexts?: string;\n\n\t/**\n\t * Defines the text of the component.\n\t *\n\t * **Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\n\t * @public\n\t */\n\t@slot({ type: Node, \"default\": true })\n\ttext!: DefaultSlot<Node>;\n\n\t/**\n\t * Adds a badge to the button.\n\t * @since 2.7.0\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tbadge!: Slot<ButtonBadge>;\n\n\t_deactivate: () => void;\n\t_onclickBound: (e: MouseEvent) => void;\n\t_clickHandlerAttached = false;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._deactivate = () => {\n\t\t\tif (activeButton) {\n\t\t\t\tactiveButton._setActiveState(false);\n\t\t\t}\n\t\t};\n\n\t\tthis._onclickBound = e => {\n\t\t\tif (e instanceof CustomEvent) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._onclick(e);\n\t\t};\n\n\t\tif (!this._clickHandlerAttached) {\n\t\t\tthis.addEventListener(\"click\", this._onclickBound);\n\t\t\tthis._clickHandlerAttached = true;\n\t\t}\n\n\t\tif (!isGlobalHandlerAttached) {\n\t\t\tdocument.addEventListener(\"mouseup\", this._deactivate);\n\n\t\t\tisGlobalHandlerAttached = true;\n\t\t}\n\t}\n\n\t_ontouchstart() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setActiveState(true);\n\t}\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\n\t\tif (!this._clickHandlerAttached) {\n\t\t\tthis.addEventListener(\"click\", this._onclickBound);\n\t\t\tthis._clickHandlerAttached = true;\n\t\t}\n\n\t\tregisterUI5Element(this, this._updateAccessibleNameRefTexts.bind(this));\n\t}\n\n\t_updateAccessibleNameRefTexts() {\n\t\tthis._accessibleNameRefTexts = getAllAccessibleNameRefTexts(this);\n\t}\n\n\tonExitDOM() {\n\t\tif (this._clickHandlerAttached) {\n\t\t\tthis.removeEventListener(\"click\", this._onclickBound);\n\t\t\tthis._clickHandlerAttached = false;\n\t\t}\n\n\t\tif (activeButton === this) {\n\t\t\tactiveButton = null;\n\t\t}\n\n\t\tderegisterUI5Element(this);\n\t}\n\n\tasync onBeforeRendering() {\n\t\tthis._setBadgeOverlayStyle();\n\n\t\tthis.hasIcon = !!this.icon;\n\t\tthis.hasEndIcon = !!this.endIcon;\n\t\tthis.iconOnly = this.isIconOnly;\n\n\t\tconst defaultTooltip = await this.getDefaultTooltip();\n\t\tthis.buttonTitle = this.iconOnly ? this.tooltip ?? defaultTooltip : this.tooltip;\n\t}\n\n\t_setBadgeOverlayStyle() {\n\t\tconst needsOverflowVisible = this.badge.length && (this.badge[0].design === ButtonBadgeDesign.AttentionDot || this.badge[0].design === ButtonBadgeDesign.OverlayText);\n\n\t\tif (needsOverflowVisible) {\n\t\t\tthis._internals.states.add(\"has-overlay-badge\");\n\t\t} else {\n\t\t\tthis._internals.states.delete(\"has-overlay-badge\");\n\t\t}\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\te.stopImmediatePropagation();\n\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.loading) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst {\n\t\t\taltKey,\n\t\t\tctrlKey,\n\t\t\tmetaKey,\n\t\t\tshiftKey,\n\t\t} = e;\n\n\t\tconst prevented = !this.fireDecoratorEvent(\"click\", {\n\t\t\toriginalEvent: e,\n\t\t\taltKey,\n\t\t\tctrlKey,\n\t\t\tmetaKey,\n\t\t\tshiftKey,\n\t\t});\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isSubmit) {\n\t\t\tsubmitForm(this);\n\t\t}\n\n\t\tif (this._isReset) {\n\t\t\tresetForm(this);\n\t\t}\n\n\t\tif (isSafari()) {\n\t\t\tthis.getDomRef()?.focus();\n\t\t}\n\t}\n\n\t_onmousedown() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setActiveState(true);\n\t\tactiveButton = this; // eslint-disable-line\n\t}\n\n\t_ontouchend(e: TouchEvent) {\n\t\tif (this.disabled || this.loading) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (this.active) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\n\t\tif (activeButton) {\n\t\t\tactiveButton._setActiveState(false);\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isShift(e) || isEscape(e)) {\n\t\t\tthis._cancelAction = true;\n\t\t} else if (isSpace(e)) {\n\t\t\tthis._isSpacePressed = true;\n\t\t}\n\n\t\tif ((isSpace(e) || isEnter(e))) {\n\t\t\tthis._setActiveState(true);\n\t\t} else if (this._cancelAction) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tconst isSpaceKey = isSpace(e);\n\t\tconst isCancelKey = isShift(e) || isEscape(e);\n\n\t\tif (isSpaceKey || isSpaceShift(e)) {\n\t\t\tif (this._cancelAction) {\n\t\t\t\tthis._cancelAction = false;\n\t\t\t\tthis._isSpacePressed = false;\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._isSpacePressed = false;\n\t\t} else if (isCancelKey && !this._isSpacePressed) {\n\t\t\tthis._cancelAction = false;\n\t\t}\n\n\t\tif ((isSpace(e) || isEnter(e))) {\n\t\t\tif (this.active) {\n\t\t\t\tthis._setActiveState(false);\n\t\t\t}\n\t\t}\n\t}\n\n\t_onfocusout() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isSpacePressed = false;\n\t\tthis._cancelAction = false;\n\n\t\tif (this.active) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\t}\n\n\t_setActiveState(active: boolean) {\n\t\tconst eventPrevented = !this.fireDecoratorEvent(\"active-state-change\");\n\n\t\tif (eventPrevented || this.loading) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active = active;\n\t}\n\n\tget hasButtonType() {\n\t\treturn this.design !== ButtonDesign.Default && this.design !== ButtonDesign.Transparent;\n\t}\n\n\tget isIconOnly() {\n\t\treturn !willShowContent(this.text);\n\t}\n\n\tstatic typeTextMappings(): Record<string, I18nText> {\n\t\treturn {\n\t\t\t\"Positive\": BUTTON_ARIA_TYPE_ACCEPT,\n\t\t\t\"Negative\": BUTTON_ARIA_TYPE_REJECT,\n\t\t\t\"Emphasized\": BUTTON_ARIA_TYPE_EMPHASIZED,\n\t\t\t\"Attention\": BUTTON_ARIA_TYPE_ATTENTION,\n\t\t};\n\t}\n\n\tgetDefaultTooltip() {\n\t\tif (!getEnableDefaultTooltips()) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn getIconAccessibleName(this.icon);\n\t}\n\n\tget buttonTypeText() {\n\t\treturn Button.i18nBundle.getText(Button.typeTextMappings()[this.design]);\n\t}\n\n\tget effectiveAccRole(): AriaRole {\n\t\treturn toLowercaseEnumValue(this.accessibleRole);\n\t}\n\n\tget tabIndexValue() {\n\t\tif (this.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tabindex = this.getAttribute(\"tabindex\");\n\n\t\tif (tabindex) {\n\t\t\treturn Number.parseInt(tabindex);\n\t\t}\n\n\t\treturn this.nonInteractive ? -1 : Number.parseInt(this.forcedTabIndex);\n\t}\n\n\tget ariaLabelText() {\n\t\t// Use accessibleNameRef texts (cached), then accessibleName (direct), then textContent as fallback\n\t\tconst effectiveAriaLabelText = this._accessibleNameRefTexts || this.accessibleName || \"\";\n\t\tconst textContent = this.textContent || \"\";\n\t\tconst internalLabelText = this.effectiveBadgeDescriptionText || \"\";\n\n\t\t// Use either the effective aria label text (if accessibleName is provided) or the button's text content\n\t\tconst mainLabelText = effectiveAriaLabelText || textContent;\n\t\tconst labelParts = [mainLabelText, internalLabelText].filter(part => part);\n\t\treturn labelParts.join(\" \");\n\t}\n\n\tget ariaDescriptionText() {\n\t\tconst accessibleDescription = this.accessibleDescription === \"\" ? undefined : this.accessibleDescription;\n\t\tconst typeLabelText = this.hasButtonType ? this.buttonTypeText : \"\";\n\n\t\tconst descriptionParts = [accessibleDescription, typeLabelText].filter(part => part);\n\t\treturn descriptionParts.length > 0 ? descriptionParts.join(\" \") : undefined;\n\t}\n\n\tget _computedAccessibilityAttributes(): ButtonAccessibilityAttributes {\n\t\treturn {\n\t\t\texpanded: this.accessibilityAttributes.expanded,\n\t\t\thasPopup: this.accessibilityAttributes.hasPopup,\n\t\t\tcontrols: this.accessibilityAttributes.controls,\n\t\t\tariaKeyShortcuts: this.accessibilityAttributes.ariaKeyShortcuts,\n\t\t\tariaLabel: this.accessibilityAttributes.ariaLabel || this.ariaLabelText,\n\t\t};\n\t}\n\n\tget accessibilityInfo() {\n\t\treturn {\n\t\t\tdescription: this.ariaDescriptionText,\n\t\t\trole: this.effectiveAccRole,\n\t\t\tdisabled: this.disabled,\n\t\t\tchildren: this.text,\n\t\t\ttype: this.effectiveAccRoleTranslation,\n\t\t\tlabel: this.ariaLabelText,\n\t\t};\n\t}\n\n\tget effectiveAccRoleTranslation(): string {\n\t\tif (this.accessibleRole as ButtonAccessibleRole === ButtonAccessibleRole.Button) {\n\t\t\treturn Button.i18nBundle.getText(BUTTON_ROLE_DESCRIPTION);\n\t\t}\n\n\t\tif (this.accessibleRole as ButtonAccessibleRole === ButtonAccessibleRole.Link) {\n\t\t\treturn Button.i18nBundle.getText(LINK_ROLE_DESCRIPTION);\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\tget effectiveBadgeDescriptionText() {\n\t\tif (!this.shouldRenderBadge) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst badgeEffectiveText = this.badge[0].effectiveText;\n\n\t\t// Use distinct i18n keys for singular and plural badge values to ensure proper localization.\n\t\t// Some languages have different grammatical rules for singular and plural forms,\n\t\t// so separate keys (BUTTON_BADGE_ONE_ITEM and BUTTON_BADGE_MANY_ITEMS) are necessary.\n\t\tswitch (badgeEffectiveText) {\n\t\tcase \"\":\n\t\t\treturn badgeEffectiveText;\n\t\tcase \"1\":\n\t\t\treturn Button.i18nBundle.getText(BUTTON_BADGE_ONE_ITEM, badgeEffectiveText);\n\t\tdefault:\n\t\t\treturn Button.i18nBundle.getText(BUTTON_BADGE_MANY_ITEMS, badgeEffectiveText);\n\t\t}\n\t}\n\n\tget _isSubmit() {\n\t\treturn this.type === ButtonType.Submit || this.submits;\n\t}\n\n\tget _isReset() {\n\t\treturn this.type === ButtonType.Reset;\n\t}\n\n\tget shouldRenderBadge() {\n\t\treturn !!this.badge.length && (!!this.badge[0].text.length || this.badge[0].design === ButtonBadgeDesign.AttentionDot);\n\t}\n}\n\nButton.define();\n\nexport default Button;\nexport type {\n\tButtonAccessibilityAttributes,\n\tButtonClickEventDetail,\n\tIButton,\n};\n"]}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../src/Button.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot, DefaultSlot } 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 slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport {\n\tisSpace,\n\tisEnter,\n\tisEscape,\n\tisShift,\n\tisSpaceShift,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n\tgetAllAccessibleNameRefTexts,\n\tregisterUI5Element,\n\tderegisterUI5Element,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport type { AccessibilityAttributes, AriaRole } from \"@ui5/webcomponents-base\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { I18nText } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getIconAccessibleName } from \"@ui5/webcomponents-base/dist/asset-registries/Icons.js\";\n\nimport {\n\tisDesktop,\n\tisSafari,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport willShowContent from \"@ui5/webcomponents-base/dist/util/willShowContent.js\";\nimport { submitForm, resetForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport { getEnableDefaultTooltips } from \"@ui5/webcomponents-base/dist/config/Tooltips.js\";\nimport toLowercaseEnumValue from \"@ui5/webcomponents-base/dist/util/toLowercaseEnumValue.js\";\nimport ButtonDesign from \"./types/ButtonDesign.js\";\nimport ButtonType from \"./types/ButtonType.js\";\nimport ButtonBadgeDesign from \"./types/ButtonBadgeDesign.js\";\nimport ButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport type ButtonBadge from \"./ButtonBadge.js\";\nimport ButtonTemplate from \"./ButtonTemplate.js\";\nimport {\n\tBUTTON_ARIA_TYPE_ACCEPT,\n\tBUTTON_ARIA_TYPE_REJECT,\n\tBUTTON_ARIA_TYPE_EMPHASIZED,\n\tBUTTON_ARIA_TYPE_ATTENTION,\n\tBUTTON_BADGE_ONE_ITEM,\n\tBUTTON_BADGE_MANY_ITEMS,\n\tBUTTON_ROLE_DESCRIPTION,\n\tLINK_ROLE_DESCRIPTION,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport buttonCss from \"./generated/themes/Button.css.js\";\n\n/**\n * Interface for components that may be used as a button inside numerous higher-order components\n * @public\n */\ninterface IButton extends HTMLElement, ITabbable {\n\tnonInteractive: boolean;\n}\n\nlet isGlobalHandlerAttached = false;\nlet activeButton: Button | null = null;\n\ntype ButtonAccessibilityAttributes = Pick<AccessibilityAttributes, \"expanded\" | \"hasPopup\" | \"controls\" | \"ariaKeyShortcuts\" | \"ariaLabel\">;\n\ntype ButtonClickEventDetail = {\n\toriginalEvent: MouseEvent,\n\taltKey: boolean;\n\tctrlKey: boolean;\n\tmetaKey: boolean;\n\tshiftKey: boolean;\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-button` component represents a simple push button.\n * It enables users to trigger actions by clicking or tapping the `ui5-button`, or by pressing\n * certain keyboard keys, such as Enter.\n *\n * ### Usage\n *\n * For the `ui5-button` UI, you can define text, icon, or both. You can also specify\n * whether the text or the icon is displayed first.\n *\n * You can choose from a set of predefined types that offer different\n * styling to correspond to the triggered action.\n *\n * You can set the `ui5-button` as enabled or disabled. An enabled\n * `ui5-button` can be pressed by clicking or tapping it. The button changes\n * its style to provide visual feedback to the user that it is pressed or hovered over with\n * the mouse cursor. A disabled `ui5-button` appears inactive and cannot be pressed.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Button.js\";`\n * @csspart button - Used to style the native button element\n * @csspart icon - Used to style the icon in the native button element\n * @csspart endIcon - Used to style the end icon in the native button element\n * @constructor\n * @extends UI5Element\n * @implements { IButton }\n * @public\n */\n@customElement({\n\ttag: \"ui5-button\",\n\tformAssociated: true,\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: ButtonTemplate,\n\tstyles: buttonCss,\n\tshadowRootOptions: { delegatesFocus: true },\n})\n/**\n * Fired when the component is activated either with a mouse/tap or by using the Enter or Space key.\n *\n * **Note:** The event will not be fired if the `disabled` property is set to `true`.\n *\n * @since 2.10.0\n * @public\n * @param {Event} originalEvent Returns original event that comes from user's **click** interaction\n * @param {boolean} altKey Returns whether the \"ALT\" key was pressed when the event was triggered.\n * @param {boolean} ctrlKey Returns whether the \"CTRL\" key was pressed when the event was triggered.\n * @param {boolean} metaKey Returns whether the \"META\" key was pressed when the event was triggered.\n * @param {boolean} shiftKey Returns whether the \"SHIFT\" key was pressed when the event was triggered.\n */\n@event(\"click\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n/**\n * Fired whenever the active state of the component changes.\n * @private\n */\n@event(\"active-state-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass Button extends UI5Element implements IButton {\n\teventDetails!: {\n\t\t\"click\": ButtonClickEventDetail,\n\t\t\"active-state-change\": void,\n\t};\n\n\t/**\n\t * Defines the component design.\n\t * @default \"Default\"\n\t * @public\n\t */\n\t@property()\n\tdesign: `${ButtonDesign}` = \"Default\";\n\n\t/**\n\t * Defines whether the component is disabled.\n\t * A disabled component can't be pressed or\n\t * focused, and it is not in the tab chain.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Defines the icon, displayed as graphical element within the component.\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * Example:\n\t * See all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\ticon?: string;\n\n\t/**\n\t * Defines the icon, displayed as graphical element within the component after the button text.\n\t *\n\t * **Note:** It is highly recommended to use `endIcon` property only together with `icon` and/or `text` properties.\n\t * Usage of `endIcon` only should be avoided.\n\t *\n\t * The SAP-icons font provides numerous options.\n\t *\n\t * Example:\n\t * See all the available icons within the [Icon Explorer](https://sdk.openui5.org/test-resources/sap/m/demokit/iconExplorer/webapp/index.html).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tendIcon?: string;\n\n\t/**\n\t * When set to `true`, the component will\n\t * automatically submit the nearest HTML form element on `press`.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.`\n\t * @default false\n\t * @public\n\t * @deprecated Set the \"type\" property to \"Submit\" to achieve the same result. The \"submits\" property is ignored if \"type\" is set to any value other than \"Button\".\n\t */\n\t@property({ type: Boolean })\n\tsubmits = false;\n\n\t/**\n\t * Associates the button with a form element by the form's `id` attribute.\n\t * When set, the button can submit or reset the specified form even if the button\n\t * is not a descendant of that form.\n\t *\n\t * **Note:** This property takes effect only when the button's \"type\" property is set to \"Submit\" or \"Reset\".\n\t * @default undefined\n\t * @public\n\t * @since 2.21.0\n\t */\n\t@property()\n\tform?: string;\n\n\t/**\n\t * Defines the tooltip of the component.\n\t *\n\t * **Note:** A tooltip attribute should be provided for icon-only buttons, in order to represent their exact meaning/function.\n\t * @default undefined\n\t * @public\n\t * @since 1.2.0\n\t */\n\t@property()\n\ttooltip?: string;\n\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.0-rc.15\n\t */\n\t@property()\n\taccessibleName?: string;\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 1.1.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the additional accessibility attributes that will be applied to the component.\n\t * The following fields are supported:\n\t *\n\t * - **expanded**: Indicates whether the button, or another grouping element it controls, is currently expanded or collapsed.\n\t * Accepts the following string values: `true` or `false`\n\t *\n\t * - **hasPopup**: Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by the button.\n\t * Accepts the following string values: `dialog`, `grid`, `listbox`, `menu` or `tree`.\n\t *\n\t * - **ariaLabel**: Defines the accessible ARIA name of the component.\n\t * Accepts any string value.\n\t *\n\t * - **ariaKeyShortcuts**: Defines keyboard shortcuts that activate or give focus to the button.\n\t *\n\t * - **controls**: Identifies the element (or elements) whose contents or presence are controlled by the button element.\n\t * Accepts a lowercase string value.\n\t *\n\t * @public\n\t * @since 1.2.0\n\t * @default {}\n\t */\n\t@property({ type: Object })\n\taccessibilityAttributes: ButtonAccessibilityAttributes = {};\n\n\t/**\n\t * Defines the accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.5.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Defines whether the button has special form-related functionality.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * @default \"Button\"\n\t * @public\n\t * @since 1.15.0\n\t */\n\t@property()\n\ttype: `${ButtonType}` = \"Button\";\n\n\t/**\n\t * Describes the accessibility role of the button.\n\t *\n\t * **Note:** Use <code>ButtonAccessibleRole.Link</code> role only with a press handler, which performs a navigation. In all other scenarios the default button semantics are recommended.\n\t *\n\t * @default \"Button\"\n\t * @public\n\t * @since 1.23\n\t */\n\t@property()\n\taccessibleRole: `${ButtonAccessibleRole}` = \"Button\";\n\n\t/**\n\t * Used to switch the active state (pressed or not) of the component.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tactive = false;\n\n\t/**\n\t * Defines if a content has been added to the default slot\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ticonOnly = false;\n\n\t/**\n\t * Indicates if the elements has a slotted icon\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thasIcon = false;\n\n\t/**\n\t * Indicates if the elements has a slotted end icon\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thasEndIcon = false;\n\n\t/**\n\t * Indicates if the element is focusable\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tnonInteractive = false;\n\n\t/**\n\t * Defines whether the button shows a loading indicator.\n\t *\n\t * **Note:** If set to `true`, a busy indicator component will be displayed on the related button.\n\t * @default false\n\t * @public\n\t * @since 2.13.0\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Specifies the delay in milliseconds before the loading indicator appears within the associated button.\n\t * @default 1000\n\t * @public\n\t * @since 2.13.0\n\t */\n\t@property({ type: Number })\n\tloadingDelay = 1000;\n\n\t/**\n\t * The button's current title is determined by either the `tooltip` property or the icon's tooltip, with the `tooltip`\n\t * property taking precedence if both are set.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tbuttonTitle?: string;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Object })\n\t_iconSettings: object = {};\n\n\t/**\n\t * Defines the tabIndex of the component.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tforcedTabIndex = \"0\";\n\n\t/**\n\t * @since 1.0.0-rc.13\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\t_isTouch = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_cancelAction = false;\n\n\t@property({ type: Boolean, noAttribute: true })\n\t_isSpacePressed = false;\n\n\t/**\n\t * Constantly updated value of texts collected from the accessibleNameRef elements\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\t_accessibleNameRefTexts?: string;\n\n\t/**\n\t * Defines the text of the component.\n\t *\n\t * **Note:** Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.\n\t * @public\n\t */\n\t@slot({ type: Node, \"default\": true })\n\ttext!: DefaultSlot<Node>;\n\n\t/**\n\t * Adds a badge to the button.\n\t * @since 2.7.0\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true })\n\tbadge!: Slot<ButtonBadge>;\n\n\t_deactivate: () => void;\n\t_onclickBound: (e: MouseEvent) => void;\n\t_clickHandlerAttached = false;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._deactivate = () => {\n\t\t\tif (activeButton) {\n\t\t\t\tactiveButton._setActiveState(false);\n\t\t\t}\n\t\t};\n\n\t\tthis._onclickBound = e => {\n\t\t\tif (e instanceof CustomEvent) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._onclick(e);\n\t\t};\n\n\t\tif (!this._clickHandlerAttached) {\n\t\t\tthis.addEventListener(\"click\", this._onclickBound);\n\t\t\tthis._clickHandlerAttached = true;\n\t\t}\n\n\t\tif (!isGlobalHandlerAttached) {\n\t\t\tdocument.addEventListener(\"mouseup\", this._deactivate);\n\n\t\t\tisGlobalHandlerAttached = true;\n\t\t}\n\t}\n\n\t_ontouchstart() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setActiveState(true);\n\t}\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\n\t\tif (!this._clickHandlerAttached) {\n\t\t\tthis.addEventListener(\"click\", this._onclickBound);\n\t\t\tthis._clickHandlerAttached = true;\n\t\t}\n\n\t\tregisterUI5Element(this, this._updateAccessibleNameRefTexts.bind(this));\n\t}\n\n\t_updateAccessibleNameRefTexts() {\n\t\tthis._accessibleNameRefTexts = getAllAccessibleNameRefTexts(this);\n\t}\n\n\tonExitDOM() {\n\t\tif (this._clickHandlerAttached) {\n\t\t\tthis.removeEventListener(\"click\", this._onclickBound);\n\t\t\tthis._clickHandlerAttached = false;\n\t\t}\n\n\t\tif (activeButton === this) {\n\t\t\tactiveButton = null;\n\t\t}\n\n\t\tderegisterUI5Element(this);\n\t}\n\n\tasync onBeforeRendering() {\n\t\tthis._setBadgeOverlayStyle();\n\n\t\tthis.hasIcon = !!this.icon;\n\t\tthis.hasEndIcon = !!this.endIcon;\n\t\tthis.iconOnly = this.isIconOnly;\n\n\t\tconst defaultTooltip = await this.getDefaultTooltip();\n\t\tthis.buttonTitle = this.iconOnly ? this.tooltip ?? defaultTooltip : this.tooltip;\n\t}\n\n\t_setBadgeOverlayStyle() {\n\t\tconst needsOverflowVisible = this.badge.length && (this.badge[0].design === ButtonBadgeDesign.AttentionDot || this.badge[0].design === ButtonBadgeDesign.OverlayText);\n\n\t\tif (needsOverflowVisible) {\n\t\t\tthis._internals.states.add(\"has-overlay-badge\");\n\t\t} else {\n\t\t\tthis._internals.states.delete(\"has-overlay-badge\");\n\t\t}\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\te.stopImmediatePropagation();\n\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.loading) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tconst {\n\t\t\taltKey,\n\t\t\tctrlKey,\n\t\t\tmetaKey,\n\t\t\tshiftKey,\n\t\t} = e;\n\n\t\tconst prevented = !this.fireDecoratorEvent(\"click\", {\n\t\t\toriginalEvent: e,\n\t\t\taltKey,\n\t\t\tctrlKey,\n\t\t\tmetaKey,\n\t\t\tshiftKey,\n\t\t});\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isSubmit) {\n\t\t\tsubmitForm(this);\n\t\t}\n\n\t\tif (this._isReset) {\n\t\t\tresetForm(this);\n\t\t}\n\n\t\tif (isSafari()) {\n\t\t\tthis.getDomRef()?.focus();\n\t\t}\n\t}\n\n\t_onmousedown() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._setActiveState(true);\n\t\tactiveButton = this; // eslint-disable-line\n\t}\n\n\t_ontouchend(e: TouchEvent) {\n\t\tif (this.disabled || this.loading) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tif (this.active) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\n\t\tif (activeButton) {\n\t\t\tactiveButton._setActiveState(false);\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isShift(e) || isEscape(e)) {\n\t\t\tthis._cancelAction = true;\n\t\t} else if (isSpace(e)) {\n\t\t\tthis._isSpacePressed = true;\n\t\t}\n\n\t\tif ((isSpace(e) || isEnter(e))) {\n\t\t\tthis._setActiveState(true);\n\t\t} else if (this._cancelAction) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tconst isSpaceKey = isSpace(e);\n\t\tconst isCancelKey = isShift(e) || isEscape(e);\n\n\t\tif (isSpaceKey || isSpaceShift(e)) {\n\t\t\tif (this._cancelAction) {\n\t\t\t\tthis._cancelAction = false;\n\t\t\t\tthis._isSpacePressed = false;\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._isSpacePressed = false;\n\t\t} else if (isCancelKey && !this._isSpacePressed) {\n\t\t\tthis._cancelAction = false;\n\t\t}\n\n\t\tif ((isSpace(e) || isEnter(e))) {\n\t\t\tif (this.active) {\n\t\t\t\tthis._setActiveState(false);\n\t\t\t}\n\t\t}\n\t}\n\n\t_onfocusout() {\n\t\tif (this.nonInteractive) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isSpacePressed = false;\n\t\tthis._cancelAction = false;\n\n\t\tif (this.active) {\n\t\t\tthis._setActiveState(false);\n\t\t}\n\t}\n\n\t_setActiveState(active: boolean) {\n\t\tconst eventPrevented = !this.fireDecoratorEvent(\"active-state-change\");\n\n\t\tif (eventPrevented || this.loading) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active = active;\n\t}\n\n\tget hasButtonType() {\n\t\treturn this.design !== ButtonDesign.Default && this.design !== ButtonDesign.Transparent;\n\t}\n\n\tget isIconOnly() {\n\t\treturn !willShowContent(this.text);\n\t}\n\n\tstatic typeTextMappings(): Record<string, I18nText> {\n\t\treturn {\n\t\t\t\"Positive\": BUTTON_ARIA_TYPE_ACCEPT,\n\t\t\t\"Negative\": BUTTON_ARIA_TYPE_REJECT,\n\t\t\t\"Emphasized\": BUTTON_ARIA_TYPE_EMPHASIZED,\n\t\t\t\"Attention\": BUTTON_ARIA_TYPE_ATTENTION,\n\t\t};\n\t}\n\n\tgetDefaultTooltip() {\n\t\tif (!getEnableDefaultTooltips()) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn getIconAccessibleName(this.icon);\n\t}\n\n\tget buttonTypeText() {\n\t\treturn Button.i18nBundle.getText(Button.typeTextMappings()[this.design]);\n\t}\n\n\tget effectiveAccRole(): AriaRole {\n\t\treturn toLowercaseEnumValue(this.accessibleRole);\n\t}\n\n\tget tabIndexValue() {\n\t\tif (this.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tabindex = this.getAttribute(\"tabindex\");\n\n\t\tif (tabindex) {\n\t\t\treturn Number.parseInt(tabindex);\n\t\t}\n\n\t\treturn this.nonInteractive ? -1 : Number.parseInt(this.forcedTabIndex);\n\t}\n\n\tget ariaLabelText() {\n\t\t// Use accessibleNameRef texts (cached), then accessibleName (direct), then textContent as fallback\n\t\tconst effectiveAriaLabelText = this._accessibleNameRefTexts || this.accessibleName || \"\";\n\t\tconst textContent = this.textContent || \"\";\n\t\tconst internalLabelText = this.effectiveBadgeDescriptionText || \"\";\n\n\t\t// Use either the effective aria label text (if accessibleName is provided) or the button's text content\n\t\tconst mainLabelText = effectiveAriaLabelText || textContent;\n\t\tconst labelParts = [mainLabelText, internalLabelText].filter(part => part);\n\t\treturn labelParts.join(\" \");\n\t}\n\n\tget ariaDescriptionText() {\n\t\tconst accessibleDescription = this.accessibleDescription === \"\" ? undefined : this.accessibleDescription;\n\t\tconst typeLabelText = this.hasButtonType ? this.buttonTypeText : \"\";\n\n\t\tconst descriptionParts = [accessibleDescription, typeLabelText].filter(part => part);\n\t\treturn descriptionParts.length > 0 ? descriptionParts.join(\" \") : undefined;\n\t}\n\n\tget _computedAccessibilityAttributes(): ButtonAccessibilityAttributes {\n\t\treturn {\n\t\t\texpanded: this.accessibilityAttributes.expanded,\n\t\t\thasPopup: this.accessibilityAttributes.hasPopup,\n\t\t\tcontrols: this.accessibilityAttributes.controls,\n\t\t\tariaKeyShortcuts: this.accessibilityAttributes.ariaKeyShortcuts,\n\t\t\tariaLabel: this.accessibilityAttributes.ariaLabel || this.ariaLabelText,\n\t\t};\n\t}\n\n\tget accessibilityInfo() {\n\t\treturn {\n\t\t\tdescription: this.ariaDescriptionText,\n\t\t\trole: this.effectiveAccRole,\n\t\t\tdisabled: this.disabled,\n\t\t\tchildren: this.text,\n\t\t\ttype: this.effectiveAccRoleTranslation,\n\t\t\tlabel: this.ariaLabelText,\n\t\t};\n\t}\n\n\tget effectiveAccRoleTranslation(): string {\n\t\tif (this.accessibleRole as ButtonAccessibleRole === ButtonAccessibleRole.Button) {\n\t\t\treturn Button.i18nBundle.getText(BUTTON_ROLE_DESCRIPTION);\n\t\t}\n\n\t\tif (this.accessibleRole as ButtonAccessibleRole === ButtonAccessibleRole.Link) {\n\t\t\treturn Button.i18nBundle.getText(LINK_ROLE_DESCRIPTION);\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\tget effectiveBadgeDescriptionText() {\n\t\tif (!this.shouldRenderBadge) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tconst badgeEffectiveText = this.badge[0].effectiveText;\n\n\t\t// Use distinct i18n keys for singular and plural badge values to ensure proper localization.\n\t\t// Some languages have different grammatical rules for singular and plural forms,\n\t\t// so separate keys (BUTTON_BADGE_ONE_ITEM and BUTTON_BADGE_MANY_ITEMS) are necessary.\n\t\tswitch (badgeEffectiveText) {\n\t\tcase \"\":\n\t\t\treturn badgeEffectiveText;\n\t\tcase \"1\":\n\t\t\treturn Button.i18nBundle.getText(BUTTON_BADGE_ONE_ITEM, badgeEffectiveText);\n\t\tdefault:\n\t\t\treturn Button.i18nBundle.getText(BUTTON_BADGE_MANY_ITEMS, badgeEffectiveText);\n\t\t}\n\t}\n\n\tget _isSubmit() {\n\t\treturn this.type === ButtonType.Submit || this.submits;\n\t}\n\n\tget _isReset() {\n\t\treturn this.type === ButtonType.Reset;\n\t}\n\n\tget shouldRenderBadge() {\n\t\treturn !!this.badge.length && (!!this.badge[0].text.length || this.badge[0].design === ButtonBadgeDesign.AttentionDot);\n\t}\n}\n\nButton.define();\n\nexport default Button;\nexport type {\n\tButtonAccessibilityAttributes,\n\tButtonClickEventDetail,\n\tIButton,\n};\n"]}
@@ -16,6 +16,7 @@ import type CalendarLegend from "./CalendarLegend.js";
16
16
  import type { CalendarLegendItemSelectionChangeEventDetail } from "./CalendarLegend.js";
17
17
  import type SpecialCalendarDate from "./SpecialCalendarDate.js";
18
18
  import type CalendarLegendItemType from "./types/CalendarLegendItemType.js";
19
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
19
20
  import "@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js";
20
21
  import type { YearRangePickerChangeEventDetail } from "./YearRangePicker.js";
21
22
  interface ICalendarPicker extends HTMLElement {
@@ -195,6 +196,13 @@ declare class Calendar extends CalendarPart {
195
196
  * @public
196
197
  */
197
198
  hideWeekNumbers: boolean;
199
+ /**
200
+ * Defines whether the component displays two months side by side in the picker popup.
201
+ * @default false
202
+ * @private
203
+ * @since 2.22.0
204
+ */
205
+ _showTwoMonths: boolean;
198
206
  /**
199
207
  * Which picker is currently visible to the user: day/month/year/yearRange
200
208
  * @private
@@ -242,8 +250,34 @@ declare class Calendar extends CalendarPart {
242
250
  * @private
243
251
  */
244
252
  _selectedItemType: `${CalendarLegendItemType}`;
253
+ _phoneMode: boolean;
254
+ _handleResizeBound: ResizeObserverCallback;
245
255
  static i18nBundle: I18nBundle;
246
256
  constructor();
257
+ onEnterDOM(): void;
258
+ get _phoneView(): boolean;
259
+ get _portraitView(): boolean;
260
+ /**
261
+ * Handles document resize to switch between `phoneMode` and `portraitMode`.
262
+ * - `_phoneMode`: When resolution is under PHONE_MODE_BREAKPOINT (regardless of device type)
263
+ */
264
+ _handleResize(): void;
265
+ onExitDOM(): void;
266
+ /**
267
+ * Returns the timestamp for a specific month index when displaying multiple months
268
+ * @private
269
+ */
270
+ _getMonthTimestamp(monthIndex: number): number;
271
+ /**
272
+ * Generates header button text (month and year) for a specific month timestamp
273
+ * @private
274
+ */
275
+ _getHeaderTextForMonth(monthTimestamp: number): {
276
+ monthText: string;
277
+ yearText: string;
278
+ secondMonthText?: string;
279
+ secondYearText?: string;
280
+ };
247
281
  /**
248
282
  * @private
249
283
  */
@@ -302,6 +336,8 @@ declare class Calendar extends CalendarPart {
302
336
  monthButtonText: any;
303
337
  monthButtonInfo: any;
304
338
  } | undefined;
339
+ get _isCompactMode(): boolean;
340
+ get _monthsToShow(): 1 | 2;
305
341
  /**
306
342
  * The month button is hidden when the month picker or year picker is shown
307
343
  * @private
@@ -321,6 +357,9 @@ declare class Calendar extends CalendarPart {
321
357
  get _isMonthPickerHidden(): boolean;
322
358
  get _isYearPickerHidden(): boolean;
323
359
  get _isYearRangePickerHidden(): boolean;
360
+ get _isDefaultHeaderModeInMultipleMonths(): boolean;
361
+ get _shouldShowOnePickerHeaderButtonInMultipleMonths(): boolean;
362
+ get _inert(): boolean;
324
363
  get _currentYearRange(): CalendarYearRangeT;
325
364
  _fireEventAndUpdateSelectedDates(selectedDates: Array<number>): void;
326
365
  onSelectedDatesChange(e: CustomEvent<DayPickerChangeEventDetail>): void;
package/dist/Calendar.js CHANGED
@@ -28,6 +28,8 @@ import "./SpecialCalendarDate.js";
28
28
  import CalendarPart from "./CalendarPart.js";
29
29
  import CalendarSelectionMode from "./types/CalendarSelectionMode.js";
30
30
  import CalendarPickersMode from "./types/CalendarPickersMode.js";
31
+ import { isPhone } from "@ui5/webcomponents-base/dist/Device.js";
32
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
31
33
  // Default calendar for bundling
32
34
  import "@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js";
33
35
  // Template
@@ -36,6 +38,9 @@ import CalendarTemplate from "./CalendarTemplate.js";
36
38
  import calendarCSS from "./generated/themes/Calendar.css.js";
37
39
  import CalendarHeaderCss from "./generated/themes/CalendarHeader.css.js";
38
40
  import { CALENDAR_HEADER_MONTH_BUTTON, CALENDAR_HEADER_MONTH_BUTTON_SHORTCUT, CALENDAR_HEADER_YEAR_BUTTON, CALENDAR_HEADER_YEAR_BUTTON_SHORTCUT, CALENDAR_HEADER_YEAR_RANGE_BUTTON, CALENDAR_HEADER_YEAR_RANGE_BUTTON_SHORTCUT, CALENDAR_HEADER_MONTH_NEXT_BUTTON_TITLE, CALENDAR_HEADER_MONTH_NEXT_BUTTON_SHORTCUT, CALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_TITLE, CALENDAR_HEADER_MONTH_PREVIOUS_BUTTON_SHORTCUT, CALENDAR_HEADER_YEAR_NEXT_BUTTON_TITLE, CALENDAR_HEADER_YEAR_PREVIOUS_BUTTON_TITLE, CALENDAR_HEADER_YEAR_RANGE_NEXT_BUTTON_TITLE, CALENDAR_HEADER_YEAR_RANGE_PREVIOUS_BUTTON_TITLE, } from "./generated/i18n/i18n-defaults.js";
41
+ import getEffectiveContentDensity from "@ui5/webcomponents-base/dist/util/getEffectiveContentDensity.js";
42
+ import modifyDateBy from "@ui5/webcomponents-localization/dist/dates/modifyDateBy.js";
43
+ const PHONE_MODE_BREAKPOINT = 640; // px
39
44
  /**
40
45
  * @class
41
46
  *
@@ -173,6 +178,13 @@ let Calendar = Calendar_1 = class Calendar extends CalendarPart {
173
178
  * @public
174
179
  */
175
180
  this.hideWeekNumbers = false;
181
+ /**
182
+ * Defines whether the component displays two months side by side in the picker popup.
183
+ * @default false
184
+ * @private
185
+ * @since 2.22.0
186
+ */
187
+ this._showTwoMonths = false;
176
188
  /**
177
189
  * Which picker is currently visible to the user: day/month/year/yearRange
178
190
  * @private
@@ -187,7 +199,75 @@ let Calendar = Calendar_1 = class Calendar extends CalendarPart {
187
199
  * @private
188
200
  */
189
201
  this._selectedItemType = "None";
202
+ this._phoneMode = false;
190
203
  this._valueIsProcessed = false;
204
+ this._handleResizeBound = this._handleResize.bind(this);
205
+ }
206
+ onEnterDOM() {
207
+ ResizeHandler.register(document.body, this._handleResizeBound);
208
+ this._handleResize();
209
+ }
210
+ get _phoneView() {
211
+ return isPhone() || this._phoneMode;
212
+ }
213
+ get _portraitView() {
214
+ return this._phoneMode;
215
+ }
216
+ /**
217
+ * Handles document resize to switch between `phoneMode` and `portraitMode`.
218
+ * - `_phoneMode`: When resolution is under PHONE_MODE_BREAKPOINT (regardless of device type)
219
+ */
220
+ _handleResize() {
221
+ if (!this._showTwoMonths) {
222
+ return;
223
+ }
224
+ const documentWidth = document.body.offsetWidth;
225
+ const underBreakpoint = documentWidth <= PHONE_MODE_BREAKPOINT;
226
+ // Phone mode: only when it's an actual phone device
227
+ const phoneModeChange = (underBreakpoint && !this._phoneMode) || (!underBreakpoint && this._phoneMode);
228
+ if (phoneModeChange) {
229
+ this._phoneMode = underBreakpoint;
230
+ }
231
+ }
232
+ onExitDOM() {
233
+ ResizeHandler.deregister(document.body, this._handleResizeBound);
234
+ }
235
+ /**
236
+ * Returns the timestamp for a specific month index when displaying multiple months
237
+ * @private
238
+ */
239
+ _getMonthTimestamp(monthIndex) {
240
+ if (monthIndex === 0) {
241
+ return this._timestamp;
242
+ }
243
+ const calendarDate = CalendarDateComponent.fromTimestamp(this._timestamp * 1000, this._primaryCalendarType);
244
+ const modifiedDate = modifyDateBy(calendarDate, monthIndex, "month", false);
245
+ return modifiedDate.valueOf() / 1000;
246
+ }
247
+ /**
248
+ * Generates header button text (month and year) for a specific month timestamp
249
+ * @private
250
+ */
251
+ _getHeaderTextForMonth(monthTimestamp) {
252
+ const calendarDate = CalendarDateComponent.fromTimestamp(monthTimestamp * 1000, this._primaryCalendarType);
253
+ const localeData = getCachedLocaleDataInstance(getLocale());
254
+ const yearFormat = DateFormat.getDateInstance({ format: "y", calendarType: this._primaryCalendarType });
255
+ const monthText = localeData.getMonthsStandAlone("wide", this._primaryCalendarType)[calendarDate.getMonth()];
256
+ const localDate = calendarDate.toLocalJSDate();
257
+ const yearText = String(yearFormat.format(localDate, true));
258
+ const result = {
259
+ monthText,
260
+ yearText,
261
+ };
262
+ if (this.hasSecondaryCalendarType) {
263
+ const secondaryDate = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, monthTimestamp, true);
264
+ const secondaryCalendarDate = secondaryDate.firstDate || secondaryDate.lastDate;
265
+ const secondaryLocaleData = getCachedLocaleDataInstance(getLocale());
266
+ result.secondMonthText = secondaryLocaleData.getMonthsStandAlone("wide", this._secondaryCalendarType)[secondaryCalendarDate.getMonth()];
267
+ const secondaryYearFormat = DateFormat.getDateInstance({ format: "y", calendarType: this._secondaryCalendarType });
268
+ result.secondYearText = String(secondaryYearFormat.format(secondaryCalendarDate.toLocalJSDate(), true));
269
+ }
270
+ return result;
191
271
  }
192
272
  /**
193
273
  * @private
@@ -432,9 +512,9 @@ let Calendar = Calendar_1 = class Calendar extends CalendarPart {
432
512
  this._headerYearButtonTextSecType = String(yearFormatSecType.format(this._localDate, true));
433
513
  const currentYearRange = this._currentYearRange;
434
514
  const { rangeStart, rangeEnd } = this._createYearRangeDates(currentYearRange);
435
- const rangeStartSecType = transformDateToSecondaryType(this.primaryCalendarType, this._secondaryCalendarType, rangeStart.valueOf() / 1000, true)
515
+ const rangeStartSecType = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, rangeStart.valueOf() / 1000, true)
436
516
  .firstDate;
437
- const rangeEndSecType = transformDateToSecondaryType(this.primaryCalendarType, this._secondaryCalendarType, rangeEnd.valueOf() / 1000, true)
517
+ const rangeEndSecType = transformDateToSecondaryType(this._primaryCalendarType, this._secondaryCalendarType, rangeEnd.valueOf() / 1000, true)
438
518
  .lastDate;
439
519
  this._headerYearRangeButtonTextSecType = `${yearFormatSecType.format(rangeStartSecType.toLocalJSDate())} - ${yearFormatSecType.format(rangeEndSecType.toLocalJSDate())}`;
440
520
  }
@@ -453,12 +533,19 @@ let Calendar = Calendar_1 = class Calendar extends CalendarPart {
453
533
  monthButtonInfo: secondMonthInfo.textInfo,
454
534
  };
455
535
  }
536
+ get _isCompactMode() {
537
+ return getEffectiveContentDensity(this) === "compact";
538
+ }
539
+ get _monthsToShow() {
540
+ const monthsToShow = this._showTwoMonths && !isPhone() ? 2 : 1;
541
+ return monthsToShow;
542
+ }
456
543
  /**
457
544
  * The month button is hidden when the month picker or year picker is shown
458
545
  * @private
459
546
  */
460
547
  get _isHeaderMonthButtonHidden() {
461
- return this._currentPicker !== "day";
548
+ return this._showTwoMonths ? this._currentPicker === "yearrange" || this._currentPicker === "year" : this._currentPicker !== "day";
462
549
  }
463
550
  /**
464
551
  * The year range picker button is shown only in the year picker
@@ -475,6 +562,10 @@ let Calendar = Calendar_1 = class Calendar extends CalendarPart {
475
562
  return !(this._currentPicker === "day" || this._currentPicker === "month");
476
563
  }
477
564
  get _isDayPickerHidden() {
565
+ // In multi-month mode (monthsToShow > 1), keep day pickers visible even when other pickers are shown
566
+ if (this._showTwoMonths) {
567
+ return false;
568
+ }
478
569
  return this._currentPicker !== "day";
479
570
  }
480
571
  get _isMonthPickerHidden() {
@@ -486,6 +577,15 @@ let Calendar = Calendar_1 = class Calendar extends CalendarPart {
486
577
  get _isYearRangePickerHidden() {
487
578
  return this._currentPicker !== "yearrange";
488
579
  }
580
+ get _isDefaultHeaderModeInMultipleMonths() {
581
+ return !this._isDayPickerHidden && this._isYearPickerHidden;
582
+ }
583
+ get _shouldShowOnePickerHeaderButtonInMultipleMonths() {
584
+ return !this._isDayPickerHidden && !this._isYearPickerHidden;
585
+ }
586
+ get _inert() {
587
+ return this._showTwoMonths && (!this._isMonthPickerHidden || !this._isYearPickerHidden || !this._isYearRangePickerHidden);
588
+ }
489
589
  get _currentYearRange() {
490
590
  const rangeSize = this.hasSecondaryCalendarType ? 8 : 20;
491
591
  const yearsOffset = this.hasSecondaryCalendarType ? 2 : 9;
@@ -747,6 +847,9 @@ __decorate([
747
847
  __decorate([
748
848
  property({ type: Boolean })
749
849
  ], Calendar.prototype, "hideWeekNumbers", void 0);
850
+ __decorate([
851
+ property({ type: Boolean })
852
+ ], Calendar.prototype, "_showTwoMonths", void 0);
750
853
  __decorate([
751
854
  property()
752
855
  ], Calendar.prototype, "_currentPicker", void 0);
@@ -789,6 +892,9 @@ __decorate([
789
892
  __decorate([
790
893
  property()
791
894
  ], Calendar.prototype, "_selectedItemType", void 0);
895
+ __decorate([
896
+ property({ type: Boolean, noAttribute: true })
897
+ ], Calendar.prototype, "_phoneMode", void 0);
792
898
  __decorate([
793
899
  i18n("@ui5/webcomponents")
794
900
  ], Calendar, "i18nBundle", void 0);