@ui5/webcomponents 2.22.0-rc.3 → 2.22.0-rc.5
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.
- package/CHANGELOG.md +47 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/AvatarBadge.d.ts +3 -3
- package/dist/AvatarBadge.js +10 -10
- package/dist/AvatarBadge.js.map +1 -1
- package/dist/AvatarBadgeTemplate.js +1 -1
- package/dist/AvatarBadgeTemplate.js.map +1 -1
- package/dist/Calendar.d.ts +7 -1
- package/dist/Calendar.js +40 -3
- package/dist/Calendar.js.map +1 -1
- package/dist/CalendarHeaderTemplate.js +2 -2
- package/dist/CalendarHeaderTemplate.js.map +1 -1
- package/dist/ColorPaletteItem.d.ts +0 -1
- package/dist/ColorPaletteItem.js +0 -2
- package/dist/ColorPaletteItem.js.map +1 -1
- package/dist/ComboBox.d.ts +4 -0
- package/dist/ComboBox.js +6 -0
- package/dist/ComboBox.js.map +1 -1
- package/dist/DateTimePicker.d.ts +5 -6
- package/dist/DateTimePicker.js +9 -11
- package/dist/DateTimePicker.js.map +1 -1
- package/dist/Input.d.ts +4 -0
- package/dist/Input.js.map +1 -1
- package/dist/List.js +8 -0
- package/dist/List.js.map +1 -1
- package/dist/ListItem.d.ts +9 -5
- package/dist/ListItem.js +10 -9
- package/dist/ListItem.js.map +1 -1
- package/dist/ListItemBase.d.ts +6 -1
- package/dist/ListItemBase.js +16 -0
- package/dist/ListItemBase.js.map +1 -1
- package/dist/ListItemBaseTemplate.d.ts +2 -2
- package/dist/ListItemBaseTemplate.js.map +1 -1
- package/dist/ListItemGroup.d.ts +2 -0
- package/dist/ListItemGroup.js.map +1 -1
- package/dist/Menu.d.ts +4 -0
- package/dist/Menu.js.map +1 -1
- package/dist/MenuItemTemplate.d.ts +5 -1
- package/dist/MenuItemTemplate.js +8 -3
- package/dist/MenuItemTemplate.js.map +1 -1
- package/dist/MultiComboBox.d.ts +5 -1
- package/dist/MultiComboBox.js +33 -24
- package/dist/MultiComboBox.js.map +1 -1
- package/dist/MultiInput.d.ts +6 -0
- package/dist/MultiInput.js +36 -8
- package/dist/MultiInput.js.map +1 -1
- package/dist/Panel.d.ts +22 -0
- package/dist/Panel.js +51 -0
- package/dist/Panel.js.map +1 -1
- package/dist/PanelTemplate.js +5 -2
- package/dist/PanelTemplate.js.map +1 -1
- package/dist/RangeSlider.d.ts +19 -1
- package/dist/RangeSlider.js +112 -29
- package/dist/RangeSlider.js.map +1 -1
- package/dist/RangeSliderTemplate.d.ts +0 -3
- package/dist/RangeSliderTemplate.js +22 -17
- package/dist/RangeSliderTemplate.js.map +1 -1
- package/dist/SegmentedButtonItem.d.ts +0 -1
- package/dist/SegmentedButtonItem.js +0 -2
- package/dist/SegmentedButtonItem.js.map +1 -1
- package/dist/Slider.d.ts +1 -2
- package/dist/Slider.js +12 -7
- package/dist/Slider.js.map +1 -1
- package/dist/SliderBase.d.ts +0 -1
- package/dist/SliderBase.js +18 -15
- package/dist/SliderBase.js.map +1 -1
- package/dist/SliderHandle.d.ts +42 -9
- package/dist/SliderHandle.js +49 -9
- package/dist/SliderHandle.js.map +1 -1
- package/dist/SliderHandleTemplate.js +7 -1
- package/dist/SliderHandleTemplate.js.map +1 -1
- package/dist/SliderScale.d.ts +53 -0
- package/dist/SliderScale.js +67 -0
- package/dist/SliderScale.js.map +1 -1
- package/dist/SliderScaleTemplate.js +5 -1
- package/dist/SliderScaleTemplate.js.map +1 -1
- package/dist/SliderTemplate.js +1 -1
- package/dist/SliderTemplate.js.map +1 -1
- package/dist/Tab.d.ts +8 -1
- package/dist/Tab.js +13 -0
- package/dist/Tab.js.map +1 -1
- package/dist/TabContainer.d.ts +6 -3
- package/dist/TabContainer.js +11 -8
- package/dist/TabContainer.js.map +1 -1
- package/dist/Table.d.ts +1 -0
- package/dist/Table.js +16 -3
- package/dist/Table.js.map +1 -1
- package/dist/TableCell.d.ts +2 -2
- package/dist/TableCell.js +2 -2
- package/dist/TableCell.js.map +1 -1
- package/dist/TableHeaderRowTemplate.js +5 -2
- package/dist/TableHeaderRowTemplate.js.map +1 -1
- package/dist/TableNavigation.js +3 -0
- package/dist/TableNavigation.js.map +1 -1
- package/dist/TableRow.d.ts +0 -2
- package/dist/TableRow.js +0 -9
- package/dist/TableRow.js.map +1 -1
- package/dist/TableRowBase.d.ts +6 -1
- package/dist/TableRowBase.js +37 -2
- package/dist/TableRowBase.js.map +1 -1
- package/dist/TableRowTemplate.js +4 -2
- package/dist/TableRowTemplate.js.map +1 -1
- package/dist/Tokenizer.d.ts +1 -0
- package/dist/Tokenizer.js +12 -0
- package/dist/Tokenizer.js.map +1 -1
- package/dist/Toolbar.d.ts +9 -0
- package/dist/Toolbar.js +4 -1
- package/dist/Toolbar.js.map +1 -1
- package/dist/css/themes/Dialog.css +1 -1
- package/dist/css/themes/ListItemBase.css +1 -1
- package/dist/css/themes/OptionBase.css +1 -1
- package/dist/css/themes/Panel.css +1 -1
- package/dist/css/themes/RangeSlider.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/css/themes/SliderBase.css +1 -1
- package/dist/css/themes/SliderHandle.css +1 -1
- package/dist/css/themes/SliderScale.css +1 -1
- package/dist/css/themes/SliderTooltip.css +1 -1
- package/dist/css/themes/TableRow.css +1 -1
- package/dist/css/themes/TableRowBase.css +1 -1
- package/dist/css/themes/Toolbar.css +1 -1
- package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +38 -94
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +40 -96
- package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +1016 -138
- package/dist/custom-elements.json +471 -108
- package/dist/dynamic-date-range-options/DateTimeRangeTemplate.js +7 -2
- package/dist/dynamic-date-range-options/DateTimeRangeTemplate.js.map +1 -1
- package/dist/dynamic-date-range-options/FromDateTimeTemplate.js +1 -1
- package/dist/dynamic-date-range-options/FromDateTimeTemplate.js.map +1 -1
- package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
- package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
- package/dist/generated/themes/Dialog.css.d.ts +1 -1
- package/dist/generated/themes/Dialog.css.js +1 -1
- package/dist/generated/themes/Dialog.css.js.map +1 -1
- package/dist/generated/themes/ListItemBase.css.d.ts +1 -1
- package/dist/generated/themes/ListItemBase.css.js +1 -1
- package/dist/generated/themes/ListItemBase.css.js.map +1 -1
- package/dist/generated/themes/OptionBase.css.d.ts +1 -1
- package/dist/generated/themes/OptionBase.css.js +1 -1
- package/dist/generated/themes/OptionBase.css.js.map +1 -1
- package/dist/generated/themes/Panel.css.d.ts +1 -1
- package/dist/generated/themes/Panel.css.js +1 -1
- package/dist/generated/themes/Panel.css.js.map +1 -1
- package/dist/generated/themes/RangeSlider.css.d.ts +1 -1
- package/dist/generated/themes/RangeSlider.css.js +1 -1
- package/dist/generated/themes/RangeSlider.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.d.ts +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/generated/themes/SliderBase.css.d.ts +1 -1
- package/dist/generated/themes/SliderBase.css.js +1 -1
- package/dist/generated/themes/SliderBase.css.js.map +1 -1
- package/dist/generated/themes/SliderHandle.css.d.ts +1 -1
- package/dist/generated/themes/SliderHandle.css.js +1 -1
- package/dist/generated/themes/SliderHandle.css.js.map +1 -1
- package/dist/generated/themes/SliderScale.css.d.ts +1 -1
- package/dist/generated/themes/SliderScale.css.js +1 -1
- package/dist/generated/themes/SliderScale.css.js.map +1 -1
- package/dist/generated/themes/SliderTooltip.css.d.ts +1 -1
- package/dist/generated/themes/SliderTooltip.css.js +1 -1
- package/dist/generated/themes/SliderTooltip.css.js.map +1 -1
- package/dist/generated/themes/TableRow.css.d.ts +1 -1
- package/dist/generated/themes/TableRow.css.js +1 -1
- package/dist/generated/themes/TableRow.css.js.map +1 -1
- package/dist/generated/themes/TableRowBase.css.d.ts +1 -1
- package/dist/generated/themes/TableRowBase.css.js +1 -1
- package/dist/generated/themes/TableRowBase.css.js.map +1 -1
- package/dist/generated/themes/Toolbar.css.d.ts +1 -1
- package/dist/generated/themes/Toolbar.css.js +1 -1
- package/dist/generated/themes/Toolbar.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +38 -94
- package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +40 -96
- package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
- package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
- package/dist/vscode.html-custom-data.json +118 -46
- package/dist/web-types.json +289 -93
- package/package-scripts.cjs +1 -0
- package/package.json +9 -9
- package/src/AvatarBadgeTemplate.tsx +1 -2
- package/src/CalendarHeaderTemplate.tsx +4 -0
- package/src/ListItemBaseTemplate.tsx +3 -3
- package/src/MenuItemTemplate.tsx +21 -10
- package/src/PanelTemplate.tsx +12 -5
- package/src/RangeSliderTemplate.tsx +146 -113
- package/src/SliderHandleTemplate.tsx +7 -1
- package/src/SliderScaleTemplate.tsx +26 -1
- package/src/SliderTemplate.tsx +0 -1
- package/src/TableHeaderRowTemplate.tsx +23 -1
- package/src/TableRowTemplate.tsx +13 -1
- package/src/dynamic-date-range-options/DateTimeRangeTemplate.tsx +8 -2
- package/src/dynamic-date-range-options/FromDateTimeTemplate.tsx +1 -1
- package/src/i18n/messagebundle.properties +2 -2
- package/src/themes/Dialog.css +2 -2
- package/src/themes/ListItemBase.css +4 -3
- package/src/themes/OptionBase.css +6 -0
- package/src/themes/Panel.css +19 -2
- package/src/themes/RangeSlider.css +20 -68
- package/src/themes/Slider.css +3 -6
- package/src/themes/SliderBase.css +1 -269
- package/src/themes/SliderHandle.css +4 -3
- package/src/themes/SliderScale.css +45 -6
- package/src/themes/SliderTooltip.css +1 -1
- package/src/themes/TableRow.css +28 -39
- package/src/themes/TableRowBase.css +79 -20
- package/src/themes/Toolbar.css +2 -2
- package/src/themes/base/Panel-parameters.css +1 -0
- package/src/themes/base/SliderBase-parameters.css +1 -101
- package/src/themes/base/SliderHandle-parameters.css +22 -1
- package/src/themes/base/SliderScale-parameters.css +23 -3
- package/src/themes/base/sizes-parameters.css +2 -2
- package/src/themes/sap_fiori_3/Slider-parameters.css +4 -4
- package/src/themes/sap_fiori_3/SliderBase-parameters.css +0 -30
- package/src/themes/sap_fiori_3/SliderHandle-parameters.css +18 -1
- package/src/themes/sap_fiori_3/SliderScale-parameters.css +2 -8
- package/src/themes/sap_fiori_3_dark/Slider-parameters.css +4 -4
- package/src/themes/sap_fiori_3_dark/SliderBase-parameters.css +1 -26
- package/src/themes/sap_fiori_3_dark/SliderHandle-parameters.css +1 -5
- package/src/themes/sap_fiori_3_dark/SliderScale-parameters.css +1 -13
- package/src/themes/sap_fiori_3_hcb/Link-parameters.css +1 -1
- package/src/themes/sap_fiori_3_hcb/Slider-parameters.css +4 -4
- package/src/themes/sap_fiori_3_hcb/SliderBase-parameters.css +1 -39
- package/src/themes/sap_fiori_3_hcb/SliderHandle-parameters.css +1 -5
- package/src/themes/sap_fiori_3_hcb/SliderScale-parameters.css +4 -6
- package/src/themes/sap_fiori_3_hcw/Link-parameters.css +1 -1
- package/src/themes/sap_fiori_3_hcw/Slider-parameters.css +4 -4
- package/src/themes/sap_fiori_3_hcw/SliderBase-parameters.css +1 -37
- package/src/themes/sap_fiori_3_hcw/SliderHandle-parameters.css +1 -5
- package/src/themes/sap_fiori_3_hcw/SliderScale-parameters.css +1 -14
- package/src/themes/sap_horizon/Slider-parameters.css +4 -4
- package/src/themes/sap_horizon/SliderBase-parameters.css +0 -49
- package/src/themes/sap_horizon/SliderHandle-parameters.css +2 -1
- package/src/themes/sap_horizon/SliderScale-parameters.css +4 -5
- package/src/themes/sap_horizon_dark/Slider-parameters.css +4 -4
- package/src/themes/sap_horizon_dark/SliderBase-parameters.css +1 -50
- package/src/themes/sap_horizon_dark/SliderHandle-parameters.css +1 -5
- package/src/themes/sap_horizon_dark/SliderScale-parameters.css +1 -10
- package/src/themes/sap_horizon_hcb/Link-parameters.css +1 -1
- package/src/themes/sap_horizon_hcb/Slider-parameters.css +4 -4
- package/src/themes/sap_horizon_hcb/SliderBase-parameters.css +1 -71
- package/src/themes/sap_horizon_hcb/SliderHandle-parameters.css +4 -3
- package/src/themes/sap_horizon_hcb/SliderScale-parameters.css +3 -2
- package/src/themes/sap_horizon_hcw/Link-parameters.css +1 -1
- package/src/themes/sap_horizon_hcw/Slider-parameters.css +4 -4
- package/src/themes/sap_horizon_hcw/SliderBase-parameters.css +1 -72
- package/src/themes/sap_horizon_hcw/SliderHandle-parameters.css +1 -5
- package/src/themes/sap_horizon_hcw/SliderScale-parameters.css +1 -10
- package/dist/SliderBaseTemplate.d.ts +0 -10
- package/dist/SliderBaseTemplate.js +0 -19
- package/dist/SliderBaseTemplate.js.map +0 -1
- package/src/SliderBaseTemplate.tsx +0 -65
package/dist/ListItemBase.js
CHANGED
|
@@ -110,6 +110,7 @@ let ListItemBase = class ListItemBase extends UI5Element {
|
|
|
110
110
|
if (this.getFocusDomRef().matches(":has(:focus-within)") || this._isDisabledInteractiveContentClicked(e)) {
|
|
111
111
|
return;
|
|
112
112
|
}
|
|
113
|
+
e.stopPropagation();
|
|
113
114
|
this.fireItemPress(e);
|
|
114
115
|
}
|
|
115
116
|
_isDisabledInteractiveContentClicked(e) {
|
|
@@ -162,6 +163,7 @@ let ListItemBase = class ListItemBase extends UI5Element {
|
|
|
162
163
|
if (isEnter(e)) {
|
|
163
164
|
e.preventDefault();
|
|
164
165
|
}
|
|
166
|
+
this.fireDecoratorEvent("click", { item: this, originalEvent: e });
|
|
165
167
|
this.fireDecoratorEvent("_press", { item: this, selected: this.selected, key: e.key });
|
|
166
168
|
}
|
|
167
169
|
_handleTabNext(e) {
|
|
@@ -249,6 +251,20 @@ ListItemBase = __decorate([
|
|
|
249
251
|
customElement({
|
|
250
252
|
renderer: jsxRenderer,
|
|
251
253
|
styles: [styles, draggableElementStyles],
|
|
254
|
+
})
|
|
255
|
+
/**
|
|
256
|
+
* Fired when the component is activated either with a mouse/tap or by using the Enter or Space key.
|
|
257
|
+
*
|
|
258
|
+
* **Note:** The event will not be fired if the `disabled` property is set to `true`.
|
|
259
|
+
*
|
|
260
|
+
* @since 2.22.0
|
|
261
|
+
* @public
|
|
262
|
+
* @param {ListItemBase} item The activated item.
|
|
263
|
+
* @param {Event} originalEvent The original event from the user interaction.
|
|
264
|
+
*/
|
|
265
|
+
,
|
|
266
|
+
event("click", {
|
|
267
|
+
bubbles: true,
|
|
252
268
|
}),
|
|
253
269
|
event("request-tabindex-change", {
|
|
254
270
|
bubbles: true,
|
package/dist/ListItemBase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemBase.js","sourceRoot":"","sources":["../src/ListItemBase.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 jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ClassMap } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n\tisEnter,\n\tisSpace,\n\tisTabNext,\n\tisTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\n\n// Styles\nimport styles from \"./generated/themes/ListItemBase.css.js\";\nimport draggableElementStyles from \"./generated/themes/DraggableElement.css.js\";\n\ntype ListItemBasePressEventDetail = {\n\titem: ListItemBase,\n\tselected?: boolean,\n\tkey?: string,\n}\n\n/**\n * @class\n * A class to serve as a foundation\n * for the `ListItem` and `ListItemGroupHeader` classes.\n * @constructor\n * @abstract\n * @extends UI5Element\n * @public\n */\n@customElement({\n\trenderer: jsxRenderer,\n\tstyles: [styles, draggableElementStyles],\n})\n@event(\"request-tabindex-change\", {\n\tbubbles: true,\n})\n@event(\"_press\", {\n\tbubbles: true,\n})\n@event(\"_focused\", {\n\tbubbles: true,\n})\n@event(\"forward-after\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n@event(\"forward-before\", {\n\tbubbles: true,\n})\nclass ListItemBase extends UI5Element implements ITabbable {\n\teventDetails!: {\n\t\t\"request-tabindex-change\": FocusEvent,\n\t\t\"_press\": ListItemBasePressEventDetail,\n\t\t\"_focused\": FocusEvent,\n\t\t\"forward-after\": void,\n\t\t\"forward-before\": void,\n\t}\n\t/**\n\t * Defines the selected state of the component.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tselected = false;\n\n\t/**\n\t * Defines whether the item is movable.\n\t * @default false\n\t * @private\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean })\n\tmovable = false;\n\n\t/**\n\t* Defines if the list item should display its bottom border.\n\t* @private\n\t*/\n\t@property({ type: Boolean })\n\thasBorder = false;\n\n\t@property()\n\tforcedTabIndex?: string;\n\n\t/**\n\t* Defines whether `ui5-li` is in disabled state.\n\t*\n\t* **Note:** A disabled `ui5-li` is noninteractive.\n\t* @default false\n\t* @protected\n\t* @since 1.0.0-rc.12\n\t*/\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Indicates if the element is on focus\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t/**\n\t * Indicates if the list item is actionable, e.g has hover and pressed effects.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tactionable = false;\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\t}\n\n\tonBeforeRendering(): void {\n\t\tthis.actionable = true;\n\t}\n\n\t_onfocusin(e: FocusEvent) {\n\t\tthis.fireDecoratorEvent(\"request-tabindex-change\", e);\n\t\tif (e.target !== this.getFocusDomRef()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"_focused\", e);\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isTabNext(e)) {\n\t\t\treturn this._handleTabNext(e);\n\t\t}\n\n\t\tif (isTabPrevious(e)) {\n\t\t\treturn this._handleTabPrevious(e);\n\t\t}\n\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (this._isEnter(e)) {\n\t\t\tthis.fireItemPress(e);\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._isSpace(e)) {\n\t\t\tthis.fireItemPress(e);\n\t\t}\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\") || this._isDisabledInteractiveContentClicked(e)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.fireItemPress(e);\n\t}\n\n\t_isDisabledInteractiveContentClicked(e: MouseEvent): boolean {\n\t\tconst path = e.composedPath();\n\t\tconst focusDomRef = this.getFocusDomRef();\n\n\t\treturn path.some(target => {\n\t\t\tif (!(target instanceof HTMLElement)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (target === this || target === focusDomRef) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!this._isNativeInteractiveElement(target) && !this._isCustomInteractiveElement(target)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this._isElementDisabled(target);\n\t\t});\n\t}\n\n\t_isNativeInteractiveElement(target: HTMLElement): boolean {\n\t\treturn target.matches(\"button, input, select, textarea\");\n\t}\n\n\t_isCustomInteractiveElement(target: HTMLElement): boolean {\n\t\tconst targetWithDisabled = target as HTMLElement & { disabled?: boolean };\n\n\t\treturn target.tagName.includes(\"-\")\n\t\t\t&& (\"disabled\" in targetWithDisabled || target.hasAttribute(\"aria-disabled\"));\n\t}\n\n\t_isElementDisabled(target: HTMLElement): boolean {\n\t\tconst targetWithDisabled = target as HTMLElement & { disabled?: boolean };\n\t\tif (typeof targetWithDisabled.disabled === \"boolean\") {\n\t\t\treturn targetWithDisabled.disabled;\n\t\t}\n\n\t\treturn target.getAttribute(\"aria-disabled\") === \"true\";\n\t}\n\n\t/**\n\t * Override from subcomponent, if needed\n\t */\n\t_isSpace(e: KeyboardEvent) {\n\t\treturn isSpace(e);\n\t}\n\n\t/**\n\t * Override from subcomponent, if needed\n\t */\n\t_isEnter(e: KeyboardEvent) {\n\t\treturn isEnter(e);\n\t}\n\n\tfireItemPress(e: Event) {\n\t\tif (this.disabled || !this._pressable) {\n\t\t\treturn;\n\t\t}\n\t\tif (isEnter(e as KeyboardEvent)) {\n\t\t\te.preventDefault();\n\t\t}\n\t\tthis.fireDecoratorEvent(\"_press\", { item: this, selected: this.selected, key: (e as KeyboardEvent).key });\n\t}\n\n\t_handleTabNext(e: KeyboardEvent) {\n\t\tif (this.shouldForwardTabAfter()) {\n\t\t\tif (!this.fireDecoratorEvent(\"forward-after\")) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleTabPrevious(e: KeyboardEvent) {\n\t\tconst target = e.target as HTMLElement;\n\n\t\tif (this.shouldForwardTabBefore(target)) {\n\t\t\tthis.fireDecoratorEvent(\"forward-before\");\n\t\t}\n\t}\n\n\t/**\n\t * Determines if th current list item either has no tabbable content or\n\t * [Tab] is performed onto the last tabbale content item.\n\t */\n\tshouldForwardTabAfter() {\n\t\tconst aContent = getTabbableElements(this.getFocusDomRef()!);\n\n\t\treturn aContent.length === 0 || (aContent[aContent.length - 1] === getActiveElement());\n\t}\n\n\t/**\n\t * Determines if the current list item is target of [SHIFT+TAB].\n\t */\n\tshouldForwardTabBefore(target: HTMLElement) {\n\t\treturn this.getFocusDomRef() === target;\n\t}\n\n\tget classes(): ClassMap {\n\t\treturn {\n\t\t\tmain: {\n\t\t\t\t\"ui5-li-root\": true,\n\t\t\t\t\"ui5-li--focusable\": this._focusable,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _ariaDisabled() {\n\t\treturn this.disabled ? true : undefined;\n\t}\n\n\tget _focusable() {\n\t\treturn !this.disabled;\n\t}\n\n\tget _pressable() {\n\t\treturn true;\n\t}\n\n\tget hasConfigurableMode() {\n\t\treturn false;\n\t}\n\n\tget _effectiveTabIndex() {\n\t\tif (!this._focusable) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (this.selected) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this.forcedTabIndex ? parseInt(this.forcedTabIndex) : undefined;\n\t}\n\n\tget isListItemBase() {\n\t\treturn true;\n\t}\n}\n\nexport default ListItemBase;\n\nexport type {\n\tListItemBasePressEventDetail,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ListItemBase.js","sourceRoot":"","sources":["../src/ListItemBase.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 jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ClassMap } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { getTabbableElements } from \"@ui5/webcomponents-base/dist/util/TabbableElements.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n\tisEnter,\n\tisSpace,\n\tisTabNext,\n\tisTabPrevious,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport getActiveElement from \"@ui5/webcomponents-base/dist/util/getActiveElement.js\";\n\n// Styles\nimport styles from \"./generated/themes/ListItemBase.css.js\";\nimport draggableElementStyles from \"./generated/themes/DraggableElement.css.js\";\n\ntype ListItemBasePressEventDetail = {\n\titem: ListItemBase,\n\tselected?: boolean,\n\tkey?: string,\n}\n\ntype ListItemBaseClickEventDetail = {\n\titem: ListItemBase,\n\toriginalEvent: Event,\n}\n\n/**\n * @class\n * A class to serve as a foundation\n * for the `ListItem` and `ListItemGroupHeader` classes.\n * @constructor\n * @abstract\n * @extends UI5Element\n * @public\n */\n@customElement({\n\trenderer: jsxRenderer,\n\tstyles: [styles, draggableElementStyles],\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.22.0\n * @public\n * @param {ListItemBase} item The activated item.\n * @param {Event} originalEvent The original event from the user interaction.\n */\n@event(\"click\", {\n\tbubbles: true,\n})\n@event(\"request-tabindex-change\", {\n\tbubbles: true,\n})\n@event(\"_press\", {\n\tbubbles: true,\n})\n@event(\"_focused\", {\n\tbubbles: true,\n})\n@event(\"forward-after\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n@event(\"forward-before\", {\n\tbubbles: true,\n})\nclass ListItemBase extends UI5Element implements ITabbable {\n\teventDetails!: {\n\t\t\"click\": ListItemBaseClickEventDetail,\n\t\t\"request-tabindex-change\": FocusEvent,\n\t\t\"_press\": ListItemBasePressEventDetail,\n\t\t\"_focused\": FocusEvent,\n\t\t\"forward-after\": void,\n\t\t\"forward-before\": void,\n\t}\n\t/**\n\t * Defines the selected state of the component.\n\t * @default false\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tselected = false;\n\n\t/**\n\t * Defines whether the item is movable.\n\t * @default false\n\t * @private\n\t * @since 2.0.0\n\t */\n\t@property({ type: Boolean })\n\tmovable = false;\n\n\t/**\n\t* Defines if the list item should display its bottom border.\n\t* @private\n\t*/\n\t@property({ type: Boolean })\n\thasBorder = false;\n\n\t@property()\n\tforcedTabIndex?: string;\n\n\t/**\n\t* Defines whether `ui5-li` is in disabled state.\n\t*\n\t* **Note:** A disabled `ui5-li` is noninteractive.\n\t* @default false\n\t* @protected\n\t* @since 1.0.0-rc.12\n\t*/\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Indicates if the element is on focus\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t/**\n\t * Indicates if the list item is actionable, e.g has hover and pressed effects.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tactionable = false;\n\n\tonEnterDOM() {\n\t\tif (isDesktop()) {\n\t\t\tthis.setAttribute(\"desktop\", \"\");\n\t\t}\n\t}\n\n\tonBeforeRendering(): void {\n\t\tthis.actionable = true;\n\t}\n\n\t_onfocusin(e: FocusEvent) {\n\t\tthis.fireDecoratorEvent(\"request-tabindex-change\", e);\n\t\tif (e.target !== this.getFocusDomRef()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"_focused\", e);\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isTabNext(e)) {\n\t\t\treturn this._handleTabNext(e);\n\t\t}\n\n\t\tif (isTabPrevious(e)) {\n\t\t\treturn this._handleTabPrevious(e);\n\t\t}\n\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isSpace(e)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (this._isEnter(e)) {\n\t\t\tthis.fireItemPress(e);\n\t\t}\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\")) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._isSpace(e)) {\n\t\t\tthis.fireItemPress(e);\n\t\t}\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\tif (this.getFocusDomRef()!.matches(\":has(:focus-within)\") || this._isDisabledInteractiveContentClicked(e)) {\n\t\t\treturn;\n\t\t}\n\t\te.stopPropagation();\n\t\tthis.fireItemPress(e);\n\t}\n\n\t_isDisabledInteractiveContentClicked(e: MouseEvent): boolean {\n\t\tconst path = e.composedPath();\n\t\tconst focusDomRef = this.getFocusDomRef();\n\n\t\treturn path.some(target => {\n\t\t\tif (!(target instanceof HTMLElement)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (target === this || target === focusDomRef) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!this._isNativeInteractiveElement(target) && !this._isCustomInteractiveElement(target)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this._isElementDisabled(target);\n\t\t});\n\t}\n\n\t_isNativeInteractiveElement(target: HTMLElement): boolean {\n\t\treturn target.matches(\"button, input, select, textarea\");\n\t}\n\n\t_isCustomInteractiveElement(target: HTMLElement): boolean {\n\t\tconst targetWithDisabled = target as HTMLElement & { disabled?: boolean };\n\n\t\treturn target.tagName.includes(\"-\")\n\t\t\t&& (\"disabled\" in targetWithDisabled || target.hasAttribute(\"aria-disabled\"));\n\t}\n\n\t_isElementDisabled(target: HTMLElement): boolean {\n\t\tconst targetWithDisabled = target as HTMLElement & { disabled?: boolean };\n\t\tif (typeof targetWithDisabled.disabled === \"boolean\") {\n\t\t\treturn targetWithDisabled.disabled;\n\t\t}\n\n\t\treturn target.getAttribute(\"aria-disabled\") === \"true\";\n\t}\n\n\t/**\n\t * Override from subcomponent, if needed\n\t */\n\t_isSpace(e: KeyboardEvent) {\n\t\treturn isSpace(e);\n\t}\n\n\t/**\n\t * Override from subcomponent, if needed\n\t */\n\t_isEnter(e: KeyboardEvent) {\n\t\treturn isEnter(e);\n\t}\n\n\tfireItemPress(e: Event) {\n\t\tif (this.disabled || !this._pressable) {\n\t\t\treturn;\n\t\t}\n\t\tif (isEnter(e as KeyboardEvent)) {\n\t\t\te.preventDefault();\n\t\t}\n\t\tthis.fireDecoratorEvent(\"click\", { item: this, originalEvent: e });\n\t\tthis.fireDecoratorEvent(\"_press\", { item: this, selected: this.selected, key: (e as KeyboardEvent).key });\n\t}\n\n\t_handleTabNext(e: KeyboardEvent) {\n\t\tif (this.shouldForwardTabAfter()) {\n\t\t\tif (!this.fireDecoratorEvent(\"forward-after\")) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\t_handleTabPrevious(e: KeyboardEvent) {\n\t\tconst target = e.target as HTMLElement;\n\n\t\tif (this.shouldForwardTabBefore(target)) {\n\t\t\tthis.fireDecoratorEvent(\"forward-before\");\n\t\t}\n\t}\n\n\t/**\n\t * Determines if th current list item either has no tabbable content or\n\t * [Tab] is performed onto the last tabbale content item.\n\t */\n\tshouldForwardTabAfter() {\n\t\tconst aContent = getTabbableElements(this.getFocusDomRef()!);\n\n\t\treturn aContent.length === 0 || (aContent[aContent.length - 1] === getActiveElement());\n\t}\n\n\t/**\n\t * Determines if the current list item is target of [SHIFT+TAB].\n\t */\n\tshouldForwardTabBefore(target: HTMLElement) {\n\t\treturn this.getFocusDomRef() === target;\n\t}\n\n\tget classes(): ClassMap {\n\t\treturn {\n\t\t\tmain: {\n\t\t\t\t\"ui5-li-root\": true,\n\t\t\t\t\"ui5-li--focusable\": this._focusable,\n\t\t\t},\n\t\t};\n\t}\n\n\tget _ariaDisabled() {\n\t\treturn this.disabled ? true : undefined;\n\t}\n\n\tget _focusable() {\n\t\treturn !this.disabled;\n\t}\n\n\tget _pressable() {\n\t\treturn true;\n\t}\n\n\tget hasConfigurableMode() {\n\t\treturn false;\n\t}\n\n\tget _effectiveTabIndex() {\n\t\tif (!this._focusable) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (this.selected) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this.forcedTabIndex ? parseInt(this.forcedTabIndex) : undefined;\n\t}\n\n\tget isListItemBase() {\n\t\treturn true;\n\t}\n}\n\nexport default ListItemBase;\n\nexport type {\n\tListItemBasePressEventDetail,\n\tListItemBaseClickEventDetail,\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type ListItemBase from "./ListItemBase.js";
|
|
2
|
-
import type { AriaRole } from "@ui5/webcomponents-base/";
|
|
2
|
+
import type { AriaRole, JsxTemplate } from "@ui5/webcomponents-base/";
|
|
3
3
|
export default function ListItemBaseTemplate(this: ListItemBase, hooks?: {
|
|
4
|
-
listItemContent:
|
|
4
|
+
listItemContent: JsxTemplate;
|
|
5
5
|
}, injectedProps?: {
|
|
6
6
|
role?: AriaRole;
|
|
7
7
|
title?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemBaseTemplate.js","sourceRoot":"","sources":["../src/ListItemBaseTemplate.tsx"],"names":[],"mappings":";AAGA,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAqB,
|
|
1
|
+
{"version":3,"file":"ListItemBaseTemplate.js","sourceRoot":"","sources":["../src/ListItemBaseTemplate.tsx"],"names":[],"mappings":";AAGA,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAqB,KAAwC,EAAE,aAG1G;IACA,MAAM,eAAe,GAAG,KAAK,EAAE,eAAe,IAAI,sBAAsB,CAAC;IAEzE,OAAO,CACN,aACC,IAAI,EAAC,WAAW,8BAEhB,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EACjC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EACxB,SAAS,EAAE,IAAI,CAAC,OAAO,EACvB,IAAI,EAAE,aAAa,EAAE,IAAI,EACzB,KAAK,EAAE,aAAa,EAAE,KAAK,EAC3B,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,YAEpB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAgB,GACvC,CACL,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB;IAC9B,OAAO,cAAK,IAAI,EAAC,SAAS,EAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,EAAE,KAAK,EAAC,gBAAgB,YAC3E,cAAK,KAAK,EAAC,qBAAqB,YAC/B,eAAM,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,cAAc,YAAC,gBAAa,GAAO,GACvD,GACD,CAAC;AACR,CAAC","sourcesContent":["import type ListItemBase from \"./ListItemBase.js\";\nimport type { AriaRole, JsxTemplate } from \"@ui5/webcomponents-base/\";\n\nexport default function ListItemBaseTemplate(this: ListItemBase, hooks?: { listItemContent: JsxTemplate }, injectedProps?: {\n\trole?: AriaRole,\n\ttitle?: string,\n}) {\n\tconst listItemContent = hooks?.listItemContent || defaultListItemContent;\n\n\treturn (\n\t\t<li\n\t\t\tpart=\"native-li\"\n\t\t\tdata-sap-focus-ref\n\t\t\ttabindex={this._effectiveTabIndex}\n\t\t\tclass={this.classes.main}\n\t\t\tdraggable={this.movable}\n\t\t\trole={injectedProps?.role}\n\t\t\ttitle={injectedProps?.title}\n\t\t\tonFocusIn={this._onfocusin}\n\t\t\tonKeyUp={this._onkeyup}\n\t\t\tonKeyDown={this._onkeydown}\n\t\t\tonClick={this._onclick}\n\t\t>\n\t\t\t{ listItemContent.call(this) as JSX.Element }\n\t\t</li>\n\t);\n}\n\nfunction defaultListItemContent(this: ListItemBase) {\n\treturn <div part=\"content\" id={`${this._id}-content`} class=\"ui5-li-content\">\n\t\t<div class=\"ui5-li-text-wrapper\">\n\t\t\t<span part=\"title\" class=\"ui5-li-title\"><slot></slot></span>\n\t\t</div>\n\t</div>;\n}\n"]}
|
package/dist/ListItemGroup.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import DragAndDropHandler from "./delegate/DragAndDropHandler.js";
|
|
|
4
4
|
import MovePlacement from "@ui5/webcomponents-base/dist/types/MovePlacement.js";
|
|
5
5
|
import type DropIndicator from "./DropIndicator.js";
|
|
6
6
|
import type ListItemBase from "./ListItemBase.js";
|
|
7
|
+
import type { ListItemBaseClickEventDetail } from "./ListItemBase.js";
|
|
7
8
|
import type ListItemGroupHeader from "./ListItemGroupHeader.js";
|
|
8
9
|
import WrappingType from "./types/WrappingType.js";
|
|
9
10
|
type ListItemGroupMoveEventDetail = {
|
|
@@ -33,6 +34,7 @@ type ListItemGroupMoveEventDetail = {
|
|
|
33
34
|
*/
|
|
34
35
|
declare class ListItemGroup extends UI5Element {
|
|
35
36
|
eventDetails: {
|
|
37
|
+
"click"?: ListItemBaseClickEventDetail;
|
|
36
38
|
"move-over": ListItemGroupMoveEventDetail;
|
|
37
39
|
"move": ListItemGroupMoveEventDetail;
|
|
38
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemGroup.js","sourceRoot":"","sources":["../src/ListItemGroup.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAEpE,OAAO,kBAAkB,MAAM,kCAAkC,CAAC;AAClE,OAAO,aAAa,MAAM,qDAAqD,CAAC;
|
|
1
|
+
{"version":3,"file":"ListItemGroup.js","sourceRoot":"","sources":["../src/ListItemGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot, DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport DragAndDropHandler from \"./delegate/DragAndDropHandler.js\";\nimport MovePlacement from \"@ui5/webcomponents-base/dist/types/MovePlacement.js\";\nimport type DropIndicator from \"./DropIndicator.js\";\nimport type ListItemBase from \"./ListItemBase.js\";\nimport type { ListItemBaseClickEventDetail } from \"./ListItemBase.js\";\n\n// Template\nimport ListItemGroupTemplate from \"./ListItemGroupTemplate.js\";\n\n// Styles\nimport ListItemGroupCss from \"./generated/themes/ListItemGroup.css.js\";\nimport type ListItemGroupHeader from \"./ListItemGroupHeader.js\";\nimport WrappingType from \"./types/WrappingType.js\";\nimport createInstanceChecker from \"@ui5/webcomponents-base/dist/util/createInstanceChecker.js\";\n\ntype ListItemGroupMoveEventDetail = {\n\tsource: {\n\t\telement: HTMLElement,\n\t},\n\tdestination: {\n\t\telement: HTMLElement,\n\t\tplacement: `${MovePlacement}`,\n\t}\n}\n\n/**\n * @class\n * ### Overview\n * The `ui5-li-group` is a special list item, used only to create groups of list items.\n *\n * This is the item to use inside a `ui5-list`.\n *\n * ### ES6 Module Import\n * `import \"@ui5/webcomponents/dist/ListItemGroup.js\";`\n * @csspart header - Used to style the header item of the group\n * @csspart title - Used to style the title of the group header\n * @constructor\n * @extends UI5Element\n * @public\n * @since 2.0.0\n */\n@customElement({\n\ttag: \"ui5-li-group\",\n\trenderer: jsxRenderer,\n\tlanguageAware: true,\n\ttemplate: ListItemGroupTemplate,\n\tstyles: [ListItemGroupCss],\n})\n\n/**\n * Fired when a movable list item is moved over a potential drop target during a dragging operation.\n *\n * If the new position is valid, prevent the default action of the event using `preventDefault()`.\n * @param {object} source Contains information about the moved element under `element` property.\n * @param {object} destination Contains information about the destination of the moved element. Has `element` and `placement` properties.\n * @public\n * @since 2.1.0\n */\n\n@event(\"move-over\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n/**\n * Fired when a movable list item is dropped onto a drop target.\n *\n * **Note:** `move` event is fired only if there was a preceding `move-over` with prevented default action.\n * @param {object} source Contains information about the moved element under `element` property.\n * @param {object} destination Contains information about the destination of the moved element. Has `element` and `placement` properties.\n * @public\n * @since 2.1.0\n */\n@event(\"move\", {\n\tbubbles: true,\n})\n\nclass ListItemGroup extends UI5Element {\n\teventDetails!: {\n\t\t\"click\"?: ListItemBaseClickEventDetail,\n\t\t\"move-over\": ListItemGroupMoveEventDetail,\n\t\t\"move\": ListItemGroupMoveEventDetail,\n\t}\n\t/**\n\t * Defines the header text of the <code>ui5-li-group</code>.\n\t * @public\n\t * @default undefined\n\t */\n\t@property()\n\theaderText?: string;\n\n\t/**\n\t * Defines the accessible name of the header.\n\t * @public\n\t * @default undefined\n\t */\n\t@property()\n\theaderAccessibleName?: string;\n\n\t/**\n\t * Defines the items of the <code>ui5-li-group</code>.\n\t * @public\n\t */\n\t@slot({\n\t\t\"default\": true,\n\t\tinvalidateOnChildChange: true,\n\t\ttype: HTMLElement,\n\t})\n\titems!: DefaultSlot<ListItemBase>;\n\n\t/**\n\t * Defines if the text of the component should wrap when it's too long.\n\t * When set to \"Normal\", the content (title, description) will be wrapped\n\t * using the `ui5-expandable-text` component.<br/>\n\t *\n\t * The text can wrap up to 100 characters on small screens (size S) and\n\t * up to 300 characters on larger screens (size M and above). When text exceeds\n\t * these limits, it truncates with an ellipsis followed by a text expansion trigger.\n\t *\n\t * Available options are:\n\t * - `None` (default) - The text will truncate with an ellipsis.\n\t * - `Normal` - The text will wrap (without truncation).\n\t *\n\t * @default \"None\"\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\twrappingType: `${WrappingType}` = \"None\";\n\n\t/**\n\t * Indicates whether the header is focused\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t/**\n\t* Defines the header of the component.\n\t*\n\t* **Note:** Using this slot, the default header text of group and the value of `headerText` property will be overwritten.\n\t* @public\n\t*/\n\t@slot()\n\theader!: Slot<ListItemBase>;\n\n\t_dragAndDropHandler: DragAndDropHandler;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\t// Initialize the DragAndDropHandler with the necessary configurations\n\t\t// The handler will manage the drag and drop operations for the list items.\n\t\tthis._dragAndDropHandler = new DragAndDropHandler(this, {\n\t\t\tgetItems: () => this.items,\n\t\t\tgetDropIndicator: () => this.dropIndicatorDOM,\n\t\t\tfilterPlacements: this._filterPlacements.bind(this),\n\t\t});\n\t}\n\n\tget groupHeaderItem() {\n\t\treturn this.shadowRoot!.querySelector<ListItemGroupHeader>(\"[ui5-li-group-header]\")!;\n\t}\n\n\tget hasHeader(): boolean {\n\t\treturn !!this.headerText || this.hasFormattedHeader;\n\t}\n\n\tget hasFormattedHeader(): boolean {\n\t\treturn !!this.header.length;\n\t}\n\n\tget isListItemGroup() {\n\t\treturn true;\n\t}\n\n\tget dropIndicatorDOM(): DropIndicator | null {\n\t\treturn this.shadowRoot!.querySelector(\"[ui5-drop-indicator]\");\n\t}\n\n\t_ondragenter(e: DragEvent) {\n\t\tthis._dragAndDropHandler.ondragenter(e);\n\t}\n\n\t_ondragleave(e: DragEvent) {\n\t\tthis._dragAndDropHandler.ondragleave(e);\n\t}\n\n\t_ondragover(e: DragEvent) {\n\t\tthis._dragAndDropHandler.ondragover(e);\n\t}\n\n\t_ondrop(e: DragEvent) {\n\t\tthis._dragAndDropHandler.ondrop(e);\n\t}\n\n\t_filterPlacements(placements: MovePlacement[], draggedElement: HTMLElement, targetElement: HTMLElement): MovePlacement[] {\n\t\t// Filter out MovePlacement.On when dragged element is the same as target\n\t\tif (targetElement === draggedElement) {\n\t\t\treturn placements.filter(placement => placement !== MovePlacement.On);\n\t\t}\n\t\treturn placements;\n\t}\n\n\tgetFocusDomRef() {\n\t\treturn this.groupHeaderItem || this.items.at(0);\n\t}\n\n\tgetGroupHeaderWrapping(): WrappingType { return WrappingType.None; }\n}\n\nListItemGroup.define();\n\nexport default ListItemGroup;\nexport const isInstanceOfListItemGroup = createInstanceChecker<ListItemGroup>(\"isListItemGroup\");\nexport type { ListItemGroupMoveEventDetail };\n"]}
|
package/dist/Menu.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
2
|
import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
3
|
+
import type { ListItemBaseClickEventDetail } from "./ListItemBase.js";
|
|
3
4
|
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
4
5
|
import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
|
|
5
6
|
import type { Timeout } from "@ui5/webcomponents-base/dist/types.js";
|
|
@@ -19,6 +20,9 @@ interface IMenuItem extends UI5Element {
|
|
|
19
20
|
isMenuItem?: boolean;
|
|
20
21
|
isSeparator?: boolean;
|
|
21
22
|
isGroup?: boolean;
|
|
23
|
+
eventDetails: {
|
|
24
|
+
click?: ListItemBaseClickEventDetail;
|
|
25
|
+
};
|
|
22
26
|
}
|
|
23
27
|
type MenuItemClickEventDetail = {
|
|
24
28
|
item: MenuItem;
|
package/dist/Menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../src/Menu.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { 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 slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport {\n\tisLeft,\n\tisRight,\n\tisEnter,\n\tisTabNext,\n\tisTabPrevious,\n\tisShow,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n\tisPhone,\n\tisDesktop,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport DOMReferenceConverter from \"@ui5/webcomponents-base/dist/converters/DOMReference.js\";\nimport type List from \"./List.js\";\nimport type ResponsivePopover from \"./ResponsivePopover.js\";\nimport type MenuItem from \"./MenuItem.js\";\n// The import below should be kept, as MenuItem is part of the Menu component.\nimport { isInstanceOfMenuItem } from \"./MenuItem.js\";\nimport { isInstanceOfMenuItemGroup } from \"./MenuItemGroup.js\";\nimport { isInstanceOfMenuSeparator } from \"./MenuSeparator.js\";\nimport { isInstanceOfSplitButton } from \"./SplitButton.js\";\nimport type PopoverHorizontalAlign from \"./types/PopoverHorizontalAlign.js\";\nimport type PopoverPlacement from \"./types/PopoverPlacement.js\";\nimport type {\n\tListItemClickEventDetail,\n} from \"./List.js\";\nimport menuTemplate from \"./MenuTemplate.js\";\nimport {\n\tMENU_CANCEL_BUTTON_TEXT,\n\tMENU_POPOVER_ACCESSIBLE_NAME,\n\tMENU_ITEM_LOADING,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport menuCss from \"./generated/themes/Menu.css.js\";\n\nconst MENU_OPEN_DELAY = 300;\n\n/**\n * Interface for components that may be slotted inside a `ui5-menu`.\n *\n * **Note:** Use with `ui5-menu-item` or `ui5-menu-separator`. Implementing the interface does not guarantee that any other classes can work with the `ui5-menu`.\n * @public\n */\ninterface IMenuItem extends UI5Element {\n\tisMenuItem?: boolean;\n\tisSeparator?: boolean;\n\tisGroup?: boolean;\n}\n\ntype MenuItemClickEventDetail = {\n\titem: MenuItem,\n\ttext: string,\n}\n\ntype MenuBeforeOpenEventDetail = { item?: MenuItem };\ntype MenuBeforeCloseEventDetail = { escPressed: boolean };\n\n/**\n * @class\n *\n * ### Overview\n *\n * `ui5-menu` component represents a hierarchical menu structure.\n *\n * ### Structure\n *\n * The `ui5-menu` can hold two types of entities:\n *\n * - `ui5-menu-item` components\n * - `ui5-menu-separator` - used to separate menu items with a line\n *\n * An arbitrary hierarchy structure can be represented by recursively nesting menu items.\n *\n * ### Keyboard Handling\n *\n * The `ui5-menu` provides advanced keyboard handling.\n * The user can use the following keyboard shortcuts in order to navigate trough the tree:\n *\n * - `Arrow Up` / `Arrow Down` - Navigates up and down the menu items that are currently visible.\n * - `Arrow Right`, `Space` or `Enter` - Opens a sub-menu if there are menu items nested\n * in the currently clicked menu item.\n * - `Arrow Left` or `Escape` - Closes the currently opened sub-menu.\n *\n * when there is `endContent` :\n * - `Arrow Left` or `ArrowRight` - Navigate between the menu item actions and the menu item itself\n * - `Arrow Up` / `Arrow Down` - Navigates up and down the currently visible menu items\n *\n * **Note:** If the text direction is set to Right-to-left (RTL), `Arrow Right` and `Arrow Left` functionality is swapped.\n *\n * Application developers are responsible for ensuring that interactive elements placed in the `endContent` slot\n * have the correct accessibility behaviour, including their enabled or disabled states.\n * The menu does not manage these aspects when the menu item state changes.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Menu.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.3.0\n * @public\n */\n@customElement({\n\ttag: \"ui5-menu\",\n\trenderer: jsxRenderer,\n\tstyles: menuCss,\n\ttemplate: menuTemplate,\n})\n\n/**\n * Fired when an item is being clicked.\n *\n * **Note:** Since 1.17.0 the event is preventable, allowing the menu to remain open after an item is pressed.\n * @param { HTMLElement } item The currently clicked menu item.\n * @param { string } text The text of the currently clicked menu item.\n * @public\n */\n@event(\"item-click\", {\n\tcancelable: true,\n})\n\n/**\n * Fired before the menu is opened. This event can be cancelled, which will prevent the menu from opening.\n *\n * **Note:** Since 1.14.0 the event is also fired before a sub-menu opens.\n * @public\n * @since 1.10.0\n * @param { HTMLElement } item The `ui5-menu-item` that triggers opening of the sub-menu or undefined when fired upon root menu opening.\n */\n@event(\"before-open\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n/**\n * Fired after the menu is opened.\n * @public\n * @since 1.10.0\n */\n@event(\"open\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the menu is being closed.\n * @private\n */\n@event(\"close-menu\", {\n\tbubbles: true,\n})\n\n/**\n * Fired before the menu is closed. This event can be cancelled, which will prevent the menu from closing.\n * @public\n * @param {boolean} escPressed Indicates that `ESC` key has triggered the event.\n * @since 1.10.0\n */\n@event(\"before-close\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n/**\n * Fired after the menu is closed.\n * @public\n * @since 1.10.0\n */\n@event(\"close\")\n\nclass Menu extends UI5Element {\n\teventDetails!: {\n\t\t\"item-click\": MenuItemClickEventDetail,\n\t\t\"before-open\": MenuBeforeOpenEventDetail,\n\t\t\"open\": void,\n\t\t\"before-close\": MenuBeforeCloseEventDetail,\n\t\t\"close\": void,\n\t\t\"close-menu\": void,\n\t}\n\t/**\n\t * Defines the header text of the menu (displayed on mobile).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\theaderText?: string;\n\n\t/**\n\t * Indicates if the menu is open.\n\t * @public\n\t * @default false\n\t * @since 1.10.0\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Determines on which side the component is placed at.\n\t * @default \"Bottom\"\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@property()\n\tplacement: `${PopoverPlacement}` = \"Bottom\";\n\n\t/**\n\t * Determines the horizontal alignment of the menu relative to its opener control.\n\t * @default \"Start\"\n\t * @public\n\t */\n\t@property()\n\thorizontalAlign: `${PopoverHorizontalAlign}` = \"Start\";\n\n\t/**\n\t * Defines if a loading indicator would be displayed inside the corresponding ui5-menu popover.\n\t * @default false\n\t * @public\n\t * @since 1.13.0\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding ui5-menu popover.\n\t * @default 1000\n\t * @public\n\t * @since 1.13.0\n\t */\n\t@property({ type: Number })\n\tloadingDelay = 1000;\n\n\t/**\n\t * Defines the ID or DOM Reference of the element at which the menu is shown.\n\t * When using this attribute in a declarative way, you must only use the `id` (as a string) of the element at which you want to show the popover.\n\t * You can only set the `opener` attribute to a DOM Reference when using JavaScript.\n\t * @public\n\t * @default undefined\n\t * @since 1.10.0\n\t */\n\t@property({ converter: DOMReferenceConverter })\n\topener?: HTMLElement | string | null;\n\n\t/**\n\t * Defines the items of this component.\n\t *\n\t * **Note:** Use `ui5-menu-item` and `ui5-menu-separator` for their intended design.\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement, invalidateOnChildChange: true })\n\titems!: DefaultSlot<IMenuItem>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\t_timeout?: Timeout;\n\n\tget isRtl() {\n\t\treturn this.effectiveDir === \"rtl\";\n\t}\n\n\tget labelCancel() {\n\t\treturn Menu.i18nBundle.getText(MENU_CANCEL_BUTTON_TEXT);\n\t}\n\n\tget isPhone() {\n\t\treturn isPhone();\n\t}\n\n\tget _popover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\tget _list() {\n\t\treturn this.shadowRoot!.querySelector<List>(\"[ui5-list]\");\n\t}\n\n\tget _opener() {\n\t\treturn typeof this.opener === \"string\" ? document.getElementById(this.opener) : this.opener;\n\t}\n\n\t/** Returns menu item groups */\n\tget _menuItemGroups() {\n\t\treturn this.items.filter(isInstanceOfMenuItemGroup);\n\t}\n\n\t/** Returns menu items */\n\tget _menuItems() {\n\t\treturn this.items.filter(isInstanceOfMenuItem);\n\t}\n\n\t/** Returns all menu items (including those in groups */\n\tget _allMenuItems() {\n\t\tconst items: MenuItem[] = [];\n\t\tconst slottedItems = this.getSlottedNodes<IMenuItem>(\"items\");\n\n\t\tslottedItems.forEach(item => {\n\t\t\tif (isInstanceOfMenuItemGroup(item)) {\n\t\t\t\titems.push(...item._menuItems);\n\t\t\t} else if (!isInstanceOfMenuSeparator(item)) {\n\t\t\t\titems.push(item as MenuItem);\n\t\t\t}\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t/** Returns menu items included in the ItemNavigation */\n\tget _navigatableMenuItems() {\n\t\tconst items: MenuItem[] = [];\n\t\tconst slottedItems = this.getSlottedNodes<MenuItem>(\"items\");\n\n\t\tslottedItems.forEach(item => {\n\t\t\tif (isInstanceOfMenuItemGroup(item)) {\n\t\t\t\tconst groupItems = item.getSlottedNodes<MenuItem>(\"items\");\n\t\t\t\titems.push(...groupItems);\n\t\t\t} else if (!isInstanceOfMenuSeparator(item)) {\n\t\t\t\titems.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn items;\n\t}\n\n\tget accessibleNameText() {\n\t\treturn Menu.i18nBundle.getText(MENU_POPOVER_ACCESSIBLE_NAME);\n\t}\n\n\tonBeforeRendering() {\n\t\tconst siblingsWithIcon = this._allMenuItems.some(menuItem => !!menuItem.icon);\n\n\t\tthis._setupItemNavigation();\n\n\t\tthis._allMenuItems.forEach(item => {\n\t\t\titem._siblingsWithIcon = siblingsWithIcon;\n\t\t});\n\t}\n\n\tgetFocusDomRef(): HTMLElement | undefined {\n\t\treturn this._list?.getFocusDomRef();\n\t}\n\n\t_setupItemNavigation() {\n\t\tif (this._list) {\n\t\t\tthis._list._itemNavigation._getItems = () => this._navigatableMenuItems;\n\t\t}\n\t}\n\n\t_close() {\n\t\tthis.open = false;\n\t}\n\n\t_openItemSubMenu(item: MenuItem, openedByMouse = false) {\n\t\tclearTimeout(this._timeout);\n\n\t\tif (!item._popover || item._popover.open) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"before-open\", {\n\t\t\titem,\n\t\t});\n\n\t\titem._popover.opener = item;\n\t\titem._popover.open = true;\n\t\titem.selected = true;\n\t\titem._openedByMouse = openedByMouse;\n\t}\n\n\t_itemMouseOver(e: MouseEvent) {\n\t\tif (!isDesktop()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst item = e.target as MenuItem;\n\t\tif (!isInstanceOfMenuItem(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\titem.getFocusDomRef()?.focus();\n\n\t\t// Opens submenu with 300ms delay\n\t\tthis._startOpenTimeout(item);\n\t}\n\n\tasync focus(focusOptions?: FocusOptions): Promise<void> {\n\t\tawait renderFinished();\n\t\tconst firstMenuItem = this._allMenuItems[0];\n\n\t\tif (firstMenuItem) {\n\t\t\treturn firstMenuItem.focus(focusOptions);\n\t\t}\n\n\t\treturn super.focus(focusOptions);\n\t}\n\n\t_closeOtherSubMenus(item: MenuItem) {\n\t\tconst menuItems = this._allMenuItems;\n\t\tif (!menuItems.includes(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\tmenuItems.forEach(menuItem => {\n\t\t\tif (menuItem !== item) {\n\t\t\t\tmenuItem._close();\n\t\t\t}\n\t\t});\n\t}\n\n\t_startOpenTimeout(item: MenuItem) {\n\t\tclearTimeout(this._timeout);\n\n\t\tthis._timeout = setTimeout(() => {\n\t\t\tthis._closeOtherSubMenus(item);\n\n\t\t\tthis._openItemSubMenu(item, true);\n\t\t}, MENU_OPEN_DELAY);\n\t}\n\n\t_itemClick(e: CustomEvent<ListItemClickEventDetail>) {\n\t\tconst item = e.detail.item as MenuItem;\n\n\t\tif (!item._popover) {\n\t\t\tconst prevented = !this.fireDecoratorEvent(\"item-click\", {\n\t\t\t\t\"item\": item,\n\t\t\t\t\"text\": item.text || \"\",\n\t\t\t});\n\n\t\t\tif (!prevented) {\n\t\t\t\titem._updateCheckedState();\n\t\t\t\tthis._popover && !item._shiftPressed && item.fireDecoratorEvent(\"close-menu\");\n\t\t\t}\n\t\t} else {\n\t\t\tthis._openItemSubMenu(item);\n\t\t}\n\t}\n\n\t_itemKeyDown(e: KeyboardEvent) {\n\t\tconst isTabNextPrevious = isTabNext(e) || isTabPrevious(e);\n\t\tconst isShowKey = isShow(e);\n\t\tconst isSplitButton = this._opener && isInstanceOfSplitButton(this._opener);\n\t\tconst item = e.target as MenuItem;\n\n\t\tif (!isInstanceOfMenuItem(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isEndContentNavigation = isRight(e) || isLeft(e);\n\t\tconst shouldOpenMenu = this.isRtl ? isLeft(e) : isRight(e);\n\n\t\tif (isEnter(e) || isTabNextPrevious || (isShowKey && isSplitButton)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEndContentNavigation) {\n\t\t\titem._navigateToEndContent(isLeft(e));\n\t\t}\n\n\t\tif (shouldOpenMenu) {\n\t\t\tthis._openItemSubMenu(item, false);\n\t\t} else if (isTabNextPrevious || (isShowKey && isSplitButton)) {\n\t\t\tthis._close();\n\t\t}\n\t}\n\n\t_navigateOutOfEndContent(e: CustomEvent) {\n\t\tconst item = e.target as MenuItem;\n\t\tconst shouldNavigateToNextItem = e.detail.shouldNavigateToNextItem;\n\t\tconst menuItems = this._allMenuItems;\n\t\tconst itemIndex = menuItems.indexOf(item);\n\n\t\tif (itemIndex > -1) {\n\t\t\tconst nextItem = shouldNavigateToNextItem ? menuItems[itemIndex + 1] : menuItems[itemIndex - 1];\n\t\t\tconst itemToFocus = nextItem || menuItems[itemIndex];\n\t\t\titemToFocus?.focus();\n\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n\n\t_beforePopoverOpen(e: CustomEvent) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-open\", {});\n\n\t\tif (prevented) {\n\t\t\tthis.open = false;\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_afterPopoverOpen() {\n\t\tthis._allMenuItems[0]?.focus();\n\t\tif (this.loading) {\n\t\t\tannounce(Menu.i18nBundle.getText(MENU_ITEM_LOADING), InvisibleMessageMode.Polite);\n\t\t}\n\t\tthis.fireDecoratorEvent(\"open\");\n\t}\n\n\t_beforePopoverClose(e: CustomEvent) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-close\", { escPressed: e.detail.escPressed });\n\n\t\tif (prevented) {\n\t\t\tthis.open = true;\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_afterPopoverClose() {\n\t\tthis.open = false;\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n}\n\nMenu.define();\n\nexport default Menu;\nexport type {\n\tMenuItemClickEventDetail,\n\tMenuBeforeCloseEventDetail,\n\tMenuBeforeOpenEventDetail,\n\tIMenuItem,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../src/Menu.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { ListItemBaseClickEventDetail } from \"./ListItemBase.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport {\n\tisLeft,\n\tisRight,\n\tisEnter,\n\tisTabNext,\n\tisTabPrevious,\n\tisShow,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n\tisPhone,\n\tisDesktop,\n} from \"@ui5/webcomponents-base/dist/Device.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport InvisibleMessageMode from \"@ui5/webcomponents-base/dist/types/InvisibleMessageMode.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport type { Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport DOMReferenceConverter from \"@ui5/webcomponents-base/dist/converters/DOMReference.js\";\nimport type List from \"./List.js\";\nimport type ResponsivePopover from \"./ResponsivePopover.js\";\nimport type MenuItem from \"./MenuItem.js\";\n// The import below should be kept, as MenuItem is part of the Menu component.\nimport { isInstanceOfMenuItem } from \"./MenuItem.js\";\nimport { isInstanceOfMenuItemGroup } from \"./MenuItemGroup.js\";\nimport { isInstanceOfMenuSeparator } from \"./MenuSeparator.js\";\nimport { isInstanceOfSplitButton } from \"./SplitButton.js\";\nimport type PopoverHorizontalAlign from \"./types/PopoverHorizontalAlign.js\";\nimport type PopoverPlacement from \"./types/PopoverPlacement.js\";\nimport type {\n\tListItemClickEventDetail,\n} from \"./List.js\";\nimport menuTemplate from \"./MenuTemplate.js\";\nimport {\n\tMENU_CANCEL_BUTTON_TEXT,\n\tMENU_POPOVER_ACCESSIBLE_NAME,\n\tMENU_ITEM_LOADING,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport menuCss from \"./generated/themes/Menu.css.js\";\n\nconst MENU_OPEN_DELAY = 300;\n\n/**\n * Interface for components that may be slotted inside a `ui5-menu`.\n *\n * **Note:** Use with `ui5-menu-item` or `ui5-menu-separator`. Implementing the interface does not guarantee that any other classes can work with the `ui5-menu`.\n * @public\n */\ninterface IMenuItem extends UI5Element {\n\tisMenuItem?: boolean;\n\tisSeparator?: boolean;\n\tisGroup?: boolean;\n\teventDetails: { click?: ListItemBaseClickEventDetail };\n}\n\ntype MenuItemClickEventDetail = {\n\titem: MenuItem,\n\ttext: string,\n}\n\ntype MenuBeforeOpenEventDetail = { item?: MenuItem };\ntype MenuBeforeCloseEventDetail = { escPressed: boolean };\n\n/**\n * @class\n *\n * ### Overview\n *\n * `ui5-menu` component represents a hierarchical menu structure.\n *\n * ### Structure\n *\n * The `ui5-menu` can hold two types of entities:\n *\n * - `ui5-menu-item` components\n * - `ui5-menu-separator` - used to separate menu items with a line\n *\n * An arbitrary hierarchy structure can be represented by recursively nesting menu items.\n *\n * ### Keyboard Handling\n *\n * The `ui5-menu` provides advanced keyboard handling.\n * The user can use the following keyboard shortcuts in order to navigate trough the tree:\n *\n * - `Arrow Up` / `Arrow Down` - Navigates up and down the menu items that are currently visible.\n * - `Arrow Right`, `Space` or `Enter` - Opens a sub-menu if there are menu items nested\n * in the currently clicked menu item.\n * - `Arrow Left` or `Escape` - Closes the currently opened sub-menu.\n *\n * when there is `endContent` :\n * - `Arrow Left` or `ArrowRight` - Navigate between the menu item actions and the menu item itself\n * - `Arrow Up` / `Arrow Down` - Navigates up and down the currently visible menu items\n *\n * **Note:** If the text direction is set to Right-to-left (RTL), `Arrow Right` and `Arrow Left` functionality is swapped.\n *\n * Application developers are responsible for ensuring that interactive elements placed in the `endContent` slot\n * have the correct accessibility behaviour, including their enabled or disabled states.\n * The menu does not manage these aspects when the menu item state changes.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/Menu.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.3.0\n * @public\n */\n@customElement({\n\ttag: \"ui5-menu\",\n\trenderer: jsxRenderer,\n\tstyles: menuCss,\n\ttemplate: menuTemplate,\n})\n\n/**\n * Fired when an item is being clicked.\n *\n * **Note:** Since 1.17.0 the event is preventable, allowing the menu to remain open after an item is pressed.\n * @param { HTMLElement } item The currently clicked menu item.\n * @param { string } text The text of the currently clicked menu item.\n * @public\n */\n@event(\"item-click\", {\n\tcancelable: true,\n})\n\n/**\n * Fired before the menu is opened. This event can be cancelled, which will prevent the menu from opening.\n *\n * **Note:** Since 1.14.0 the event is also fired before a sub-menu opens.\n * @public\n * @since 1.10.0\n * @param { HTMLElement } item The `ui5-menu-item` that triggers opening of the sub-menu or undefined when fired upon root menu opening.\n */\n@event(\"before-open\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n/**\n * Fired after the menu is opened.\n * @public\n * @since 1.10.0\n */\n@event(\"open\", {\n\tbubbles: true,\n})\n\n/**\n * Fired when the menu is being closed.\n * @private\n */\n@event(\"close-menu\", {\n\tbubbles: true,\n})\n\n/**\n * Fired before the menu is closed. This event can be cancelled, which will prevent the menu from closing.\n * @public\n * @param {boolean} escPressed Indicates that `ESC` key has triggered the event.\n * @since 1.10.0\n */\n@event(\"before-close\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\n/**\n * Fired after the menu is closed.\n * @public\n * @since 1.10.0\n */\n@event(\"close\")\n\nclass Menu extends UI5Element {\n\teventDetails!: {\n\t\t\"item-click\": MenuItemClickEventDetail,\n\t\t\"before-open\": MenuBeforeOpenEventDetail,\n\t\t\"open\": void,\n\t\t\"before-close\": MenuBeforeCloseEventDetail,\n\t\t\"close\": void,\n\t\t\"close-menu\": void,\n\t}\n\t/**\n\t * Defines the header text of the menu (displayed on mobile).\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\theaderText?: string;\n\n\t/**\n\t * Indicates if the menu is open.\n\t * @public\n\t * @default false\n\t * @since 1.10.0\n\t */\n\t@property({ type: Boolean })\n\topen = false;\n\n\t/**\n\t * Determines on which side the component is placed at.\n\t * @default \"Bottom\"\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@property()\n\tplacement: `${PopoverPlacement}` = \"Bottom\";\n\n\t/**\n\t * Determines the horizontal alignment of the menu relative to its opener control.\n\t * @default \"Start\"\n\t * @public\n\t */\n\t@property()\n\thorizontalAlign: `${PopoverHorizontalAlign}` = \"Start\";\n\n\t/**\n\t * Defines if a loading indicator would be displayed inside the corresponding ui5-menu popover.\n\t * @default false\n\t * @public\n\t * @since 1.13.0\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Defines the delay in milliseconds, after which the loading indicator will be displayed inside the corresponding ui5-menu popover.\n\t * @default 1000\n\t * @public\n\t * @since 1.13.0\n\t */\n\t@property({ type: Number })\n\tloadingDelay = 1000;\n\n\t/**\n\t * Defines the ID or DOM Reference of the element at which the menu is shown.\n\t * When using this attribute in a declarative way, you must only use the `id` (as a string) of the element at which you want to show the popover.\n\t * You can only set the `opener` attribute to a DOM Reference when using JavaScript.\n\t * @public\n\t * @default undefined\n\t * @since 1.10.0\n\t */\n\t@property({ converter: DOMReferenceConverter })\n\topener?: HTMLElement | string | null;\n\n\t/**\n\t * Defines the items of this component.\n\t *\n\t * **Note:** Use `ui5-menu-item` and `ui5-menu-separator` for their intended design.\n\t * @public\n\t */\n\t@slot({ \"default\": true, type: HTMLElement, invalidateOnChildChange: true })\n\titems!: DefaultSlot<IMenuItem>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\t_timeout?: Timeout;\n\n\tget isRtl() {\n\t\treturn this.effectiveDir === \"rtl\";\n\t}\n\n\tget labelCancel() {\n\t\treturn Menu.i18nBundle.getText(MENU_CANCEL_BUTTON_TEXT);\n\t}\n\n\tget isPhone() {\n\t\treturn isPhone();\n\t}\n\n\tget _popover() {\n\t\treturn this.shadowRoot!.querySelector<ResponsivePopover>(\"[ui5-responsive-popover]\")!;\n\t}\n\tget _list() {\n\t\treturn this.shadowRoot!.querySelector<List>(\"[ui5-list]\");\n\t}\n\n\tget _opener() {\n\t\treturn typeof this.opener === \"string\" ? document.getElementById(this.opener) : this.opener;\n\t}\n\n\t/** Returns menu item groups */\n\tget _menuItemGroups() {\n\t\treturn this.items.filter(isInstanceOfMenuItemGroup);\n\t}\n\n\t/** Returns menu items */\n\tget _menuItems() {\n\t\treturn this.items.filter(isInstanceOfMenuItem);\n\t}\n\n\t/** Returns all menu items (including those in groups */\n\tget _allMenuItems() {\n\t\tconst items: MenuItem[] = [];\n\t\tconst slottedItems = this.getSlottedNodes<IMenuItem>(\"items\");\n\n\t\tslottedItems.forEach(item => {\n\t\t\tif (isInstanceOfMenuItemGroup(item)) {\n\t\t\t\titems.push(...item._menuItems);\n\t\t\t} else if (!isInstanceOfMenuSeparator(item)) {\n\t\t\t\titems.push(item as MenuItem);\n\t\t\t}\n\t\t});\n\n\t\treturn items;\n\t}\n\n\t/** Returns menu items included in the ItemNavigation */\n\tget _navigatableMenuItems() {\n\t\tconst items: MenuItem[] = [];\n\t\tconst slottedItems = this.getSlottedNodes<MenuItem>(\"items\");\n\n\t\tslottedItems.forEach(item => {\n\t\t\tif (isInstanceOfMenuItemGroup(item)) {\n\t\t\t\tconst groupItems = item.getSlottedNodes<MenuItem>(\"items\");\n\t\t\t\titems.push(...groupItems);\n\t\t\t} else if (!isInstanceOfMenuSeparator(item)) {\n\t\t\t\titems.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn items;\n\t}\n\n\tget accessibleNameText() {\n\t\treturn Menu.i18nBundle.getText(MENU_POPOVER_ACCESSIBLE_NAME);\n\t}\n\n\tonBeforeRendering() {\n\t\tconst siblingsWithIcon = this._allMenuItems.some(menuItem => !!menuItem.icon);\n\n\t\tthis._setupItemNavigation();\n\n\t\tthis._allMenuItems.forEach(item => {\n\t\t\titem._siblingsWithIcon = siblingsWithIcon;\n\t\t});\n\t}\n\n\tgetFocusDomRef(): HTMLElement | undefined {\n\t\treturn this._list?.getFocusDomRef();\n\t}\n\n\t_setupItemNavigation() {\n\t\tif (this._list) {\n\t\t\tthis._list._itemNavigation._getItems = () => this._navigatableMenuItems;\n\t\t}\n\t}\n\n\t_close() {\n\t\tthis.open = false;\n\t}\n\n\t_openItemSubMenu(item: MenuItem, openedByMouse = false) {\n\t\tclearTimeout(this._timeout);\n\n\t\tif (!item._popover || item._popover.open) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"before-open\", {\n\t\t\titem,\n\t\t});\n\n\t\titem._popover.opener = item;\n\t\titem._popover.open = true;\n\t\titem.selected = true;\n\t\titem._openedByMouse = openedByMouse;\n\t}\n\n\t_itemMouseOver(e: MouseEvent) {\n\t\tif (!isDesktop()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst item = e.target as MenuItem;\n\t\tif (!isInstanceOfMenuItem(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\titem.getFocusDomRef()?.focus();\n\n\t\t// Opens submenu with 300ms delay\n\t\tthis._startOpenTimeout(item);\n\t}\n\n\tasync focus(focusOptions?: FocusOptions): Promise<void> {\n\t\tawait renderFinished();\n\t\tconst firstMenuItem = this._allMenuItems[0];\n\n\t\tif (firstMenuItem) {\n\t\t\treturn firstMenuItem.focus(focusOptions);\n\t\t}\n\n\t\treturn super.focus(focusOptions);\n\t}\n\n\t_closeOtherSubMenus(item: MenuItem) {\n\t\tconst menuItems = this._allMenuItems;\n\t\tif (!menuItems.includes(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\tmenuItems.forEach(menuItem => {\n\t\t\tif (menuItem !== item) {\n\t\t\t\tmenuItem._close();\n\t\t\t}\n\t\t});\n\t}\n\n\t_startOpenTimeout(item: MenuItem) {\n\t\tclearTimeout(this._timeout);\n\n\t\tthis._timeout = setTimeout(() => {\n\t\t\tthis._closeOtherSubMenus(item);\n\n\t\t\tthis._openItemSubMenu(item, true);\n\t\t}, MENU_OPEN_DELAY);\n\t}\n\n\t_itemClick(e: CustomEvent<ListItemClickEventDetail>) {\n\t\tconst item = e.detail.item as MenuItem;\n\n\t\tif (!item._popover) {\n\t\t\tconst prevented = !this.fireDecoratorEvent(\"item-click\", {\n\t\t\t\t\"item\": item,\n\t\t\t\t\"text\": item.text || \"\",\n\t\t\t});\n\n\t\t\tif (!prevented) {\n\t\t\t\titem._updateCheckedState();\n\t\t\t\tthis._popover && !item._shiftPressed && item.fireDecoratorEvent(\"close-menu\");\n\t\t\t}\n\t\t} else {\n\t\t\tthis._openItemSubMenu(item);\n\t\t}\n\t}\n\n\t_itemKeyDown(e: KeyboardEvent) {\n\t\tconst isTabNextPrevious = isTabNext(e) || isTabPrevious(e);\n\t\tconst isShowKey = isShow(e);\n\t\tconst isSplitButton = this._opener && isInstanceOfSplitButton(this._opener);\n\t\tconst item = e.target as MenuItem;\n\n\t\tif (!isInstanceOfMenuItem(item)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isEndContentNavigation = isRight(e) || isLeft(e);\n\t\tconst shouldOpenMenu = this.isRtl ? isLeft(e) : isRight(e);\n\n\t\tif (isEnter(e) || isTabNextPrevious || (isShowKey && isSplitButton)) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (isEndContentNavigation) {\n\t\t\titem._navigateToEndContent(isLeft(e));\n\t\t}\n\n\t\tif (shouldOpenMenu) {\n\t\t\tthis._openItemSubMenu(item, false);\n\t\t} else if (isTabNextPrevious || (isShowKey && isSplitButton)) {\n\t\t\tthis._close();\n\t\t}\n\t}\n\n\t_navigateOutOfEndContent(e: CustomEvent) {\n\t\tconst item = e.target as MenuItem;\n\t\tconst shouldNavigateToNextItem = e.detail.shouldNavigateToNextItem;\n\t\tconst menuItems = this._allMenuItems;\n\t\tconst itemIndex = menuItems.indexOf(item);\n\n\t\tif (itemIndex > -1) {\n\t\t\tconst nextItem = shouldNavigateToNextItem ? menuItems[itemIndex + 1] : menuItems[itemIndex - 1];\n\t\t\tconst itemToFocus = nextItem || menuItems[itemIndex];\n\t\t\titemToFocus?.focus();\n\n\t\t\te.stopPropagation();\n\t\t}\n\t}\n\n\t_beforePopoverOpen(e: CustomEvent) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-open\", {});\n\n\t\tif (prevented) {\n\t\t\tthis.open = false;\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_afterPopoverOpen() {\n\t\tthis._allMenuItems[0]?.focus();\n\t\tif (this.loading) {\n\t\t\tannounce(Menu.i18nBundle.getText(MENU_ITEM_LOADING), InvisibleMessageMode.Polite);\n\t\t}\n\t\tthis.fireDecoratorEvent(\"open\");\n\t}\n\n\t_beforePopoverClose(e: CustomEvent) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"before-close\", { escPressed: e.detail.escPressed });\n\n\t\tif (prevented) {\n\t\t\tthis.open = true;\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_afterPopoverClose() {\n\t\tthis.open = false;\n\t\tthis.fireDecoratorEvent(\"close\");\n\t}\n}\n\nMenu.define();\n\nexport default Menu;\nexport type {\n\tMenuItemClickEventDetail,\n\tMenuBeforeCloseEventDetail,\n\tMenuBeforeOpenEventDetail,\n\tIMenuItem,\n};\n"]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import type { JsxTemplate } from "@ui5/webcomponents-base/dist/index.js";
|
|
1
2
|
import type MenuItem from "./MenuItem.js";
|
|
2
3
|
import type { ListItemHooks } from "./ListItemTemplate.js";
|
|
3
|
-
export
|
|
4
|
+
export type MenuItemHooks = ListItemHooks & {
|
|
5
|
+
menuItemTextContent: JsxTemplate;
|
|
6
|
+
};
|
|
7
|
+
export default function MenuItemTemplate(this: MenuItem, hooks?: Partial<MenuItemHooks>): import("@ui5/webcomponents-base/jsx-runtime").JSX.Element;
|
package/dist/MenuItemTemplate.js
CHANGED
|
@@ -10,15 +10,20 @@ import slimArrowRight from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
|
|
|
10
10
|
import Icon from "./Icon.js";
|
|
11
11
|
import ListItemTemplate from "./ListItemTemplate.js";
|
|
12
12
|
const predefinedHooks = {
|
|
13
|
-
listItemContent,
|
|
14
13
|
iconBegin,
|
|
14
|
+
menuItemTextContent,
|
|
15
15
|
};
|
|
16
16
|
export default function MenuItemTemplate(hooks) {
|
|
17
17
|
const currentHooks = { ...predefinedHooks, ...hooks };
|
|
18
|
+
if (!hooks?.listItemContent) {
|
|
19
|
+
currentHooks.listItemContent = function listItemContent() {
|
|
20
|
+
return (_jsxs(_Fragment, { children: [currentHooks.menuItemTextContent.call(this), rightContent.call(this), checkmarkContent.call(this)] }));
|
|
21
|
+
};
|
|
22
|
+
}
|
|
18
23
|
return _jsxs(_Fragment, { children: [ListItemTemplate.call(this, currentHooks), listItemPostContent.call(this)] });
|
|
19
24
|
}
|
|
20
|
-
function
|
|
21
|
-
return (
|
|
25
|
+
function menuItemTextContent() {
|
|
26
|
+
return _jsx(_Fragment, { children: this.text && _jsx("div", { class: "ui5-menu-item-text", children: this.text }) });
|
|
22
27
|
}
|
|
23
28
|
function checkmarkContent() {
|
|
24
29
|
return !this._markChecked ? "" : (_jsx("div", { class: "ui5-menu-item-checked", children: _jsx(Icon, { name: checkIcon, class: "ui5-menu-item-icon-checked" }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItemTemplate.js","sourceRoot":"","sources":["../src/MenuItemTemplate.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"MenuItemTemplate.js","sourceRoot":"","sources":["../src/MenuItemTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { JsxTemplate } from \"@ui5/webcomponents-base/dist/index.js\";\nimport type MenuItem from \"./MenuItem.js\";\nimport PopoverPlacement from \"./types/PopoverPlacement.js\";\nimport ResponsivePopover from \"./ResponsivePopover.js\";\nimport Button from \"./Button.js\";\nimport List from \"./List.js\";\nimport BusyIndicator from \"./BusyIndicator.js\";\nimport navBackIcon from \"@ui5/webcomponents-icons/dist/nav-back.js\";\nimport checkIcon from \"@ui5/webcomponents-icons/dist/accept.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport Icon from \"./Icon.js\";\nimport ListItemTemplate from \"./ListItemTemplate.js\";\nimport type { ListItemHooks } from \"./ListItemTemplate.js\";\n\nexport type MenuItemHooks = ListItemHooks & {\n\tmenuItemTextContent: JsxTemplate;\n}\n\nconst predefinedHooks: Partial<MenuItemHooks> = {\n\ticonBegin,\n\tmenuItemTextContent,\n};\n\nexport default function MenuItemTemplate(this: MenuItem, hooks?: Partial<MenuItemHooks>) {\n\tconst currentHooks = { ...predefinedHooks, ...hooks };\n\n\tif (!hooks?.listItemContent) {\n\t\tcurrentHooks.listItemContent = function listItemContent(this: MenuItem) {\n\t\t\treturn (<>\n\t\t\t\t{currentHooks.menuItemTextContent!.call(this)}\n\n\t\t\t\t{rightContent.call(this)}\n\t\t\t\t{checkmarkContent.call(this)}\n\t\t\t</>);\n\t\t};\n\t}\n\n\treturn <>\n\t\t{ListItemTemplate.call(this, currentHooks)}\n\n\t\t{listItemPostContent.call(this)}\n\t</>;\n}\n\nfunction menuItemTextContent(this: MenuItem) {\n\treturn <>{this.text && <div class=\"ui5-menu-item-text\">{this.text}</div>}</>;\n}\n\nfunction checkmarkContent(this: MenuItem) {\n\treturn !this._markChecked ? \"\" : (\n\t\t<div class=\"ui5-menu-item-checked\">\n\t\t\t<Icon\n\t\t\t\tname={checkIcon}\n\t\t\t\tclass=\"ui5-menu-item-icon-checked\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction rightContent(this: MenuItem) {\n\tswitch (true) {\n\tcase this.hasSubmenu:\n\t\treturn (\n\t\t\t<div class=\"ui5-menu-item-submenu-icon\" >\n\t\t\t\t<Icon\n\t\t\t\t\tpart=\"subicon\"\n\t\t\t\t\tname={slimArrowRight}\n\t\t\t\t\tclass=\"ui5-menu-item-icon-end\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\tcase this.hasEndContent:\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclass=\"ui5-menu-item-end-content\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={this.endContentAccessibleName}\n\t\t\t>\n\t\t\t\t<slot name=\"endContent\" onKeyDown={this._endContentKeyDown}></slot>\n\t\t\t</div>\n\t\t);\n\tcase !!this.additionalText:\n\t\treturn (\n\t\t\t<span\n\t\t\t\tpart=\"additional-text\"\n\t\t\t\tclass=\"ui5-li-additional-text\"\n\t\t\t\taria-hidden={this._accInfo.ariaHidden}\n\t\t\t>\n\t\t\t\t{this.additionalText}\n\t\t\t</span>\n\t\t);\n\t}\n}\n\nfunction iconBegin(this: MenuItem) {\n\tif (this.hasIcon) {\n\t\treturn <Icon class=\"ui5-li-icon\" name={this.icon} />;\n\t}\n\n\tif (this._siblingsWithIcon) {\n\t\treturn <div class=\"ui5-menu-item-dummy-icon\"></div>;\n\t}\n}\n\nfunction listItemPostContent(this: MenuItem) {\n\treturn this.hasSubmenu && <ResponsivePopover\n\t\tid={`${this._id}-menu-rp`}\n\t\tclass=\"ui5-menu-rp ui5-menu-rp-sub-menu\"\n\t\tpreventInitialFocus={true}\n\t\tpreventFocusRestore={true}\n\t\thideArrow={true}\n\t\tallowTargetOverlap={true}\n\t\tplacement={PopoverPlacement.End}\n\t\tverticalAlign=\"Top\"\n\t\taccessibleName={this.accessibleNameText}\n\t\tonBeforeOpen={this._beforePopoverOpen}\n\t\tonOpen={this._afterPopoverOpen}\n\t\tonBeforeClose={this._beforePopoverClose}\n\t\tonClose={this._afterPopoverClose}\n\t>\n\t\t{\n\t\t\tthis.isPhone && (\n\t\t\t\t<>\n\t\t\t\t\t<div slot=\"header\" class=\"ui5-menu-dialog-header\" >\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={navBackIcon}\n\t\t\t\t\t\t\tclass=\"ui5-menu-back-button\"\n\t\t\t\t\t\t\tdesign=\"Transparent\"\n\t\t\t\t\t\t\taria-label={this.labelBack}\n\t\t\t\t\t\t\tonClick={this._close}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div class=\"ui5-menu-dialog-title\" >\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t{this.text}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div >\n\t\t\t\t</>\n\t\t\t)\n\t\t}\n\n\t\t<div\n\t\t\tid={`${this._id}-menu-main`}\n\t\t\tclass={this.loading ? \"menu-busy-indicator-main\" : \"\"}\n\t\t\taria-busy={this.loading}\n\t\t>\n\t\t\t{\n\t\t\t\tthis.items.length ? (\n\t\t\t\t\t<List\n\t\t\t\t\t\tid={`${this._id}-menu-list`}\n\t\t\t\t\t\tselectionMode=\"None\"\n\t\t\t\t\t\tseparators=\"None\"\n\t\t\t\t\t\taccessibleRole=\"Menu\"\n\t\t\t\t\t\tloading={this.loading}\n\t\t\t\t\t\tloadingDelay={this.loadingDelay}\n\t\t\t\t\t\tonMouseOver={this._itemMouseOver}\n\t\t\t\t\t\tonKeyDown={this._itemKeyDown}\n\t\t\t\t\t\tonKeyUp={this._itemKeyUp}\n\t\t\t\t\t\t// handles event from slotted children\n\t\t\t\t\t\tonui5-close-menu={this._close}\n\t\t\t\t\t\tonui5-exit-end-content={this._navigateOutOfEndContent}\n\t\t\t\t\t>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</List>\n\t\t\t\t) : this.loading && <BusyIndicator\n\t\t\t\t\tid={`${this._id}-menu-busy-indicator`}\n\t\t\t\t\tdelay={this.loadingDelay}\n\t\t\t\t\tclass=\"ui5-menu-busy-indicator\"\n\t\t\t\t\tactive={true}\n\t\t\t\t/>\n\t\t\t}\n\t\t</div >\n\n\t\t{\n\t\t\tthis.isPhone && (\n\t\t\t\t<div slot=\"footer\" class=\"ui5-menu-dialog-footer\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdesign=\"Transparent\"\n\t\t\t\t\t\tonClick={this._closeAll}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.labelCancel}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)\n\t\t}\n\t</ResponsivePopover>;\n}\n"]}
|
package/dist/MultiComboBox.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ import type { ListSelectionChangeEventDetail } from "./List.js";
|
|
|
22
22
|
import ToggleButton from "./ToggleButton.js";
|
|
23
23
|
import type ComboBoxFilter from "./types/ComboBoxFilter.js";
|
|
24
24
|
import type { InputEventDetail } from "./Input.js";
|
|
25
|
+
import type { ListItemBaseClickEventDetail } from "./ListItemBase.js";
|
|
25
26
|
import type InputComposition from "./features/InputComposition.js";
|
|
26
27
|
/**
|
|
27
28
|
* Interface for components that may be slotted inside a `ui5-multi-combobox` as items
|
|
@@ -36,6 +37,9 @@ interface IMultiComboBoxItem extends UI5Element {
|
|
|
36
37
|
isGroupItem?: boolean;
|
|
37
38
|
_isVisible?: boolean;
|
|
38
39
|
items?: Array<IMultiComboBoxItem>;
|
|
40
|
+
eventDetails: {
|
|
41
|
+
click?: ListItemBaseClickEventDetail;
|
|
42
|
+
};
|
|
39
43
|
}
|
|
40
44
|
type ValueStateAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;
|
|
41
45
|
type ValueStateTypeAnnouncement = Record<Exclude<ValueState, ValueState.None>, string>;
|
|
@@ -356,7 +360,7 @@ declare class MultiComboBox extends UI5Element implements IFormInputElement {
|
|
|
356
360
|
_tokenizerFocusIn(): void;
|
|
357
361
|
_onkeydown(e: KeyboardEvent): void;
|
|
358
362
|
_selectItems(matchingItems: IMultiComboBoxItem[]): void;
|
|
359
|
-
_handlePaste(e: ClipboardEvent):
|
|
363
|
+
_handlePaste(e: ClipboardEvent): void;
|
|
360
364
|
_handleTokenCreationUponPaste(pastedText: string, e: KeyboardEvent | ClipboardEvent): void;
|
|
361
365
|
_handleInsertPaste(e: KeyboardEvent): Promise<void>;
|
|
362
366
|
_handleShow(e: KeyboardEvent): void;
|
package/dist/MultiComboBox.js
CHANGED
|
@@ -559,23 +559,24 @@ let MultiComboBox = MultiComboBox_1 = class MultiComboBox extends UI5Element {
|
|
|
559
559
|
}
|
|
560
560
|
});
|
|
561
561
|
}
|
|
562
|
-
|
|
562
|
+
_handlePaste(e) {
|
|
563
563
|
if (this.readonly) {
|
|
564
564
|
return;
|
|
565
565
|
}
|
|
566
566
|
e.preventDefault();
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
567
|
+
// Get pasted text from clipboardData - more reliable than navigator.clipboard
|
|
568
|
+
const pastedText = e.clipboardData?.getData("text/plain") || "";
|
|
569
|
+
if (pastedText) {
|
|
570
|
+
// Use deprecated but still functional document.execCommand for cursor handling
|
|
571
|
+
document.execCommand("insertText", true, pastedText);
|
|
572
|
+
// Dispatch input event to ensure the component updates
|
|
573
|
+
const inputEvent = new Event("input", {
|
|
574
|
+
bubbles: true,
|
|
575
|
+
cancelable: true,
|
|
576
|
+
});
|
|
577
|
+
this._innerInput.dispatchEvent(inputEvent);
|
|
578
|
+
this._handleTokenCreationUponPaste(pastedText, e);
|
|
577
579
|
}
|
|
578
|
-
this._handleTokenCreationUponPaste(pastedText, e);
|
|
579
580
|
}
|
|
580
581
|
_handleTokenCreationUponPaste(pastedText, e) {
|
|
581
582
|
const separatedText = pastedText.split(/\r\n|\r|\n|\t/g).filter(t => !!t);
|
|
@@ -589,19 +590,27 @@ let MultiComboBox = MultiComboBox_1 = class MultiComboBox extends UI5Element {
|
|
|
589
590
|
if (this.readonly || isFirefox()) {
|
|
590
591
|
return;
|
|
591
592
|
}
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
593
|
+
// For Shift+Insert, try to use navigator.clipboard API
|
|
594
|
+
// If it fails due to permissions, the browser's native paste will be blocked
|
|
595
|
+
try {
|
|
596
|
+
e.preventDefault();
|
|
597
|
+
const pastedText = await navigator.clipboard.readText();
|
|
598
|
+
if (pastedText) {
|
|
599
|
+
// Use deprecated but still functional document.execCommand for cursor handling
|
|
600
|
+
document.execCommand("insertText", true, pastedText);
|
|
601
|
+
// Dispatch input event to ensure the component updates
|
|
602
|
+
const inputEvent = new Event("input", {
|
|
603
|
+
bubbles: true,
|
|
604
|
+
cancelable: true,
|
|
605
|
+
});
|
|
606
|
+
this._innerInput.dispatchEvent(inputEvent);
|
|
607
|
+
this._handleTokenCreationUponPaste(pastedText, e);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
catch (err) {
|
|
611
|
+
// If clipboard API fails, silently ignore
|
|
612
|
+
// Native paste won't work since we already prevented default
|
|
603
613
|
}
|
|
604
|
-
this._handleTokenCreationUponPaste(pastedText, e);
|
|
605
614
|
}
|
|
606
615
|
_handleShow(e) {
|
|
607
616
|
const items = this._getItems();
|