https://www.npmjs.com/package/vue2-datepicker
깃레포지토리에 가면 언어 설정하는 법에 관해 더 자세하게 나와있다.
스타일링은 vue2-datepicker/scss/index.scss 파일 안의 클래스 이름 확인 후 오버라이딩시켜주면 된다.
다만, 지역scope가 아닌 전역으로 스타일을 적용해줘야 한다.
<template>
<div>
<date-picker
v-model="start"
:lang="lang"
:get-classes="getRangeClasses"
:disabled-date="disabledStartDate"
placeholder="조회기간"
></date-picker>
<em>~</em>
<date-picker
v-model="end"
:lang="lang"
:get-classes="getRangeClasses"
:disabled-date="disabledEndDate"
placeholder="조회기간"
></date-picker>
<button type="button" @click="setPeriod(0)">당일</button>
<button type="button" @click="setPeriod(1)">1개월</button>
<button type="button" @click="setPeriod(12)">1년</button>
<button type="button" @click="onSearch()">조회</button>
</div>
</template>
// 스크립트 작성
<script>
import DatePicker from "vue2-datepicker";
import "vue2-datepicker/scss/index.scss";
export default {
components: { DatePicker },
props: ["target"],
data() {
return {
test: 1,
start: null,
end: null,
lang: {
days: ["일", "월", "화", "수", "목", "금", "토"],
months: [
"1월",
"2월",
"3월",
"4월",
"5월",
"6월",
"7월",
"8월",
"9월",
"10월",
"11월",
"12월",
],
yearFormat: "YYYY년",
monthFormat: "MM월",
// the calendar title of month before year
monthBeforeYear: false,
},
};
},
methods: {
getRangeClasses(cellDate, currentDates, classnames) {
const classes = [];
const start = this.start && new Date(this.start);
const end = this.end && new Date(this.end);
if (
!/disabled|active|not-current-month/.test(classnames) &&
start &&
end &&
cellDate.getTime() >= start &&
cellDate.getTime() <= end
) {
classes.push("in-range");
}
return classes;
},
disabledStartDate(date) {
return this.end && new Date(date) > new Date(this.end);
},
disabledEndDate(date) {
return this.start && new Date(date) < new Date(this.start);
},
setPeriod(m) {
const period = new Date();
period.setMonth(period.getMonth() - m);
this.start = period;
this.end = new Date();
},
onSearch() {
if (!this.start || !this.end) {
alert("조회기간을 설정해주세요");
}
},
},
};
</script>
// 스타일 커스텀
<style lang="scss">
/* vue2-datepicker 스타일 오버라이딩 */
/* #주의# 스타일 오버라이딩하기 위해서는 style scoped가 아닌 전역으로 설정해줘야 한다. */
/* input 크기 스타일링 */
.mx-datepicker {
width: 140px !important;
height: 40px !important;
margin-right: 8px;
.mx-input {
width: 140px !important;
height: 40px !important;
}
}
/* 애니메이션 스타일링 제거 */
.mx-zoom-in-down-enter-active,
.mx-zoom-in-down-leave-active,
.mx-zoom-in-down-enter,
.mx-zoom-in-down-enter-from,
.mx-zoom-in-down-leave-to {
transform: none !important;
}
/* 특정요일만 색상변경 스타일링 (1~7)*/
/* td.cell:nth-child(1) {
color: #e99b9b !important;
}
*/
</style>
'잡단한것들 > 코딩연습장' 카테고리의 다른 글
팝업 (0) | 2022.05.23 |
---|---|
key이벤트 테스트 (0) | 2022.05.20 |
[JS] yyyy-mm-dd형태로 만들기 (Date객체 활용하기) (0) | 2021.10.19 |
자바스크립트 비동기 (0) | 2021.09.01 |
배열 원하는 형태로 재조립하기 (0) | 2021.08.16 |