Skip to content

Conversation

@vignesh05904
Copy link
Contributor

@vignesh05904 vignesh05904 commented Jul 14, 2025

Description

q3_usability clone-settings page alignment fixes for qbo & xero

route qbo - integrations/qbo/onboarding/clone_settings
route xero - integrations/xero/onboarding/clone_settings

sample images for fixes
Screenshot 2025-07-18 at 3 18 46 PM

Screenshot 2025-07-18 at 3 19 09 PM

Clickup

https://app.clickup.com/

Summary by CodeRabbit

  • Refactor

    • Reorganized QBO and Xero clone settings screens for clearer grouping of sections and dependent fields.
    • Standardized vendor import controls and headings for consistency across views.
  • Style

    • Applied consistent padding, borders, and backgrounds to settings sections for improved readability.
    • Updated dropdown item layout; removed appended sub-label suffix for cleaner display.
    • Introduced a unified field container style to align visual appearance.
    • Streamlined spacing and alignment in advanced settings, schedule frequency, and notification email inputs.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 14, 2025

Walkthrough

Templates for QBO and Xero clone settings were structurally refactored with Tailwind-styled containers. Shared components adjusted padding/structure, simplified dropdown item layout, and removed a localization key. New SCSS utility class added for consistent container styling. No form control names, bindings, or conditional logic changed.

Changes

Cohort / File(s) Summary
QBO Clone Settings UI Refactor
src/app/integrations/qbo/qbo-onboarding/qbo-clone-settings/qbo-clone-settings.component.html
Wrapped form sections (employee mapping, export/import/advanced settings) in padded, bordered containers; reorganized nested blocks for consistent spacing; no binding or logic changes.
QBO Clone Settings Styles
src/app/integrations/qbo/qbo-onboarding/qbo-clone-settings/qbo-clone-settings.component.scss
Added .clone-setting--field-container with rounded corners, border, and white background.
Xero Clone Settings UI Refactor
src/app/integrations/xero/xero-onboarding/xero-clone-settings/xero-clone-settings.component.html
Grouped export/import/advanced settings into nested, styled containers; maintained existing control names and conditions.
Xero Clone Settings Styles
src/app/integrations/xero/xero-onboarding/xero-clone-settings/xero-clone-settings.component.scss
Added .clone-setting--field-container with rounded corners, border, and white background.
Shared Configuration Import Field
src/app/shared/components/configuration/configuration-import-field/configuration-import-field.component.html
Simplified ngClass logic; changed clone-view padding to horizontal; always render section header; removed clone-view-specific container class branch.
Dropdown Item Template
src/app/shared/components/input/dropdown/dropdown.component.html
Removed flex/justify/align classes from item wrapper; sub-label no longer appends translated suffix; selected template unchanged.
Localization Cleanup
src/assets/i18n/en.json
Removed dropdown.subLabelSuffix key.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

I hop through fields of rounded borders bright,
With paddings plush and margins set just right.
Dropdowns whisper, “no more suffix, yo!”
Containers cuddle forms in tidy rows.
My paws approve this tidy, trim display—
Ship it swift; we’re styled for day! 🐇✨

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 8e66f73 and 41bab64.

📒 Files selected for processing (2)
  • src/app/shared/components/configuration/configuration-import-field/configuration-import-field.component.html (2 hunks)
  • src/assets/i18n/en.json (0 hunks)
💤 Files with no reviewable changes (1)
  • src/assets/i18n/en.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/app/shared/components/configuration/configuration-import-field/configuration-import-field.component.html
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch q3_usability_clone-settings-alignments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added the size/XL Extra Large PR label Jul 14, 2025
cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

🧹 Nitpick comments (3)
src/app/shared/components/configuration/configuration-import-field/configuration-import-field.component.html (2)

31-31: Duplicate isDestinationFixedImport keys in [ngClass] – simplify for readability

Both key–value pairs check the same condition. Collapse them to avoid redundant evaluations and keep the template tidy:

-[ngClass]="{'tw-mt-24-px tw-pb-24-px': isDestinationFixedImport, 'tw-rounded-lg tw-border-border-tertiary tw-border': isDestinationFixedImport}"
+[ngClass]="{'tw-mt-24-px tw-pb-24-px tw-rounded-lg tw-border-border-tertiary tw-border': isDestinationFixedImport}"

34-35: Conditional padding class is hard to scan

[ngClass]="!isCloneSettingView ? 'tw-p-24-px' : 'tw-px-24-px'" mixes the ternary with static classes in class="".
Readability improves when the conditional part is isolated in an object / array:

<div
  class="tw-flex tw-justify-between"
  [ngClass]="isCloneSettingView ? 'tw-px-24-px' : 'tw-p-24-px'">

Optional refactor, no functional impact.

src/app/integrations/qbo/qbo-onboarding/qbo-clone-settings/qbo-clone-settings.component.html (1)

464-472: Duplicate [isFieldMandatory] attribute – drop the extra one

Angular keeps the last duplicate, but the repetition is noise and can confuse maintainers.

-  [isFieldMandatory]="true"
   [options]="scheduleIntervalHours"
   [form]="advancedSettingForm"
-  [isFieldMandatory]="true"
+  [isFieldMandatory]="true"
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d6d476c and 01ba9e6.

📒 Files selected for processing (2)
  • src/app/integrations/qbo/qbo-onboarding/qbo-clone-settings/qbo-clone-settings.component.html (1 hunks)
  • src/app/shared/components/configuration/configuration-import-field/configuration-import-field.component.html (2 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user ashwin1111 has confirmed the suggestion to replace the hardcoded reference to 'Sage Intacct' with a dynamic reference to the target system using the variable `targetSystemName` in the subLabel string within the `business-central-export-settings.component.html` file.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user ashwin1111 has confirmed the suggestion to replace the hardcoded reference to 'Sage Intacct' with a dynamic reference to the target system using the variable `targetSystemName` in the subLabel string within the `business-central-export-settings.component.html` file.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user ashwin1111 has confirmed the replacement of the 'intacct' keyword with the variable `targetSystemName` for dynamic system naming in the `business-central-export-settings.component.html` file.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user ashwin1111 has confirmed the replacement of the 'intacct' keyword with the variable `targetSystemName` for dynamic system naming in the `business-central-export-settings.component.html` file.
src/app/shared/components/configuration/configuration-import-field/configuration-import-field.component.html (9)
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#298
File: src/app/shared/components/export-log/skipped-export-log-table/skipped-export-log-table.component.html:21-22
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user ashwin1111 has requested the removal of a condition that was always evaluating to false (`*ngIf="false"`), which was making an `h5` element never visible. This indicates a preference for removing redundant or placeholder code that is not currently in use.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#298
File: src/app/shared/components/export-log/skipped-export-log-table/skipped-export-log-table.component.html:21-22
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user ashwin1111 has requested the removal of a condition that was always evaluating to false (`*ngIf="false"`), which was making an `h5` element never visible. This indicates a preference for removing redundant or placeholder code that is not currently in use.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#353
File: src/app/core/services/business-central/business-central-configuration/business-central-advanced-settings.service.ts:0-0
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user ashwin1111 has confirmed the correction of a typo in the method name from `getExpenseFilelds` to `getExpenseFields` in the `BusinessCentralAdvancedSettingsService` class.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#353
File: src/app/core/services/business-central/business-central-configuration/business-central-advanced-settings.service.ts:0-0
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user ashwin1111 has confirmed the correction of a typo in the method name from `getExpenseFilelds` to `getExpenseFields` in the `BusinessCentralAdvancedSettingsService` class.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user requested the removal of the "CRE" acronym from the subLabel string in the business-central-export-settings.component.html file, indicating a preference for not including this acronym in the user interface text.
Learnt from: anishfyle
PR: fylein/fyle-integrations-app#367
File: src/app/core/models/sage300/db/sage300-accounting-export.model.ts:10-14
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user agreed with the suggestion to remove an unused import statement for `BusinessCentralAccountingExport` after the type was no longer used in the `Sage300AccountingExportResponse` interface.
Learnt from: anishfyle
PR: fylein/fyle-integrations-app#367
File: src/app/core/models/sage300/db/sage300-accounting-export.model.ts:10-14
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user agreed with the suggestion to remove an unused import statement for `BusinessCentralAccountingExport` after the type was no longer used in the `Sage300AccountingExportResponse` interface.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user ashwin1111 requested the removal of the "CRE" acronym from the subLabel string in the business-central-export-settings.component.html file, indicating a preference for not including this acronym in the user interface text.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user ashwin1111 requested the removal of the "CRE" acronym from the subLabel string in the business-central-export-settings.component.html file, indicating a preference for not including this acronym in the user interface text.
src/app/integrations/qbo/qbo-onboarding/qbo-clone-settings/qbo-clone-settings.component.html (2)
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user ashwin1111 has confirmed the suggestion to replace the hardcoded reference to 'Sage Intacct' with a dynamic reference to the target system using the variable `targetSystemName` in the subLabel string within the `business-central-export-settings.component.html` file.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user ashwin1111 has confirmed the suggestion to replace the hardcoded reference to 'Sage Intacct' with a dynamic reference to the target system using the variable `targetSystemName` in the subLabel string within the `business-central-export-settings.component.html` file.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Cursor BugBot
  • GitHub Check: lint
  • GitHub Check: unit-test
🔇 Additional comments (2)
src/app/shared/components/configuration/configuration-import-field/configuration-import-field.component.html (1)

44-46: Sub-label rendering looks good

The translation key, helpers and branding style hook up correctly; nothing to flag.

src/app/integrations/qbo/qbo-onboarding/qbo-clone-settings/qbo-clone-settings.component.html (1)

476-478: Disabled preview unit is not translated reactively

Using disabled + [value] will freeze the value at render time.
If the user changes the frequency again, the singular/plural text will not update.

Prefer readonly with ngModel/formControl binding or recompute the label elsewhere. Example:

<input
  class="..."
  readonly
  [value]="advancedSettingForm.get('exportScheduleFrequency')?.value > 1
           ? ('qboCloneSettings.hours' | transloco)
           : ('qboCloneSettings.hour'  | transloco)">

Comment on lines +51 to +57
{{ 'qboCloneSettings.exportReimbursableExpensesLabel' | transloco }}
<app-svg-icon [width]="'16px'" [height]="'16px'" [svgSource]="'info-circle-fill'" [styleClasses]="'tw-text-placeholder tw-ml-8-px'" [tooltipText]="'qboCloneSettings.exportReimbursableExpensesTooltip' | transloco: { brandName: brandingConfig.brandName }" [tooltipPosition]="'top'"></app-svg-icon>
</div>
<div>
<p-inputSwitch formControlName="reimbursableExpense"></p-inputSwitch>
</div>
</div>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

p-inputSwitch lacks an accessible label

The toggle controlling “Export Reimbursable Expenses” is rendered without an aria-label (or similar) attribute.
Screen-reader users will hear “switch” with no context.

Add an explicit label:

<p-inputSwitch
  ariaLabel="Export reimbursable expenses"
  formControlName="reimbursableExpense"></p-inputSwitch>

Apply the same fix to the other toggles throughout the template.

🤖 Prompt for AI Agents
In
src/app/integrations/qbo/qbo-onboarding/qbo-clone-settings/qbo-clone-settings.component.html
around lines 51 to 57, the p-inputSwitch component controlling "Export
Reimbursable Expenses" lacks an accessible label, causing screen readers to
announce it without context. Add an ariaLabel attribute with a descriptive
string like "Export reimbursable expenses" to the p-inputSwitch element. Repeat
this fix for all other toggle switches in the template to ensure accessibility.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@coderabbitai coderabbitai bot left a 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

🧹 Nitpick comments (2)
src/app/integrations/xero/xero-onboarding/xero-clone-settings/xero-clone-settings.component.html (2)

325-333: Duplicate isFieldMandatory attribute – remove the redundancy

isFieldMandatory is set twice on the same element. The second declaration silently overrides the first and adds noise to the template.

- [isFieldMandatory]="true"   <!-- line 329 – remove -->

Removing the duplicate improves readability with zero functional impact.


11-102: Heavy markup duplication – consider extracting reusable wrappers

Multiple sections repeat the same wrapper structure:

<div class="tw-px-24-px ...">
  <div class="tw-rounded-12-px tw-border-border-tertiary tw-border tw-bg-white">
    <div class="tw-p-24-px">
      <!-- field -->

Abstracting this into a small presentational component (e.g. <clone-setting-card>) or a structural directive would:

• Eliminate >150 duplicated lines
• Centralise styling tweaks (single-point change)
• Improve template readability

Not urgent but worthwhile for long-term maintainability.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3c0713c and cd99bc0.

📒 Files selected for processing (2)
  • src/app/core/services/xero/xero-configuration/xero-onboarding.service.ts (1 hunks)
  • src/app/integrations/xero/xero-onboarding/xero-clone-settings/xero-clone-settings.component.html (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • src/app/core/services/xero/xero-configuration/xero-onboarding.service.ts
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user ashwin1111 has confirmed the suggestion to replace the hardcoded reference to 'Sage Intacct' with a dynamic reference to the target system using the variable `targetSystemName` in the subLabel string within the `business-central-export-settings.component.html` file.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user ashwin1111 has confirmed the suggestion to replace the hardcoded reference to 'Sage Intacct' with a dynamic reference to the target system using the variable `targetSystemName` in the subLabel string within the `business-central-export-settings.component.html` file.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-06-10T19:13:15.470Z
Learning: The user ashwin1111 has confirmed the replacement of the 'intacct' keyword with the variable `targetSystemName` for dynamic system naming in the `business-central-export-settings.component.html` file.
Learnt from: ashwin1111
PR: fylein/fyle-integrations-app#343
File: src/app/integrations/business-central/business-central-shared/business-central-export-settings/business-central-export-settings.component.html:0-0
Timestamp: 2024-10-08T15:51:28.972Z
Learning: The user ashwin1111 has confirmed the replacement of the 'intacct' keyword with the variable `targetSystemName` for dynamic system naming in the `business-central-export-settings.component.html` file.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Cursor BugBot
  • GitHub Check: unit-test
🔇 Additional comments (1)
src/app/integrations/xero/xero-onboarding/xero-clone-settings/xero-clone-settings.component.html (1)

198-209: Enum binding is already exposed in the component

The xero-clone-settings.component.ts class declares:

  • Line 139: XeroCorporateCreditCardExpensesObject = XeroCorporateCreditCardExpensesObject;

This makes the enum accessible in the template, so the comparison will work at runtime. No changes are needed.

Comment on lines +134 to +144
<div class="clone-setting--dependent-field" *ngIf="exportSettingForm.controls.creditCardExportType.value">
<app-clone-setting-field
[label]="'xeroCloneSettings.postToBankAccountLabel' | transloco: { exportType: (exportSettingForm.controls.reimbursableExportType.value | snakeCaseToSpaceCase | lowercase) }"
[options]="bankAccounts"
[placeholder]="'xeroCloneSettings.selectBankAccountPlaceholder' | transloco"
[form]="exportSettingForm"
[isFieldMandatory]="true"
[formControllerName]="'bankAccount'"
[dropdownDisplayKey]="'name'"
[tooltipText]="'xeroCloneSettings.postToBankAccountTooltip' | transloco">
</app-clone-setting-field>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Incorrect exportType interpolation – references the wrong form control

The label for the Post to Bank Account field is interpolated with exportSettingForm.controls.reimbursableExportType.value, but this block is rendered for credit-card exports (guarded by creditCardExportType).
If reimbursable settings are disabled, the expression resolves to undefined, yielding a broken/empty translation.

- [label]="'xeroCloneSettings.postToBankAccountLabel' | transloco: { exportType: (exportSettingForm.controls.reimbursableExportType.value | snakeCaseToSpaceCase | lowercase) }"
+ [label]="'xeroCloneSettings.postToBankAccountLabel' | transloco: { exportType: (exportSettingForm.controls.creditCardExportType.value | snakeCaseToSpaceCase | lowercase) }"

Fixing this prevents user-visible i18n glitches and keeps the label contextually correct.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<div class="clone-setting--dependent-field" *ngIf="exportSettingForm.controls.creditCardExportType.value">
<app-clone-setting-field
[label]="'xeroCloneSettings.postToBankAccountLabel' | transloco: { exportType: (exportSettingForm.controls.reimbursableExportType.value | snakeCaseToSpaceCase | lowercase) }"
[options]="bankAccounts"
[placeholder]="'xeroCloneSettings.selectBankAccountPlaceholder' | transloco"
[form]="exportSettingForm"
[isFieldMandatory]="true"
[formControllerName]="'bankAccount'"
[dropdownDisplayKey]="'name'"
[tooltipText]="'xeroCloneSettings.postToBankAccountTooltip' | transloco">
</app-clone-setting-field>
<div class="clone-setting--dependent-field" *ngIf="exportSettingForm.controls.creditCardExportType.value">
<app-clone-setting-field
[label]="'xeroCloneSettings.postToBankAccountLabel' | transloco: { exportType: (exportSettingForm.controls.creditCardExportType.value | snakeCaseToSpaceCase | lowercase) }"
[options]="bankAccounts"
[placeholder]="'xeroCloneSettings.selectBankAccountPlaceholder' | transloco"
[form]="exportSettingForm"
[isFieldMandatory]="true"
[formControllerName]="'bankAccount'"
[dropdownDisplayKey]="'name'"
[tooltipText]="'xeroCloneSettings.postToBankAccountTooltip' | transloco">
</app-clone-setting-field>
</div>
🤖 Prompt for AI Agents
In
src/app/integrations/xero/xero-onboarding/xero-clone-settings/xero-clone-settings.component.html
around lines 134 to 144, the label interpolation for the Post to Bank Account
field incorrectly uses reimbursableExportType instead of creditCardExportType,
causing incorrect or empty translations when reimbursable settings are disabled.
Update the label binding to use
exportSettingForm.controls.creditCardExportType.value for the exportType
interpolation to ensure the label matches the displayed export type and
translations render correctly.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@github-actions
Copy link

Unit Test Coverage % values
Statements 32.88% ( 4464 / 13573 )
Branches 24.61% ( 1183 / 4806 )
Functions 25.74% ( 936 / 3636 )
Lines 32.99% ( 4383 / 13283 )

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Help Text Visibility Issue in Clone Settings

The h5 element's help text is now always visible due to the removal of the *ngIf="!isCloneSettingView" condition. This unintended change causes the text to display in clone setting views where it should be hidden, breaking the intended UI. Additionally, a hardcoded phrase " will be an available field when creating an expense." was removed from this help text.

src/app/shared/components/configuration/configuration-import-field/configuration-import-field.component.html#L43-L46

</h4>
<h5 class="!tw-text-text-muted tw-text-14-px !tw-font-400 !tw-leading-4" [ngClass]="brandingStyle.common.inputLabelTextStyle">
{{ 'configurationImportField.importedDestinationFieldInfo' | transloco: { destinationField: (getDestinationField(expenseField.get('destination_field')?.value | snakeCaseToSpaceCase) | lowercase) } }}
</h5>

Fix in CursorFix in Web


Was this report helpful? Give feedback by reacting with 👍 or 👎

@github-actions
Copy link

🔁 Code Duplication Report - Angular

Format Files analyzed Total lines Total tokens Clones found Duplicated lines Duplicated tokens
typescript 725 50973 464811 312 5122 (10.05%) 48574 (10.45%)
scss 62 3554 19420 7 144 (4.05%) -0.01% 🚀 738 (3.80%) -0.01% 🚀
markup 300 12858 135623 160 1666 (12.96%) +0.19% ❗ 15516 (11.44%) +0.15% ❗
python 4 727 5680 3 32 (4.40%) 368 (6.48%)
yaml 3 155 905 0 0 (0.00%) 0 (0.00%)
javascript 4 193 2175 0 0 (0.00%) 0 (0.00%)
markdown 2 96 366 0 0 (0.00%) 0 (0.00%)
bash 2 66 762 0 0 (0.00%) 0 (0.00%)
Total: 1102 68622 629742 482 6964 (10.15%) +0.04% ❗ 65196 (10.35%) +0.03% ❗

⚠️ This PR introduces 0.03% more duplicated code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XL Extra Large PR

Development

Successfully merging this pull request may close these issues.

3 participants