Search - Initially collapsed with Busy State
@@ -174,7 +254,7 @@
filtering.addEventListener('ui5-input', (event) => {
const value = event.target.value.toLowerCase();
const filteredData = data.filter(item => item.name.toLowerCase().includes(value));
-
+
// clear search items
filtering.innerHTML = '';
@@ -216,7 +296,7 @@
createScopeItems();
searchScope.addEventListener('ui5-scope-change', (event) => {
let scope = event.detail.scope.text === "All" ? "" : event.detail.scope.text.toLowerCase();
-
+
searchScope.getSlottedNodes("items").forEach(item => {
item.remove();
});
@@ -240,7 +320,7 @@
});
});
}
-
+
const filters = document.getElementById('filters');
filters.addEventListener('ui5-input', (event) => {
const value = event.target.value.toLowerCase();
diff --git a/packages/website/docs/_components_pages/fiori/Search/Search.mdx b/packages/website/docs/_components_pages/fiori/Search/Search.mdx
index 0a812f4983a4..e0b3a6f5de59 100644
--- a/packages/website/docs/_components_pages/fiori/Search/Search.mdx
+++ b/packages/website/docs/_components_pages/fiori/Search/Search.mdx
@@ -6,6 +6,7 @@ import Basic from "../../../_samples/fiori/Search/Basic/Basic.md";
import Advanced from "../../../_samples/fiori/Search/Advanced/Advanced.md";
import Byline from "../../../_samples/fiori/Search/Byline/Byline.md";
import AdvancedFilter from "../../../_samples/fiori/Search/AdvancedFilter/AdvancedFilter.md"
+import ShowMore from "../../../_samples/fiori/Search/ShowMore/ShowMore.md"
<%COMPONENT_OVERVIEW%>
@@ -32,3 +33,9 @@ This example shows how to use a custom advanced filtering button via the `filter
The example shows how to display byline items with an image and description.
+
+### Show More item
+This example shows how to use a show more item.
+
+
+
diff --git a/packages/website/docs/_components_pages/fiori/Search/SearchItemShowMore.mdx b/packages/website/docs/_components_pages/fiori/Search/SearchItemShowMore.mdx
new file mode 100644
index 000000000000..9bc8d2310465
--- /dev/null
+++ b/packages/website/docs/_components_pages/fiori/Search/SearchItemShowMore.mdx
@@ -0,0 +1,4 @@
+
+<%COMPONENT_OVERVIEW%>
+
+<%COMPONENT_METADATA%>
\ No newline at end of file
diff --git a/packages/website/docs/_samples/fiori/Search/ShowMore/ShowMore.md b/packages/website/docs/_samples/fiori/Search/ShowMore/ShowMore.md
new file mode 100644
index 000000000000..66ccdc236d97
--- /dev/null
+++ b/packages/website/docs/_samples/fiori/Search/ShowMore/ShowMore.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/fiori/Search/ShowMore/main.js b/packages/website/docs/_samples/fiori/Search/ShowMore/main.js
new file mode 100644
index 000000000000..fe625a6a4a49
--- /dev/null
+++ b/packages/website/docs/_samples/fiori/Search/ShowMore/main.js
@@ -0,0 +1,72 @@
+import "@ui5/webcomponents-fiori/dist/Search.js";
+import "@ui5/webcomponents-icons/dist/globe.js";
+import "@ui5/webcomponents-icons/dist/history.js";
+import "@ui5/webcomponents-fiori/dist/SearchItem.js";
+import "@ui5/webcomponents-fiori/dist/SearchItemShowMore.js";
+import "@ui5/webcomponents-fiori/dist/SearchItemGroup.js";
+
+ const allItems = [
+ { text: "List Item 1", icon: "history" },
+ { text: "List Item 2", icon: "search" },
+ { text: "List Item 3", icon: "history" },
+ { text: "List Item 4", icon: "history" },
+ { text: "List Item 5", icon: "search" },
+ { text: "List Item 6", icon: "globe" }
+ ];
+
+ const group1 = document.getElementById("group1");
+ const visibleCount = 3;
+
+ function createSearchItem({ text, icon }) {
+ const el = document.createElement("ui5-search-item");
+ el.setAttribute("text", text);
+ el.setAttribute("icon", icon);
+ el.setAttribute("deletable", true);
+ el.addEventListener("ui5-delete", () => el.remove());
+ return el;
+ }
+
+ function renderItemSlice(items, container, insertBefore = null) {
+ return items.map(item => {
+ const el = createSearchItem(item);
+ if (insertBefore) {
+ container.insertBefore(el, insertBefore);
+ } else {
+ container.appendChild(el);
+ }
+ return el;
+ });
+ }
+
+ function renderItems(items) {
+ const visibleItems = items.slice(0, visibleCount);
+ const hiddenItems = items.slice(visibleCount);
+
+ renderItemSlice(visibleItems, group1);
+
+ if (hiddenItems.length) {
+ const showMoreEl = document.createElement("ui5-search-item-show-more");
+ showMoreEl.setAttribute("text", `Show more (${hiddenItems.length})`);
+ group1.appendChild(showMoreEl);
+
+ function expandHiddenItems({ focusFirst = false } = {}) {
+ const newEls = renderItemSlice(hiddenItems, group1, showMoreEl);
+ showMoreEl.remove();
+ if (focusFirst && newEls.length > 0) {
+ //wait the new items to show
+ setTimeout(() => {
+ newEls[0].focus()
+ }, 0);
+ }
+ }
+
+ showMoreEl.addEventListener("click", () => expandHiddenItems());
+
+ showMoreEl.addEventListener("keydown", (e) => {
+ if (e.key === "Enter") {
+ expandHiddenItems({ focusFirst: true })
+ }
+ });
+ }
+ }
+ renderItems(allItems);
\ No newline at end of file
diff --git a/packages/website/docs/_samples/fiori/Search/ShowMore/sample.html b/packages/website/docs/_samples/fiori/Search/ShowMore/sample.html
new file mode 100644
index 000000000000..69bf83da98eb
--- /dev/null
+++ b/packages/website/docs/_samples/fiori/Search/ShowMore/sample.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
Document
+
+
+
+ Search with Grouped Suggestions and Show More (N) item
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file