1.2.0 • Published 5 months ago

bs-calendar-react v1.2.0

Weekly downloads
-
License
GPL-3.0
Repository
github
Last release
5 months ago

BSDatePicker - Nepali & Gregorian Date Picker

Overview

The BSDatePicker is a robust and user-friendly date picker component supporting both the Nepali (Bikram Sambat) and Gregorian (AD) calendar systems. It offers seamless integration for developers looking to implement dual-language date selection in their applications.

Features

  • Dual Calendar Support:
    Switch effortlessly between Nepali (BS) and Gregorian (AD) calendars.

  • Customizable Date Formats:
    Supports popular formats such as YYYY/MM/DD, DD/MM/YYYY, MMMM DD, YYYY and other.

  • Dynamic Calendar Display:

    • Automatic adjustments for months and years across both calendars.
    • Cross-calendar date mapping with highlighted selections.
  • Internationalization:

    • Nepali numerals for BS dates.
    • English numerals for Gregorian dates.
  • Interactive UI:

    • Modern popover-based date picker interface.
    • Responsive design with easy navigation.
  • Callback Integration:
    Provides selected dates in both calendar formats using an onDateChange callback.


Installation

Install the package using npm:

npm install bs-date-picker-react

or

yarn add bs-date-picker-react

Usage

Import and implement the BSDatePicker in your project:

Basic Example

import "bs-date-picker-react/dist/style.css";
import { BSDatePicker } from "bs-date-picker-react";

<BSDatePicker
  language="np"
  format="YYYY-MM-DD"
  onDateChange={(date) => console.log(date)}
/>;

Props

PropTypeDefaultDescription
onDateChangeFunctionundefinedCallback providing the selected date in both formats.
defaultValueStringundefinedInitial date value (BS or Gregorian format).
languageString'en'Language for the calendar (np for Nepali, en for English).
formatString'YYYY-MM-DD'Date format.

Development Notes

Dependencies

  • nepali-date-converter: Used to handle date conversions between Nepali and Gregorian calendars.
  • @radix-ui/react-popover: Manages the popover dropdown for the calendar UI.
  • lucide-react: Provides the calendar icon.

Style and Responsiveness

  • The component uses a responsive and accessible design.
  • Styling is implemented with utility classes (e.g., Tailwind CSS). Ensure the proper setup of Tailwind or adapt the styles for your project.

Localization

  • Customize day and month names through the MONTH_NAMES and DAY_NAMES constants.
  • Use toNepaliNumeral Convert numbers to Nepali numerals when necessary.

Known Limitations

  • Events like key navigation for accessibility are not implemented but can be added in future versions.

Release Notes

Version 1.1.0

  • Initial release of the BSDatePicker component.
  • Fully functional support for Nepali and Gregorian calendars.
  • Cross-calendar dynamic month/year navigation.
  • Customizable date formats and styling.
  • Input validation and date range checks.

Version 1.1.1

  • Minor Bug fixes

Version 1.1.2

  • Enhance BSDatePicker styling and positioning for better usability
  • Padding bug fix for popover contents

Version 1.1.3/1.1.4

  • Date number css alignment fixes

Version 1.1.5

  • Dynamic background respect to theme

Roadmap

  • Range Selection: Add support for selecting date ranges.
  • Accessibility Improvements: Enhanced support for screen readers.
  • Custom Themes: Provide more options for UI customization.

Contribution

We welcome contributions! If you'd like to improve the component, please follow these steps:

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/new-feature).
  3. Commit your changes (git commit -m 'Add new feature').
  4. Push to the branch (git push origin feature/new-feature).
  5. Open a pull request.

Support

If you encounter any issues or have suggestions, please reach out to us:

  • Email: twatisuman@gmail.com

Thank you for choosing BSDatePicker! 🎉

Let me know if you'd like further edits or additions!


License

This component is licensed under the GPL-3.0 License. See the LICENSE file for details.