• Stars
    star
    2,720
  • Rank 16,742 (Top 0.4 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 8 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A flexible calendar component for angular 15.0+ that can display events on a month, week or day view.

angular 15.0+ calendar

Sponsorship Build Status codecov npm version License: MIT Twitter Follow

Demo

Sponsors

Table of contents

About

A calendar component for angular 15.0+ that can display events on a month, week or day view. The successor of angular-bootstrap-calendar.

Getting started

ng add (recommended)

ng add angular-calendar

Manual setup (ng add will do this all for you)

First install through npm:

npm install --save angular-calendar date-fns

Next include the CSS file in the global (not component scoped) styles of your app:

/* angular-cli file: src/styles.css */
@import "../node_modules/angular-calendar/css/angular-calendar.css";

Finally import the calendar module into your apps module:

import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { CalendarModule, DateAdapter } from 'angular-calendar';
import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';

@NgModule({
  imports: [
    BrowserAnimationsModule,
    CalendarModule.forRoot({
      provide: DateAdapter,
      useFactory: adapterFactory,
    }),
  ],
})
export class MyModule {}

In order to allow the most flexibility for all users there is a substantial amount of boilerplate required to get up and running. Please see the demos list for a series of comprehensive examples of how to use this library within your application.

Once you are up and running, to access a full list of options for each component, the individual APIs are documented here: mwl-calendar-month-view, mwl-calendar-week-view and mwl-calendar-day-view.

Please note: angular-calendar uses Scarf to collect anonymized installation analytics. These analytics help support the maintainers of this library. However, if you'd like to opt out, you can do so by setting scarfSettings.enabled = false in your project's package.json. Alternatively, you can set the environment variable SCARF_ANALYTICS=false before you install.

Documentation

To see all available API options, take a look at the auto generated documentation. You may find it helpful to view the examples on the demo page.

Breaking changes

Where possible this library will strictly adhere to semver and only introduce API breaking changes in 0.x releases or new major versions post 1.0. The only exception to this is if you are using custom templates or extending the base components to add additional functionality, whereby critical bug fixes may introduce breakages as the internal API changes.

FAQ

Is this library AoT and universal compatible?

Yes.

What major versions of angular does this library support?

Angular major Last supported angular-calendar version
15.x and higher latest version
14.x 0.30.1
12.x - 13.x 0.29.0
6.x - 11.x 0.28.28
5.x 0.24.1
4.x 0.22.3
2.x 0.9.1

No styles are appearing?

No component styles are included with each component to make it easier to override them (otherwise you’d have to use !important on every rule that you customised). Thus you need to import the CSS file separately from node_modules/angular-calendar/css/angular-calendar.css.

How come there are so many dependencies?

When building the calendar some parts were found to be reusable so they were split out into their own modules. Only the bare minimum that is required is included with the calendar, there is no extra code than if there were no dependencies. date-fns especially only imports directly the functions it needs and not the entire library.

The month, week or day view doesn’t meet my project requirements, but the other views do.

Build your own component to replace that view, and use it in place of the one this library provides. It’s impossible to provide a calendar component that meets everyones use cases, hopefully though at least some of the day / week / month view components provided can be customised with the calendars API enough to be of some use to most projects.

How come there’s no year view like the ng1 version?

As there are so many events to show on each month, it doesn’t provide a lot of value and is just an extra burden to maintain. There is nothing to stop someone from building a new lib like angular-calendar-year-view though ;)

Does this calendar work with mobile?

This library is not optimised for mobile. Due to the complex nature of a calendar component, it is non trivial to build a calendar that has a great UX on both desktop and mobile. It is recommended to build your own calendar component for mobile that has a dedicated UX. You may be able to get some degree of mobile support by setting some custom CSS rules for smaller screens on the month view and showing less days on the week view.

How do I use a custom template?

All parts of this calendar can be customised via the use of an ng-template. The recipe for applying one is as follows:

  • Find the template you would like to customise for the month, week or day view component. You can find all available custom templates by reading the documentation for each component. For this example we will pick the cellTemplate from the month view.
  • Next find the corresponding child component that will render the template by viewing the source. For our example of the month view cell it is this component
  • Now copy the template source for your chosen template into your own component and modify as your see fit.
  • Finally pass the template to the components input: <mwl-calendar-month-view [cellTemplate]="cellTemplateId" />
  • You can see an e2e working example of this here

What is the browser compatibility?

All evergreen browsers supported by angular.

Does this library require bootstrap?

No! While the demo site uses bootstrap, it isn't a requirement of this library. The styling is designed to adapt to whatever global styling your app has.

Angular 1 version

Development

Prepare your environment

Development server

Run pnpm start to start a development server on port 8000 with auto reload + tests.

Testing

Run pnpm test to run tests once or pnpm test:watch to continually run tests.

Release

  • Bump the version in package.json (once the module hits 1.0 this will become automatic)
pnpm release

More Repositories

1

angular-bootstrap-calendar

A port of the bootstrap calendar widget to AngularJS (no jQuery required!)
JavaScript
798
star
2

angular-resizable-element

An angular 15.0+ directive that allows an element to be dragged and resized
TypeScript
314
star
3

webpack-retry-chunk-load-plugin

A webpack plugin to retry loading of chunks that failed to load
TypeScript
236
star
4

angular-confirmation-popover

An angular 15.0+ bootstrap confirmation popover
TypeScript
202
star
5

karma-coverage-istanbul-reporter

A karma reporter that uses the latest istanbul 1.x APIs to report coverage
JavaScript
163
star
6

angular-draggable-droppable

Observable powered drag and drop for angular 15.0+
TypeScript
134
star
7

angular2-tv-tracker

A simple TV app for learning angular 2+
TypeScript
127
star
8

angularx-flatpickr

An angular 17.0+ wrapper for flatpickr
TypeScript
88
star
9

angular-bootstrap-confirm

Displays a bootstrap confirmation popover (with no jQuery or bootstrap JS!)
JavaScript
88
star
10

angular-gauge

A tiny angular 15.0+ wrapper for https://github.com/naikus/svg-gauge
TypeScript
80
star
11

angular-bluebird-promises

Replace the default angular $q service with the bluebird promise library for enhanced promises within your angular app!
JavaScript
74
star
12

generator-angular-library

A yeoman generator for scaffolding a new angular 5 module that you can publish and share straight away to npm
TypeScript
65
star
13

angular-text-input-highlight

A component that can highlight parts of text in a textarea. Useful for displaying mentions etc
TypeScript
55
star
14

angular-text-input-autocomplete

A angular 6+ directive for adding autocomplete functionality to text input elements, built around composability
TypeScript
45
star
15

calendar-utils

Utility functions to generate views for calendars
TypeScript
38
star
16

webpack-filter-warnings-plugin

Allows you to hide certain warnings from webpack compilations
TypeScript
27
star
17

cordova-plugin-is-debug

A cordova plugin to detect if the app is running in debug mode or not
Java
20
star
18

angular-async-cache

A simple utility to help with caching of promises and observables to enable an easy offline first approach in angular 6+ apps
TypeScript
20
star
19

angular-highlight-js

Highlight.js integration for angular 4.0+
TypeScript
9
star
20

js-to-typescript-codemod

A simple codemod for helping migrate from babel to typescript. Converts default imports to wildcards.
JavaScript
8
star
21

positioning

The ng-bootstrap Positioning class as a standalone module
TypeScript
4
star
22

bless-css-webpack-plugin

A webpack plugin for bless CSS
JavaScript
4
star
23

webpack-angular-externals

A tiny utility to prevent webpack bundling @angular dependencies in your library code
JavaScript
3
star
24

create-plunker

A helper utility to create plunkers
TypeScript
2
star
25

material-theme-test

1
star
26

docker-nodejs-chrome

A docker container for installing node.js and google chrome
1
star
27

mattlewis.me

The source code for my personal website
HTML
1
star
28

node-mr-bump

Bumps your apps manifest files version
JavaScript
1
star
29

mwl-technologies.co.uk

TypeScript
1
star
30

angular-15-angular-calendar

TypeScript
1
star
31

tslint-config-mwl

The TSLint config that I use across all projects. Should be used in conjunction with angular + prettier
1
star
32

angular-calendar-ng16-test

HTML
1
star
33

webpack-date-fns-externals

A tiny utility to prevent webpack bundling date-fns imports in your library code
JavaScript
1
star
34

angular-async-tracker

A port of angular-promise-tracker to angular 6+ that also supports observables
TypeScript
1
star
35

api.mattlewis.me

A very simple REST API used by my personal website. Uses native ES6 and a couple of babel transforms for unsupported native features.
JavaScript
1
star
36

generate-date-fns-typings

A script to auto create typescript definitions for the date-fns library from the docblock comments
JavaScript
1
star