Skip to content

Feat datepickers/build nepali datepicker component#3741

Closed
JenishSambahamphe24 wants to merge 15 commits into
openMF:devfrom
dbugsoft:feat-datepickers/build-nepali-datepicker-component
Closed

Feat datepickers/build nepali datepicker component#3741
JenishSambahamphe24 wants to merge 15 commits into
openMF:devfrom
dbugsoft:feat-datepickers/build-nepali-datepicker-component

Conversation

@JenishSambahamphe24

Copy link
Copy Markdown

Description

Describe the changes made and why they were made instead of how they were made. List any dependencies that are required for this change.

Related issues and discussion

#{Issue Number}

Screenshots, if any

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • If you have multiple commits please combine them into one commit by squashing them.

  • Read and understood the contribution guidelines at web-app/.github/CONTRIBUTING.md.

iSimran2023 and others added 14 commits June 19, 2026 16:52
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Move inline <style> from index.html to assets/loader.css to fix HTMLHint
style-disabled rule. Run prettier --write across the repo to fix 2839
formatting violations that were failing CI.
…I, and login fixes

- Replace Institution/Clients/Reports/Admin dropdown menus in toolbar with direct
  router links; consolidate into Member Management, Reports Overview, and Admin pages
- Add CardMenuComponent: generic card-grid landing page driven by route data
- Set default redirect to /member-management instead of /home
- Compact form field density (density -2) and stepper styles app-wide
- Fix login button to be disabled when form is invalid (loginForm.invalid || loading)
- Add .form-section wrapper and .resources-section (desktop) to login page
  so Playwright responsive E2E tests can find the expected CSS classes
- Fix E2E docker-compose: set FINERACT_API_URL=http://localhost:4200 so the
  Angular app routes API calls through Nginx proxy to local Fineract container
  instead of falling back to the hardcoded external server
- Fix Playwright config: ClientsModule is registered at /members not /clients;
  update routes.ts, client-view.page.ts, close-client.page.ts, and
  close-client.spec.ts so all URL assertions and navigation use /members/:id
- Members list: blue table header (normal-case headers), white sort
  arrows, S.No. column, toolbar alignment, card centered to breadcrumb,
  empty-state fix (@if not [hidden])
- Login page: language selector top-right, Helpful Resources commented
  out, field backgrounds transparent, footer pinned to bottom
- Navbar: language selector restored to toolbar
- Typography: set Inter as root font in Material theme config and toolbar
  tokens; replace Roboto/Tahoma/DM-Sans with Inter in 19 component files
  so font is consistent across navbar, tables, forms and all pages
- Explicit font-family on mat-input placeholder and floating label
- Create Member stepper: dynamic step labels, toast on forward nav only,
  positioned top-right; fix HTMLHint inline-style with .contents-wrapper
- Remove text-transform:uppercase app-wide (tables, labels, section heads)
- Mobile number validation: exactly 10 digits
- Shell: sidenav flex-column so footer stays at page bottom
- Translations (en-US): Client → Member for Name, Type, Classification,
  Status, Transfer, Identifier, and 'No member was found'
- E2E: remove .resources-section assertions (section intentionally hidden)
fe: UI polish — members list, login page, form steps, fonts & toasts
@JenishSambahamphe24
JenishSambahamphe24 requested a review from a team July 21, 2026 03:05
@mifos-cla-check

Copy link
Copy Markdown

👋 Hi @JenishSambahamphe24 — thank you for your pull request.

This PR is currently blocked because we do not have a Contributor License Agreement (CLA) on file for your GitHub account.

To get unblocked:

  1. Complete the form at https://mifos.org/about-us/financial-legal/mifos-contributor-agreement
  2. Complete the CLA signing process
  3. Once verified you will be added to the approved contributors list and this PR check will be cleared

@mifos-cla-check mifos-cla-check Bot added the cla-required CLA signature required before this PR can be merged label Jul 21, 2026
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 139 files, which is 39 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 92b253df-cf64-4ce0-8ef3-745af5e7ecd2

📥 Commits

Reviewing files that changed from the base of the PR and between 9e879e5 and 5aae2d1.

⛔ Files ignored due to path filters (13)
  • .github/workflows/deploy-staging.yml is excluded by !.github/** and included by **/*
  • package-lock.json is excluded by !**/package-lock.json and included by **/*
  • src/apple-touch-icon.png is excluded by !**/*.png and included by **/*
  • src/assets/images/MifosX_logo.png is excluded by !**/*.png and included by **/*
  • src/assets/images/MifosX_logoSmall.png is excluded by !**/*.png and included by **/*
  • src/assets/images/debug-bg.png is excluded by !**/*.png and included by **/*
  • src/assets/images/debug.png is excluded by !**/*.png and included by **/*
  • src/assets/images/default_home.png is excluded by !**/*.png and included by **/*
  • src/assets/images/hero.jpg is excluded by !**/*.jpg and included by **/*
  • src/assets/images/mifos-logo-flat.png is excluded by !**/*.png and included by **/*
  • src/assets/images/mifos_lg-logo.jpg is excluded by !**/*.jpg and included by **/*
  • src/assets/images/white-mifos.png is excluded by !**/*.png and included by **/*
  • src/favicon.ico is excluded by !**/*.ico and included by **/*
📒 Files selected for processing (144)
  • .gitignore
  • docker-compose.e2e.yml
  • package.json
  • playwright/config/routes.ts
  • playwright/pages/client-view.page.ts
  • playwright/pages/close-client.page.ts
  • playwright/pages/login.page.ts
  • playwright/tests/close-client.spec.ts
  • playwright/tests/login-responsive.spec.ts
  • proxy.conf.js
  • src/app/account-transfers/view-account-transfer/view-account-transfer.component.ts
  • src/app/app-routing.module.ts
  • src/app/centers/centers-view/center-actions/manage-groups/manage-groups.component.scss
  • src/app/centers/create-center/create-center.component.scss
  • src/app/clients/client-stepper/client-family-members-step/client-family-member-dialog/client-family-member-dialog.component.html
  • src/app/clients/client-stepper/client-family-members-step/client-family-member-dialog/client-family-member-dialog.component.scss
  • src/app/clients/client-stepper/client-family-members-step/client-family-members-step.component.ts
  • src/app/clients/client-stepper/client-general-step/client-general-step.component.html
  • src/app/clients/client-stepper/client-general-step/client-general-step.component.scss
  • src/app/clients/client-stepper/client-general-step/client-general-step.component.ts
  • src/app/clients/client-stepper/client-preview-step/client-preview-step.component.html
  • src/app/clients/client-stepper/client-preview-step/client-preview-step.component.scss
  • src/app/clients/clients-routing.module.ts
  • src/app/clients/clients-view/clients-view.component.ts
  • src/app/clients/clients-view/personal-data-tab/personal-data-tab.component.html
  • src/app/clients/clients-view/personal-data-tab/personal-data-tab.component.scss
  • src/app/clients/clients-view/personal-data-tab/personal-data-tab.component.ts
  • src/app/clients/clients.component.html
  • src/app/clients/clients.component.ts
  • src/app/clients/create-client/create-client.component.html
  • src/app/clients/create-client/create-client.component.scss
  • src/app/clients/create-client/create-client.component.ts
  • src/app/collaterals/view-collateral/view-collateral.component.html
  • src/app/collections/individual-collection-sheet/individual-collection-sheet.component.scss
  • src/app/core/authentication/authentication.service.ts
  • src/app/core/shell/breadcrumb/breadcrumb.component.html
  • src/app/core/shell/breadcrumb/breadcrumb.component.ts
  • src/app/core/shell/shell.component.scss
  • src/app/core/shell/sidenav/sidenav.component.html
  • src/app/core/shell/toolbar/_toolbar-tokens.scss
  • src/app/core/shell/toolbar/toolbar.component.html
  • src/app/deposits/fixed-deposits/fixed-deposit-account-view/charges-tab/charges-tab.component.ts
  • src/app/deposits/fixed-deposits/fixed-deposit-account-view/fixed-deposit-account-view.component.ts
  • src/app/deposits/fixed-deposits/fixed-deposit-account-view/transactions-tab/transactions-tab.component.ts
  • src/app/deposits/recurring-deposits/recurring-deposits-account-view/charges-tab/charges-tab.component.ts
  • src/app/deposits/recurring-deposits/recurring-deposits-account-view/recurring-deposits-account-view.component.ts
  • src/app/groups/create-group/create-group.component.scss
  • src/app/groups/groups-view/general-tab/general-tab.component.html
  • src/app/groups/groups-view/group-actions/group-transfer-clients/group-transfer-clients.component.scss
  • src/app/groups/groups-view/group-actions/manage-group-members/manage-group-members.component.scss
  • src/app/home/card-menu/card-menu.component.html
  • src/app/home/card-menu/card-menu.component.scss
  • src/app/home/card-menu/card-menu.component.ts
  • src/app/home/home-routing.module.ts
  • src/app/home/home.component.ts
  • src/app/home/home.module.ts
  • src/app/home/warning-dialog/warning-dialog.component.html
  • src/app/home/warning-dialog/warning-dialog.component.scss
  • src/app/home/warning-dialog/warning-dialog.component.ts
  • src/app/keyboards-shortcut-config.ts
  • src/app/loans/loans-account-stepper/loans-account-details-step/loans-account-details-step.component.scss
  • src/app/loans/loans-view/charges-tab/charges-tab.component.scss
  • src/app/loans/loans-view/loan-account-actions/create-guarantor/create-guarantor.component.scss
  • src/app/loans/loans-view/loan-account-dashboard/loan-account-dashboard.component.scss
  • src/app/loans/loans-view/loan-account-tab-base.component.ts
  • src/app/loans/loans-view/transactions-tab/transactions-tab.component.scss
  • src/app/loans/loans-view/transactions/view-transaction/view-transaction.component.scss
  • src/app/loans/loans-view/transactions/view-transaction/view-transaction.component.ts
  • src/app/login/login-form/login-form.component.html
  • src/app/login/login-form/login-form.component.scss
  • src/app/login/login-form/login-form.component.ts
  • src/app/login/login.component.html
  • src/app/login/login.component.scss
  • src/app/login/login.component.ts
  • src/app/pipes/ad-to-bs.pipe.ts
  • src/app/pipes/find.pipe.ts
  • src/app/products/loan-products/common/loan-product-base.component.ts
  • src/app/products/share-products/share-product-stepper/share-product-charges-step/share-product-charges-step.component.html
  • src/app/products/share-products/share-product-stepper/share-product-charges-step/share-product-charges-step.component.scss
  • src/app/products/share-products/share-product-stepper/share-product-currency-step/share-product-currency-step.component.html
  • src/app/products/share-products/share-product-stepper/share-product-currency-step/share-product-currency-step.component.scss
  • src/app/products/share-products/share-product-stepper/share-product-details-step/share-product-details-step.component.html
  • src/app/products/share-products/share-product-stepper/share-product-details-step/share-product-details-step.component.scss
  • src/app/products/share-products/share-product-stepper/share-product-market-price-step/share-product-market-price-step.component.ts
  • src/app/products/share-products/share-product-stepper/share-product-settings-step/share-product-settings-step.component.html
  • src/app/products/share-products/share-product-stepper/share-product-settings-step/share-product-settings-step.component.scss
  • src/app/products/share-products/share-product-stepper/share-product-terms-step/share-product-terms-step.component.html
  • src/app/products/share-products/share-product-stepper/share-product-terms-step/share-product-terms-step.component.scss
  • src/app/remittances/remittance-stepper/beneficiary-details-step/beneficiary-details-step.component.scss
  • src/app/remittances/remittance-stepper/confirm-payment-step/confirm-payment-step.component.scss
  • src/app/remittances/remittance-stepper/payment-receipt-step/payment-receipt-step.component.scss
  • src/app/remittances/remittance-stepper/remittance-details-step/remittance-details-step.component.scss
  • src/app/remittances/remittance-stepper/transactional-profile-step/transactional-profile-step.component.scss
  • src/app/savings/savings-account-view/transactions-tab/transactions-tab.component.ts
  • src/app/shared/account-number/account-number.component.ts
  • src/app/shared/footer/footer.component.html
  • src/app/shared/footer/footer.component.scss
  • src/app/shared/footer/footer.component.ts
  • src/app/shared/form-dialog/form-dialog.component.html
  • src/app/shared/form-dialog/form-dialog.component.scss
  • src/app/shared/material.module.ts
  • src/app/shared/nepali-date-input/nepali-date-input.component.html
  • src/app/shared/nepali-date-input/nepali-date-input.component.scss
  • src/app/shared/nepali-date-input/nepali-date-input.component.ts
  • src/app/shared/styles/list-layout.scss
  • src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.scss
  • src/app/system/configurations/business-date-tab/business-date-tab.component.scss
  • src/app/system/manage-jobs/cob-workflow/loan-locked/loan-locked.component.ts
  • src/app/tasks/checker-inbox-and-tasks-tabs/checker-inbox/checker-inbox.component.scss
  • src/app/tasks/checker-inbox-and-tasks-tabs/client-approval/client-approval.component.html
  • src/app/tasks/checker-inbox-and-tasks-tabs/client-approval/client-approval.component.scss
  • src/app/tasks/checker-inbox-and-tasks-tabs/council-approval/council-approval.component.html
  • src/app/tasks/checker-inbox-and-tasks-tabs/council-approval/council-approval.component.scss
  • src/app/tasks/checker-inbox-and-tasks-tabs/loan-approval/loan-approval.component.html
  • src/app/tasks/checker-inbox-and-tasks-tabs/loan-approval/loan-approval.component.scss
  • src/app/tasks/checker-inbox-and-tasks-tabs/loan-disbursal/loan-disbursal.component.html
  • src/app/tasks/checker-inbox-and-tasks-tabs/loan-disbursal/loan-disbursal.component.scss
  • src/app/tasks/checker-inbox-and-tasks-tabs/reschedule-loan/reschedule-loan.component.html
  • src/app/tasks/checker-inbox-and-tasks-tabs/reschedule-loan/reschedule-loan.component.scss
  • src/app/web-app.component.ts
  • src/assets/images/cover_image_resized.webp
  • src/assets/loader.css
  • src/assets/styles/_misc.scss
  • src/assets/styles/_text.scss
  • src/assets/translations/cs-CS.json
  • src/assets/translations/de-DE.json
  • src/assets/translations/en-US.json
  • src/assets/translations/es-CL.json
  • src/assets/translations/es-MX.json
  • src/assets/translations/fr-FR.json
  • src/assets/translations/it-IT.json
  • src/assets/translations/ko-KO.json
  • src/assets/translations/lt-LT.json
  • src/assets/translations/lv-LV.json
  • src/assets/translations/ne-NE.json
  • src/assets/translations/pt-PT.json
  • src/assets/translations/sw-SW.json
  • src/environments/.env.ts
  • src/environments/environment.prod.ts
  • src/environments/environment.ts
  • src/index.html
  • src/main.scss
  • src/theme/_dark_content.scss
  • src/theme/mifosx-theme.scss

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Review on demand using usage pricing

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key: "pre_merge_checks"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • 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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

- NepaliDateInputComponent: ControlValueAccessor drop-in for mat-datepicker
  that displays/accepts Bikram Sambat dates and emits JS Date (AD) to the
  parent FormControl — no backend changes required
- Replaces all four mat-datepickers on the members create form (dateOfBirth,
  incorpValidityTillDate, submittedOnDate, activationDate)
- Supports [minDate]/[maxDate] constraints, custom month/year grid navigation,
  and viewport-aware panel positioning
- AdToBsPipe: converts API number[] dates to BS strings for the Personal Data view
- Adds nepali-date-converter to package.json (was installed locally but missing)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@JenishSambahamphe24
JenishSambahamphe24 force-pushed the feat-datepickers/build-nepali-datepicker-component branch from a40e113 to 5aae2d1 Compare July 21, 2026 03:15
@mifos-cla-check

Copy link
Copy Markdown

👋 Hi @JenishSambahamphe24 — thank you for your pull request.

This PR is currently blocked because we do not have a Contributor License Agreement (CLA) on file for your GitHub account.

To get unblocked:

  1. Complete the form at https://mifos.org/about-us/financial-legal/mifos-contributor-agreement
  2. Complete the CLA signing process
  3. Once verified you will be added to the approved contributors list and this PR check will be cleared

@IOhacker IOhacker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please don't send bulk changes without proper testing. Seems that this a full customization instead of a contribution.

@IOhacker IOhacker closed this Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-required CLA signature required before this PR can be merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants