Repository: mengxiong10/vue-datepicker-next Branch: main Commit: 1db9afa0e30e Files: 337 Total size: 403.5 KB Directory structure: gitextract_or_gc1i2/ ├── .eslintignore ├── .eslintrc.js ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── question.md │ └── workflows/ │ └── tests.yml ├── .gitignore ├── .husky/ │ ├── commit-msg │ └── pre-commit ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── README.zh-CN.md ├── __tests__/ │ ├── Calendar.test.ts │ ├── CalendarRange.test.ts │ ├── DatePicker.test.ts │ ├── Datetime.test.ts │ ├── DatetimeRange.test.ts │ ├── TableDate.test.ts │ ├── TableMonth.test.ts │ ├── TableYear.test.ts │ ├── TimePanel.test.ts │ ├── TimeRange.test.ts │ ├── __snapshots__/ │ │ ├── DatePicker.test.ts.snap │ │ ├── TableDate.test.ts.snap │ │ ├── TableMonth.test.ts.snap │ │ ├── TableYear.test.ts.snap │ │ ├── TimePanel.test.ts.snap │ │ └── TimeRange.test.ts.snap │ └── locale.test.ts ├── babel.config.js ├── build/ │ ├── deploy.sh │ ├── git.sh │ └── release.sh ├── commitlint.config.js ├── docs/ │ ├── components/ │ │ ├── App.tsx │ │ └── Card.tsx │ ├── demo/ │ │ ├── Basic.vue │ │ ├── ControlOpen.vue │ │ ├── ControlTimePanel.vue │ │ ├── Disabled.vue │ │ ├── DisabledDateTime.vue │ │ ├── FixedTimeList.vue │ │ ├── HideSeconds.vue │ │ ├── MinuteStep.vue │ │ ├── Range.vue │ │ ├── Shortcut.vue │ │ └── ValueType.vue │ ├── en.md │ ├── index.html │ ├── index.scss │ ├── index.ts │ ├── md.d.ts │ ├── vite.config.ts │ ├── viteMarkdownPlugin.ts │ └── zh-cn.md ├── index.html ├── jest-transform-svg.js ├── jest.config.js ├── lib/ │ ├── DatePicker.tsx │ ├── Picker.tsx │ ├── PickerInput.tsx │ ├── Popup.tsx │ ├── calendar/ │ │ ├── ButtonIcon.tsx │ │ ├── Calendar.tsx │ │ ├── CalendarRange.tsx │ │ ├── TableDate.tsx │ │ ├── TableHeader.tsx │ │ ├── TableMonth.tsx │ │ └── TableYear.tsx │ ├── context.ts │ ├── datetime/ │ │ ├── DateTime.tsx │ │ ├── DateTimeRange.tsx │ │ └── useTimePanelVisible.ts │ ├── index.ts │ ├── locale/ │ │ ├── af.ts │ │ ├── ar-dz.ts │ │ ├── ar-sa.ts │ │ ├── ar.ts │ │ ├── az.ts │ │ ├── be.ts │ │ ├── bg.ts │ │ ├── bm.ts │ │ ├── bn.ts │ │ ├── ca.ts │ │ ├── cs.ts │ │ ├── cy.ts │ │ ├── da.ts │ │ ├── de.ts │ │ ├── el.ts │ │ ├── en.ts │ │ ├── eo.ts │ │ ├── es.ts │ │ ├── et.ts │ │ ├── fi.ts │ │ ├── fr.ts │ │ ├── gl.ts │ │ ├── gu.ts │ │ ├── he.ts │ │ ├── hi.ts │ │ ├── hr.ts │ │ ├── hu.ts │ │ ├── id.ts │ │ ├── is.ts │ │ ├── it.ts │ │ ├── ja.ts │ │ ├── ka.ts │ │ ├── kk.ts │ │ ├── ko.ts │ │ ├── lt.ts │ │ ├── lv.ts │ │ ├── mk.ts │ │ ├── ms.ts │ │ ├── nb.ts │ │ ├── nl-be.ts │ │ ├── nl.ts │ │ ├── pl.ts │ │ ├── pt-br.ts │ │ ├── pt.ts │ │ ├── ro.ts │ │ ├── ru.ts │ │ ├── sl.ts │ │ ├── sr.ts │ │ ├── sv.ts │ │ ├── ta.ts │ │ ├── te.ts │ │ ├── th.ts │ │ ├── tr.ts │ │ ├── ug-cn.ts │ │ ├── uk.ts │ │ ├── vi.ts │ │ ├── zh-cn.ts │ │ └── zh-tw.ts │ ├── locale.ts │ ├── scrollbar/ │ │ └── ScrollbarVertical.tsx │ ├── style/ │ │ ├── animation.scss │ │ ├── btn.scss │ │ ├── icon.scss │ │ ├── index.scss │ │ ├── scrollbar.scss │ │ └── var.scss │ ├── svg.ts │ ├── time/ │ │ ├── Columns.tsx │ │ ├── FixedList.tsx │ │ ├── TimePanel.tsx │ │ ├── TimeRange.tsx │ │ └── getOptions.ts │ ├── type.ts │ ├── util/ │ │ ├── base.ts │ │ ├── date.ts │ │ ├── dom.ts │ │ └── throttle.ts │ └── vueUtil.ts ├── locale/ │ ├── af.d.ts │ ├── af.es.js │ ├── af.js │ ├── ar-dz.d.ts │ ├── ar-dz.es.js │ ├── ar-dz.js │ ├── ar-sa.d.ts │ ├── ar-sa.es.js │ ├── ar-sa.js │ ├── ar.d.ts │ ├── ar.es.js │ ├── ar.js │ ├── az.d.ts │ ├── az.es.js │ ├── az.js │ ├── be.d.ts │ ├── be.es.js │ ├── be.js │ ├── bg.d.ts │ ├── bg.es.js │ ├── bg.js │ ├── bm.d.ts │ ├── bm.es.js │ ├── bm.js │ ├── bn.d.ts │ ├── bn.es.js │ ├── bn.js │ ├── ca.d.ts │ ├── ca.es.js │ ├── ca.js │ ├── cs.d.ts │ ├── cs.es.js │ ├── cs.js │ ├── cy.d.ts │ ├── cy.es.js │ ├── cy.js │ ├── da.d.ts │ ├── da.es.js │ ├── da.js │ ├── de.d.ts │ ├── de.es.js │ ├── de.js │ ├── el.d.ts │ ├── el.es.js │ ├── el.js │ ├── en.d.ts │ ├── en.es.js │ ├── en.js │ ├── eo.d.ts │ ├── eo.es.js │ ├── eo.js │ ├── es.d.ts │ ├── es.es.js │ ├── es.js │ ├── et.d.ts │ ├── et.es.js │ ├── et.js │ ├── fi.d.ts │ ├── fi.es.js │ ├── fi.js │ ├── fr.d.ts │ ├── fr.es.js │ ├── fr.js │ ├── gl.d.ts │ ├── gl.es.js │ ├── gl.js │ ├── gu.d.ts │ ├── gu.es.js │ ├── gu.js │ ├── he.d.ts │ ├── he.es.js │ ├── he.js │ ├── hi.d.ts │ ├── hi.es.js │ ├── hi.js │ ├── hr.d.ts │ ├── hr.es.js │ ├── hr.js │ ├── hu.d.ts │ ├── hu.es.js │ ├── hu.js │ ├── id.d.ts │ ├── id.es.js │ ├── id.js │ ├── is.d.ts │ ├── is.es.js │ ├── is.js │ ├── it.d.ts │ ├── it.es.js │ ├── it.js │ ├── ja.d.ts │ ├── ja.es.js │ ├── ja.js │ ├── ka.d.ts │ ├── ka.es.js │ ├── ka.js │ ├── kk.d.ts │ ├── kk.es.js │ ├── kk.js │ ├── ko.d.ts │ ├── ko.es.js │ ├── ko.js │ ├── lt.d.ts │ ├── lt.es.js │ ├── lt.js │ ├── lv.d.ts │ ├── lv.es.js │ ├── lv.js │ ├── mk.d.ts │ ├── mk.es.js │ ├── mk.js │ ├── ms.d.ts │ ├── ms.es.js │ ├── ms.js │ ├── nb.d.ts │ ├── nb.es.js │ ├── nb.js │ ├── nl-be.d.ts │ ├── nl-be.es.js │ ├── nl-be.js │ ├── nl.d.ts │ ├── nl.es.js │ ├── nl.js │ ├── pl.d.ts │ ├── pl.es.js │ ├── pl.js │ ├── pt-br.d.ts │ ├── pt-br.es.js │ ├── pt-br.js │ ├── pt.d.ts │ ├── pt.es.js │ ├── pt.js │ ├── ro.d.ts │ ├── ro.es.js │ ├── ro.js │ ├── ru.d.ts │ ├── ru.es.js │ ├── ru.js │ ├── sl.d.ts │ ├── sl.es.js │ ├── sl.js │ ├── sr.d.ts │ ├── sr.es.js │ ├── sr.js │ ├── sv.d.ts │ ├── sv.es.js │ ├── sv.js │ ├── ta.d.ts │ ├── ta.es.js │ ├── ta.js │ ├── te.d.ts │ ├── te.es.js │ ├── te.js │ ├── th.d.ts │ ├── th.es.js │ ├── th.js │ ├── tr.d.ts │ ├── tr.es.js │ ├── tr.js │ ├── ug-cn.d.ts │ ├── ug-cn.es.js │ ├── ug-cn.js │ ├── uk.d.ts │ ├── uk.es.js │ ├── uk.js │ ├── vi.d.ts │ ├── vi.es.js │ ├── vi.js │ ├── zh-cn.d.ts │ ├── zh-cn.es.js │ ├── zh-cn.js │ ├── zh-tw.d.ts │ ├── zh-tw.es.js │ └── zh-tw.js ├── package.json ├── rollup.locale.config.js ├── src/ │ ├── App.vue │ └── main.ts ├── tsconfig.json ├── tsconfig.locale.json ├── typings/ │ └── env.d.ts └── vite.config.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .eslintignore ================================================ dist es node_modules /locale /index.* ================================================ FILE: .eslintrc.js ================================================ module.exports = { env: { browser: true, jest: true, es6: true, node: true, }, parser: 'vue-eslint-parser', parserOptions: { parser: '@typescript-eslint/parser', // Specifies the ESLint parser ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features sourceType: 'module', // Allows for the use of imports ecmaFeatures: { // tsx: true, // Allows for the parsing of JSX tsx: true, }, }, extends: [ 'plugin:vue/vue3-recommended', 'eslint:recommended', 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. ], rules: { 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': ['error'], '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-empty-function': 'off', 'vue/require-default-prop': 'off', // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs // e.g. "@typescript-eslint/explicit-function-return-type": "off", }, }; ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms custom: https://www.paypal.me/mengxiong10 ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve title: "[Bug]" labels: '' assignees: '' --- **Vue2-datepicker version**: **Vue version**: **Browser**: **Steps to reproduce** **Reproduction Link or Source Code** **Expected behavior** **Actual behavior** ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Suggest an idea for this project title: "[Feature request]" labels: '' assignees: '' --- **What problem does this feature solve?** **What does the proposed API look like?** ================================================ FILE: .github/ISSUE_TEMPLATE/question.md ================================================ --- name: Question about: Need some help title: '[Question]' labels: '' assignees: '' --- **Vue-datepicker-next version**: **Vue version**: **Browser**: **Reproduction Link or Source Code** ================================================ FILE: .github/workflows/tests.yml ================================================ name: Tests on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v2 with: node-version: '16.x' cache: 'npm' - run: npm ci - run: npm run lint - run: npm test ================================================ FILE: .gitignore ================================================ .vscode .cache .DS_Store _site node_modules /index.* !index.html dist /scss /temp ================================================ FILE: .husky/commit-msg ================================================ #!/bin/sh . "$(dirname "$0")/_/husky.sh" npx --no-install commitlint --edit $1 ================================================ FILE: .husky/pre-commit ================================================ #!/bin/sh . "$(dirname "$0")/_/husky.sh" npx --no-install lint-staged ================================================ FILE: .prettierrc ================================================ { "trailingComma": "es5", "tabWidth": 2, "semi": true, "singleQuote": true, "printWidth": 100 } ================================================ FILE: CHANGELOG.md ================================================ ## [1.0.3](https://github.com/mengxiong10/vue-datepicker-next/compare/v1.0.2...v1.0.3) (2023-03-13) ### Bug Fixes * display the disabled date in input field ([#37](https://github.com/mengxiong10/vue-datepicker-next/issues/37)) ([d40a8e9](https://github.com/mengxiong10/vue-datepicker-next/commit/d40a8e913412104b4bfe1dcb6ab40098cb134c26)) ## [1.0.2](https://github.com/mengxiong10/vue-datepicker-next/compare/v1.0.1...v1.0.2) (2021-12-16) ## [1.0.1](https://github.com/mengxiong10/vue-datepicker-next/compare/v1.0.0...v1.0.1) (2021-12-16) ### Bug Fixes * DatePicker global component name ([7207f0d](https://github.com/mengxiong10/vue-datepicker-next/commit/7207f0d20c8e4abe3d95e2778d043a11133b9bd1)) * event calendar-change in range mode ([86dc52f](https://github.com/mengxiong10/vue-datepicker-next/commit/86dc52f4a71adde27d3c4bcd370484ceafa585be)) * the second argument(type) to change event ([#1](https://github.com/mengxiong10/vue-datepicker-next/issues/1)) ([eb533f5](https://github.com/mengxiong10/vue-datepicker-next/commit/eb533f50b93dc4324342ab2669a35a7272ebc799)) # 1.0.0 (2021-12-13) ### Bug Fixes * gitignore miss file ([ea22440](https://github.com/mengxiong10/vue-datepicker-next/commit/ea22440d62c7434c70d8f3bc0c3d6db9a6b082fc)) * range class ([90b221c](https://github.com/mengxiong10/vue-datepicker-next/commit/90b221c4171ef7e6e1a4879b7913391af90b76bd)) ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2018 xiemengxiong Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # vue-datepicker-next [中文版](https://github.com/mengxiong10/vue-datepicker-next/blob/main/README.zh-CN.md) > A Datepicker Component For Vue3 ![tests](https://github.com/mengxiong10/vue-datepicker-next/actions/workflows/tests.yml/badge.svg) npm MIT ## Demo ![image](https://github.com/mengxiong10/vue-datepicker-next/raw/main/screenshot/demo.png) ## Install ```bash $ npm install vue-datepicker-next --save ``` ## Usage ```html ``` ## Theme If your project uses SCSS, you can change the default style variables. To create a scss file. e.g. `datepicker.scss`: ```scss $namespace: 'xmx'; // change the 'mx' to 'xmx'. then $default-color: #555; $primary-color: #1284e7; @import '~vue-datepicker-next/scss/index.scss'; ``` ## Internationalization The default language is English. If you need other locales, you can import a locale file. Once you import a locale, it becomes the active locale. ```js import DatePicker from 'vue-datepicker-next'; import 'vue-datepicker-next/index.css'; import 'vue-datepicker-next/locale/zh-cn'; ``` You can also override some of the default locale by `lang`. [Full config](https://github.com/mengxiong10/vue-datepicker-next/blob/main/locale/en.es.js) ```html ``` ### Props | Prop | Description | Type | Default | | ------------------- | ------------------------------------------------ | ------------------------------------------------ | -------------- | | type | select the type of picker | date \|datetime\|year\|month\|time\|week | 'date' | | range | if true, pick the range date | `boolean` | false | | format | to set the date format. similar to moment.js | [token](#token) | 'YYYY-MM-DD' | | formatter | use your own formatter, such as moment.js | [object](#formatter) | - | | value-type | data type of the binding value | [value-type](#value-type) | 'date' | | default-value | default date of the calendar | `Date` | new Date() | | lang | override the default locale | `string` | `object` | | placeholder | input placeholder text | `string` | '' | | editable | whether the input is editable | `boolean` | true | | clearable | if false, don't show the clear icon | `boolean` | true | | confirm | if true, need click the button to change value | `boolean` | false | | confirm-text | the text of confirm button | `string` | 'OK' | | multiple | if true, multi-select date | `boolean` | false | | disabled | disable the component | `boolean` | false | | disabled-date | specify the date that cannot be selected | `(date: Date, currentValue?: Date[]) => boolean` | - | | disabled-time | specify the time that cannot be selected | `(date: Date) => boolean` | - | | append-to-body | append the popup to body | `boolean` | true | | input-class | input classname | `string` | 'mx-input' | | input-attr | input attrs(eg: { name: 'date', id: 'foo'}) | `object` | — | | open | open state of picker | `boolean` | - | | default-panel | default panel of the picker | year\|month | - | | popup-style | popup style | `object` | — | | popup-class | popup classes | | — | | shortcuts | set shortcuts to select | `Array<{text, onClick}>` | - | | title-format | format of the tooltip in calendar cell | [token](#token) | 'YYYY-MM-DD' | | partial-update | whether update date when select year or month | `boolean` | false | | separator | text of range separator | `string` | ' ~ ' | | show-week-number | determine whether show week number | `boolean` | false | | hour-step | interval between hours in time picker | 1 - 60 | 1 | | minute-step | interval between minutes in time picker | 1 - 60 | 1 | | second-step | interval between seconds in time picker | 1 - 60 | 1 | | hour-options | custom hour column | `Array` | - | | minute-options | custom minute column | `Array` | - | | second-options | custom second column | `Array` | - | | show-hour | whether show hour column | `boolean` | base on format | | show-minute | whether show minute column | `boolean` | base on format | | show-second | whether show second column | `boolean` | base on format | | use12h | whether show ampm column | `boolean` | base on format | | show-time-header | whether show header of time picker | `boolean` | false | | time-title-format | format of the time header | [token](#token) | 'YYYY-MM-DD' | | time-picker-options | set fixed time list to select | [time-picker-options](#time-picker-options) | null | | prefix-class | set prefix class | `string` | 'mx' | | scroll-duration | set the duration of scroll when hour is selected | `number` | 100 | ### remove inline range-separator => separator; input => update:value #### Token | Uint | Token | output | | -------------------------- | ----- | -------------------------------------- | | Year | YY | 70 71 ... 10 11 | | | YYYY | 1970 1971 ... 2010 2011 | | | Y | -1000 ...20 ... 1970 ... 9999 +10000 | | Month | M | 1 2 ... 11 12 | | | MM | 01 02 ... 11 12 | | | MMM | Jan Feb ... Nov Dec | | | MMMM | January February ... November December | | Day of Month | D | 1 2 ... 30 31 | | | DD | 01 02 ... 30 31 | | Day of Week | d | 0 1 ... 5 6 | | | dd | Su Mo ... Fr Sa | | | ddd | Sun Mon ... Fri Sat | | | dddd | Sunday Monday ... Friday Saturday | | AM/PM | A | AM PM | | | a | am pm | | Hour | H | 0 1 ... 22 23 | | | HH | 00 01 ... 22 23 | | | h | 1 2 ... 12 | | | hh | 01 02 ... 12 | | Minute | m | 0 1 ... 58 59 | | | mm | 00 01 ... 58 59 | | Second | s | 0 1 ... 58 59 | | | ss | 00 01 ... 58 59 | | Fractional Second | S | 0 1 ... 8 9 | | | SS | 00 01 ... 98 99 | | | SSS | 000 001 ... 998 999 | | Time Zone | Z | -07:00 -06:00 ... +06:00 +07:00 | | | ZZ | -0700 -0600 ... +0600 +0700 | | Week of Year | w | 1 2 ... 52 53 | | | ww | 01 02 ... 52 53 | | Unix Timestamp | X | 1360013296 | | Unix Millisecond Timestamp | x | 1360013296123 | #### formatter The `formatter` accepts an object to customize formatting. ```html ``` ```js data() { return { // Use moment.js instead of the default momentFormat: { //[optional] Date to String stringify: (date) => { return date ? moment(date).format('LL') : '' }, //[optional] String to Date parse: (value) => { return value ? moment(value, 'LL').toDate() : null }, //[optional] getWeekNumber getWeek: (date) => { return // a number } } } } ``` #### value-type set the format of binding value | Value | Description | | ----------------- | ---------------------------------------------------- | | 'date' | return a Date object | | 'timestamp' | return a timestamp number | | 'format' | returns a string formatted using pattern of `format` | | token(MM/DD/YYYY) | returns a string formatted using this pattern | #### shortcuts The shortcuts for the range picker ```js [ { text: 'today', onClick: () => new Date() }, { text: 'Yesterday', onClick: () => { const date = new Date(); date.setTime(date.getTime() - 3600 * 1000 * 24); return date; }, }, ]; ``` | Attribute | Description | | --------- | ----------------------------------------- | | text | title of the shortcut | | onClick | callback function , need to return a Date | #### time-picker-options Set fixed time list to select; ```js {start: '00:00', step:'00:30' , end: '23:30', format: 'HH:mm' } ``` | Attribute | Description | | --------- | ------------------------------------ | | start | start time | | step | step time | | end | end time | | format | the default is same as prop `format` | ### Events | Name | Description | Callback Arguments | | --------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------ | | update:value | When the value change(v-model:value event) | date | | change | When the value change(same as input) | date, type('date'\|'hour'\|'minute'\|'second'\|'ampm') | | open | When panel opening | event | | close | When panel closing | | | confirm | When click 'confirm' button | date | | clear | When click 'clear' button | | | input-error | When user type a invalid Date | the input text | | pick | when select date [#429](https://github.com/mengxiong10/vue-datepicker-next/issues/429) | date | | calendar-change | when change the calendar | date | | panel-change | when the calendar panel changes | type('year'\|'month'\|'date'), oldType | ### Slots | Name | Description | | ------------- | ------------------------ | | icon-calendar | custom the calender icon | | icon-clear | custom the clear icon | | input | replace input | | header | popup header | | footer | popup footer | | sidebar | popup sidebar | ## ChangeLog [CHANGELOG](CHANGELOG.md) ## One-time Donations If you find this project useful, you can buy me a coffee [Paypal Me](https://www.paypal.me/mengxiong10) ![donate](https://user-images.githubusercontent.com/14135808/83999111-a7947600-a994-11ea-84e9-9a215def4155.png) ## License [MIT](https://github.com/mengxiong10/vue-datepicker-next/blob/main/LICENSE) Copyright (c) 2021-present xiemengxiong ================================================ FILE: README.zh-CN.md ================================================ # vue-datepicker-next [English Version](https://github.com/mengxiong10/vue-datepicker-next/blob/main/README.md) > 一个基于 Vue3.x 的日期时间选择组件 ![tests](https://github.com/mengxiong10/vue-datepicker-next/actions/workflows/tests.yml/badge.svg) npm MIT ## 线上 Demo ![image](https://github.com/mengxiong10/vue-datepicker-next/raw/main/screenshot/demo.png) ## 安装 ```bash $ npm install vue-datepicker-next --save ``` ## 主题 如果你的项目使用了 SCSS, 你可以改变默认的变量. 创建一个新的文件. e.g. `datepicker.scss`: ```scss $namespace: 'xmx'; // 更改默认前缀为'xmx'. 然后设置 $default-color: #555; $primary-color: #1284e7; @import '~vue-datepicker-next/scss/index.scss'; ``` ## 用法 ```html ``` ## 国际化 默认语言是英文. 可以引入语言包切换到中文. ```js import DatePicker from 'vue-datepicker-next'; import 'vue-datepicker-next/index.css'; import 'vue-datepicker-next/locale/zh-cn'; ``` 还可以通过`lang`去覆盖一些默认语言选项. [完整配置](https://github.com/mengxiong10/vue-datepicker-next/blob/main/locale/zh-cn.es.js) ```html ``` ### Props | 属性 | 描述 | 类型 | 默认值 | | ------------------- | ------------------------------------------------ | ----------------------------------------------- | -------------- | | type | 日期选择的类型 | date \|datetime\|year\|month\|time\|week | 'date' | | range | 如果是 true, 变成日期范围选择 | `boolean` | false | | format | 设置格式化的 token, 类似 moment.js | [token](#token) | 'YYYY-MM-DD' | | formatter | 使用自己的格式化程序, 比如 moment.js | [object](#formatter) | - | | value-type | 设置绑定值的类型 | [value-type](#value-type) | 'date' | | default-value | 设置日历默认的时间 | `Date` | new Date() | | lang | 覆盖默认的语音设置 | `object` | | | placeholder | 输入框的 placeholder | `string` | '' | | editable | 输入框是否可以输入 | `boolean` | true | | clearable | 是否显示清除按钮 | `boolean` | true | | confirm | 是否需要确认 | `boolean` | false | | confirm-text | 确认按钮的文字 | `string` | 'OK' | | multiple | 如果是 true, 可以选择多个日期 | `boolean` | false | | disabled | 禁用组件 | `boolean` | false | | disabled-date | 禁止选择的日期 | `(date: Date, currentValue: Date[]) => boolean` | - | | disabled-time | 禁止选择的时间 | `(date: Date) => boolean` | - | | append-to-body | 弹出层插入到 body 元素下 | `boolean` | true | | input-class | 输入框的类 | `string` | 'mx-input' | | input-attr | 输入框的其他属性(eg: { name: 'date', id: 'foo'}) | `object` | — | | open | 控制弹出层的显示 | `boolean` | - | | default-panel | 控制打开的面板 | year\|month | - | | popup-style | 弹出层的样式 | `object` | — | | popup-class | 弹出层的类 | | — | | shortcuts | 设置快捷选择 | `Array<{text, onClick}>` | - | | title-format | 日历单元格的 tooltip | [token](#token) | 'YYYY-MM-DD' | | partial-update | 是否更新日期当选择年或月的时候 | `boolean` | false | | separator | 范围分隔符 | `string` | ' ~ ' | | show-week-number | 是否显示星期数字 | `boolean` | false | | hour-step | 小时列的间隔 | 1 - 60 | 1 | | minute-step | 分钟列的间隔 | 1 - 60 | 1 | | second-step | 秒列的间隔 | 1 - 60 | 1 | | hour-options | 自定义小时列 | `Array` | - | | minute-options | 自定义分钟列 | `Array` | - | | second-options | 自定义秒列 | `Array` | - | | show-hour | 是否显示小时列 | `boolean` | base on format | | show-minute | 是否显示分钟列 | `boolean` | base on format | | show-second | 是否显示秒列 | `boolean` | base on format | | use12h | 是否显示 ampm 列 | `boolean` | base on format | | show-time-header | 是否显示时间选择面板的头部 | `boolean` | false | | time-title-format | 时间面板头部的格式化 | [token](#token) | 'YYYY-MM-DD' | | time-picker-options | 设置固定时间去选择 | [time-picker-options](#time-picker-options) | null | | prefix-class | 设置 class 的前缀 | `string` | 'mx' | | scroll-duration | 设置滚动时候当选中小时的时候 | `number` | 100 | #### Token | 单元 | 符号 | 输入 | | -------------------------- | ---- | -------------------------------------- | | Year | YY | 70 71 ... 10 11 | | | YYYY | 1970 1971 ... 2010 2011 | | | Y | -1000 ...20 ... 1970 ... 9999 +10000 | | Month | M | 1 2 ... 11 12 | | | MM | 01 02 ... 11 12 | | | MMM | Jan Feb ... Nov Dec | | | MMMM | January February ... November December | | Day of Month | D | 1 2 ... 30 31 | | | DD | 01 02 ... 30 31 | | Day of Week | d | 0 1 ... 5 6 | | | dd | Su Mo ... Fr Sa | | | ddd | Sun Mon ... Fri Sat | | | dddd | Sunday Monday ... Friday Saturday | | AM/PM | A | AM PM | | | a | am pm | | Hour | H | 0 1 ... 22 23 | | | HH | 00 01 ... 22 23 | | | h | 1 2 ... 12 | | | hh | 01 02 ... 12 | | Minute | m | 0 1 ... 58 59 | | | mm | 00 01 ... 58 59 | | Second | s | 0 1 ... 58 59 | | | ss | 00 01 ... 58 59 | | Fractional Second | S | 0 1 ... 8 9 | | | SS | 00 01 ... 98 99 | | | SSS | 000 001 ... 998 999 | | Time Zone | Z | -07:00 -06:00 ... +06:00 +07:00 | | | ZZ | -0700 -0600 ... +0600 +0700 | | Week of Year | w | 1 2 ... 52 53 | | | ww | 01 02 ... 52 53 | | Unix Timestamp | X | 1360013296 | | Unix Millisecond Timestamp | x | 1360013296123 | #### formatter `formatter` 接受一个对象去自定义格式化 ```html ``` ```js data() { return { // 使用moment.js 替换默认 momentFormat: { //[可选] Date to String stringify: (date) => { return date ? moment(date).format('LL') : '' }, //[可选] String to Date parse: (value) => { return value ? moment(value, 'LL').toDate() : null }, //[可选] getWeekNumber getWeek: (date) => { return // a number } } } } ``` #### value-type 设置绑定值的类型 | 可选值 | 描述 | | ----------------- | ------------------------------------ | | 'date' | 返回一个日期对象 | | 'timestamp' | 返回一个时间戳 | | 'format' | 返回一个用 format 字段格式化的字符串 | | token(MM/DD/YYYY) | 返回一个用这个字段格式化的字符串 | #### shortcuts 设置快捷选择方式 ```js [ { text: 'today', onClick: () => new Date() }, { text: 'Yesterday', onClick: () => { const date = new Date(); date.setTime(date.getTime() - 3600 * 1000 * 24); return date; }, }, ]; ``` | 属性 | 描述 | | ------- | --------------------------------- | | text | 显示的名称 | | onClick | 回调函数, 需要返回一个 Date 对象 | #### time-picker-options 设置固定时间用于选择 ```js {start: '00:00', step:'00:30' , end: '23:30'} ``` | 属性 | 描述 | | ----- | -------- | | start | 开始时间 | | step | 间隔时间 | | end | 结束时间 | ### 事件 | 名称 | 描述 | 回调函数的参数 | | --------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------ | | update:value | 当选择日期的事件触发 | date | | change | 当选择日期的事件触发 | date, type('date'\|'hour'\|'minute'\|'second'\|'ampm') | | open | 当弹出层打开时候 | event | | close | 当弹出层关闭时候 | | | confirm | 当点击确认按钮 | date | | clear | 当点击清除按钮 | | | input-error | 当输入一个无效的时间 | input text | | focus | 当输入框有焦点 | | | blur | 当输入框失焦 | | | pick | 当点击日期时 [#429](https://github.com/mengxiong10/vue-datepicker-next/issues/429) | date | | calendar-change | 当改变年月时 | date | | panel-change | 当日历面板改变时 | type('year'\|'month'\|'date'), oldType | ### Slots | 名称 | 描述 | | ------------- | -------------- | | icon-calendar | 自定义日历图标 | | icon-clear | 自定义清除图标 | | input | 替换输入框 | | header | 弹出层的头部 | | footer | 弹出层的底部 | | sidebar | 弹出层的侧边 | ## ChangeLog [CHANGELOG](CHANGELOG.md) ## 一次性捐赠 如果这个项目对你很有用,你可以请我喝杯咖啡 [Paypal Me](https://www.paypal.me/mengxiong10) ![donate](https://user-images.githubusercontent.com/14135808/83999111-a7947600-a994-11ea-84e9-9a215def4155.png) ## License [MIT](https://github.com/mengxiong10/vue-datepicker-next/blob/main/LICENSE) Copyright (c) 2021-present xiemengxiong ================================================ FILE: __tests__/Calendar.test.ts ================================================ /* eslint-disable no-await-in-loop */ import { mount, VueWrapper } from '@vue/test-utils'; import locale from 'date-format-parse/lib/locale/en'; import Calendar from '../lib/calendar/Calendar'; let wrapper: VueWrapper; afterEach(() => { wrapper.unmount(); }); describe('CalendarPanel', () => { it('feat: type = date, should emit event when click date', () => { const mockFn = jest.fn(); wrapper = mount(Calendar, { props: { value: new Date(2019, 9, 4), ['onUpdate:value']: mockFn, }, }); wrapper.find('.mx-table-date td').trigger('click'); expect(mockFn).toHaveBeenCalledWith(new Date(2019, 8, 29), 'date'); }); it('feat: type = month, should emit event when click month', () => { const mockFn = jest.fn(); wrapper = mount(Calendar, { props: { type: 'month', defaultValue: new Date(2019, 9, 10), ['onUpdate:value']: mockFn, }, }); wrapper.find('.mx-table-month td > div').trigger('click'); expect(mockFn).toHaveBeenCalledWith(new Date(2019, 0, 1), 'month'); }); it('feat: type = year, should emit event when click year', () => { const mockFn = jest.fn(); wrapper = mount(Calendar, { props: { type: 'year', defaultValue: new Date(2019, 9, 10), ['onUpdate:value']: mockFn, }, }); wrapper.find('.mx-table-year td > div').trigger('click'); expect(mockFn).toHaveBeenCalledWith(new Date(2010, 0), 'year'); }); it('feat: when year >= 0 && year < 100, should be emit right', () => { const mockFn = jest.fn(); wrapper = mount(Calendar, { props: { type: 'year', defaultValue: new Date(new Date().setFullYear(11)), ['onUpdate:value']: mockFn, }, }); wrapper.find('.mx-table-year td > div').trigger('click'); const expectedDate = new Date(new Date(10, 0).setFullYear(10)); expect(mockFn).toHaveBeenCalledWith(expectedDate, 'year'); }); it('feat: active class', async () => { wrapper = mount(Calendar); const td = wrapper.find('.mx-table-date td:nth-child(6)'); expect(td.classes()).not.toContain('active'); await wrapper.setProps({ value: new Date(2019, 9, 4) }); expect(td.classes()).toContain('active'); }); it('prop: disabledDate', () => { const disabledDate = (date: Date) => { return date < new Date(2019, 9, 1) || date > new Date(2019, 9, 20); }; const mockFn = jest.fn(); wrapper = mount(Calendar, { props: { value: new Date(2019, 9, 4), ['onUpdate:value']: mockFn, disabledDate, }, }); const tds = wrapper.findAll('.mx-table-date td'); for (let i = 0; i < 42; i++) { const td = tds[i]; const classes = td.classes(); if (i < 2 || i > 21) { expect(classes).toContain('disabled'); } else { expect(classes).not.toContain('disabled'); } } tds[1].trigger('click'); expect(mockFn).not.toHaveBeenCalled(); }); const renderType = (type: 'date' | 'month' | 'year') => { it(`prop: type=${type}`, () => { wrapper = mount(Calendar, { props: { type, value: new Date(2019, 9, 1, 10), }, }); expect(wrapper.classes()).toContain(`mx-calendar-panel-${type}`); }); }; (['date', 'month', 'year'] as const).forEach(renderType); it('prop: defaultPanel', () => { wrapper = mount(Calendar, { props: { open: true, type: 'month', defaultPanel: 'year', }, }); expect(wrapper.classes()).toContain('mx-calendar-panel-year'); }); it('feat: panel change', async () => { wrapper = mount(Calendar); await wrapper.find('.mx-btn-current-year').trigger('click'); expect(wrapper.classes()).toContain('mx-calendar-panel-year'); await wrapper.find('.mx-table-year td > div').trigger('click'); expect(wrapper.classes()).toContain('mx-calendar-panel-month'); await wrapper.find('.mx-table-month td > div').trigger('click'); expect(wrapper.classes()).toContain('mx-calendar-panel-date'); await wrapper.find('.mx-btn-current-month').trigger('click'); expect(wrapper.classes()).toContain('mx-calendar-panel-month'); await wrapper.find('.mx-calendar-header-label > button').trigger('click'); expect(wrapper.classes()).toContain('mx-calendar-panel-year'); }); it('feat: click prev/next month', async () => { wrapper = mount(Calendar); const nextBtn = wrapper.find('.mx-btn-icon-right'); const lastBtn = wrapper.find('.mx-btn-icon-left'); const year = wrapper.find('.mx-btn-current-year'); const month = wrapper.find('.mx-btn-current-month'); const getCurrentYear = () => parseInt(year.text(), 10); const getCurrentMonth = () => locale.monthsShort.indexOf(month.text()); let count = 12; while (count--) { const oldYear = getCurrentYear(); const oldMonth = getCurrentMonth(); await nextBtn.trigger('click'); const newYear = getCurrentYear(); const newMonth = getCurrentMonth(); if (oldMonth === 11) { expect(newMonth).toBe(0); expect(newYear).toBe(oldYear + 1); } else { expect(newMonth).toBe(oldMonth + 1); expect(newYear).toBe(oldYear); } } count = 12; while (count--) { const oldYear = getCurrentYear(); const oldMonth = getCurrentMonth(); await lastBtn.trigger('click'); const newYear = getCurrentYear(); const newMonth = getCurrentMonth(); if (oldMonth === 0) { expect(newMonth).toBe(11); expect(newYear).toBe(oldYear - 1); } else { expect(newMonth).toBe(oldMonth - 1); expect(newYear).toBe(oldYear); } } }); ['date', 'month'].forEach((type) => { it(`feat: click prev/next year in ${type} panel`, async () => { wrapper = mount(Calendar, { props: { value: new Date(2018, 4, 5), defaultPanel: type as 'date' | 'month', }, }); const nextBtn = wrapper.find('.mx-btn-icon-double-right'); const lastBtn = wrapper.find('.mx-btn-icon-double-left'); const year = wrapper.find('.mx-btn-current-year'); const getCurrentYear = () => parseInt(year.text(), 10); expect(getCurrentYear()).toBe(2018); await nextBtn.trigger('click'); expect(getCurrentYear()).toBe(2019); await lastBtn.trigger('click'); expect(getCurrentYear()).toBe(2018); }); }); it('feat: click prev/next decade', async () => { wrapper = mount(Calendar, { props: { value: new Date(2018, 4, 5), defaultPanel: 'year', }, }); const nextBtn = wrapper.find('.mx-btn-icon-double-right'); const lastBtn = wrapper.find('.mx-btn-icon-double-left'); const year = wrapper.find('td.active'); const getCurrentYear = () => parseInt(year.text(), 10); await nextBtn.trigger('click'); expect(getCurrentYear()).toBe(2028); await lastBtn.trigger('click'); expect(getCurrentYear()).toBe(2018); }); it('feat: select year to change the calendar', async () => { wrapper = mount(Calendar, { props: { value: new Date(2018, 4, 5), defaultPanel: 'year', }, }); await wrapper.find('.mx-table-year td > div').trigger('click'); expect(wrapper.find('.mx-btn-current-year').text()).toBe('2010'); await wrapper.find('.mx-table-month td > div').trigger('click'); expect(wrapper.find('.mx-btn-current-month').text()).toBe(locale.monthsShort[0]); }); it('prop: partialUpdate', async () => { const mockFn = jest.fn(); wrapper = mount(Calendar, { props: { value: new Date(2019, 9, 4), partialUpdate: true, defaultPanel: 'year', ['onUpdate:value']: mockFn, }, }); wrapper.find('.mx-table-year td > div').trigger('click'); expect(mockFn).toHaveBeenCalledWith(new Date(2010, 9, 4), 'year'); await wrapper.setProps({ value: new Date(2010, 9, 4) }); wrapper.find('.mx-table-month td > div').trigger('click'); expect(mockFn).toHaveBeenLastCalledWith(new Date(2010, 0, 4), 'month'); }); }); ================================================ FILE: __tests__/CalendarRange.test.ts ================================================ import { mount } from '@vue/test-utils'; import CalendarRange from '../lib/calendar/CalendarRange'; import Calendar from '../lib/calendar/Calendar'; let wrapper: ReturnType; afterEach(() => { wrapper.unmount(); }); describe('CalendarRange', () => { it('feat: correct classes', () => { wrapper = mount(CalendarRange, { props: { value: [new Date(2019, 9, 30), new Date(2019, 10, 2)], }, }); const activeTds = wrapper.findAll('.mx-table-date .active:not(.not-current-month)'); const rangeTds = wrapper.findAll('.mx-table-date .in-range:not(.not-current-month)'); expect(activeTds.length).toBe(2); expect(activeTds[0].text()).toBe('30'); expect(activeTds[1].text()).toBe('2'); expect(rangeTds.length).toBe(2); expect(rangeTds[0].text()).toBe('31'); expect(rangeTds[1].text()).toBe('1'); }); it('feat: click range', async () => { const mockFn = jest.fn(); wrapper = mount(CalendarRange, { props: { defaultValue: new Date(2019, 9, 1), ['onUpdate:value']: mockFn, }, }); const tds = wrapper.findAll('.mx-table-date td'); await tds[2].trigger('click'); expect(mockFn).not.toHaveBeenCalled(); await tds[8].trigger('click'); expect(mockFn).toHaveBeenCalledWith([new Date(2019, 9, 1), new Date(2019, 9, 7)], 'date'); }); it('feat: calendars min gap', async () => { wrapper = mount(CalendarRange, { props: { defaultValue: new Date(2019, 6, 1), }, }); const firstRightIcon = wrapper.find('.mx-calendar-panel-date .mx-btn-icon-right'); const secondLeftIcon = wrapper.find('.mx-calendar-panel-date:nth-child(2) .mx-btn-icon-left'); const firstCell = wrapper.find('.mx-calendar-panel-date td'); const secondCell = wrapper.find('.mx-calendar-panel-date:nth-child(2) td'); await firstRightIcon.trigger('click'); expect(firstCell.attributes('title')).toBe('2019-07-28'); expect(secondCell.attributes('title')).toBe('2019-08-25'); await secondLeftIcon.trigger('click'); expect(firstCell.attributes('title')).toBe('2019-06-30'); expect(secondCell.attributes('title')).toBe('2019-07-28'); }); it('partialUpdate should be false', () => { wrapper = mount(CalendarRange, { props: { partialUpdate: true, }, }); const [start, end] = wrapper.findAllComponents(Calendar); expect(start.props('partialUpdate')).toBe(false); expect(end.props('partialUpdate')).toBe(false); }); it('supports defaultValue is Array', () => { wrapper = mount(CalendarRange, { props: { defaultValue: [new Date(2019, 9, 1), new Date(2019, 11, 1)], }, }); const firstCell = wrapper.find('.mx-calendar-panel-date td'); const secondCell = wrapper.find('.mx-calendar-panel-date:nth-child(2) td'); expect(firstCell.attributes('title')).toBe('2019-09-29'); expect(secondCell.attributes('title')).toBe('2019-11-24'); }); }); ================================================ FILE: __tests__/DatePicker.test.ts ================================================ import { mount, VueWrapper } from '@vue/test-utils'; import { parse, format } from 'date-format-parse'; import { nextTick } from 'vue'; import DatePicker from '../lib/DatePicker'; const shallowMount = mount; let wrapper: VueWrapper; afterEach(() => { wrapper.unmount(); }); const getPopupVisible = () => { return wrapper.find('.mx-datepicker-popup').exists(); }; describe('DatePicker', () => { it('feat: open and close the popup', async () => { wrapper = mount(DatePicker, { attachTo: document.body, props: { appendToBody: false, }, }); expect(getPopupVisible()).toBe(false); // expect click input should show the popup const input = wrapper.find('input'); await input.trigger('click'); expect(getPopupVisible()).toBe(true); // expect click out side should hide the popup document.body.dispatchEvent(new MouseEvent('mousedown', { bubbles: true })); await nextTick(); expect(getPopupVisible()).toBe(false); // expect focus input should show the popop await input.trigger('focus'); expect(getPopupVisible()).toBe(true); // expoce keydown tab should hide the popup await input.trigger('keydown.tab'); expect(getPopupVisible()).toBe(false); // should close popup when click time in datetime mode await input.trigger('click'); await wrapper.setProps({ type: 'datetime', timePickerOptions: { start: '00:00', step: '00:30', end: '10:30', }, showTimePanel: true, }); await wrapper.find('.mx-time-option').trigger('click'); expect(getPopupVisible()).toBe(false); }); it('prop: open', async () => { const mockFn = jest.fn(); wrapper = mount(DatePicker, { props: { open: false, appendToBody: false, ['onUpdate:open']: mockFn, }, }); const input = wrapper.find('input'); await input.trigger('focus'); expect(getPopupVisible()).toBe(false); await wrapper.setProps({ open: true }); expect(getPopupVisible()).toBe(true); await input.trigger('keydown.tab'); expect(getPopupVisible()).toBe(true); expect(mockFn.mock.calls[0][0]).toBe(true); expect(mockFn.mock.calls[1][0]).toBe(false); }); it('feat: should init panel and calendar when reopen', async () => { wrapper = mount(DatePicker, { props: { defaultValue: new Date(2019, 9, 1), open: true, appendToBody: false, }, }); const yearBtn = wrapper.find('.mx-btn-current-year'); await yearBtn.trigger('click'); // change to year panel expect(wrapper.find('.mx-calendar-panel-year').exists()).toBe(true); await wrapper.setProps({ open: false }); await wrapper.setProps({ open: true }); expect(wrapper.find('.mx-calendar-panel-year').exists()).toBe(false); }); it('prop: disabled(should not show the popup)', () => { wrapper = mount(DatePicker, { props: { disabled: true, }, }); const input = wrapper.find('input'); expect(input.attributes('disabled')).not.toBeUndefined(); input.trigger('click'); expect(wrapper.find('.mx-datepicker-popup').exists()).toBe(false); }); it('prop: input props', async () => { wrapper = shallowMount(DatePicker, { props: { value: new Date(2019, 4, 10), }, slots: { content: '
', }, }); expect(wrapper.element).toMatchSnapshot(); await wrapper.setProps({ clearable: false, editable: false, placeholder: 'test placeholder', inputClass: 'test', inputAttr: { name: 'test', id: 'test', }, }); expect(wrapper.element).toMatchSnapshot(); }); it('prop: format', () => { wrapper = shallowMount(DatePicker, { props: { format: 'YYYY/MM/DD', value: new Date(2019, 9, 10), }, }); const input = wrapper.find('input').element; expect(input.value).toBe('2019/10/10'); }); it('prop: formatter', () => { wrapper = mount(DatePicker, { props: { valueType: 'format', value: '13/Oct/2019', open: true, type: 'week', appendToBody: false, formatter: { stringify(date) { return format(date, 'DD/MMM/YYYY'); }, parse(value) { return parse(value, 'DD/MMM/YYYY'); }, getWeek(date) { return date.getDate(); }, }, }, }); const input = wrapper.find('input').element; expect(input.value).toBe('13/Oct/2019'); }); it('prop: valueType', async () => { const value = new Date(2019, 9, 20); const mockFn = jest.fn(); wrapper = shallowMount(DatePicker, { props: { appendToBody: false, value: value, format: 'YYYY/MM/DD', open: true, ['onUpdate:value']: mockFn, }, }); const cell = wrapper.find('[title="2019-10-01"]'); const input = wrapper.find('input').element; expect(input.value).toBe('2019/10/20'); cell.trigger('click'); await wrapper.setProps({ valueType: 'format', value: '2019/10/20' }); expect(input.value).toBe('2019/10/20'); cell.trigger('click'); await wrapper.setProps({ valueType: 'timestamp', value: value.getTime() }); expect(input.value).toBe('2019/10/20'); cell.trigger('click'); await wrapper.setProps({ valueType: 'DD/MM/YYYY', value: '20/10/2019' }); expect(input.value).toBe('2019/10/20'); cell.trigger('click'); expect(mockFn.mock.calls).toEqual([ [new Date(2019, 9, 1)], ['2019/10/01'], [new Date(2019, 9, 1).getTime()], ['01/10/2019'], ]); }); it('prop: shortcut', async () => { const date = new Date(2019, 4, 10); const mockFn = jest.fn(); wrapper = shallowMount(DatePicker, { props: { open: true, valueType: 'YYYY/MM/DD', appendToBody: false, ['onUpdate:value']: mockFn, shortcuts: [ { text: 'Today', onClick() { return date; }, }, ], }, }); await wrapper.find('.mx-btn-shortcut').trigger('click'); expect(mockFn).toHaveBeenCalledWith('2019/05/10'); await wrapper.setProps({ range: true, shortcuts: [ { text: 'range', onClick() { return [date, date]; }, }, ], }); await wrapper.find('.mx-btn-shortcut').trigger('click'); expect(mockFn).toHaveBeenLastCalledWith(['2019/05/10', '2019/05/10']); }); it('prop: popupClass & popupStyle', () => { wrapper = mount(DatePicker, { props: { open: true, appendToBody: false, popupClass: 'test', popupStyle: { top: '20px', }, }, }); const popup = wrapper.find('.mx-datepicker-popup'); expect(popup.classes()).toContain('test'); expect((popup.element as HTMLElement).style.top).toBe('20px'); }); it('prop: confirm & confirmText', async () => { const mockFn = jest.fn(); wrapper = shallowMount(DatePicker, { props: { value: new Date(2021, 10, 11), confirm: true, confirmText: 'test', appendToBody: false, ['onUpdate:value']: mockFn, }, }); await wrapper.find('input').trigger('focus'); const btn = wrapper.find('.mx-datepicker-btn-confirm'); expect(btn.exists()).toBe(true); expect(btn.text()).toBe('test'); wrapper.find('td.cell').trigger('click'); expect(mockFn).not.toHaveBeenCalled(); expect(getPopupVisible()).toBe(true); await btn.trigger('click'); expect(mockFn).toHaveBeenCalledWith(new Date(2021, 9, 31)); expect(getPopupVisible()).toBe(false); }); [true, false].forEach((item) => { it(`prop: appendToBody = ${item}`, () => { wrapper = mount(DatePicker, { props: { open: true, appendToBody: item, }, slots: { content: '', }, attachTo: document.body, }); expect(document.body).toMatchSnapshot(); }); }); it('feat: should emit clear event when click clear button', async () => { const mockClearFn = jest.fn(); const mockChangeFn = jest.fn(); wrapper = shallowMount(DatePicker, { props: { range: false, value: new Date(2019, 10, 9), onClear: mockClearFn, ['onUpdate:value']: mockChangeFn, }, }); wrapper.find('.mx-icon-clear').trigger('click'); expect(mockClearFn).toHaveBeenCalled(); expect(mockChangeFn).toHaveBeenCalledWith(null); await wrapper.setProps({ value: [new Date(), new Date()], range: true }); wrapper.find('.mx-icon-clear').trigger('click'); expect(mockChangeFn).toHaveBeenLastCalledWith([null, null]); }); // present the button submit form it('the type of all buttons should be button', () => { wrapper = mount(DatePicker, { props: { open: true, showTimePanel: true, appendToBody: false, }, }); const els = wrapper.findAll('button'); els.forEach((v) => { expect(v.element.type).toBe('button'); }); }); it('should emit pick event on first click', () => { const mockFn = jest.fn(); wrapper = mount(DatePicker, { props: { range: true, open: true, defaultValue: new Date(2019, 9, 1), appendToBody: false, onPick: mockFn, }, }); const td = wrapper.find('.mx-table-date td'); td.trigger('click'); expect(mockFn).toHaveBeenCalledWith(new Date(2019, 8, 29)); }); it('Ignore whitespace around separator on manual range input', async () => { const separator = ' ~ '; const text = '2020-02-12'; const mockFn = jest.fn(); wrapper = mount(DatePicker, { props: { separator, range: true, valueType: 'format', ['onUpdate:value']: mockFn, }, }); const input = wrapper.find('input'); await input.setValue(`${text} ${separator} ${text}`); await input.trigger('change'); await input.setValue(`${text}${separator.trim()}${text}`); await input.trigger('change'); await wrapper.setProps({ separator: ' - ' }); await input.setValue(`${text} - ${text}`); await input.trigger('change'); expect(mockFn.mock.calls).toEqual([[[text, text]], [[text, text]], [[text, text]]]); }); it('prop: multiple', () => { const value = [new Date(2020, 5, 6), new Date(2020, 6, 7)]; const mockFn = jest.fn(); wrapper = mount(DatePicker, { props: { multiple: true, open: true, appendToBody: false, value, ['onUpdate:value']: mockFn, }, }); wrapper.find('.mx-date-row .active').trigger('click'); expect(mockFn.mock.calls[0][0]).toEqual(value.slice(0, 1)); wrapper.find('[title="2020-07-15"]').trigger('click'); expect(mockFn.mock.calls[1][0]).toEqual(value.concat(new Date(2020, 6, 15))); }); it('If the value entered manually is in the disabled range should be invalid', () => { const someday = new Date(2020, 6, 1); const mockFn = jest.fn(); const inputErrorFn = jest.fn(); wrapper = shallowMount(DatePicker, { props: { format: 'YYYY-MM-DD', disabledDate: (date) => { return date < someday; }, ['onUpdate:value']: mockFn, onInputError: inputErrorFn, }, }); const textInput = wrapper.find('input'); textInput.setValue('2020-08-01'); textInput.trigger('change'); expect(mockFn.mock.calls[0][0]).toEqual(new Date(2020, 7, 1)); textInput.setValue('2020-05-01'); textInput.trigger('change'); expect(mockFn.mock.calls[1]).toBe(undefined); expect(inputErrorFn).toHaveBeenCalledWith('2020-05-01'); }); }); ================================================ FILE: __tests__/Datetime.test.ts ================================================ import { mount } from '@vue/test-utils'; import Datetime from '../lib/datetime/DateTime'; let wrapper: ReturnType; afterEach(() => { wrapper.unmount(); }); describe('DatetimePanel', () => { it('feat: click date', async () => { const mockFn = jest.fn(); wrapper = mount(Datetime, { props: { type: 'datetime', defaultValue: new Date(2019, 9, 1, 12, 10, 10), ['onUpdate:value']: mockFn, }, }); const td = wrapper.find('.mx-table-date td:nth-child(4)'); await td.trigger('click'); expect(mockFn.mock.calls[0][0]).toEqual(new Date(2019, 9, 2, 12, 10, 10)); let timeTitle = wrapper.find('.mx-time-header-title'); expect(timeTitle.exists()).toBe(true); await timeTitle.trigger('click'); timeTitle = wrapper.find('.mx-time-header-title'); expect(timeTitle.exists()).toBe(false); }); it('feat: disabled time', async () => { const mockFn = jest.fn(); const disabledDate = (date: Date) => date < new Date(2019, 9, 2); const disabledTime = (date: Date) => date < new Date(2019, 9, 2, 12); wrapper = mount(Datetime, { props: { ['onUpdate:value']: mockFn, defaultValue: new Date(2019, 9, 2, 10), disabledDate, disabledTime, }, }); const td = wrapper.find('.mx-table-date td:nth-child(4)'); await td.trigger('click'); expect(mockFn).not.toHaveBeenCalled(); const timeTitle = wrapper.find('.mx-time-header-title'); expect(timeTitle.text()).toBe('2019-10-02'); // set the defaultValue is not disabled const defaultValue = new Date(2019, 9, 2, 12); await wrapper.setProps({ defaultValue }); await td.trigger('click'); expect(mockFn.mock.calls[0][0]).toEqual(defaultValue); }); }); ================================================ FILE: __tests__/DatetimeRange.test.ts ================================================ import { mount } from '@vue/test-utils'; import DatetimeRange from '../lib/datetime/DateTimeRange'; let wrapper: ReturnType; afterEach(() => { wrapper.unmount(); }); describe('DatetimeRange', () => { it('feat: click dates', async () => { const mockFn = jest.fn(); wrapper = mount(DatetimeRange, { props: { ['onUpdate:value']: mockFn, type: 'datetime', value: [new Date(2019, 9, 4, 18), new Date(2019, 9, 6, 12)], }, }); const td = wrapper.find('.mx-table-date td:nth-child(4)'); const td2 = wrapper.find('.mx-table-date td:nth-child(5)'); td.trigger('click'); await td2.trigger('click'); expect(mockFn.mock.calls[0][0]).toEqual([new Date(2019, 9, 2, 18), new Date(2019, 9, 3, 12)]); let timeTitle = wrapper.find('.mx-time-header-title'); expect(timeTitle.exists()).toBe(true); await timeTitle.trigger('click'); timeTitle = wrapper.find('.mx-time-header-title'); expect(timeTitle.exists()).toBe(false); td.trigger('click'); await td.trigger('click'); expect(mockFn.mock.calls[1][0]).toEqual([new Date(2019, 9, 2, 18), new Date(2019, 9, 2, 18)]); }); it('feat: disabled time', async () => { const mockFn = jest.fn(); const disabledDate = (date: Date) => date < new Date(2019, 9, 2); const disabledTime = (date: Date) => date < new Date(2019, 9, 2, 12); wrapper = mount(DatetimeRange, { props: { ['onUpdate:value']: mockFn, defaultValue: [new Date(2019, 9, 1), new Date(2019, 9, 1, 12)], disabledDate, disabledTime, }, }); const td = wrapper.find('.mx-table-date td:nth-child(4)'); td.trigger('click'); await td.trigger('click'); expect(mockFn).not.toHaveBeenCalled(); const timeTitle = wrapper.find('.mx-time-header-title'); expect(timeTitle.text()).toBe('2019-10-02'); const defaultValue = [new Date(2019, 9, 2, 12), new Date(2019, 9, 2, 12)]; await wrapper.setProps({ defaultValue }); await td.trigger('click'); await td.trigger('click'); expect(mockFn.mock.calls[0][0]).toEqual(defaultValue); }); }); ================================================ FILE: __tests__/TableDate.test.ts ================================================ import { mount, VueWrapper } from '@vue/test-utils'; import { FunctionalComponent } from 'vue'; import { TableDate } from '../lib/calendar/TableDate'; let wrapper: VueWrapper; afterEach(() => { wrapper.unmount(); }); describe('TableDate', () => { it('corrent render', () => { wrapper = mount(TableDate as FunctionalComponent, { props: { isWeekMode: false, showWeekNumber: true, getWeekActive: () => false, getCellClasses: () => [], calendar: new Date(2019, 9, 1, 0, 0, 0), titleFormat: 'DD/MM/YYYY', }, }); expect(wrapper.element).toMatchSnapshot(); }); }); ================================================ FILE: __tests__/TableMonth.test.ts ================================================ import { mount, VueWrapper } from '@vue/test-utils'; import { FunctionalComponent } from 'vue'; import { TableMonth } from '../lib/calendar/TableMonth'; let wrapper: VueWrapper; afterEach(() => { wrapper.unmount(); }); describe('TableMonth', () => { it('correct render', () => { wrapper = mount(TableMonth as FunctionalComponent, { props: { calendar: new Date(2019, 9, 1, 0, 0, 0), getCellClasses: (date: Date) => { if (date.getMonth() === 9) { return 'active'; } return ''; }, }, }); expect(wrapper.element).toMatchSnapshot(); }); }); ================================================ FILE: __tests__/TableYear.test.ts ================================================ import { mount, VueWrapper } from '@vue/test-utils'; import { FunctionalComponent } from 'vue'; import { TableYear } from '../lib/calendar/TableYear'; let wrapper: VueWrapper; afterEach(() => { wrapper.unmount(); }); describe('TableYear', () => { it('decade=2010', () => { wrapper = mount(TableYear as FunctionalComponent, { props: { calendar: new Date(2019, 9, 1, 0, 0, 0), }, }); expect(wrapper.element).toMatchSnapshot(); }); }); ================================================ FILE: __tests__/TimePanel.test.ts ================================================ import { mount } from '@vue/test-utils'; import TimePanel from '../lib/time/TimePanel'; let wrapper: ReturnType; afterEach(() => { wrapper.unmount(); }); describe('TimePanel', () => { it('render: correct classes of the columns', () => { wrapper = mount(TimePanel, { props: { use12h: true, defaultValue: new Date(2019, 9, 4, 12, 40, 30), disabledTime: (date: Date) => date.getTime() > new Date(2019, 9, 4, 13, 30, 30).getTime(), }, }); expect(wrapper.element).toMatchSnapshot(); }); it('render: correct columns by format', () => { wrapper = mount(TimePanel, { props: { value: new Date(2019, 9, 4), format: 'hh:mm a', minuteStep: 30, hourOptions: Array.from({ length: 10 }).map((_, i) => i + 8), }, }); expect(wrapper.element).toMatchSnapshot(); }); it('render: correct classes of the fixed time list', () => { wrapper = mount(TimePanel, { props: { value: new Date(2019, 10, 9, 12, 30), disabledTime: (date: Date) => date.getHours() < 10, timePickerOptions: { start: '08:30', step: '00:30', end: '18:30', }, format: 'HH:mm', }, }); expect(wrapper.element).toMatchSnapshot(); }); it('render: correct 12hours in the fixed time list', () => { wrapper = mount(TimePanel, { props: { value: new Date(2019, 10, 9, 12, 30), timePickerOptions: { start: '08:30', step: '00:30', end: '18:30', }, format: 'hh:mm A', }, }); expect(wrapper.element).toMatchSnapshot(); }); it('feat: emit select event when click', async () => { const mockFn = jest.fn(); wrapper = mount(TimePanel, { props: { format: 'hh:mm:ss a', defaultValue: new Date(2019, 9, 10, 2), ['onUpdate:value']: mockFn, }, }); const hour = wrapper.find('[data-type=hour] li:nth-child(2)'); await hour.trigger('click'); expect(mockFn.mock.calls[0][0]).toEqual(new Date(2019, 9, 10, 1)); await wrapper.setProps({ value: new Date(2019, 9, 10, 1) }); const minute = wrapper.find('[data-type=minute] li:nth-child(2)'); minute.trigger('click'); expect(mockFn.mock.calls[1][0]).toEqual(new Date(2019, 9, 10, 1, 1)); await wrapper.setProps({ value: new Date(2019, 9, 10, 1, 1) }); const second = wrapper.find('[data-type=second] li:nth-child(2)'); second.trigger('click'); expect(mockFn.mock.calls[2][0]).toEqual(new Date(2019, 9, 10, 1, 1, 1)); await wrapper.setProps({ value: new Date(2019, 9, 10, 1, 1, 1) }); const pm = wrapper.find('[data-type=ampm] li:nth-child(2)'); pm.trigger('click'); expect(mockFn.mock.calls[3][0]).toEqual(new Date(2019, 9, 10, 13, 1, 1)); }); it('feat: disabledTime should not emit event', () => { const mockFn = jest.fn(); wrapper = mount(TimePanel, { props: { value: new Date(2019, 9, 4, 12, 30, 30), disabledTime: (date: Date) => date.getHours() < 10, ['onUpdate:value']: mockFn, }, }); const hour = wrapper.find('[data-type=hour] li:nth-child(2)'); hour.trigger('click'); expect(mockFn).not.toHaveBeenCalled(); }); }); ================================================ FILE: __tests__/TimeRange.test.ts ================================================ import { mount } from '@vue/test-utils'; import TimeRange from '../lib/time/TimeRange'; let wrapper: ReturnType; afterEach(() => { wrapper.unmount(); }); describe('TimeRange', () => { it('render: correct classes of the columns', () => { wrapper = mount(TimeRange, { props: { format: 'hh:mm a', minuteStep: 30, hourStep: 2, value: [new Date(2019, 9, 4, 8, 30, 0), new Date(2019, 9, 4, 18, 30, 0)], }, }); expect(wrapper.element).toMatchSnapshot(); }); it('feat: change the end time when start > end', () => { const mockFn = jest.fn(); wrapper = mount(TimeRange, { props: { value: [new Date(2019, 9, 4, 8, 30, 0), new Date(2019, 9, 4, 18, 30, 0)], ['onUpdate:value']: mockFn, }, }); const hour = wrapper.find('[data-type=hour] li:nth-child(20)'); hour.trigger('click'); expect(mockFn.mock.calls[0][0]).toEqual([ new Date(2019, 9, 4, 19, 30, 0), new Date(2019, 9, 4, 19, 30, 0), ]); }); it('supports defaultValue is Array', () => { wrapper = mount(TimeRange, { props: { defaultValue: [new Date(2019, 9, 1, 10), new Date(2019, 11, 1, 12)], }, }); const actived = wrapper.findAll('.active'); expect(actived[0].text()).toBe('10'); expect(actived[3].text()).toBe('12'); }); }); ================================================ FILE: __tests__/__snapshots__/DatePicker.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`DatePicker prop: appendToBody = false 1`] = `
`; exports[`DatePicker prop: appendToBody = true 1`] = `
`; exports[`DatePicker prop: input props 1`] = `
`; exports[`DatePicker prop: input props 2`] = `
`; ================================================ FILE: __tests__/__snapshots__/TableDate.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`TableDate corrent render 1`] = `
Su Mo Tu We Th Fr Sa
40
29
30
1
2
3
4
5
41
6
7
8
9
10
11
12
42
13
14
15
16
17
18
19
43
20
21
22
23
24
25
26
44
27
28
29
30
31
1
2
45
3
4
5
6
7
8
9
`; ================================================ FILE: __tests__/__snapshots__/TableMonth.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`TableMonth correct render 1`] = `
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
`; ================================================ FILE: __tests__/__snapshots__/TableYear.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`TableYear decade=2010 1`] = `
2010 2019
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
`; ================================================ FILE: __tests__/__snapshots__/TimePanel.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`TimePanel render: correct 12hours in the fixed time list 1`] = `
08:30 AM
09:00 AM
09:30 AM
10:00 AM
10:30 AM
11:00 AM
11:30 AM
12:00 PM
12:30 PM
01:00 PM
01:30 PM
02:00 PM
02:30 PM
03:00 PM
03:30 PM
04:00 PM
04:30 PM
05:00 PM
05:30 PM
06:00 PM
06:30 PM
`; exports[`TimePanel render: correct classes of the columns 1`] = `
  • 12
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 00
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • AM
  • PM
`; exports[`TimePanel render: correct classes of the fixed time list 1`] = `
08:30
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
`; exports[`TimePanel render: correct columns by format 1`] = `
  • 08
  • 09
  • 10
  • 11
  • 00
  • 30
  • AM
  • PM
`; ================================================ FILE: __tests__/__snapshots__/TimeRange.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`TimeRange render: correct classes of the columns 1`] = `
  • 12
  • 02
  • 04
  • 06
  • 08
  • 10
  • 00
  • 30
  • AM
  • PM
  • 12
  • 02
  • 04
  • 06
  • 08
  • 10
  • 00
  • 30
  • AM
  • PM
`; ================================================ FILE: __tests__/locale.test.ts ================================================ import { mount, VueWrapper } from '@vue/test-utils'; import DatePicker from '../lib/DatePicker'; import '../lib/locale/zh-cn'; let wrapper: VueWrapper; afterEach(() => { wrapper.unmount(); }); describe('Locale', () => { it('render the correct default locale', () => { wrapper = mount(DatePicker, { props: { value: new Date(2019, 9, 10), open: true, appendToBody: false, }, }); expect(wrapper.find('.mx-table-date th').text()).toBe('一'); expect(wrapper.find('.mx-table-date td').attributes('title')).toBe('2019-09-30'); }); it('prop: lang - string', async () => { wrapper = mount(DatePicker, { props: { value: new Date(2019, 9, 10), open: true, lang: 'en', titleFormat: 'MMM DD, YYYY', appendToBody: false, }, }); expect(wrapper.find('.mx-table-date th').text()).toBe('Su'); expect(wrapper.find('.mx-table-date .active').attributes('title')).toBe('Oct 10, 2019'); expect(wrapper.find('.mx-btn-current-month').text()).toBe('Oct'); await wrapper.find('.mx-btn-current-month').trigger('click'); expect(wrapper.find('.mx-table-month td').text()).toBe('Jan'); wrapper.setProps({ lang: 'zh-cn' }); await wrapper.find('.mx-table-month td > div').trigger('click'); expect(wrapper.find('.mx-table-date th').text()).toBe('一'); expect(wrapper.find('.mx-table-date .active').attributes('title')).toBe('10月 10, 2019'); expect(wrapper.find('.mx-btn-current-month').text()).toBe('10月'); await wrapper.find('.mx-btn-current-month').trigger('click'); expect(wrapper.find('.mx-table-month td').text()).toBe('1月'); }); it('prop: lang - object', () => { wrapper = mount(DatePicker, { props: { open: true, appendToBody: false, lang: { formatLocale: { firstDayOfWeek: 2, }, days: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], }, }, }); expect(wrapper.find('.mx-table-date th').text()).toBe('周二'); }); }); ================================================ FILE: babel.config.js ================================================ // need to compile node_modules (eg: vue-runtime-helps) module.exports = (api) => { api.cache(false); return { presets: [ [ '@babel/preset-env', { modules: false, }, ], '@babel/preset-typescript', ], plugins: ['@vue/babel-plugin-jsx'], env: { test: { plugins: ['@vue/babel-plugin-jsx'], presets: [ [ '@babel/preset-env', { targets: { node: 'current', }, }, ], '@babel/preset-typescript', ], }, }, }; }; ================================================ FILE: build/deploy.sh ================================================ #!/bin/bash # abort on errors set -e if [[ -z $1 ]]; then MESSAGE="deploy" else MESSAGE=$1 fi echo "Deploying $MESSAGE ..." # build npm run docs:build # navigate into the build output directory cd docs/dist git init --initial-branch=main git add -A git commit -m "$MESSAGE" git push -f git@github.com:mengxiong10/vue-datepicker-next.git main:gh-pages cd - ================================================ FILE: build/git.sh ================================================ #!/bin/bash # Check current branch if test "main" != "$(git symbolic-ref --short HEAD)"; then echo 'Not on `main` branch.' >&2; exit 128; fi # Check local working tree if test -n "$(git status --porcelain)"; then echo 'Unclean working tree. Commit or stash changes first.' >&2; exit 128; fi # Check remote history if test "0" != "$(git rev-list --count --left-only @'{u}'...HEAD)"; then echo 'Remote history differ. Please pull changes.' >&2; exit 128; fi ================================================ FILE: build/release.sh ================================================ #!/bin/bash set -e if [[ -z $1 ]]; then echo "Enter new version: " read -r VERSION else VERSION=$1 fi read -p "Releasing $VERSION - are you sure? (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then echo "Releasing $VERSION ..." # build VERSION=$VERSION npm run build npm version $VERSION --message "$VERSION" # publish if [[ $VERSION =~ "beta" ]] then npm publish --tag beta else npm publish fi echo "Publish $VERSION success" # sync git push origin main git push origin refs/tags/v$VERSION git checkout dev git rebase main git push origin dev echo "sync success" npm run deploy $VERSION fi ================================================ FILE: commitlint.config.js ================================================ module.exports = { extends: ['@commitlint/config-conventional'] }; ================================================ FILE: docs/components/App.tsx ================================================ import { computed, defineComponent, h, onMounted, ref } from 'vue'; import DatePicker from 'vue-datepicker-next'; import Card from './Card'; import listEn from '../en.md'; import listZh from '../zh-cn.md'; const getCurrentId = () => { return window.location.hash.slice(1); }; export default defineComponent({ name: 'App', setup() { const activeCardId = ref(getCurrentId()); const activeTitleId = ref(''); const lang = ref('en'); const list = computed(() => (lang.value === 'en' ? listEn : listZh)); const handleScroll = () => { for (let i = 0; i < list.value.length; i++) { const { id } = list.value[i]; const el = document.getElementById(id); if (el) { const { top } = el.getBoundingClientRect(); if (top >= 0) { activeTitleId.value = id; break; } } } }; const handleChangeLocale = () => { lang.value = lang.value === 'en' ? 'zh-cn' : 'en'; DatePicker.locale(lang.value); }; onMounted(() => { window.onhashchange = () => { activeCardId.value = getCurrentId(); }; if (activeCardId.value) { document.getElementById(activeCardId.value)?.scrollIntoView(); } }); return () => { return (
Vue-datepicker-next
{list.value.map((item) => { const { Component, id, ...rest } = item; const props = { active: id === activeCardId.value, id, ...rest, }; return {h(Component)}; })}
); }; }, }); ================================================ FILE: docs/components/Card.tsx ================================================ import { defineComponent, ref } from 'vue'; import IconCollapse from '../svg/collapse.svg'; import IconExpand from '../svg/expand.svg'; export default defineComponent({ name: 'Card', props: { id: String, title: String, description: String, code: String, active: Boolean, }, setup(props, { slots }) { const codeVisible = ref(false); const handleCollapse = () => { codeVisible.value = !codeVisible.value; }; return () => { const { id, title, description, code } = props; return (
{slots.default?.()}
{codeVisible.value ? : }
              
            
); }; }, }); ================================================ FILE: docs/demo/Basic.vue ================================================ ================================================ FILE: docs/demo/ControlOpen.vue ================================================ ================================================ FILE: docs/demo/ControlTimePanel.vue ================================================ ================================================ FILE: docs/demo/Disabled.vue ================================================ ================================================ FILE: docs/demo/DisabledDateTime.vue ================================================ ================================================ FILE: docs/demo/FixedTimeList.vue ================================================ ================================================ FILE: docs/demo/HideSeconds.vue ================================================ ================================================ FILE: docs/demo/MinuteStep.vue ================================================ ================================================ FILE: docs/demo/Range.vue ================================================ ================================================ FILE: docs/demo/Shortcut.vue ================================================ ================================================ FILE: docs/demo/ValueType.vue ================================================ ================================================ FILE: docs/en.md ================================================ ### Basic You can select or input a date, month, year, time or datetime ```demo './demo/Basic.vue' ``` ### ValueType You can set the type of the v-model value by `valueType`. - "format": return a string same as the input value. - "date"(default): return a Date Object. - "timestamp": return a Number. - token: a accepted format string pattern. ```demo './demo/ValueType.vue' ``` ### Range Support to select a date range. ```demo './demo/Range.vue' ``` ### DisabledDate & DisabledTime Disabled part of dates and time by `disabledDate` and `disabledTime` respectively. **You should let the `defaultValue` not be disabled, when you use `disabledDate` or `disabledTime`.** ```demo './demo/DisabledDateTime.vue' ``` ### Disabled & editable - disabled: A disabled state of the DatePicker - editable: Whether to allow manual input ```demo './demo/Disabled.vue' ``` ### Hide seconds selection & display AMPM selection The columns of the time Picker is displayed according to the value of format(HH:mm:ss) by default. You can also set `showHour` `showMinute` `showSecond` to override the default value ```demo './demo/HideSeconds.vue' ``` ### Interval and custom time options Set stepped time options by `hourStep` `minuteStep` `secondStep` Set custom time options by `hourOptions` `minuteOptions` `secondOptions`. ```demo './demo/MinuteStep.vue' ``` ### Select fixed time list You can provide a list of fixed time for users to choose by `timePickerOptions` ```demo './demo/FixedTimeList.vue' ``` ### Shortcut You can set `shortcuts` to improve user experience. Use the header slot or the footer slot to render extra element in panel for customized requirements. ```demo './demo/Shortcut.vue' ``` ### Control TimePanel visible(datetime mode) The display or hiding of the time panel can be controlled by `showTimePanel`. The time panel is displayed after the date is selected by default. ```demo './demo/ControlTimePanel.vue' ``` ### Control Open You can use the prop `open` to control the visible of popup. This example shows how to close the popup when the seconds is selected. ```demo './demo/ControlOpen.vue' ``` ================================================ FILE: docs/index.html ================================================ vue-datepicker-next
================================================ FILE: docs/index.scss ================================================ $border-color: #ebedf0; * { box-sizing: border-box; } html, body, #app { margin: 0; height: 100%; } body { overflow: hidden; } svg { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden; } a { text-decoration: none; background-color: transparent; outline: none; cursor: pointer; } .container { display: flex; flex-direction: column; height: 100%; background-color: #fff; overflow: hidden; } @media screen and (max-width: 800px) { .sidebar { display: none; } } .sidebar { border-right: 1px solid #ebedf0; width: 280px; flex: 0 0 280px; overflow: auto; padding-top: 10px; a { display: block; font-size: 14px; line-height: 1; padding: 10px 15px; overflow: hidden; color: #314659; white-space: nowrap; text-overflow: ellipsis; border-left: 1px solid transparent; transition: all 0.3s ease; &:hover { color: mix(#fff, #1284e7, 0.8); } &.active { color: #1284e7; } } } .header { display: flex; justify-content: space-between; align-items: center; height: 50px; flex: 0 0 auto; padding: 0 20px; padding-left: 10px; text-align: right; border-bottom: 1px solid $border-color; z-index: 10; } .title { font-size: 18px; } .main { display: flex; flex: 1; overflow: hidden; } .content { flex: 1; padding: 10px 20px; overflow: auto; p { margin: 10px 0; } } .highlight-code { margin: 0; background: #fff; &::after, &::before { width: 0; } // 添加优先级, 覆盖 引入的样式 code { display: block; background: #fff; color: #314659; line-height: 2; border: 0; box-shadow: none; padding: 16px 32px; border-radius: 2px; font-size: 14px; } } .card { position: relative; display: inline-block; width: 100%; font-size: 14px; color: #314659; border: 1px solid $border-color; border-radius: 4px; margin-bottom: 60px; margin-top: 20px; &.active { border-color: #1284e7; } } .card-demo { padding: 30px 24px; color: #213649; border-top: 1px solid $border-color; .box { display: flex; flex-wrap: wrap; > section { flex: 1; display: flex; flex-direction: column; align-items: center; } } } .card-title { position: absolute; margin-top: -10px; margin-left: 14px; font-size: 16px; line-height: 1; font-weight: 700; padding: 0 10px; background: #fff; } .card-description { padding: 12px 24px; } .markdown-body { font-size: 15px; line-height: 1.7; p, ul, ol { margin: 10px 0; } ul, ol { padding-left: 30px; } code { margin: 0 1px; padding: 0.2em 0.4em; margin: 0; font-size: 85%; background-color: rgba(27, 31, 35, 0.05); border-radius: 3px; } } .card-actions { display: flex; justify-content: center; align-items: center; border-top: 1px solid $border-color; height: 36px; color: #9da6b1; cursor: pointer; transition: 0.2s; user-select: none; font-size: 16px; &:hover { box-shadow: 0 0 8px 0 rgba(232, 237, 250, 0.6), 0 2px 4px 0 rgba(232, 237, 250, 0.5); } } .card-code { border-top: 1px solid $border-color; } ================================================ FILE: docs/index.ts ================================================ import { createApp } from 'vue'; import DatePicker from 'vue-datepicker-next'; import '../lib/style/index.scss'; import '../lib/locale/zh-cn'; import App from './components/App'; import './index.scss'; import 'highlight.js/styles/atom-one-light.css'; const app = createApp(App); DatePicker.install(app); DatePicker.locale('en'); app.mount('#app'); ================================================ FILE: docs/md.d.ts ================================================ declare module '*.md' { interface Item { id: string; title: string; description: string; code: string; Component: any; } const list: Item[]; export default list; } ================================================ FILE: docs/vite.config.ts ================================================ import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import vueJsx from '@vitejs/plugin-vue-jsx'; import svgLoader from 'vite-svg-loader'; import path from 'path'; import { mdPlugin } from './viteMarkdownPlugin'; // https://vitejs.dev/config/ export default defineConfig(({ command }) => { const devLibPath = path.resolve(__dirname, '../lib'); const prodLibPath = path.resolve(__dirname, '../index.es'); return { base: '/vue-datepicker-next/', plugins: [vue(), vueJsx({ mergeProps: false }), svgLoader(), mdPlugin], resolve: { alias: { 'vue-datepicker-next': command === 'build' ? prodLibPath : devLibPath, }, }, }; }); ================================================ FILE: docs/viteMarkdownPlugin.ts ================================================ import { Plugin } from 'vite'; import MarkdownIt from 'markdown-it'; import path from 'path'; import fs from 'fs'; import hljs from 'highlight.js'; export const mdPlugin: Plugin = { name: 'docs-markdown-plugin', enforce: 'pre', transform(source, id) { if (!id.endsWith('.md')) return; const re = /(.*?)<\/h\d>(.+?)
(.*?)<\/code><\/pre>/gs;
    const html = MarkdownIt({ html: true }).render(source);
    const imports: string[] = [];
    const list = Array.from(html.matchAll(re), (v) => {
      const url = v[3].trim().replace(/'/g, '');
      const componentName = path.basename(url, '.vue');
      const code = fs.readFileSync(path.resolve(__dirname, url), 'utf8');
      imports.push(`import ${componentName} from '${url}'`);
      return {
        code: hljs.highlightAuto(code).value,
        id: componentName,
        title: v[1].trim(),
        description: v[2].trim(),
        Component: componentName,
      };
    });
    const importCode = imports.join('\n');
    const listString = JSON.stringify(list).replace(/("Component":)"(\w+)"/g, '$1$2');

    return `${importCode}\nexport default ${listString}`;
  },
};


================================================
FILE: docs/zh-cn.md
================================================
### 基本

可以选择或手动输入一个日期, 月, 年, 时间或者日期加时间

```demo
'./demo/Basic.vue'
```

### 绑定值的类型

通过`valueType`去设置`v-model`绑定的值的类型

- "format": 返回一个字符串,和输入框格式化之后的一样.
- "date"(default): 返回一个 Date 对象.
- "timestamp": 返回一个时间戳.
- token: 一个可以被解析的 token, 返回格式化这个 token 的字符串.

```demo
'./demo/ValueType.vue'
```

### 日期范围

支持选择一个日期范围

```demo
'./demo/Range.vue'
```

### 不可选择的日期和时间

可用 `disabledDate` 和 `disabledTime` 分别禁止选择部分日期和时间.

**当你使用`disabledDate` 或 `disabledTime`的时候, 应该设置`defaultValue`的值是不被禁止选择的.**

```demo
'./demo/DisabledDateTime.vue'
```

### 禁用和可编辑

- `disabled`: 设置组件是否禁用
- `editable`: 设置是否可手动输入

```demo
'./demo/Disabled.vue'
```

### 隐藏秒和显示 am/pm

时间选择的列是自动显示通过 `format`的设置.

你可以通过 `showHour` `showMinute` `showSecond` 覆盖默认值

```demo
'./demo/HideSeconds.vue'
```

### 间隔的时间和自定义时间选择

设置间隔的时间通过`hourStep` `minuteStep` `secondStep`.

设置自定义的选择通过`hourOptions` `minuteOptions` `secondOptions`.

```demo
'./demo/MinuteStep.vue'
```

### 固定的时间列表

可以通过 `timePickerOptions` 提供一个固定的时间列表选择

```demo
'./demo/FixedTimeList.vue'
```

### 快捷选项

可以通过设置 `shortcuts` 提升用户体验.

也可以使用 slot header 或者 footer 去设置额外的元素.

```demo
'./demo/Shortcut.vue'
```

### 控制时间选择的显示和隐藏(日期时间模式)

时间选择的显示可以通过 `showTimePanel` 控制.

默认情况下选择一个日期后时间面板就自动显示.

```demo
'./demo/ControlTimePanel.vue'
```

### 控制弹窗打开

可以通过 `open` 去控制弹窗的显示

下面的例子说明怎么关闭弹窗当选择秒的时候

```demo
'./demo/ControlOpen.vue'
```


================================================
FILE: index.html
================================================


  
    
    
    
    Vite App
  
  
    
================================================ FILE: jest-transform-svg.js ================================================ module.exports = { process(content) { return `module.exports = { render: () => {} }`; }, }; ================================================ FILE: jest.config.js ================================================ module.exports = { testEnvironment: 'jsdom', moduleFileExtensions: ['ts', 'tsx', 'js', 'vue'], transform: { '^.+\\.(js|ts|tsx)$': '/node_modules/babel-jest', '^.+\\.svg$': '/jest-transform-svg.js', }, transformIgnorePatterns: ['/node_modules/(?!date-format-parse).+\\.js$'], snapshotSerializers: ['jest-serializer-vue'], moduleNameMapper: { 'vue-datepicker-next': '/lib', }, coverageReporters: ['text', 'text-summary'], }; ================================================ FILE: lib/DatePicker.tsx ================================================ import { FunctionalComponent, h, SetupContext } from 'vue'; import { Assign, PickByValueExact } from 'utility-types'; import Picker, { PickerProps, SlotProps } from './Picker'; import Calendar from './calendar/Calendar'; import CalendarRange from './calendar/CalendarRange'; import TimePanel from './time/TimePanel'; import TimeRange from './time/TimeRange'; import DateTime, { DateTimeProps } from './datetime/DateTime'; import DateTimeRange, { DateTimeRangeProps } from './datetime/DateTimeRange'; import { pick } from './util/base'; import { IconCalendar, IconTime } from './svg'; import { keys, resolveProps } from './vueUtil'; type DatePickerProps = Assign; type DatePickerRangeProps = { range: true; } & Assign; export type DatePickerComponentProps = DatePickerProps | DatePickerRangeProps; const booleanKeys = keys, boolean>>()([ 'range', 'open', 'appendToBody', 'clearable', 'confirm', 'disabled', 'editable', 'multiple', 'partialUpdate', 'showHour', 'showMinute', 'showSecond', 'showTimeHeader', 'showTimePanel', 'showWeekNumber', 'use12h', ]); const formatMap = { date: 'YYYY-MM-DD', datetime: 'YYYY-MM-DD HH:mm:ss', year: 'YYYY', month: 'YYYY-MM', time: 'HH:mm:ss', week: 'w', }; function DatePicker(originalProps: DatePickerComponentProps, { slots }: SetupContext) { const type = originalProps.type || 'date'; const format = originalProps.format || formatMap[type] || formatMap.date; const props = { ...resolveProps(originalProps, booleanKeys), type, format }; return ( {{ content: (slotProps: SlotProps) => { if (props.range) { const Content = type === 'time' ? TimeRange : type === 'datetime' ? DateTimeRange : CalendarRange; return h(Content, pick({ ...props, ...slotProps }, Content.props)); } else { const Content = type === 'time' ? TimePanel : type === 'datetime' ? DateTime : Calendar; return h(Content, pick({ ...props, ...slotProps }, Content.props)); } }, ['icon-calendar']: () => (type === 'time' ? : ), ...slots, }} ); } export default DatePicker as FunctionalComponent; ================================================ FILE: lib/Picker.tsx ================================================ import { parse, format, getWeek } from 'date-format-parse'; import { DeepPartial } from 'utility-types'; import { computed, toRef, ref, watchEffect, SetupContext, StyleValue } from 'vue'; import { provideGetWeek, provideLocale, providePrefixClass } from './context'; import Popup from './Popup'; import PickerInput, { PickerInputBaseProps, pickerInputBaseProps } from './PickerInput'; import { isPlainObject, pick } from './util/base'; import { ClassValue, DateValue, Formatter, Locale, PickerType, Valuetype } from './type'; import { isValidDate } from './util/date'; import { defineVueComponent, keys, withDefault } from './vueUtil'; export interface PickerBaseProps { type?: PickerType; format?: string; value?: DateValue; valueType?: Valuetype; formatter?: Formatter; lang?: string | DeepPartial; prefixClass?: string; appendToBody?: boolean; open?: boolean; popupClass?: ClassValue; popupStyle?: StyleValue; confirm?: boolean; confirmText?: string; shortcuts?: Array<{ text: string; onClick: () => Date | Date[] }>; disabledDate?: (v: Date) => boolean; disabledTime?: (v: Date) => boolean; onClose?: () => void; onOpen?: () => void; onConfirm?: (v: any) => void; onChange?: (v: any, type?: string) => void; ['onUpdate:open']?: (open: boolean) => void; ['onUpdate:value']?: (v: any) => void; } export type PickerProps = PickerBaseProps & PickerInputBaseProps; export interface SlotProps { value: any; ['onUpdate:value']: (value: any, type: string) => void; emit: (value: any, type?: string, close?: boolean) => void; } function Picker(originalProps: PickerProps, { slots }: SetupContext) { const props = withDefault(originalProps, { prefixClass: 'mx', valueType: 'date', format: 'YYYY-MM-DD', type: 'date' as PickerType, disabledDate: () => false, disabledTime: () => false, confirmText: 'OK', }); providePrefixClass(props.prefixClass); provideGetWeek(props.formatter?.getWeek || getWeek); const locale = provideLocale(toRef(originalProps, 'lang')); const container = ref(); const getContainer = () => container.value; const defaultOpen = ref(false); const popupVisible = computed(() => { return !props.disabled && (typeof props.open === 'boolean' ? props.open : defaultOpen.value); }); const openPopup = () => { if (props.disabled || popupVisible.value) return; defaultOpen.value = true; props['onUpdate:open']?.(true); props.onOpen?.(); }; const closePopup = () => { if (!popupVisible.value) return; defaultOpen.value = false; props['onUpdate:open']?.(false); props.onClose?.(); }; const formatDate = (date: Date, fmt?: string): string => { fmt = fmt || props.format; if (isPlainObject(props.formatter) && typeof props.formatter.stringify === 'function') { return props.formatter.stringify(date, fmt); } return format(date, fmt, { locale: locale.value.formatLocale }); }; const parseDate = (value: string, fmt?: string): Date => { fmt = fmt || props.format; if (isPlainObject(props.formatter) && typeof props.formatter.parse === 'function') { return props.formatter.parse(value, fmt); } const backupDate = new Date(); return parse(value, fmt, { locale: locale.value.formatLocale, backupDate }); }; const value2date = (value: unknown) => { switch (props.valueType) { case 'date': return value instanceof Date ? new Date(value.getTime()) : new Date(NaN); case 'timestamp': return typeof value === 'number' ? new Date(value) : new Date(NaN); case 'format': return typeof value === 'string' ? parseDate(value) : new Date(NaN); default: return typeof value === 'string' ? parseDate(value, props.valueType) : new Date(NaN); } }; const date2value = (date: Date | null) => { if (!isValidDate(date)) return null; switch (props.valueType) { case 'date': return date; case 'timestamp': return date.getTime(); case 'format': return formatDate(date); default: return formatDate(date, props.valueType); } }; const innerValue = computed(() => { const value = props.value; if (props.range) { return (Array.isArray(value) ? value.slice(0, 2) : [null, null]).map(value2date); } if (props.multiple) { return (Array.isArray(value) ? value : []).map(value2date); } return value2date(value); }); const emitValue = (date: Date | Date[] | null | null[], type?: string, close = true) => { const value = Array.isArray(date) ? date.map(date2value) : date2value(date); props['onUpdate:value']?.(value); props.onChange?.(value, type); if (close) { closePopup(); } return value; }; // cache const currentValue = ref(new Date()); watchEffect(() => { if (popupVisible.value) { currentValue.value = innerValue.value; } }); const handleSelect = (val: Date | Date[], type: string) => { if (props.confirm) { currentValue.value = val; } else { // type === 'datetime', click the time should close popup emitValue(val, type, !props.multiple && (type === props.type || type === 'time')); } }; const handleConfirm = () => { const value = emitValue(currentValue.value); props.onConfirm?.(value); }; const disabledDateTime = (v: Date) => { return props.disabledDate(v) || props.disabledTime(v); }; const renderSidebar = (slotProps: SlotProps) => { const { prefixClass } = props; return (
{slots.sidebar?.(slotProps)} {(props.shortcuts || []).map((v, i) => ( ))}
); }; return () => { const { prefixClass, disabled, confirm, range, popupClass, popupStyle, appendToBody } = props; const slotProps = { value: currentValue.value, ['onUpdate:value']: handleSelect, emit: emitValue, }; const header = slots.header && (
{slots.header(slotProps)}
); const footer = (slots.footer || confirm) && (
{slots.footer?.(slotProps)} {confirm && ( )}
); const content = slots.content?.(slotProps); const sidedar = (slots.sidebar || props.shortcuts) && renderSidebar(slotProps); return (
{sidedar}
{header} {content} {footer}
); }; } const pickerbaseProps = keys()([ 'value', 'valueType', 'type', 'format', 'formatter', 'lang', 'prefixClass', 'appendToBody', 'open', 'popupClass', 'popupStyle', 'confirm', 'confirmText', 'shortcuts', 'disabledDate', 'disabledTime', 'onOpen', 'onClose', 'onConfirm', 'onChange', 'onUpdate:open', 'onUpdate:value', ]); const pickerProps = [...pickerbaseProps, ...pickerInputBaseProps]; export default defineVueComponent(Picker, pickerProps); ================================================ FILE: lib/PickerInput.tsx ================================================ import { ref, InputHTMLAttributes, computed, SetupContext } from 'vue'; import { usePrefixClass } from './context'; import { IconClose, IconCalendar } from './svg'; import { ClassValue } from './type'; import { isValidDate, isValidDates, isValidRangeDate } from './util/date'; import { defineVueComponent, keys, withDefault } from './vueUtil'; // expose to datepicker export interface PickerInputBaseProps { placeholder?: string; editable?: boolean; disabled?: boolean; clearable?: boolean; inputClass?: ClassValue; inputAttr?: InputHTMLAttributes; range?: boolean; multiple?: boolean; separator?: string; renderInputText?: (v: Date | Date[]) => string; onInputError?: (text: string) => void; onClear?: () => void; } export interface PickerInputProps extends PickerInputBaseProps { value: Date | Date[]; formatDate: (v: Date) => string; parseDate: (v: string) => Date; disabledDate: (v: Date) => boolean; onChange: (v: Date | Date[] | null | null[]) => void; onFocus: () => void; onBlur: () => void; onClick: () => void; } function PickerInput(originalProps: PickerInputProps, { slots }: SetupContext) { const props = withDefault(originalProps, { editable: true, disabled: false, clearable: true, range: false, multiple: false, }); const prefixClass = usePrefixClass(); const userInput = ref(null); const innerSeparator = computed(() => { return props.separator || (props.range ? ' ~ ' : ','); }); const isValidValue = (value: unknown) => { if (props.range) { return isValidRangeDate(value); } if (props.multiple) { return isValidDates(value); } return isValidDate(value); }; const isDisabledValue = (value: Date | Date[]) => { if (Array.isArray(value)) { return value.some((v) => props.disabledDate(v)); } return props.disabledDate(value); }; const text = computed(() => { if (userInput.value !== null) { return userInput.value; } if (typeof props.renderInputText === 'function') { return props.renderInputText(props.value); } if (!isValidValue(props.value)) { return ''; } if (Array.isArray(props.value)) { return props.value.map((v) => props.formatDate(v)).join(innerSeparator.value); } return props.formatDate(props.value); }); const handleClear = (evt?: Event) => { if (evt) { evt.stopPropagation(); } props.onChange(props.range ? [null, null] : null); props.onClear?.(); }; const handleChange = () => { if (!props.editable || userInput.value === null) return; const text = userInput.value.trim(); userInput.value = null; if (text === '') { handleClear(); return; } let date: Date | Date[]; if (props.range) { let arr = text.split(innerSeparator.value); if (arr.length !== 2) { // Maybe the separator during the day is the same as the separator for the date // eg: 2019-10-09-2020-01-02 arr = text.split(innerSeparator.value.trim()); } date = arr.map((v) => props.parseDate(v.trim())); } else if (props.multiple) { date = text.split(innerSeparator.value).map((v) => props.parseDate(v.trim())); } else { date = props.parseDate(text); } if (isValidValue(date) && !isDisabledValue(date)) { props.onChange(date); } else { props.onInputError?.(text); } }; const handleInput = (evt: string | Event) => { userInput.value = typeof evt === 'string' ? evt : (evt.target as HTMLInputElement).value; }; const handleKeydown = (evt: KeyboardEvent) => { const { keyCode } = evt; // Tab 9 or Enter 13 if (keyCode === 9) { props.onBlur(); } else if (keyCode === 13) { handleChange(); } }; return () => { const showClearIcon = !props.disabled && props.clearable && text.value; const inputProps = { name: 'date', type: 'text', autocomplete: 'off', value: text.value, class: props.inputClass || `${prefixClass}-input`, readonly: !props.editable, disabled: props.disabled, placeholder: props.placeholder, ...props.inputAttr, onFocus: props.onFocus, onKeydown: handleKeydown, onInput: handleInput, onChange: handleChange, }; return (
{slots.input?.(inputProps) || } {showClearIcon ? ( {slots['icon-clear']?.() || } ) : null} {/* default icon config in DatePicker */} {slots['icon-calendar']?.() || }
); }; } export const pickerInputBaseProps = keys()([ 'placeholder', 'editable', 'disabled', 'clearable', 'inputClass', 'inputAttr', 'range', 'multiple', 'separator', 'renderInputText', 'onInputError', 'onClear', ]); const pickerInputProps = keys()([ 'value', 'formatDate', 'parseDate', 'disabledDate', 'onChange', 'onFocus', 'onBlur', 'onClick', ...pickerInputBaseProps, ]); export default defineVueComponent(PickerInput, pickerInputProps); ================================================ FILE: lib/Popup.tsx ================================================ import { Transition, ref, watchEffect, Teleport, SetupContext, StyleValue } from 'vue'; import { usePrefixClass } from './context'; import { ClassValue } from './type'; import { getPopupElementSize, getRelativePosition, getScrollParent, mousedownEvent, } from './util/dom'; import { rafThrottle } from './util/throttle'; import { withDefault, defineVueComponent, keys } from './vueUtil'; export interface PopupProps { style?: StyleValue; className?: ClassValue; visible: boolean; appendToBody?: boolean; onClickOutside: (evt: MouseEvent | TouchEvent) => void; getRelativeElement: () => HTMLElement | undefined; } function Popup(originalProps: PopupProps, { slots }: SetupContext) { const props = withDefault(originalProps, { appendToBody: true, }); const prefixClass = usePrefixClass(); const popup = ref(null); const position = ref({ left: '', top: '' }); const displayPopup = () => { if (!props.visible || !popup.value) return; const relativeElement = props.getRelativeElement(); if (!relativeElement) return; const { width, height } = getPopupElementSize(popup.value); position.value = getRelativePosition(relativeElement, width, height, props.appendToBody); }; watchEffect(displayPopup, { flush: 'post' }); watchEffect( (onInvalidate) => { const relativeElement = props.getRelativeElement(); if (!relativeElement) return; const scrollElement = getScrollParent(relativeElement) || window; const handleMove = rafThrottle(displayPopup); scrollElement.addEventListener('scroll', handleMove); window.addEventListener('resize', handleMove); onInvalidate(() => { scrollElement.removeEventListener('scroll', handleMove); window.removeEventListener('resize', handleMove); }); }, { flush: 'post' } ); const handleClickOutside = (evt: MouseEvent | TouchEvent) => { if (!props.visible) return; const target = evt.target as Node; const el = popup.value; const relativeElement = props.getRelativeElement(); if (el && !el.contains(target) && relativeElement && !relativeElement.contains(target)) { props.onClickOutside(evt); } }; watchEffect((onInvalidate) => { document.addEventListener(mousedownEvent, handleClickOutside); onInvalidate(() => { document.removeEventListener(mousedownEvent, handleClickOutside); }); }); return () => { return ( {props.visible && (
{slots.default?.()}
)}
); }; } const popupProps = keys()([ 'style', 'className', 'visible', 'appendToBody', 'onClickOutside', 'getRelativeElement', ]); export default defineVueComponent(Popup, popupProps); ================================================ FILE: lib/calendar/ButtonIcon.tsx ================================================ import { HTMLAttributes } from 'vue'; import { usePrefixClass } from '../context'; export interface ButtonIconProps extends HTMLAttributes { value: string; } export function ButtonIcon({ value, ...rest }: ButtonIconProps) { const prefixClass = usePrefixClass(); return ( ); } ================================================ FILE: lib/calendar/Calendar.tsx ================================================ import { computed, ref, watchEffect } from 'vue'; import { getValidDate, isValidDate, setMonth, setYear, startOfDay, startOfMonth, startOfYear, } from '../util/date'; import { TableDate } from './TableDate'; import { TableMonth } from './TableMonth'; import { TableYear } from './TableYear'; import { PanelType, PickerType } from '../type'; import { defineVueComponent, keys, withDefault } from '../vueUtil'; export interface CalendarProps { type?: PickerType; value?: Date | Date[]; defaultValue?: Date; defaultPanel?: PickerType; disabledDate?: (value: Date, innerValue?: Date[]) => boolean; getClasses?: (value: Date, innerValue: Date[], classes: string) => string[] | string; calendar?: Date; multiple?: boolean; partialUpdate?: boolean; // update date when select year or month showWeekNumber?: boolean; titleFormat?: string; getYearPanel?: () => number[][]; onDateMouseEnter?: (value: Date) => void; onDateMouseLeave?: (value: Date) => void; onCalendarChange?: (value: Date) => void; onPanelChange?: (value: PanelType, oldValue: PanelType) => void; onPick?: (value: Date) => void; ['onUpdate:value']?: (v: any, type: string) => void; } function Calendar(originalProps: CalendarProps) { const props = withDefault(originalProps, { defaultValue: startOfDay(new Date()), type: 'date' as PickerType, disabledDate: () => false, getClasses: () => [], titleFormat: 'YYYY-MM-DD', }); const innerValue = computed(() => { const value = Array.isArray(props.value) ? props.value : [props.value]; return value.filter(isValidDate).map((v) => { if (props.type === 'year') return startOfYear(v); if (props.type === 'month') return startOfMonth(v); return startOfDay(v); }); }); const innerCalendar = ref(new Date()); watchEffect(() => { let calendarDate = props.calendar; if (!isValidDate(calendarDate)) { const { length } = innerValue.value; calendarDate = getValidDate(length > 0 ? innerValue.value[length - 1] : props.defaultValue); } innerCalendar.value = startOfMonth(calendarDate); }); const handleCalendarChange = (calendar: Date) => { innerCalendar.value = calendar; props.onCalendarChange?.(calendar); }; const panel = ref('date'); watchEffect(() => { const panels = ['date', 'month', 'year']; const index = Math.max(panels.indexOf(props.type), panels.indexOf(props.defaultPanel!)); panel.value = index !== -1 ? (panels[index] as PanelType) : 'date'; }); const handelPanelChange = (value: PanelType) => { const oldPanel = panel.value; panel.value = value; props.onPanelChange?.(value, oldPanel); }; const isDisabled = (date: Date) => { return props.disabledDate(new Date(date), innerValue.value); }; const emitDate = (date: Date, type: string) => { if (!isDisabled(date)) { props.onPick?.(date); if (props.multiple === true) { const nextDates = innerValue.value.filter((v) => v.getTime() !== date.getTime()); if (nextDates.length === innerValue.value.length) { nextDates.push(date); } props['onUpdate:value']?.(nextDates, type); } else { props['onUpdate:value']?.(date, type); } } }; const handleSelectDate = (date: Date) => { emitDate(date, props.type === 'week' ? 'week' : 'date'); }; const handleSelectYear = (date: Date) => { if (props.type === 'year') { emitDate(date, 'year'); } else { handleCalendarChange(date); handelPanelChange('month'); if (props.partialUpdate && innerValue.value.length === 1) { const value = setYear(innerValue.value[0], date.getFullYear()); emitDate(value, 'year'); } } }; const handleSelectMonth = (date: Date) => { if (props.type === 'month') { emitDate(date, 'month'); } else { handleCalendarChange(date); handelPanelChange('date'); if (props.partialUpdate && innerValue.value.length === 1) { const value = setMonth(setYear(innerValue.value[0], date.getFullYear()), date.getMonth()); emitDate(value, 'month'); } } }; const getCellClasses = (cellDate: Date, classes: string[] = []) => { if (isDisabled(cellDate)) { classes.push('disabled'); } else if (innerValue.value.some((v) => v.getTime() === cellDate.getTime())) { classes.push('active'); } return classes.concat(props.getClasses(cellDate, innerValue.value, classes.join(' '))); }; const getDateClasses = (cellDate: Date) => { const notCurrentMonth = cellDate.getMonth() !== innerCalendar.value.getMonth(); const classes = []; if (cellDate.getTime() === new Date().setHours(0, 0, 0, 0)) { classes.push('today'); } if (notCurrentMonth) { classes.push('not-current-month'); } return getCellClasses(cellDate, classes); }; const getMonthClasses = (cellDate: Date) => { if (props.type !== 'month') { return innerCalendar.value.getMonth() === cellDate.getMonth() ? 'active' : ''; } return getCellClasses(cellDate); }; const getYearClasses = (cellDate: Date) => { if (props.type !== 'year') { return innerCalendar.value.getFullYear() === cellDate.getFullYear() ? 'active' : ''; } return getCellClasses(cellDate); }; const getWeekActive = (row: Date[]) => { if (props.type !== 'week') return false; const start = row[0].getTime(); const end = row[6].getTime(); return innerValue.value.some((v) => { const time = v.getTime(); return time >= start && time <= end; }); }; return () => { if (panel.value === 'year') { return ( ); } if (panel.value === 'month') { return ( ); } return ( ); }; } export const calendarProps = keys()([ 'type', 'value', 'defaultValue', 'defaultPanel', 'disabledDate', 'getClasses', 'calendar', 'multiple', 'partialUpdate', 'showWeekNumber', 'titleFormat', 'getYearPanel', 'onDateMouseEnter', 'onDateMouseLeave', 'onCalendarChange', 'onPanelChange', 'onUpdate:value', 'onPick', ]); export default defineVueComponent(Calendar, calendarProps); ================================================ FILE: lib/calendar/CalendarRange.tsx ================================================ import { computed, ref, watchEffect } from 'vue'; import { usePrefixClass } from '../context'; import { diffCalendarMonths, isValidDate, isValidRangeDate, setMonth, startOfDay, } from '../util/date'; import Calendar, { CalendarProps, calendarProps } from './Calendar'; import { defineVueComponent, withDefault } from '../vueUtil'; import { PickerType } from '../type'; export type DateRange = [Date, Date]; export interface CalendarRangeProps extends Omit< CalendarProps, 'value' | 'defaultValue' | 'onUpdate:value' | 'calendar' | 'onCalendarChange' > { value?: Date[]; defaultValue?: Date | Date[]; calendar?: Date[]; onCalendarChange?: (value: DateRange, index?: number) => void; ['onUpdate:value']?: (v: Date[], type: string) => void; } const inRange = (date: Date, range: DateRange) => { const value = date.getTime(); let [min, max] = range.map((v) => v.getTime()); if (min > max) { [min, max] = [max, min]; } return value > min && value < max; }; function CalendarRange(originalProps: CalendarRangeProps) { const props = withDefault(originalProps, { defaultValue: new Date(), type: 'date' as PickerType, }); const prefixClass = usePrefixClass(); const defaultValues = computed(() => { let values = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue]; values = values.map((v) => startOfDay(v)); if (isValidRangeDate(values)) { return values; } return [new Date(), new Date()].map((v) => startOfDay(v)) as DateRange; }); const innerValue = ref([new Date(NaN), new Date(NaN)]); watchEffect(() => { if (isValidRangeDate(props.value)) { innerValue.value = props.value; } }); const handlePick = (date: Date, type: string) => { const [startValue, endValue] = innerValue.value; if (isValidDate(startValue) && !isValidDate(endValue)) { if (startValue.getTime() > date.getTime()) { innerValue.value = [date, startValue]; } else { innerValue.value = [startValue, date]; } props['onUpdate:value']?.(innerValue.value, type); } else { innerValue.value = [date, new Date(NaN)]; } }; const defaultCalendars = ref([new Date(), new Date()]); const calendars = computed(() => { return isValidRangeDate(props.calendar) ? props.calendar : defaultCalendars.value; }); const calendarMinDiff = computed(() => { if (props.type === 'year') return 10 * 12; // type:year min 10 year if (props.type === 'month') return 1 * 12; //type:month min 1 year return 1; // type:date min 1 month }); const updateCalendars = (dates: DateRange, index?: 0 | 1) => { const diff = diffCalendarMonths(dates[0], dates[1]); const gap = calendarMinDiff.value - diff; if (gap > 0) { const anotherIndex = index === 1 ? 0 : 1; dates[anotherIndex] = setMonth( dates[anotherIndex], (v) => v + (anotherIndex === 0 ? -gap : gap) ); } defaultCalendars.value = dates; props.onCalendarChange?.(dates, index); }; const updateCalendarStart = (date: Date) => { updateCalendars([date, calendars.value[1]], 0); }; const updateCalendarEnd = (date: Date) => { updateCalendars([calendars.value[0], date], 1); }; watchEffect(() => { const dates = isValidRangeDate(props.value) ? props.value : defaultValues.value; updateCalendars(dates.slice(0, 2) as DateRange); }); const hoveredValue = ref(null); const handleMouseEnter = (v: Date) => (hoveredValue.value = v); const handleMouseLeave = () => (hoveredValue.value = null); const getRangeClasses = (cellDate: Date, currentDates: Date[], classnames: string) => { const outerClasses = props.getClasses ? props.getClasses(cellDate, currentDates, classnames) : []; const classes: string[] = Array.isArray(outerClasses) ? outerClasses : [outerClasses]; if (/disabled|active/.test(classnames)) return classes; if (currentDates.length === 2 && inRange(cellDate, currentDates as DateRange)) { classes.push('in-range'); } if ( currentDates.length === 1 && hoveredValue.value && inRange(cellDate, [currentDates[0], hoveredValue.value]) ) { return classes.concat('hover-in-range'); } return classes; }; return () => { const calendarRange = calendars.value.map((calendar, index) => { const calendarProps = { ...props, calendar, value: innerValue.value, defaultValue: defaultValues.value[index], getClasses: getRangeClasses, // don't update when range is true partialUpdate: false, multiple: false, ['onUpdate:value']: handlePick, onCalendarChange: index === 0 ? updateCalendarStart : updateCalendarEnd, onDateMouseLeave: handleMouseLeave, onDateMouseEnter: handleMouseEnter, }; return ; }); return
{calendarRange}
; }; } export const calendarRangeProps = calendarProps; export default defineVueComponent(CalendarRange, calendarRangeProps); ================================================ FILE: lib/calendar/TableDate.tsx ================================================ import { format } from 'date-format-parse'; import { usePrefixClass, useLocale, useGetWeek } from '../context'; import { PanelType } from '../type'; import { chunk } from '../util/base'; import { getCalendar } from '../util/date'; import { TableHeader, TableHeaderProps } from './TableHeader'; export interface TableDateProps extends Omit { showWeekNumber?: boolean; isWeekMode: boolean; titleFormat: string; getWeekActive: (value: Date[]) => boolean; getCellClasses: (value: Date) => string[] | string; onSelect: (value: Date) => void; onUpdatePanel: (value: PanelType) => void; onDateMouseEnter?: (value: Date) => void; onDateMouseLeave?: (value: Date) => void; } export function TableDate({ calendar, isWeekMode, showWeekNumber, titleFormat, getWeekActive, getCellClasses, onSelect, onUpdatePanel, onUpdateCalendar, onDateMouseEnter, onDateMouseLeave, }: TableDateProps) { const prefixClass = usePrefixClass(); const getWeekNumber = useGetWeek(); const locale = useLocale().value; const { yearFormat, monthBeforeYear, monthFormat = 'MMM', formatLocale } = locale; const firstDayOfWeek = formatLocale.firstDayOfWeek || 0; let days = locale.days || formatLocale.weekdaysMin; days = days.concat(days).slice(firstDayOfWeek, firstDayOfWeek + 7); const year = calendar.getFullYear(); const month = calendar.getMonth(); const dates = chunk(getCalendar({ firstDayOfWeek, year, month }), 7); const formatDate = (date: Date, fmt: string) => { return format(date, fmt, { locale: locale.formatLocale }); }; const handlePanelChange = (panel: 'year' | 'month') => { onUpdatePanel(panel); }; const getCellDate = (el: HTMLElement) => { const index = el.getAttribute('data-index')!; const [row, col] = index.split(',').map((v) => parseInt(v, 10)); const value = dates[row][col]; return new Date(value); }; const handleCellClick = (evt: MouseEvent) => { onSelect(getCellDate(evt.currentTarget as HTMLElement)); }; const handleMouseEnter = (evt: MouseEvent) => { if (onDateMouseEnter) { onDateMouseEnter(getCellDate(evt.currentTarget as HTMLElement)); } }; const handleMouseLeave = (evt: MouseEvent) => { if (onDateMouseLeave) { onDateMouseLeave(getCellDate(evt.currentTarget as HTMLElement)); } }; const yearLabel = ( ); const monthLabel = ( ); showWeekNumber = typeof showWeekNumber === 'boolean' ? showWeekNumber : isWeekMode; return (
{monthBeforeYear ? [monthLabel, yearLabel] : [yearLabel, monthLabel]}
{showWeekNumber && } {days.map((day) => ( ))} {dates.map((row, i) => ( {showWeekNumber && ( )} {row.map((cell, j) => ( ))} ))}
{day}
{getWeekNumber(row[0])}
{cell.getDate()}
); } ================================================ FILE: lib/calendar/TableHeader.tsx ================================================ import { SetupContext } from 'vue'; import { ButtonIcon } from './ButtonIcon'; import { setMonth, setYear } from '../util/date'; import { usePrefixClass } from '../context'; export interface TableHeaderProps { type: 'date' | 'month' | 'year'; calendar: Date; onUpdateCalendar: (value: Date) => void; } export function TableHeader( { type, calendar, onUpdateCalendar }: TableHeaderProps, { slots }: SetupContext ) { const prefixClass = usePrefixClass(); const lastMonth = () => { onUpdateCalendar(setMonth(calendar, (v) => v - 1)); }; const nextMonth = () => { onUpdateCalendar(setMonth(calendar, (v) => v + 1)); }; const lastYear = () => { onUpdateCalendar(setYear(calendar, (v) => v - 1)); }; const nextYear = () => { onUpdateCalendar(setYear(calendar, (v) => v + 1)); }; const lastDecade = () => { onUpdateCalendar(setYear(calendar, (v) => v - 10)); }; const nextDecade = () => { onUpdateCalendar(setYear(calendar, (v) => v + 10)); }; return (
{type === 'date' && } {type === 'date' && } {slots.default?.()}
); } ================================================ FILE: lib/calendar/TableMonth.tsx ================================================ import { usePrefixClass, useLocale } from '../context'; import { PanelType } from '../type'; import { chunk } from '../util/base'; import { createDate } from '../util/date'; import { TableHeader, TableHeaderProps } from './TableHeader'; export interface TableMonthProps extends Omit { getCellClasses: (v: Date) => string[] | string; onSelect: (v: Date) => void; onUpdatePanel: (v: PanelType) => void; } export function TableMonth({ calendar, getCellClasses, onSelect, onUpdateCalendar, onUpdatePanel, }: TableMonthProps) { const prefixClass = usePrefixClass(); const locale = useLocale().value; const months = locale.months || locale.formatLocale.monthsShort; const getDate = (month: number) => { return createDate(calendar.getFullYear(), month); }; const handleClick = (evt: MouseEvent) => { const target = evt.currentTarget as HTMLElement; const month = target.getAttribute('data-month')!; onSelect(getDate(parseInt(month, 10))); }; return (
{chunk(months, 3).map((row, i) => ( {row.map((cell, j) => { const month = i * 3 + j; return ( ); })} ))}
{cell}
); } ================================================ FILE: lib/calendar/TableYear.tsx ================================================ import { usePrefixClass } from '../context'; import { chunk, last } from '../util/base'; import { createDate } from '../util/date'; import { TableHeader, TableHeaderProps } from './TableHeader'; export interface TableYearProps extends Omit { getCellClasses?: (v: Date) => string[] | string; getYearPanel?: (v: Date) => number[][]; onSelect: (v: Date) => void; } const getDefaultYears = (calendar: Date) => { const firstYear = Math.floor(calendar.getFullYear() / 10) * 10; const years = []; for (let i = 0; i < 10; i++) { years.push(firstYear + i); } return chunk(years, 2); }; export function TableYear({ calendar, getCellClasses = () => [], getYearPanel = getDefaultYears, onSelect, onUpdateCalendar, }: TableYearProps) { const prefixClass = usePrefixClass(); const getDate = (year: number) => { return createDate(year, 0); }; const handleClick = (evt: MouseEvent) => { const target = evt.currentTarget as HTMLElement; const year = target.getAttribute('data-year')!; onSelect(getDate(parseInt(year, 10))); }; const years = getYearPanel(new Date(calendar)); const firstYear = years[0][0]; const lastYear = last(last(years)); return (
{firstYear} {lastYear}
{years.map((row, i) => ( {row.map((cell, j) => ( ))} ))}
{cell}
); } ================================================ FILE: lib/context.ts ================================================ import { inject, computed, provide, Ref, shallowRef } from 'vue'; import { getWeek } from 'date-format-parse'; import { Locale } from './type'; import { getLocale } from './locale'; import { isPlainObject, mergeDeep } from './util/base'; import { DeepPartial } from 'utility-types'; const localeContextKey = 'datepicker_locale'; const prefixClassKey = 'datepicker_prefixClass'; const getWeekKey = 'datepicker_getWeek'; export function useLocale() { return inject>(localeContextKey, shallowRef(getLocale())); } export function provideLocale(lang: Ref | undefined>) { const locale = computed(() => { if (isPlainObject(lang.value)) { return mergeDeep(getLocale(), lang.value); } return getLocale(lang.value); }); provide(localeContextKey, locale); return locale; } export function providePrefixClass(value?: string) { provide(prefixClassKey, value); } export function usePrefixClass() { return inject(prefixClassKey, 'mx'); } export function provideGetWeek(value?: typeof getWeek) { provide(getWeekKey, value); } export function useGetWeek() { return inject(getWeekKey, getWeek); } ================================================ FILE: lib/datetime/DateTime.tsx ================================================ import { ref, watchEffect } from 'vue'; import Calendar, { calendarProps, CalendarProps } from '../calendar/Calendar'; import TimePanel, { timePanelProps, TimePanelProps } from '../time/TimePanel'; import { usePrefixClass } from '../context'; import { pick } from '../util/base'; import { assignTime, getValidDate, startOfDay } from '../util/date'; import { keys, withDefault, defineVueComponent } from '../vueUtil'; import { useTimePanelVisible } from './useTimePanelVisible'; export interface DateTimeBaseProps { showTimePanel?: boolean; onShowTimePanelChange?: (v: boolean) => void; } export type DateTimeProps = DateTimeBaseProps & CalendarProps & TimePanelProps; function DateTime(originalProps: DateTimeProps) { const props = withDefault(originalProps, { disabledTime: () => false, defaultValue: startOfDay(new Date()), }); const currentValue = ref(props.value); watchEffect(() => { currentValue.value = props.value; }); const { openTimePanel, closeTimePanel, timeVisible } = useTimePanelVisible(props); const handleSelect = (date: Date, type: string) => { if (type === 'date') { openTimePanel(); } let datetime = assignTime(date, getValidDate(props.value, props.defaultValue)); if (props.disabledTime(new Date(datetime))) { // set the time of defalutValue; datetime = assignTime(date, props.defaultValue); if (props.disabledTime(new Date(datetime))) { // if disabled don't emit date currentValue.value = datetime; return; } } props['onUpdate:value']?.(datetime, type); }; return () => { const prefixClass = usePrefixClass(); const calendarProp = { ...pick(props, calendarProps), multiple: false, type: 'date' as const, value: currentValue.value, ['onUpdate:value']: handleSelect, }; const timeProps = { ...pick(props, timePanelProps), showTimeHeader: true, value: currentValue.value, ['onUpdate:value']: props['onUpdate:value'], onClickTitle: closeTimePanel, }; return (
{timeVisible.value && }
); }; } export const datetimeBaseProps = keys()([ 'showTimePanel', 'onShowTimePanelChange', ]); export const datetimeProps = [...datetimeBaseProps, ...calendarProps, ...timePanelProps]; export default defineVueComponent(DateTime, datetimeProps); ================================================ FILE: lib/datetime/DateTimeRange.tsx ================================================ import { ref, watchEffect } from 'vue'; import { DateTimeBaseProps, datetimeBaseProps } from './DateTime'; import TimeRange, { TimeRangeProps, timeRangeProps } from '../time/TimeRange'; import CalendarRange, { CalendarRangeProps, calendarRangeProps } from '../calendar/CalendarRange'; import { usePrefixClass } from '../context'; import { pick } from '../util/base'; import { assignTime, isValidRangeDate, startOfDay } from '../util/date'; import { withDefault, defineVueComponent } from '../vueUtil'; import { useTimePanelVisible } from './useTimePanelVisible'; export type DateTimeRangeProps = DateTimeBaseProps & TimeRangeProps & CalendarRangeProps; function DateTimeRange(originalProps: DateTimeRangeProps) { const props = withDefault(originalProps, { defaultValue: startOfDay(new Date()), disabledTime: () => false, }); const currentValue = ref(props.value); watchEffect(() => { currentValue.value = props.value; }); const { openTimePanel, closeTimePanel, timeVisible } = useTimePanelVisible(props); const handleSelect = (dates: Date[], type: string) => { if (type === 'date') { openTimePanel(); } const defaultValues = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue]; let datetimes = dates.map((date, i) => { const time = isValidRangeDate(props.value) ? props.value[i] : defaultValues[i]; return assignTime(date, time); }); if (datetimes[1].getTime() < datetimes[0].getTime()) { datetimes = [datetimes[0], datetimes[0]]; } if (datetimes.some(props.disabledTime)) { datetimes = dates.map((date, i) => assignTime(date, defaultValues[i])); if (datetimes.some(props.disabledTime)) { currentValue.value = datetimes; return; } } props['onUpdate:value']?.(datetimes, type); }; return () => { const prefixClass = usePrefixClass(); const calendarProp = { ...pick(props, calendarRangeProps), type: 'date' as const, value: currentValue.value, ['onUpdate:value']: handleSelect, }; const timeProps = { ...pick(props, timeRangeProps), showTimeHeader: true, value: currentValue.value, ['onUpdate:value']: props['onUpdate:value'], onClickTitle: closeTimePanel, }; return (
{timeVisible.value && }
); }; } export const datetimeRangeProps = [...datetimeBaseProps, ...timeRangeProps, ...calendarRangeProps]; export default defineVueComponent(DateTimeRange, datetimeRangeProps); ================================================ FILE: lib/datetime/useTimePanelVisible.ts ================================================ import { ref, computed } from 'vue'; import { DateTimeBaseProps } from './DateTime'; export function useTimePanelVisible(props: DateTimeBaseProps) { const defaultTimeVisible = ref(false); const closeTimePanel = () => { defaultTimeVisible.value = false; props.onShowTimePanelChange?.(false); }; const openTimePanel = () => { defaultTimeVisible.value = true; props.onShowTimePanelChange?.(true); }; const timeVisible = computed(() => { return typeof props.showTimePanel === 'boolean' ? props.showTimePanel : defaultTimeVisible.value; }); return { timeVisible, openTimePanel, closeTimePanel }; } ================================================ FILE: lib/index.ts ================================================ /* istanbul ignore file */ import { App } from 'vue'; import DatePicker from './DatePicker'; import Calendar from './calendar/Calendar'; import CalendarRange from './calendar/CalendarRange'; import TimePanel from './time/TimePanel'; import TimeRange from './time/TimeRange'; import DateTime from './datetime/DateTime'; import DateTimeRange from './datetime/DateTimeRange'; import { locale } from './locale'; const api = { locale, install: (app: App) => { app.component('DatePicker', DatePicker); }, }; export default Object.assign(DatePicker, api, { Calendar, CalendarRange, TimePanel, TimeRange, DateTime, DateTimeRange, }); ================================================ FILE: lib/locale/af.ts ================================================ import DatePicker from 'vue-datepicker-next'; import af from 'date-format-parse/es/locale/af'; const lang = { formatLocale: af, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('af', lang); export default lang; ================================================ FILE: lib/locale/ar-dz.ts ================================================ import DatePicker from 'vue-datepicker-next'; import arDZ from 'date-format-parse/es/locale/ar-dz'; const lang = { formatLocale: arDZ, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ar-dz', lang); export default lang; ================================================ FILE: lib/locale/ar-sa.ts ================================================ import DatePicker from 'vue-datepicker-next'; import arSA from 'date-format-parse/es/locale/ar-sa'; const lang = { formatLocale: arSA, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ar-sa', lang); export default lang; ================================================ FILE: lib/locale/ar.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ar from 'date-format-parse/es/locale/ar'; const lang = { formatLocale: ar, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ar', lang); export default lang; ================================================ FILE: lib/locale/az.ts ================================================ import DatePicker from 'vue-datepicker-next'; import az from 'date-format-parse/es/locale/az'; const lang = { formatLocale: az, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('az', lang); export default lang; ================================================ FILE: lib/locale/be.ts ================================================ import DatePicker from 'vue-datepicker-next'; import be from 'date-format-parse/es/locale/be'; const lang = { formatLocale: be, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('be', lang); export default lang; ================================================ FILE: lib/locale/bg.ts ================================================ import DatePicker from 'vue-datepicker-next'; import bg from 'date-format-parse/es/locale/bg'; const lang = { formatLocale: bg, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('bg', lang); export default lang; ================================================ FILE: lib/locale/bm.ts ================================================ import DatePicker from 'vue-datepicker-next'; import bm from 'date-format-parse/es/locale/bm'; const lang = { formatLocale: bm, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('bm', lang); export default lang; ================================================ FILE: lib/locale/bn.ts ================================================ import DatePicker from 'vue-datepicker-next'; import bn from 'date-format-parse/es/locale/bn'; const lang = { formatLocale: bn, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('bn', lang); export default lang; ================================================ FILE: lib/locale/ca.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ca from 'date-format-parse/es/locale/ca'; const lang = { formatLocale: ca, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ca', lang); export default lang; ================================================ FILE: lib/locale/cs.ts ================================================ import DatePicker from 'vue-datepicker-next'; import cs from 'date-format-parse/es/locale/cs'; const lang = { formatLocale: cs, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('cs', lang); export default lang; ================================================ FILE: lib/locale/cy.ts ================================================ import DatePicker from 'vue-datepicker-next'; import cy from 'date-format-parse/es/locale/cy'; const lang = { formatLocale: cy, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('cy', lang); export default lang; ================================================ FILE: lib/locale/da.ts ================================================ import DatePicker from 'vue-datepicker-next'; import da from 'date-format-parse/es/locale/da'; const lang = { formatLocale: da, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('da', lang); export default lang; ================================================ FILE: lib/locale/de.ts ================================================ import DatePicker from 'vue-datepicker-next'; import de from 'date-format-parse/es/locale/de'; const lang = { formatLocale: de, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('de', lang); export default lang; ================================================ FILE: lib/locale/el.ts ================================================ import DatePicker from 'vue-datepicker-next'; import el from 'date-format-parse/es/locale/el'; const lang = { formatLocale: el, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('el', lang); export default lang; ================================================ FILE: lib/locale/en.ts ================================================ import en from 'date-format-parse/es/locale/en'; const lang = { formatLocale: en, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; export default lang; ================================================ FILE: lib/locale/eo.ts ================================================ import DatePicker from 'vue-datepicker-next'; import eo from 'date-format-parse/es/locale/eo'; const lang = { formatLocale: eo, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('eo', lang); export default lang; ================================================ FILE: lib/locale/es.ts ================================================ import DatePicker from 'vue-datepicker-next'; import es from 'date-format-parse/es/locale/es'; const lang = { formatLocale: es, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('es', lang); export default lang; ================================================ FILE: lib/locale/et.ts ================================================ import DatePicker from 'vue-datepicker-next'; import et from 'date-format-parse/es/locale/et'; const lang = { formatLocale: et, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('et', lang); export default lang; ================================================ FILE: lib/locale/fi.ts ================================================ import DatePicker from 'vue-datepicker-next'; import fi from 'date-format-parse/es/locale/fi'; const lang = { formatLocale: fi, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('fi', lang); export default lang; ================================================ FILE: lib/locale/fr.ts ================================================ import DatePicker from 'vue-datepicker-next'; import fr from 'date-format-parse/es/locale/fr'; const lang = { formatLocale: fr, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('fr', lang); export default lang; ================================================ FILE: lib/locale/gl.ts ================================================ import DatePicker from 'vue-datepicker-next'; import gl from 'date-format-parse/es/locale/gl'; const lang = { formatLocale: gl, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('gl', lang); export default lang; ================================================ FILE: lib/locale/gu.ts ================================================ import DatePicker from 'vue-datepicker-next'; import gu from 'date-format-parse/es/locale/gu'; const lang = { formatLocale: gu, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('gu', lang); export default lang; ================================================ FILE: lib/locale/he.ts ================================================ import DatePicker from 'vue-datepicker-next'; import he from 'date-format-parse/es/locale/he'; const lang = { formatLocale: he, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('he', lang); export default lang; ================================================ FILE: lib/locale/hi.ts ================================================ import DatePicker from 'vue-datepicker-next'; import hi from 'date-format-parse/es/locale/hi'; const lang = { formatLocale: hi, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('hi', lang); export default lang; ================================================ FILE: lib/locale/hr.ts ================================================ import DatePicker from 'vue-datepicker-next'; import hr from 'date-format-parse/es/locale/hr'; const lang = { formatLocale: hr, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('hr', lang); export default lang; ================================================ FILE: lib/locale/hu.ts ================================================ import DatePicker from 'vue-datepicker-next'; import hu from 'date-format-parse/es/locale/hu'; const lang = { formatLocale: hu, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('hu', lang); export default lang; ================================================ FILE: lib/locale/id.ts ================================================ import DatePicker from 'vue-datepicker-next'; import id from 'date-format-parse/es/locale/id'; const lang = { formatLocale: id, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('id', lang); export default lang; ================================================ FILE: lib/locale/is.ts ================================================ import DatePicker from 'vue-datepicker-next'; import is from 'date-format-parse/es/locale/is'; const lang = { formatLocale: is, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('is', lang); export default lang; ================================================ FILE: lib/locale/it.ts ================================================ import DatePicker from 'vue-datepicker-next'; import it from 'date-format-parse/es/locale/it'; const lang = { formatLocale: it, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('it', lang); export default lang; ================================================ FILE: lib/locale/ja.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ja from 'date-format-parse/es/locale/ja'; const lang = { formatLocale: ja, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('ja', lang); export default lang; ================================================ FILE: lib/locale/ka.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ka from 'date-format-parse/es/locale/ka'; const lang = { formatLocale: ka, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ka', lang); export default lang; ================================================ FILE: lib/locale/kk.ts ================================================ import DatePicker from 'vue-datepicker-next'; import kk from 'date-format-parse/es/locale/kk'; const lang = { formatLocale: kk, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('kk', lang); export default lang; ================================================ FILE: lib/locale/ko.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ko from 'date-format-parse/es/locale/ko'; const lang = { formatLocale: ko, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('ko', lang); export default lang; ================================================ FILE: lib/locale/lt.ts ================================================ import DatePicker from 'vue-datepicker-next'; import lt from 'date-format-parse/es/locale/lt'; const lang = { formatLocale: lt, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('lt', lang); export default lang; ================================================ FILE: lib/locale/lv.ts ================================================ import DatePicker from 'vue-datepicker-next'; import lv from 'date-format-parse/es/locale/lv'; const lang = { formatLocale: lv, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('lv', lang); export default lang; ================================================ FILE: lib/locale/mk.ts ================================================ import DatePicker from 'vue-datepicker-next'; import mk from 'date-format-parse/es/locale/mk'; const lang = { formatLocale: mk, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('mk', lang); export default lang; ================================================ FILE: lib/locale/ms.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ms from 'date-format-parse/es/locale/ms'; const lang = { formatLocale: ms, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ms', lang); export default lang; ================================================ FILE: lib/locale/nb.ts ================================================ import DatePicker from 'vue-datepicker-next'; import nb from 'date-format-parse/es/locale/nb'; const lang = { formatLocale: nb, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('nb', lang); export default lang; ================================================ FILE: lib/locale/nl-be.ts ================================================ import DatePicker from 'vue-datepicker-next'; import nlBE from 'date-format-parse/es/locale/nl-be'; const lang = { formatLocale: nlBE, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('nl-be', lang); export default lang; ================================================ FILE: lib/locale/nl.ts ================================================ import DatePicker from 'vue-datepicker-next'; import nl from 'date-format-parse/es/locale/nl'; const lang = { formatLocale: nl, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('nl', lang); export default lang; ================================================ FILE: lib/locale/pl.ts ================================================ import DatePicker from 'vue-datepicker-next'; import pl from 'date-format-parse/es/locale/pl'; const lang = { formatLocale: pl, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('pl', lang); export default lang; ================================================ FILE: lib/locale/pt-br.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ptBR from 'date-format-parse/es/locale/pt-br'; const lang = { formatLocale: ptBR, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('pt-br', lang); export default lang; ================================================ FILE: lib/locale/pt.ts ================================================ import DatePicker from 'vue-datepicker-next'; import pt from 'date-format-parse/es/locale/pt'; const lang = { formatLocale: pt, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('pt', lang); export default lang; ================================================ FILE: lib/locale/ro.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ro from 'date-format-parse/es/locale/ro'; const lang = { formatLocale: ro, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ro', lang); export default lang; ================================================ FILE: lib/locale/ru.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ru from 'date-format-parse/es/locale/ru'; const lang = { formatLocale: ru, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ru', lang); export default lang; ================================================ FILE: lib/locale/sl.ts ================================================ import DatePicker from 'vue-datepicker-next'; import sl from 'date-format-parse/es/locale/sl'; const lang = { formatLocale: sl, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('sl', lang); export default lang; ================================================ FILE: lib/locale/sr.ts ================================================ import DatePicker from 'vue-datepicker-next'; import sr from 'date-format-parse/es/locale/sr'; const lang = { formatLocale: sr, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('sr', lang); export default lang; ================================================ FILE: lib/locale/sv.ts ================================================ import DatePicker from 'vue-datepicker-next'; import sv from 'date-format-parse/es/locale/sv'; const lang = { formatLocale: sv, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('sv', lang); export default lang; ================================================ FILE: lib/locale/ta.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ta from 'date-format-parse/es/locale/ta'; const lang = { formatLocale: ta, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ta', lang); export default lang; ================================================ FILE: lib/locale/te.ts ================================================ import DatePicker from 'vue-datepicker-next'; import te from 'date-format-parse/es/locale/te'; const lang = { formatLocale: te, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('te', lang); export default lang; ================================================ FILE: lib/locale/th.ts ================================================ import DatePicker from 'vue-datepicker-next'; import th from 'date-format-parse/es/locale/th'; const lang = { formatLocale: th, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('th', lang); export default lang; ================================================ FILE: lib/locale/tr.ts ================================================ import DatePicker from 'vue-datepicker-next'; import tr from 'date-format-parse/es/locale/tr'; const lang = { formatLocale: tr, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('tr', lang); export default lang; ================================================ FILE: lib/locale/ug-cn.ts ================================================ import DatePicker from 'vue-datepicker-next'; import ugCN from 'date-format-parse/es/locale/ug-cn'; const lang = { formatLocale: ugCN, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ug-cn', lang); export default lang; ================================================ FILE: lib/locale/uk.ts ================================================ import DatePicker from 'vue-datepicker-next'; import uk from 'date-format-parse/es/locale/uk'; const lang = { formatLocale: uk, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('uk', lang); export default lang; ================================================ FILE: lib/locale/vi.ts ================================================ import DatePicker from 'vue-datepicker-next'; import vi from 'date-format-parse/es/locale/vi'; const lang = { formatLocale: vi, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('vi', lang); export default lang; ================================================ FILE: lib/locale/zh-cn.ts ================================================ import DatePicker from 'vue-datepicker-next'; import zhCN from 'date-format-parse/es/locale/zh-cn'; const lang = { formatLocale: zhCN, yearFormat: 'YYYY年', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('zh-cn', lang); export default lang; ================================================ FILE: lib/locale/zh-tw.ts ================================================ import DatePicker from 'vue-datepicker-next'; import zhTW from 'date-format-parse/es/locale/zh-tw'; const lang = { formatLocale: zhTW, yearFormat: 'YYYY年', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('zh-tw', lang); export default lang; ================================================ FILE: lib/locale.ts ================================================ import enUS from './locale/en'; import { Locale } from './type'; let defaultLocale = 'en'; const locales: Record = {}; locales[defaultLocale] = enUS; export function locale(name?: string, object?: Locale | null, isLocal = false): Locale { if (typeof name !== 'string') return locales[defaultLocale]; let l = defaultLocale; if (locales[name]) { l = name; } if (object) { locales[name] = object; l = name; } if (!isLocal) { defaultLocale = l; } return locales[name] || locales[defaultLocale]; } /** * get locale object * @param {string} name lang */ export function getLocale(name?: string) { return locale(name, undefined, true); } ================================================ FILE: lib/scrollbar/ScrollbarVertical.tsx ================================================ import { defineComponent, ref, onMounted, onUnmounted } from 'vue'; import { usePrefixClass } from '../context'; import { getScrollbarWidth } from '../util/dom'; export const ScrollbarVertical = defineComponent({ setup(props, { slots }) { const prefixClass = usePrefixClass(); const wrapper = ref(); const thumbHeight = ref(''); // % const thumbTop = ref(''); const getThumbHeight = () => { if (!wrapper.value) return; const el = wrapper.value; const heightPercentage = (el.clientHeight * 100) / el.scrollHeight; thumbHeight.value = heightPercentage < 100 ? `${heightPercentage}%` : ''; }; onMounted(getThumbHeight); const scrollbarWidth = getScrollbarWidth(); const handleScroll = (evt: UIEvent) => { const el = evt.currentTarget as HTMLElement; const { scrollHeight, scrollTop } = el; thumbTop.value = `${(scrollTop * 100) / scrollHeight}%`; }; let draggable = false; let prevY = 0; const handleDragstart = (evt: MouseEvent) => { evt.stopImmediatePropagation(); const el = evt.currentTarget as HTMLElement; const { offsetTop } = el; draggable = true; prevY = evt.clientY - offsetTop; }; const handleDraging = (evt: MouseEvent) => { if (!draggable || !wrapper.value) return; const { clientY } = evt; const { scrollHeight, clientHeight } = wrapper.value; const offsetY = clientY - prevY; const top = (offsetY * scrollHeight) / clientHeight; wrapper.value.scrollTop = top; }; const handleDragend = () => { draggable = false; }; onMounted(() => { document.addEventListener('mousemove', handleDraging); document.addEventListener('mouseup', handleDragend); }); onUnmounted(() => { document.addEventListener('mousemove', handleDraging); document.addEventListener('mouseup', handleDragend); }); return () => (
{slots.default?.()}
); }, }); ================================================ FILE: lib/style/animation.scss ================================================ @import './var.scss'; .#{$namespace}-zoom-in-down-enter-active, .#{$namespace}-zoom-in-down-leave-active { opacity: 1; transform: scaleY(1); transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1), opacity 0.3s cubic-bezier(0.23, 1, 0.32, 1); transform-origin: center top; } .#{$namespace}-zoom-in-down-enter, .#{$namespace}-zoom-in-down-enter-from, .#{$namespace}-zoom-in-down-leave-to { opacity: 0; transform: scaleY(0); } ================================================ FILE: lib/style/btn.scss ================================================ @import './var.scss'; .#{$namespace}-btn { box-sizing: border-box; line-height: 1; font-size: 14px; font-weight: 500; padding: 7px 15px; margin: 0; cursor: pointer; background-color: transparent; outline: none; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 4px; color: $default-color; white-space: nowrap; &:hover { border-color: $primary-color; color: $primary-color; } } .#{$namespace}-btn-text { border: 0; padding: 0 4px; text-align: left; line-height: inherit; } ================================================ FILE: lib/style/icon.scss ================================================ @import './var.scss'; .#{$namespace}-icon-left:before, .#{$namespace}-icon-right:before, .#{$namespace}-icon-double-left:before, .#{$namespace}-icon-double-right:before, .#{$namespace}-icon-double-left:after, .#{$namespace}-icon-double-right:after { content: ''; position: relative; top: -1px; display: inline-block; width: 10px; height: 10px; vertical-align: middle; border-style: solid; border-color: currentColor; border-width: 2px 0 0 2px; border-radius: 1px; box-sizing: border-box; transform-origin: center; transform: rotate(-45deg) scale(0.7); } .#{$namespace}-icon-double-left:after { left: -4px; } .#{$namespace}-icon-double-right:before { left: 4px; } .#{$namespace}-icon-right:before, .#{$namespace}-icon-double-right:before, .#{$namespace}-icon-double-right:after { transform: rotate(135deg) scale(0.7); } ================================================ FILE: lib/style/index.scss ================================================ @import './var.scss'; @import './icon.scss'; @import './btn.scss'; @import './scrollbar.scss'; @import './animation.scss'; .#{$namespace}-datepicker { position: relative; display: inline-block; width: 210px; svg { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden; } } .#{$namespace}-datepicker-range { width: 320px; } .#{$namespace}-datepicker-inline { width: auto; } .#{$namespace}-input-wrapper { position: relative; .#{$namespace}-icon-clear { display: none; } &:hover { .#{$namespace}-icon-clear { display: block; } .#{$namespace}-icon-clear + .#{$namespace}-icon-calendar { display: none; } } } .#{$namespace}-input { display: inline-block; box-sizing: border-box; width: 100%; height: 34px; padding: 6px 30px; padding-left: 10px; font-size: 14px; line-height: 1.4; color: $input-color; background-color: #fff; border: 1px solid $input-border-color; border-radius: $input-border-radius; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); &:hover, &:focus { border-color: $input-hover-border-color; } &:disabled, &.disabled { color: $disabled-color; background-color: $disabled-background-color; border-color: $input-border-color; cursor: not-allowed; } &:focus { outline: none; } &::-ms-clear { display: none; } } .#{$namespace}-icon-calendar, .#{$namespace}-icon-clear { position: absolute; top: 50%; right: 8px; transform: translateY(-50%); font-size: 16px; line-height: 1; color: rgba(0, 0, 0, 0.5); vertical-align: middle; } .#{$namespace}-icon-clear { cursor: pointer; &:hover { color: rgba(0, 0, 0, 0.8); } } .#{$namespace}-datepicker-main { font: 14px/1.5 'Helvetica Neue', Helvetica, Arial, 'Microsoft Yahei', sans-serif; color: $default-color; background-color: #fff; border: 1px solid $border-color; } .#{$namespace}-datepicker-popup { position: absolute; margin-top: 1px; margin-bottom: 1px; box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); z-index: $popup-z-index; } .#{$namespace}-datepicker-sidebar { float: left; box-sizing: border-box; width: $sidebar-margin-left; padding: 6px; overflow: auto; } .#{$namespace}-datepicker-sidebar + .#{$namespace}-datepicker-content { margin-left: $sidebar-margin-left; border-left: 1px solid $border-color; } .#{$namespace}-datepicker-body { position: relative; user-select: none; } .#{$namespace}-btn-shortcut { display: block; padding: 0 6px; line-height: 24px; } .#{$namespace}-datepicker-header { padding: 6px 8px; border-bottom: 1px solid $border-color; } .#{$namespace}-datepicker-footer { padding: 6px 8px; text-align: right; border-top: 1px solid $border-color; } .#{$namespace}-calendar-range, .#{$namespace}-time-range { display: flex; @media (max-width: 750px) { flex-direction: column; } } .#{$namespace}-calendar { box-sizing: border-box; width: 248px; padding: 6px 12px; & + & { border-left: 1px solid $border-color; } } .#{$namespace}-calendar-header { box-sizing: border-box; height: 34px; line-height: 34px; text-align: center; overflow: hidden; } .#{$namespace}-btn-icon-left, .#{$namespace}-btn-icon-double-left { float: left; } .#{$namespace}-btn-icon-right, .#{$namespace}-btn-icon-double-right { float: right; } .#{$namespace}-calendar-header-label { font-size: 14px; } .#{$namespace}-calendar-decade-separator { margin: 0 2px; &:after { content: '~'; } } .#{$namespace}-calendar-content { position: relative; height: 224px; box-sizing: border-box; .cell { cursor: pointer; &:hover { color: $calendar-hover-color; background-color: $calendar-hover-background-color; } &.active { color: $calendar-active-color; background-color: $calendar-active-background-color; } &.in-range, &.hover-in-range { color: $calendar-in-range-color; background-color: $calendar-in-range-background-color; } &.disabled { cursor: not-allowed; color: $disabled-color; background-color: $disabled-background-color; } } } .#{$namespace}-calendar-week-mode { .#{$namespace}-date-row { cursor: pointer; &:hover { background-color: $calendar-hover-background-color; } &.#{$namespace}-active-week { background-color: $calendar-in-range-background-color; } .cell { &:hover { color: inherit; background-color: transparent; } &.active { color: inherit; background-color: transparent; } } } } .#{$namespace}-week-number { opacity: 0.5; } .#{$namespace}-table { table-layout: fixed; border-collapse: separate; border-spacing: 0; width: 100%; height: 100%; box-sizing: border-box; text-align: center; th { padding: 0; font-weight: 500; vertical-align: middle; } td { padding: 0; vertical-align: middle; } } .#{$namespace}-table-date { td, th { height: 32px; font-size: 12px; } .today { color: $today-color; } .cell.not-current-month { color: #ccc; background: none; // cover the in-range style } } .#{$namespace}-time { flex: 1; width: 224px; background: #fff; & + & { border-left: 1px solid $border-color; } } .#{$namespace}-date-time { position: relative; width: 248px; height: 270px; .#{$namespace}-time { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } .#{$namespace}-date-time-range { position: relative; width: 248px * 2; height: 270px; .#{$namespace}-time-range { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } } .#{$namespace}-time-header { @extend .#{$namespace}-calendar-header; border-bottom: 1px solid $border-color; } .#{$namespace}-time-content { height: 224px; box-sizing: border-box; overflow: hidden; } .#{$namespace}-time-columns { display: flex; width: 100%; height: 100%; overflow: hidden; } .#{$namespace}-time-column { flex: 1; position: relative; border-left: 1px solid $border-color; text-align: center; &:first-child { border-left: 0; } .#{$namespace}-time-list { margin: 0; padding: 0; list-style: none; &::after { content: ''; display: block; height: 32 * 6px; } } .#{$namespace}-time-item { cursor: pointer; font-size: 12px; height: 32px; line-height: 32px; &:hover { color: $time-hover-color; background-color: $time-hover-background-color; } &.active { color: $time-active-color; background-color: $time-active-background-color; font-weight: 700; } &.disabled { cursor: not-allowed; color: $disabled-color; background-color: $disabled-background-color; } } } .#{$namespace}-time-option { cursor: pointer; padding: 8px 10px; font-size: 14px; line-height: 20px; &:hover { color: $time-hover-color; background-color: $time-hover-background-color; } &.active { color: $time-active-color; background-color: $time-active-background-color; font-weight: 700; } &.disabled { cursor: not-allowed; color: $disabled-color; background-color: $disabled-background-color; } } ================================================ FILE: lib/style/scrollbar.scss ================================================ @import './var.scss'; .#{$namespace}-scrollbar { height: 100%; &:hover { .#{$namespace}-scrollbar-track { opacity: 1; } } } .#{$namespace}-scrollbar-wrap { height: 100%; overflow-x: hidden; overflow-y: auto; } .#{$namespace}-scrollbar-track { position: absolute; top: 2px; right: 2px; bottom: 2px; width: 6px; z-index: 1; border-radius: 4px; opacity: 0; transition: opacity 0.24s ease-out; .#{$namespace}-scrollbar-thumb { position: absolute; width: 100%; height: 0; cursor: pointer; border-radius: inherit; background-color: rgba(144, 147, 153, 0.3); transition: background-color 0.3s; } } ================================================ FILE: lib/style/var.scss ================================================ $namespace: 'mx' !default; $default-color: #73879c !default; $primary-color: #1284e7 !default; $today-color: mix(#fff, $primary-color, 10%) !default; $popup-z-index: 2001 !default; $input-border-color: #ccc !default; $input-color: #555 !default; $input-hover-border-color: #409aff !default; $disabled-color: #ccc !default; $disabled-background-color: #f3f3f3 !default; $border-color: #e8e8e8 !default; $calendar-active-color: #fff !default; $calendar-active-background-color: $primary-color !default; $calendar-hover-color: $default-color !default; $calendar-hover-background-color: mix(#fff, $calendar-active-background-color, 95%) !default; $calendar-in-range-color: $default-color !default; $calendar-in-range-background-color: mix(#fff, $calendar-active-background-color, 85%) !default; $time-active-color: $primary-color !default; $time-active-background-color: transparent !default; $time-hover-color: $default-color !default; $time-hover-background-color: mix(#fff, $calendar-active-background-color, 95%) !default; $input-border-radius: 4px !default; $sidebar-margin-left: 100px !default; ================================================ FILE: lib/svg.ts ================================================ /// import IconCalendar from './icon/calendar.svg'; import IconClose from './icon/close.svg'; import IconTime from './icon/time.svg'; export { IconCalendar, IconClose, IconTime }; ================================================ FILE: lib/time/Columns.tsx ================================================ import { usePrefixClass } from '../context'; import { ScrollbarVertical } from '../scrollbar/ScrollbarVertical'; export type ColumnType = 'hour' | 'minute' | 'second' | 'ampm'; export type ColumnItem = { value: Date; text: string; }; export type ColumnOption = { type: ColumnType; list: ColumnItem[] }; export interface ColumnProps { options: ColumnOption[]; getClasses: (v: Date, type: string) => string; onSelect: (v: Date, type: string) => void; } export function Columns({ options, getClasses, onSelect }: ColumnProps) { const prefixClass = usePrefixClass(); const handleSelect = (evt: MouseEvent) => { const target = evt.target as HTMLElement; const currentTarget = evt.currentTarget as HTMLElement; if (target.tagName.toUpperCase() !== 'LI') return; const type = currentTarget.getAttribute('data-type')!; const col = parseInt(currentTarget.getAttribute('data-index')!, 10); const index = parseInt(target.getAttribute('data-index')!, 10); const value = options[col].list[index].value; onSelect(value, type); }; return (
{options.map((col, i) => (
    {col.list.map((item, j) => (
  • {item.text}
  • ))}
))}
); } ================================================ FILE: lib/time/FixedList.tsx ================================================ import { ScrollbarVertical } from '../scrollbar/ScrollbarVertical'; import { usePrefixClass } from '../context'; export interface FixedListItem { value: Date; text: string; } export interface FixedListProps { options: FixedListItem[]; getClasses: (v: Date, type: string) => string; onSelect: (v: Date, type: string) => void; } // TODO: 可否简化为 单列 Column export function FixedList(props: FixedListProps) { const prefixClass = usePrefixClass(); return ( {props.options.map((item) => (
props.onSelect(item.value, 'time')} > {item.text}
))}
); } ================================================ FILE: lib/time/TimePanel.tsx ================================================ import { format } from 'date-format-parse'; import { ref, onMounted, watch, watchEffect } from 'vue'; import { useLocale, usePrefixClass } from '../context'; import { getValidDate, startOfDay } from '../util/date'; import { getScrollParent } from '../util/dom'; import { Columns } from './Columns'; import { FixedList } from './FixedList'; import { getColumnOptions, getFixedOptions, TimePickerOptions } from './getOptions'; import { defineVueComponent, keys, withDefault } from '../vueUtil'; export interface TimePanelProps { value?: Date; defaultValue?: Date; format?: string; timeTitleFormat?: string; showTimeHeader?: boolean; disabledTime?: (v: Date, i?: number) => boolean; timePickerOptions?: TimePickerOptions; hourOptions?: number[]; minuteOptions?: number[]; secondOptions?: number[]; hourStep?: number; minuteStep?: number; secondStep?: number; showHour?: boolean; showMinute?: boolean; showSecond?: boolean; use12h?: boolean; scrollDuration?: number; onClickTitle?: (payload: MouseEvent) => void; ['onUpdate:value']?: (value: Date, type: string, index?: number) => void; } const scrollTo = (element: Element, to: number, duration = 0) => { // jump to target if duration zero if (duration <= 0) { requestAnimationFrame(() => { element.scrollTop = to; }); return; } const difference = to - element.scrollTop; const tick = (difference / duration) * 10; requestAnimationFrame(() => { const scrollTop = element.scrollTop + tick; if (scrollTop >= to) { element.scrollTop = to; return; } element.scrollTop = scrollTop; scrollTo(element, to, duration - 10); }); }; function TimePanel(originalProps: TimePanelProps) { const props = withDefault(originalProps, { defaultValue: startOfDay(new Date()), format: 'HH:mm:ss', timeTitleFormat: 'YYYY-MM-DD', disabledTime: () => false, scrollDuration: 100, }); const prefixClass = usePrefixClass(); const locale = useLocale(); const formatDate = (date: Date, fmt: string) => { return format(date, fmt, { locale: locale.value.formatLocale }); }; const innerValue = ref(new Date()); watchEffect(() => { innerValue.value = getValidDate(props.value!, props.defaultValue); }); const isDisabledTimes = (value: Array | number | Date) => { if (Array.isArray(value)) { return value.every((v) => props.disabledTime(new Date(v))); } return props.disabledTime(new Date(value)); }; const isDisabledHour = (date: Date) => { const value = new Date(date); return isDisabledTimes([ value.getTime(), value.setMinutes(0, 0, 0), value.setMinutes(59, 59, 999), ]); }; const isDisabledMinute = (date: Date) => { const value = new Date(date); return isDisabledTimes([value.getTime(), value.setSeconds(0, 0), value.setSeconds(59, 999)]); }; const isDisabledAMPM = (date: Date) => { const value = new Date(date); const minHour = value.getHours() < 12 ? 0 : 12; const maxHour = minHour + 11; return isDisabledTimes([ value.getTime(), value.setHours(minHour, 0, 0, 0), value.setHours(maxHour, 59, 59, 999), ]); }; const isDisabled = (date: Date, type: string) => { if (type === 'hour') { return isDisabledHour(date); } if (type === 'minute') { return isDisabledMinute(date); } if (type === 'ampm') { return isDisabledAMPM(date); } return isDisabledTimes(date); }; const handleSelect = (value: Date, type: string) => { if (!isDisabled(value, type)) { const date = new Date(value); innerValue.value = date; if (!isDisabledTimes(date)) { props['onUpdate:value']?.(date, type); } } }; const getClasses = (cellDate: Date, type: string) => { if (isDisabled(cellDate, type)) { return 'disabled'; } if (cellDate.getTime() === innerValue.value.getTime()) { return 'active'; } return ''; }; const container = ref(); const scrollToSelected = (duration: number) => { if (!container.value) return; const elements = container.value.querySelectorAll('.active'); for (let i = 0; i < elements.length; i++) { const element = elements[i] as HTMLElement; const scrollElement = getScrollParent(element, container.value); if (scrollElement) { const to = element.offsetTop; scrollTo(scrollElement, to, duration); } } }; onMounted(() => scrollToSelected(0)); watch(innerValue, () => scrollToSelected(props.scrollDuration), { flush: 'post' }); return () => { let content: JSX.Element; if (props.timePickerOptions) { content = ( ); } else { content = ( ); } return (
{props.showTimeHeader && (
)}
{content}
); }; } export const timePanelProps = keys()([ 'value', 'defaultValue', 'format', 'timeTitleFormat', 'showTimeHeader', 'disabledTime', 'timePickerOptions', 'hourOptions', 'minuteOptions', 'secondOptions', 'hourStep', 'minuteStep', 'secondStep', 'showHour', 'showMinute', 'showSecond', 'use12h', 'scrollDuration', 'onClickTitle', 'onUpdate:value', ]); export default defineVueComponent(TimePanel, timePanelProps); ================================================ FILE: lib/time/TimeRange.tsx ================================================ import { watchEffect, ref } from 'vue'; import { usePrefixClass } from '../context'; import { isValidRangeDate, startOfDay } from '../util/date'; import { defineVueComponent, withDefault } from '../vueUtil'; import TimePanel, { timePanelProps, TimePanelProps } from './TimePanel'; export interface TimeRangeProps extends Omit { value?: Date[]; defaultValue?: Date | Date[]; ['onUpdate:value']?: (value: Date[], type: string, index?: number) => void; } function TimeRange(originalProps: TimeRangeProps) { const props = withDefault(originalProps, { defaultValue: startOfDay(new Date()), disabledTime: () => false, }); const prefixClass = usePrefixClass(); const innerValue = ref([new Date(NaN), new Date(NaN)]); watchEffect(() => { if (isValidRangeDate(props.value)) { innerValue.value = props.value; } else { innerValue.value = [new Date(NaN), new Date(NaN)]; } }); const emitChange = (type: string, index: number) => { props['onUpdate:value']?.(innerValue.value, type === 'time' ? 'time-range' : type, index); }; const handleSelectStart = (date: Date, type: string) => { innerValue.value[0] = date; // check the NaN if (!(innerValue.value[1].getTime() >= date.getTime())) { innerValue.value[1] = date; } emitChange(type, 0); }; const handleSelectEnd = (date: Date, type: string) => { innerValue.value[1] = date; // check the NaN if (!(innerValue.value[0].getTime() <= date.getTime())) { innerValue.value[0] = date; } emitChange(type, 1); }; const disabledStartTime = (date: Date) => { return props.disabledTime(date, 0); }; const disabledEndTime = (date: Date) => { return date.getTime() < innerValue.value[0].getTime() || props.disabledTime(date, 1); }; return () => { const defaultValues = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue]; return (
); }; } export const timeRangeProps = timePanelProps; export default defineVueComponent(TimeRange, timeRangeProps); ================================================ FILE: lib/time/getOptions.ts ================================================ import { padNumber } from '../util/base'; import { ColumnOption } from './Columns'; import { FixedListItem } from './FixedList'; import { TimePanelProps } from './TimePanel'; function generateList({ length, step = 1, options, }: { length: number; step?: number; options?: number[]; }): number[] { if (Array.isArray(options)) { return options.filter((v) => v >= 0 && v < length); } if (step <= 0) { step = 1; } const arr = []; for (let i = 0; i < length; i += step) { arr.push(i); } return arr; } export function getColumnOptions(date: Date, options: TimePanelProps) { let { showHour, showMinute, showSecond, use12h } = options; const format = options.format || 'HH:mm:ss'; showHour = typeof showHour === 'boolean' ? showHour : /[HhKk]/.test(format); showMinute = typeof showMinute === 'boolean' ? showMinute : /m/.test(format); showSecond = typeof showSecond === 'boolean' ? showSecond : /s/.test(format); use12h = typeof use12h === 'boolean' ? use12h : /a/i.test(format); const columns: ColumnOption[] = []; const isPM = use12h && date.getHours() >= 12; if (showHour) { columns.push({ type: 'hour', list: generateList({ length: use12h ? 12 : 24, step: options.hourStep, options: options.hourOptions, }).map((num) => { const text = num === 0 && use12h ? '12' : padNumber(num); const value = new Date(date); value.setHours(isPM ? num + 12 : num); return { value, text }; }), }); } if (showMinute) { columns.push({ type: 'minute', list: generateList({ length: 60, step: options.minuteStep, options: options.minuteOptions, }).map((num) => { const value = new Date(date); value.setMinutes(num); return { value, text: padNumber(num) }; }), }); } if (showSecond) { columns.push({ type: 'second', list: generateList({ length: 60, step: options.secondStep, options: options.secondOptions, }).map((num) => { const value = new Date(date); value.setSeconds(num); return { value, text: padNumber(num) }; }), }); } if (use12h) { columns.push({ type: 'ampm', list: ['AM', 'PM'].map((text, i) => { const value = new Date(date); value.setHours((value.getHours() % 12) + i * 12); return { text, value }; }), }); } return columns; } function parseOption(time = '') { const values = time.split(':'); if (values.length >= 2) { const hours = parseInt(values[0], 10); const minutes = parseInt(values[1], 10); return { hours, minutes, }; } return null; } interface TimePickerFormat { start?: string; end?: string; step?: string; format?: string; } type TimePickerFunction = () => Array<{ value: Date; text: string }>; export type TimePickerOptions = TimePickerFormat | TimePickerFunction; export function getFixedOptions({ date, option, format, formatDate, }: { date: Date; option: TimePickerOptions; format: string; formatDate: (v: Date, fmt: string) => string; }) { const result: FixedListItem[] = []; if (typeof option === 'function') { return option() || []; } const start = parseOption(option.start); const end = parseOption(option.end); const step = parseOption(option.step); const fmt = option.format || format; if (start && end && step) { const startMinutes = start.minutes + start.hours * 60; const endMinutes = end.minutes + end.hours * 60; const stepMinutes = step.minutes + step.hours * 60; const len = Math.floor((endMinutes - startMinutes) / stepMinutes); for (let i = 0; i <= len; i++) { const timeMinutes = startMinutes + i * stepMinutes; const hours = Math.floor(timeMinutes / 60); const minutes = timeMinutes % 60; const value = new Date(date); value.setHours(hours, minutes, 0); result.push({ value, text: formatDate(value, fmt), }); } } return result; } ================================================ FILE: lib/type.ts ================================================ import { Locale as FormatLocale } from 'date-format-parse/es/locale'; export interface Locale { formatLocale: FormatLocale; // the calendar header, default formatLocale.weekdaysMin days?: string[]; // the calendar months, default formatLocale.monthsShort months?: string[]; // the calendar title of year yearFormat: string; // the calendar title of month monthFormat: string; // the calendar title of month before year monthBeforeYear: boolean; } export type PlainObject = Record; export type ClassValue = string | Record | Array; export type DateValue = string | number | Date | null | undefined | Array; export type PickerType = 'date' | 'year' | 'month' | 'week' | 'datetime' | 'time'; export type Valuetype = 'date' | 'format' | 'timestamp' | string; export type PanelType = 'date' | 'month' | 'year'; export interface Formatter { stringify?: (v: Date, fmt: string) => string; parse?: (v: string, fmt: string) => Date; getWeek?: (v: Date) => number; } ================================================ FILE: lib/util/base.ts ================================================ import { PlainObject } from '../type'; /** * chunk the array * @param {Array} arr * @param {Number} size */ export function chunk(arr: T[], size: number) { if (!Array.isArray(arr)) { return []; } const result = []; const len = arr.length; let i = 0; size = size || len; while (i < len) { result.push(arr.slice(i, (i += size))); } return result; } export function last(array?: T[]) { return Array.isArray(array) ? array[array.length - 1] : undefined; } /** * isObject * @param {*} obj * @returns {Boolean} */ export function isPlainObject(obj: unknown): obj is PlainObject { return Object.prototype.toString.call(obj) === '[object Object]'; } /** * pick object * @param {Object} obj * @param {Array|String} props */ export function pick(obj: T, props: K | K[]): Pick { const res = {} as Pick; if (!isPlainObject(obj)) return res; if (!Array.isArray(props)) { props = [props]; } props.forEach((prop) => { if (Object.prototype.hasOwnProperty.call(obj, prop)) { res[prop] = obj[prop]; } }); return res; } /** * deep merge two object without merging array * @param {object} target * @param {object} source */ export function mergeDeep, S extends Record>( target: T, source: S ): T { if (!isPlainObject(target)) { return {} as T; } let result = target; if (isPlainObject(source)) { Object.keys(source).forEach((key) => { let value = source[key]; const targetValue = target[key]; if (isPlainObject(value) && isPlainObject(targetValue)) { value = mergeDeep(targetValue, value); } result = { ...result, [key]: value }; }); } return result; } export function padNumber(value: string | number) { const num = parseInt(String(value), 10); return num < 10 ? `0${num}` : `${num}`; } type CamelCase = T extends `${infer F}-${infer R}` ? `${F}${Capitalize>}` : T; export type Camelize = { [K in keyof T as CamelCase]: T[K] }; export function camelcase(str: T) { const camelizeRE = /-(\w)/g; return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')) as CamelCase; } ================================================ FILE: lib/util/date.ts ================================================ // new Date(10, 0, 1) The year from 0 to 99 will be incremented by 1900 automatically. export function createDate(y: number, M = 0, d = 1, h = 0, m = 0, s = 0, ms = 0) { const date = new Date(y, M, d, h, m, s, ms); if (y < 100 && y >= 0) { date.setFullYear(y); } return date; } export function isValidDate(date: unknown): date is Date { return date instanceof Date && !isNaN(date.getTime()); } export function isValidRangeDate(dates: unknown): dates is [Date, Date] { return ( Array.isArray(dates) && dates.length === 2 && dates.every(isValidDate) && dates[0] <= dates[1] ); } export function isValidDates(dates: unknown): dates is Date[] { return Array.isArray(dates) && dates.every(isValidDate); } export function getValidDate(...values: Array): Date { if (values[0] !== undefined && values[0] !== null) { const date = new Date(values[0]); if (isValidDate(date)) { return date; } } const rest = values.slice(1); if (rest.length) { return getValidDate(...rest); } return new Date(); } export function startOfYear(value: Date) { const date = new Date(value); date.setMonth(0, 1); date.setHours(0, 0, 0, 0); return date; } export function startOfMonth(value: Date) { const date = new Date(value); date.setDate(1); date.setHours(0, 0, 0, 0); return date; } export function startOfDay(value: Date) { const date = new Date(value); date.setHours(0, 0, 0, 0); return date; } export function getCalendar({ firstDayOfWeek, year, month, }: { firstDayOfWeek: number; year: number; month: number; }) { const arr = []; // change to the last day of the last month const calendar = createDate(year, month, 0); const lastDayInLastMonth = calendar.getDate(); // getDay() 0 is Sunday, 1 is Monday const firstDayInLastMonth = lastDayInLastMonth - ((calendar.getDay() + 7 - firstDayOfWeek) % 7); for (let i = firstDayInLastMonth; i <= lastDayInLastMonth; i++) { arr.push(createDate(year, month, i - lastDayInLastMonth)); } // change to the last day of the current month calendar.setMonth(month + 1, 0); const lastDayInCurrentMonth = calendar.getDate(); for (let i = 1; i <= lastDayInCurrentMonth; i++) { arr.push(createDate(year, month, i)); } const lastMonthLength = lastDayInLastMonth - firstDayInLastMonth + 1; const nextMonthLength = 6 * 7 - lastMonthLength - lastDayInCurrentMonth; for (let i = 1; i <= nextMonthLength; i++) { arr.push(createDate(year, month, lastDayInCurrentMonth + i)); } return arr; } export function setMonth(dirtyDate: Date, dirtyMonth: number | ((v: number) => number)) { const date = new Date(dirtyDate); const month = typeof dirtyMonth === 'function' ? dirtyMonth(date.getMonth()) : Number(dirtyMonth); const year = date.getFullYear(); const daysInMonth = createDate(year, month + 1, 0).getDate(); const day = date.getDate(); date.setMonth(month, Math.min(day, daysInMonth)); return date; } export function setYear(dirtyDate: Date, dirtyYear: number | ((v: number) => number)) { const date = new Date(dirtyDate); const year = typeof dirtyYear === 'function' ? dirtyYear(date.getFullYear()) : dirtyYear; date.setFullYear(year); return date; } export function diffCalendarMonths(dirtyDateLeft: Date, dirtyDateRight: Date) { const dateRight = new Date(dirtyDateRight); const dateLeft = new Date(dirtyDateLeft); const yearDiff = dateRight.getFullYear() - dateLeft.getFullYear(); const monthDiff = dateRight.getMonth() - dateLeft.getMonth(); return yearDiff * 12 + monthDiff; } export function assignTime(target: Date, source: Date) { const date = new Date(target); const time = new Date(source); date.setHours(time.getHours(), time.getMinutes(), time.getSeconds()); return date; } ================================================ FILE: lib/util/dom.ts ================================================ /** * get the hidden element width, height * @param {HTMLElement} element dom */ export function getPopupElementSize(element: HTMLElement) { const originalDisplay = element.style.display; const originalVisibility = element.style.visibility; element.style.display = 'block'; element.style.visibility = 'hidden'; const styles = window.getComputedStyle(element); const width = element.offsetWidth + parseInt(styles.marginLeft, 10) + parseInt(styles.marginRight, 10); const height = element.offsetHeight + parseInt(styles.marginTop, 10) + parseInt(styles.marginBottom, 10); element.style.display = originalDisplay; element.style.visibility = originalVisibility; return { width, height }; } /** * get the popup position * @param {HTMLElement} el relative element * @param {Number} targetWidth target element's width * @param {Number} targetHeight target element's height * @param {Boolean} fixed */ export function getRelativePosition( el: HTMLElement, targetWidth: number, targetHeight: number, fixed: boolean ) { let left = 0; let top = 0; let offsetX = 0; let offsetY = 0; const relativeRect = el.getBoundingClientRect(); const dw = document.documentElement.clientWidth; const dh = document.documentElement.clientHeight; if (fixed) { offsetX = window.pageXOffset + relativeRect.left; offsetY = window.pageYOffset + relativeRect.top; } if (dw - relativeRect.left < targetWidth && relativeRect.right < targetWidth) { left = offsetX - relativeRect.left + 1; } else if (relativeRect.left + relativeRect.width / 2 <= dw / 2) { left = offsetX; } else { left = offsetX + relativeRect.width - targetWidth; } if (relativeRect.top <= targetHeight && dh - relativeRect.bottom <= targetHeight) { top = offsetY + dh - relativeRect.top - targetHeight; } else if (relativeRect.top + relativeRect.height / 2 <= dh / 2) { top = offsetY + relativeRect.height; } else { top = offsetY - targetHeight; } return { left: `${left}px`, top: `${top}px` }; } export function getScrollParent(node: Element | null, until = document.body): Element | null { if (!node || node === until) { return null; } const style = (value: Element, prop: string) => getComputedStyle(value, null).getPropertyValue(prop); const regex = /(auto|scroll)/; const scroll = regex.test( style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x') ); return scroll ? node : getScrollParent(node.parentElement, until); } let scrollBarWidth: number; export function getScrollbarWidth() { if (typeof window === 'undefined') return 0; if (scrollBarWidth !== undefined) return scrollBarWidth; const outer = document.createElement('div'); outer.style.visibility = 'hidden'; outer.style.overflow = 'scroll'; outer.style.width = '100px'; outer.style.position = 'absolute'; outer.style.top = '-9999px'; document.body.appendChild(outer); const inner = document.createElement('div'); inner.style.width = '100%'; outer.appendChild(inner); scrollBarWidth = outer.offsetWidth - inner.offsetWidth; (outer.parentNode as HTMLElement).removeChild(outer); return scrollBarWidth; } export const mousedownEvent = 'ontouchend' in document ? 'touchstart' : 'mousedown'; ================================================ FILE: lib/util/throttle.ts ================================================ /* istanbul ignore file */ export function rafThrottle void>(fn: T) { let isRunning = false; return function fnBinfRaf(this: any, ...args: Parameters) { if (isRunning) return; isRunning = true; requestAnimationFrame(() => { isRunning = false; fn.apply(this, args); }); }; } ================================================ FILE: lib/vueUtil.ts ================================================ import { DefineComponent, PropType, SetupContext, RenderFunction } from 'vue'; import { camelcase, Camelize } from './util/base'; type NonUndefinedable = T extends undefined ? never : T; export type DefinePropsToOptions = { [K in keyof T]-?: Record extends Pick ? { type: PropType> } : { type: PropType; required: true }; }; export function defineVueComponent( setup: (props: Readonly, ctx: SetupContext) => RawBindings | RenderFunction, props: MustInclude ): DefineComponent, RawBindings> { return { setup, name: setup.name, props } as any; } export function withDefault, DefaultProps extends Partial>( props: Props, defaultProps: DefaultProps ): Props & DefaultProps { const result = new Proxy(props, { get(target: Props, key: any) { const value = target[key]; if (value !== undefined) { return value; } return defaultProps[key]; }, }); return result as Props & DefaultProps; } type ValueOf = T[keyof T]; type NonEmptyArray = [T, ...T[]]; type MustInclude = [T] extends [ValueOf] ? U : never; export const keys = () => >(props: MustInclude) => props; export const resolveProps = >( obj: T, booleanKeys: string[] ): Camelize => { const props = {} as any; for (const key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { const camelizeKey = camelcase(key); let value = obj[key] as any; // resolve empty string to true if (booleanKeys.indexOf(camelizeKey) !== -1 && value === '') { value = true; } props[camelizeKey] = value; } } return props; }; ================================================ FILE: locale/af.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/af.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'], monthsShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], weekdays: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], weekdaysShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], weekdaysMin: ['So', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Sa'], firstDayOfWeek: 0, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('af', lang); export { lang as default }; ================================================ FILE: locale/af.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.af = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'], monthsShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], weekdays: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], weekdaysShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], weekdaysMin: ['So', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Sa'], firstDayOfWeek: 0, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('af', lang); return lang; }))); ================================================ FILE: locale/ar-dz.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ar-dz.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], monthsShort: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], weekdays: ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekdaysShort: ['احد', 'اثنين', 'ثلاثاء', 'اربعاء', 'خميس', 'جمعة', 'سبت'], weekdaysMin: ['أح', 'إث', 'ثلا', 'أر', 'خم', 'جم', 'سب'], firstDayOfWeek: 0, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ar-dz', lang); export { lang as default }; ================================================ FILE: locale/ar-dz.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.arDz = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], monthsShort: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], weekdays: ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekdaysShort: ['احد', 'اثنين', 'ثلاثاء', 'اربعاء', 'خميس', 'جمعة', 'سبت'], weekdaysMin: ['أح', 'إث', 'ثلا', 'أر', 'خم', 'جم', 'سب'], firstDayOfWeek: 0, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ar-dz', lang); return lang; }))); ================================================ FILE: locale/ar-sa.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ar-sa.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], monthsShort: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], weekdays: ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekdaysShort: ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], weekdaysMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ar-sa', lang); export { lang as default }; ================================================ FILE: locale/ar-sa.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.arSa = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], monthsShort: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], weekdays: ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekdaysShort: ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], weekdaysMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ar-sa', lang); return lang; }))); ================================================ FILE: locale/ar.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ar.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], monthsShort: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], weekdays: ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekdaysShort: ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], weekdaysMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], firstDayOfWeek: 6, firstWeekContainsDate: 12 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ar', lang); export { lang as default }; ================================================ FILE: locale/ar.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ar = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], monthsShort: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], weekdays: ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekdaysShort: ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], weekdaysMin: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], firstDayOfWeek: 6, firstWeekContainsDate: 12 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ar', lang); return lang; }))); ================================================ FILE: locale/az.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/az.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'], monthsShort: ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], weekdays: ['Bazar', 'Bazar ertəsi', 'Çərşənbə axşamı', 'Çərşənbə', 'Cümə axşamı', 'Cümə', 'Şənbə'], weekdaysShort: ['Baz', 'BzE', 'ÇAx', 'Çər', 'CAx', 'Cüm', 'Şən'], weekdaysMin: ['Bz', 'BE', 'ÇA', 'Çə', 'CA', 'Cü', 'Şə'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('az', lang); export { lang as default }; ================================================ FILE: locale/az.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.az = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'], monthsShort: ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], weekdays: ['Bazar', 'Bazar ertəsi', 'Çərşənbə axşamı', 'Çərşənbə', 'Cümə axşamı', 'Cümə', 'Şənbə'], weekdaysShort: ['Baz', 'BzE', 'ÇAx', 'Çər', 'CAx', 'Cüm', 'Şən'], weekdaysMin: ['Bz', 'BE', 'ÇA', 'Çə', 'CA', 'Cü', 'Şə'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('az', lang); return lang; }))); ================================================ FILE: locale/be.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/be.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['студзень', 'люты', 'сакавік', 'красавік', 'травень', 'чэрвень', 'ліпень', 'жнівень', 'верасень', 'кастрычнік', 'лістапад', 'снежань'], monthsShort: ['студ', 'лют', 'сак', 'крас', 'трав', 'чэрв', 'ліп', 'жнів', 'вер', 'каст', 'ліст', 'снеж'], weekdays: ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'], weekdaysShort: ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'], weekdaysMin: ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('be', lang); export { lang as default }; ================================================ FILE: locale/be.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.be = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['студзень', 'люты', 'сакавік', 'красавік', 'травень', 'чэрвень', 'ліпень', 'жнівень', 'верасень', 'кастрычнік', 'лістапад', 'снежань'], monthsShort: ['студ', 'лют', 'сак', 'крас', 'трав', 'чэрв', 'ліп', 'жнів', 'вер', 'каст', 'ліст', 'снеж'], weekdays: ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'], weekdaysShort: ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'], weekdaysMin: ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('be', lang); return lang; }))); ================================================ FILE: locale/bg.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/bg.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', 'ноември', 'декември'], monthsShort: ['янр', 'фев', 'мар', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'], weekdays: ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота'], weekdaysShort: ['нед', 'пон', 'вто', 'сря', 'чет', 'пет', 'съб'], weekdaysMin: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('bg', lang); export { lang as default }; ================================================ FILE: locale/bg.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.bg = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', 'ноември', 'декември'], monthsShort: ['янр', 'фев', 'мар', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'], weekdays: ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота'], weekdaysShort: ['нед', 'пон', 'вто', 'сря', 'чет', 'пет', 'съб'], weekdaysMin: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('bg', lang); return lang; }))); ================================================ FILE: locale/bm.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/bm.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Zanwuyekalo', 'Fewuruyekalo', 'Marisikalo', 'Awirilikalo', 'Mɛkalo', 'Zuwɛnkalo', 'Zuluyekalo', 'Utikalo', 'Sɛtanburukalo', 'ɔkutɔburukalo', 'Nowanburukalo', 'Desanburukalo'], monthsShort: ['Zan', 'Few', 'Mar', 'Awi', 'Mɛ', 'Zuw', 'Zul', 'Uti', 'Sɛt', 'ɔku', 'Now', 'Des'], weekdays: ['Kari', 'Ntɛnɛn', 'Tarata', 'Araba', 'Alamisa', 'Juma', 'Sibiri'], weekdaysShort: ['Kar', 'Ntɛ', 'Tar', 'Ara', 'Ala', 'Jum', 'Sib'], weekdaysMin: ['Ka', 'Nt', 'Ta', 'Ar', 'Al', 'Ju', 'Si'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('bm', lang); export { lang as default }; ================================================ FILE: locale/bm.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.bm = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Zanwuyekalo', 'Fewuruyekalo', 'Marisikalo', 'Awirilikalo', 'Mɛkalo', 'Zuwɛnkalo', 'Zuluyekalo', 'Utikalo', 'Sɛtanburukalo', 'ɔkutɔburukalo', 'Nowanburukalo', 'Desanburukalo'], monthsShort: ['Zan', 'Few', 'Mar', 'Awi', 'Mɛ', 'Zuw', 'Zul', 'Uti', 'Sɛt', 'ɔku', 'Now', 'Des'], weekdays: ['Kari', 'Ntɛnɛn', 'Tarata', 'Araba', 'Alamisa', 'Juma', 'Sibiri'], weekdaysShort: ['Kar', 'Ntɛ', 'Tar', 'Ara', 'Ala', 'Jum', 'Sib'], weekdaysMin: ['Ka', 'Nt', 'Ta', 'Ar', 'Al', 'Ju', 'Si'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('bm', lang); return lang; }))); ================================================ FILE: locale/bn.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/bn.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['জানুয়ারী', 'ফেব্রুয়ারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'], monthsShort: ['জানু', 'ফেব', 'মার্চ', 'এপ্র', 'মে', 'জুন', 'জুল', 'আগ', 'সেপ্ট', 'অক্টো', 'নভে', 'ডিসে'], weekdays: ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], weekdaysShort: ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], weekdaysMin: ['রবি', 'সোম', 'মঙ্গ', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('bn', lang); export { lang as default }; ================================================ FILE: locale/bn.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.bn = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['জানুয়ারী', 'ফেব্রুয়ারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'], monthsShort: ['জানু', 'ফেব', 'মার্চ', 'এপ্র', 'মে', 'জুন', 'জুল', 'আগ', 'সেপ্ট', 'অক্টো', 'নভে', 'ডিসে'], weekdays: ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], weekdaysShort: ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], weekdaysMin: ['রবি', 'সোম', 'মঙ্গ', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('bn', lang); return lang; }))); ================================================ FILE: locale/ca.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ca.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre'], monthsShort: ['gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.'], weekdays: ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], weekdaysShort: ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], weekdaysMin: ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ca', lang); export { lang as default }; ================================================ FILE: locale/ca.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ca = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre'], monthsShort: ['gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.'], weekdays: ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], weekdaysShort: ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], weekdaysMin: ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ca', lang); return lang; }))); ================================================ FILE: locale/cs.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/cs.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'], monthsShort: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], weekdays: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], weekdaysShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], weekdaysMin: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('cs', lang); export { lang as default }; ================================================ FILE: locale/cs.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.cs = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'], monthsShort: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], weekdays: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], weekdaysShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], weekdaysMin: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('cs', lang); return lang; }))); ================================================ FILE: locale/cy.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/cy.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr'], monthsShort: ['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Aws', 'Med', 'Hyd', 'Tach', 'Rhag'], weekdays: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'], weekdaysShort: ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'], weekdaysMin: ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'], firstDayOfWeek: 0, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('cy', lang); export { lang as default }; ================================================ FILE: locale/cy.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.cy = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr'], monthsShort: ['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Aws', 'Med', 'Hyd', 'Tach', 'Rhag'], weekdays: ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'], weekdaysShort: ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'], weekdaysMin: ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'], firstDayOfWeek: 0, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('cy', lang); return lang; }))); ================================================ FILE: locale/da.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/da.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], weekdays: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], weekdaysShort: ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'], weekdaysMin: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('da', lang); export { lang as default }; ================================================ FILE: locale/da.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.da = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], weekdays: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], weekdaysShort: ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'], weekdaysMin: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('da', lang); return lang; }))); ================================================ FILE: locale/de.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/de.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], monthsShort: ['Jan', 'Feb', 'März', 'Apr', 'Mai', 'Juni', 'Juli', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], weekdays: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], weekdaysShort: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], weekdaysMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('de', lang); export { lang as default }; ================================================ FILE: locale/de.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.de = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], monthsShort: ['Jan', 'Feb', 'März', 'Apr', 'Mai', 'Juni', 'Juli', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], weekdays: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], weekdaysShort: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], weekdaysMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('de', lang); return lang; }))); ================================================ FILE: locale/el.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/el.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'], monthsShort: ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'], weekdays: ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'], weekdaysShort: ['Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ'], weekdaysMin: ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('el', lang); export { lang as default }; ================================================ FILE: locale/el.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.el = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'], monthsShort: ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'], weekdays: ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'], weekdaysShort: ['Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ'], weekdaysMin: ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('el', lang); return lang; }))); ================================================ FILE: locale/en.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/en.es.js ================================================ var locale = { months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], firstDayOfWeek: 0, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; export { lang as default }; ================================================ FILE: locale/en.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.en = factory())); }(this, (function () { 'use strict'; var locale = { months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], firstDayOfWeek: 0, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; return lang; }))); ================================================ FILE: locale/eo.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/eo.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['januaro', 'februaro', 'marto', 'aprilo', 'majo', 'junio', 'julio', 'aŭgusto', 'septembro', 'oktobro', 'novembro', 'decembro'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aŭg', 'sep', 'okt', 'nov', 'dec'], weekdays: ['dimanĉo', 'lundo', 'mardo', 'merkredo', 'ĵaŭdo', 'vendredo', 'sabato'], weekdaysShort: ['dim', 'lun', 'mard', 'merk', 'ĵaŭ', 'ven', 'sab'], weekdaysMin: ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('eo', lang); export { lang as default }; ================================================ FILE: locale/eo.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.eo = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['januaro', 'februaro', 'marto', 'aprilo', 'majo', 'junio', 'julio', 'aŭgusto', 'septembro', 'oktobro', 'novembro', 'decembro'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aŭg', 'sep', 'okt', 'nov', 'dec'], weekdays: ['dimanĉo', 'lundo', 'mardo', 'merkredo', 'ĵaŭdo', 'vendredo', 'sabato'], weekdaysShort: ['dim', 'lun', 'mard', 'merk', 'ĵaŭ', 'ven', 'sab'], weekdaysMin: ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('eo', lang); return lang; }))); ================================================ FILE: locale/es.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/es.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'], monthsShort: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'], weekdays: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], weekdaysShort: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'], weekdaysMin: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'], firstDayOfWeek: 1, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('es', lang); export { lang as default }; ================================================ FILE: locale/es.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.es = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'], monthsShort: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'], weekdays: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], weekdaysShort: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'], weekdaysMin: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'], firstDayOfWeek: 1, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('es', lang); return lang; }))); ================================================ FILE: locale/et.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/et.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember'], monthsShort: ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'], weekdays: ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev'], weekdaysShort: ['P', 'E', 'T', 'K', 'N', 'R', 'L'], weekdaysMin: ['P', 'E', 'T', 'K', 'N', 'R', 'L'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('et', lang); export { lang as default }; ================================================ FILE: locale/et.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.et = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember'], monthsShort: ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'], weekdays: ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev'], weekdaysShort: ['P', 'E', 'T', 'K', 'N', 'R', 'L'], weekdaysMin: ['P', 'E', 'T', 'K', 'N', 'R', 'L'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('et', lang); return lang; }))); ================================================ FILE: locale/fi.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/fi.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu'], monthsShort: ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'], weekdays: ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'], weekdaysShort: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], weekdaysMin: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('fi', lang); export { lang as default }; ================================================ FILE: locale/fi.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.fi = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu'], monthsShort: ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'], weekdays: ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'], weekdaysShort: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], weekdaysMin: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('fi', lang); return lang; }))); ================================================ FILE: locale/fr.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/fr.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'], monthsShort: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'], weekdays: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], weekdaysShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], weekdaysMin: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'], firstDayOfWeek: 1, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('fr', lang); export { lang as default }; ================================================ FILE: locale/fr.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.fr = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'], monthsShort: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'], weekdays: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], weekdaysShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], weekdaysMin: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'], firstDayOfWeek: 1, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('fr', lang); return lang; }))); ================================================ FILE: locale/gl.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/gl.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', 'outubro', 'novembro', 'decembro'], monthsShort: ['xan.', 'feb.', 'mar.', 'abr.', 'mai.', 'xuñ.', 'xul.', 'ago.', 'set.', 'out.', 'nov.', 'dec.'], weekdays: ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado'], weekdaysShort: ['dom.', 'lun.', 'mar.', 'mér.', 'xov.', 'ven.', 'sáb.'], weekdaysMin: ['do', 'lu', 'ma', 'mé', 'xo', 've', 'sá'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('gl', lang); export { lang as default }; ================================================ FILE: locale/gl.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.gl = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', 'outubro', 'novembro', 'decembro'], monthsShort: ['xan.', 'feb.', 'mar.', 'abr.', 'mai.', 'xuñ.', 'xul.', 'ago.', 'set.', 'out.', 'nov.', 'dec.'], weekdays: ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado'], weekdaysShort: ['dom.', 'lun.', 'mar.', 'mér.', 'xov.', 'ven.', 'sáb.'], weekdaysMin: ['do', 'lu', 'ma', 'mé', 'xo', 've', 'sá'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('gl', lang); return lang; }))); ================================================ FILE: locale/gu.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/gu.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['જાન્યુઆરી', 'ફેબ્રુઆરી', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટેમ્બર', 'ઑક્ટ્બર', 'નવેમ્બર', 'ડિસેમ્બર'], monthsShort: ['જાન્યુ.', 'ફેબ્રુ.', 'માર્ચ', 'એપ્રિ.', 'મે', 'જૂન', 'જુલા.', 'ઑગ.', 'સપ્ટે.', 'ઑક્ટ્.', 'નવે.', 'ડિસે.'], weekdays: ['રવિવાર', 'સોમવાર', 'મંગળવાર', 'બુધ્વાર', 'ગુરુવાર', 'શુક્રવાર', 'શનિવાર'], weekdaysShort: ['રવિ', 'સોમ', 'મંગળ', 'બુધ્', 'ગુરુ', 'શુક્ર', 'શનિ'], weekdaysMin: ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('gu', lang); export { lang as default }; ================================================ FILE: locale/gu.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.gu = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['જાન્યુઆરી', 'ફેબ્રુઆરી', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટેમ્બર', 'ઑક્ટ્બર', 'નવેમ્બર', 'ડિસેમ્બર'], monthsShort: ['જાન્યુ.', 'ફેબ્રુ.', 'માર્ચ', 'એપ્રિ.', 'મે', 'જૂન', 'જુલા.', 'ઑગ.', 'સપ્ટે.', 'ઑક્ટ્.', 'નવે.', 'ડિસે.'], weekdays: ['રવિવાર', 'સોમવાર', 'મંગળવાર', 'બુધ્વાર', 'ગુરુવાર', 'શુક્રવાર', 'શનિવાર'], weekdaysShort: ['રવિ', 'સોમ', 'મંગળ', 'બુધ્', 'ગુરુ', 'શુક્ર', 'શનિ'], weekdaysMin: ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('gu', lang); return lang; }))); ================================================ FILE: locale/he.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/he.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'], monthsShort: ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'], weekdays: ['ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת'], weekdaysShort: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'], weekdaysMin: ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('he', lang); export { lang as default }; ================================================ FILE: locale/he.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.he = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'], monthsShort: ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'], weekdays: ['ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת'], weekdaysShort: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'], weekdaysMin: ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('he', lang); return lang; }))); ================================================ FILE: locale/hi.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/hi.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], monthsShort: ['जन.', 'फ़र.', 'मार्च', 'अप्रै.', 'मई', 'जून', 'जुल.', 'अग.', 'सित.', 'अक्टू.', 'नव.', 'दिस.'], weekdays: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'], weekdaysShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरू', 'शुक्र', 'शनि'], weekdaysMin: ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('hi', lang); export { lang as default }; ================================================ FILE: locale/hi.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.hi = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], monthsShort: ['जन.', 'फ़र.', 'मार्च', 'अप्रै.', 'मई', 'जून', 'जुल.', 'अग.', 'सित.', 'अक्टू.', 'नव.', 'दिस.'], weekdays: ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'], weekdaysShort: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरू', 'शुक्र', 'शनि'], weekdaysMin: ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('hi', lang); return lang; }))); ================================================ FILE: locale/hr.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/hr.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'], monthsShort: ['sij.', 'velj.', 'ožu.', 'tra.', 'svi.', 'lip.', 'srp.', 'kol.', 'ruj.', 'lis.', 'stu.', 'pro.'], weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('hr', lang); export { lang as default }; ================================================ FILE: locale/hr.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.hr = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'], monthsShort: ['sij.', 'velj.', 'ožu.', 'tra.', 'svi.', 'lip.', 'srp.', 'kol.', 'ruj.', 'lis.', 'stu.', 'pro.'], weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('hr', lang); return lang; }))); ================================================ FILE: locale/hu.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/hu.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december'], monthsShort: ['jan', 'feb', 'márc', 'ápr', 'máj', 'jún', 'júl', 'aug', 'szept', 'okt', 'nov', 'dec'], weekdays: ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'], weekdaysShort: ['vas', 'hét', 'kedd', 'sze', 'csüt', 'pén', 'szo'], weekdaysMin: ['v', 'h', 'k', 'sze', 'cs', 'p', 'szo'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('hu', lang); export { lang as default }; ================================================ FILE: locale/hu.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.hu = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december'], monthsShort: ['jan', 'feb', 'márc', 'ápr', 'máj', 'jún', 'júl', 'aug', 'szept', 'okt', 'nov', 'dec'], weekdays: ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'], weekdaysShort: ['vas', 'hét', 'kedd', 'sze', 'csüt', 'pén', 'szo'], weekdaysMin: ['v', 'h', 'k', 'sze', 'cs', 'p', 'szo'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker__default['default'].locale('hu', lang); return lang; }))); ================================================ FILE: locale/id.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/id.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'], monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agt', 'Sep', 'Okt', 'Nov', 'Des'], weekdays: ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'], weekdaysShort: ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'], weekdaysMin: ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('id', lang); export { lang as default }; ================================================ FILE: locale/id.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.id = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'], monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agt', 'Sep', 'Okt', 'Nov', 'Des'], weekdays: ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'], weekdaysShort: ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'], weekdaysMin: ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('id', lang); return lang; }))); ================================================ FILE: locale/is.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/is.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', 'nóvember', 'desember'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'maí', 'jún', 'júl', 'ágú', 'sep', 'okt', 'nóv', 'des'], weekdays: ['sunnudagur', 'mánudagur', 'þriðjudagur', 'miðvikudagur', 'fimmtudagur', 'föstudagur', 'laugardagur'], weekdaysShort: ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'], weekdaysMin: ['Su', 'Má', 'Þr', 'Mi', 'Fi', 'Fö', 'La'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('is', lang); export { lang as default }; ================================================ FILE: locale/is.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.is = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', 'nóvember', 'desember'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'maí', 'jún', 'júl', 'ágú', 'sep', 'okt', 'nóv', 'des'], weekdays: ['sunnudagur', 'mánudagur', 'þriðjudagur', 'miðvikudagur', 'fimmtudagur', 'föstudagur', 'laugardagur'], weekdaysShort: ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'], weekdaysMin: ['Su', 'Má', 'Þr', 'Mi', 'Fi', 'Fö', 'La'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('is', lang); return lang; }))); ================================================ FILE: locale/it.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/it.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'], monthsShort: ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], weekdays: ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], weekdaysShort: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], weekdaysMin: ['do', 'lu', 'ma', 'me', 'gi', 've', 'sa'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('it', lang); export { lang as default }; ================================================ FILE: locale/it.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.it = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'], monthsShort: ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], weekdays: ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], weekdaysShort: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], weekdaysMin: ['do', 'lu', 'ma', 'me', 'gi', 've', 'sa'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('it', lang); return lang; }))); ================================================ FILE: locale/ja.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ja.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], weekdays: ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'], weekdaysShort: ['日', '月', '火', '水', '木', '金', '土'], weekdaysMin: ['日', '月', '火', '水', '木', '金', '土'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('ja', lang); export { lang as default }; ================================================ FILE: locale/ja.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ja = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], weekdays: ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'], weekdaysShort: ['日', '月', '火', '水', '木', '金', '土'], weekdaysMin: ['日', '月', '火', '水', '木', '金', '土'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker__default['default'].locale('ja', lang); return lang; }))); ================================================ FILE: locale/ka.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ka.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'], monthsShort: ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'], weekdays: ['კვირა', 'ორშაბათი', 'სამშაბათი', 'ოთხშაბათი', 'ხუთშაბათი', 'პარასკევი', 'შაბათი'], weekdaysShort: ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'], weekdaysMin: ['კვ', 'ორ', 'სა', 'ოთ', 'ხუ', 'პა', 'შა'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ka', lang); export { lang as default }; ================================================ FILE: locale/ka.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ka = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'], monthsShort: ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'], weekdays: ['კვირა', 'ორშაბათი', 'სამშაბათი', 'ოთხშაბათი', 'ხუთშაბათი', 'პარასკევი', 'შაბათი'], weekdaysShort: ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'], weekdaysMin: ['კვ', 'ორ', 'სა', 'ოთ', 'ხუ', 'პა', 'შა'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ka', lang); return lang; }))); ================================================ FILE: locale/kk.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/kk.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['қаңтар', 'ақпан', 'наурыз', 'сәуір', 'мамыр', 'маусым', 'шілде', 'тамыз', 'қыркүйек', 'қазан', 'қараша', 'желтоқсан'], monthsShort: ['қаң', 'ақп', 'нау', 'сәу', 'мам', 'мау', 'шіл', 'там', 'қыр', 'қаз', 'қар', 'жел'], weekdays: ['жексенбі', 'дүйсенбі', 'сейсенбі', 'сәрсенбі', 'бейсенбі', 'жұма', 'сенбі'], weekdaysShort: ['жек', 'дүй', 'сей', 'сәр', 'бей', 'жұм', 'сен'], weekdaysMin: ['жк', 'дй', 'сй', 'ср', 'бй', 'жм', 'сн'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('kk', lang); export { lang as default }; ================================================ FILE: locale/kk.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.kk = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['қаңтар', 'ақпан', 'наурыз', 'сәуір', 'мамыр', 'маусым', 'шілде', 'тамыз', 'қыркүйек', 'қазан', 'қараша', 'желтоқсан'], monthsShort: ['қаң', 'ақп', 'нау', 'сәу', 'мам', 'мау', 'шіл', 'там', 'қыр', 'қаз', 'қар', 'жел'], weekdays: ['жексенбі', 'дүйсенбі', 'сейсенбі', 'сәрсенбі', 'бейсенбі', 'жұма', 'сенбі'], weekdaysShort: ['жек', 'дүй', 'сей', 'сәр', 'бей', 'жұм', 'сен'], weekdaysMin: ['жк', 'дй', 'сй', 'ср', 'бй', 'жм', 'сн'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('kk', lang); return lang; }))); ================================================ FILE: locale/ko.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ko.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { 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월'], weekdays: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], weekdaysShort: ['일', '월', '화', '수', '목', '금', '토'], weekdaysMin: ['일', '월', '화', '수', '목', '금', '토'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('ko', lang); export { lang as default }; ================================================ FILE: locale/ko.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ko = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { 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월'], weekdays: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], weekdaysShort: ['일', '월', '화', '수', '목', '금', '토'], weekdaysMin: ['일', '월', '화', '수', '목', '금', '토'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker__default['default'].locale('ko', lang); return lang; }))); ================================================ FILE: locale/lt.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/lt.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis'], monthsShort: ['sau', 'vas', 'kov', 'bal', 'geg', 'bir', 'lie', 'rgp', 'rgs', 'spa', 'lap', 'grd'], weekdays: ['sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', 'šeštadienis'], weekdaysShort: ['Sek', 'Pir', 'Ant', 'Tre', 'Ket', 'Pen', 'Šeš'], weekdaysMin: ['S', 'P', 'A', 'T', 'K', 'Pn', 'Š'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('lt', lang); export { lang as default }; ================================================ FILE: locale/lt.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.lt = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis'], monthsShort: ['sau', 'vas', 'kov', 'bal', 'geg', 'bir', 'lie', 'rgp', 'rgs', 'spa', 'lap', 'grd'], weekdays: ['sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', 'šeštadienis'], weekdaysShort: ['Sek', 'Pir', 'Ant', 'Tre', 'Ket', 'Pen', 'Šeš'], weekdaysMin: ['S', 'P', 'A', 'T', 'K', 'Pn', 'Š'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('lt', lang); return lang; }))); ================================================ FILE: locale/lv.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/lv.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', 'septembris', 'oktobris', 'novembris', 'decembris'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'mai', 'jūn', 'jūl', 'aug', 'sep', 'okt', 'nov', 'dec'], weekdays: ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena'], weekdaysShort: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'], weekdaysMin: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('lv', lang); export { lang as default }; ================================================ FILE: locale/lv.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.lv = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', 'septembris', 'oktobris', 'novembris', 'decembris'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'mai', 'jūn', 'jūl', 'aug', 'sep', 'okt', 'nov', 'dec'], weekdays: ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena'], weekdaysShort: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'], weekdaysMin: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker__default['default'].locale('lv', lang); return lang; }))); ================================================ FILE: locale/mk.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/mk.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['јануари', 'февруари', 'март', 'април', 'мај', 'јуни', 'јули', 'август', 'септември', 'октомври', 'ноември', 'декември'], monthsShort: ['јан', 'фев', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'ное', 'дек'], weekdays: ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], weekdaysShort: ['нед', 'пон', 'вто', 'сре', 'чет', 'пет', 'саб'], weekdaysMin: ['нe', 'пo', 'вт', 'ср', 'че', 'пе', 'сa'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('mk', lang); export { lang as default }; ================================================ FILE: locale/mk.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.mk = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['јануари', 'февруари', 'март', 'април', 'мај', 'јуни', 'јули', 'август', 'септември', 'октомври', 'ноември', 'декември'], monthsShort: ['јан', 'фев', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'ное', 'дек'], weekdays: ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], weekdaysShort: ['нед', 'пон', 'вто', 'сре', 'чет', 'пет', 'саб'], weekdaysMin: ['нe', 'пo', 'вт', 'ср', 'че', 'пе', 'сa'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('mk', lang); return lang; }))); ================================================ FILE: locale/ms.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ms.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', 'November', 'Disember'], monthsShort: ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogs', 'Sep', 'Okt', 'Nov', 'Dis'], weekdays: ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], weekdaysShort: ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], weekdaysMin: ['Ah', 'Is', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ms', lang); export { lang as default }; ================================================ FILE: locale/ms.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ms = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', 'November', 'Disember'], monthsShort: ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogs', 'Sep', 'Okt', 'Nov', 'Dis'], weekdays: ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], weekdaysShort: ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], weekdaysMin: ['Ah', 'Is', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ms', lang); return lang; }))); ================================================ FILE: locale/nb.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/nb.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'], monthsShort: ['jan.', 'feb.', 'mars', 'april', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], weekdays: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], weekdaysShort: ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'], weekdaysMin: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('nb', lang); export { lang as default }; ================================================ FILE: locale/nb.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.nb = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'], monthsShort: ['jan.', 'feb.', 'mars', 'april', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], weekdays: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], weekdaysShort: ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'], weekdaysMin: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('nb', lang); return lang; }))); ================================================ FILE: locale/nl-be.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/nl-be.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], weekdays: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], weekdaysShort: ['zo.', 'ma.', 'di.', 'wo.', 'do.', 'vr.', 'za.'], weekdaysMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('nl-be', lang); export { lang as default }; ================================================ FILE: locale/nl-be.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.nlBe = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], weekdays: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], weekdaysShort: ['zo.', 'ma.', 'di.', 'wo.', 'do.', 'vr.', 'za.'], weekdaysMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('nl-be', lang); return lang; }))); ================================================ FILE: locale/nl.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/nl.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], weekdays: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], weekdaysShort: ['zo.', 'ma.', 'di.', 'wo.', 'do.', 'vr.', 'za.'], weekdaysMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('nl', lang); export { lang as default }; ================================================ FILE: locale/nl.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.nl = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], weekdays: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], weekdaysShort: ['zo.', 'ma.', 'di.', 'wo.', 'do.', 'vr.', 'za.'], weekdaysMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('nl', lang); return lang; }))); ================================================ FILE: locale/pl.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/pl.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień'], monthsShort: ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], weekdays: ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], weekdaysShort: ['ndz', 'pon', 'wt', 'śr', 'czw', 'pt', 'sob'], weekdaysMin: ['Nd', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('pl', lang); export { lang as default }; ================================================ FILE: locale/pl.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.pl = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień'], monthsShort: ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], weekdays: ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], weekdaysShort: ['ndz', 'pon', 'wt', 'śr', 'czw', 'pt', 'sob'], weekdaysMin: ['Nd', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('pl', lang); return lang; }))); ================================================ FILE: locale/pt-br.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/pt-br.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], weekdays: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'], weekdaysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'], weekdaysMin: ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sá'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('pt-br', lang); export { lang as default }; ================================================ FILE: locale/pt-br.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ptBr = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], weekdays: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'], weekdaysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'], weekdaysMin: ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sá'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('pt-br', lang); return lang; }))); ================================================ FILE: locale/pt.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/pt.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], weekdays: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'], weekdaysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'], weekdaysMin: ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sá'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('pt', lang); export { lang as default }; ================================================ FILE: locale/pt.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.pt = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], weekdays: ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado'], weekdaysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'], weekdaysMin: ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sá'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('pt', lang); return lang; }))); ================================================ FILE: locale/ro.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ro.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie'], monthsShort: ['ian', 'feb', 'mar', 'apr', 'mai', 'iun', 'iul', 'aug', 'sep', 'oct', 'noi', 'dec'], weekdays: ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], weekdaysShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], weekdaysMin: ['Du', 'Lu', 'Ma', 'Mi', 'Jo', 'Vi', 'Sâ'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ro', lang); export { lang as default }; ================================================ FILE: locale/ro.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ro = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie'], monthsShort: ['ian', 'feb', 'mar', 'apr', 'mai', 'iun', 'iul', 'aug', 'sep', 'oct', 'noi', 'dec'], weekdays: ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], weekdaysShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], weekdaysMin: ['Du', 'Lu', 'Ma', 'Mi', 'Jo', 'Vi', 'Sâ'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ro', lang); return lang; }))); ================================================ FILE: locale/ru.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ru.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'], monthsShort: ['янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'], weekdays: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], weekdaysShort: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], weekdaysMin: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], firstDayOfWeek: 1, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ru', lang); export { lang as default }; ================================================ FILE: locale/ru.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ru = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'], monthsShort: ['янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'], weekdays: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], weekdaysShort: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], weekdaysMin: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], firstDayOfWeek: 1, firstWeekContainsDate: 1 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ru', lang); return lang; }))); ================================================ FILE: locale/sl.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/sl.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj.', 'jun.', 'jul.', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], weekdays: ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota'], weekdaysShort: ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'], weekdaysMin: ['ne', 'po', 'to', 'sr', 'če', 'pe', 'so'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('sl', lang); export { lang as default }; ================================================ FILE: locale/sl.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.sl = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj.', 'jun.', 'jul.', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], weekdays: ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota'], weekdaysShort: ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'], weekdaysMin: ['ne', 'po', 'to', 'sr', 'če', 'pe', 'so'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('sl', lang); return lang; }))); ================================================ FILE: locale/sr.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/sr.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('sr', lang); export { lang as default }; ================================================ FILE: locale/sr.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.sr = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('sr', lang); return lang; }))); ================================================ FILE: locale/sv.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/sv.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], weekdays: ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], weekdaysShort: ['sön', 'mån', 'tis', 'ons', 'tor', 'fre', 'lör'], weekdaysMin: ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('sv', lang); export { lang as default }; ================================================ FILE: locale/sv.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.sv = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'], monthsShort: ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], weekdays: ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], weekdaysShort: ['sön', 'mån', 'tis', 'ons', 'tor', 'fre', 'lör'], weekdaysMin: ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('sv', lang); return lang; }))); ================================================ FILE: locale/ta.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ta.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], monthsShort: ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], weekdays: ['ஞாயிற்றுக்கிழமை', 'திங்கட்கிழமை', 'செவ்வாய்கிழமை', 'புதன்கிழமை', 'வியாழக்கிழமை', 'வெள்ளிக்கிழமை', 'சனிக்கிழமை'], weekdaysShort: ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], weekdaysMin: ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ta', lang); export { lang as default }; ================================================ FILE: locale/ta.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ta = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], monthsShort: ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], weekdays: ['ஞாயிற்றுக்கிழமை', 'திங்கட்கிழமை', 'செவ்வாய்கிழமை', 'புதன்கிழமை', 'வியாழக்கிழமை', 'வெள்ளிக்கிழமை', 'சனிக்கிழமை'], weekdaysShort: ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], weekdaysMin: ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ta', lang); return lang; }))); ================================================ FILE: locale/te.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/te.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['జనవరి', 'ఫిబ్రవరి', 'మార్చి', 'ఏప్రిల్', 'మే', 'జూన్', 'జులై', 'ఆగస్టు', 'సెప్టెంబర్', 'అక్టోబర్', 'నవంబర్', 'డిసెంబర్'], monthsShort: ['జన.', 'ఫిబ్ర.', 'మార్చి', 'ఏప్రి.', 'మే', 'జూన్', 'జులై', 'ఆగ.', 'సెప్.', 'అక్టో.', 'నవ.', 'డిసె.'], weekdays: ['ఆదివారం', 'సోమవారం', 'మంగళవారం', 'బుధవారం', 'గురువారం', 'శుక్రవారం', 'శనివారం'], weekdaysShort: ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'], weekdaysMin: ['ఆ', 'సో', 'మం', 'బు', 'గు', 'శు', 'శ'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('te', lang); export { lang as default }; ================================================ FILE: locale/te.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.te = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['జనవరి', 'ఫిబ్రవరి', 'మార్చి', 'ఏప్రిల్', 'మే', 'జూన్', 'జులై', 'ఆగస్టు', 'సెప్టెంబర్', 'అక్టోబర్', 'నవంబర్', 'డిసెంబర్'], monthsShort: ['జన.', 'ఫిబ్ర.', 'మార్చి', 'ఏప్రి.', 'మే', 'జూన్', 'జులై', 'ఆగ.', 'సెప్.', 'అక్టో.', 'నవ.', 'డిసె.'], weekdays: ['ఆదివారం', 'సోమవారం', 'మంగళవారం', 'బుధవారం', 'గురువారం', 'శుక్రవారం', 'శనివారం'], weekdaysShort: ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'], weekdaysMin: ['ఆ', 'సో', 'మం', 'బు', 'గు', 'శు', 'శ'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('te', lang); return lang; }))); ================================================ FILE: locale/th.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/th.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'], monthsShort: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'], weekdays: ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์'], weekdaysShort: ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัส', 'ศุกร์', 'เสาร์'], weekdaysMin: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('th', lang); export { lang as default }; ================================================ FILE: locale/th.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.th = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'], monthsShort: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'], weekdays: ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์'], weekdaysShort: ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัส', 'ศุกร์', 'เสาร์'], weekdaysMin: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'], firstDayOfWeek: 0, firstWeekContainsDate: 6 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('th', lang); return lang; }))); ================================================ FILE: locale/tr.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/tr.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'], monthsShort: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], weekdays: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], weekdaysShort: ['Paz', 'Pts', 'Sal', 'Çar', 'Per', 'Cum', 'Cts'], weekdaysMin: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('tr', lang); export { lang as default }; ================================================ FILE: locale/tr.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.tr = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'], monthsShort: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], weekdays: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], weekdaysShort: ['Paz', 'Pts', 'Sal', 'Çar', 'Per', 'Cum', 'Cts'], weekdaysMin: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('tr', lang); return lang; }))); ================================================ FILE: locale/ug-cn.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/ug-cn.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'], monthsShort: ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'], weekdays: ['يەكشەنبە', 'دۈشەنبە', 'سەيشەنبە', 'چارشەنبە', 'پەيشەنبە', 'جۈمە', 'شەنبە'], weekdaysShort: ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], weekdaysMin: ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('ug-cn', lang); export { lang as default }; ================================================ FILE: locale/ug-cn.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.ugCn = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'], monthsShort: ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'], weekdays: ['يەكشەنبە', 'دۈشەنبە', 'سەيشەنبە', 'چارشەنبە', 'پەيشەنبە', 'جۈمە', 'شەنبە'], weekdaysShort: ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], weekdaysMin: ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('ug-cn', lang); return lang; }))); ================================================ FILE: locale/uk.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/uk.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень'], monthsShort: ['січ', 'лют', 'бер', 'квіт', 'трав', 'черв', 'лип', 'серп', 'вер', 'жовт', 'лист', 'груд'], weekdays: ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'п’ятниця', 'субота'], weekdaysShort: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], weekdaysMin: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker.locale('uk', lang); export { lang as default }; ================================================ FILE: locale/uk.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.uk = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень'], monthsShort: ['січ', 'лют', 'бер', 'квіт', 'трав', 'черв', 'лип', 'серп', 'вер', 'жовт', 'лист', 'груд'], weekdays: ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'п’ятниця', 'субота'], weekdaysShort: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], weekdaysMin: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], firstDayOfWeek: 1, firstWeekContainsDate: 7 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: true, }; DatePicker__default['default'].locale('uk', lang); return lang; }))); ================================================ FILE: locale/vi.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/vi.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['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'], monthsShort: ['Th01', 'Th02', 'Th03', 'Th04', 'Th05', 'Th06', 'Th07', 'Th08', 'Th09', 'Th10', 'Th11', 'Th12'], weekdays: ['chủ nhật', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm', 'thứ sáu', 'thứ bảy'], weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], weekdaysMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('vi', lang); export { lang as default }; ================================================ FILE: locale/vi.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.vi = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['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'], monthsShort: ['Th01', 'Th02', 'Th03', 'Th04', 'Th05', 'Th06', 'Th07', 'Th08', 'Th09', 'Th10', 'Th11', 'Th12'], weekdays: ['chủ nhật', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm', 'thứ sáu', 'thứ bảy'], weekdaysShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], weekdaysMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], firstDayOfWeek: 1, firstWeekContainsDate: 4 }; const lang = { formatLocale: locale, yearFormat: 'YYYY', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker__default['default'].locale('vi', lang); return lang; }))); ================================================ FILE: locale/zh-cn.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/zh-cn.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], weekdays: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], weekdaysShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], weekdaysMin: ['日', '一', '二', '三', '四', '五', '六'], firstDayOfWeek: 1, firstWeekContainsDate: 4, meridiemParse: /上午|下午/, meridiem: function meridiem(hour) { if (hour < 12) { return '上午'; } return '下午'; }, isPM: function isPM(input) { return input === '下午'; } }; const lang = { formatLocale: locale, yearFormat: 'YYYY年', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('zh-cn', lang); export { lang as default }; ================================================ FILE: locale/zh-cn.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.zhCn = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], weekdays: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], weekdaysShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], weekdaysMin: ['日', '一', '二', '三', '四', '五', '六'], firstDayOfWeek: 1, firstWeekContainsDate: 4, meridiemParse: /上午|下午/, meridiem: function meridiem(hour) { if (hour < 12) { return '上午'; } return '下午'; }, isPM: function isPM(input) { return input === '下午'; } }; const lang = { formatLocale: locale, yearFormat: 'YYYY年', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker__default['default'].locale('zh-cn', lang); return lang; }))); ================================================ FILE: locale/zh-tw.d.ts ================================================ declare const lang: { formatLocale: import("date-format-parse/es/locale").Locale; yearFormat: string; monthFormat: string; monthBeforeYear: boolean; }; export default lang; ================================================ FILE: locale/zh-tw.es.js ================================================ import DatePicker from 'vue-datepicker-next'; var locale = { months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], weekdays: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], weekdaysShort: ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], weekdaysMin: ['日', '一', '二', '三', '四', '五', '六'], firstDayOfWeek: 1, firstWeekContainsDate: 4, meridiemParse: /上午|下午/, meridiem: function meridiem(hour) { if (hour < 12) { return '上午'; } return '下午'; }, isPM: function isPM(input) { return input === '下午'; } }; const lang = { formatLocale: locale, yearFormat: 'YYYY年', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker.locale('zh-tw', lang); export { lang as default }; ================================================ FILE: locale/zh-tw.js ================================================ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue-datepicker-next')) : typeof define === 'function' && define.amd ? define(['vue-datepicker-next'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.DatePicker = global.DatePicker || {}, global.DatePicker.lang = global.DatePicker.lang || {}, global.DatePicker.lang.zhTw = factory(global.DatePicker))); }(this, (function (DatePicker) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var DatePicker__default = /*#__PURE__*/_interopDefaultLegacy(DatePicker); var locale = { months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], weekdays: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], weekdaysShort: ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], weekdaysMin: ['日', '一', '二', '三', '四', '五', '六'], firstDayOfWeek: 1, firstWeekContainsDate: 4, meridiemParse: /上午|下午/, meridiem: function meridiem(hour) { if (hour < 12) { return '上午'; } return '下午'; }, isPM: function isPM(input) { return input === '下午'; } }; const lang = { formatLocale: locale, yearFormat: 'YYYY年', monthFormat: 'MMM', monthBeforeYear: false, }; DatePicker__default['default'].locale('zh-tw', lang); return lang; }))); ================================================ FILE: package.json ================================================ { "name": "vue-datepicker-next", "version": "1.0.3", "description": "A Datepicker Component For Vue3", "main": "./index.js", "module": "./index.es.js", "unpkg": "./index.js", "jsdelivr": "./index.js", "typings": "./index.d.ts", "scripts": { "start": "npm run dev", "dev": "vite --host 0.0.0.0", "prebuild": "npm run lint && npm run test && npm run clean", "postbuild": "ls index.es.js index.js index.css index.d.ts scss/index.scss >> /dev/null && echo 'build success'", "build": "npm run build:lib-es & npm run build:lib-umd & npm run css && npm run type", "build:lib-es": "LIB_FORMAT=es vite build", "build:lib-umd": "LIB_FORMAT=umd vite build", "type": "dts-bundle-generator -o ./index.d.ts lib/index.ts", "css": "sass --style=compressed --no-source-map lib/style/index.scss index.css && postcss index.css --use autoprefixer -o index.css --no-map && cp -R lib/style scss", "locale": "rm -rf locale/ && rollup -c rollup.locale.config.js", "clean": "rm -rf scss/ index.*[^html]", "version": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", "lint": "vue-tsc --noEmit && eslint 'lib/**/*.{tsx,ts}'", "test": "jest", "cov": "jest --coverage", "docs:dev": "vite serve docs", "docs:build": "vite build docs", "docs:preview": "vite preview docs --port 8080", "release": "bash build/git.sh && bash build/release.sh", "deploy": "bash build/deploy.sh", "prepare": "husky install" }, "files": [ "/locale", "/scss", "index.css", "index.js", "index.es.js", "index.d.ts" ], "repository": { "type": "git", "url": "git+https://github.com/mengxiong10/vue-datepicker-next.git" }, "keywords": [ "vue", "calendar", "datepicker", "datetimepicker" ], "author": "xiemengxiong", "license": "MIT", "bugs": { "url": "https://github.com/mengxiong10/vue-datepicker-next/issues" }, "homepage": "https://github.com/mengxiong10/vue-datepicker-next#readme", "lint-staged": { "**/*.{tsx,ts}": [ "eslint --fix", "prettier --write" ] }, "peerDependencies": { "vue": "^3.0.0" }, "dependencies": { "date-format-parse": "^0.2.7", "vue": "^3.0.0" }, "devDependencies": { "@babel/core": "^7.16.0", "@babel/preset-env": "^7.16.4", "@babel/preset-typescript": "^7.16.0", "@commitlint/cli": "^15.0.0", "@commitlint/config-conventional": "^15.0.0", "@rollup/plugin-node-resolve": "^13.0.6", "@types/jest": "^27.0.3", "@types/markdown-it": "^12.2.3", "@typescript-eslint/eslint-plugin": "^5.7.0", "@typescript-eslint/parser": "^5.7.0", "@vitejs/plugin-vue": "^1.6.2", "@vitejs/plugin-vue-jsx": "^1.1.8", "@vue/compiler-sfc": "^3.2.11", "@vue/test-utils": "^2.0.0-rc.16", "autoprefixer": "^10.4.0", "babel-jest": "^27.4.2", "conventional-changelog-cli": "^2.1.1", "coveralls": "^3.1.1", "dts-bundle-generator": "^6.2.0", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-vue": "^7.17.0", "highlight.js": "^11.3.1", "husky": "^7.0.4", "jest": "^27.4.3", "jest-serializer-vue": "^2.0.2", "lint-staged": "^12.1.2", "markdown-it": "^12.3.0", "postcss-cli": "^9.1.0", "prettier": "^2.3.2", "rollup-plugin-typescript2": "^0.31.1", "sass": "^1.38.2", "typescript": "^4.5.2", "utility-types": "^3.10.0", "vite": "^2.5.2", "vite-svg-loader": "^2.2.0", "vue-tsc": "^0.2.3" } } ================================================ FILE: rollup.locale.config.js ================================================ import typescript from 'rollup-plugin-typescript2'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import fs from 'fs'; import path from 'path'; const localePath = path.resolve(__dirname, 'lib/locale'); const fileList = fs.readdirSync(localePath); const plugins = [ nodeResolve(), typescript({ useTsconfigDeclarationDir: true, tsconfig: 'tsconfig.locale.json', }), ]; export function camelcase(str) { const camelizeRE = /-(\w)/g; return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); } const config = fileList.map((file) => { const input = path.join(localePath, file); const external = ['vue-datepicker-next']; const filename = path.basename(file, '.ts'); return { input, plugins, external, output: [ { file: `locale/${filename}.js`, format: 'umd', name: `DatePicker.lang.${camelcase(filename)}`, globals: { 'vue-datepicker-next': 'DatePicker', }, }, { file: `locale/${filename}.es.js`, format: 'esm', exports: 'named', }, ], }; }); export default config; ================================================ FILE: src/App.vue ================================================ ================================================ FILE: src/main.ts ================================================ import { createApp } from 'vue'; import App from './App.vue'; import '../lib/style/index.scss'; createApp(App).mount('#app'); ================================================ FILE: tsconfig.json ================================================ { "compilerOptions": { "target": "es2016", "useDefineForClassFields": true, "module": "esnext", "moduleResolution": "node", "strict": true, "jsx": "preserve", "sourceMap": false, "resolveJsonModule": true, "declaration": true, "esModuleInterop": true, "noImplicitAny": true, "lib": ["esnext", "dom"], "paths": { "vue-datepicker-next": ["./lib/index.ts"] } }, "include": [ "lib/**/*ts", "lib/**/*tsx", "src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "docs/**/*.ts", "docs/**/*.tsx", "docs/**/*.vue", "__tests__/**/*.ts", "typings/*.d.ts" ] } ================================================ FILE: tsconfig.locale.json ================================================ { "compilerOptions": { "target": "es2015", "module": "es2015", "moduleResolution": "node", "strict": true, "sourceMap": false, "declaration": true, "esModuleInterop": true, "declarationDir": ".", "noImplicitAny": true, "rootDir": "./lib", "lib": ["esnext", "dom"], "paths": { "vue-datepicker-next": ["./lib/index.ts"] } }, "include": ["./lib/locale/*ts"], "exclude": ["node_modules"] } ================================================ FILE: typings/env.d.ts ================================================ /// declare module '*.vue' { import { DefineComponent } from 'vue'; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types const component: DefineComponent<{}, {}, any>; export default component; } ================================================ FILE: vite.config.ts ================================================ import { defineConfig, UserConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import vueJsx from '@vitejs/plugin-vue-jsx'; import svgLoader from 'vite-svg-loader'; import path from 'path'; // https://vitejs.dev/config/ const baseConfig: UserConfig = { plugins: [vue(), vueJsx({ mergeProps: false }), svgLoader()], resolve: { alias: { 'vue-datepicker-next': path.resolve(__dirname, './lib'), }, }, }; const externalDependencies = (id: string) => !id.startsWith('.') && !id.startsWith('/'); const esConfig: UserConfig = { build: { outDir: '.', minify: false, target: 'es2015', emptyOutDir: false, lib: { entry: path.resolve(__dirname, 'lib/index.ts'), name: 'DatePicker', formats: ['es'], fileName: (format) => `index.${format}.js`, }, rollupOptions: { external: externalDependencies, }, }, }; const umdConfig: UserConfig = { build: { outDir: '.', minify: 'esbuild', target: 'es2015', emptyOutDir: false, lib: { entry: path.resolve(__dirname, 'lib/index.ts'), name: 'DatePicker', formats: ['umd'], fileName: () => `index.js`, }, rollupOptions: { external: ['vue'], output: { globals: { vue: 'Vue', }, }, }, }, }; export default defineConfig(({ command }) => { if (command === 'serve') { return baseConfig; } const format = process.env.LIB_FORMAT; if (format === 'es') { return { ...baseConfig, ...esConfig }; } return { ...baseConfig, ...umdConfig }; });