-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BA-2084: Multiple Profiles - Search Bar #183
Conversation
|
WalkthroughThe pull request introduces a search functionality for the Members component across multiple files. Enhancements include the addition of a Changes
Possibly related PRs
Suggested reviewers
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📥 CommitsReviewing files that changed from the base of the PR and between 475d53c4a26d54eb8dab3b6d99b0a3641d6643f0 and 42d83d1. ⛔ Files ignored due to path filters (78)
📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms (3)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
packages/components/modules/profiles/Members/index.tsx (1)
62-70
: Consider handling loading state in Searchbar.The
isPending
prop is hardcoded tofalse
. Consider reflecting the actual loading state when search is in progress.<Searchbar variant="outlined" size="small" - isPending={false} + isPending={isLoadingNext} onChange={(e) => setSearchQuery(e.target.value)} onClear={() => setSearchQuery('')} value={searchQuery} sx={{ mb: 4 }} />packages/components/modules/profiles/Members/MembersList/index.tsx (2)
30-32
: Consider debouncing search queries.The current implementation triggers a refetch on every search query change. Consider debouncing the search to reduce unnecessary API calls.
+import { useCallback } from 'react' +import debounce from 'lodash/debounce' const MembersList: FC<MemberListProps> = ({ // ...props }) => { + const debouncedRefetch = useCallback( + debounce((query: string) => { + refetch({ q: query }) + }, 300), + [refetch] + ) + useEffect(() => { - refetch({ q: searchQuery }) + debouncedRefetch(searchQuery) + return () => { + debouncedRefetch.cancel() + } }, [searchQuery])
25-25
: Consider handling loading state during search.The
isLoadingNext
is only used for pagination loading. Consider tracking the loading state during search refetch to improve user experience.-const { data, loadNext, hasNext, isLoadingNext, refetch } = usePaginationFragment( +const { data, loadNext, hasNext, isLoadingNext, refetch, isRefetching } = usePaginationFragment( UserMembersListFragment, userRef, )
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📥 Commits
Reviewing files that changed from the base of the PR and between 2692120 and d1d56f716b7d3aeb097853661b7f6868585d13ed.
📒 Files selected for processing (4)
packages/components/modules/profiles/Members/MembersList/index.tsx
(2 hunks)packages/components/modules/profiles/Members/index.tsx
(4 hunks)packages/components/modules/profiles/Members/types.ts
(2 hunks)packages/components/modules/profiles/graphql/queries/UserMembersList.ts
(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: Analyze (javascript)
🔇 Additional comments (4)
packages/components/modules/profiles/Members/types.ts (1)
15-15
: LGTM! Type definitions are well-structured.The optional
searchQuery
prop is correctly typed as string and appropriately added to both interfaces, maintaining backward compatibility.Also applies to: 28-30
packages/components/modules/profiles/graphql/queries/UserMembersList.ts (2)
29-30
: LGTM! Connection configuration is properly set up.The
@connection
directive correctly includes the search query in filters, ensuring proper cache updates when the search query changes.
9-9
: Verify case-insensitive search handling.The GraphQL query includes the search parameter, but we need to ensure the backend handles case-insensitive search as per requirements.
Also applies to: 13-13
packages/components/modules/profiles/Members/index.tsx (1)
53-53
: LGTM! Search state management is well implemented.The search functionality is properly implemented with state management and the search query is correctly passed down to the Members component.
Also applies to: 73-73
d1d56f7
to
46c7611
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🔭 Outside diff range comments (1)
packages/components/modules/profiles/Members/MembersList/index.tsx (1)
Line range hint
57-65
: Add specific empty state for search results.The current implementation doesn't distinguish between having no members and having no search results. Consider adding a specific message for when the search returns no results.
if (members.length === 0) { + if (searchQuery) { + return ( + <Typography variant="body1" align="center" sx={{ py: 4 }}> + No members found matching "{searchQuery}" + </Typography> + ) + } return ( <> <Typography variant="subtitle2" mb={4}>
🧹 Nitpick comments (3)
packages/components/modules/profiles/Members/index.tsx (2)
Line range hint
16-40
: Consider adding searchQuery to the initial query parameters.While the searchQuery prop is correctly passed to MembersList, consider including it in the initial useLazyLoadQuery parameters to avoid unnecessary refetches.
const data = useLazyLoadQuery<IUserMembersListPaginationQuery>(UserMembersListPaginationQuery, { profileId: currentProfile?.id || '', count: NUMBER_OF_MEMBERS_ON_FIRST_LOAD, orderBy: 'status', + q: searchQuery, })
62-70
: Consider adding placeholder text and aria-label for better accessibility.The Searchbar implementation looks good but could benefit from additional accessibility improvements.
<Searchbar variant="outlined" size="small" isPending={false} onChange={(e) => setSearchQuery(e.target.value)} onClear={() => setSearchQuery('')} value={searchQuery} sx={{ mb: 4 }} + placeholder="Search members..." + aria-label="Search members" />packages/components/modules/profiles/Members/MembersList/index.tsx (1)
Line range hint
77-91
: Consider preserving scroll position during search.The Virtuoso implementation looks good, but consider preserving the scroll position when performing a search to improve user experience.
<Virtuoso style={{ height: membersContainerHeight }} data={members} itemContent={(_index, member) => member && renderMemberItem(member, _index)} + restoreStateFrom={searchQuery ? undefined : 'members-list'} + saveStateOnUpdate={!searchQuery} components={{ Footer: renderLoadingState, }} // ... rest of the props />
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📥 Commits
Reviewing files that changed from the base of the PR and between d1d56f716b7d3aeb097853661b7f6868585d13ed and 46c7611d4169ab6f9bf09797da97b4de891c2479.
📒 Files selected for processing (4)
packages/components/modules/profiles/Members/MembersList/index.tsx
(2 hunks)packages/components/modules/profiles/Members/index.tsx
(4 hunks)packages/components/modules/profiles/Members/types.ts
(2 hunks)packages/components/modules/profiles/graphql/queries/UserMembersList.ts
(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- packages/components/modules/profiles/Members/types.ts
- packages/components/modules/profiles/graphql/queries/UserMembersList.ts
🔇 Additional comments (1)
packages/components/modules/profiles/Members/index.tsx (1)
1-1
: LGTM: Import statements are properly organized.The necessary imports for useState and Searchbar components are correctly added.
Also applies to: 4-4
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
packages/components/modules/profiles/Members/MembersList/index.tsx (3)
27-27
: Fix formatting in destructuring assignment.Remove the extra space before
refetch
in the destructuring assignment.- const { data, loadNext, hasNext, isLoadingNext , refetch} = usePaginationFragment( + const { data, loadNext, hasNext, isLoadingNext, refetch } = usePaginationFragment(
38-43
: Optimize handleSearchClear implementation.The current implementation makes two state transitions: one for reset and one for search. These can be combined into a single transition for better performance.
const handleSearchClear = () => { startTransition(() => { reset() - handleSearch('') + refetch({ q: '' }) }) }
76-85
: Extract duplicated Searchbar component.The Searchbar component is duplicated with identical props. Consider extracting it into a separate component or variable to improve maintainability.
+ const searchBar = ( + <Searchbar + variant="outlined" + size="small" + isPending={isPending} + onChange={(e) => handleSearch(e.target.value)} + onClear={() => handleSearchClear()} + name="search" + control={control} + sx={{ mb: 4 }} + /> + ) if (members.length === 0) { return ( <> - <Searchbar - variant="outlined" - size="small" - isPending={isPending} - onChange={(e) => handleSearch(e.target.value)} - onClear={() => handleSearchClear()} - name="search" - control={control} - sx={{ mb: 4 }} - /> + {searchBar} // ... rest of the code </> ) } return ( <> - <Searchbar - variant="outlined" - size="small" - isPending={isPending} - onChange={(e) => handleSearch(e.target.value)} - onClear={() => handleSearchClear()} - name="search" - control={control} - sx={{ mb: 4 }} - /> + {searchBar} // ... rest of the code </> )Also applies to: 96-105
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📥 Commits
Reviewing files that changed from the base of the PR and between 46c7611d4169ab6f9bf09797da97b4de891c2479 and 1e57cb34729fa538a7dde63219e12509ba6a089b.
📒 Files selected for processing (3)
packages/components/modules/profiles/Members/MembersList/index.tsx
(4 hunks)packages/components/modules/profiles/Members/index.tsx
(3 hunks)packages/components/modules/profiles/Members/types.ts
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- packages/components/modules/profiles/Members/types.ts
- packages/components/modules/profiles/Members/index.tsx
🔇 Additional comments (2)
packages/components/modules/profiles/Members/MembersList/index.tsx (2)
1-9
: LGTM! Appropriate imports for search functionality.The added imports support the search feature requirements with React's useTransition for smooth state updates and the reusable Searchbar component as specified in the PR objectives.
25-27
: Add debouncing to search refetch and loading state.The current implementation triggers a refetch on every searchQuery change, which could lead to performance issues.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (1)
packages/components/modules/profiles/Members/MembersList/index.tsx (1)
84-93
: Extract duplicated Searchbar component.The Searchbar component configuration is duplicated. Consider extracting it into a separate component or variable to maintain DRY principles.
+const SearchbarComponent = () => ( + <Searchbar + variant="outlined" + size="small" + isPending={isPending} + onChange={(e) => handleSearch(e.target.value)} + onClear={() => handleSearchClear()} + name="search" + control={control} + sx={{ mb: 4 }} + /> +) if (members.length === 0) { return ( <> - <Searchbar {...} /> + <SearchbarComponent /> ... </> ) } return ( <> - <Searchbar {...} /> + <SearchbarComponent /> ... </> )Also applies to: 104-113
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📥 Commits
Reviewing files that changed from the base of the PR and between 1e57cb34729fa538a7dde63219e12509ba6a089b and eed60a9f6059a0861691de42f17a2ccbc9015d3f.
📒 Files selected for processing (5)
packages/components/modules/profiles/Members/MemberItem/index.tsx
(2 hunks)packages/components/modules/profiles/Members/MemberItem/types.ts
(1 hunks)packages/components/modules/profiles/Members/MemberListItem/index.tsx
(3 hunks)packages/components/modules/profiles/Members/MemberListItem/types.ts
(1 hunks)packages/components/modules/profiles/Members/MembersList/index.tsx
(3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Analyze (javascript)
- GitHub Check: Component Test Applications and Packages
- GitHub Check: Lint
🔇 Additional comments (4)
packages/components/modules/profiles/Members/MemberItem/types.ts (1)
19-19
: LGTM! Type definition is correct.The optional searchQuery prop is properly typed as string.
packages/components/modules/profiles/Members/MemberListItem/types.ts (1)
14-14
: LGTM! Consistent type definition.The searchQuery prop type matches the MemberItemProps interface, maintaining consistency.
packages/components/modules/profiles/Members/MembersList/index.tsx (2)
27-29
: Add debouncing to search refetch and loading state.The current implementation triggers a refetch on every searchQuery change, which could lead to performance issues.
77-77
: Implementation successfully meets search requirements!The search functionality correctly implements:
- Case-insensitive search through the relay refetch
- Clear button functionality
- Search query propagation to child components
Also applies to: 97-97
packages/components/modules/profiles/Members/MemberItem/index.tsx
Outdated
Show resolved
Hide resolved
packages/components/modules/profiles/Members/MemberItem/index.tsx
Outdated
Show resolved
Hide resolved
2b72a02
to
44a1393
Compare
6bc9062
to
b85a8ac
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
packages/components/CHANGELOG.md (1)
7-7
: Enhance the changelog entry for clarity and completeness.Consider revising the changelog entry to be more specific and grammatically correct:
- Added search bar to members list. User can search for members by first name, last name and email. + Added search bar to the members' list, allowing users to perform case-insensitive searches by members' first name, last name, and email address. The search supports partial matches and includes a clear button to reset results.🧰 Tools
🪛 LanguageTool
[uncategorized] ~7-~7: It seems likely that a singular genitive (’s) apostrophe is missing.
Context: ...## Patch Changes - Added search bar to members list. User can search for members by fi...(AI_HYDRA_LEO_APOSTROPHE_S_XS)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📥 Commits
Reviewing files that changed from the base of the PR and between eed60a9f6059a0861691de42f17a2ccbc9015d3f and 5295e9eb93381c8e8d7a4f76b2cc573ca2aba8ca.
⛔ Files ignored due to path filters (78)
packages/components/__generated__/ActivityLogsFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ActivityLogsPaginationQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ActivityLogsQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/AddProfilePopoverUserQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/AllProfilesListFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/AllProfilesListPaginationQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ArchiveChatRoomMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/BlockToggleFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/BlockToggleMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ChangeUserRoleMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ChatRoomMessagesListPaginationQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ChatRoomParticipantsPaginationQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ChatRoomQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ChatRoomsQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentCreateMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentDeleteMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentItemRefetchQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentItemWithQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentItem_comment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentItem_target.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentPinMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentUpdateMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsForTestingQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsListPaginationQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsListWithQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsList_comments.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsRefetchQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsSubscription.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsUpdateWithQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CommentsWithQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/CreateChatRoomMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/FollowToggleMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/FollowToggleUpdatableFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/GroupDetailsQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/GroupTitleFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/LastMessageFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/MemberItemFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/MembersListFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/MessageItemFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/MessagesListFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/NotificationItemFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/NotificationItemWithQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/NotificationUserMenuFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/NotificationsListFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/NotificationsListQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/NotificationsMarkAllAsReadMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/NotificationsMarkAsReadMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/NotificationsPopoverQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/OrganizationCreateMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ProfileComponentFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ProfileItemFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ProfileUpdateMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ProfilesListFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ProfilesListQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ReactionButtonMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ReactionButtonWithQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ReactionButton_target.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/ReadMessagesMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/RoomFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/RoomTitleFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/RoomsListFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/SendMessageMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/TitleFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/UnreadChatMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/UnreadMessagesCountFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/UpdateChatRoomMutation.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/UserMembersListFragment.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/UserMembersListPaginationQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/UserProfileQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/chatRoomsPaginationQuery.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/notificationsListRefetchable.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/profilesListRefetchable.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/useMessageCountUpdateSubscription.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/useMessagesListSubscription.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/useNotificationsSubscription.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/useRoomListSubscription.graphql.ts
is excluded by!**/__generated__/**
packages/components/__generated__/userMembersListPaginationRefetchable.graphql.ts
is excluded by!**/__generated__/**
📒 Files selected for processing (1)
packages/components/CHANGELOG.md
(1 hunks)
🧰 Additional context used
🪛 LanguageTool
packages/components/CHANGELOG.md
[uncategorized] ~7-~7: It seems likely that a singular genitive (’s) apostrophe is missing.
Context: ...## Patch Changes - Added search bar to members list. User can search for members by fi...
(AI_HYDRA_LEO_APOSTROPHE_S_XS)
⏰ Context from checks skipped due to timeout of 90000ms (4)
- GitHub Check: Analyze (javascript)
- GitHub Check: Unit Test Applications and Packages
- GitHub Check: Component Test Applications and Packages
- GitHub Check: Lint
🔇 Additional comments (1)
packages/components/CHANGELOG.md (1)
3-4
: LGTM! Version and change type are appropriate.The version increment (0.0.51) and classification as a patch change are appropriate for this feature addition, as it enhances functionality without breaking changes.
a823c3d
to
475d53c
Compare
- Added a search bar to filter members in the MembersSuspended component. - Introduced `searchQuery` prop in Members and UserMembersProps interfaces. - Updated the UserMembersList GraphQL query to accept a search query parameter. - Refactored MembersList to refetch data based on the search query input. Signed-off-by: luisguareschi <lg@tsl.io> Signed-off-by: luisguareschi <luisguareschi@hotmail.com>
Signed-off-by: luisguareschi <lg@tsl.io> Signed-off-by: luisguareschi <luisguareschi@hotmail.com>
Signed-off-by: luisguareschi <lg@tsl.io> Signed-off-by: luisguareschi <luisguareschi@hotmail.com>
Signed-off-by: luisguareschi <lg@tsl.io> Signed-off-by: luisguareschi <luisguareschi@hotmail.com>
Signed-off-by: luisguareschi <lg@tsl.io> Signed-off-by: luisguareschi <luisguareschi@hotmail.com>
Signed-off-by: luisguareschi <lg@tsl.io> Signed-off-by: luisguareschi <luisguareschi@hotmail.com>
475d53c
to
42d83d1
Compare
|
As a user, on the BaseApp Profile,I would like to use a searc bar, In order to find invited and current members on the member list.
Original Story:
Acceptance Criteria
Context
In this story we want to implement the search bar in the Members List page.
Business Rules - Search Bar - 3
Users should be able to use a search bar to locate a member:
The search should be case-insensitive, so typing “john” should return results for “John” or “john.”
**The search should support partial matches, meaning typing part of a contact's name (e.g., “Jo” for “John Doe”) should filter the list to show all matching results.
The search bar should include a clear button (e.g., an “X” icon) that, when clicked, clears the search input and restores the full members list
Searchbar component should already be done, so re use it.
Current behavior
Expected behavior
Code Snippet
Design Link: https://www.figma.com/design/XRD6wSl1m8Kz6XUcAy5CLp/BaseApp---WEB?node-id=3660-64822&node-type=frame&t=IBg7GNDkZEpy2W77-0
Approvd
https://app.approvd.io/projects/BA/stories/35054
Summary by CodeRabbit
Release Notes
New Features
Improvements
Technical Updates