Giter Club home page Giter Club logo

vue-functional-calendar's Introduction

VueJS Functional Calendar (Date Picker, Date Range)

Build Status Version Downloads

Demo

Demo: https://y3jnxov469.codesandbox.io/

Edit VueJS Functional Calendar Component

  • Lightweight, high performance calendar component based on Vue.js
  • Small memory usage, good performance, good style, and high scalability
  • Native js development, no third-party library introduced
  • Date Picker, Date Range, Multiple Calendars, Modal Calendar

Why

  • Many clicks on Github pop-up calendar to select components for a certain time, but did not find a component that simply displays the calendar and can click to get time.
  • A small number of calendar components take up too much memory, which is obviously not reasonable for a simple function like a calendar.

Install

npm i vue-functional-calendar --save

Usage

Import Component

// Introduced in vue file
import FunctionalCalendar from 'vue-functional-calendar';

Component Settings

export default {
    components: {
        FunctionalCalendar
    },
    data() {
        return {
            calendarData: {}
        }
    },
    clickDay(data) {
      console.log(data); // Get Clicked Day
    },
    changeDate(data) {
      console.log(data); //Click left and right to switch months
    },
    clickToday(data) {
      console.log(data); //Jumped to this month
    },
    getSelectedDaysCount(data){
        console.log(data); // Get Selected Days Count
    }
}

Template Usage

<FunctionalCalendar
      // v-model="calendarData"
      
      // v-on:choseDay="clickDay"
      // v-on:changeMonth="changeDate"
      // v-on:isToday="clickToday"
      // v-on:selectedDaysCount="getSelectedDaysCount" // Works only with a date range.
      
      // :sundayStart="true"
      
      // :is-date-range="true"
      // :is-date-picker="true"
      // :is-modal="false"
      
      // :is-multiple="true"
      // :calendars-count="3"
      
      // :change-month-function="true"
      // :change-year-function="true"
      
      // :mark-date="['2018/10/20','2018/10/28', '2018/10/16']"
      // :mark-date-more="arr"
      // :agoDayHide="1514937600" //Do not click before a date. Timestamp 10 digits
      // :futureDayHide="1525104000" //Do not click after a date Timestamp 10 digits
      
      // :day-names="dayNames" //dayNames=['Su','Mo','Tu','We','Th','Fr','Sa']
      // :month-names="monthNames" //monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"]
      
      // :apply-stylesheet="true"  
></FunctionalCalendar>

Multiple tag examples

The className of the April 1 tag is mark 1 and some markup styles are made according to the class.

arr=[{date:'2018/4/1',className:"mark1"}, {date:'2018/4/13',className:"mark2"}];

Usage With Configs

Template Usage

<FunctionalCalendar
      // v-model="calendarData"
      
      // :configs="calendarConfigs"
      
      // v-on:choseDay="clickDay"
      // v-on:changeMonth="changeDate"
      // v-on:isToday="clickToday"
      // v-on:selectedDaysCount="getSelectedDaysCount" // Works only with a date range.
></FunctionalCalendar>

Component Settings

export default {
    components: {
        FunctionalCalendar
    },
    data() {
        return {
            calendarData: {},
            calendarConfigs: {
                sundayStart: false,
                isDatePicker: false,
                isDateRange: false,
                isMultiple: false,
                calendarsCount: 3,
                changeMonthFunction: false,
                changeYearFunction: false,
                markDate: ['2018/10/20','2018/10/28', '2018/10/16'],
                markDateMore: [{date:'2018/11/20',className:"mark1"}, {date:'2018/11/21',className:"mark2"}],
                agoDayHide: 0,
                futureDayHide: 2554387200,
                dayNames: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
                disabledDayNames: ['Su'], // These values must match their respective key within the dayNames array in order to work correctly.
                disableMarkDates: false,
                monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
                isModal: false,
                applyStylesheet: true,
            }
        }
    },
}

A note on markDates

The markDates and markDatesMore properties must be in JavaScript Date format, e.g, no leading zeroes on month and days.

✅ Correct: 2019/1/16 ❎ Incorrect: 2019/01/16

API

Attributes Description Whether it must pass
choseDay Check the method called on a certain day to return the selected date YY-MM-DD No
changeMonth Switch the method called by the month, return the date to switch to a certain month YY-MM-DD No
isToday When switching the month, if you cut to the current month, call this method and return to the current month today. No
selectedDaysCount Get number of days between date range dates No
Add the ref attribute to the Calendar tab, exposing three methods to switch the month directly
For example: <FunctionalCalendar ref="Calendar"></FunctionalCalendar>

     this.$refs.Calendar.PreMonth();  //Call method implementation to go to last month
     this.$refs.Calendar.NextMonth(); //Call method implementation to go to next month
     this.$refs.Calendar.ChoseMonth('2018-12-12'); //Call method implementation to go to a month
     this.$refs.Calendar.ChoseMonth('2018-12-12',false); //Jump to December 12, 18, but do not select the day
    //The second parameter false means that the date is not selected

Other

  • The following Demo.vue has a demo for reference.
  • If there are other issues or versions, or functionally incompatible issues, please email [email protected]

To develop this package, I used the component vue-calendar-component.

vue-functional-calendar's People

Contributors

manukminasyan avatar madmikeyb avatar alefrogers avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.