-
Notifications
You must be signed in to change notification settings - Fork 15
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
fix:draft report zero state improvements #3363
base: master
Are you sure you want to change the base?
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -170,21 +170,27 @@ | |
</div> | ||
<div class="view-reports--expenses-zero-state" *ngIf="!isExpensesLoading && report.num_expenses === 0"> | ||
<div class="text-center"> | ||
<img src="../../../assets/images/zero-states/expenses.png" alt="No expense in this report" /> | ||
<div class="view-reports--zero-state-header">Looks like this report is empty.</div> | ||
<div class="view-reports--zero-state-image-container"> | ||
<img src="../../../assets/images/zero-states/invoice.png" alt="No expense in this report" /> | ||
</div> | ||
<div class="view-reports--zero-state-semibold-header">Looks like you’ve got</div> | ||
<div class="view-reports--zero-state-header">0 expense right now</div> | ||
</div> | ||
<div class="view-reports--footer-conatiner"> | ||
<button | ||
*ngIf="unreportedExpenses && unreportedExpenses.length > 0" | ||
class="view-reports--unreported-cta" | ||
class="btn-primary" | ||
(click)="showAddExpensesToReportModal()" | ||
> | ||
Add complete expenses | ||
Add complete expense | ||
</button> | ||
<button | ||
class="btn-outline-secondary" | ||
[ngClass]="{'btn-primary': !(unreportedExpenses && unreportedExpenses.length > 0), 'btn-outline-secondary': unreportedExpenses && unreportedExpenses.length > 0}" | ||
(click)="addExpense()" | ||
> | ||
Add new expense | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Thalaiva style button improvements needed! The button section needs some improvements:
- <button
- class="btn-outline-secondary"
- [ngClass]="{'btn-primary': !(unreportedExpenses && unreportedExpenses.length > 0), 'btn-outline-secondary': unreportedExpenses && unreportedExpenses.length > 0}"
- (click)="addExpense()"
- >
- Add new expense
- </button>
+ <button
+ [class]="unreportedExpenses?.length ? 'btn-outline-secondary' : 'btn-primary'"
+ (click)="addExpense()"
+ >
+ Create new expense
+ </button> Also, consider extracting the unreportedExpenses check to a getter in the component: get hasUnreportedExpenses(): boolean {
return this.unreportedExpenses?.length > 0;
} |
||
</button> | ||
<div class="view-reports--add-more-container" (click)="addExpense()"> | ||
<div class="view-reports--add-more-icon-container"> | ||
<mat-icon class="view-reports--add-more-icon" svgIcon="plus-square"></mat-icon> | ||
</div> | ||
<div class="view-reports--add-more-text">Add Expenses</div> | ||
</div> | ||
</div> | ||
</div> | ||
</ng-container> | ||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -56,6 +56,19 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&--footer-conatiner { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
display: flex; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
justify-content: space-between; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
padding: 16px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gap: 8px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
position: fixed; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bottom: 0; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sishhhh marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
width: 100%; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
background-color: $pure-white; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
box-shadow: 0 -2px 12px $pink-shadow; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sishhhh marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
z-index: 999; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Mind it! Let's optimize the footer container styles, macha! The footer container styling needs some improvements:
&--footer-conatiner {
display: flex;
justify-content: space-between;
padding: 16px;
gap: 8px;
position: fixed;
bottom: 0;
width: 100%;
background-color: $pure-white;
box-shadow: 0 -2px 12px $pink-shadow;
- z-index: 999;
+ z-index: 10;
+ max-width: 100vw;
+ box-sizing: border-box;
} 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&--card-body { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
font-size: 16px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color: $gray-3; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -350,6 +363,20 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
font-weight: 500; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&--zero-state-semibold-header { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
font-size: 14px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
display: block; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
color: $blue-black; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
line-height: 1.5; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
font-weight: 400; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&--zero-state-image-container { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
height: 150px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
width: 150px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. would this work for all resolutions of mobile devices? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @arjunaj5 I have checked it across multiple dimensions, and I think it looks good. At a dimension of 320px, it appears fine as well. Attaching a photo for reference. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @Sishhhh, let's share this screenshot with the design team mentioning the resolution. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
overflow: hidden; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+366
to
+378
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Style pandratha style-a pandrom! (Let's style it with style!) The zero state image container needs to be more responsive: &--zero-state-image-container {
- height: 150px;
- width: 150px;
+ height: min(150px, 30vh);
+ width: min(150px, 90%);
overflow: hidden;
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ img {
+ max-width: 100%;
+ height: auto;
+ }
} 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
&--history-container { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
background: $pure-white; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
border-radius: 16px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -930,7 +930,9 @@ describe('MyViewReportPage', () => { | |
component.report$ = of(cloneDeep({ ...platformReportData, state: 'DRAFT' })); | ||
fixture.detectChanges(); | ||
|
||
const addExpenseButton = getElementBySelector(fixture, '.view-reports--add-more-container') as HTMLElement; | ||
const addExpenseButton = fixture.debugElement.nativeElement.querySelector( | ||
'.view-reports--footer-conatiner .btn-outline-secondary' | ||
) as HTMLElement; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Mind-blowing suggestion: Use data-testid for more stable test selectors! Hey there! Like a perfectly choreographed action sequence, your tests should be robust and reliable! Instead of relying on complex class-based selectors that can break when styles change, let's add a data-testid attribute to make our test selector more stable, thalaiva style! - const addExpenseButton = fixture.debugElement.nativeElement.querySelector(
- '.view-reports--footer-conatiner .btn-outline-secondary'
- ) as HTMLElement;
+ const addExpenseButton = fixture.debugElement.nativeElement.querySelector(
+ '[data-testid="add-expense-button"]'
+ ) as HTMLElement; Don't forget to add the corresponding data-testid attribute to your component template: <button data-testid="add-expense-button" class="view-reports--footer-conatiner btn-outline-secondary">
Add Expense
</button> |
||
click(addExpenseButton); | ||
|
||
expect(router.navigate).toHaveBeenCalledOnceWith([ | ||
|
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.
🧹 Nitpick (assertive)
Kabali da! The zero state looks good, but let's make it perfect!
The alt text could be more descriptive for better accessibility.
📝 Committable suggestion