Document Status |
| ||||||
---|---|---|---|---|---|---|---|
Document Owner(s) | |||||||
Reviewers |
Table of Contents |
---|
🛠️ Potential Solutions
🧐 Assumptions
We will turn the offer search editable, allow to allowing the user to type the offer name.
It cannot take much time to show the offer searched.
We have to warn the user when the offer does not exist in appear on the list.
It needs to search in the list for every offer that contains containing at least three characters of the name in any part (beginning, middle, ending) according to what was typed.
Space won’t count as a character to the three characters limitation
The searching will not be case-sensitive, therefore the user may type both uppercase and lowercase letters
It should always show Sanity offer in an increasing alphabetical order.
It should have a temporary feature flag to ensure everything is working fine, such as
enable-search-assigned-offers
.It is not assured if there are offers where the first word has only two characters, but it is not common, therefore for such cases, we will treat with the three-character limitation
✅ Proposed Solution
Solution #1
The first solution is allowing the offer name to be editable using a different component (AutoComplete) and when . When the Sanity offer is searched, it will look for the offer by comparing the name with what was typed.
...
Expand | ||
---|---|---|
| ||
|
...
This solution allows the offer name to be still editable using a TextBox and when . When the offer is searched, it will look for the Sanity offer by comparing the name with what was typed, in another component (Select) or a List that would render according to the list of offer offers available.
Cons:
Creation The creation of more dependencies between componentcomponents
Use at least two components to do the same search instead of a specific one that does all the work
...
Use of regex to get any part of the text typed to compare to the list of offers to be assigned
Cons:
Creation The creation of a new constant to search offers names by based on what was typed instead of using native properties.
...
Test Scenario | Result | Screenshots |
---|---|---|
Show the entire offers list |
| |
Show only offers with a specific character or words typed |
| |
Show a warning error for inxestent absent offer in the list |
|
Specific search scenarios
For the following scenarios we are going to consider that there’s just one offer name to be searched: Ice Brioche And Drink
Search Scenario | Result |
---|---|
"ic e" | The space will break the word, and it will look for any offer that has its name in any part of it "ic" nd the next word starting with "e" => No results for "ic e" |
"ice" | It will look for any offer that has its name in any part of it "ice" => Ice Brioche And Drink |
"nd " | It won't look for any offer, because it didn't reach the 3 characters limitation => No results for "nd " |
"nd d" | The space will break the word, and it will look for any offer that has its name in any part of it "nd" and the next word starting with "d" => Ice Brioche And Drink |
"iceb" | It will look for any offer that has its name in any part of it "iceb" => No results for "iceb |
"iC e" | The space will break the word, and it will look for any offer that has its name in any part of it "ic" nd the next word starting with "e" => No results for "ic e" |
"ND d" | The space will break the word, and it will look for any offer that has its name in any part of it "nd" and the next word starting with "d" => Ice Brioche And Drink |
Tasks Breaking Down
Task 1 - Create a feature flag
Create
enable-search-assigned-offers
feature flagit is not the same way it is done in whitelabel: in this repository a mutation brings the value and GraphQL integrates with Launchdarkly
Task 2 - Integrate AutoComplete with feature flag
When
enable-search-assigned-offers
feature flag is enabled, replace inoffer-form.tsx
OfferTemplate Input Label and Select for an AutoComplete componentadd the flag to offers container
create tests from container
update test from offers-form
Task 3 - Add AutoComplete Material UI Component
Replace in
offer-form.tsx
OfferTemplate Input Label and Select for an AutoComplete componentget all offer names by whatever was typed considering the requirements
add a warning message for when there aren’t any offer names by whatever was typed
update tests
References: https://v4.mui.com/api/autocomplete/#autocomplete-api https://v4.mui.com/components/autocomplete/#autocomplete