@ui5/webcomponents 2.22.0-rc.1 → 2.22.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/AvatarBadge.d.ts +15 -1
- package/dist/AvatarBadge.js +40 -3
- package/dist/AvatarBadge.js.map +1 -1
- package/dist/AvatarBadgeTemplate.js +1 -1
- package/dist/AvatarBadgeTemplate.js.map +1 -1
- package/dist/ColorPalette.d.ts +8 -8
- package/dist/ColorPalette.js +7 -5
- package/dist/ColorPalette.js.map +1 -1
- package/dist/ColorPaletteItem.d.ts +9 -0
- package/dist/ColorPaletteItem.js +33 -0
- package/dist/ColorPaletteItem.js.map +1 -1
- package/dist/ColorPaletteItemTemplate.js +1 -1
- package/dist/ColorPaletteItemTemplate.js.map +1 -1
- package/dist/ColorPalettePopover.js +1 -1
- package/dist/ColorPalettePopover.js.map +1 -1
- package/dist/ComboBox.js +7 -2
- package/dist/ComboBox.js.map +1 -1
- package/dist/ComboBoxPopoverTemplate.js +2 -1
- package/dist/ComboBoxPopoverTemplate.js.map +1 -1
- package/dist/DateRangePicker.d.ts +12 -1
- package/dist/DateRangePicker.js +31 -1
- package/dist/DateRangePicker.js.map +1 -1
- package/dist/Input.d.ts +5 -2
- package/dist/Input.js +11 -8
- package/dist/Input.js.map +1 -1
- package/dist/MultiComboBox.js +4 -1
- package/dist/MultiComboBox.js.map +1 -1
- package/dist/MultiInputTemplate.js +1 -1
- package/dist/MultiInputTemplate.js.map +1 -1
- package/dist/SegmentedButton.js +6 -4
- package/dist/SegmentedButton.js.map +1 -1
- package/dist/SegmentedButtonItem.d.ts +8 -0
- package/dist/SegmentedButtonItem.js +26 -1
- package/dist/SegmentedButtonItem.js.map +1 -1
- package/dist/StepInput.d.ts +2 -2
- package/dist/StepInput.js +17 -7
- package/dist/StepInput.js.map +1 -1
- package/dist/Switch.d.ts +2 -0
- package/dist/Switch.js +7 -1
- package/dist/Switch.js.map +1 -1
- package/dist/SwitchTemplate.js +2 -2
- package/dist/SwitchTemplate.js.map +1 -1
- package/dist/TextArea.d.ts +10 -0
- package/dist/TextArea.js +37 -0
- package/dist/TextArea.js.map +1 -1
- package/dist/Tokenizer.d.ts +6 -0
- package/dist/Tokenizer.js +4 -1
- package/dist/Tokenizer.js.map +1 -1
- package/dist/css/themes/CardHeader.css +1 -1
- package/dist/css/themes/Select.css +1 -1
- package/dist/css/themes/StepInput.css +1 -1
- package/dist/css/themes/Switch.css +1 -1
- package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
- package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +2 -2
- package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
- package/dist/custom-elements-internal.json +126 -14
- package/dist/custom-elements.json +62 -11
- package/dist/features/InputComposition.d.ts +1 -1
- package/dist/features/InputComposition.js.map +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/i18n/i18n-defaults.d.ts +3 -1
- package/dist/generated/i18n/i18n-defaults.js +3 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/CardHeader.css.d.ts +1 -1
- package/dist/generated/themes/CardHeader.css.js +1 -1
- package/dist/generated/themes/CardHeader.css.js.map +1 -1
- package/dist/generated/themes/Select.css.d.ts +1 -1
- package/dist/generated/themes/Select.css.js +1 -1
- package/dist/generated/themes/Select.css.js.map +1 -1
- package/dist/generated/themes/StepInput.css.d.ts +1 -1
- package/dist/generated/themes/StepInput.css.js +1 -1
- package/dist/generated/themes/StepInput.css.js.map +1 -1
- package/dist/generated/themes/Switch.css.d.ts +1 -1
- package/dist/generated/themes/Switch.css.js +1 -1
- package/dist/generated/themes/Switch.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 +2 -2
- 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/vscode.html-custom-data.json +14 -9
- package/dist/web-types.json +50 -20
- package/package.json +9 -9
- package/src/AvatarBadgeTemplate.tsx +3 -1
- package/src/ColorPaletteItemTemplate.tsx +1 -0
- package/src/ComboBoxPopoverTemplate.tsx +8 -1
- package/src/MultiInputTemplate.tsx +1 -0
- package/src/SwitchTemplate.tsx +3 -0
- package/src/i18n/messagebundle.properties +6 -0
- package/src/themes/CardHeader.css +0 -1
- package/src/themes/Select.css +25 -0
- package/src/themes/StepInput.css +2 -1
- package/src/themes/Switch.css +4 -2
- package/src/themes/sap_horizon/Select-parameters.css +2 -0
- package/src/themes/sap_horizon_dark/Select-parameters.css +2 -0
|
@@ -20,7 +20,7 @@ export default function MultiInputTemplate() {
|
|
|
20
20
|
}
|
|
21
21
|
function preContent() {
|
|
22
22
|
return (_jsxs(_Fragment, { children: [_jsx("span", { id: "hiddenText-nMore", class: "ui5-hidden-text", children: this._tokensCountText }), this.showValueHelpIcon &&
|
|
23
|
-
_jsx("span", { id: "hiddenText-value-help", class: "ui5-hidden-text", children: this._valueHelpText }), _jsx(Tokenizer, { class: "ui5-multi-input-tokenizer", opener: this.morePopoverOpener, popoverMinWidth: this._inputWidth, hidePopoverArrow: true, expanded: this.tokenizerExpanded, onKeyDown: this._onTokenizerKeydown, onTokenDelete: this.tokenDelete, onFocusOut: this._tokenizerFocusOut, onShowMoreItemsPress: this._showMoreItemsPress, children: this.tokens.map(token => _jsx("slot", { name: token._individualSlot })) })] }));
|
|
23
|
+
_jsx("span", { id: "hiddenText-value-help", class: "ui5-hidden-text", children: this._valueHelpText }), _jsx(Tokenizer, { class: "ui5-multi-input-tokenizer", opener: this.morePopoverOpener, popoverMinWidth: this._inputWidth, popoverTitle: this._headerTitleText, hidePopoverArrow: true, expanded: this.tokenizerExpanded, onKeyDown: this._onTokenizerKeydown, onTokenDelete: this.tokenDelete, onFocusOut: this._tokenizerFocusOut, onShowMoreItemsPress: this._showMoreItemsPress, children: this.tokens.map(token => _jsx("slot", { name: token._individualSlot })) })] }));
|
|
24
24
|
}
|
|
25
25
|
function postContent() {
|
|
26
26
|
return (_jsx(_Fragment, { children: this.showValueHelpIcon &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiInputTemplate.js","sourceRoot":"","sources":["../src/MultiInputTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import Icon from \"./Icon.js\";\nimport multiSelectAll from \"@ui5/webcomponents-icons/dist/multiselect-all.js\";\nimport InputTemplate from \"./InputTemplate.js\";\nimport type MultiInput from \"./MultiInput.js\";\nimport type { MultiInputTokenDeleteEventDetail } from \"./MultiInput.js\";\nimport Tokenizer from \"./Tokenizer.js\";\nimport ToggleButton from \"./ToggleButton.js\";\nimport List from \"./List.js\";\nimport ListItemStandard from \"./ListItemStandard.js\";\nimport ListAccessibleRole from \"./types/ListAccessibleRole.js\";\nimport valueHelp from \"@ui5/webcomponents-icons/dist/value-help.js\";\n\nexport default function MultiInputTemplate(this: MultiInput) {\n\treturn [\n\t\tInputTemplate.call(this, {\n\t\t\tpreContent,\n\t\t\tpostContent,\n\t\t\tsuggestionsList: multiInputSuggestionsList,\n\t\t\tmobileHeader: multiInputMobileHeader,\n\t\t}),\n\t];\n}\n\nfunction preContent(this: MultiInput) {\n\treturn (\n\t\t<>\n\t\t\t<span id=\"hiddenText-nMore\" class=\"ui5-hidden-text\">{this._tokensCountText}</span>\n\n\t\t\t{this.showValueHelpIcon &&\n\t\t\t\t<span id=\"hiddenText-value-help\" class=\"ui5-hidden-text\">{this._valueHelpText}</span>\n\t\t\t}\n\t\t\t<Tokenizer\n\t\t\t\tclass=\"ui5-multi-input-tokenizer\"\n\t\t\t\topener={this.morePopoverOpener}\n\t\t\t\tpopoverMinWidth={this._inputWidth}\n\t\t\t\thidePopoverArrow={true}\n\t\t\t\texpanded={this.tokenizerExpanded}\n\t\t\t\tonKeyDown={this._onTokenizerKeydown}\n\t\t\t\tonTokenDelete={this.tokenDelete}\n\t\t\t\tonFocusOut={this._tokenizerFocusOut}\n\t\t\t\tonShowMoreItemsPress={this._showMoreItemsPress}\n\t\t\t>\n\t\t\t\t{ this.tokens.map(token => <slot name={token._individualSlot}></slot>)}\n\t\t\t</Tokenizer>\n\t\t</>\n\t);\n}\n\nfunction postContent(this: MultiInput) {\n\treturn (\n\t\t<>\n\t\t\t{this.showValueHelpIcon &&\n\t\t\t\t<Icon\n\t\t\t\t\tclass=\"inputIcon\"\n\t\t\t\t\tname={valueHelp}\n\t\t\t\t\taccessibleName={this.valueHelpLabel}\n\t\t\t\t\tonMouseUp={this.valueHelpMouseUp}\n\t\t\t\t\tonMouseDown={this.valueHelpMouseDown}\n\t\t\t\t\tonClick={this.valueHelpPress}\n\t\t\t\t/>\n\t\t\t}\n\t\t</>\n\t);\n}\n\nfunction multiInputSuggestionsList(this: MultiInput) {\n\tif (this._effectiveShowTokensInSuggestions) {\n\t\treturn (\n\t\t\t<List\n\t\t\t\tclass=\"ui5-tokenizer-list\"\n\t\t\t\taccessibleRole={ListAccessibleRole.ListBox}\n\t\t\t\tseparators={this.suggestionSeparators}\n\t\t\t\tselectionMode=\"Delete\"\n\t\t\t\tonMouseDown={this.onItemMouseDown}\n\t\t\t\tonItemClick={this._handleSuggestionItemPress}\n\t\t\t\tonSelectionChange={this._handleSelectionChange}\n\t\t\t\tonItemDelete={(e: any) => {\n\t\t\t\t\tconst listItem = e.detail.item;\n\t\t\t\t\tconst tokenId = listItem.getAttribute(\"data-ui5-token-ref-id\");\n\t\t\t\t\tconst token = this.tokens.find((t: any) => t._id === tokenId);\n\n\t\t\t\t\tif (token) {\n\t\t\t\t\t\tthis.tokenDelete({ detail: { tokens: [token] } } as CustomEvent<MultiInputTokenDeleteEventDetail>);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{this.tokens?.map((token: any, index: number) => (\n\t\t\t\t\t<ListItemStandard\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tclass=\"ui5-suggestion-token-item\"\n\t\t\t\t\t\tdata-ui5-token-ref-id={token._id}\n\t\t\t\t\t\twrappingType=\"Normal\"\n\t\t\t\t\t\ttext={token.text}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</List>\n\t\t);\n\t}\n\n\treturn (\n\t\t<List\n\t\t\taccessibleRole={ListAccessibleRole.ListBox}\n\t\t\tseparators={this.suggestionSeparators}\n\t\t\tselectionMode=\"Single\"\n\t\t\tonMouseDown={this.onItemMouseDown}\n\t\t\tonItemClick={this._handleSuggestionItemPress}\n\t\t\tonSelectionChange={this._handleSelectionChange}\n\t\t>\n\t\t\t<slot></slot>\n\t\t</List>\n\t);\n}\n\nfunction multiInputMobileHeader(this: MultiInput) {\n\treturn (\n\t\t<ToggleButton\n\t\t\tclass=\"ui5-multi-input-mobile-dialog-button\"\n\t\t\tdesign=\"Transparent\"\n\t\t\ticon={multiSelectAll}\n\t\t\taccessibleName={this._filterButtonAccessibleName}\n\t\t\tdisabled={!this.tokens?.length}\n\t\t\tpressed={this._effectiveShowTokensInSuggestions}\n\t\t\tonClick={() => {\n\t\t\t\tthis._userToggledShowTokens = true;\n\t\t\t\tthis._showTokensInSuggestions = !this._effectiveShowTokensInSuggestions;\n\t\t\t}}\n\t\t/>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MultiInputTemplate.js","sourceRoot":"","sources":["../src/MultiInputTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import Icon from \"./Icon.js\";\nimport multiSelectAll from \"@ui5/webcomponents-icons/dist/multiselect-all.js\";\nimport InputTemplate from \"./InputTemplate.js\";\nimport type MultiInput from \"./MultiInput.js\";\nimport type { MultiInputTokenDeleteEventDetail } from \"./MultiInput.js\";\nimport Tokenizer from \"./Tokenizer.js\";\nimport ToggleButton from \"./ToggleButton.js\";\nimport List from \"./List.js\";\nimport ListItemStandard from \"./ListItemStandard.js\";\nimport ListAccessibleRole from \"./types/ListAccessibleRole.js\";\nimport valueHelp from \"@ui5/webcomponents-icons/dist/value-help.js\";\n\nexport default function MultiInputTemplate(this: MultiInput) {\n\treturn [\n\t\tInputTemplate.call(this, {\n\t\t\tpreContent,\n\t\t\tpostContent,\n\t\t\tsuggestionsList: multiInputSuggestionsList,\n\t\t\tmobileHeader: multiInputMobileHeader,\n\t\t}),\n\t];\n}\n\nfunction preContent(this: MultiInput) {\n\treturn (\n\t\t<>\n\t\t\t<span id=\"hiddenText-nMore\" class=\"ui5-hidden-text\">{this._tokensCountText}</span>\n\n\t\t\t{this.showValueHelpIcon &&\n\t\t\t\t<span id=\"hiddenText-value-help\" class=\"ui5-hidden-text\">{this._valueHelpText}</span>\n\t\t\t}\n\t\t\t<Tokenizer\n\t\t\t\tclass=\"ui5-multi-input-tokenizer\"\n\t\t\t\topener={this.morePopoverOpener}\n\t\t\t\tpopoverMinWidth={this._inputWidth}\n\t\t\t\tpopoverTitle={this._headerTitleText}\n\t\t\t\thidePopoverArrow={true}\n\t\t\t\texpanded={this.tokenizerExpanded}\n\t\t\t\tonKeyDown={this._onTokenizerKeydown}\n\t\t\t\tonTokenDelete={this.tokenDelete}\n\t\t\t\tonFocusOut={this._tokenizerFocusOut}\n\t\t\t\tonShowMoreItemsPress={this._showMoreItemsPress}\n\t\t\t>\n\t\t\t\t{ this.tokens.map(token => <slot name={token._individualSlot}></slot>)}\n\t\t\t</Tokenizer>\n\t\t</>\n\t);\n}\n\nfunction postContent(this: MultiInput) {\n\treturn (\n\t\t<>\n\t\t\t{this.showValueHelpIcon &&\n\t\t\t\t<Icon\n\t\t\t\t\tclass=\"inputIcon\"\n\t\t\t\t\tname={valueHelp}\n\t\t\t\t\taccessibleName={this.valueHelpLabel}\n\t\t\t\t\tonMouseUp={this.valueHelpMouseUp}\n\t\t\t\t\tonMouseDown={this.valueHelpMouseDown}\n\t\t\t\t\tonClick={this.valueHelpPress}\n\t\t\t\t/>\n\t\t\t}\n\t\t</>\n\t);\n}\n\nfunction multiInputSuggestionsList(this: MultiInput) {\n\tif (this._effectiveShowTokensInSuggestions) {\n\t\treturn (\n\t\t\t<List\n\t\t\t\tclass=\"ui5-tokenizer-list\"\n\t\t\t\taccessibleRole={ListAccessibleRole.ListBox}\n\t\t\t\tseparators={this.suggestionSeparators}\n\t\t\t\tselectionMode=\"Delete\"\n\t\t\t\tonMouseDown={this.onItemMouseDown}\n\t\t\t\tonItemClick={this._handleSuggestionItemPress}\n\t\t\t\tonSelectionChange={this._handleSelectionChange}\n\t\t\t\tonItemDelete={(e: any) => {\n\t\t\t\t\tconst listItem = e.detail.item;\n\t\t\t\t\tconst tokenId = listItem.getAttribute(\"data-ui5-token-ref-id\");\n\t\t\t\t\tconst token = this.tokens.find((t: any) => t._id === tokenId);\n\n\t\t\t\t\tif (token) {\n\t\t\t\t\t\tthis.tokenDelete({ detail: { tokens: [token] } } as CustomEvent<MultiInputTokenDeleteEventDetail>);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{this.tokens?.map((token: any, index: number) => (\n\t\t\t\t\t<ListItemStandard\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tclass=\"ui5-suggestion-token-item\"\n\t\t\t\t\t\tdata-ui5-token-ref-id={token._id}\n\t\t\t\t\t\twrappingType=\"Normal\"\n\t\t\t\t\t\ttext={token.text}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</List>\n\t\t);\n\t}\n\n\treturn (\n\t\t<List\n\t\t\taccessibleRole={ListAccessibleRole.ListBox}\n\t\t\tseparators={this.suggestionSeparators}\n\t\t\tselectionMode=\"Single\"\n\t\t\tonMouseDown={this.onItemMouseDown}\n\t\t\tonItemClick={this._handleSuggestionItemPress}\n\t\t\tonSelectionChange={this._handleSelectionChange}\n\t\t>\n\t\t\t<slot></slot>\n\t\t</List>\n\t);\n}\n\nfunction multiInputMobileHeader(this: MultiInput) {\n\treturn (\n\t\t<ToggleButton\n\t\t\tclass=\"ui5-multi-input-mobile-dialog-button\"\n\t\t\tdesign=\"Transparent\"\n\t\t\ticon={multiSelectAll}\n\t\t\taccessibleName={this._filterButtonAccessibleName}\n\t\t\tdisabled={!this.tokens?.length}\n\t\t\tpressed={this._effectiveShowTokensInSuggestions}\n\t\t\tonClick={() => {\n\t\t\t\tthis._userToggledShowTokens = true;\n\t\t\t\tthis._showTokensInSuggestions = !this._effectiveShowTokensInSuggestions;\n\t\t\t}}\n\t\t/>\n\t);\n}\n"]}
|
package/dist/SegmentedButton.js
CHANGED
|
@@ -108,11 +108,13 @@ let SegmentedButton = SegmentedButton_1 = class SegmentedButton extends UI5Eleme
|
|
|
108
108
|
if (target.disabled || target === this.getDomRef() || !isTargetSegmentedButtonItem) {
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
|
+
// Check if preventDefault was called on the native event (e.g., by item's semantic click handler)
|
|
112
|
+
if (e.defaultPrevented) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
111
115
|
switch (this.selectionMode) {
|
|
112
116
|
case SegmentedButtonSelectionMode.Multiple:
|
|
113
|
-
|
|
114
|
-
target.selected = !target.selected;
|
|
115
|
-
}
|
|
117
|
+
target.selected = !target.selected;
|
|
116
118
|
break;
|
|
117
119
|
default:
|
|
118
120
|
this._applySingleSelection(target);
|
|
@@ -135,7 +137,7 @@ let SegmentedButton = SegmentedButton_1 = class SegmentedButton extends UI5Eleme
|
|
|
135
137
|
}
|
|
136
138
|
_onkeydown(e) {
|
|
137
139
|
if (isEnter(e)) {
|
|
138
|
-
this._selectItem(e);
|
|
140
|
+
this._selectItem(e);
|
|
139
141
|
}
|
|
140
142
|
else if (isSpace(e)) {
|
|
141
143
|
e.preventDefault(); // Prevent scrolling
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedButton.js","sourceRoot":"","sources":["../src/SegmentedButton.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 event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport {\n\tgetEffectiveAriaLabelText,\n\tgetAssociatedLabelForTexts,\n\tgetEffectiveAriaDescriptionText,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport {\n\tisSpace,\n\tisEnter,\n\tisShift,\n\tisEscape,\n\tisSpaceShift,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { SEGMENTEDBUTTON_ARIA_DESCRIPTION, SEGMENTEDBUTTON_ARIA_DESCRIBEDBY } from \"./generated/i18n/i18n-defaults.js\";\nimport \"./SegmentedButtonItem.js\";\nimport type SegmentedButtonItem from \"./SegmentedButtonItem.js\";\nimport SegmentedButtonSelectionMode from \"./types/SegmentedButtonSelectionMode.js\";\n\n// Template\nimport SegmentedButtonTemplate from \"./SegmentedButtonTemplate.js\";\n\n// Styles\nimport SegmentedButtonCss from \"./generated/themes/SegmentedButton.css.js\";\n\n/**\n * Interface for components that may be slotted inside `ui5-segmented-button` as items\n * @public\n */\ninterface ISegmentedButtonItem extends UI5Element, ITabbable {\n\tdisabled: boolean,\n\tselected: boolean,\n}\n\ntype SegmentedButtonSelectionChangeEventDetail = {\n\tselectedItems: Array<ISegmentedButtonItem>,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-segmented-button` shows a group of items. When the user clicks or taps\n * one of the items, it stays in a pressed state. It automatically resizes the items\n * to fit proportionally within the component. When no width is set, the component uses the available width.\n *\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/SegmentedButton.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.6\n * @public\n */\n@customElement({\n\ttag: \"ui5-segmented-button\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: SegmentedButtonTemplate,\n\tstyles: SegmentedButtonCss,\n})\n/**\n * Fired when the selected item changes.\n * @param {Array<ISegmentedButtonItem>} selectedItems an array of selected items. Since: 1.14.0\n * @public\n */\n@event(\"selection-change\", {\n\tbubbles: true,\n})\n\nclass SegmentedButton extends UI5Element {\n\teventDetails!: {\n\t\t\"selection-change\": SegmentedButtonSelectionChangeEventDetail,\n\t}\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.3\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the IDs of the HTML Elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Defines the IDs of the HTML Elements that describe the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleDescriptionRef?: string;\n\n\t/**\n\t * Defines the component selection mode.\n\t * @default \"Single\"\n\t * @public\n\t * @since 1.14.0\n\t */\n\t@property()\n\tselectionMode: `${SegmentedButtonSelectionMode}` = \"Single\";\n\n\t/**\n\t * Determines whether the segmented button items should be sized to fit their content.\n\t *\n\t * If set to `true`, each item will be sized to fit its content, with any extra space distributed after the last item.\n\t * If set to `false` (the default), all items will be equally sized to fill the available space.\n\t *\n\t * @default false\n\t * @public\n\t * @since 2.16.0\n\t*/\n\t@property({ type: Boolean })\n\titemsFitContent: boolean = false;\n\t/**\n\t * Defines the items of `ui5-segmented-button`.\n\t *\n\t * **Note:** Multiple items are allowed.\n\t *\n\t * **Note:** Use the `ui5-segmented-button-item` for the intended design.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n\titems!: DefaultSlot<ISegmentedButtonItem>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_itemNavigation: ItemNavigation;\n\n\thasPreviouslyFocusedItem: boolean;\n\n\t_selectedItem?: ISegmentedButtonItem;\n\n\t_cancelAction: boolean;\n\t_isSpacePressed: boolean;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._itemNavigation = new ItemNavigation(this, {\n\t\t\tgetItemsCallback: () => this.navigatableItems,\n\t\t});\n\t\tthis.hasPreviouslyFocusedItem = false;\n\t\tthis._cancelAction = false;\n\t\tthis._isSpacePressed = false;\n\t}\n\n\tonBeforeRendering() {\n\t\tconst items = this.getSlottedNodes<SegmentedButtonItem>(\"items\");\n\t\tconst visibleItems = items.filter(item => !item.hidden);\n\t\tlet index = 1;\n\n\t\titems.forEach(item => {\n\t\t\titem.posInSet = item.hidden ? undefined : index++;\n\t\t\titem.sizeOfSet = item.hidden ? undefined : visibleItems.length;\n\t\t});\n\n\t\tthis.normalizeSelection();\n\n\t\tif (!this.itemsFitContent) {\n\t\t\tthis.style.setProperty(\"--_ui5_segmented_btn_items_count\", `${visibleItems.length}`);\n\t\t}\n\t}\n\n\tnormalizeSelection() {\n\t\tif (!this.items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (this.selectionMode) {\n\t\tcase SegmentedButtonSelectionMode.Single: {\n\t\t\tconst selectedItems = this.selectedItems;\n\t\t\tconst selectedItemIndex = this._selectedItem ? selectedItems.indexOf(this._selectedItem) : -1;\n\t\t\tif (this._selectedItem && selectedItems.length > 1) {\n\t\t\t\tselectedItems.splice(selectedItemIndex, 1);\n\t\t\t}\n\t\t\tconst selectedItem = selectedItems.pop() || this.items[0];\n\t\t\tthis._applySingleSelection(selectedItem);\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t}\n\t}\n\n\tgetFocusDomRef(): HTMLElement | undefined {\n\t\treturn this._itemNavigation._getCurrentItem();\n\t}\n\n\t_selectItem(e: MouseEvent | KeyboardEvent) {\n\t\tconst target = e.target as SegmentedButtonItem;\n\t\tconst isTargetSegmentedButtonItem = target.hasAttribute(\"ui5-segmented-button-item\");\n\n\t\tif (target.disabled || target === this.getDomRef() || !isTargetSegmentedButtonItem) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (this.selectionMode) {\n\t\tcase SegmentedButtonSelectionMode.Multiple:\n\t\t\tif (e instanceof KeyboardEvent) {\n\t\t\t\ttarget.selected = !target.selected;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthis._applySingleSelection(target);\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"selection-change\", {\n\t\t\tselectedItems: this.selectedItems,\n\t\t});\n\n\t\tthis._itemNavigation.setCurrentItem(target);\n\n\t\treturn this;\n\t}\n\n\t_applySingleSelection(item: ISegmentedButtonItem) {\n\t\tthis.items.forEach(currentItem => {\n\t\t\tcurrentItem.selected = false;\n\t\t});\n\t\titem.selected = true;\n\t\tthis._selectedItem = item;\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\tthis._selectItem(e);\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isEnter(e)) {\n\t\t\tthis._selectItem(e); // Enter key behavior remains unaffected\n\t\t} else if (isSpace(e)) {\n\t\t\te.preventDefault(); // Prevent scrolling\n\t\t\tthis._isSpacePressed = true;\n\t\t} else if (isShift(e) || isEscape(e)) {\n\t\t\tthis._cancelAction = true; // Set the flag to cancel the action\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 (isSpaceKey) {\n\t\t\tthis._selectItem(e);\n\t\t}\n\t}\n\n\t_onmousedown(e: MouseEvent) {\n\t\tconst eventTarget = e.target as SegmentedButtonItem;\n\t\tconst isTargetSegmentedButtonItem = eventTarget.hasAttribute(\"ui5-segmented-button-item\");\n\n\t\tif (isTargetSegmentedButtonItem) {\n\t\t\tthis._itemNavigation.setCurrentItem(eventTarget);\n\t\t\tthis.hasPreviouslyFocusedItem = true;\n\t\t}\n\t}\n\n\t_onfocusin(e: FocusEvent) {\n\t\t// If the component was previously focused,\n\t\t// update the ItemNavigation to sync the button's tabindex values\n\t\tif (this.hasPreviouslyFocusedItem) {\n\t\t\tthis._itemNavigation.setCurrentItem(e.target as SegmentedButtonItem);\n\t\t\treturn;\n\t\t}\n\n\t\t// If the component is focused for the first time\n\t\t// focus the selected item if such is present\n\t\tif (this.selectedItems.length) {\n\t\t\tthis._itemNavigation.setCurrentItem(this.selectedItems[0]);\n\t\t\tthis.selectedItems[0].focus();\n\t\t\tthis.hasPreviouslyFocusedItem = true;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an array of the currently selected items.\n\t * @since 1.14.0\n\t * @public\n\t * @default []\n\t */\n\tget selectedItems(): Array<ISegmentedButtonItem> {\n\t\treturn this.items.filter(item => item.selected);\n\t}\n\n\tget navigatableItems() {\n\t\treturn this.getSlottedNodes<SegmentedButtonItem>(\"items\").filter(item => {\n\t\t\treturn !item.disabled;\n\t\t});\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this) || undefined;\n\t}\n\n\tget ariaDescriptionText() {\n\t\treturn `${(getEffectiveAriaDescriptionText(this) || \"\")} ${SegmentedButton.i18nBundle.getText(SEGMENTEDBUTTON_ARIA_DESCRIBEDBY)}`.trim();\n\t}\n\n\tget ariaRoleDescription() {\n\t\treturn SegmentedButton.i18nBundle.getText(SEGMENTEDBUTTON_ARIA_DESCRIPTION);\n\t}\n}\n\nSegmentedButton.define();\n\nexport default SegmentedButton;\nexport type {\n\tSegmentedButtonSelectionChangeEventDetail,\n\tISegmentedButtonItem,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SegmentedButton.js","sourceRoot":"","sources":["../src/SegmentedButton.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAEpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,EACN,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,GAC/B,MAAM,+DAA+D,CAAC;AACvE,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,cAAc,MAAM,yDAAyD,CAAC;AAGrF,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,YAAY,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACvH,OAAO,0BAA0B,CAAC;AAElC,OAAO,4BAA4B,MAAM,yCAAyC,CAAC;AAEnF,WAAW;AACX,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAEnE,SAAS;AACT,OAAO,kBAAkB,MAAM,2CAA2C,CAAC;AAe3E;;;;;;;;;;;;;;;;;GAiBG;AAiBH,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,UAAU;IAoFvC;QACC,KAAK,EAAE,CAAC;QA7CT;;;;;WAKG;QAEH,kBAAa,GAAsC,QAAQ,CAAC;QAE5D;;;;;;;;;UASE;QAEF,oBAAe,GAAY,KAAK,CAAC;QA2BhC,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE;YAC/C,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB;SAC7C,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,iBAAiB;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAsB,OAAO,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,kCAAkC,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,CAAC;IACF,CAAC;IAED,kBAAkB;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO;QACR,CAAC;QAED,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7B,KAAK,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;gBACzC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9F,IAAI,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpD,aAAa,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBACzC,MAAM;YACP,CAAC;YACD,QAAQ;QACR,CAAC;IACF,CAAC;IAED,cAAc;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED,WAAW,CAAC,CAA6B;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC,MAA6B,CAAC;QAC/C,MAAM,2BAA2B,GAAG,MAAM,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC;QAErF,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACpF,OAAO;QACR,CAAC;QAED,kGAAkG;QAClG,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACxB,OAAO;QACR,CAAC;QAED,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7B,KAAK,4BAA4B,CAAC,QAAQ;gBACzC,MAAM,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnC,MAAM;YACP;gBACC,IAAI,CAAC,qBAAqB,CAAC,MAAyC,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;YAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,qBAAqB,CAAC,IAA0B;QAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAChC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,CAAa;QACrB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,CAAgB;QAC1B,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,oBAAoB;YACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,oCAAoC;QAChE,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,CAAgB;QACxB,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE9C,IAAI,UAAU,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO;YACR,CAAC;YAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACF,CAAC;IAED,YAAY,CAAC,CAAa;QACzB,MAAM,WAAW,GAAG,CAAC,CAAC,MAA6B,CAAC;QACpD,MAAM,2BAA2B,GAAG,WAAW,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC;QAE1F,IAAI,2BAA2B,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACtC,CAAC;IACF,CAAC;IAED,UAAU,CAAC,CAAa;QACvB,2CAA2C;QAC3C,iEAAiE;QACjE,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,MAA6B,CAAC,CAAC;YACrE,OAAO;QACR,CAAC;QAED,iDAAiD;QACjD,6CAA6C;QAC7C,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACtC,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,IAAI,CAAC,eAAe,CAAsB,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACvE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,yBAAyB,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;IACzF,CAAC;IAED,IAAI,mBAAmB;QACtB,OAAO,GAAG,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,iBAAe,CAAC,UAAU,CAAC,OAAO,CAAC,gCAAgC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1I,CAAC;IAED,IAAI,mBAAmB;QACtB,OAAO,iBAAe,CAAC,UAAU,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC7E,CAAC;CACD,CAAA;AA9PA;IADC,QAAQ,EAAE;uDACa;AASxB;IADC,QAAQ,EAAE;0DACgB;AAS3B;IADC,QAAQ,EAAE;8DACoB;AAS/B;IADC,QAAQ,EAAE;iEACuB;AASlC;IADC,QAAQ,EAAE;sDACiD;AAa5D;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDACK;AAUjC;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;8CAClC;AAGnC;IADN,IAAI,CAAC,oBAAoB,CAAC;yCACG;AAzEzB,eAAe;IAhBpB,aAAa,CAAC;QACd,GAAG,EAAE,sBAAsB;QAC3B,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,uBAAuB;QACjC,MAAM,EAAE,kBAAkB;KAC1B,CAAC;IACF;;;;OAIG;;IACF,KAAK,CAAC,kBAAkB,EAAE;QAC1B,OAAO,EAAE,IAAI;KACb,CAAC;GAEI,eAAe,CAyQpB;AAED,eAAe,CAAC,MAAM,EAAE,CAAC;AAEzB,eAAe,eAAe,CAAC","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 event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport {\n\tgetEffectiveAriaLabelText,\n\tgetAssociatedLabelForTexts,\n\tgetEffectiveAriaDescriptionText,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type { ITabbable } from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport {\n\tisSpace,\n\tisEnter,\n\tisShift,\n\tisEscape,\n\tisSpaceShift,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { SEGMENTEDBUTTON_ARIA_DESCRIPTION, SEGMENTEDBUTTON_ARIA_DESCRIBEDBY } from \"./generated/i18n/i18n-defaults.js\";\nimport \"./SegmentedButtonItem.js\";\nimport type SegmentedButtonItem from \"./SegmentedButtonItem.js\";\nimport SegmentedButtonSelectionMode from \"./types/SegmentedButtonSelectionMode.js\";\n\n// Template\nimport SegmentedButtonTemplate from \"./SegmentedButtonTemplate.js\";\n\n// Styles\nimport SegmentedButtonCss from \"./generated/themes/SegmentedButton.css.js\";\n\n/**\n * Interface for components that may be slotted inside `ui5-segmented-button` as items\n * @public\n */\ninterface ISegmentedButtonItem extends UI5Element, ITabbable {\n\tdisabled: boolean,\n\tselected: boolean,\n}\n\ntype SegmentedButtonSelectionChangeEventDetail = {\n\tselectedItems: Array<ISegmentedButtonItem>,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-segmented-button` shows a group of items. When the user clicks or taps\n * one of the items, it stays in a pressed state. It automatically resizes the items\n * to fit proportionally within the component. When no width is set, the component uses the available width.\n *\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/SegmentedButton.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.6\n * @public\n */\n@customElement({\n\ttag: \"ui5-segmented-button\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: SegmentedButtonTemplate,\n\tstyles: SegmentedButtonCss,\n})\n/**\n * Fired when the selected item changes.\n * @param {Array<ISegmentedButtonItem>} selectedItems an array of selected items. Since: 1.14.0\n * @public\n */\n@event(\"selection-change\", {\n\tbubbles: true,\n})\n\nclass SegmentedButton extends UI5Element {\n\teventDetails!: {\n\t\t\"selection-change\": SegmentedButtonSelectionChangeEventDetail,\n\t}\n\t/**\n\t * Defines the accessible ARIA name of the component.\n\t * @default undefined\n\t * @public\n\t * @since 1.0.3\n\t */\n\t@property()\n\taccessibleName?: string;\n\n\t/**\n\t * Defines the IDs of the HTML Elements that label the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t/**\n\t * Defines the accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Defines the IDs of the HTML Elements that describe the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleDescriptionRef?: string;\n\n\t/**\n\t * Defines the component selection mode.\n\t * @default \"Single\"\n\t * @public\n\t * @since 1.14.0\n\t */\n\t@property()\n\tselectionMode: `${SegmentedButtonSelectionMode}` = \"Single\";\n\n\t/**\n\t * Determines whether the segmented button items should be sized to fit their content.\n\t *\n\t * If set to `true`, each item will be sized to fit its content, with any extra space distributed after the last item.\n\t * If set to `false` (the default), all items will be equally sized to fill the available space.\n\t *\n\t * @default false\n\t * @public\n\t * @since 2.16.0\n\t*/\n\t@property({ type: Boolean })\n\titemsFitContent: boolean = false;\n\t/**\n\t * Defines the items of `ui5-segmented-button`.\n\t *\n\t * **Note:** Multiple items are allowed.\n\t *\n\t * **Note:** Use the `ui5-segmented-button-item` for the intended design.\n\t * @public\n\t */\n\t@slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n\titems!: DefaultSlot<ISegmentedButtonItem>;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\t_itemNavigation: ItemNavigation;\n\n\thasPreviouslyFocusedItem: boolean;\n\n\t_selectedItem?: ISegmentedButtonItem;\n\n\t_cancelAction: boolean;\n\t_isSpacePressed: boolean;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis._itemNavigation = new ItemNavigation(this, {\n\t\t\tgetItemsCallback: () => this.navigatableItems,\n\t\t});\n\t\tthis.hasPreviouslyFocusedItem = false;\n\t\tthis._cancelAction = false;\n\t\tthis._isSpacePressed = false;\n\t}\n\n\tonBeforeRendering() {\n\t\tconst items = this.getSlottedNodes<SegmentedButtonItem>(\"items\");\n\t\tconst visibleItems = items.filter(item => !item.hidden);\n\t\tlet index = 1;\n\n\t\titems.forEach(item => {\n\t\t\titem.posInSet = item.hidden ? undefined : index++;\n\t\t\titem.sizeOfSet = item.hidden ? undefined : visibleItems.length;\n\t\t});\n\n\t\tthis.normalizeSelection();\n\n\t\tif (!this.itemsFitContent) {\n\t\t\tthis.style.setProperty(\"--_ui5_segmented_btn_items_count\", `${visibleItems.length}`);\n\t\t}\n\t}\n\n\tnormalizeSelection() {\n\t\tif (!this.items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (this.selectionMode) {\n\t\tcase SegmentedButtonSelectionMode.Single: {\n\t\t\tconst selectedItems = this.selectedItems;\n\t\t\tconst selectedItemIndex = this._selectedItem ? selectedItems.indexOf(this._selectedItem) : -1;\n\t\t\tif (this._selectedItem && selectedItems.length > 1) {\n\t\t\t\tselectedItems.splice(selectedItemIndex, 1);\n\t\t\t}\n\t\t\tconst selectedItem = selectedItems.pop() || this.items[0];\n\t\t\tthis._applySingleSelection(selectedItem);\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t}\n\t}\n\n\tgetFocusDomRef(): HTMLElement | undefined {\n\t\treturn this._itemNavigation._getCurrentItem();\n\t}\n\n\t_selectItem(e: MouseEvent | KeyboardEvent) {\n\t\tconst target = e.target as SegmentedButtonItem;\n\t\tconst isTargetSegmentedButtonItem = target.hasAttribute(\"ui5-segmented-button-item\");\n\n\t\tif (target.disabled || target === this.getDomRef() || !isTargetSegmentedButtonItem) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if preventDefault was called on the native event (e.g., by item's semantic click handler)\n\t\tif (e.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (this.selectionMode) {\n\t\tcase SegmentedButtonSelectionMode.Multiple:\n\t\t\ttarget.selected = !target.selected;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthis._applySingleSelection(target as unknown as ISegmentedButtonItem);\n\t\t}\n\n\t\tthis.fireDecoratorEvent(\"selection-change\", {\n\t\t\tselectedItems: this.selectedItems,\n\t\t});\n\n\t\tthis._itemNavigation.setCurrentItem(target);\n\n\t\treturn this;\n\t}\n\n\t_applySingleSelection(item: ISegmentedButtonItem) {\n\t\tthis.items.forEach(currentItem => {\n\t\t\tcurrentItem.selected = false;\n\t\t});\n\t\titem.selected = true;\n\t\tthis._selectedItem = item;\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\tthis._selectItem(e);\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tif (isEnter(e)) {\n\t\t\tthis._selectItem(e);\n\t\t} else if (isSpace(e)) {\n\t\t\te.preventDefault(); // Prevent scrolling\n\t\t\tthis._isSpacePressed = true;\n\t\t} else if (isShift(e) || isEscape(e)) {\n\t\t\tthis._cancelAction = true; // Set the flag to cancel the action\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 (isSpaceKey) {\n\t\t\tthis._selectItem(e);\n\t\t}\n\t}\n\n\t_onmousedown(e: MouseEvent) {\n\t\tconst eventTarget = e.target as SegmentedButtonItem;\n\t\tconst isTargetSegmentedButtonItem = eventTarget.hasAttribute(\"ui5-segmented-button-item\");\n\n\t\tif (isTargetSegmentedButtonItem) {\n\t\t\tthis._itemNavigation.setCurrentItem(eventTarget);\n\t\t\tthis.hasPreviouslyFocusedItem = true;\n\t\t}\n\t}\n\n\t_onfocusin(e: FocusEvent) {\n\t\t// If the component was previously focused,\n\t\t// update the ItemNavigation to sync the button's tabindex values\n\t\tif (this.hasPreviouslyFocusedItem) {\n\t\t\tthis._itemNavigation.setCurrentItem(e.target as SegmentedButtonItem);\n\t\t\treturn;\n\t\t}\n\n\t\t// If the component is focused for the first time\n\t\t// focus the selected item if such is present\n\t\tif (this.selectedItems.length) {\n\t\t\tthis._itemNavigation.setCurrentItem(this.selectedItems[0]);\n\t\t\tthis.selectedItems[0].focus();\n\t\t\tthis.hasPreviouslyFocusedItem = true;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an array of the currently selected items.\n\t * @since 1.14.0\n\t * @public\n\t * @default []\n\t */\n\tget selectedItems(): Array<ISegmentedButtonItem> {\n\t\treturn this.items.filter(item => item.selected);\n\t}\n\n\tget navigatableItems() {\n\t\treturn this.getSlottedNodes<SegmentedButtonItem>(\"items\").filter(item => {\n\t\t\treturn !item.disabled;\n\t\t});\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this) || undefined;\n\t}\n\n\tget ariaDescriptionText() {\n\t\treturn `${(getEffectiveAriaDescriptionText(this) || \"\")} ${SegmentedButton.i18nBundle.getText(SEGMENTEDBUTTON_ARIA_DESCRIBEDBY)}`.trim();\n\t}\n\n\tget ariaRoleDescription() {\n\t\treturn SegmentedButton.i18nBundle.getText(SEGMENTEDBUTTON_ARIA_DESCRIPTION);\n\t}\n}\n\nSegmentedButton.define();\n\nexport default SegmentedButton;\nexport type {\n\tSegmentedButtonSelectionChangeEventDetail,\n\tISegmentedButtonItem,\n};\n"]}
|
|
@@ -3,6 +3,10 @@ import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
|
3
3
|
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
4
4
|
import type { ISegmentedButtonItem } from "./SegmentedButton.js";
|
|
5
5
|
import type { IButton } from "./Button.js";
|
|
6
|
+
type SegmentedButtonItemClickEventDetail = {
|
|
7
|
+
item: SegmentedButtonItem;
|
|
8
|
+
originalEvent: Event;
|
|
9
|
+
};
|
|
6
10
|
/**
|
|
7
11
|
* @class
|
|
8
12
|
*
|
|
@@ -25,6 +29,9 @@ import type { IButton } from "./Button.js";
|
|
|
25
29
|
* @public
|
|
26
30
|
*/
|
|
27
31
|
declare class SegmentedButtonItem extends UI5Element implements IButton, ISegmentedButtonItem {
|
|
32
|
+
eventDetails: {
|
|
33
|
+
"click": SegmentedButtonItemClickEventDetail;
|
|
34
|
+
};
|
|
28
35
|
/**
|
|
29
36
|
* Defines whether the component is disabled.
|
|
30
37
|
* A disabled component can't be selected or
|
|
@@ -138,3 +145,4 @@ declare class SegmentedButtonItem extends UI5Element implements IButton, ISegmen
|
|
|
138
145
|
get slotTextContent(): string;
|
|
139
146
|
}
|
|
140
147
|
export default SegmentedButtonItem;
|
|
148
|
+
export type { SegmentedButtonItemClickEventDetail };
|
|
@@ -18,6 +18,7 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
|
|
|
18
18
|
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
19
19
|
import { SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION } from "./generated/i18n/i18n-defaults.js";
|
|
20
20
|
import SegmentedButtonItemTemplate from "./SegmentedButtonItemTemplate.js";
|
|
21
|
+
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
21
22
|
import segmentedButtonItemCss from "./generated/themes/SegmentedButtonItem.css.js";
|
|
22
23
|
/**
|
|
23
24
|
* @class
|
|
@@ -93,7 +94,16 @@ let SegmentedButtonItem = SegmentedButtonItem_1 = class SegmentedButtonItem exte
|
|
|
93
94
|
e.stopPropagation();
|
|
94
95
|
return;
|
|
95
96
|
}
|
|
96
|
-
|
|
97
|
+
e.stopImmediatePropagation();
|
|
98
|
+
// Fire semantic click event (CustomEvent that bubbles)
|
|
99
|
+
const prevented = !this.fireDecoratorEvent("click", {
|
|
100
|
+
item: this,
|
|
101
|
+
originalEvent: e,
|
|
102
|
+
});
|
|
103
|
+
if (prevented) {
|
|
104
|
+
e.preventDefault();
|
|
105
|
+
e.stopPropagation();
|
|
106
|
+
}
|
|
97
107
|
}
|
|
98
108
|
onEnterDOM() {
|
|
99
109
|
if (isDesktop()) {
|
|
@@ -190,6 +200,21 @@ SegmentedButtonItem = SegmentedButtonItem_1 = __decorate([
|
|
|
190
200
|
template: SegmentedButtonItemTemplate,
|
|
191
201
|
styles: segmentedButtonItemCss,
|
|
192
202
|
})
|
|
203
|
+
/**
|
|
204
|
+
* Fired when the component is activated either with a mouse/tap or by using the Enter or Space key.
|
|
205
|
+
*
|
|
206
|
+
* **Note:** The event will not be fired if the `disabled` property is set to `true`.
|
|
207
|
+
*
|
|
208
|
+
* @param {SegmentedButtonItem} item The segmented button item that was clicked.
|
|
209
|
+
* @param {Event} originalEvent The original DOM event that triggered the click. Use this to access modifier keys (altKey, ctrlKey, metaKey, shiftKey) and other native event properties.
|
|
210
|
+
* @since 2.22.0
|
|
211
|
+
* @public
|
|
212
|
+
*/
|
|
213
|
+
,
|
|
214
|
+
event("click", {
|
|
215
|
+
bubbles: true,
|
|
216
|
+
cancelable: true,
|
|
217
|
+
})
|
|
193
218
|
], SegmentedButtonItem);
|
|
194
219
|
SegmentedButtonItem.define();
|
|
195
220
|
export default SegmentedButtonItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedButtonItem.js","sourceRoot":"","sources":["../src/SegmentedButtonItem.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AAGpE,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EACN,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,GAC/B,MAAM,+DAA+D,CAAC;AACvE,OAAO,eAAe,MAAM,sDAAsD,CAAC;AACnF,OAAO,IAAI,MAAM,wDAAwD,CAAC;AAC1E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,EAAE,oCAAoC,EAAE,MAAM,mCAAmC,CAAC;AAEzF,OAAO,2BAA2B,MAAM,kCAAkC,CAAC;AAG3E,OAAO,sBAAsB,MAAM,+CAA+C,CAAC;AACnF;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,IAAM,mBAAmB,2BAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAqI3C,IAAI,eAAe;QAClB,OAAO,qBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACrF,CAAC;IAED;QACC,KAAK,EAAE,CAAC;QAzIT;;;;;;WAMG;QAEH,aAAQ,GAAG,KAAK,CAAC;QAEjB;;;;WAIG;QAEH,aAAQ,GAAG,KAAK,CAAC;QA6DjB;;;WAGG;QAEH,aAAQ,GAAG,KAAK,CAAC;QAEjB;;;WAGG;QAEH,mBAAc,GAAG,KAAK,CAAC;QASvB;;;;WAIG;QAEH,aAAQ,GAAI,CAAC,CAAC;QAEd;;;;WAIG;QAEH,cAAS,GAAI,CAAC,CAAC;QAEf;;WAEG;QAEH,WAAM,GAAG,KAAK,CAAC;IAoBf,CAAC;IAED,QAAQ,CAAC,CAAa;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,UAAU;QACT,IAAI,SAAS,EAAE,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;IACF,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,QAAQ,CAAC,CAAgB;QACxB,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,CAAC,CAAC,cAAc,EAAE,CAAC;QACpB,CAAC;IACF,CAAC;IAED,IAAI,aAAa;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,yBAAyB,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;IACzF,CAAC;IAED,IAAI,mBAAmB;QACtB,OAAO,+BAA+B,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;IAC3D,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,wBAAwB,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACrE,CAAC;IAED,IAAI,eAAe;QAClB,OAAO,IAAI,CAAC,IAAI;aACd,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC;aAChD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aAC3C,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;CACD,CAAA;AA/LA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDACX;AAQjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDACX;AAWjB;IADC,QAAQ,EAAE;oDACM;AASjB;IADC,QAAQ,EAAE;2DACa;AASxB;IADC,QAAQ,EAAE;8DACgB;AAS3B;IADC,QAAQ,EAAE;kEACoB;AAS/B;IADC,QAAQ,EAAE;qEACuB;AAYlC;IADC,QAAQ,EAAE;iDACG;AAOd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDACX;AAOjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;2DACL;AAOvB;IADC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;2DACR;AAQxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qDACb;AAQd;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDACZ;AAMf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACb;AASf;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iDACb;AAGlB;IADN,IAAI,CAAC,oBAAoB,CAAC;6CACG;AAnIzB,mBAAmB;IANxB,aAAa,CAAC;QACd,GAAG,EAAE,2BAA2B;QAChC,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,2BAA2B;QACrC,MAAM,EAAE,sBAAsB;KAC9B,CAAC;GACI,mBAAmB,CAwMxB;AAED,mBAAmB,CAAC,MAAM,EAAE,CAAC;AAE7B,eAAe,mBAAmB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { getEnableDefaultTooltips } from \"@ui5/webcomponents-base/dist/config/Tooltips.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { isSpaceShift } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n\tgetEffectiveAriaLabelText,\n\tgetAssociatedLabelForTexts,\n\tgetEffectiveAriaDescriptionText,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport willShowContent from \"@ui5/webcomponents-base/dist/util/willShowContent.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport { SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION } from \"./generated/i18n/i18n-defaults.js\";\nimport type { ISegmentedButtonItem } from \"./SegmentedButton.js\";\nimport SegmentedButtonItemTemplate from \"./SegmentedButtonItemTemplate.js\";\n\nimport type { IButton } from \"./Button.js\";\nimport segmentedButtonItemCss from \"./generated/themes/SegmentedButtonItem.css.js\";\n/**\n * @class\n *\n * ### Overview\n *\n * Users can use the `ui5-segmented-button-item` as part of a `ui5-segmented-button`.\n *\n * Clicking or tapping on a `ui5-segmented-button-item` changes its state to `selected`.\n * The item returns to its initial state when the user clicks or taps on it again.\n * By applying additional custom CSS-styling classes, apps can give a different style to any\n * `ui5-segmented-button-item`.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/SegmentedButtonItem.js\";`\n * @constructor\n * @extends UI5Element\n * @implements { ISegmentedButtonItem }\n * @implements { IButton }\n * @public\n */\n@customElement({\n\ttag: \"ui5-segmented-button-item\",\n\trenderer: jsxRenderer,\n\ttemplate: SegmentedButtonItemTemplate,\n\tstyles: segmentedButtonItemCss,\n})\nclass SegmentedButtonItem extends UI5Element implements IButton, ISegmentedButtonItem {\n\t/**\n\t * Defines whether the component is disabled.\n\t * A disabled component can't be selected 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 * Determines whether the component is displayed as selected.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tselected = 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 accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Defines the IDs of the HTML Elements that describe the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleDescriptionRef?: string;\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 if the button has icon and no text.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ticonOnly = 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 the tabIndex of the component.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tforcedTabIndex?: string;\n\n\t/**\n\t * Defines the index of the item inside of the SegmentedButton.\n\t * @default 0\n\t * @private\n\t */\n\t@property({ type: Number })\n\tposInSet? = 0;\n\n\t/**\n\t * Defines how many items are inside of the SegmentedButton.\n\t * @default 0\n\t * @private\n\t */\n\t@property({ type: Number })\n\tsizeOfSet? = 0;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thidden = false;\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@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tget ariaDescription() {\n\t\treturn SegmentedButtonItem.i18nBundle.getText(SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION);\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\tif (this.disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selected = !this.selected;\n\t}\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.iconOnly = !willShowContent(this.text);\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (isSpaceShift(e)) {\n\t\t\te.preventDefault();\n\t\t}\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 tabindex;\n\t\t}\n\n\t\treturn this.forcedTabIndex;\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this) || undefined;\n\t}\n\n\tget ariaDescriptionText() {\n\t\treturn getEffectiveAriaDescriptionText(this) || undefined;\n\t}\n\n\tget showIconTooltip() {\n\t\treturn getEnableDefaultTooltips() && this.iconOnly && !this.tooltip;\n\t}\n\n\tget slotTextContent(): string {\n\t\treturn this.text\n\t\t\t.filter(node => node.nodeType === Node.TEXT_NODE)\n\t\t\t.map(node => node.textContent?.trim() || \"\")\n\t\t\t.filter(Boolean)\n\t\t\t.join(\" \");\n\t}\n}\n\nSegmentedButtonItem.define();\n\nexport default SegmentedButtonItem;\n"]}
|
|
1
|
+
{"version":3,"file":"SegmentedButtonItem.js","sourceRoot":"","sources":["../src/SegmentedButtonItem.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { getEnableDefaultTooltips } from \"@ui5/webcomponents-base/dist/config/Tooltips.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport { isSpaceShift } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n\tgetEffectiveAriaLabelText,\n\tgetAssociatedLabelForTexts,\n\tgetEffectiveAriaDescriptionText,\n} from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport willShowContent from \"@ui5/webcomponents-base/dist/util/willShowContent.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport { SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION } from \"./generated/i18n/i18n-defaults.js\";\nimport type { ISegmentedButtonItem } from \"./SegmentedButton.js\";\nimport SegmentedButtonItemTemplate from \"./SegmentedButtonItemTemplate.js\";\n\nimport type { IButton } from \"./Button.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport segmentedButtonItemCss from \"./generated/themes/SegmentedButtonItem.css.js\";\n\ntype SegmentedButtonItemClickEventDetail = {\n\titem: SegmentedButtonItem,\n\toriginalEvent: Event,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * Users can use the `ui5-segmented-button-item` as part of a `ui5-segmented-button`.\n *\n * Clicking or tapping on a `ui5-segmented-button-item` changes its state to `selected`.\n * The item returns to its initial state when the user clicks or taps on it again.\n * By applying additional custom CSS-styling classes, apps can give a different style to any\n * `ui5-segmented-button-item`.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/SegmentedButtonItem.js\";`\n * @constructor\n * @extends UI5Element\n * @implements { ISegmentedButtonItem }\n * @implements { IButton }\n * @public\n */\n@customElement({\n\ttag: \"ui5-segmented-button-item\",\n\trenderer: jsxRenderer,\n\ttemplate: SegmentedButtonItemTemplate,\n\tstyles: segmentedButtonItemCss,\n})\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 * @param {SegmentedButtonItem} item The segmented button item that was clicked.\n * @param {Event} originalEvent The original DOM event that triggered the click. Use this to access modifier keys (altKey, ctrlKey, metaKey, shiftKey) and other native event properties.\n * @since 2.22.0\n * @public\n */\n@event(\"click\", {\n\tbubbles: true,\n\tcancelable: true,\n})\n\nclass SegmentedButtonItem extends UI5Element implements IButton, ISegmentedButtonItem {\n\teventDetails!: {\n\t\t\"click\": SegmentedButtonItemClickEventDetail,\n\t}\n\t/**\n\t * Defines whether the component is disabled.\n\t * A disabled component can't be selected 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 * Determines whether the component is displayed as selected.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tselected = 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 accessible description of the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleDescription?: string;\n\n\t/**\n\t * Defines the IDs of the HTML Elements that describe the component.\n\t * @default undefined\n\t * @public\n\t * @since 2.15.0\n\t */\n\t@property()\n\taccessibleDescriptionRef?: string;\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 if the button has icon and no text.\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\ticonOnly = 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 the tabIndex of the component.\n\t * @private\n\t */\n\t@property({ noAttribute: true })\n\tforcedTabIndex?: string;\n\n\t/**\n\t * Defines the index of the item inside of the SegmentedButton.\n\t * @default 0\n\t * @private\n\t */\n\t@property({ type: Number })\n\tposInSet? = 0;\n\n\t/**\n\t * Defines how many items are inside of the SegmentedButton.\n\t * @default 0\n\t * @private\n\t */\n\t@property({ type: Number })\n\tsizeOfSet? = 0;\n\n\t/**\n\t * @private\n\t */\n\t@property({ type: Boolean })\n\thidden = false;\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@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tget ariaDescription() {\n\t\treturn SegmentedButtonItem.i18nBundle.getText(SEGMENTEDBUTTONITEM_ARIA_DESCRIPTION);\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\t_onclick(e: MouseEvent) {\n\t\tif (this.disabled) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\te.stopImmediatePropagation();\n\n\t\t// Fire semantic click event (CustomEvent that bubbles)\n\t\tconst prevented = !this.fireDecoratorEvent(\"click\", {\n\t\t\titem: this,\n\t\t\toriginalEvent: e,\n\t\t});\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t}\n\t}\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.iconOnly = !willShowContent(this.text);\n\t}\n\n\t_onkeyup(e: KeyboardEvent) {\n\t\tif (isSpaceShift(e)) {\n\t\t\te.preventDefault();\n\t\t}\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 tabindex;\n\t\t}\n\n\t\treturn this.forcedTabIndex;\n\t}\n\n\tget ariaLabelText() {\n\t\treturn getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this) || undefined;\n\t}\n\n\tget ariaDescriptionText() {\n\t\treturn getEffectiveAriaDescriptionText(this) || undefined;\n\t}\n\n\tget showIconTooltip() {\n\t\treturn getEnableDefaultTooltips() && this.iconOnly && !this.tooltip;\n\t}\n\n\tget slotTextContent(): string {\n\t\treturn this.text\n\t\t\t.filter(node => node.nodeType === Node.TEXT_NODE)\n\t\t\t.map(node => node.textContent?.trim() || \"\")\n\t\t\t.filter(Boolean)\n\t\t\t.join(\" \");\n\t}\n}\n\nSegmentedButtonItem.define();\n\nexport default SegmentedButtonItem;\nexport type { SegmentedButtonItemClickEventDetail };\n"]}
|
package/dist/StepInput.d.ts
CHANGED
|
@@ -245,8 +245,8 @@ declare class StepInput extends UI5Element implements IFormInputElement {
|
|
|
245
245
|
_getValueOnkeyDown(e: KeyboardEvent, inputValue: string, cursorPosition?: number): string;
|
|
246
246
|
_removeGroupSeparators(value: string): string;
|
|
247
247
|
_isInputValueValid(typedValue: string, parsedValue: number): boolean;
|
|
248
|
-
_decSpin(): void;
|
|
249
|
-
_incSpin(): void;
|
|
248
|
+
_decSpin(e: MouseEvent): void;
|
|
249
|
+
_incSpin(e: MouseEvent): void;
|
|
250
250
|
/**
|
|
251
251
|
* Calculates the time which should be waited until _spinValue function is called.
|
|
252
252
|
*/
|
package/dist/StepInput.js
CHANGED
|
@@ -262,7 +262,7 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
|
|
|
262
262
|
}
|
|
263
263
|
_onButtonFocusOut() {
|
|
264
264
|
setTimeout(() => {
|
|
265
|
-
if (!this._inputFocused) {
|
|
265
|
+
if (!this._inputFocused && !this.shadowRoot.activeElement) {
|
|
266
266
|
this.inputOuter.removeAttribute("focused");
|
|
267
267
|
}
|
|
268
268
|
}, 0);
|
|
@@ -281,12 +281,10 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
|
|
|
281
281
|
this._onInputChange();
|
|
282
282
|
}
|
|
283
283
|
_onMouseWheel(e) {
|
|
284
|
-
if (this.disabled || this.readonly) {
|
|
284
|
+
if (this.disabled || this.readonly || !this._isFocused) {
|
|
285
285
|
return;
|
|
286
286
|
}
|
|
287
|
-
|
|
288
|
-
e.preventDefault();
|
|
289
|
-
}
|
|
287
|
+
e.preventDefault();
|
|
290
288
|
const isScrollUp = e.deltaY < 0;
|
|
291
289
|
const modifier = isScrollUp ? this.step : -this.step;
|
|
292
290
|
this._modifyValue(modifier, true);
|
|
@@ -509,15 +507,27 @@ let StepInput = StepInput_1 = class StepInput extends UI5Element {
|
|
|
509
507
|
_isInputValueValid(typedValue, parsedValue) {
|
|
510
508
|
return !Number.isNaN(parsedValue) && !/, {2,}/.test(typedValue);
|
|
511
509
|
}
|
|
512
|
-
_decSpin() {
|
|
510
|
+
_decSpin(e) {
|
|
511
|
+
if (this._isFocused || this._decIconDisabled) {
|
|
512
|
+
e.preventDefault();
|
|
513
|
+
}
|
|
513
514
|
if (!this._decIconDisabled) {
|
|
514
515
|
this._spinValue(false, true);
|
|
515
516
|
}
|
|
517
|
+
else {
|
|
518
|
+
this.input.focus();
|
|
519
|
+
}
|
|
516
520
|
}
|
|
517
|
-
_incSpin() {
|
|
521
|
+
_incSpin(e) {
|
|
522
|
+
if (this._isFocused || this._incIconDisabled) {
|
|
523
|
+
e.preventDefault();
|
|
524
|
+
}
|
|
518
525
|
if (!this._incIconDisabled) {
|
|
519
526
|
this._spinValue(true, true);
|
|
520
527
|
}
|
|
528
|
+
else {
|
|
529
|
+
this.input.focus();
|
|
530
|
+
}
|
|
521
531
|
}
|
|
522
532
|
/**
|
|
523
533
|
* Calculates the time which should be waited until _spinValue function is called.
|
package/dist/StepInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepInput.js","sourceRoot":"","sources":["../src/StepInput.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot } 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 jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport {\n\tisUp,\n\tisDown,\n\tisUpCtrl,\n\tisDownCtrl,\n\tisUpShift,\n\tisDownShift,\n\tisUpShiftCtrl,\n\tisDownShiftCtrl,\n\tisPageUpShift,\n\tisPageDownShift,\n\tisEscape,\n\tisEnter,\n\tisMinus,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport { getEffectiveAriaLabelText, getAssociatedLabelForTexts } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport type { Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport { submitForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport StepInputTemplate from \"./StepInputTemplate.js\";\nimport {\n\tSTEPINPUT_DEC_ICON_TITLE,\n\tSTEPINPUT_INC_ICON_TITLE,\n\tSTEPINPUT_PATTER_MISSMATCH,\n\tSTEPINPUT_RANGEOVERFLOW,\n\tSTEPINPUT_RANGEUNDERFLOW,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport \"@ui5/webcomponents-icons/dist/less.js\";\nimport \"@ui5/webcomponents-icons/dist/add.js\";\n\nimport type Input from \"./Input.js\";\nimport type { InputAccInfo, InputEventDetail } from \"./Input.js\";\nimport InputType from \"./types/InputType.js\";\nimport NumberFormat from \"@ui5/webcomponents-localization/dist/NumberFormat.js\";\n\n// Styles\nimport StepInputCss from \"./generated/themes/StepInput.css.js\";\nimport getCachedLocaleDataInstance from \"@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js\";\nimport getLocale from \"@ui5/webcomponents-base/dist/locale/getLocale.js\";\nimport { attachLanguageChange, detachLanguageChange } from \"@ui5/webcomponents-base/dist/locale/languageChange.js\";\n\n// Spin variables\nconst INITIAL_WAIT_TIMEOUT = 500; // milliseconds\nconst ACCELERATION = 0.8;\nconst MIN_WAIT_TIMEOUT = 50; // milliseconds\nconst INITIAL_SPEED = 120; // milliseconds\n\ntype StepInputValueStateChangeEventDetail = {\n\tvalueState: `${ValueState}`,\n\tvalid: boolean,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-step-input` consists of an input field and buttons with icons to increase/decrease the value\n * with the predefined step.\n *\n * The user can change the value of the component by pressing the increase/decrease buttons,\n * by typing a number directly, by using the keyboard up/down and page up/down,\n * or by using the mouse scroll wheel. Decimal values are supported.\n *\n * ### Usage\n *\n * The default step is 1 but the app developer can set a different one.\n *\n * App developers can set a maximum and minimum value for the `StepInput`.\n * The increase/decrease button and the up/down keyboard navigation become disabled when\n * the value reaches the max/min or a new value is entered from the input which is greater/less than the max/min.\n *\n * #### When to use:\n *\n * - To adjust amounts, quantities, or other values quickly.\n * - To adjust values for a specific step.\n *\n * #### When not to use:\n *\n * - To enter a static number (for example, postal code, phone number, or ID). In this case,\n * use the regular `ui5-input` instead.\n * - To display a value that rarely needs to be adjusted and does not pertain to a particular step.\n * In this case, use the regular `ui5-input` instead.\n * - To enter dates and times. In this case, use date/time related components instead.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/StepInput.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.13\n * @public\n */\n@customElement({\n\ttag: \"ui5-step-input\",\n\tcldr: true,\n\tformAssociated: true,\n\trenderer: jsxRenderer,\n\tstyles: StepInputCss,\n\ttemplate: StepInputTemplate,\n\tlanguageAware: true,\n})\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n})\n/**\n * Fired when the value of the component changes at each keystroke.\n * @public\n * @since 2.6.0\n */\n@event(\"input\", {\n\tcancelable: true,\n\tbubbles: true,\n})\n/**\n * Fired before the value state of the component is updated internally.\n * The event is preventable, meaning that if it's default action is\n * prevented, the component will not update the value state.\n * @since 1.23.0\n * @public\n * @param {string} valueState The new `valueState` that will be set.\n * @param {boolean} valid Indicator if the value is in between the min and max value.\n */\n@event(\"value-state-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass StepInput extends UI5Element implements IFormInputElement {\n\teventDetails!: {\n\t\tchange: void\n\t\tinput: InputEventDetail\n\t\t\"value-state-change\": StepInputValueStateChangeEventDetail\n\t}\n\n\t/**\n\t * Defines a value of the component.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tvalue = 0;\n\n\t/**\n\t * Defines a minimum value of the component.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ type: Number })\n\tmin?: number;\n\n\t/**\n\t * Defines a maximum value of the component.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ type: Number })\n\tmax?: number;\n\n\t/**\n\t * Defines a step of increasing/decreasing the value of the component.\n\t * @default 1\n\t * @public\n\t */\n\t@property({ type: Number })\n\tstep: number = 1;\n\n\t/**\n\t * Defines the value state of the component.\n\t * @default \"None\"\n\t * @public\n\t */\n\t@property()\n\tvalueState: `${ValueState}` = \"None\";\n\n\t/**\n\t * Defines whether the component is required.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\trequired = false;\n\n\t/**\n\t * Determines whether the component is displayed as disabled.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Determines whether the component is displayed as read-only.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\treadonly = false;\n\n\t/**\n\t * Defines a short hint, intended to aid the user with data entry when the\n\t * component has no value.\n\t *\n\t * **Note:** When no placeholder is set, the format pattern is displayed as a placeholder.\n\t * Passing an empty string as the value of this property will make the component appear empty - without placeholder or format pattern.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tplaceholder?: string;\n\n\t/**\n\t * Determines the name by which the component will be identified upon submission in an HTML form.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tname?: string;\n\n\t/**\n\t * Determines the number of digits after the decimal point of the component.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tvaluePrecision = 0;\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.0.0-rc.15\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t@property({ noAttribute: true })\n\t_decIconDisabled = false;\n\n\t@property({ noAttribute: true })\n\t_incIconDisabled = false;\n\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t@property({ noAttribute: true })\n\t_inputFocused = false;\n\n\t@property({ noAttribute: true })\n\t_previousValue: number | undefined;\n\n\t@property({ noAttribute: true })\n\t_waitTimeout: number = INITIAL_WAIT_TIMEOUT;\n\n\t@property({ noAttribute: true })\n\t_speed: number = INITIAL_SPEED;\n\n\t@property({ noAttribute: true })\n\t_btnDown?: boolean;\n\n\t@property({ noAttribute: true })\n\t_spinTimeoutId?: Timeout;\n\n\t@property({ noAttribute: true })\n\t_spinStarted = false;\n\n\t/**\n\t * Defines the value state message that will be displayed as pop up under the component.\n\t *\n\t * **Note:** If not specified, a default text (in the respective language) will be displayed.\n\t *\n\t * **Note:** The `valueStateMessage` would be displayed,\n\t * when the component is in `Information`, `Critical` or `Negative` value state.\n\t * @public\n\t */\n\t@slot()\n\tvalueStateMessage!: Slot<HTMLElement>;\n\n\t_initialValueState?: `${ValueState}`;\n\n\t_formatter?: NumberFormat;\n\n\t_languageChangeHandler?: (lang: string) => Promise<void>;\n\n\t_languageChanged?: boolean = false;\n\n\t_delimiter?: string;\n\n\t_groupSeparator?: string;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tasync formElementAnchor() {\n\t\treturn (await this.getFocusDomRefAsync() as UI5Element)?.getFocusDomRefAsync();\n\t}\n\n\tget formValidityMessage() {\n\t\tconst validity = this.formValidity;\n\n\t\tif (validity.patternMismatch) {\n\t\t\treturn StepInput.i18nBundle.getText(STEPINPUT_PATTER_MISSMATCH, this.valuePrecision);\n\t\t}\n\t\tif (validity.rangeUnderflow) {\n\t\t\treturn StepInput.i18nBundle.getText(STEPINPUT_RANGEUNDERFLOW, this.min as number);\n\t\t}\n\t\tif (validity.rangeOverflow) {\n\t\t\treturn StepInput.i18nBundle.getText(STEPINPUT_RANGEOVERFLOW, this.max as number);\n\t\t}\n\n\t\treturn \"\"; // No error\n\t}\n\n\tget formValidity(): ValidityStateFlags {\n\t\treturn {\n\t\t\tpatternMismatch: this.value !== 0 && !this._isValueWithCorrectPrecision,\n\t\t\trangeOverflow: this.max !== undefined && this.value >= this.max,\n\t\t\trangeUnderflow: this.min !== undefined && this.value <= this.min,\n\t\t};\n\t}\n\n\tget formFormattedValue(): FormData | string | null {\n\t\treturn this.value.toString();\n\t}\n\n\tget type() {\n\t\treturn InputType.Text;\n\t}\n\n\t// icons-related\n\n\tget decIconTitle() {\n\t\treturn StepInput.i18nBundle.getText(STEPINPUT_DEC_ICON_TITLE);\n\t}\n\n\tget incIconTitle() {\n\t\treturn StepInput.i18nBundle.getText(STEPINPUT_INC_ICON_TITLE);\n\t}\n\n\tget _decIconClickable() {\n\t\treturn !this._decIconDisabled && !this.readonly && !this.disabled;\n\t}\n\n\tget _incIconClickable() {\n\t\treturn !this._incIconDisabled && !this.readonly && !this.disabled;\n\t}\n\n\tget _isFocused() {\n\t\treturn this.focused;\n\t}\n\n\tget _displayValue() {\n\t\tif (this._languageChanged) {\n\t\t\tthis._languageChanged = false;\n\t\t\tthis.valueState = ValueState.None; // to reset the value state visual\n\t\t\treturn this._formatNumber(this.value);\n\t\t}\n\t\t// For the cases when there is set value precision but the input value is not with correct precision we don't need to format it\n\t\tconst value = this.input?.value && !this._isValueWithCorrectPrecision ? this.input.value : this._formatNumber(this.value);\n\t\tif ((this.value === 0) || (Number.isInteger(this.value))) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (this.input && this.value === this._parseNumber(this.input.value)) { // For the cases where the number is fractional and is ending with 0s.\n\t\t\treturn this.input.value;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tget accInfo(): InputAccInfo {\n\t\treturn {\n\t\t\t\"ariaRequired\": this.required,\n\t\t\t\"ariaLabel\": getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this),\n\t\t};\n\t}\n\n\tget inputAttributes() {\n\t\treturn {\n\t\t\tmin: this.min === undefined ? undefined : this.min,\n\t\t\tmax: this.max === undefined ? undefined : this.max,\n\t\t\tstep: this.step,\n\t\t};\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._setButtonState();\n\t}\n\tonEnterDOM() {\n\t\tthis._setupLanguageChangeHandler();\n\t}\n\n\tonExitDOM() {\n\t\tthis._cleanupLanguageChangeHandler();\n\t}\n\n\t_setupLanguageChangeHandler() {\n\t\tif (this._languageChangeHandler) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._languageChangeHandler = () => {\n\t\t\tthis._formatter = undefined;\n\t\t\tthis._languageChanged = true;\n\t\t\tthis._delimiter = undefined;\n\t\t\tthis._groupSeparator = undefined;\n\n\t\t\treturn Promise.resolve();\n\t\t};\n\t\tattachLanguageChange(this._languageChangeHandler);\n\t}\n\n\t_cleanupLanguageChangeHandler() {\n\t\tif (this._languageChangeHandler) {\n\t\t\tdetachLanguageChange(this._languageChangeHandler);\n\t\t\tthis._languageChangeHandler = undefined;\n\t\t}\n\t}\n\n\tget formatter(): NumberFormat {\n\t\tif (!this._formatter) {\n\t\t\tthis._formatter = NumberFormat.getFloatInstance({\n\t\t\t\tdecimals: this.valuePrecision,\n\t\t\t});\n\t\t}\n\n\t\treturn this._formatter;\n\t}\n\n\tget delimiter() {\n\t\tif (!this._delimiter) {\n\t\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\t\tthis._delimiter = localeData.getNumberSymbol(\"decimal\") || \".\";\n\t\t}\n\n\t\treturn this._delimiter;\n\t}\n\n\tget groupSeparator() {\n\t\tif (!this._groupSeparator) {\n\t\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\t\tthis._groupSeparator = localeData.getNumberSymbol(\"group\") || \",\";\n\t\t}\n\n\t\treturn this._groupSeparator;\n\t}\n\n\tget input(): Input {\n\t\treturn this.shadowRoot!.querySelector<Input>(\"[ui5-input]\")!;\n\t}\n\n\tget innerInput(): HTMLInputElement {\n\t\treturn this.input.shadowRoot!.querySelector<HTMLInputElement>(\"input\")!;\n\t}\n\n\tget inputOuter() {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-step-input-input\")!;\n\t}\n\n\t_onButtonFocusOut() {\n\t\tsetTimeout(() => {\n\t\t\tif (!this._inputFocused) {\n\t\t\t\tthis.inputOuter.removeAttribute(\"focused\");\n\t\t\t}\n\t\t}, 0);\n\t}\n\n\t_onInput(e: CustomEvent<InputEventDetail>) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"input\", { inputType: e.detail.inputType });\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_onInputFocusIn() {\n\t\tthis._inputFocused = true;\n\t}\n\n\t_onInputFocusOut() {\n\t\tthis._inputFocused = false;\n\t\tthis._onInputChange();\n\t}\n\n\t_onMouseWheel(e: WheelEvent) {\n\t\tif (this.disabled || this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._isFocused) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tconst isScrollUp = e.deltaY < 0;\n\t\tconst modifier = isScrollUp ? this.step : -this.step;\n\t\tthis._modifyValue(modifier, true);\n\t}\n\n\t_setButtonState() {\n\t\tthis._decIconDisabled = this.min !== undefined && this.value <= this.min;\n\t\tthis._incIconDisabled = this.max !== undefined && this.value >= this.max;\n\t}\n\n\t_validate() {\n\t\tif (this._initialValueState === undefined) {\n\t\t\tthis._initialValueState = this.valueState;\n\t\t}\n\n\t\tthis._updateValueState();\n\t}\n\n\t_updateValueState() {\n\t\tconst isWithinRange = (this.min === undefined || this._parseNumber(this.input.value) >= this.min)\n\t\t\t\t\t\t\t && (this.max === undefined || this._parseNumber(this.input.value) <= this.max);\n\t\tconst isValueWithCorrectPrecision = this._isValueWithCorrectPrecision;\n\t\tconst previousValueState = this.valueState;\n\t\tconst isValid = isWithinRange && isValueWithCorrectPrecision;\n\n\t\tthis.valueState = isValid ? ValueState.None : ValueState.Negative;\n\n\t\tconst eventPrevented = !this.fireDecoratorEvent(\"value-state-change\", {\n\t\t\tvalueState: this.valueState,\n\t\t\tvalid: isValid,\n\t\t});\n\n\t\tif (eventPrevented) {\n\t\t\tthis.valueState = previousValueState;\n\t\t}\n\t}\n\n\t_preciseValue(value: number) {\n\t\tconst pow = 10 ** this.valuePrecision;\n\t\treturn Math.round(value * pow) / pow;\n\t}\n\n\t_fireChangeEvent() {\n\t\tif (this._previousValue !== this.value) {\n\t\t\tthis._previousValue = this.value;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\t}\n\n\t/**\n\t * Value modifier - modifies the value of the component, validates the new value and enables/disables increment and\n\t * decrement buttons according to the value and min/max values (if set). Fires `change` event when requested\n\t * @private\n\t * @param modifier modifies the value of the component with the given modifier (positive or negative)\n\t * @param fireChangeEvent if `true`, fires `change` event when the value is changed\n\t */\n\t_modifyValue(modifier: number, fireChangeEvent = false) {\n\t\tlet value;\n\t\tvalue = this.value + modifier;\n\t\tif (this.min !== undefined && value < this.min) {\n\t\t\tvalue = this.min;\n\t\t}\n\t\tif (this.max !== undefined && value > this.max) {\n\t\t\tvalue = this.max;\n\t\t}\n\t\tvalue = this._preciseValue(value);\n\t\tif (value !== this.value) {\n\t\t\tthis.value = value;\n\t\t\tthis.input.value = this._formatNumber(value);\n\t\t\tthis._validate();\n\t\t\tthis._setButtonState();\n\t\t\tthis.focused = true;\n\t\t\tthis.inputOuter.setAttribute(\"focused\", \"\");\n\t\t\tif (fireChangeEvent) {\n\t\t\t\tthis._fireChangeEvent();\n\t\t\t} else {\n\t\t\t\tthis.input.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n \t * Formats a number with thousands separator based on current locale\n \t * @private\n \t */\n\t_formatNumber(value: number): string {\n\t\treturn this.formatter.format(value);\n\t}\n\n\t/**\n \t * Parses formatted number string back to numeric value\n \t * @private\n \t*/\n\t_parseNumber(formattedValue: string): number {\n\t\treturn this.formatter.parse(formattedValue) as number;\n\t}\n\n\t_incValue() {\n\t\tif (this._incIconClickable && !this.disabled && !this.readonly) {\n\t\t\tthis._modifyValue(this.step, true);\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\t_decValue() {\n\t\tif (this._decIconClickable && !this.disabled && !this.readonly) {\n\t\t\tthis._modifyValue(-this.step, true);\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\tget _isValueWithCorrectPrecision() {\n\t\tconst delimiter = this.delimiter;\n\t\t// check if the value will be displayed with correct precision\n\t\t// _displayValue has special formatting logic\n\t\tif (this.valuePrecision === 0 && !this.input?.value.includes(delimiter) && ((this.value === 0) || (Number.isInteger(this.value)))) {\n\t\t\t// integers and zero will be formatted with toFixed, so thex y're always valid\n\t\t\treturn true;\n\t\t}\n\t\tconst numberParts = this.input?.value?.split(delimiter);\n\t\tconst decimalPartLength = numberParts?.length > 1 ? numberParts[1].length : 0;\n\n\t\treturn decimalPartLength === this.valuePrecision;\n\t}\n\n\t_onInputChange() {\n\t\tthis._setDefaultInputValueIfNeeded();\n\t\tconst updatedValue = this._removeGroupSeparators(this.input.value);\n\t\tconst inputValue = this._parseNumber(updatedValue);\n\t\tif (this._isValueChanged(inputValue)) {\n\t\t\tthis._updateValueAndValidate(Number.isNaN(inputValue) ? this.min || 0 : inputValue);\n\t\t\tthis.innerInput.value = this.input.value;\n\t\t}\n\t}\n\n\t_setDefaultInputValueIfNeeded() {\n\t\tif (this.input.value === \"\") {\n\t\t\tconst defaultValue = this._formatNumber(this.min || 0);\n\t\t\tthis.input.value = defaultValue;\n\t\t\tthis.innerInput.value = defaultValue; // we need to update inner input value as well, to avoid empty input scenario\n\t\t}\n\t}\n\n\t_isValueChanged(inputValue: number) {\n\t\tconst isValueWithCorrectPrecision = this._isValueWithCorrectPrecision;\n\t\t// Treat values as distinct when modified to match a specific precision (e.g., from 3.4000 to 3.40),\n\t\t// even if JavaScript sees them as equal, to correctly update valueState based on expected valuePrecision.\n\t\tconst isPrecisionCorrectButValueStateError = isValueWithCorrectPrecision && this.valueState === ValueState.Negative;\n\n\t\treturn this.value !== this._previousValue\n\t\t\t|| this.value !== inputValue\n\t\t\t|| inputValue === 0\n\t\t\t|| !isValueWithCorrectPrecision\n\t\t\t|| isPrecisionCorrectButValueStateError\n\t\t\t|| Number.isNaN(inputValue);\n\t}\n\n\t_updateValueAndValidate(inputValue: number) {\n\t\tthis.value = inputValue;\n\t\tthis._validate();\n\t\tthis._setButtonState();\n\t\tthis._fireChangeEvent();\n\t}\n\n\t_onfocusin() {\n\t\tthis.focused = true;\n\t\tthis._previousValue = this.value;\n\t}\n\n\t_onfocusout() {\n\t\tthis.focused = false;\n\t\tthis._previousValue = undefined;\n\t}\n\n\t_onInputRequestSubmit() {\n\t\tif (this._internals.form) {\n\t\t\tsubmitForm(this);\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tlet preventDefault = true;\n\t\tif (this.disabled || this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis._onInputChange();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isUp(e)) {\n\t\t\t// step up\n\t\t\tthis._modifyValue(this.step);\n\t\t} else if (isDown(e)) {\n\t\t\t// step down\n\t\t\tthis._modifyValue(-this.step);\n\t\t} else if (isEscape(e)) {\n\t\t\t// return previous value\n\t\t\tif (this._previousValue === undefined) {\n\t\t\t\tthis._previousValue = this.value;\n\t\t\t}\n\t\t\tthis.value = this._previousValue;\n\t\t\tthis.input.value = this.value.toFixed(this.valuePrecision);\n\t\t} else if (this.max !== undefined && (isPageUpShift(e) || isUpShiftCtrl(e))) {\n\t\t\t// step to max\n\t\t\tthis._modifyValue(this.max - this.value);\n\t\t} else if (this.min !== undefined && (isPageDownShift(e) || isDownShiftCtrl(e))) {\n\t\t\t// step to min\n\t\t\tthis._modifyValue(this.min - this.value);\n\t\t} else if (!isUpCtrl(e) && !isDownCtrl(e) && !isUpShift(e) && !isDownShift(e)) {\n\t\t\tpreventDefault = false;\n\t\t}\n\n\t\tif (e.key && e.key.length !== 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst caretPosition = this._getCaretPosition();\n\t\tconst inputValue = this.innerInput.value;\n\t\tconst typedValue = this._getValueOnkeyDown(e, inputValue, caretPosition!);\n\t\tconst parsedValue = this._parseNumber(typedValue);\n\t\tconst isValidTypedValue = this._isInputValueValid(typedValue, parsedValue);\n\n\t\tif (preventDefault || !isValidTypedValue) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (caretPosition === 0 && isMinus(e)) {\n\t\t\tthis._updateValueAndValidate(parsedValue);\n\t\t}\n\t}\n\n\t_getCaretPosition() {\n\t\treturn this.input.getDomRef()!.querySelector(\"input\")!.selectionStart;\n\t}\n\n\t_getValueOnkeyDown(e: KeyboardEvent, inputValue: string, cursorPosition?: number) {\n\t\tconst typedValue = `${inputValue.substring(0, cursorPosition)}${e.key}${inputValue.substring(cursorPosition!)}`;\n\t\tconst updatedValue = this._removeGroupSeparators(typedValue);\n\t\treturn updatedValue;\n\t}\n\n\t_removeGroupSeparators(value: string) {\n\t\tconst groupSeparator = this.groupSeparator;\n\t\treturn value.replaceAll(groupSeparator, \"\");\n\t}\n\n\t_isInputValueValid(typedValue: string, parsedValue: number) {\n\t\treturn !Number.isNaN(parsedValue) && !/, {2,}/.test(typedValue);\n\t}\n\n\t_decSpin() {\n\t\tif (!this._decIconDisabled) {\n\t\t\tthis._spinValue(false, true);\n\t\t}\n\t}\n\n\t_incSpin() {\n\t\tif (!this._incIconDisabled) {\n\t\t\tthis._spinValue(true, true);\n\t\t}\n\t}\n\n\t/**\n\t * Calculates the time which should be waited until _spinValue function is called.\n\t */\n\t_calcWaitTimeout() {\n\t\tthis._speed *= ACCELERATION;\n\t\tthis._waitTimeout = ((this._waitTimeout - this._speed) < MIN_WAIT_TIMEOUT ? MIN_WAIT_TIMEOUT : (this._waitTimeout - this._speed));\n\t\treturn this._waitTimeout;\n\t}\n\n\t/**\n\t * Called when the increment or decrement button is pressed and held to set new value.\n\t * @private\n\t * @param increment - is this the increment button or not so the values should be spin accordingly up or down\n\t * @param resetVariables - whether to reset the spin-related variables or not\n\t */\n\t_spinValue(increment: boolean, resetVariables = false) {\n\t\tif (resetVariables) {\n\t\t\tthis._waitTimeout = INITIAL_WAIT_TIMEOUT;\n\t\t\tthis._speed = INITIAL_SPEED;\n\t\t\tthis._btnDown = true;\n\t\t}\n\t\tthis._spinTimeoutId = setTimeout(() => {\n\t\t\tif (this._btnDown) {\n\t\t\t\tthis._spinStarted = true;\n\t\t\t\tthis._modifyValue(increment ? this.step : -this.step);\n\t\t\t\tthis._setButtonState();\n\t\t\t\tif ((!this._incIconDisabled && increment) || (!this._decIconDisabled && !increment)) {\n\t\t\t\t\tthis._spinValue(increment);\n\t\t\t\t} else {\n\t\t\t\t\tthis._resetSpin();\n\t\t\t\t\tthis._fireChangeEvent();\n\t\t\t\t}\n\t\t\t}\n\t\t}, this._calcWaitTimeout());\n\t}\n\n\t/**\n\t* Resets spin process\n\t*/\n\t_resetSpin() {\n\t\tclearTimeout(this._spinTimeoutId);\n\t\tthis._btnDown = false;\n\t\tthis._spinStarted = false;\n\t}\n\n\t/**\n\t* Resets spin process when mouse outs + or - buttons\n\t*/\n\t_resetSpinOut() {\n\t\tif (this._btnDown) {\n\t\t\tthis._resetSpin();\n\t\t\tthis._fireChangeEvent();\n\t\t}\n\t}\n}\nStepInput.define();\n\nexport default StepInput;\nexport type {\n\tStepInputValueStateChangeEventDetail,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"StepInput.js","sourceRoot":"","sources":["../src/StepInput.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { Slot } 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 jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport {\n\tisUp,\n\tisDown,\n\tisUpCtrl,\n\tisDownCtrl,\n\tisUpShift,\n\tisDownShift,\n\tisUpShiftCtrl,\n\tisDownShiftCtrl,\n\tisPageUpShift,\n\tisPageDownShift,\n\tisEscape,\n\tisEnter,\n\tisMinus,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ValueState from \"@ui5/webcomponents-base/dist/types/ValueState.js\";\nimport { getEffectiveAriaLabelText, getAssociatedLabelForTexts } from \"@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js\";\nimport type { Timeout } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type { IFormInputElement } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport { submitForm } from \"@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js\";\nimport StepInputTemplate from \"./StepInputTemplate.js\";\nimport {\n\tSTEPINPUT_DEC_ICON_TITLE,\n\tSTEPINPUT_INC_ICON_TITLE,\n\tSTEPINPUT_PATTER_MISSMATCH,\n\tSTEPINPUT_RANGEOVERFLOW,\n\tSTEPINPUT_RANGEUNDERFLOW,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport \"@ui5/webcomponents-icons/dist/less.js\";\nimport \"@ui5/webcomponents-icons/dist/add.js\";\n\nimport type Input from \"./Input.js\";\nimport type { InputAccInfo, InputEventDetail } from \"./Input.js\";\nimport InputType from \"./types/InputType.js\";\nimport NumberFormat from \"@ui5/webcomponents-localization/dist/NumberFormat.js\";\n\n// Styles\nimport StepInputCss from \"./generated/themes/StepInput.css.js\";\nimport getCachedLocaleDataInstance from \"@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js\";\nimport getLocale from \"@ui5/webcomponents-base/dist/locale/getLocale.js\";\nimport { attachLanguageChange, detachLanguageChange } from \"@ui5/webcomponents-base/dist/locale/languageChange.js\";\n\n// Spin variables\nconst INITIAL_WAIT_TIMEOUT = 500; // milliseconds\nconst ACCELERATION = 0.8;\nconst MIN_WAIT_TIMEOUT = 50; // milliseconds\nconst INITIAL_SPEED = 120; // milliseconds\n\ntype StepInputValueStateChangeEventDetail = {\n\tvalueState: `${ValueState}`,\n\tvalid: boolean,\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-step-input` consists of an input field and buttons with icons to increase/decrease the value\n * with the predefined step.\n *\n * The user can change the value of the component by pressing the increase/decrease buttons,\n * by typing a number directly, by using the keyboard up/down and page up/down,\n * or by using the mouse scroll wheel. Decimal values are supported.\n *\n * ### Usage\n *\n * The default step is 1 but the app developer can set a different one.\n *\n * App developers can set a maximum and minimum value for the `StepInput`.\n * The increase/decrease button and the up/down keyboard navigation become disabled when\n * the value reaches the max/min or a new value is entered from the input which is greater/less than the max/min.\n *\n * #### When to use:\n *\n * - To adjust amounts, quantities, or other values quickly.\n * - To adjust values for a specific step.\n *\n * #### When not to use:\n *\n * - To enter a static number (for example, postal code, phone number, or ID). In this case,\n * use the regular `ui5-input` instead.\n * - To display a value that rarely needs to be adjusted and does not pertain to a particular step.\n * In this case, use the regular `ui5-input` instead.\n * - To enter dates and times. In this case, use date/time related components instead.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents/dist/StepInput.js\";`\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.13\n * @public\n */\n@customElement({\n\ttag: \"ui5-step-input\",\n\tcldr: true,\n\tformAssociated: true,\n\trenderer: jsxRenderer,\n\tstyles: StepInputCss,\n\ttemplate: StepInputTemplate,\n\tlanguageAware: true,\n})\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout.\n * @public\n */\n@event(\"change\", {\n\tbubbles: true,\n})\n/**\n * Fired when the value of the component changes at each keystroke.\n * @public\n * @since 2.6.0\n */\n@event(\"input\", {\n\tcancelable: true,\n\tbubbles: true,\n})\n/**\n * Fired before the value state of the component is updated internally.\n * The event is preventable, meaning that if it's default action is\n * prevented, the component will not update the value state.\n * @since 1.23.0\n * @public\n * @param {string} valueState The new `valueState` that will be set.\n * @param {boolean} valid Indicator if the value is in between the min and max value.\n */\n@event(\"value-state-change\", {\n\tbubbles: true,\n\tcancelable: true,\n})\nclass StepInput extends UI5Element implements IFormInputElement {\n\teventDetails!: {\n\t\tchange: void\n\t\tinput: InputEventDetail\n\t\t\"value-state-change\": StepInputValueStateChangeEventDetail\n\t}\n\n\t/**\n\t * Defines a value of the component.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tvalue = 0;\n\n\t/**\n\t * Defines a minimum value of the component.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ type: Number })\n\tmin?: number;\n\n\t/**\n\t * Defines a maximum value of the component.\n\t * @default undefined\n\t * @public\n\t */\n\t@property({ type: Number })\n\tmax?: number;\n\n\t/**\n\t * Defines a step of increasing/decreasing the value of the component.\n\t * @default 1\n\t * @public\n\t */\n\t@property({ type: Number })\n\tstep: number = 1;\n\n\t/**\n\t * Defines the value state of the component.\n\t * @default \"None\"\n\t * @public\n\t */\n\t@property()\n\tvalueState: `${ValueState}` = \"None\";\n\n\t/**\n\t * Defines whether the component is required.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\trequired = false;\n\n\t/**\n\t * Determines whether the component is displayed as disabled.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tdisabled = false;\n\n\t/**\n\t * Determines whether the component is displayed as read-only.\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\treadonly = false;\n\n\t/**\n\t * Defines a short hint, intended to aid the user with data entry when the\n\t * component has no value.\n\t *\n\t * **Note:** When no placeholder is set, the format pattern is displayed as a placeholder.\n\t * Passing an empty string as the value of this property will make the component appear empty - without placeholder or format pattern.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tplaceholder?: string;\n\n\t/**\n\t * Determines the name by which the component will be identified upon submission in an HTML form.\n\t *\n\t * **Note:** This property is only applicable within the context of an HTML Form element.\n\t * @default undefined\n\t * @public\n\t */\n\t@property()\n\tname?: string;\n\n\t/**\n\t * Determines the number of digits after the decimal point of the component.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tvaluePrecision = 0;\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.0.0-rc.15\n\t */\n\t@property()\n\taccessibleNameRef?: string;\n\n\t@property({ noAttribute: true })\n\t_decIconDisabled = false;\n\n\t@property({ noAttribute: true })\n\t_incIconDisabled = false;\n\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t@property({ noAttribute: true })\n\t_inputFocused = false;\n\n\t@property({ noAttribute: true })\n\t_previousValue: number | undefined;\n\n\t@property({ noAttribute: true })\n\t_waitTimeout: number = INITIAL_WAIT_TIMEOUT;\n\n\t@property({ noAttribute: true })\n\t_speed: number = INITIAL_SPEED;\n\n\t@property({ noAttribute: true })\n\t_btnDown?: boolean;\n\n\t@property({ noAttribute: true })\n\t_spinTimeoutId?: Timeout;\n\n\t@property({ noAttribute: true })\n\t_spinStarted = false;\n\n\t/**\n\t * Defines the value state message that will be displayed as pop up under the component.\n\t *\n\t * **Note:** If not specified, a default text (in the respective language) will be displayed.\n\t *\n\t * **Note:** The `valueStateMessage` would be displayed,\n\t * when the component is in `Information`, `Critical` or `Negative` value state.\n\t * @public\n\t */\n\t@slot()\n\tvalueStateMessage!: Slot<HTMLElement>;\n\n\t_initialValueState?: `${ValueState}`;\n\n\t_formatter?: NumberFormat;\n\n\t_languageChangeHandler?: (lang: string) => Promise<void>;\n\n\t_languageChanged?: boolean = false;\n\n\t_delimiter?: string;\n\n\t_groupSeparator?: string;\n\n\t@i18n(\"@ui5/webcomponents\")\n\tstatic i18nBundle: I18nBundle;\n\n\tasync formElementAnchor() {\n\t\treturn (await this.getFocusDomRefAsync() as UI5Element)?.getFocusDomRefAsync();\n\t}\n\n\tget formValidityMessage() {\n\t\tconst validity = this.formValidity;\n\n\t\tif (validity.patternMismatch) {\n\t\t\treturn StepInput.i18nBundle.getText(STEPINPUT_PATTER_MISSMATCH, this.valuePrecision);\n\t\t}\n\t\tif (validity.rangeUnderflow) {\n\t\t\treturn StepInput.i18nBundle.getText(STEPINPUT_RANGEUNDERFLOW, this.min as number);\n\t\t}\n\t\tif (validity.rangeOverflow) {\n\t\t\treturn StepInput.i18nBundle.getText(STEPINPUT_RANGEOVERFLOW, this.max as number);\n\t\t}\n\n\t\treturn \"\"; // No error\n\t}\n\n\tget formValidity(): ValidityStateFlags {\n\t\treturn {\n\t\t\tpatternMismatch: this.value !== 0 && !this._isValueWithCorrectPrecision,\n\t\t\trangeOverflow: this.max !== undefined && this.value >= this.max,\n\t\t\trangeUnderflow: this.min !== undefined && this.value <= this.min,\n\t\t};\n\t}\n\n\tget formFormattedValue(): FormData | string | null {\n\t\treturn this.value.toString();\n\t}\n\n\tget type() {\n\t\treturn InputType.Text;\n\t}\n\n\t// icons-related\n\n\tget decIconTitle() {\n\t\treturn StepInput.i18nBundle.getText(STEPINPUT_DEC_ICON_TITLE);\n\t}\n\n\tget incIconTitle() {\n\t\treturn StepInput.i18nBundle.getText(STEPINPUT_INC_ICON_TITLE);\n\t}\n\n\tget _decIconClickable() {\n\t\treturn !this._decIconDisabled && !this.readonly && !this.disabled;\n\t}\n\n\tget _incIconClickable() {\n\t\treturn !this._incIconDisabled && !this.readonly && !this.disabled;\n\t}\n\n\tget _isFocused() {\n\t\treturn this.focused;\n\t}\n\n\tget _displayValue() {\n\t\tif (this._languageChanged) {\n\t\t\tthis._languageChanged = false;\n\t\t\tthis.valueState = ValueState.None; // to reset the value state visual\n\t\t\treturn this._formatNumber(this.value);\n\t\t}\n\t\t// For the cases when there is set value precision but the input value is not with correct precision we don't need to format it\n\t\tconst value = this.input?.value && !this._isValueWithCorrectPrecision ? this.input.value : this._formatNumber(this.value);\n\t\tif ((this.value === 0) || (Number.isInteger(this.value))) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif (this.input && this.value === this._parseNumber(this.input.value)) { // For the cases where the number is fractional and is ending with 0s.\n\t\t\treturn this.input.value;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tget accInfo(): InputAccInfo {\n\t\treturn {\n\t\t\t\"ariaRequired\": this.required,\n\t\t\t\"ariaLabel\": getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this),\n\t\t};\n\t}\n\n\tget inputAttributes() {\n\t\treturn {\n\t\t\tmin: this.min === undefined ? undefined : this.min,\n\t\t\tmax: this.max === undefined ? undefined : this.max,\n\t\t\tstep: this.step,\n\t\t};\n\t}\n\n\tonBeforeRendering() {\n\t\tthis._setButtonState();\n\t}\n\tonEnterDOM() {\n\t\tthis._setupLanguageChangeHandler();\n\t}\n\n\tonExitDOM() {\n\t\tthis._cleanupLanguageChangeHandler();\n\t}\n\n\t_setupLanguageChangeHandler() {\n\t\tif (this._languageChangeHandler) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._languageChangeHandler = () => {\n\t\t\tthis._formatter = undefined;\n\t\t\tthis._languageChanged = true;\n\t\t\tthis._delimiter = undefined;\n\t\t\tthis._groupSeparator = undefined;\n\n\t\t\treturn Promise.resolve();\n\t\t};\n\t\tattachLanguageChange(this._languageChangeHandler);\n\t}\n\n\t_cleanupLanguageChangeHandler() {\n\t\tif (this._languageChangeHandler) {\n\t\t\tdetachLanguageChange(this._languageChangeHandler);\n\t\t\tthis._languageChangeHandler = undefined;\n\t\t}\n\t}\n\n\tget formatter(): NumberFormat {\n\t\tif (!this._formatter) {\n\t\t\tthis._formatter = NumberFormat.getFloatInstance({\n\t\t\t\tdecimals: this.valuePrecision,\n\t\t\t});\n\t\t}\n\n\t\treturn this._formatter;\n\t}\n\n\tget delimiter() {\n\t\tif (!this._delimiter) {\n\t\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\t\tthis._delimiter = localeData.getNumberSymbol(\"decimal\") || \".\";\n\t\t}\n\n\t\treturn this._delimiter;\n\t}\n\n\tget groupSeparator() {\n\t\tif (!this._groupSeparator) {\n\t\t\tconst localeData = getCachedLocaleDataInstance(getLocale());\n\t\t\tthis._groupSeparator = localeData.getNumberSymbol(\"group\") || \",\";\n\t\t}\n\n\t\treturn this._groupSeparator;\n\t}\n\n\tget input(): Input {\n\t\treturn this.shadowRoot!.querySelector<Input>(\"[ui5-input]\")!;\n\t}\n\n\tget innerInput(): HTMLInputElement {\n\t\treturn this.input.shadowRoot!.querySelector<HTMLInputElement>(\"input\")!;\n\t}\n\n\tget inputOuter() {\n\t\treturn this.shadowRoot!.querySelector(\".ui5-step-input-input\")!;\n\t}\n\n\t_onButtonFocusOut() {\n\t\tsetTimeout(() => {\n\t\t\tif (!this._inputFocused && !this.shadowRoot!.activeElement) {\n\t\t\t\tthis.inputOuter.removeAttribute(\"focused\");\n\t\t\t}\n\t\t}, 0);\n\t}\n\n\t_onInput(e: CustomEvent<InputEventDetail>) {\n\t\tconst prevented = !this.fireDecoratorEvent(\"input\", { inputType: e.detail.inputType });\n\n\t\tif (prevented) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\t_onInputFocusIn() {\n\t\tthis._inputFocused = true;\n\t}\n\n\t_onInputFocusOut() {\n\t\tthis._inputFocused = false;\n\t\tthis._onInputChange();\n\t}\n\n\t_onMouseWheel(e: WheelEvent) {\n\t\tif (this.disabled || this.readonly || !this._isFocused) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tconst isScrollUp = e.deltaY < 0;\n\t\tconst modifier = isScrollUp ? this.step : -this.step;\n\t\tthis._modifyValue(modifier, true);\n\t}\n\n\t_setButtonState() {\n\t\tthis._decIconDisabled = this.min !== undefined && this.value <= this.min;\n\t\tthis._incIconDisabled = this.max !== undefined && this.value >= this.max;\n\t}\n\n\t_validate() {\n\t\tif (this._initialValueState === undefined) {\n\t\t\tthis._initialValueState = this.valueState;\n\t\t}\n\n\t\tthis._updateValueState();\n\t}\n\n\t_updateValueState() {\n\t\tconst isWithinRange = (this.min === undefined || this._parseNumber(this.input.value) >= this.min)\n\t\t\t\t\t\t\t && (this.max === undefined || this._parseNumber(this.input.value) <= this.max);\n\t\tconst isValueWithCorrectPrecision = this._isValueWithCorrectPrecision;\n\t\tconst previousValueState = this.valueState;\n\t\tconst isValid = isWithinRange && isValueWithCorrectPrecision;\n\n\t\tthis.valueState = isValid ? ValueState.None : ValueState.Negative;\n\n\t\tconst eventPrevented = !this.fireDecoratorEvent(\"value-state-change\", {\n\t\t\tvalueState: this.valueState,\n\t\t\tvalid: isValid,\n\t\t});\n\n\t\tif (eventPrevented) {\n\t\t\tthis.valueState = previousValueState;\n\t\t}\n\t}\n\n\t_preciseValue(value: number) {\n\t\tconst pow = 10 ** this.valuePrecision;\n\t\treturn Math.round(value * pow) / pow;\n\t}\n\n\t_fireChangeEvent() {\n\t\tif (this._previousValue !== this.value) {\n\t\t\tthis._previousValue = this.value;\n\t\t\tthis.fireDecoratorEvent(\"change\");\n\t\t}\n\t}\n\n\t/**\n\t * Value modifier - modifies the value of the component, validates the new value and enables/disables increment and\n\t * decrement buttons according to the value and min/max values (if set). Fires `change` event when requested\n\t * @private\n\t * @param modifier modifies the value of the component with the given modifier (positive or negative)\n\t * @param fireChangeEvent if `true`, fires `change` event when the value is changed\n\t */\n\t_modifyValue(modifier: number, fireChangeEvent = false) {\n\t\tlet value;\n\t\tvalue = this.value + modifier;\n\t\tif (this.min !== undefined && value < this.min) {\n\t\t\tvalue = this.min;\n\t\t}\n\t\tif (this.max !== undefined && value > this.max) {\n\t\t\tvalue = this.max;\n\t\t}\n\t\tvalue = this._preciseValue(value);\n\t\tif (value !== this.value) {\n\t\t\tthis.value = value;\n\t\t\tthis.input.value = this._formatNumber(value);\n\t\t\tthis._validate();\n\t\t\tthis._setButtonState();\n\t\t\tthis.focused = true;\n\t\t\tthis.inputOuter.setAttribute(\"focused\", \"\");\n\t\t\tif (fireChangeEvent) {\n\t\t\t\tthis._fireChangeEvent();\n\t\t\t} else {\n\t\t\t\tthis.input.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n \t * Formats a number with thousands separator based on current locale\n \t * @private\n \t */\n\t_formatNumber(value: number): string {\n\t\treturn this.formatter.format(value);\n\t}\n\n\t/**\n \t * Parses formatted number string back to numeric value\n \t * @private\n \t*/\n\t_parseNumber(formattedValue: string): number {\n\t\treturn this.formatter.parse(formattedValue) as number;\n\t}\n\n\t_incValue() {\n\t\tif (this._incIconClickable && !this.disabled && !this.readonly) {\n\t\t\tthis._modifyValue(this.step, true);\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\t_decValue() {\n\t\tif (this._decIconClickable && !this.disabled && !this.readonly) {\n\t\t\tthis._modifyValue(-this.step, true);\n\t\t\tthis._previousValue = this.value;\n\t\t}\n\t}\n\n\tget _isValueWithCorrectPrecision() {\n\t\tconst delimiter = this.delimiter;\n\t\t// check if the value will be displayed with correct precision\n\t\t// _displayValue has special formatting logic\n\t\tif (this.valuePrecision === 0 && !this.input?.value.includes(delimiter) && ((this.value === 0) || (Number.isInteger(this.value)))) {\n\t\t\t// integers and zero will be formatted with toFixed, so thex y're always valid\n\t\t\treturn true;\n\t\t}\n\t\tconst numberParts = this.input?.value?.split(delimiter);\n\t\tconst decimalPartLength = numberParts?.length > 1 ? numberParts[1].length : 0;\n\n\t\treturn decimalPartLength === this.valuePrecision;\n\t}\n\n\t_onInputChange() {\n\t\tthis._setDefaultInputValueIfNeeded();\n\t\tconst updatedValue = this._removeGroupSeparators(this.input.value);\n\t\tconst inputValue = this._parseNumber(updatedValue);\n\t\tif (this._isValueChanged(inputValue)) {\n\t\t\tthis._updateValueAndValidate(Number.isNaN(inputValue) ? this.min || 0 : inputValue);\n\t\t\tthis.innerInput.value = this.input.value;\n\t\t}\n\t}\n\n\t_setDefaultInputValueIfNeeded() {\n\t\tif (this.input.value === \"\") {\n\t\t\tconst defaultValue = this._formatNumber(this.min || 0);\n\t\t\tthis.input.value = defaultValue;\n\t\t\tthis.innerInput.value = defaultValue; // we need to update inner input value as well, to avoid empty input scenario\n\t\t}\n\t}\n\n\t_isValueChanged(inputValue: number) {\n\t\tconst isValueWithCorrectPrecision = this._isValueWithCorrectPrecision;\n\t\t// Treat values as distinct when modified to match a specific precision (e.g., from 3.4000 to 3.40),\n\t\t// even if JavaScript sees them as equal, to correctly update valueState based on expected valuePrecision.\n\t\tconst isPrecisionCorrectButValueStateError = isValueWithCorrectPrecision && this.valueState === ValueState.Negative;\n\n\t\treturn this.value !== this._previousValue\n\t\t\t|| this.value !== inputValue\n\t\t\t|| inputValue === 0\n\t\t\t|| !isValueWithCorrectPrecision\n\t\t\t|| isPrecisionCorrectButValueStateError\n\t\t\t|| Number.isNaN(inputValue);\n\t}\n\n\t_updateValueAndValidate(inputValue: number) {\n\t\tthis.value = inputValue;\n\t\tthis._validate();\n\t\tthis._setButtonState();\n\t\tthis._fireChangeEvent();\n\t}\n\n\t_onfocusin() {\n\t\tthis.focused = true;\n\t\tthis._previousValue = this.value;\n\t}\n\n\t_onfocusout() {\n\t\tthis.focused = false;\n\t\tthis._previousValue = undefined;\n\t}\n\n\t_onInputRequestSubmit() {\n\t\tif (this._internals.form) {\n\t\t\tsubmitForm(this);\n\t\t}\n\t}\n\n\t_onkeydown(e: KeyboardEvent) {\n\t\tlet preventDefault = true;\n\t\tif (this.disabled || this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isEnter(e)) {\n\t\t\tthis._onInputChange();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isUp(e)) {\n\t\t\t// step up\n\t\t\tthis._modifyValue(this.step);\n\t\t} else if (isDown(e)) {\n\t\t\t// step down\n\t\t\tthis._modifyValue(-this.step);\n\t\t} else if (isEscape(e)) {\n\t\t\t// return previous value\n\t\t\tif (this._previousValue === undefined) {\n\t\t\t\tthis._previousValue = this.value;\n\t\t\t}\n\t\t\tthis.value = this._previousValue;\n\t\t\tthis.input.value = this.value.toFixed(this.valuePrecision);\n\t\t} else if (this.max !== undefined && (isPageUpShift(e) || isUpShiftCtrl(e))) {\n\t\t\t// step to max\n\t\t\tthis._modifyValue(this.max - this.value);\n\t\t} else if (this.min !== undefined && (isPageDownShift(e) || isDownShiftCtrl(e))) {\n\t\t\t// step to min\n\t\t\tthis._modifyValue(this.min - this.value);\n\t\t} else if (!isUpCtrl(e) && !isDownCtrl(e) && !isUpShift(e) && !isDownShift(e)) {\n\t\t\tpreventDefault = false;\n\t\t}\n\n\t\tif (e.key && e.key.length !== 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst caretPosition = this._getCaretPosition();\n\t\tconst inputValue = this.innerInput.value;\n\t\tconst typedValue = this._getValueOnkeyDown(e, inputValue, caretPosition!);\n\t\tconst parsedValue = this._parseNumber(typedValue);\n\t\tconst isValidTypedValue = this._isInputValueValid(typedValue, parsedValue);\n\n\t\tif (preventDefault || !isValidTypedValue) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (caretPosition === 0 && isMinus(e)) {\n\t\t\tthis._updateValueAndValidate(parsedValue);\n\t\t}\n\t}\n\n\t_getCaretPosition() {\n\t\treturn this.input.getDomRef()!.querySelector(\"input\")!.selectionStart;\n\t}\n\n\t_getValueOnkeyDown(e: KeyboardEvent, inputValue: string, cursorPosition?: number) {\n\t\tconst typedValue = `${inputValue.substring(0, cursorPosition)}${e.key}${inputValue.substring(cursorPosition!)}`;\n\t\tconst updatedValue = this._removeGroupSeparators(typedValue);\n\t\treturn updatedValue;\n\t}\n\n\t_removeGroupSeparators(value: string) {\n\t\tconst groupSeparator = this.groupSeparator;\n\t\treturn value.replaceAll(groupSeparator, \"\");\n\t}\n\n\t_isInputValueValid(typedValue: string, parsedValue: number) {\n\t\treturn !Number.isNaN(parsedValue) && !/, {2,}/.test(typedValue);\n\t}\n\n\t_decSpin(e: MouseEvent) {\n\t\tif (this._isFocused || this._decIconDisabled) {\n\t\t\te.preventDefault();\n\t\t}\n\t\tif (!this._decIconDisabled) {\n\t\t\tthis._spinValue(false, true);\n\t\t} else {\n\t\t\tthis.input.focus();\n\t\t}\n\t}\n\n\t_incSpin(e: MouseEvent) {\n\t\tif (this._isFocused || this._incIconDisabled) {\n\t\t\te.preventDefault();\n\t\t}\n\t\tif (!this._incIconDisabled) {\n\t\t\tthis._spinValue(true, true);\n\t\t} else {\n\t\t\tthis.input.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Calculates the time which should be waited until _spinValue function is called.\n\t */\n\t_calcWaitTimeout() {\n\t\tthis._speed *= ACCELERATION;\n\t\tthis._waitTimeout = ((this._waitTimeout - this._speed) < MIN_WAIT_TIMEOUT ? MIN_WAIT_TIMEOUT : (this._waitTimeout - this._speed));\n\t\treturn this._waitTimeout;\n\t}\n\n\t/**\n\t * Called when the increment or decrement button is pressed and held to set new value.\n\t * @private\n\t * @param increment - is this the increment button or not so the values should be spin accordingly up or down\n\t * @param resetVariables - whether to reset the spin-related variables or not\n\t */\n\t_spinValue(increment: boolean, resetVariables = false) {\n\t\tif (resetVariables) {\n\t\t\tthis._waitTimeout = INITIAL_WAIT_TIMEOUT;\n\t\t\tthis._speed = INITIAL_SPEED;\n\t\t\tthis._btnDown = true;\n\t\t}\n\t\tthis._spinTimeoutId = setTimeout(() => {\n\t\t\tif (this._btnDown) {\n\t\t\t\tthis._spinStarted = true;\n\t\t\t\tthis._modifyValue(increment ? this.step : -this.step);\n\t\t\t\tthis._setButtonState();\n\t\t\t\tif ((!this._incIconDisabled && increment) || (!this._decIconDisabled && !increment)) {\n\t\t\t\t\tthis._spinValue(increment);\n\t\t\t\t} else {\n\t\t\t\t\tthis._resetSpin();\n\t\t\t\t\tthis._fireChangeEvent();\n\t\t\t\t}\n\t\t\t}\n\t\t}, this._calcWaitTimeout());\n\t}\n\n\t/**\n\t* Resets spin process\n\t*/\n\t_resetSpin() {\n\t\tclearTimeout(this._spinTimeoutId);\n\t\tthis._btnDown = false;\n\t\tthis._spinStarted = false;\n\t}\n\n\t/**\n\t* Resets spin process when mouse outs + or - buttons\n\t*/\n\t_resetSpinOut() {\n\t\tif (this._btnDown) {\n\t\t\tthis._resetSpin();\n\t\t\tthis._fireChangeEvent();\n\t\t}\n\t}\n}\nStepInput.define();\n\nexport default StepInput;\nexport type {\n\tStepInputValueStateChangeEventDetail,\n};\n"]}
|
package/dist/Switch.d.ts
CHANGED
|
@@ -172,5 +172,7 @@ declare class Switch extends UI5Element implements IFormInputElement {
|
|
|
172
172
|
get effectiveAriaReadonly(): "true" | undefined;
|
|
173
173
|
get effectiveAriaDisabled(): "true" | undefined;
|
|
174
174
|
get ariaLabelText(): string | undefined;
|
|
175
|
+
get ariaDescribedBy(): string | undefined;
|
|
176
|
+
get ariaDescribedByText(): string;
|
|
175
177
|
}
|
|
176
178
|
export default Switch;
|
package/dist/Switch.js
CHANGED
|
@@ -17,7 +17,7 @@ import "@ui5/webcomponents-icons/dist/accept.js";
|
|
|
17
17
|
import "@ui5/webcomponents-icons/dist/decline.js";
|
|
18
18
|
import "@ui5/webcomponents-icons/dist/less.js";
|
|
19
19
|
import SwitchDesign from "./types/SwitchDesign.js";
|
|
20
|
-
import { FORM_CHECKABLE_REQUIRED, SWITCH_ON, SWITCH_OFF, } from "./generated/i18n/i18n-defaults.js";
|
|
20
|
+
import { FORM_CHECKABLE_REQUIRED, SWITCH_ON, SWITCH_OFF, ACC_STATE_READONLY, } from "./generated/i18n/i18n-defaults.js";
|
|
21
21
|
// Template
|
|
22
22
|
import SwitchTemplate from "./SwitchTemplate.js";
|
|
23
23
|
// Styles
|
|
@@ -224,6 +224,12 @@ let Switch = Switch_1 = class Switch extends UI5Element {
|
|
|
224
224
|
get ariaLabelText() {
|
|
225
225
|
return getEffectiveAriaLabelText(this) || getAssociatedLabelForTexts(this) || undefined;
|
|
226
226
|
}
|
|
227
|
+
get ariaDescribedBy() {
|
|
228
|
+
return this.readonly ? `${this._id}-readonly-desc` : undefined;
|
|
229
|
+
}
|
|
230
|
+
get ariaDescribedByText() {
|
|
231
|
+
return this.readonly ? Switch_1.i18nBundle.getText(ACC_STATE_READONLY) : "";
|
|
232
|
+
}
|
|
227
233
|
};
|
|
228
234
|
__decorate([
|
|
229
235
|
property()
|