From d43c13c8a0a067aa1c39c01f36be816bb1e1c5dc Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 29 Apr 2025 16:35:02 -0400 Subject: [PATCH] test(react): add radio group page --- packages/react/test/base/src/App.tsx | 1 + packages/react/test/base/src/pages/Main.tsx | 3 + .../react/test/base/src/pages/RadioGroup.tsx | 89 +++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 packages/react/test/base/src/pages/RadioGroup.tsx diff --git a/packages/react/test/base/src/App.tsx b/packages/react/test/base/src/App.tsx index 031af19614..2814535e3c 100644 --- a/packages/react/test/base/src/App.tsx +++ b/packages/react/test/base/src/App.tsx @@ -70,6 +70,7 @@ const App: React.FC = () => ( + diff --git a/packages/react/test/base/src/pages/Main.tsx b/packages/react/test/base/src/pages/Main.tsx index dd87350d9b..7420744ea0 100644 --- a/packages/react/test/base/src/pages/Main.tsx +++ b/packages/react/test/base/src/pages/Main.tsx @@ -52,6 +52,9 @@ const Main: React.FC = () => { Reorder Group + + Radio Group + diff --git a/packages/react/test/base/src/pages/RadioGroup.tsx b/packages/react/test/base/src/pages/RadioGroup.tsx new file mode 100644 index 0000000000..6020991f6f --- /dev/null +++ b/packages/react/test/base/src/pages/RadioGroup.tsx @@ -0,0 +1,89 @@ +import { IonBackButton, IonButtons, IonContent, IonHeader, IonItem, IonList, IonPage, IonRadio, IonRadioGroup, IonSearchbar, IonTitle, IonToolbar } from '@ionic/react'; +import React, { useState } from 'react'; + +interface RadioGroupProps { + +} + +export interface Item { + text: string; + value: string; +} + +const items: Item[] = [ + { text: 'Apple', value: 'apple' }, + { text: 'Apricot', value: 'apricot' }, + { text: 'Banana', value: 'banana' }, + { text: 'Blackberry', value: 'blackberry' }, + { text: 'Blueberry', value: 'blueberry' }, + { text: 'Cherry', value: 'cherry' }, + { text: 'Cranberry', value: 'cranberry' }, + { text: 'Grape', value: 'grape' }, + { text: 'Grapefruit', value: 'grapefruit' }, + { text: 'Guava', value: 'guava' }, +]; + +const RadioGroup: React.FC = () => { + const [filteredItems, setFilteredItems] = useState([...items]); + + const searchbarInput = (event: any) => { + filterList(event.target.value); + }; + + /** + * Update the rendered view with + * the provided search query. If no + * query is provided, all data + * will be rendered. + */ + const filterList = (searchQuery: string | null | undefined) => { + /** + * If no search query is defined, + * return all options. + */ + if (searchQuery === undefined || searchQuery === null) { + setFilteredItems([...items]); + } else { + /** + * Otherwise, normalize the search + * query and check to see which items + * contain the search query as a substring. + */ + const normalizedQuery = searchQuery.toLowerCase(); + setFilteredItems( + items.filter((item) => { + return item.text.toLowerCase().includes(normalizedQuery); + }) + ); + } + }; + + return ( + + + + + + + Radio Group + + + + + + + + + {filteredItems.map((item) => ( + + {item.text} + + ))} + + + + + ); +}; + +export default RadioGroup;