-
Notifications
You must be signed in to change notification settings - Fork 0
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
feat: Download qwd file UI changes #1059
Changes from 6 commits
a609bb7
2427183
55cbe33
1b4d0d5
87eb9e5
25f3f57
0a76af2
0e62698
d1140bb
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 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
@@ -16,8 +16,8 @@ export const fyleContents = { | |||||||||
configurationSubHeaderText: 'Begin your QuickBooks integration by completing the following steps.' | ||||||||||
}, | ||||||||||
connector: { | ||||||||||
configurationHeaderText: 'Connect to NetSuite Tenant', | ||||||||||
configurationSubHeaderText: 'Connect to the NetSuite Tenant from which you would like to import and export data. The ' + brandingConfig.brandName + ' org and NetSuite Tenant cannot be changed once the configuration steps are complete.', | ||||||||||
configurationHeaderText: 'Connect to QuickBooks desktop', | ||||||||||
configurationSubHeaderText: 'Connect to QuickBooks desktop by completing the following steps.', | ||||||||||
stepName: 'Connect to QuickBooks Desktop', | ||||||||||
subLabel: 'Expenses will be posted to the NetSuite Tenant Mapping selected here. Once configured, you can not change ' + brandingConfig.brandName + ' organization or Tenant Mapping.' | ||||||||||
Comment on lines
21
to
22
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. Fix inconsistent reference to NetSuite in subLabel text. The subLabel text still references "NetSuite Tenant Mapping" which is inconsistent with the QuickBooks Desktop context. Apply this diff to fix the inconsistency: - subLabel: 'Expenses will be posted to the NetSuite Tenant Mapping selected here. Once configured, you can not change ' + brandingConfig.brandName + ' organization or Tenant Mapping.'
+ subLabel: 'Expenses will be posted to the QuickBooks Desktop configuration selected here. Once configured, you can not change ' + brandingConfig.brandName + ' organization or configuration.' 📝 Committable suggestion
Suggested change
|
||||||||||
}, | ||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
<p>qbd-direct-onboarding-connector works!</p> | ||
<app-qbd-direct-download-file></app-qbd-direct-download-file> |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1 +1,70 @@ | ||||||||||||||||||||||||||||||||||||||||||
<p>qbd-direct-download-file works!</p> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-border tw-border-border-info-lighter"> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-p-24-px"> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-flex tw-items-center tw-justify-between"> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-flex tw-items-center tw-justify-start"> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-w-20-px tw-h-20-px tw-rounded-sm tw-bg-bg-secondary tw-text-white tw-text-14-px tw-font-500 tw-text-center tw-mr-8-px"> | ||||||||||||||||||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-text-14-px tw-font-500 tw-text-text-tertiary tw-pt-4-px"> | ||||||||||||||||||||||||||||||||||||||||||
<span>Download the integration file</span> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
<div *ngIf="isStepCompleted"> | ||||||||||||||||||||||||||||||||||||||||||
<app-svg-icon [svgSource]="'check-circle-fill'" [width]="'24px'" [height]="'20px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-success-toast'"></app-svg-icon> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
<div *ngIf="!isLoading && !showDownloadLink" class="tw-flex tw-items-center tw-justify-between tw-pt-24-px"> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-w-350-px"> | ||||||||||||||||||||||||||||||||||||||||||
<h4 class="tw-text-16-px tw-font-500 tw-text-text-tertiary">Enter company file path</h4> | ||||||||||||||||||||||||||||||||||||||||||
<span class="tw-text-12-px tw-font-400 tw-text-text-muted tw-text-wrap">Enter the file path of your company to generate the integration file. Watch the video for guidance on locating company file path.</span> | ||||||||||||||||||||||||||||||||||||||||||
<div> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-pt-16-px"> | ||||||||||||||||||||||||||||||||||||||||||
<input type="text" pInputText id="downloadFilePath" name="downloadFilePath" [(ngModel)]="downloadFilePath" | ||||||||||||||||||||||||||||||||||||||||||
placeholder="Example: C:\Users\[Username]\Documents\QuickBooks" | ||||||||||||||||||||||||||||||||||||||||||
class="tw-w-full tw-border tw-border-input-default-border tw-rounded-sm tw-px-8-px tw-py-12-px" | ||||||||||||||||||||||||||||||||||||||||||
required pattern="^(.+)\/([^\/]+)$" | ||||||||||||||||||||||||||||||||||||||||||
#downloadFilePathField="ngModel" | ||||||||||||||||||||||||||||||||||||||||||
[ngClass]="{ | ||||||||||||||||||||||||||||||||||||||||||
'error-box': downloadFilePathField.invalid && downloadFilePathField.touched | ||||||||||||||||||||||||||||||||||||||||||
}"> | ||||||||||||||||||||||||||||||||||||||||||
<div *ngIf="downloadFilePathField.invalid && downloadFilePathField.touched" class="tw-text-alert-toast"> | ||||||||||||||||||||||||||||||||||||||||||
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. Fix path validation pattern mismatch The validation pattern uses forward slashes ( Update the pattern to support both slash types: -required pattern="^(.+)\/([^\/]+)$"
+required pattern="^(.+[\/\\]).*$" 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
<small *ngIf="downloadFilePathField.errors?.required || downloadFilePathField.errors?.pattern" class="tw-flex"> | ||||||||||||||||||||||||||||||||||||||||||
<app-svg-icon [svgSource]="'info-circle-fill'" [isTextColorAllowed]="true" [width]="'16px'" [height]="'16px'" [styleClasses]="'tw-text-form-error-help-text-color'"></app-svg-icon> | ||||||||||||||||||||||||||||||||||||||||||
Enter a valid company file path.</small> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-pt-16-px"> | ||||||||||||||||||||||||||||||||||||||||||
<button pButton pRipple label="Download" class="downloadBtn"></button> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-rounded-border-radius-2xl"> | ||||||||||||||||||||||||||||||||||||||||||
<p-card> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-flex tw-justify-center"> | ||||||||||||||||||||||||||||||||||||||||||
<iframe width="427" height="259" src="https://www.youtube.com/embed/2oYdc8KcQnk" frameborder="0"></iframe> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
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. Enhance YouTube iframe security and accessibility The iframe needs security attributes and accessibility improvements. Apply these security and accessibility enhancements: -<iframe width="427" height="259" src="https://www.youtube.com/embed/2oYdc8KcQnk" frameborder="0"></iframe>
+<iframe
+ width="427"
+ height="259"
+ src="https://www.youtube.com/embed/2oYdc8KcQnk"
+ title="Guide: How to find QuickBooks company file path"
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
+ sandbox="allow-scripts allow-same-origin allow-presentation"
+ loading="lazy"
+></iframe> 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
<div class="tw-w-[427px] tw-p-16-px"> | ||||||||||||||||||||||||||||||||||||||||||
<p class="tw-text-14-px tw-font-500 tw-text-text-tertiary">Where to find company file path?</p> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</p-card> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
<div *ngIf="isLoading" class="tw-flex tw-flex-col tw-justify-center tw-items-center tw-h-[400px]"> | ||||||||||||||||||||||||||||||||||||||||||
<app-loader styleClass="spinner-30 tw-top-2-px"></app-loader> | ||||||||||||||||||||||||||||||||||||||||||
<span class="tw-text-14-px tw-font-400 tw-text-text-primary">Loading</span> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
<div *ngIf="!isLoading && showDownloadLink" class="tw-flex tw-flex-col tw-justify-center tw-items-center tw-h-[400px] tw-text-center"> | ||||||||||||||||||||||||||||||||||||||||||
<div class="tw-text-center"> | ||||||||||||||||||||||||||||||||||||||||||
<app-svg-icon svgSource="check-circle-outline" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-success-toast tw-pr-6-px'"></app-svg-icon> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
<div> | ||||||||||||||||||||||||||||||||||||||||||
<p class="tw-pt-4-px tw-text-text-tertiary tw-text-16-px tw-font-500">Your download will begin</p> | ||||||||||||||||||||||||||||||||||||||||||
<span class="tw-pt-8-px tw-text-text-muted tw-text-12-px tw-font-400">If it didn’t start, <a class="tw-underline tw-underline-offset-1 tw-cursor-pointer" (click)="onManualDownload()">download the integration file manually</a>.</span> | ||||||||||||||||||||||||||||||||||||||||||
<p class="tw-pt-16-px tw-text-text-muted tw-text-12-px tw-font-400">Not the right file? <a class="tw-underline tw-underline-offset-1 tw-cursor-pointer" (click)="onRetryClick()">Try again.</a></p> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
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 Enhance download success state accessibility and error handling The success state needs better accessibility and clearer error handling for failed downloads. Apply these improvements: -<div *ngIf="!isLoading && showDownloadLink" class="tw-flex tw-flex-col tw-justify-center tw-items-center tw-h-[400px] tw-text-center">
+<div *ngIf="!isLoading && showDownloadLink" class="tw-flex tw-flex-col tw-justify-center tw-items-center tw-h-[400px] tw-text-center" role="alert" aria-live="polite">
<div class="tw-text-center">
- <app-svg-icon svgSource="check-circle-outline" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-success-toast tw-pr-6-px'"></app-svg-icon>
+ <app-svg-icon svgSource="check-circle-outline" [width]="'24px'" [height]="'24px'" [isTextColorAllowed]="true" [styleClasses]="'tw-text-success-toast tw-pr-6-px'" aria-hidden="true"></app-svg-icon>
</div>
<div>
<p class="tw-pt-4-px tw-text-text-tertiary tw-text-16-px tw-font-500">Your download will begin</p>
- <span class="tw-pt-8-px tw-text-text-muted tw-text-12-px tw-font-400">If it didn't start, <a class="tw-underline tw-underline-offset-1 tw-cursor-pointer" (click)="onManualDownload()">download the integration file manually</a>.</span>
+ <span class="tw-pt-8-px tw-text-text-muted tw-text-12-px tw-font-400">If it didn't start, <button class="tw-underline tw-underline-offset-1 tw-cursor-pointer" (click)="onManualDownload()" aria-label="Download integration file manually">download the integration file manually</button>.</span>
- <p class="tw-pt-16-px tw-text-text-muted tw-text-12-px tw-font-400">Not the right file? <a class="tw-underline tw-underline-offset-1 tw-cursor-pointer" (click)="onRetryClick()">Try again.</a></p>
+ <p class="tw-pt-16-px tw-text-text-muted tw-text-12-px tw-font-400">Not the right file? <button class="tw-underline tw-underline-offset-1 tw-cursor-pointer" (click)="onRetryClick()" aria-label="Retry with different file path">Try again</button>.</p>
</div>
</div> 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
<div *ngIf="!isStepCompleted"> | ||||||||||||||||||||||||||||||||||||||||||
<app-configuration-step-footer [ctaText]="ConfigurationCtaText.NEXT" [isButtonDisabled]="!showDownloadLink" (save)="continueToNextStep()"></app-configuration-step-footer> | ||||||||||||||||||||||||||||||||||||||||||
</div> | ||||||||||||||||||||||||||||||||||||||||||
</div> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
.downloadBtn, .downloadBtn:hover { | ||
@apply tw-h-40-px tw-text-14-px tw-font-500 tw-text-white tw-bg-btn-secondary-bg tw-rounded-sm #{!important}; | ||
} | ||
|
||
:host ::ng-deep .p-button-label{ | ||
@apply tw-flex-auto #{!important}; | ||
} | ||
|
||
:host ::ng-deep .p-card-body, :host ::ng-deep .p-card-content { | ||
@apply tw-p-0 #{!important}; | ||
} | ||
|
||
:host ::ng-deep .p-card-body { | ||
@apply tw-rounded-border-radius-2xl #{!important} | ||
} | ||
|
||
:host ::ng-deep .error-box { | ||
@apply tw-border tw-border-alert-toast #{!important}; | ||
} | ||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,12 +1,46 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { Component } from '@angular/core'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { Component, Input } from '@angular/core'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { SharedModule } from "../../../../shared/shared.module"; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { QbdDirectSharedComponent } from '../qbd-direct-shared.component'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { CardModule } from 'primeng/card'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { ConfigurationCta } from 'src/app/core/models/enum/enum.model'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { CommonModule } from '@angular/common'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { required } from '@rxweb/reactive-form-validators'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { ProgressSpinnerModule } from 'primeng/progressspinner'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Component({ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
selector: 'app-qbd-direct-download-file', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
standalone: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
imports: [], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
imports: [SharedModule, QbdDirectSharedComponent, CardModule, CommonModule, ProgressSpinnerModule], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
templateUrl: './qbd-direct-download-file.component.html', | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
styleUrl: './qbd-direct-download-file.component.scss' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
export class QbdDirectDownloadFileComponent { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Input({required: true}) isLoading: boolean; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Input({required: true}) showDownloadLink: boolean; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Input({required: true}) isStepCompleted: boolean; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@Input({required: true}) isCompanyPathInvalid: boolean; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
downloadFilePath: string; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ConfigurationCtaText = ConfigurationCta; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
continueToNextStep() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
onDownloadClick() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Emit output | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
onManualDownload() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Emit output | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
onRetryClick() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Emit output | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. Implement method logic and add event emitters The methods are currently empty with comments indicating they should emit outputs, but no EventEmitter properties are defined. Consider applying these changes: + @Output() private readonly download = new EventEmitter<void>();
+ @Output() private readonly manualDownload = new EventEmitter<void>();
+ @Output() private readonly retry = new EventEmitter<void>();
+ @Output() private readonly continue = new EventEmitter<void>();
- continueToNextStep() {
+ continueToNextStep(): void {
+ this.continue.emit();
}
- onDownloadClick() {
- // Emit output
+ onDownloadClick(): void {
+ this.download.emit();
}
- onManualDownload() {
- // Emit output
+ onManualDownload(): void {
+ this.manualDownload.emit();
}
- onRetryClick() {
- // Emit output
+ onRetryClick(): void {
+ this.retry.emit();
} Don't forget to import Output and EventEmitter: -import { Component, Input } from '@angular/core';
+import { Component, Input, Output, EventEmitter } from '@angular/core'; 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,12 +1,17 @@ | ||||||||||||||||||||||||
import { NgModule } from '@angular/core'; | ||||||||||||||||||||||||
import { CommonModule } from '@angular/common'; | ||||||||||||||||||||||||
import { SharedModule } from 'src/app/shared/shared.module'; | ||||||||||||||||||||||||
import { QbdDirectDownloadFileComponent } from './qbd-direct-download-file/qbd-direct-download-file.component'; | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
@NgModule({ | ||||||||||||||||||||||||
declarations: [], | ||||||||||||||||||||||||
imports: [ | ||||||||||||||||||||||||
CommonModule, | ||||||||||||||||||||||||
SharedModule | ||||||||||||||||||||||||
SharedModule, | ||||||||||||||||||||||||
QbdDirectDownloadFileComponent | ||||||||||||||||||||||||
], | ||||||||||||||||||||||||
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. Critical: Incorrect module configuration for QbdDirectDownloadFileComponent Components should be declared in the Apply this fix: @NgModule({
- declarations: [],
+ declarations: [
+ QbdDirectDownloadFileComponent
+ ],
imports: [
CommonModule,
SharedModule,
- QbdDirectDownloadFileComponent
],
exports: [
QbdDirectDownloadFileComponent
]
}) 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||
exports: [ | ||||||||||||||||||||||||
QbdDirectDownloadFileComponent | ||||||||||||||||||||||||
] | ||||||||||||||||||||||||
}) | ||||||||||||||||||||||||
export class QbdDirectSharedModule { } |
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.
Fix inconsistent reference to NetSuite in subLabel.
The subLabel text still refers to "NetSuite account" which is inconsistent with the QuickBooks Desktop integration context.
Apply this diff to fix the inconsistency:
📝 Committable suggestion