init crater

This commit is contained in:
Mohit Panjwani
2019-11-11 12:16:00 +05:30
commit bdf2ba51d6
668 changed files with 158503 additions and 0 deletions

View File

@ -0,0 +1,649 @@
<template>
<div :class="[wrapperClass, isRtl ? 'rtl' : '']" class="base-date-input">
<date-input
:selected-date="selectedDate"
:reset-typed-date="resetTypedDate"
:format="customFormatter"
:translation="translation"
:inline="inline"
:id="id"
:name="name"
:ref-name="refName"
:open-date="openDate"
:placeholder="placeholder"
:input-class="inputClass"
:typeable="typeable"
:clear-button="clearButton"
:clear-button-icon="clearButtonIcon"
:calendar-button="calendarButton"
:calendar-button-icon="calendarButtonIcon"
:calendar-button-icon-content="calendarButtonIconContent"
:disabled="disabled"
:required="required"
:class="{'required-date': invalid}"
:bootstrap-styling="bootstrapStyling"
:use-utc="useUtc"
@showCalendar="showCalendar"
@closeCalendar="close"
@typedDate="setTypedDate"
@clearDate="clearDate">
<slot slot="afterDateInput" name="afterDateInput"/>
</date-input>
<!-- Day View -->
<picker-day
v-if="allowedToShowView('day')"
:page-date="pageDate"
:selected-date="selectedDate"
:show-day-view="showDayView"
:full-month-name="fullMonthName"
:allowed-to-show-view="allowedToShowView"
:disabled-dates="disabledDates"
:highlighted="highlighted"
:calendar-class="calendarClass"
:calendar-style="calendarStyle"
:translation="translation"
:page-timestamp="pageTimestamp"
:is-rtl="isRtl"
:monday-first="mondayFirst"
:day-cell-content="dayCellContent"
:use-utc="useUtc"
@changedMonth="handleChangedMonthFromDayPicker"
@selectDate="selectDate"
@showMonthCalendar="showMonthCalendar"
@selectedDisabled="selectDisabledDate">
<slot slot="beforeCalendarHeader" name="beforeCalendarHeader"/>
</picker-day>
<!-- Month View -->
<picker-month
v-if="allowedToShowView('month')"
:page-date="pageDate"
:selected-date="selectedDate"
:show-month-view="showMonthView"
:allowed-to-show-view="allowedToShowView"
:disabled-dates="disabledDates"
:calendar-class="calendarClass"
:calendar-style="calendarStyle"
:translation="translation"
:is-rtl="isRtl"
:use-utc="useUtc"
@selectMonth="selectMonth"
@showYearCalendar="showYearCalendar"
@changedYear="setPageDate">
<slot slot="beforeCalendarHeader" name="beforeCalendarHeader"/>
</picker-month>
<!-- Year View -->
<picker-year
v-if="allowedToShowView('year')"
:page-date="pageDate"
:selected-date="selectedDate"
:show-year-view="showYearView"
:allowed-to-show-view="allowedToShowView"
:disabled-dates="disabledDates"
:calendar-class="calendarClass"
:calendar-style="calendarStyle"
:translation="translation"
:is-rtl="isRtl"
:use-utc="useUtc"
@selectYear="selectYear"
@changedDecade="setPageDate">
<slot slot="beforeCalendarHeader" name="beforeCalendarHeader"/>
</picker-year>
</div>
</template>
<script>
import en from './src/locale/translations/en'
import DateInput from './DateInput'
import PickerDay from './PickerDay.vue'
import PickerMonth from './PickerMonth.vue'
import PickerYear from './PickerYear.vue'
import utils, { makeDateUtils } from './src/DateUtils'
import { mapGetters } from 'vuex'
import moment from 'moment'
export default {
components: {
DateInput,
PickerDay,
PickerMonth,
PickerYear
},
props: {
value: {
validator: val => utils.validateDateInput(val)
},
name: String,
refName: String,
id: String,
// format: {
// type: [String, Function],
// default: 'dd MMM yyyy'
// },
language: {
type: Object,
default: () => en
},
openDate: {
validator: val => utils.validateDateInput(val)
},
dayCellContent: Function,
fullMonthName: Boolean,
disabledDates: Object,
highlighted: Object,
placeholder: String,
inline: Boolean,
calendarClass: [String, Object, Array],
inputClass: [String, Object, Array],
wrapperClass: [String, Object, Array],
mondayFirst: Boolean,
clearButton: Boolean,
clearButtonIcon: String,
calendarButton: Boolean,
calendarButtonIcon: String,
calendarButtonIconContent: String,
bootstrapStyling: Boolean,
initialView: String,
disabled: Boolean,
required: Boolean,
invalid: Boolean,
typeable: Boolean,
useUtc: Boolean,
minimumView: {
type: String,
default: 'day'
},
maximumView: {
type: String,
default: 'year'
}
},
data () {
const startDate = this.openDate ? new Date(this.openDate) : new Date()
const constructedDateUtils = makeDateUtils(this.useUtc)
const pageTimestamp = constructedDateUtils.setDate(startDate, 1)
return {
/*
* Vue cannot observe changes to a Date Object so date must be stored as a timestamp
* This represents the first day of the current viewing month
* {Number}
*/
pageTimestamp,
/*
* Selected Date
* {Date}
*/
selectedDate: null,
/*
* Flags to show calendar views
* {Boolean}
*/
showDayView: false,
showMonthView: false,
showYearView: false,
/*
* Positioning
*/
calendarHeight: 0,
resetTypedDate: new Date(),
utils: constructedDateUtils
}
},
watch: {
value (value) {
this.setValue(value)
},
openDate () {
this.setPageDate()
},
initialView () {
this.setInitialView()
}
},
computed: {
...mapGetters('preferences', {
'format': 'getMomentDateFormat'
}),
customFormatter () {
let newDate = new Date(this.value)
return moment(newDate).format(this.format)
},
computedInitialView () {
if (!this.initialView) {
return this.minimumView
}
return this.initialView
},
pageDate () {
return new Date(this.pageTimestamp)
},
translation () {
return this.language
},
calendarStyle () {
return {
position: this.isInline ? 'static' : undefined
}
},
isOpen () {
return this.showDayView || this.showMonthView || this.showYearView
},
isInline () {
return !!this.inline
},
isRtl () {
return this.translation.rtl === true
}
},
mounted () {
this.init()
},
methods: {
/**
* Called in the event that the user navigates to date pages and
* closes the picker without selecting a date.
*/
resetDefaultPageDate () {
if (this.selectedDate === null) {
this.setPageDate()
return
}
this.setPageDate(this.selectedDate)
},
/**
* Effectively a toggle to show/hide the calendar
* @return {mixed}
*/
showCalendar () {
if (this.disabled || this.isInline) {
return false
}
if (this.isOpen) {
return this.close(true)
}
this.setInitialView()
},
/**
* Sets the initial picker page view: day, month or year
*/
setInitialView () {
const initialView = this.computedInitialView
if (!this.allowedToShowView(initialView)) {
throw new Error(`initialView '${this.initialView}' cannot be rendered based on minimum '${this.minimumView}' and maximum '${this.maximumView}'`)
}
switch (initialView) {
case 'year':
this.showYearCalendar()
break
case 'month':
this.showMonthCalendar()
break
default:
this.showDayCalendar()
break
}
},
/**
* Are we allowed to show a specific picker view?
* @param {String} view
* @return {Boolean}
*/
allowedToShowView (view) {
const views = ['day', 'month', 'year']
const minimumViewIndex = views.indexOf(this.minimumView)
const maximumViewIndex = views.indexOf(this.maximumView)
const viewIndex = views.indexOf(view)
return viewIndex >= minimumViewIndex && viewIndex <= maximumViewIndex
},
/**
* Show the day picker
* @return {Boolean}
*/
showDayCalendar () {
if (!this.allowedToShowView('day')) {
return false
}
this.close()
this.showDayView = true
return true
},
/**
* Show the month picker
* @return {Boolean}
*/
showMonthCalendar () {
if (!this.allowedToShowView('month')) {
return false
}
this.close()
this.showMonthView = true
return true
},
/**
* Show the year picker
* @return {Boolean}
*/
showYearCalendar () {
if (!this.allowedToShowView('year')) {
return false
}
this.close()
this.showYearView = true
return true
},
/**
* Set the selected date
* @param {Number} timestamp
*/
setDate (timestamp) {
const date = new Date(timestamp)
this.selectedDate = date
this.setPageDate(date)
this.$emit('selected', date)
this.$emit('input', date)
},
/**
* Clear the selected date
*/
clearDate () {
this.selectedDate = null
this.setPageDate()
this.$emit('selected', null)
this.$emit('input', null)
this.$emit('cleared')
},
/**
* @param {Object} date
*/
selectDate (date) {
this.setDate(date.timestamp)
if (!this.isInline) {
this.close(true)
}
this.resetTypedDate = new Date()
},
/**
* @param {Object} date
*/
selectDisabledDate (date) {
this.$emit('selectedDisabled', date)
},
/**
* @param {Object} month
*/
selectMonth (month) {
const date = new Date(month.timestamp)
if (this.allowedToShowView('day')) {
this.setPageDate(date)
this.$emit('changedMonth', month)
this.showDayCalendar()
} else {
this.selectDate(month)
}
},
/**
* @param {Object} year
*/
selectYear (year) {
const date = new Date(year.timestamp)
if (this.allowedToShowView('month')) {
this.setPageDate(date)
this.$emit('changedYear', year)
this.showMonthCalendar()
} else {
this.selectDate(year)
}
},
/**
* Set the datepicker value
* @param {Date|String|Number|null} date
*/
setValue (date) {
if (typeof date === 'string' || typeof date === 'number') {
let parsed = new Date(date)
date = isNaN(parsed.valueOf()) ? null : parsed
}
if (!date) {
this.setPageDate()
this.selectedDate = null
return
}
this.selectedDate = date
this.setPageDate(date)
},
/**
* Sets the date that the calendar should open on
*/
setPageDate (date) {
if (!date) {
if (this.openDate) {
date = new Date(this.openDate)
} else {
date = new Date()
}
}
this.pageTimestamp = this.utils.setDate(new Date(date), 1)
},
/**
* Handles a month change from the day picker
*/
handleChangedMonthFromDayPicker (date) {
this.setPageDate(date)
this.$emit('changedMonth', date)
},
/**
* Set the date from a typedDate event
*/
setTypedDate (date) {
this.setDate(date.getTime())
},
/**
* Close all calendar layers
* @param {Boolean} emitEvent - emit close event
*/
close (emitEvent) {
this.showDayView = this.showMonthView = this.showYearView = false
if (!this.isInline) {
if (emitEvent) {
this.$emit('closed')
}
document.removeEventListener('click', this.clickOutside, false)
}
},
/**
* Initiate the component
*/
init () {
if (this.value) {
this.setValue(this.value)
}
if (this.isInline) {
this.setInitialView()
}
}
},
}
// eslint-disable-next-line
;
</script>
<style lang="css">
.rtl {
direction: rtl;
}
.required-date {
border: 1px solid #FB7178;
border-radius: 5px;
}
.vdp-datepicker {
position: relative;
text-align: left;
}
.vdp-datepicker * {
box-sizing: border-box;
}
.vdp-datepicker__calendar {
position: absolute;
z-index: 100;
background: #fff;
width: 300px;
border: 1px solid #ccc;
}
.vdp-datepicker__calendar header {
display: block;
line-height: 40px;
}
.vdp-datepicker__calendar header span {
display: inline-block;
text-align: center;
width: 71.42857142857143%;
float: left;
}
.vdp-datepicker__calendar header .prev,
.vdp-datepicker__calendar header .next {
width: 14.285714285714286%;
float: left;
text-indent: -10000px;
position: relative;
}
.vdp-datepicker__calendar header .prev:after,
.vdp-datepicker__calendar header .next:after {
content: '';
position: absolute;
left: 50%;
top: 50%;
transform: translateX(-50%) translateY(-50%);
border: 6px solid transparent;
}
.vdp-datepicker__calendar header .prev:after {
border-right: 10px solid #000;
margin-left: -5px;
}
.vdp-datepicker__calendar header .prev.disabled:after {
border-right: 10px solid #ddd;
}
.vdp-datepicker__calendar header .next:after {
border-left: 10px solid #000;
margin-left: 5px;
}
.vdp-datepicker__calendar header .next.disabled:after {
border-left: 10px solid #ddd;
}
.vdp-datepicker__calendar header .prev:not(.disabled),
.vdp-datepicker__calendar header .next:not(.disabled),
.vdp-datepicker__calendar header .up:not(.disabled) {
cursor: pointer;
}
.vdp-datepicker__calendar header .prev:not(.disabled):hover,
.vdp-datepicker__calendar header .next:not(.disabled):hover,
.vdp-datepicker__calendar header .up:not(.disabled):hover {
background: #eee;
}
.vdp-datepicker__calendar .disabled {
color: #ddd;
cursor: default;
}
.vdp-datepicker__calendar .flex-rtl {
display: flex;
width: inherit;
flex-wrap: wrap;
}
.vdp-datepicker__calendar .cell {
display: inline-block;
padding: 0 5px;
width: 14.285714285714286%;
height: 40px;
line-height: 40px;
text-align: center;
vertical-align: middle;
border: 1px solid transparent;
}
.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day,
.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month,
.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year {
cursor: pointer;
}
.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).day:hover,
.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).month:hover,
.vdp-datepicker__calendar .cell:not(.blank):not(.disabled).year:hover {
border: 1px solid #4bd;
}
.vdp-datepicker__calendar .cell.selected {
background: #4bd;
}
.vdp-datepicker__calendar .cell.selected:hover {
background: #4bd;
}
.vdp-datepicker__calendar .cell.selected.highlighted {
background: #4bd;
}
.vdp-datepicker__calendar .cell.highlighted {
background: #cae5ed;
}
.vdp-datepicker__calendar .cell.highlighted.disabled {
color: #a3a3a3;
}
.vdp-datepicker__calendar .cell.grey {
color: #888;
}
.vdp-datepicker__calendar .cell.grey:hover {
background: inherit;
}
.vdp-datepicker__calendar .cell.day-header {
font-size: 75%;
white-space: nowrap;
cursor: inherit;
}
.vdp-datepicker__calendar .cell.day-header:hover {
background: inherit;
}
.vdp-datepicker__calendar .month,
.vdp-datepicker__calendar .year {
width: 33.333%;
}
.vdp-datepicker__clear-button,
.vdp-datepicker__calendar-button {
cursor: pointer;
font-style: normal;
}
.vdp-datepicker__clear-button.disabled,
.vdp-datepicker__calendar-button.disabled {
color: #999;
cursor: default;
}
</style>

View File

@ -0,0 +1,158 @@
<template>
<div :class="{'input-group' : bootstrapStyling}">
<!-- Calendar Button -->
<span v-if="calendarButton" class="vdp-datepicker__calendar-button" :class="{'input-group-prepend' : bootstrapStyling}" @click="showCalendar" v-bind:style="{'cursor:not-allowed;' : disabled}">
<span :class="{'input-group-text' : bootstrapStyling}">
<font-awesome-icon :icon="calendarButtonIcon"/>
</span>
</span>
<!-- Input -->
<input
:type="inline ? 'hidden' : 'text'"
:class="[computedInputClass, {'invalid': isFieldValid}]"
:name="name"
:ref="refName"
:id="id"
:value="formattedValue"
:open-date="openDate"
:placeholder="placeholder"
:clear-button="clearButton"
:disabled="disabled"
:required="required"
:readonly="!typeable"
class="date-field"
@click="showCalendar"
@keyup="parseTypedDate"
@blur="inputBlurred"
autocomplete="off">
<!-- Clear Button -->
<span v-if="clearButton && selectedDate" class="vdp-datepicker__clear-button" :class="{'input-group-append' : bootstrapStyling}" @click="clearDate()">
<span :class="{'input-group-text' : bootstrapStyling}">
<!-- <i :class="clearButtonIcon">
<span v-if="!clearButtonIcon">&times;</span>
</i> -->
<font-awesome-icon :icon="clearButtonIcon"/>
</span>
</span>
<slot name="afterDateInput"></slot>
</div>
</template>
<script>
import { makeDateUtils } from './src/DateUtils'
export default {
props: {
selectedDate: Date,
resetTypedDate: [Date],
format: [String, Function],
translation: Object,
inline: Boolean,
id: String,
name: String,
refName: String,
openDate: Date,
placeholder: String,
inputClass: [String, Object, Array],
clearButton: Boolean,
clearButtonIcon: String,
calendarButton: Boolean,
calendarButtonIcon: String,
calendarButtonIconContent: String,
disabled: Boolean,
required: Boolean,
typeable: Boolean,
bootstrapStyling: Boolean,
useUtc: Boolean,
invalid: Boolean
},
data () {
const constructedDateUtils = makeDateUtils(this.useUtc)
return {
input: null,
typedDate: false,
utils: constructedDateUtils
}
},
computed: {
formattedValue () {
if (!this.selectedDate) {
return null
}
if (this.typedDate) {
return this.typedDate
}
return typeof this.format === 'function'
? this.format(this.selectedDate)
: this.utils.formatDate(new Date(this.selectedDate), this.format, this.translation)
},
computedInputClass () {
if (this.bootstrapStyling) {
if (typeof this.inputClass === 'string') {
return [this.inputClass, 'form-control'].join(' ')
}
return {'form-control': true, ...this.inputClass}
}
return this.inputClass
},
isFieldValid () {
return this.invalid
}
},
watch: {
resetTypedDate () {
this.typedDate = false
}
},
methods: {
showCalendar () {
this.$emit('showCalendar')
},
/**
* Attempt to parse a typed date
* @param {Event} event
*/
parseTypedDate (event) {
// close calendar if escape or enter are pressed
if ([
27, // escape
13 // enter
].includes(event.keyCode)) {
this.input.blur()
}
if (this.typeable) {
const typedDate = Date.parse(this.input.value)
if (!isNaN(typedDate)) {
this.typedDate = this.input.value
this.$emit('typedDate', new Date(this.typedDate))
}
}
},
/**
* nullify the typed date to defer to regular formatting
* called once the input is blurred
*/
inputBlurred () {
if (this.typeable && isNaN(Date.parse(this.input.value))) {
this.clearDate()
this.input.value = null
this.typedDate = null
}
this.$emit('closeCalendar')
},
/**
* emit a clearDate event
*/
clearDate () {
this.$emit('clearDate')
}
},
mounted () {
this.input = this.$el.querySelector('input')
}
}
// eslint-disable-next-line
;
</script>

View File

@ -0,0 +1,375 @@
<template>
<div :class="[calendarClass, 'vdp-datepicker__calendar']" v-show="showDayView" :style="calendarStyle" @mousedown.prevent>
<slot name="beforeCalendarHeader"></slot>
<header>
<span
@click="isRtl ? nextMonth() : previousMonth()"
class="prev"
:class="{'disabled': isLeftNavDisabled}">&lt;</span>
<span class="day__month_btn" @click="showMonthCalendar" :class="allowedToShowView('month') ? 'up' : ''">{{ isYmd ? currYearName : currMonthName }} {{ isYmd ? currMonthName : currYearName }}</span>
<span
@click="isRtl ? previousMonth() : nextMonth()"
class="next"
:class="{'disabled': isRightNavDisabled}">&gt;</span>
</header>
<div :class="isRtl ? 'flex-rtl' : ''">
<span class="cell day-header" v-for="d in daysOfWeek" :key="d.timestamp">{{ d }}</span>
<template v-if="blankDays > 0">
<span class="cell day blank" v-for="d in blankDays" :key="d.timestamp"></span>
</template><!--
--><span class="cell day"
v-for="day in days"
:key="day.timestamp"
:class="dayClasses(day)"
v-html="dayCellContent(day)"
@click="selectDate(day)"></span>
</div>
</div>
</template>
<script>
import { makeDateUtils } from './src/DateUtils'
export default {
props: {
showDayView: Boolean,
selectedDate: Date,
pageDate: Date,
pageTimestamp: Number,
fullMonthName: Boolean,
allowedToShowView: Function,
dayCellContent: {
type: Function,
default: day => day.date
},
disabledDates: Object,
highlighted: Object,
calendarClass: [String, Object, Array],
calendarStyle: Object,
translation: Object,
isRtl: Boolean,
mondayFirst: Boolean,
useUtc: Boolean
},
data () {
const constructedDateUtils = makeDateUtils(this.useUtc)
return {
utils: constructedDateUtils
}
},
computed: {
/**
* Returns an array of day names
* @return {String[]}
*/
daysOfWeek () {
if (this.mondayFirst) {
const tempDays = this.translation.days.slice()
tempDays.push(tempDays.shift())
return tempDays
}
return this.translation.days
},
/**
* Returns the day number of the week less one for the first of the current month
* Used to show amount of empty cells before the first in the day calendar layout
* @return {Number}
*/
blankDays () {
const d = this.pageDate
let dObj = this.useUtc
? new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), 1))
: new Date(d.getFullYear(), d.getMonth(), 1, d.getHours(), d.getMinutes())
if (this.mondayFirst) {
return this.utils.getDay(dObj) > 0 ? this.utils.getDay(dObj) - 1 : 6
}
return this.utils.getDay(dObj)
},
/**
* @return {Object[]}
*/
days () {
const d = this.pageDate
let days = []
// set up a new date object to the beginning of the current 'page'
let dObj = this.useUtc
? new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), 1))
: new Date(d.getFullYear(), d.getMonth(), 1, d.getHours(), d.getMinutes())
let daysInMonth = this.utils.daysInMonth(this.utils.getFullYear(dObj), this.utils.getMonth(dObj))
for (let i = 0; i < daysInMonth; i++) {
days.push({
date: this.utils.getDate(dObj),
timestamp: dObj.getTime(),
isSelected: this.isSelectedDate(dObj),
isDisabled: this.isDisabledDate(dObj),
isHighlighted: this.isHighlightedDate(dObj),
isHighlightStart: this.isHighlightStart(dObj),
isHighlightEnd: this.isHighlightEnd(dObj),
isToday: this.utils.compareDates(dObj, new Date()),
isWeekend: this.utils.getDay(dObj) === 0 || this.utils.getDay(dObj) === 6,
isSaturday: this.utils.getDay(dObj) === 6,
isSunday: this.utils.getDay(dObj) === 0
})
this.utils.setDate(dObj, this.utils.getDate(dObj) + 1)
}
return days
},
/**
* Gets the name of the month the current page is on
* @return {String}
*/
currMonthName () {
const monthName = this.fullMonthName ? this.translation.months : this.translation.monthsAbbr
return this.utils.getMonthNameAbbr(this.utils.getMonth(this.pageDate), monthName)
},
/**
* Gets the name of the year that current page is on
* @return {Number}
*/
currYearName () {
const yearSuffix = this.translation.yearSuffix
return `${this.utils.getFullYear(this.pageDate)}${yearSuffix}`
},
/**
* Is this translation using year/month/day format?
* @return {Boolean}
*/
isYmd () {
return this.translation.ymd && this.translation.ymd === true
},
/**
* Is the left hand navigation button disabled?
* @return {Boolean}
*/
isLeftNavDisabled () {
return this.isRtl
? this.isNextMonthDisabled(this.pageTimestamp)
: this.isPreviousMonthDisabled(this.pageTimestamp)
},
/**
* Is the right hand navigation button disabled?
* @return {Boolean}
*/
isRightNavDisabled () {
return this.isRtl
? this.isPreviousMonthDisabled(this.pageTimestamp)
: this.isNextMonthDisabled(this.pageTimestamp)
}
},
methods: {
selectDate (date) {
if (date.isDisabled) {
this.$emit('selectedDisabled', date)
return false
}
this.$emit('selectDate', date)
},
/**
* @return {Number}
*/
getPageMonth () {
return this.utils.getMonth(this.pageDate)
},
/**
* Emit an event to show the month picker
*/
showMonthCalendar () {
this.$emit('showMonthCalendar')
},
/**
* Change the page month
* @param {Number} incrementBy
*/
changeMonth (incrementBy) {
let date = this.pageDate
this.utils.setMonth(date, this.utils.getMonth(date) + incrementBy)
this.$emit('changedMonth', date)
},
/**
* Decrement the page month
*/
previousMonth () {
if (!this.isPreviousMonthDisabled()) {
this.changeMonth(-1)
}
},
/**
* Is the previous month disabled?
* @return {Boolean}
*/
isPreviousMonthDisabled () {
if (!this.disabledDates || !this.disabledDates.to) {
return false
}
let d = this.pageDate
return this.utils.getMonth(this.disabledDates.to) >= this.utils.getMonth(d) &&
this.utils.getFullYear(this.disabledDates.to) >= this.utils.getFullYear(d)
},
/**
* Increment the current page month
*/
nextMonth () {
if (!this.isNextMonthDisabled()) {
this.changeMonth(+1)
}
},
/**
* Is the next month disabled?
* @return {Boolean}
*/
isNextMonthDisabled () {
if (!this.disabledDates || !this.disabledDates.from) {
return false
}
let d = this.pageDate
return this.utils.getMonth(this.disabledDates.from) <= this.utils.getMonth(d) &&
this.utils.getFullYear(this.disabledDates.from) <= this.utils.getFullYear(d)
},
/**
* Whether a day is selected
* @param {Date}
* @return {Boolean}
*/
isSelectedDate (dObj) {
return this.selectedDate && this.utils.compareDates(this.selectedDate, dObj)
},
/**
* Whether a day is disabled
* @param {Date}
* @return {Boolean}
*/
isDisabledDate (date) {
let disabledDates = false
if (typeof this.disabledDates === 'undefined') {
return false
}
if (typeof this.disabledDates.dates !== 'undefined') {
this.disabledDates.dates.forEach((d) => {
if (this.utils.compareDates(date, d)) {
disabledDates = true
return true
}
})
}
if (typeof this.disabledDates.to !== 'undefined' && this.disabledDates.to && date < this.disabledDates.to) {
disabledDates = true
}
if (typeof this.disabledDates.from !== 'undefined' && this.disabledDates.from && date > this.disabledDates.from) {
disabledDates = true
}
if (typeof this.disabledDates.ranges !== 'undefined') {
this.disabledDates.ranges.forEach((range) => {
if (typeof range.from !== 'undefined' && range.from && typeof range.to !== 'undefined' && range.to) {
if (date < range.to && date > range.from) {
disabledDates = true
return true
}
}
})
}
if (typeof this.disabledDates.days !== 'undefined' && this.disabledDates.days.indexOf(this.utils.getDay(date)) !== -1) {
disabledDates = true
}
if (typeof this.disabledDates.daysOfMonth !== 'undefined' && this.disabledDates.daysOfMonth.indexOf(this.utils.getDate(date)) !== -1) {
disabledDates = true
}
if (typeof this.disabledDates.customPredictor === 'function' && this.disabledDates.customPredictor(date)) {
disabledDates = true
}
return disabledDates
},
/**
* Whether a day is highlighted (only if it is not disabled already except when highlighted.includeDisabled is true)
* @param {Date}
* @return {Boolean}
*/
isHighlightedDate (date) {
if (!(this.highlighted && this.highlighted.includeDisabled) && this.isDisabledDate(date)) {
return false
}
let highlighted = false
if (typeof this.highlighted === 'undefined') {
return false
}
if (typeof this.highlighted.dates !== 'undefined') {
this.highlighted.dates.forEach((d) => {
if (this.utils.compareDates(date, d)) {
highlighted = true
return true
}
})
}
if (this.isDefined(this.highlighted.from) && this.isDefined(this.highlighted.to)) {
highlighted = date >= this.highlighted.from && date <= this.highlighted.to
}
if (typeof this.highlighted.days !== 'undefined' && this.highlighted.days.indexOf(this.utils.getDay(date)) !== -1) {
highlighted = true
}
if (typeof this.highlighted.daysOfMonth !== 'undefined' && this.highlighted.daysOfMonth.indexOf(this.utils.getDate(date)) !== -1) {
highlighted = true
}
if (typeof this.highlighted.customPredictor === 'function' && this.highlighted.customPredictor(date)) {
highlighted = true
}
return highlighted
},
dayClasses (day) {
return {
'selected': day.isSelected,
'disabled': day.isDisabled,
'highlighted': day.isHighlighted,
'today': day.isToday,
'weekend': day.isWeekend,
'sat': day.isSaturday,
'sun': day.isSunday,
'highlight-start': day.isHighlightStart,
'highlight-end': day.isHighlightEnd
}
},
/**
* Whether a day is highlighted and it is the first date
* in the highlighted range of dates
* @param {Date}
* @return {Boolean}
*/
isHighlightStart (date) {
return this.isHighlightedDate(date) &&
(this.highlighted.from instanceof Date) &&
(this.utils.getFullYear(this.highlighted.from) === this.utils.getFullYear(date)) &&
(this.utils.getMonth(this.highlighted.from) === this.utils.getMonth(date)) &&
(this.utils.getDate(this.highlighted.from) === this.utils.getDate(date))
},
/**
* Whether a day is highlighted and it is the first date
* in the highlighted range of dates
* @param {Date}
* @return {Boolean}
*/
isHighlightEnd (date) {
return this.isHighlightedDate(date) &&
(this.highlighted.to instanceof Date) &&
(this.utils.getFullYear(this.highlighted.to) === this.utils.getFullYear(date)) &&
(this.utils.getMonth(this.highlighted.to) === this.utils.getMonth(date)) &&
(this.utils.getDate(this.highlighted.to) === this.utils.getDate(date))
},
/**
* Helper
* @param {mixed} prop
* @return {Boolean}
*/
isDefined (prop) {
return typeof prop !== 'undefined' && prop
}
}
}
// eslint-disable-next-line
;
</script>

View File

@ -0,0 +1,200 @@
<template>
<div :class="[calendarClass, 'vdp-datepicker__calendar']" v-show="showMonthView" :style="calendarStyle" @mousedown.prevent>
<slot name="beforeCalendarHeader"></slot>
<header>
<span
@click="isRtl ? nextYear() : previousYear()"
class="prev"
:class="{'disabled': isLeftNavDisabled}">&lt;</span>
<span class="month__year_btn" @click="showYearCalendar" :class="allowedToShowView('year') ? 'up' : ''">{{ pageYearName }}</span>
<span
@click="isRtl ? previousYear() : nextYear()"
class="next"
:class="{'disabled': isRightNavDisabled}">&gt;</span>
</header>
<span class="cell month"
v-for="month in months"
:key="month.timestamp"
:class="{'selected': month.isSelected, 'disabled': month.isDisabled}"
@click.stop="selectMonth(month)">{{ month.month }}</span>
</div>
</template>
<script>
import { makeDateUtils } from './src/DateUtils'
export default {
props: {
showMonthView: Boolean,
selectedDate: Date,
pageDate: Date,
pageTimestamp: Number,
disabledDates: Object,
calendarClass: [String, Object, Array],
calendarStyle: Object,
translation: Object,
isRtl: Boolean,
allowedToShowView: Function,
useUtc: Boolean
},
data () {
const constructedDateUtils = makeDateUtils(this.useUtc)
return {
utils: constructedDateUtils
}
},
computed: {
months () {
const d = this.pageDate
let months = []
// set up a new date object to the beginning of the current 'page'
let dObj = this.useUtc
? new Date(Date.UTC(d.getUTCFullYear(), 0, d.getUTCDate()))
: new Date(d.getFullYear(), 0, d.getDate(), d.getHours(), d.getMinutes())
for (let i = 0; i < 12; i++) {
months.push({
month: this.utils.getMonthName(i, this.translation.months),
timestamp: dObj.getTime(),
isSelected: this.isSelectedMonth(dObj),
isDisabled: this.isDisabledMonth(dObj)
})
this.utils.setMonth(dObj, this.utils.getMonth(dObj) + 1)
}
return months
},
/**
* Get year name on current page.
* @return {String}
*/
pageYearName () {
const yearSuffix = this.translation.yearSuffix
return `${this.utils.getFullYear(this.pageDate)}${yearSuffix}`
},
/**
* Is the left hand navigation disabled
* @return {Boolean}
*/
isLeftNavDisabled () {
return this.isRtl
? this.isNextYearDisabled(this.pageTimestamp)
: this.isPreviousYearDisabled(this.pageTimestamp)
},
/**
* Is the right hand navigation disabled
* @return {Boolean}
*/
isRightNavDisabled () {
return this.isRtl
? this.isPreviousYearDisabled(this.pageTimestamp)
: this.isNextYearDisabled(this.pageTimestamp)
}
},
methods: {
/**
* Emits a selectMonth event
* @param {Object} month
*/
selectMonth (month) {
if (month.isDisabled) {
return false
}
this.$emit('selectMonth', month)
},
/**
* Changes the year up or down
* @param {Number} incrementBy
*/
changeYear (incrementBy) {
let date = this.pageDate
this.utils.setFullYear(date, this.utils.getFullYear(date) + incrementBy)
this.$emit('changedYear', date)
},
/**
* Decrements the year
*/
previousYear () {
if (!this.isPreviousYearDisabled()) {
this.changeYear(-1)
}
},
/**
* Checks if the previous year is disabled or not
* @return {Boolean}
*/
isPreviousYearDisabled () {
if (!this.disabledDates || !this.disabledDates.to) {
return false
}
return this.utils.getFullYear(this.disabledDates.to) >= this.utils.getFullYear(this.pageDate)
},
/**
* Increments the year
*/
nextYear () {
if (!this.isNextYearDisabled()) {
this.changeYear(1)
}
},
/**
* Checks if the next year is disabled or not
* @return {Boolean}
*/
isNextYearDisabled () {
if (!this.disabledDates || !this.disabledDates.from) {
return false
}
return this.utils.getFullYear(this.disabledDates.from) <= this.utils.getFullYear(this.pageDate)
},
/**
* Emits an event that shows the year calendar
*/
showYearCalendar () {
this.$emit('showYearCalendar')
},
/**
* Whether the selected date is in this month
* @param {Date}
* @return {Boolean}
*/
isSelectedMonth (date) {
return (this.selectedDate &&
this.utils.getFullYear(this.selectedDate) === this.utils.getFullYear(date) &&
this.utils.getMonth(this.selectedDate) === this.utils.getMonth(date))
},
/**
* Whether a month is disabled
* @param {Date}
* @return {Boolean}
*/
isDisabledMonth (date) {
let disabledDates = false
if (typeof this.disabledDates === 'undefined') {
return false
}
if (typeof this.disabledDates.to !== 'undefined' && this.disabledDates.to) {
if (
(this.utils.getMonth(date) < this.utils.getMonth(this.disabledDates.to) && this.utils.getFullYear(date) <= this.utils.getFullYear(this.disabledDates.to)) ||
this.utils.getFullYear(date) < this.utils.getFullYear(this.disabledDates.to)
) {
disabledDates = true
}
}
if (typeof this.disabledDates.from !== 'undefined' && this.disabledDates.from) {
if (
(this.utils.getMonth(date) > this.utils.getMonth(this.disabledDates.from) && this.utils.getFullYear(date) >= this.utils.getFullYear(this.disabledDates.from)) ||
this.utils.getFullYear(date) > this.utils.getFullYear(this.disabledDates.from)
) {
disabledDates = true
}
}
if (typeof this.disabledDates.customPredictor === 'function' && this.disabledDates.customPredictor(date)) {
disabledDates = true
}
return disabledDates
}
}
}
// eslint-disable-next-line
;
</script>

View File

@ -0,0 +1,174 @@
<template>
<div :class="[calendarClass, 'vdp-datepicker__calendar']" v-show="showYearView" :style="calendarStyle" @mousedown.prevent>
<slot name="beforeCalendarHeader"></slot>
<header>
<span
@click="isRtl ? nextDecade() : previousDecade()"
class="prev"
:class="{'disabled': isLeftNavDisabled}">&lt;</span>
<span>{{ getPageDecade }}</span>
<span
@click="isRtl ? previousDecade() : nextDecade()"
class="next"
:class="{'disabled': isRightNavDisabled}">&gt;</span>
</header>
<span
class="cell year"
v-for="year in years"
:key="year.timestamp"
:class="{ 'selected': year.isSelected, 'disabled': year.isDisabled }"
@click.stop="selectYear(year)">{{ year.year }}</span>
</div>
</template>
<script>
import { makeDateUtils } from './src/DateUtils'
export default {
props: {
showYearView: Boolean,
selectedDate: Date,
pageDate: Date,
pageTimestamp: Number,
disabledDates: Object,
highlighted: Object,
calendarClass: [String, Object, Array],
calendarStyle: Object,
translation: Object,
isRtl: Boolean,
allowedToShowView: Function,
useUtc: Boolean
},
computed: {
years () {
const d = this.pageDate
let years = []
// set up a new date object to the beginning of the current 'page'7
let dObj = this.useUtc
? new Date(Date.UTC(Math.floor(d.getUTCFullYear() / 10) * 10, d.getUTCMonth(), d.getUTCDate()))
: new Date(Math.floor(d.getFullYear() / 10) * 10, d.getMonth(), d.getDate(), d.getHours(), d.getMinutes())
for (let i = 0; i < 10; i++) {
years.push({
year: this.utils.getFullYear(dObj),
timestamp: dObj.getTime(),
isSelected: this.isSelectedYear(dObj),
isDisabled: this.isDisabledYear(dObj)
})
this.utils.setFullYear(dObj, this.utils.getFullYear(dObj) + 1)
}
return years
},
/**
* @return {String}
*/
getPageDecade () {
const decadeStart = Math.floor(this.utils.getFullYear(this.pageDate) / 10) * 10
const decadeEnd = decadeStart + 9
const yearSuffix = this.translation.yearSuffix
return `${decadeStart} - ${decadeEnd}${yearSuffix}`
},
/**
* Is the left hand navigation button disabled?
* @return {Boolean}
*/
isLeftNavDisabled () {
return this.isRtl
? this.isNextDecadeDisabled(this.pageTimestamp)
: this.isPreviousDecadeDisabled(this.pageTimestamp)
},
/**
* Is the right hand navigation button disabled?
* @return {Boolean}
*/
isRightNavDisabled () {
return this.isRtl
? this.isPreviousDecadeDisabled(this.pageTimestamp)
: this.isNextDecadeDisabled(this.pageTimestamp)
}
},
data () {
const constructedDateUtils = makeDateUtils(this.useUtc)
return {
utils: constructedDateUtils
}
},
methods: {
selectYear (year) {
if (year.isDisabled) {
return false
}
this.$emit('selectYear', year)
},
changeYear (incrementBy) {
let date = this.pageDate
this.utils.setFullYear(date, this.utils.getFullYear(date) + incrementBy)
this.$emit('changedDecade', date)
},
previousDecade () {
if (this.isPreviousDecadeDisabled()) {
return false
}
this.changeYear(-10)
},
isPreviousDecadeDisabled () {
if (!this.disabledDates || !this.disabledDates.to) {
return false
}
const disabledYear = this.utils.getFullYear(this.disabledDates.to)
const lastYearInPreviousPage = Math.floor(this.utils.getFullYear(this.pageDate) / 10) * 10 - 1
return disabledYear > lastYearInPreviousPage
},
nextDecade () {
if (this.isNextDecadeDisabled()) {
return false
}
this.changeYear(10)
},
isNextDecadeDisabled () {
if (!this.disabledDates || !this.disabledDates.from) {
return false
}
const disabledYear = this.utils.getFullYear(this.disabledDates.from)
const firstYearInNextPage = Math.ceil(this.utils.getFullYear(this.pageDate) / 10) * 10
return disabledYear < firstYearInNextPage
},
/**
* Whether the selected date is in this year
* @param {Date}
* @return {Boolean}
*/
isSelectedYear (date) {
return this.selectedDate && this.utils.getFullYear(this.selectedDate) === this.utils.getFullYear(date)
},
/**
* Whether a year is disabled
* @param {Date}
* @return {Boolean}
*/
isDisabledYear (date) {
let disabledDates = false
if (typeof this.disabledDates === 'undefined' || !this.disabledDates) {
return false
}
if (typeof this.disabledDates.to !== 'undefined' && this.disabledDates.to) {
if (this.utils.getFullYear(date) < this.utils.getFullYear(this.disabledDates.to)) {
disabledDates = true
}
}
if (typeof this.disabledDates.from !== 'undefined' && this.disabledDates.from) {
if (this.utils.getFullYear(date) > this.utils.getFullYear(this.disabledDates.from)) {
disabledDates = true
}
}
if (typeof this.disabledDates.customPredictor === 'function' && this.disabledDates.customPredictor(date)) {
disabledDates = true
}
return disabledDates
}
}
}
// eslint-disable-next-line
;
</script>

View File

@ -0,0 +1,252 @@
import en from './locale/translations/en'
const utils = {
/**
* @type {Boolean}
*/
useUtc: false,
/**
* Returns the full year, using UTC or not
* @param {Date} date
*/
getFullYear (date) {
return this.useUtc ? date.getUTCFullYear() : date.getFullYear()
},
/**
* Returns the month, using UTC or not
* @param {Date} date
*/
getMonth (date) {
return this.useUtc ? date.getUTCMonth() : date.getMonth()
},
/**
* Returns the date, using UTC or not
* @param {Date} date
*/
getDate (date) {
return this.useUtc ? date.getUTCDate() : date.getDate()
},
/**
* Returns the day, using UTC or not
* @param {Date} date
*/
getDay (date) {
return this.useUtc ? date.getUTCDay() : date.getDay()
},
/**
* Returns the hours, using UTC or not
* @param {Date} date
*/
getHours (date) {
return this.useUtc ? date.getUTCHours() : date.getHours()
},
/**
* Returns the minutes, using UTC or not
* @param {Date} date
*/
getMinutes (date) {
return this.useUtc ? date.getUTCMinutes() : date.getMinutes()
},
/**
* Sets the full year, using UTC or not
* @param {Date} date
*/
setFullYear (date, value, useUtc) {
return this.useUtc ? date.setUTCFullYear(value) : date.setFullYear(value)
},
/**
* Sets the month, using UTC or not
* @param {Date} date
*/
setMonth (date, value, useUtc) {
return this.useUtc ? date.setUTCMonth(value) : date.setMonth(value)
},
/**
* Sets the date, using UTC or not
* @param {Date} date
* @param {Number} value
*/
setDate (date, value, useUtc) {
return this.useUtc ? date.setUTCDate(value) : date.setDate(value)
},
/**
* Check if date1 is equivalent to date2, without comparing the time
* @see https://stackoverflow.com/a/6202196/4455925
* @param {Date} date1
* @param {Date} date2
*/
compareDates (date1, date2) {
const d1 = new Date(date1.getTime())
const d2 = new Date(date2.getTime())
if (this.useUtc) {
d1.setUTCHours(0, 0, 0, 0)
d2.setUTCHours(0, 0, 0, 0)
} else {
d1.setHours(0, 0, 0, 0)
d2.setHours(0, 0, 0, 0)
}
return d1.getTime() === d2.getTime()
},
/**
* Validates a date object
* @param {Date} date - an object instantiated with the new Date constructor
* @return {Boolean}
*/
isValidDate (date) {
if (Object.prototype.toString.call(date) !== '[object Date]') {
return false
}
return !isNaN(date.getTime())
},
/**
* Return abbreviated week day name
* @param {Date}
* @param {Array}
* @return {String}
*/
getDayNameAbbr (date, days) {
if (typeof date !== 'object') {
throw TypeError('Invalid Type')
}
return days[this.getDay(date)]
},
/**
* Return name of the month
* @param {Number|Date}
* @param {Array}
* @return {String}
*/
getMonthName (month, months) {
if (!months) {
throw Error('missing 2nd parameter Months array')
}
if (typeof month === 'object') {
return months[this.getMonth(month)]
}
if (typeof month === 'number') {
return months[month]
}
throw TypeError('Invalid type')
},
/**
* Return an abbreviated version of the month
* @param {Number|Date}
* @return {String}
*/
getMonthNameAbbr (month, monthsAbbr) {
if (!monthsAbbr) {
throw Error('missing 2nd paramter Months array')
}
if (typeof month === 'object') {
return monthsAbbr[this.getMonth(month)]
}
if (typeof month === 'number') {
return monthsAbbr[month]
}
throw TypeError('Invalid type')
},
/**
* Alternative get total number of days in month
* @param {Number} year
* @param {Number} m
* @return {Number}
*/
daysInMonth (year, month) {
return /8|3|5|10/.test(month) ? 30 : month === 1 ? (!(year % 4) && year % 100) || !(year % 400) ? 29 : 28 : 31
},
/**
* Get nth suffix for date
* @param {Number} day
* @return {String}
*/
getNthSuffix (day) {
switch (day) {
case 1:
case 21:
case 31:
return 'st'
case 2:
case 22:
return 'nd'
case 3:
case 23:
return 'rd'
default:
return 'th'
}
},
/**
* Formats date object
* @param {Date}
* @param {String}
* @param {Object}
* @return {String}
*/
formatDate (date, format, translation) {
translation = (!translation) ? en : translation
let year = this.getFullYear(date)
let month = this.getMonth(date) + 1
let day = this.getDate(date)
let str = format
.replace(/dd/, ('0' + day).slice(-2))
.replace(/d/, day)
.replace(/yyyy/, year)
.replace(/yy/, String(year).slice(2))
.replace(/MMMM/, this.getMonthName(this.getMonth(date), translation.months))
.replace(/MMM/, this.getMonthNameAbbr(this.getMonth(date), translation.monthsAbbr))
.replace(/MM/, ('0' + month).slice(-2))
.replace(/M(?!a|ä|e)/, month)
.replace(/su/, this.getNthSuffix(this.getDate(date)))
.replace(/D(?!e|é|i)/, this.getDayNameAbbr(date, translation.days))
return str
},
/**
* Creates an array of dates for each day in between two dates.
* @param {Date} start
* @param {Date} end
* @return {Array}
*/
createDateArray (start, end) {
let dates = []
while (start <= end) {
dates.push(new Date(start))
start = this.setDate(new Date(start), this.getDate(new Date(start)) + 1)
}
return dates
},
/**
* method used as a prop validator for input values
* @param {*} val
* @return {Boolean}
*/
validateDateInput (val) {
return val === null || val instanceof Date || typeof val === 'string' || typeof val === 'number'
}
}
export const makeDateUtils = useUtc => ({...utils, useUtc})
export default {
...utils
}
// eslint-disable-next-line
;

View File

@ -0,0 +1,57 @@
export default class Language {
constructor (language, months, monthsAbbr, days) {
this.language = language
this.months = months
this.monthsAbbr = monthsAbbr
this.days = days
this.rtl = false
this.ymd = false
this.yearSuffix = ''
}
get language () {
return this._language
}
set language (language) {
if (typeof language !== 'string') {
throw new TypeError('Language must be a string')
}
this._language = language
}
get months () {
return this._months
}
set months (months) {
if (months.length !== 12) {
throw new RangeError(`There must be 12 months for ${this.language} language`)
}
this._months = months
}
get monthsAbbr () {
return this._monthsAbbr
}
set monthsAbbr (monthsAbbr) {
if (monthsAbbr.length !== 12) {
throw new RangeError(`There must be 12 abbreviated months for ${this.language} language`)
}
this._monthsAbbr = monthsAbbr
}
get days () {
return this._days
}
set days (days) {
if (days.length !== 7) {
throw new RangeError(`There must be 7 days for ${this.language} language`)
}
this._days = days
}
}
// eslint-disable-next-line
;

View File

@ -0,0 +1,105 @@
import af from './translations/af'
import ar from './translations/ar'
import bg from './translations/bg'
import bs from './translations/bs'
import ca from './translations/ca'
import cs from './translations/cs'
import da from './translations/da'
import de from './translations/de'
import ee from './translations/ee'
import el from './translations/el'
import en from './translations/en'
import es from './translations/es'
import fa from './translations/fa'
import fi from './translations/fi'
import fo from './translations/fo'
import fr from './translations/fr'
import ge from './translations/ge'
import gl from './translations/gl'
import he from './translations/he'
import hr from './translations/hr'
import hu from './translations/hu'
import id from './translations/id'
import is from './translations/is'
import it from './translations/it'
import ja from './translations/ja'
import kk from './translations/kk'
import ko from './translations/ko'
import lb from './translations/lb'
import lt from './translations/lt'
import lv from './translations/lv'
import mk from './translations/mk'
import mn from './translations/mn'
import nbNO from './translations/nb-NO'
import nl from './translations/nl'
import pl from './translations/pl'
import ptBR from './translations/pt-BR'
import ro from './translations/ro'
import ru from './translations/ru'
import sk from './translations/sk'
import slSI from './translations/sl-SI'
import srCYRL from './translations/sr-CYRL'
import sr from './translations/sr'
import sv from './translations/sv'
import th from './translations/th'
import tr from './translations/tr'
import uk from './translations/uk'
import ur from './translations/ur'
import vi from './translations/vi'
import zh from './translations/zh'
import zhHK from './translations/zh-HK'
export {
af,
ar,
bg,
bs,
ca,
cs,
da,
de,
ee,
el,
en,
es,
fa,
fi,
fo,
fr,
ge,
gl,
he,
hr,
hu,
id,
is,
it,
ja,
kk,
ko,
lb,
lt,
lv,
mk,
mn,
nbNO,
nl,
pl,
ptBR,
ro,
ru,
sk,
slSI,
srCYRL,
sr,
sv,
th,
tr,
uk,
ur,
vi,
zh,
zhHK
}
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Afrikaans',
['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'],
['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,14 @@
import Language from '../Language'
const language = new Language(
'Arabic',
['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوڤمبر', 'ديسمبر'],
['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوڤمبر', 'ديسمبر'],
['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت']
)
language.rtl = true
export default language
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Bulgarian',
['Януари', 'Февруари', 'Март', 'Април', 'Май', 'Юни', 'Юли', 'Август', 'Септември', 'Октомври', 'Ноември', 'Декември'],
['Ян', 'Фев', 'Мар', 'Апр', 'Май', 'Юни', 'Юли', 'Авг', 'Сеп', 'Окт', 'Ное', 'Дек'],
['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Bosnian',
['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Juni', 'Juli', 'Avgust', 'Septembar', 'Oktobar', 'Novembar', 'Decembar'],
['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],
['Ned', 'Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Catalan',
['Gener', 'Febrer', 'Març', 'Abril', 'Maig', 'Juny', 'Juliol', 'Agost', 'Setembre', 'Octubre', 'Novembre', 'Desembre'],
['Gen', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Des'],
['Diu', 'Dil', 'Dmr', 'Dmc', 'Dij', 'Div', 'Dis']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Czech',
['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'],
['led', 'úno', 'bře', 'dub', 'kvě', 'čer', 'čec', 'srp', 'zář', 'říj', 'lis', 'pro'],
['ne', 'po', 'út', 'st', 'čt', 'pá', 'so']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Danish',
['Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December'],
['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'German',
['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Estonian',
['Jaanuar', 'Veebruar', 'Märts', 'Aprill', 'Mai', 'Juuni', 'Juuli', 'August', 'September', 'Oktoober', 'November', 'Detsember'],
['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni', 'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'],
['P', 'E', 'T', 'K', 'N', 'R', 'L']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Greek',
['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάϊος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'],
['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαι', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'],
['Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'English',
['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Spanish',
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Persian',
['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'],
['فرو', 'ارد', 'خرد', 'تیر', 'مرد', 'شهر', 'مهر', 'آبا', 'آذر', 'دی', 'بهم', 'اسف'],
['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Finnish',
['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu'],
['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'],
['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Faroese',
['Januar', 'Februar', 'Mars', 'Apríl', 'Mai', 'Juni', 'Juli', 'August', 'Septembur', 'Oktobur', 'Novembur', 'Desembur'],
['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
['Sun', 'Mán', 'Týs', 'Mik', 'Hós', 'Frí', 'Ley']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'French',
['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Déc'],
['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Georgia',
['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'],
['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'],
['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Galician',
['Xaneiro', 'Febreiro', 'Marzo', 'Abril', 'Maio', 'Xuño', 'Xullo', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Decembro'],
['Xan', 'Feb', 'Mar', 'Abr', 'Mai', 'Xuñ', 'Xul', 'Ago', 'Set', 'Out', 'Nov', 'Dec'],
['Dom', 'Lun', 'Mar', 'Mér', 'Xov', 'Ven', 'Sáb']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,14 @@
import Language from '../Language'
const language = new Language(
'Hebrew',
['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'],
['ינו', 'פבר', 'מרץ', 'אפר', 'מאי', 'יונ', 'יול', 'אוג', 'ספט', 'אוק', 'נוב', 'דצמ'],
['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש']
)
language.rtl = true
export default language
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Croatian',
['Siječanj', 'Veljača', 'Ožujak', 'Travanj', 'Svibanj', 'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac'],
['Sij', 'Velj', 'Ožu', 'Tra', 'Svi', 'Lip', 'Srp', 'Kol', 'Ruj', 'Lis', 'Stu', 'Pro'],
['Ned', 'Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Hungarian',
['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
['Jan', 'Febr', 'Márc', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szept', 'Okt', 'Nov', 'Dec'],
['Vas', 'Hét', 'Ke', 'Sze', 'Csü', 'Pén', 'Szo']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Indonesian',
['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'],
['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'],
['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Icelandic',
['Janúar', 'Febrúar', 'Mars', 'Apríl', 'Maí', 'Júní', 'Júlí', 'Ágúst', 'September', 'Október', 'Nóvember', 'Desember'],
['Jan', 'Feb', 'Mars', 'Apr', 'Maí', 'Jún', 'Júl', 'Ágú', 'Sep', 'Okt', 'Nóv', 'Des'],
['Sun', 'Mán', 'Þri', 'Mið', 'Fim', 'Fös', 'Lau']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Italian',
['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],
['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'],
['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,15 @@
import Language from '../Language'
const language = new Language(
'Japanese',
['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
['日', '月', '火', '水', '木', '金', '土']
)
language.yearSuffix = '年'
language.ymd = true
export default language
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Kazakh',
['Қаңтар', 'Ақпан', 'Наурыз', 'Сәуір', 'Мамыр', 'Маусым', 'Шілде', 'Тамыз', 'Қыркүйек', 'Қазан', 'Қараша', 'Желтоқсан'],
['Қаң', 'Ақп', 'Нау', 'Сәу', 'Мам', 'Мау', 'Шіл', 'Там', 'Қыр', 'Қаз', 'Қар', 'Жел'],
['Жк', 'Дй', 'Сй', 'Ср', 'Бй', 'Жм', 'Сн']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,14 @@
import Language from '../Language'
const language = new Language(
'Korean',
['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
['일', '월', '화', '수', '목', '금', '토']
)
language.yearSuffix = '년'
language.ymd = true
export default language
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Luxembourgish',
['Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mee', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,14 @@
import Language from '../Language'
const language = new Language(
'Lithuanian',
['Sausis', 'Vasaris', 'Kovas', 'Balandis', 'Gegužė', 'Birželis', 'Liepa', 'Rugpjūtis', 'Rugsėjis', 'Spalis', 'Lapkritis', 'Gruodis'],
['Sau', 'Vas', 'Kov', 'Bal', 'Geg', 'Bir', 'Lie', 'Rugp', 'Rugs', 'Spa', 'Lap', 'Gru'],
['Sek', 'Pir', 'Ant', 'Tre', 'Ket', 'Pen', 'Šeš']
)
language.ymd = true
export default language
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Latvian',
['Janvāris', 'Februāris', 'Marts', 'Aprīlis', 'Maijs', 'Jūnijs', 'Jūlijs', 'Augusts', 'Septembris', 'Oktobris', 'Novembris', 'Decembris'],
['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jūn', 'Jūl', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Macedonian',
['Јануари', 'Февруари', 'Март', 'Април', 'Мај', 'Јуни', 'Јули', 'Август', 'Септември', 'Октомври', 'Ноември', 'Декември'],
['Јан', 'Фев', 'Мар', 'Апр', 'Мај', 'Јун', 'Јул', 'Авг', 'Сеп', 'Окт', 'Ное', 'Дек'],
['Нед', 'Пон', 'Вто', 'Сре', 'Чет', 'Пет', 'Саб']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,14 @@
import Language from '../Language'
const language = new Language(
'Mongolia',
['1 дүгээр сар', '2 дугаар сар', '3 дугаар сар', '4 дүгээр сар', '5 дугаар сар', '6 дугаар сар', '7 дугаар сар', '8 дугаар сар', '9 дүгээр сар', '10 дугаар сар', '11 дүгээр сар', '12 дугаар сар'],
['1-р сар', '2-р сар', '3-р сар', '4-р сар', '5-р сар', '6-р сар', '7-р сар', '8-р сар', '9-р сар', '10-р сар', '11-р сар', '12-р сар'],
['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя']
)
language.ymd = true
export default language
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Norwegian Bokmål',
['Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember'],
['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Dutch',
['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Polish',
['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'],
['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'],
['Nd', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'Sob']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Brazilian',
['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Romanian',
['Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie', 'Iulie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie'],
['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sep', 'Oct', 'Noi', 'Dec'],
['D', 'L', 'Ma', 'Mi', 'J', 'V', 'S']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Russian',
['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
['Янв', 'Февр', 'Март', 'Апр', 'Май', 'Июнь', 'Июль', 'Авг', 'Сент', 'Окт', 'Нояб', 'Дек'],
['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Slovakian',
['január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', 'november', 'december'],
['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'],
['ne', 'po', 'ut', 'st', 'št', 'pi', 'so']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Sloveian',
['Januar', 'Februar', 'Marec', 'April', 'Maj', 'Junij', 'Julij', 'Avgust', 'September', 'Oktober', 'November', 'December'],
['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],
['Ned', 'Pon', 'Tor', 'Sre', 'Čet', 'Pet', 'Sob']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Serbian in Cyrillic script',
['Јануар', 'Фебруар', 'Март', 'Април', 'Мај', 'Јун', 'Јул', 'Август', 'Септембар', 'Октобар', 'Новембар', 'Децембар'],
['Јан', 'Феб', 'Мар', 'Апр', 'Мај', 'Јун', 'Јул', 'Авг', 'Сеп', 'Окт', 'Нов', 'Дец'],
['Нед', 'Пон', 'Уто', 'Сре', 'Чет', 'Пет', 'Суб']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Serbian',
['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Jun', 'Jul', 'Avgust', 'Septembar', 'Oktobar', 'Novembar', 'Decembar'],
['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],
['Ned', 'Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Swedish',
['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],
['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Thai',
['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'],
['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],
['อา', 'จ', 'อ', 'พ', 'พฤ', 'ศ', 'ส']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Turkish',
['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],
['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],
['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Ukraine',
['Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'],
['Січ', 'Лют', 'Бер', 'Квіт', 'Трав', 'Чер', 'Лип', 'Серп', 'Вер', 'Жовт', 'Лист', 'Груд'],
['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,14 @@
import Language from '../Language'
const language = new Language(
'Urdu',
['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']
)
language.rtl = true
export default language
// eslint-disable-next-line
;

View File

@ -0,0 +1,10 @@
import Language from '../Language'
export default new Language(
'Vietnamese',
['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'],
['T 01', 'T 02', 'T 03', 'T 04', 'T 05', 'T 06', 'T 07', 'T 08', 'T 09', 'T 10', 'T 11', 'T 12'],
['CN', 'Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7']
)
// eslint-disable-next-line
;

View File

@ -0,0 +1,11 @@
import Language from '../Language'
const language = new Language(
'Chinese_HK',
['壹月', '贰月', '叁月', '肆月', '伍月', '陆月', '柒月', '捌月', '玖月', '拾月', '拾壹月', '拾贰月'],
['壹月', '贰月', '叁月', '肆月', '伍月', '陆月', '柒月', '捌月', '玖月', '拾月', '拾壹月', '拾贰月'],
['日', '壹', '贰', '叁', '肆', '伍', '陆']
)
language.yearSuffix = '年'
export default language

View File

@ -0,0 +1,13 @@
import Language from '../Language'
const language = new Language(
'Chinese',
['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
['日', '一', '二', '三', '四', '五', '六']
)
language.yearSuffix = '年'
export default language
// eslint-disable-next-line
;