Skip to content

fix: integrations app usability fixes#1642

Merged
DhaaraniCIT merged 6 commits intomasterfrom
integration-usability-fix-1
Nov 14, 2025
Merged

fix: integrations app usability fixes#1642
DhaaraniCIT merged 6 commits intomasterfrom
integration-usability-fix-1

Conversation

@DhaaraniCIT
Copy link
Contributor

@DhaaraniCIT DhaaraniCIT commented Nov 5, 2025

Description

fix: integrations app usability fixes

Clickup

https://app.clickup.com

Screenshot 2025-11-05 at 11 43 21 AM Screenshot 2025-11-05 at 11 43 33 AM Screenshot 2025-11-06 at 12 35 20 PM Screenshot 2025-11-10 at 1 57 36 PM Screenshot 2025-11-10 at 1 58 03 PM Screenshot 2025-11-10 at 3 44 22 PM Screenshot 2025-11-11 at 2 14 42 PM Screenshot 2025-11-11 at 2 14 09 PM Screenshot 2025-11-11 at 3 05 51 PM Screenshot 2025-11-11 at 3 06 10 PM

Summary by CodeRabbit

  • Style
    • Refined spacing, wrapping and compacted layout across import/export and configuration screens for improved readability; adjusted dropdown hover/focus/active visuals and bumped mapped/unmapped label size; updated theme color tones; brand name displays without forced sentence-casing.
  • New Features
    • Added a custom field preview text shown in import settings.
    • Chip inputs now accept comma-separated tokens.
  • Bug Fixes
    • Fixed label height/spacing to prevent overflow and improve alignment.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 5, 2025

Walkthrough

Small UI and styling updates across Intacct templates and shared components: adjusted wrapping and vertical spacing, simplified some container classes, added chip separators, tweaked dropdown and mapped/unmapped styles, and updated a few color primitives and i18n text entries. No public APIs changed.

Changes

Cohort / File(s) Summary
Intacct import settings template
src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.html, src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.scss
Added tw-wrap-normal to headers/label containers, reduced several tw-pt-[17px]tw-pt-[5px], removed some wrapper divs, adjusted padding classes (e.g., tw-px-24-px, tw-pt-24-px), changed .label-content height from 100pxauto, and updated custom-field preview/heading structure. No logic/bindings changed.
Intacct advanced/export settings templates
src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.html, src/app/integrations/intacct/intacct-shared/intacct-export-settings/intacct-export-settings.component.html
Commented-out preview/description

elements in advanced settings; added dynamic [ngClass] binding to export card container to include brandingStyle.configuration.configurationExportCardSecondary alongside existing static class. No control-flow or API changes.

Location branding rendering
src/app/shared/components/si/core/intacct-location-entity/intacct-location-entity.component.html
Replaced tw-mt-6 with tw-my-6 on container and removed sentenceCase pipe from brandingConfig.brandName bindings so the brand name renders as-is.
Configuration select & spacing adjustments
src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html, src/app/shared/components/configuration/configuration-skip-export/configuration-skip-export.component.html, src/app/shared/components/si/helper/skip-export/skip-export.component.html
Adjusted icon/no-icon spacing logic for import settings (noIcon vs tw-pl-16-px), removed a conditional left-margin class for import_code cases, and added separator="," to second p-chips fields to enable tokenized input.
Dashboard spacing tweak
src/app/shared/components/dashboard/dashboard-export-summary-section/dashboard-export-summary-section.component.html
Changed conditional padding class from tw-py-10-px to tw-pt-10-px for the "last failed export" row when count is falsy.
Shared styles & theme primitives
src/styles.scss, src/assets/themes/fyle/primitives_variables.scss
Updated dropdown item highlight/focus/hover background and text color rules; increased .mapped/.unmapped font-size 12px → 13px; tweaked several color primitive values (green-* and red-* changes).
I18n text
src/assets/i18n/en.json
Minor punctuation/case edits (added periods, lowercased "address"), and added customFieldPreviewText string.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • Areas to focus review on:
    • intacct-import-settings.component.html / SCSS — verify wrapping and vertical spacing across breakpoints; ensure no content truncation.
    • configuration-select-field.component.html — confirm icon/no-icon spacing logic for import settings doesn't break alignment.
    • primitives_variables.scss & styles.scss — check color contrast and hover/focus visibility across components.
    • en.json — ensure new i18n key is used where intended and punctuation/case changes are acceptable.

Suggested reviewers

  • ashwin1111

Poem

🐇 I nudge a class, I trim a space,
I let the brand name show its face,
Colors shift and paddings shrink,
The UI hops and gives a wink,
A tiny change, a lighter place.

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'fix: integrations app usability fixes' is partially related to the changeset, referring to UI/UX improvements but lacks specificity about the main changes. Consider a more specific title that highlights the primary usability fix, such as 'fix: improve UI spacing and styling in integrations settings' or similar.
Description check ❓ Inconclusive The description lacks detail beyond the title and ClickUp link; it does not explain the specific fixes, changes made, or impact on users. Expand the description to detail the specific usability fixes implemented, expected impacts, and rationale for the changes beyond just providing screenshots.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch integration-usability-fix-1

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

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added the size/S Small PR label Nov 5, 2025
@github-actions github-actions bot added size/M Medium PR and removed size/S Small PR labels Nov 11, 2025
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 (1)
src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html (1)

177-177: Clarify conflicting ngClass conditions.

This line contains an array of two ternary conditions that can produce conflicting class names. For example, when formControllerName === 'dayOfWeek', both the first condition ('tw-pl-34-px') and second condition ('tw-pl-30-px') are applied as separate array elements, which creates CSS precedence confusion.

Consider restructuring this to use an object notation or a single conditional to make the logic clearer and avoid class name conflicts:

- <div [ngClass]="[formControllerName !== 'dayOfMonth' ? 'tw-pl-34-px' : 'tw-pl-70-px', formControllerName === 'dayOfWeek' ? 'tw-pl-30-px' : 'tw-pl-34-px']">
+ <div [ngClass]="formControllerName === 'dayOfMonth' ? 'tw-pl-70-px' : formControllerName === 'dayOfWeek' ? 'tw-pl-30-px' : 'tw-pl-34-px'">
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8ed4f57 and 113bb06.

📒 Files selected for processing (11)
  • src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.html (2 hunks)
  • src/app/integrations/intacct/intacct-shared/intacct-export-settings/intacct-export-settings.component.html (1 hunks)
  • src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.html (9 hunks)
  • src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.scss (1 hunks)
  • src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html (2 hunks)
  • src/app/shared/components/configuration/configuration-skip-export/configuration-skip-export.component.html (1 hunks)
  • src/app/shared/components/dashboard/dashboard-export-summary-section/dashboard-export-summary-section.component.html (1 hunks)
  • src/app/shared/components/si/core/intacct-location-entity/intacct-location-entity.component.html (2 hunks)
  • src/app/shared/components/si/helper/skip-export/skip-export.component.html (1 hunks)
  • src/assets/i18n/en.json (2 hunks)
  • src/styles.scss (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • src/app/integrations/intacct/intacct-shared/intacct-export-settings/intacct-export-settings.component.html
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/styles.scss
  • src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.html
  • src/app/shared/components/si/core/intacct-location-entity/intacct-location-entity.component.html
🧰 Additional context used
📓 Path-based instructions (4)
**/*.component.{ts,html}

📄 CodeRabbit inference engine (.cursor/rules/component-i18n-key-naming.mdc)

**/*.component.{ts,html}: Top-level object in i18n files must be the component or feature folder name, converted from the file name by removing the prefixes 'feature', 'ui', or 'component' (in that order) and converting from kebab-case to camelCase.
Keys inside the top-level i18n object must not be nested beyond the first level; only one level of keys is allowed.
Keys inside the top-level i18n object must use meaningful, semantic, and context-aware names (e.g., 'title', 'accountDisabledError', 'submitButton'); avoid generic names like 'label1', 'text1', 'message1'.
Do not use prefixes like 'ui', 'feature', or 'component' in the top-level i18n object name; the object name should be the context.
Do not translate strings that are already translation keys, tracking/analytics strings, strings with only special characters, comments, non-user-visible text, or variable bindings and expressions.
One i18n object per component or feature; do not combine multiple components/features into a single i18n object.

Files:

  • src/app/shared/components/si/helper/skip-export/skip-export.component.html
  • src/app/shared/components/configuration/configuration-skip-export/configuration-skip-export.component.html
  • src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.html
  • src/app/shared/components/dashboard/dashboard-export-summary-section/dashboard-export-summary-section.component.html
  • src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html
src/**/*.component.{ts,html}

📄 CodeRabbit inference engine (.cursor/rules/component-i18n-key-naming.mdc)

For files in 'src/**', add or update i18n keys in the corresponding translation files located at 'src/assets/i18n/{lang}.json', and ensure the key is present in every supported language file.

Files:

  • src/app/shared/components/si/helper/skip-export/skip-export.component.html
  • src/app/shared/components/configuration/configuration-skip-export/configuration-skip-export.component.html
  • src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.html
  • src/app/shared/components/dashboard/dashboard-export-summary-section/dashboard-export-summary-section.component.html
  • src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html
**/*.component.html

📄 CodeRabbit inference engine (.cursor/rules/component-i18n-key-naming.mdc)

Prefer property binding for user-facing attributes in Angular templates (e.g., [placeholder], [title]) when using translation keys.

Files:

  • src/app/shared/components/si/helper/skip-export/skip-export.component.html
  • src/app/shared/components/configuration/configuration-skip-export/configuration-skip-export.component.html
  • src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.html
  • src/app/shared/components/dashboard/dashboard-export-summary-section/dashboard-export-summary-section.component.html
  • src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html
src/assets/i18n/*.json

📄 CodeRabbit inference engine (.cursor/rules/atomics-i18n-key-pattern.mdc)

src/assets/i18n/*.json: Group i18n keys under the correct atomic root: 'services', 'pipes', or 'directives' in the translation JSON files
Add i18n keys to every supported language file in 'src/assets/i18n/{lang}.json'
Keep child keys alphabetically sorted within each group in translation JSON files to reduce merge conflicts
Use only the three roots: services, pipes, directives for i18n key grouping

Files:

  • src/assets/i18n/en.json
🧠 Learnings (3)
📚 Learning: 2024-10-08T15:51:28.972Z
Learnt from: ashwin1111
Repo: fylein/fyle-integrations-app PR: 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.

Applied to files:

  • src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.scss
📚 Learning: 2024-06-10T19:13:15.470Z
Learnt from: ashwin1111
Repo: fylein/fyle-integrations-app PR: 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.

Applied to files:

  • src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.scss
📚 Learning: 2025-07-28T07:37:26.776Z
Learnt from: CR
Repo: fylein/fyle-integrations-app PR: 0
File: .cursor/rules/component-i18n-key-naming.mdc:0-0
Timestamp: 2025-07-28T07:37:26.776Z
Learning: Applies to **/*.component.html : Prefer property binding for user-facing attributes in Angular templates (e.g., [placeholder], [title]) when using translation keys.

Applied to files:

  • src/app/shared/components/configuration/configuration-skip-export/configuration-skip-export.component.html
🔇 Additional comments (7)
src/app/integrations/intacct/intacct-shared/intacct-import-settings/intacct-import-settings.component.scss (1)

22-28: Responsive height adjustment improves layout flexibility.

Changing .label-content height from fixed to auto is a solid UX improvement that allows the container to adapt to its content dynamically rather than being constrained to a fixed dimension. This aligns well with the overall usability focus of this PR.

Please verify that this change renders correctly across related import settings components (particularly in HTML templates that use this .label-content class) and that it integrates well with the broader UI layout updates mentioned in the PR summary.

src/app/shared/components/si/helper/skip-export/skip-export.component.html (1)

108-108: Separator addition aligns chip field behavior across the form.

The separator="," attribute makes the second chip field consistent with the first one at line 48, enabling tokenized input. Property binding for the placeholder attribute follows best practices.

src/app/shared/components/configuration/configuration-skip-export/configuration-skip-export.component.html (1)

128-128: Separator addition aligns chip field behavior across the form.

The separator="," attribute makes the second chip field consistent with the first one at line 58, enabling tokenized input. Property binding for all user-facing attributes (placeholder, tooltips) correctly follows the guidelines.

src/app/shared/components/configuration/configuration-select-field/configuration-select-field.component.html (1)

4-4: The review comment is based on a false premise. The TypeScript definition in configuration-select-field.component.ts line 81 explicitly defines the property as @Input() isimportSettings: boolean = false; (lowercase 'i'). The HTML file correctly uses the defined property name. No change is needed.

Likely an incorrect or invalid review comment.

src/app/shared/components/dashboard/dashboard-export-summary-section/dashboard-export-summary-section.component.html (1)

39-39: Minor spacing refinement for conditional state.

Adjusted vertical padding to use top-padding only (tw-pt-10-px) when failed exports count is falsy, which appears to be part of the broader layout refinements in this PR.

src/assets/i18n/en.json (2)

37-37: Text quality improvements for form labels and error messages.

Minor refinements: added trailing periods to validation errors for consistency and lowercased "address" in label for proper sentence casing.

Also applies to: 38-38, 40-40


2085-2086: Dismiss the review comment—subdirectories are tenant-specific overrides, not language files.

The co/ and fyle/ subdirectories are not language variants but rather tenant/brand-specific or feature-specific translation overrides containing only selective keys. The root src/assets/i18n/en.json contains the complete translation set including intacctImportSettings, while the subdirectories do not have this section at all. Since intacctImportSettings does not exist in co/en.json or fyle/en.json, the new keys are correctly placed in the root translation file only. The coding guideline refers to language files (en, es, fr variants), not tenant-specific overrides.

Likely an incorrect or invalid review comment.

[formControllerName]="'setTopMemoField'"></app-configuration-multi-select>
<div class="tw-pl-60-px tw-pr-24-px tw-pb-24-px">
<p class="tw-text-form-label-text-color tw-text-14-px tw-mb-12-px">{{ 'intacctAdvancedSettings.preview' | transloco }} {{'intacct.common.descriptionText' | transloco}}</p>
<!-- <p class="tw-text-form-label-text-color tw-text-14-px tw-mb-12-px">{{ 'intacctAdvancedSettings.preview' | transloco }} {{'intacct.common.descriptionText' | transloco}}</p> -->
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 | 🔴 Critical

🧩 Analysis chain

Remove commented-out code or document the reason for keeping it.

Commented-out code should either be deleted or retained with an explanatory comment. If this is intentional (e.g., temporary toggle, feature flag), please add a comment explaining the intent.

Additionally, verify that the translation keys intacctAdvancedSettings.preview and intacct.common.descriptionText are still used elsewhere in the codebase; if not, they should be removed from the i18n files to maintain a clean translation catalog.

Also applies to: 153-153


🏁 Script executed:

#!/bin/bash
# Verify if translation keys are used elsewhere in the codebase

echo "=== Searching for 'intacctAdvancedSettings.preview' usage ==="
rg -n "intacctAdvancedSettings\.preview" --type html --type ts

echo ""
echo "=== Searching for 'intacct.common.descriptionText' usage ==="
rg -n "intacct\.common\.descriptionText" --type html --type ts

Length of output: 1395


Delete commented-out code and remove unused translation keys from i18n files.

Both translation keys (intacctAdvancedSettings.preview and intacct.common.descriptionText) are used only in the commented-out code at lines 136 and 153. Since these keys are not used anywhere else in the codebase, the commented code should be deleted and the corresponding entries removed from the translation files.

🤖 Prompt for AI Agents
In
src/app/integrations/intacct/intacct-shared/intacct-advanced-settings/intacct-advanced-settings.component.html
around lines 136 and 153, remove the commented-out <p> lines that reference the
unused translation keys; then delete the corresponding keys
intacctAdvancedSettings.preview and intacct.common.descriptionText from the i18n
translation files (all locales) after confirming they are not referenced
elsewhere in the repo. Ensure you run a quick global search for those keys
before removal and update any translation snapshots or build artifacts if
required.

@github-actions
Copy link

🔁 Code Duplication Report - Angular

Format Files analyzed Total lines Total tokens Clones found Duplicated lines Duplicated tokens
typescript 778 55985 512783 321 5353 (9.56%) 50671 (9.88%)
scss 66 3687 20052 7 144 (3.91%) 738 (3.68%)
markup 335 14891 153193 166 1751 (11.76%) +0.04% ❗ 16476 (10.76%) +0.05% ❗
python 4 727 5680 3 32 (4.40%) 368 (6.48%)
yaml 3 155 905 0 0 (0.00%) 0 (0.00%)
javascript 5 295 3063 0 0 (0.00%) 0 (0.00%)
markdown 2 96 366 0 0 (0.00%) 0 (0.00%)
bash 2 69 804 0 0 (0.00%) 0 (0.00%)
Total: 1195 75905 696846 497 7280 (9.59%) +0.01% ❗ 68253 (9.79%) +0.01% ❗

⚠️ This PR introduces 0.01% more duplicated code.

@DhaaraniCIT DhaaraniCIT merged commit 0f4265e into master Nov 14, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/M Medium PR

Development

Successfully merging this pull request may close these issues.

2 participants