From abab42622440e828634dfe0834ff81482a23f163 Mon Sep 17 00:00:00 2001 From: Stefan Dimitrov Date: Mon, 5 Jan 2026 15:01:28 +0200 Subject: [PATCH 1/7] feat(ui5-input/ui5-multi-input): provide built-in filtering --- packages/main/cypress/specs/Input.cy.tsx | 175 +++++++++++++++++- packages/main/src/Input.ts | 72 ++++++- .../main/src/features/InputSuggestions.ts | 14 +- packages/main/test/pages/Input.html | 16 ++ 4 files changed, 262 insertions(+), 15 deletions(-) diff --git a/packages/main/cypress/specs/Input.cy.tsx b/packages/main/cypress/specs/Input.cy.tsx index 6f5a161aef82..a067f4322b72 100644 --- a/packages/main/cypress/specs/Input.cy.tsx +++ b/packages/main/cypress/specs/Input.cy.tsx @@ -556,21 +556,21 @@ describe("Input general interaction", () => { cy.document().then(doc => { const input = doc.querySelector("#threshold-input")!; - + input.addEventListener("input", () => { const value = input.value; - + while (input.lastChild) { input.removeChild(input.lastChild); } - + if (value.length >= THRESHOLD) { input.showSuggestions = true; - - const filtered = countries.filter(country => + + const filtered = countries.filter(country => country.toUpperCase().indexOf(value.toUpperCase()) === 0 ); - + filtered.forEach(country => { const item = document.createElement("ui5-suggestion-item"); item.setAttribute("text", country); @@ -3094,3 +3094,166 @@ describe("Validation inside a form", () => { .should("have.been.calledOnce"); }); }); + +describe("Input built-in filtering", () => { + it("StartsWith filtering", () => { + cy.mount( + + + + + ); + cy.get("[ui5-input]") + .as("input") + .shadow() + .find("input") + .realClick() + .realType("I"); + + cy.get("@input") + .shadow() + .find("[ui5-responsive-popover]") + .as("popover") + .ui5ResponsivePopoverOpened(); + + cy.get("@input") + .find("[ui5-suggestion-item]") + .eq(0) + .should("be.visible"); + + cy.get("@input") + .find("[ui5-suggestion-item]") + .eq(1) + .should("have.attr", "hidden"); + + cy.get("@input") + .shadow() + .find("input") + .realClick() + .realPress("Backspace"); + + cy.get("@popover") + .ui5ResponsivePopoverClosed(); + + cy.get("@input") + .shadow() + .find("input") + .realType("G"); + + cy.get("@popover") + .ui5ResponsivePopoverOpened(); + + cy.get("@input") + .find("[ui5-suggestion-item]") + .eq(0) + .should("have.attr", "hidden"); + + cy.get("@input") + .find("[ui5-suggestion-item]") + .eq(1) + .should("be.visible"); + }); + it("Contains filtering", () => { + cy.mount( + + + + + ); + cy.get("[ui5-input]") + .as("input") + .shadow() + .find("input") + .realClick() + .realType("o"); + + cy.get("@input") + .shadow() + .find("[ui5-responsive-popover]") + .as("popover") + .ui5ResponsivePopoverOpened(); + + cy.get("@input") + .find("[ui5-suggestion-item]") + .eq(0) + .should("be.visible"); + + cy.get("@input") + .find("[ui5-suggestion-item]") + .eq(1) + .should("be.visible"); + + cy.get("@input") + .shadow() + .find("input") + .realClick() + .realPress("Backspace"); + + cy.get("@popover") + .ui5ResponsivePopoverClosed(); + + cy.get("@input") + .shadow() + .find("input") + .realType("l"); + + cy.get("@popover") + .ui5ResponsivePopoverOpened(); + + cy.get("@input") + .find("[ui5-suggestion-item]") + .eq(0) + .should("have.attr", "hidden"); + + cy.get("@input") + .find("[ui5-suggestion-item]") + .eq(1) + .should("be.visible"); + }); + it("hides suggestion group when it has no matching items", () => { + cy.mount( + + + + + + + + + + + ); + cy.get("[ui5-input]") + .as("input") + .shadow() + .find("input") + .realClick() + .realType("o"); + + cy.get("@input") + .shadow() + .find("[ui5-responsive-popover]") + .as("popover") + .ui5ResponsivePopoverOpened(); + + cy.get("@input") + .find("[ui5-suggestion-item-group]") + .eq(0) + .should("be.visible"); + + cy.get("@input") + .find("[ui5-suggestion-item-group]") + .eq(1) + .should("be.visible"); + + cy.get("@input") + .shadow() + .find("input") + .realType("l"); + + cy.get("@input") + .find("[ui5-suggestion-item-group]") + .eq(1) + .should("have.attr", "hidden"); + }); +}); diff --git a/packages/main/src/Input.ts b/packages/main/src/Input.ts index bfc26327cf29..c0dd7b378809 100644 --- a/packages/main/src/Input.ts +++ b/packages/main/src/Input.ts @@ -65,7 +65,7 @@ import type { IIcon } from "./Icon.js"; // Templates import InputTemplate from "./InputTemplate.js"; -import { StartsWith } from "./Filters.js"; +import * as Filters from "./Filters.js"; import { VALUE_STATE_SUCCESS, @@ -100,6 +100,7 @@ import type { ListItemClickEventDetail, ListSelectionChangeEventDetail } from ". import type ResponsivePopover from "./ResponsivePopover.js"; import type InputKeyHint from "./types/InputKeyHint.js"; import type InputComposition from "./features/InputComposition.js"; +import ComboBoxFilter from "./types/ComboBoxFilter.js"; /** * Interface for components that represent a suggestion item, usable in `ui5-input` @@ -492,6 +493,14 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement @property({ type: Boolean }) open = false; + /** + * Defines the filter type of the component. + * @default "None" + * @public + */ + @property() + filter: `${ComboBoxFilter}` = ComboBoxFilter.None; + /** * Defines whether the clear icon is visible. * @default false @@ -787,6 +796,10 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement return; } + if (this.filter !== ComboBoxFilter.None) { + this._filterItems(this.typedInValue); + } + const autoCompletedChars = innerInput.selectionEnd! - innerInput.selectionStart!; // Typehead causes issues on Android devices, so we disable it for now @@ -911,8 +924,9 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement get currentItemIndex() { const allItems = this.Suggestions?._getItems() as IInputSuggestionItemSelectable[]; - const currentItem = allItems.find(item => { return item.selected || item.focused; }); - const indexOfCurrentItem = currentItem ? allItems.indexOf(currentItem) : -1; + const visibleItems = allItems.filter(item => !item.hidden); + const currentItem = visibleItems.find(item => { return item.selected || item.focused; }); + const indexOfCurrentItem = currentItem ? visibleItems.indexOf(currentItem) : -1; return indexOfCurrentItem; } @@ -1310,11 +1324,15 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement this.Suggestions.updateSelectedItemPosition(-1); } + if (this.filter && (e.target as HTMLInputElement).value === "") { + this.open = false; + } + this.isTyping = true; } _startsWithMatchingItems(str: string): Array { - return StartsWith(str, this._selectableItems, "text"); + return Filters.StartsWith(str, this._selectableItems, "text"); } _getFirstMatchingItem(current: string): IInputSuggestionItemSelectable | undefined { @@ -1337,6 +1355,52 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement item.selected = true; } + _filterItems(value: string) { + let matchingItems: Array = []; + const groupItems = this._flattenItems.filter(item => this._isGroupItem(item)); + + this._resetItemVisibility(); + + if (groupItems.length) { + matchingItems = this._filterGroups(this.filter, groupItems); + } else { + matchingItems = (Filters[this.filter] || Filters.StartsWith)(value, this._selectableItems, "text"); + } + this._selectableItems.forEach(item => { + item.hidden = !matchingItems.includes(item); + }); + + if (matchingItems.length === 0) { + this.open = false; + } + } + + _filterGroups(filterType: `${ComboBoxFilter}`, groupItems: IInputSuggestionItem[]) { + const filteredGroupItems: IInputSuggestionItem[] = []; + groupItems.forEach(groupItem => { + const currentGroupItems = (Filters[filterType] || Filters.StartsWith)(this.typedInValue, groupItem.items ?? [], "text"); + filteredGroupItems.push(...currentGroupItems); + if (currentGroupItems.length === 0) { + groupItem.hidden = true; + } else { + groupItem.hidden = false; + } + }); + return filteredGroupItems; + } + + _resetItemVisibility() { + this._flattenItems.forEach(item => { + if (this._isGroupItem(item)) { + item.items?.forEach(i => { + i.hidden = false; + }); + return; + } + item.hidden = false; + }); + } + _handleTypeAhead(item: IInputSuggestionItemSelectable) { const value = item.text ? item.text : ""; diff --git a/packages/main/src/features/InputSuggestions.ts b/packages/main/src/features/InputSuggestions.ts index e6511090ee50..1969423f6ae8 100644 --- a/packages/main/src/features/InputSuggestions.ts +++ b/packages/main/src/features/InputSuggestions.ts @@ -130,7 +130,7 @@ class Suggestions { onPageDown(e: KeyboardEvent) { e.preventDefault(); - const items = this._getItems(); + const items = this.visibleItems; if (!items) { return true; @@ -302,7 +302,7 @@ class Suggestions { } _selectPreviousItem() { - const items = this._getItems(); + const items = this.visibleItems; const previousSelectedIdx = this.selectedItemIndex; if (previousSelectedIdx === -1 || previousSelectedIdx === null) { @@ -325,12 +325,16 @@ class Suggestions { this._moveItemSelection(previousSelectedIdx, --this.selectedItemIndex); } + get visibleItems() { + return this._getItems().filter(item => !item.hidden); + } + _moveItemSelection(previousIdx: number, nextIdx: number) { - const items = this._getItems(); + const items = this.visibleItems; const currentItem = items[nextIdx]; const previousItem = items[previousIdx]; const nonGroupItems = this._getNonGroupItems(); - const isGroupItem = currentItem.hasAttribute("ui5-suggestion-item-group"); + const isGroupItem = currentItem?.hasAttribute("ui5-suggestion-item-group"); if (!currentItem) { return; @@ -338,7 +342,7 @@ class Suggestions { this.component.focused = false; - const selectedItem = this._getItems()[this.selectedItemIndex]; + const selectedItem = this.visibleItems[this.selectedItemIndex]; this.accInfo = { isGroup: isGroupItem, diff --git a/packages/main/test/pages/Input.html b/packages/main/test/pages/Input.html index 14f166bca1c1..12b97241c8c0 100644 --- a/packages/main/test/pages/Input.html +++ b/packages/main/test/pages/Input.html @@ -551,6 +551,22 @@

Input - open suggestions picker

Input with just accessible description +
+
+ Input with built-in filtering (Contains) + + + + + + + + + + + + +

Input Composition

From 4ff0412710c6936db61cd596c987fe377eab4c37 Mon Sep 17 00:00:00 2001 From: Stefan Dimitrov Date: Tue, 6 Jan 2026 17:49:47 +0200 Subject: [PATCH 2/7] feat(ui5-input/ui5-multi-input): resolve comment and handle contains selectionRange --- packages/main/src/Input.ts | 36 +++++++++++++++---- .../main/src/types/InputSuggestionsFilter.ts | 31 ++++++++++++++++ 2 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 packages/main/src/types/InputSuggestionsFilter.ts diff --git a/packages/main/src/Input.ts b/packages/main/src/Input.ts index c0dd7b378809..701e487d30ca 100644 --- a/packages/main/src/Input.ts +++ b/packages/main/src/Input.ts @@ -100,7 +100,7 @@ import type { ListItemClickEventDetail, ListSelectionChangeEventDetail } from ". import type ResponsivePopover from "./ResponsivePopover.js"; import type InputKeyHint from "./types/InputKeyHint.js"; import type InputComposition from "./features/InputComposition.js"; -import ComboBoxFilter from "./types/ComboBoxFilter.js"; +import InputSuggestionsFilter from "./types/InputSuggestionsFilter.js"; /** * Interface for components that represent a suggestion item, usable in `ui5-input` @@ -499,7 +499,7 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement * @public */ @property() - filter: `${ComboBoxFilter}` = ComboBoxFilter.None; + filter: `${InputSuggestionsFilter}` = InputSuggestionsFilter.None; /** * Defines whether the clear icon is visible. @@ -796,7 +796,7 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement return; } - if (this.filter !== ComboBoxFilter.None) { + if (this.filter !== InputSuggestionsFilter.None) { this._filterItems(this.typedInValue); } @@ -833,7 +833,13 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement } if (this.typedInValue.length && this.value.length) { - innerInput.setSelectionRange(this.typedInValue.length, this.value.length); + // "Contains" filtering requires custom selection range handling. + // Example: "e" → "Belgium" (item does not start with typed value, so select all). + if (this.filter === InputSuggestionsFilter.Contains) { + this._adjustContainsSelectionRange(); + } else { + innerInput.setSelectionRange(this.typedInValue.length, this.value.length); + } } this.fireDecoratorEvent("type-ahead"); @@ -848,6 +854,22 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement } } + _adjustContainsSelectionRange() { + const innerInput = this.getInputDOMRefSync()!; + const visibleItems = this.Suggestions?._getItems().filter(item => !item.hidden) as IInputSuggestionItemSelectable[]; + const currentItem = visibleItems?.find(item => { return item.selected || item.focused; }); + const groupItems = this._flattenItems.filter(item => this._isGroupItem(item)); + + if (currentItem && !groupItems.includes(currentItem)) { + const doesItemStartWithTypedValue = currentItem?.text?.toLowerCase().startsWith(this.typedInValue.toLowerCase()); + if (doesItemStartWithTypedValue) { + innerInput.setSelectionRange(this.typedInValue.length, this.value.length); + } else { + innerInput.setSelectionRange(0, this.value.length); + } + } + } + _onkeydown(e: KeyboardEvent) { this._isKeyNavigation = true; this._shouldAutocomplete = !this.noTypeahead && !(isBackSpace(e) || isDelete(e) || isEscape(e)); @@ -1364,7 +1386,7 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement if (groupItems.length) { matchingItems = this._filterGroups(this.filter, groupItems); } else { - matchingItems = (Filters[this.filter] || Filters.StartsWith)(value, this._selectableItems, "text"); + matchingItems = (Filters[this.filter])(value, this._selectableItems, "text"); } this._selectableItems.forEach(item => { item.hidden = !matchingItems.includes(item); @@ -1375,10 +1397,10 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement } } - _filterGroups(filterType: `${ComboBoxFilter}`, groupItems: IInputSuggestionItem[]) { + _filterGroups(filterType: `${InputSuggestionsFilter}`, groupItems: IInputSuggestionItem[]) { const filteredGroupItems: IInputSuggestionItem[] = []; groupItems.forEach(groupItem => { - const currentGroupItems = (Filters[filterType] || Filters.StartsWith)(this.typedInValue, groupItem.items ?? [], "text"); + const currentGroupItems = (Filters[filterType])(this.typedInValue, groupItem.items ?? [], "text"); filteredGroupItems.push(...currentGroupItems); if (currentGroupItems.length === 0) { groupItem.hidden = true; diff --git a/packages/main/src/types/InputSuggestionsFilter.ts b/packages/main/src/types/InputSuggestionsFilter.ts new file mode 100644 index 000000000000..58d6820dffe0 --- /dev/null +++ b/packages/main/src/types/InputSuggestionsFilter.ts @@ -0,0 +1,31 @@ +/** + * Different filtering types of the Input. + * @public + */ + enum InputSuggestionsFilter { + /** + * Defines filtering by first symbol of each word of item's text. + * @public + */ + StartsWithPerTerm = "StartsWithPerTerm", + + /** + * Defines filtering by starting symbol of item's text. + * @public + */ + StartsWith = "StartsWith", + + /** + * Defines contains filtering. + * @public + */ + Contains = "Contains", + + /** + * Removes any filtering applied while typing + * @public + */ + None = "None", +} + +export default InputSuggestionsFilter; From 93f3a6e97426c3817ff17d241b742716044382b9 Mon Sep 17 00:00:00 2001 From: Stefan Dimitrov Date: Tue, 6 Jan 2026 17:57:03 +0200 Subject: [PATCH 3/7] feat(ui5-input/multi-input): fix lint --- .../main/src/types/InputSuggestionsFilter.ts | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/packages/main/src/types/InputSuggestionsFilter.ts b/packages/main/src/types/InputSuggestionsFilter.ts index 58d6820dffe0..8c104da855df 100644 --- a/packages/main/src/types/InputSuggestionsFilter.ts +++ b/packages/main/src/types/InputSuggestionsFilter.ts @@ -1,31 +1,31 @@ -/** - * Different filtering types of the Input. - * @public - */ - enum InputSuggestionsFilter { - /** - * Defines filtering by first symbol of each word of item's text. - * @public - */ - StartsWithPerTerm = "StartsWithPerTerm", - - /** - * Defines filtering by starting symbol of item's text. - * @public - */ - StartsWith = "StartsWith", - - /** - * Defines contains filtering. - * @public - */ - Contains = "Contains", - - /** - * Removes any filtering applied while typing - * @public - */ - None = "None", -} - -export default InputSuggestionsFilter; +/** + * Different filtering types of the Input. + * @public + */ + enum InputSuggestionsFilter { + /** + * Defines filtering by first symbol of each word of item's text. + * @public + */ + StartsWithPerTerm = "StartsWithPerTerm", + + /** + * Defines filtering by starting symbol of item's text. + * @public + */ + StartsWith = "StartsWith", + + /** + * Defines contains filtering. + * @public + */ + Contains = "Contains", + + /** + * Removes any filtering applied while typing + * @public + */ + None = "None", +} + +export default InputSuggestionsFilter; From 275faef209db394fcde37371e10c42e0eb488b75 Mon Sep 17 00:00:00 2001 From: Stefan Dimitrov Date: Wed, 14 Jan 2026 16:13:10 +0200 Subject: [PATCH 4/7] feat(ui5-input/ui5-multi-input): resolve comments --- packages/main/src/Input.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/main/src/Input.ts b/packages/main/src/Input.ts index 701e487d30ca..ebcf22dc7415 100644 --- a/packages/main/src/Input.ts +++ b/packages/main/src/Input.ts @@ -497,6 +497,7 @@ class Input extends UI5Element implements SuggestionComponent, IFormInputElement * Defines the filter type of the component. * @default "None" * @public + * @since 2.19.0 */ @property() filter: `${InputSuggestionsFilter}` = InputSuggestionsFilter.None; From 62b4f59d08c54053180005f9fa75ca1f930ae56f Mon Sep 17 00:00:00 2001 From: Stefan Dimitrov Date: Wed, 14 Jan 2026 18:52:30 +0200 Subject: [PATCH 5/7] feat(ui5-input/ui5-multi-input): add sample --- .../_components_pages/main/Input/Input.mdx | 6 ++++ .../builtInFiltering/builtInFiltering.md | 4 +++ .../main/Input/builtInFiltering/main.js | 3 ++ .../main/Input/builtInFiltering/sample.html | 31 +++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 packages/website/docs/_samples/main/Input/builtInFiltering/builtInFiltering.md create mode 100644 packages/website/docs/_samples/main/Input/builtInFiltering/main.js create mode 100644 packages/website/docs/_samples/main/Input/builtInFiltering/sample.html diff --git a/packages/website/docs/_components_pages/main/Input/Input.mdx b/packages/website/docs/_components_pages/main/Input/Input.mdx index 44ed37fd75c7..d2b40ff36f4c 100644 --- a/packages/website/docs/_components_pages/main/Input/Input.mdx +++ b/packages/website/docs/_components_pages/main/Input/Input.mdx @@ -12,6 +12,7 @@ import Label from "../../../_samples/main/Input/Label/Label.md"; import ValueHelpDialog from "../../../_samples/main/Input/ValueHelpDialog/ValueHelpDialog.md"; import CustomSuggestions from "../../../_samples/main/Input/CustomSuggestions/CustomSuggestions.md"; import CustomStyling from "../../../_samples/main/Input/CustomStyling/CustomStyling.md"; +import BuiltInFiltering from "../../../_samples/main/Input/BuiltInFiltering/BuiltInFiltering.md"; <%COMPONENT_OVERVIEW%> @@ -60,3 +61,8 @@ In this example, suggestions are only shown when the user has typed 3 or more ch To some extent, the Input allows customization with pure CSS as shown in the sample. + +### Built-in Filtering +This input has built-in filtering of type Contains. + + diff --git a/packages/website/docs/_samples/main/Input/builtInFiltering/builtInFiltering.md b/packages/website/docs/_samples/main/Input/builtInFiltering/builtInFiltering.md new file mode 100644 index 000000000000..ffccbf6dd13e --- /dev/null +++ b/packages/website/docs/_samples/main/Input/builtInFiltering/builtInFiltering.md @@ -0,0 +1,4 @@ +import html from '!!raw-loader!./sample.html'; +import js from '!!raw-loader!./main.js'; + + \ No newline at end of file diff --git a/packages/website/docs/_samples/main/Input/builtInFiltering/main.js b/packages/website/docs/_samples/main/Input/builtInFiltering/main.js new file mode 100644 index 000000000000..927b2e099562 --- /dev/null +++ b/packages/website/docs/_samples/main/Input/builtInFiltering/main.js @@ -0,0 +1,3 @@ +import "@ui5/webcomponents/dist/Input.js"; +import "@ui5/webcomponents/dist/SuggestionItem.js"; +import "@ui5/webcomponents/dist/features/InputSuggestions.js"; \ No newline at end of file diff --git a/packages/website/docs/_samples/main/Input/builtInFiltering/sample.html b/packages/website/docs/_samples/main/Input/builtInFiltering/sample.html new file mode 100644 index 000000000000..23d9c89c1688 --- /dev/null +++ b/packages/website/docs/_samples/main/Input/builtInFiltering/sample.html @@ -0,0 +1,31 @@ + + + + + + + + Sample + + + + + + + + + + + + + + + + + + + + + + + From 375b5768094903dbe49931699766a56e2352faeb Mon Sep 17 00:00:00 2001 From: Stefan Dimitrov Date: Wed, 14 Jan 2026 20:14:16 +0200 Subject: [PATCH 6/7] feat(ui5-input/ui5-multi-input): rename folder and md file --- .../{builtInFiltering => BuiltInFiltering}/builtInFiltering.md | 0 .../main/Input/{builtInFiltering => BuiltInFiltering}/main.js | 0 .../main/Input/{builtInFiltering => BuiltInFiltering}/sample.html | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename packages/website/docs/_samples/main/Input/{builtInFiltering => BuiltInFiltering}/builtInFiltering.md (100%) rename packages/website/docs/_samples/main/Input/{builtInFiltering => BuiltInFiltering}/main.js (100%) rename packages/website/docs/_samples/main/Input/{builtInFiltering => BuiltInFiltering}/sample.html (100%) diff --git a/packages/website/docs/_samples/main/Input/builtInFiltering/builtInFiltering.md b/packages/website/docs/_samples/main/Input/BuiltInFiltering/builtInFiltering.md similarity index 100% rename from packages/website/docs/_samples/main/Input/builtInFiltering/builtInFiltering.md rename to packages/website/docs/_samples/main/Input/BuiltInFiltering/builtInFiltering.md diff --git a/packages/website/docs/_samples/main/Input/builtInFiltering/main.js b/packages/website/docs/_samples/main/Input/BuiltInFiltering/main.js similarity index 100% rename from packages/website/docs/_samples/main/Input/builtInFiltering/main.js rename to packages/website/docs/_samples/main/Input/BuiltInFiltering/main.js diff --git a/packages/website/docs/_samples/main/Input/builtInFiltering/sample.html b/packages/website/docs/_samples/main/Input/BuiltInFiltering/sample.html similarity index 100% rename from packages/website/docs/_samples/main/Input/builtInFiltering/sample.html rename to packages/website/docs/_samples/main/Input/BuiltInFiltering/sample.html From 10a24218b5e063973cd62e12b137727480a5e47e Mon Sep 17 00:00:00 2001 From: Stefan Dimitrov Date: Wed, 14 Jan 2026 20:29:49 +0200 Subject: [PATCH 7/7] feat(ui5-input/ui5-multi-input): fix md file name --- .../BuiltInFiltering/{builtInFiltering.md => BuiltInFiltering.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/website/docs/_samples/main/Input/BuiltInFiltering/{builtInFiltering.md => BuiltInFiltering.md} (100%) diff --git a/packages/website/docs/_samples/main/Input/BuiltInFiltering/builtInFiltering.md b/packages/website/docs/_samples/main/Input/BuiltInFiltering/BuiltInFiltering.md similarity index 100% rename from packages/website/docs/_samples/main/Input/BuiltInFiltering/builtInFiltering.md rename to packages/website/docs/_samples/main/Input/BuiltInFiltering/BuiltInFiltering.md