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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@eduardsson/ngx-daterange

v1.0.5

Published

Date-Range Selector for Angular

Downloads

5

Readme

Ngx Date Range

This project is based on: ngx-daterange

This version allows to set custom locale settings.

External Dependencies

Required Angular Modules

  • FormsModule
  • ReactiveFormsModule

Polyfills

If you are targeting older browsers, you may need to polyfill es7 arrays, specifically .some()

Usage

Install from npm:

  • npm install ngx-daterange --save

Import and add the NgxDateRangeModule to your main module, or wherever applicable. Example:

import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { NgxDateRangeModule } from 'ngx-daterange';

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...
    FormsModule,
    NgxDateRangeModule,
    ReactiveFormsModule,
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

ngx-daterange is implemented as a single text input that displays one, or two calendars depending on your options. It may be implemented with, or without options in your component as such:

<date-range-picker [options]="options" [parentFormGroup]="form" [controlName]="'myDateRange'"></date-range-picker>

By default, ngx-daterange will assign a control name of "dateRange", however you may override this with the [controlName] input.

ngx-daterange assumes that you have a FormGroup instance that you are adding it to, and as such expects you to pass in the FormGroup via the [parentFormGroup] input.

Populating Existing Dates

You may pass in Moment instances via the [fromDate] and [toDate] inputs.

Using Custom Templating

A content slot is provided to override the default text input. Here's an example using a Bootstrap input group:

<date-range-picker [instanceId]="'secondDateRange'" [options]="secondFieldOptions" [parentFormGroup]="form"
    [controlName]="'secondDateRange'" #dateRangePicker>
  <div class="form-group">
    <label for="secondDateRange">Your Custom Label</label>
    <div class="input-group">
      <div class="input-group-prepend">
        <span class="input-group-text" id="date-range-icon">
          <i class="material-icons">event</i>
        </span>
      </div>
      <input id="secondDateRange" class="form-control" type="text" name="dateRange"
          [value]="dateRangePicker.range" placeholder="From - To" formControlName="secondDateRange" />
    </div>
  </div>
</date-range-picker>

You must supply one additional input: [instanceId], which must correspond to the id of the input. Otherwise, the calendar(s) won't be displayed when the input is clicked.

To access the ngx-daterange instance, assign a template variable (#dateRangePicker in the sample code) so that you may access the range value to bind to your input's [value].

The value you use for the [controlName] must correspond to the name property of the input, or use "dateRange" as the name of the input to match the default value in the component. Otherwise, the control won't be able to be added to your FormGroup instance.

Styling

ngx-daterange's default templating and styling is based on Bootstrap 4.x

Date Range Picker Options

Most settings are optional and an interface, IDateRangePickerOptions is provided for your convenience. Here are all of the settings currently enabled:

autoApply

Automatically sets the range value when both dates are selected and hides the calendars. If using a single calendar, the range is set and the calendar is closed when the date is selected. If false, the Apply button will be displayed.

Type: boolean

Default value: true

clickOutsideAllowed

Set this to false if you want a click outside the boundary of the DatePicker component to automatically close it.

Type: boolean

Default value: true

format

The format of the range value as displayed in the UI.

Type: string

Default value: 'YYYY-MM-DD'

Accepted value: Any format string supported by Moment.js

icons

Icons displayed for the next/previous and month/year buttons. By default, inlined base64 images are used. If you're using Font Awesome 5, or Google Material Icons, you may specify one or the other. You are expected to apply the CSS for those libraries independent of this module.

Type: string

Default value: 'default'

Accepted values: 'default', 'font-awesome' or 'material'

labelText

The text of the form label when using the default templating.

Type: string

Default value: 'Date Range'

Accepted value: Any

maxDate

The maximum selectable date in the future.

Type: Moment

Default value: null

Accepted value: Any valid Moment instance that comes after minDate.

minDate

The maximum selectable date in the past.

Type: Moment

Default value: null

Accepted value: Any valid Moment instance that comes before maxDate.

position

The side on which you would like the date picker to open.

Type: string

Default value: 'left'

Accepted values: 'left' or 'right'

preDefinedRanges

An array of pre-defined date ranges can be displayed to the user using a friendly "name". The array will appear below the Cancel / Reset / Apply buttons.

Type: IDefinedDateRange[]

Default value: not specified

singleCalendar

Display a single calendar instance instead of a range. Useful when you don't want to add another dependency and need to select a single date.

Type: boolean

Default value: false

startingFromDate

Sets the starting date of the "from" calendar.

Type: Moment

Default value: the minDate if supplied, otherwise moment()

startingToDate

Sets the starting date of the "to" calendar.

Type: Moment

Default value: the maxDate if supplied, otherwise moment()

validators

One or more ValidatorFn instances may be supplied to suit your needs.

Type: ValidatorFn[] | ValidatorFn

Default value: not specified

Event Emitter

When a date is specified, an IDateRange object is emitted via the rangeSelected function.

Running the Angular Sample Project

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Build Sample App

Run ng build to build the sample app. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.