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

datepick

v0.0.3

Published

Date Picker Calendar

Downloads

21

Readme

Datepick

Simple javascript date pick (Feat. datepicker and calendar)

Install

npm install --save datepick

Getting Started

// Import datepick.min.js
// Import datepick.min.css

<div id="calendar"></div>
<script>
  const element = document.getElementById('calendar');

  new Datepick(element);
</script>

Options

Default options

// Basic
grid: 1, // {Number} 달력 그리드 개수 (현재 날짜를 기준으로 앞뒤로 생성 예, 3으로 설정시 현재 날짜 기준으로 이전달, 다음달 같이 생성 / 홀수만 입력 가능 / 'swipe' or 'fade' 모드일 경우 3이상으로 설정)
today: null, //{Date|Null} 오늘 날짜 설정
nextBtnText: '>', //{String} 다음 버튼 텍스트
prevBtnText: '<',// {String} 이전 버튼 텍스트

// Animation
mode: '', // {String} (모드는 효과를 나타냅니다. '': 효과없음 (그리드 개수가 3개 이상일 경우 스크롤이 기본 애니메이션), 'fade': 페이드 효과, 'swipe': 스와이프 효과)
animationTiming: 'ease-in-out', // {String} 애니메이션 변화
animationDuration: 200, // {Number} 애니메이션 속도 (ms)
animationDirection: 'horizon', // {String} 애니메이션 방향 ('horizon' or 'vertical')

// Range
range: false, // {Boolean} 기간 여부
rangeIncludeDisabled: false, // {Boolean} 달력 선택시 비활성화 날짜 포함 여부
rangeDistanceDay: null, // {Number|Null} 달력 선택시 최대 일정

// Multiple
multiple: false, // {Boolean} 다중 선택 여부
multipleMaximum: 0, // {Number} 다중 선택 최대 개수 (0인 경우 제한 없음)

// Language
lang: 'ko', // {String} 기본 언어
locale: {}, // {Object} 기본 텍스트 설정 (달력 요일, 버튼 텍스트 등)

// Min, Max Date
minDate: null, // {Date|Null} 달력 최소 날짜
maxDate: null, // {Date|Null} 달력 최대 날짜

// initial
dates: null, // {Null|Array<Date>} 초기 선택 값 (null인 경우 오늘 날짜 기준으로 설정)
initialDate: null, // {Date|Null|Array<Date>} 초기 설정 날짜 (default: 오늘 날짜)

// touch
touchEvent: true, // {Boolean} 터치 이벤트 설정

// Highlighted
highlightedDate: [], // {Array} 하이라이트 날짜
highlightedToday: false, // {Boolean} 오늘 날짜 하이라이트 여부

// Hide
hideTodayBtn: false, // {Boolean} 오늘 버튼 활성화 여부
hideClearBtn: false, // {Boolean} 삭제 버튼 활성화 여부
hidePrevNextDate: false, // {Boolean} 이전, 다음 날짜 활성화 여부
hideWeek: false, // {Boolean} 요일 활성화 여부

// Disabled day
disabledDate: [], // {Array<Date>} 비활성화 날짜

// holiday
holidayDate: [], // {Array<Date>} 휴일 날짜

// Class
containerClass: '', // {String} 컨테이너 클래스
headerClass: '', // {String} 상단 클래스
titleClass: '', // {String} 제목 클래스
controlsClass: '', // {String} 컨트롤 클래스
controlsTitleClass: '', // {String} 날짜 포맷 클래스
controlsPrevClass: '', // {String} 이전 버튼 클래스
controlsNextClass: '', // {String} 다음 버튼 클래스
controlsTodayClass: '', // {String} 오늘 버튼 클래스
controlsClearClass: '', // {String} 삭제 버튼 클래스
mainClass: '', // {String} 메인 클래스
footerClass: '', // {String} 하단 클래스
weekClass: '', // {String} 요일 컨테이너 클래스
dowClass: '', // {String} 요일 클래스
gridClass: '', // {String} 그리드 클래스
daysClass: '', // {String} 날짜 컨테이너 클래스
dayClass: '', // {String} 날짜 클래스
sundayClass: 'sunday', // {String} 일요일 클래스
saturdayClass: 'saturday', // {String} 토요일 클래스
holidayClass: 'holiday', // {String} 휴일 클래스
firstDayClass: 'first', // {String} 해당 월의 시작 날짜 클래스
lastDayClass: 'last', // {String} 해당 월의 마지막 날짜 클래스
startDayClass: 'start', // {String} 달력 시작 날짜 클래스
endDayClass: 'end', // {String} 달력 마지막 날짜 클래스

// Custom
customDayElement: null, // {Element String/Null} 커스텀 날짜
customInsertBeforeDay: null, // {Element String/Null} 날짜 랜더링 전 커스텀 엘리먼트 
customInsertAfterDay: null, // {Element String/Null} 날짜 랜더링 후 커스텀 엘리먼트

// Callback
beforeClickDay: null, // {Function/Null} 날짜 클릭 전
beforeEffect: null, // {Function/Null} 효과 전
beforeRender: null, // {Function/Null} 랜더링 전

isClickDayEqual: null, // {Function/Null} 중복 날짜 클릭 시
isClickIncludeDisabled: null, // {Function/Null} 비활성화 포함한 날짜 클릭 시
isClickMultipleMaximum: null, // {Function/Null} 다중 선택 최대 개수 초과 시

afterClickDay: null, // {Function/Null} 날짜 클릭 후
afterRender: null, // {Function/Null} 효과 후
afterEffect: null, // {Function/Null} 랜더링 후

Default Locale Options

days: ['일', '월', '화', '수', '목', '금', '토'],
months: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthsShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
today: '오늘',
clear: '삭제',
format: 'yyyy-mm-dd',
titleFormat: 'y년mm월',

Browser Support

| Chrome | Firefox | Opera | Safari | Edge | Brave | Internet Explorer | |:---:|:---:|:---:|:---:|:---:|:---:|:---:| | Yes | Yes | Yes | Yes | Yes | Yes | Not yet |

Examples

Basic

new Datepicker(element, { ...options });

Fade Mode

new Datepicker(element, {
  mode: 'fade',
  // If you want
  // animationDirection: 'vertical' or 'horizon',
});

Swipe Mode

new Datepicker(element, {
  mode: 'swipe',
  // If you want
  // animationDuration: 100,
  // animationDirection: 'vertical' or 'horizon',
});

Range

new Datepicker(element, {
  range: true,
  // If you want
  // rangeIncludeDisabled: false,
  // rangeDistanceDay: null,
});

Multiple

new Datepicker(element, {
  multiple: true,
  // If you want
  // multipleMaximum: 0,
});

Holiday

new Datepicker(element, {
  // If you want
  holidayDate: [
    // 휴일 설정 예제
    new Date(new Date().setDate(new Date().getDate() + 1)).setHours(0, 0, 0, 0),
	],
  beforeRender: function (datepicker, direction) {
    // 렌더링 전 휴일 설정 예제
    // holidayDate 날짜 추가
    datepicker.options.holidayDate = [
      new Date(new Date(datepicker.viewDate).setDate(new Date(datepicker.viewDate).getDate() + 1)).setHours(0, 0, 0, 0),
    ];
	},
});

Grid Options

new Datepicker(element, {
  // If you want
  grid: 3,
});

Custom Day Element

new Datepicker(element, {
  // If you want
  customDayElement: function (datepicker, date) {
    /* 
    * @param {Object} datepicker
    * @param {Number} date
	 	*/

    // 커스텀 엘리먼트 설정시
    // datepicker-cell 엘리먼트 안에 생성
    // 리턴값은 엘리먼트를 포함한 string 값으로 리턴해야 함
    
    return '<span class="date">' + date.getDate() + '</span>'
  },
});

Todos

  • IE 11
  • Write test case
  • i18n
  • Select Time
  • Etc...

Dependencies

  • hammerjs