0.1.23 • Published 4 years ago

ng-material-flatpickr v0.1.23

Weekly downloads
120
License
-
Repository
-
Last release
4 years ago

ng-material-flatpickr

This is a date component that combines Angular Material component library Input, date component flatpickr.js, ReactiveForm formControl.

####Images Demo

webDemo on github

####webDemo on gitee

us/pw: widzz/widzz12345

ng-material-flatpickr is in menu New marketing strategy

####dependencies Earlier versions may be support

I build it with v10, and test it with v7,it works well.

    "@angular/common": ">=7.0.0",
    "@angular/core": ">=7.0.0",
    "@angular/forms": ">=7.0.0",
    "@angular/material": ">=7.0.0",
    "flatpickr": ">=4.0.0",
    "rxjs": ">=5.0.0",
    "date-fns": ">=2.0.0"
  • How To Use
  • This Package is based on Angular Material , flatpickr.js and date-fns,you need to install them first.
  • Then,npm install ng-material-flatpickr --save
  • import NgMaterialFlatpickrModule to you Angular module like
  • imports:[ngxFlatpickrModule]

Input:

label:string The placeholder in the MatInput;

readonly:boolean Whether the input element should be readonly status,default:false;

required:boolean Whether the control is required or not,default:false;

requiredMsg:string
The message for required.

showCalendar:boolean Whether the calendar suffix icon show or not,default:true;

timeControl if this component in a ReactiveForm bound with formGroup or formControl.

config The config of flatpickr extends flatpickr.js,flatpickr,default:

// DatePicker config example
config: Partial<BaseOptions> = {
    enableTime: true, // enable timePikcer
    time_24hr: true, // 24hr time
    enableSeconds: true // show seconds in timePicker
   };
 // timePicker config example
 config: Partial<BaseOptions> = {
        enableTime: true,
        noCalendar: true,
        dateFormat: 'H:i',
        defaultHour: 6,
        time_24hr: true
    };   

example

xxxx.html

 <lib-ng-material-flatpickr
                        #startTime (sourceDate)="onStartSourceDate($event,endTime)"
                        [timeControl]="strategy.get('beginDate')"
                        [config]="config"
                        [requiredMsg]="('strategy.startTime'|translate)+('form.required'|translate)"
                        [label]="'strategy.startTime'|translate">
                    </lib-ng-material-flatpickr>
                    <lib-ng-material-flatpickr
                        #endTime (sourceDate)="onEndSourceDate($event,startTime)"
                        [timeControl]="strategy.get('endDate')"
                        [config]="config"
                        [requiredMsg]="('strategy.endTime'|translate)+('form.required'|translate)"
                        [label]="'strategy.endTime'|translate"
                    ></lib-ng-material-flatpickr>
 
 xxxx.ts
strategy = new FormGroup({
        startTime: new FormControl('', Validators.required),
        endTime: new FormControl('', Validators.required)
    });
 or
 .ts
 startTime=new FormControl('');
 .html
 [timeControl]="startTime"

strategy is an formGroup,you can get single formControl by instance.get(key) of formGroup and input it to timeControl,otherwise,you can input single formControl like new Instance of formControl directly to the TimeControl;

output

(sourceDate) This is a eventEmitter,it will be triggered when the flatpickr change its value,return a date string that can be transform to a Date by new Date();

instance

picker
This is the instance of flatpickr,som methods and value can be found in the instance.In this component,you can get it by two ways.e.g Add a symbol like '#startTime' to the component(see above),and input it to a method when some method triggers

"(sourceDate)=getDate($event,startTime)"

or get the component's ref by the ViewChild Decorator like

@ViewChild('startTime',{static:false) 
startTime:ElementRef;

You can get picker by startTime.picker and you can use the instance whatever you want;

localize

If you want to change the locale of flatpickr immediately when the language of the system has been changed(no refresh),

  • 1.You can provide a value for DEFAULT_LANG while import NgMaterialFlatpickrModule. like
import:[    
    NgMaterialFlatpickrModule.forRoot('zh-CN'),
    ...
    ]
  • 2.There is a function setDateLocale(lang) in this component,you need use decorator @ViewChild() , and use this function.
      // init locale of flatpickr or change the locale
      // 改变日期配置
         setDateLocale(lang?: 'zh-CN' | 'zh-TW' | '') {
             switch (lang) {
                 case 'zh-CN': {
                     this.config.locale = Mandarin;
                     break;
                 }
                 case 'zh-TW': {
                     this.config.locale = MandarinTraditional;
                     break;
                 }
                 default: {
                     this.config.locale = english;
                     break;
                 }
             }
             if (this.picker) {
                 this.picker.destroy();
             }
             this.picker = flatpickr(this.input.nativeElement, this.config);
         }


   // Where they are used
    

    @ViewChild('startTime', {static: false})
       startTime: any;
       @ViewChild('endTime', {static: false})
       endTime: any;
    
    ngOnInit() {  
  
     // translateService of ngx-translate/core
     this.translate.onLangChange.subscribe((res) => {
               this.startTime.setDateLocale(res.lang);
               this.endTime.setDateLocale(res.lang);
    }
    ...
     }

   // loadFrom storage
    ngAfterViewInit(): void {
          //  system selected language cached in localStorage
           if (localStorage.getItem('selectedLang')) {
               const selectedLang = localStorage.getItem('selectedLang');
               this.startTime.setDateLocale(selectedLang);
               this.endTime.setDateLocale(selectedLang);
           }
    }

  
  
   
 
0.1.22

4 years ago

0.1.23

4 years ago

0.1.21

4 years ago

0.1.20

4 years ago

0.1.18

4 years ago

0.1.19

4 years ago

0.1.17

4 years ago

0.1.16

4 years ago

0.1.11

4 years ago

0.1.12

4 years ago

0.1.13

4 years ago

0.1.14

4 years ago

0.1.10

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.9

4 years ago

0.1.4

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.0

4 years ago

0.1.1

4 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago