-
Notifications
You must be signed in to change notification settings - Fork 3k
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
[HOLD for payment 2024-04-15] [$500] HIGH: Add empty state UI for the LHN #34926
Comments
Job added to Upwork: https://www.upwork.com/jobs/~012902c6ddfd90e221 |
Triggered auto assignment to @michaelhaxhiu ( |
Triggered auto assignment to Contributor-plus team member for initial proposal review - @ntdiary ( |
Cheers to @dannymcclain for the mockup. If possible, can you include some Figma screenshots in the issue description to show precise sizes and layout? That would be helpful |
@roryabraham haha I was JUST about to post a link to the Figma. Yes, I'll get some stuff together and add it to the description. |
Cheers! |
ProposalPlease re-state the problem that we are trying to solve in this issue.show nothing to see here if LHN visible options are zero. What is the root cause of that problem?new feature What changes do you think we should make in order to solve the problem?If the length of options inside the LHN is zero,then display the "nothing to show here" page. This is done by adding a condition in the LHN list component below to show the new page when there are no options if data.length === 0 --> then show the new page. App/src/components/LHNOptionsList/LHNOptionsList.js Lines 147 to 159 in 8bad243
|
ProposalPlease re-state the problem that we are trying to solve in this issue.Empty state UI for the LHN What is the root cause of that problem?New Feature What changes do you think we should make in order to solve the problem?We will show the new view here if data is empty: App/src/components/LHNOptionsList/LHNOptionsList.js Lines 146 to 148 in 8bad243
We can use the BlockingView component indicate that the LHN is empty: const isLHNEmpty = data.length === 0;
...
return (
{isLHNEmpty ? (
<BlockingView
icon={Illustrations.EmptyLHN}
title={translate('common.EmptyLHN')}
subtitle={translate('common.EmptyLHN')}
/>
) : (
... If the illustration finalizes to be Lottie Animation, we can extend BlockingView to take in an optional prop of type type BlockingViewProps = {
...
/**JSON object representing a Lottie animation. Will be shown over the title text*/
illustration?: DotLottieAnimation;
}
...
{!_.isNull(illustration) ? (
<Lottie
source={illustration}
style={styles.w100}
webStyle={styles.w100}
autoPlay
loop
/>
) : (
... AlternativelyWe can create a new component with styles similar to BlockingView to show the icon, title and subtitle. This allows greater control if the design changes in the future |
ProposalPlease re-state the problem that we are trying to solve in this issue.There's no zero state for the sidebar when there's no option list items What is the root cause of that problem?This use cases has not been handled. A new user would always have the concierge chat. It's possible to get into the zero state use case when they get cleared from the focus flow. What changes do you think we should make in order to solve the problem?We should create a new zero state component, with props for the icon, text, and instructions. We can use this in the component where we can render a zero state if the data is empty. And can reuse this component for future use cases. What alternative solutions did you explore? (Optional)
|
ProposalPlease re-state the problem that we are trying to solve in this issue.We want to create an "empty state" UI that gives the user something fun to look at when they've cleared out the LHN in #focus mode What is the root cause of that problem?This is a new feature. What changes do you think we should make in order to solve the problem?This issue looks straight forward at a glance, but the complicated thing here is that in the subtitle text we're rendering the icons inside the text itself, and the
so that we support custom subtitle renderer
In here I use the regular text space We also need to embed the icons inside wrapper
Or we can make use of the
We can also isolate the changes in 2 and 3 (by condition) to only What alternative solutions did you explore? (Optional)There might be further minor style changes needed (color, spacing, ...) that can be addressed in the PR phase. If we're worried about the text being broken down into chunks for translations (I saw we're doing it in many other places in the app so I think we're fine with it), we can improve the translation variables engine so that it can put Icons as variables. Regarding the inline app icons in the text, one alternative is we can use equivalent chat emojis, but that won't look like the app's design (and the buttons we're telling the users about) and it will look inconsistent. Result (before Lottie animation was confirmed, with Lottie it will be look a bit different) |
Thanks for the proposals everyone, just want to clarify that the designs are finalized. Going to hold off on accepting a proposal until I get the final 👍🏼 from @dannymcclain https://expensify.slack.com/archives/C01GTK53T8Q/p1706085371949699?thread_ts=1705945570.975289&cid=C01GTK53T8Q |
Thanks @roryabraham! I think we may want to consider an alternate illustration and some updated copy. Structurally, I think the layout is pretty well determined, but I'd like to get the final details worked out with the team. |
kk, going to slap the |
Waiting for KI retest on #37296 |
@laurenreidexpensify no longer hold, please remove hold label |
PR deployed to staging 🚀 |
|
The solution for this issue has been 🚀 deployed to production 🚀 in version 1.4.60-13 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue: If no regressions arise, payment will be issued on 2024-04-15. 🎊 For reference, here are some details about the assignees on this issue:
|
BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
|
Heads up, @tienifr & @DylanDylann: #39932 (comment) |
#39932 is not a regression from this one as per #39932 (comment). |
@trjExpensify can you confirm ^^ |
Correct yeah, seems like it's onboarding related. :) |
Payment Summary:
|
Payment Summary:
|
@DylanDylann @tienifr please confirm checklist / regression testing |
Regression Test ProposalSmall screen devices only
Do we agree 👍 or 👎 |
Slack context: https://expensify.slack.com/archives/C01GTK53T8Q/p1705945570975289
Problem
In #focus mode it's possible to "clear out" your LHN such that there's no chats that appear. Note that this only happens on mobile because on wide screens you always have a chat open. In this case, the app looks semi-broken because it's so empty.
Solution
Create an "empty state" UI that gives the user something fun to look at when they've cleared out the LHN in #focus mode.
Mockup
Figma link
Empty state animation
Fireworks lottie file
Empty state illustration
Fireworks.svg.zip
Note that ideally we will want to use an animation here—I'm just attaching the SVG as a just-in-case.
Upwork Automation - Do Not Edit
The text was updated successfully, but these errors were encountered: