npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

date-range-angular-lib

v1.0.2

Published

A flexible, standalone Angular date range picker component with built-in support for RTL languages (Arabic/English) and customizable styling.

Readme

Angular Date Range Picker

A flexible, standalone Angular date range picker component with built-in support for RTL languages (Arabic/English) and customizable styling.

npm license Angular

Features

  • 📅 Standalone component architecture
  • 🌐 Built-in RTL support (Arabic/English)
  • 🎨 Customizable styling
  • 📱 Responsive design
  • 🔄 Two-way data binding
  • 🎯 Min/Max date restrictions
  • 🧩 Flexible date range selection
  • 💫 Smooth animations
  • 🎈 Lightweight

Installation

npm install date-range-angular-lib @ngx-translate/core

Usage

  1. Import the component in your module or standalone component:
import { AngularDateRangeComponent } from 'angular-date-range';

@Component({
  // ...
  imports: [AngularDateRangeComponent]
})
  1. Use it in your template:
<angular-date-range
  [defaultLang]="'en'"
  [minDate]="minDate"
  [maxDate]="maxDate"
  [showLabel]="true"
  [showToDate]="true"
  [initialFromDate]="startDate"
  [initialToDate]="endDate"
  (dateRangeChange)="onDateRangeChange($event)"
  (languageChange)="onLanguageChange($event)"
>
</angular-date-range>

Inputs

| Input | Type | Default | Description | |-------|------|---------|-------------| | defaultLang | 'en' | 'ar' | 'en' | Default language for the date picker | | minDate | Date | undefined | Minimum selectable date | | maxDate | Date | undefined | Maximum selectable date | | showLabel | boolean | true | Show/hide field labels | | arFromPlacholder | string | undefined | Arabic placeholder for 'from' date | | enFromPlacholder | string | undefined | English placeholder for 'from' date | | arToPlacholder | string | undefined | Arabic placeholder for 'to' date | | enToPlacholder | string | undefined | English placeholder for 'to' date | | showToDate | boolean | true | Show/hide the 'to' date field | | initialFromDate | Date | null | undefined | Initial value for 'from' date | | initialToDate | Date | null | undefined | Initial value for 'to' date |

Outputs

| Output | Type | Description | |--------|------|-------------| | dateRangeChange | EventEmitter<{fromDate: string | Date | null; toDate: string | Date | null}> | Emits when date range changes | | languageChange | EventEmitter<'en' | 'ar'> | Emits when language changes |

Example

import { Component } from '@angular/core';
import { AngularDateRangeComponent } from 'angular-date-range';

@Component({
  selector: 'app-root',
  template: `
    <angular-date-range
      [minDate]="minDate"
      [maxDate]="maxDate"
      (dateRangeChange)="onDateRangeChange($event)"
    >
    </angular-date-range>
  `,
  standalone: true,
  imports: [AngularDateRangeComponent]
})
export class AppComponent {
  minDate = new Date(2024, 0, 1);
  maxDate = new Date(2024, 11, 31);

  onDateRangeChange(range: { fromDate: string | Date | null; toDate: string | Date | null }) {
    console.log('Date range changed:', range);
  }
}

Styling

The component uses SCSS and can be customized using CSS variables or by overriding the default classes. The main wrapper class is .calendar-container.

Example of customizing styles:

:host ::ng-deep {
  .calendar-container {
    .date-field {
      border-color: #your-color;
    }

    .calendar-day.selected {
      background-color: #your-primary-color;
    }
  }
}

RTL Support

The component automatically handles RTL layouts based on the selected language. When Arabic is selected, the layout switches to RTL mode, including:

  • Calendar navigation
  • Date selection
  • Input field alignment
  • Icon positioning

Translations

The component comes with built-in translations for English and Arabic. You can customize the translations by providing your own translation service:

import { translations } from 'angular-date-range';

// Extend or modify the existing translations
const customTranslations = {
  ...translations,
  ar: {
    ...translations.ar,
    fromDate: 'تاريخ البداية',
    // Add more custom translations
  }
};

Requirements

  • Angular 17.x or higher
  • @ngx-translate/core

Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

License

This project is licensed under the MIT License - see the LICENSE file for details.