├── .github
└── workflows
│ └── code-test.yml
├── .idea
├── .gitignore
├── datepicker.iml
├── modules.xml
└── vcs.xml
├── Doc
├── index.html
├── public
│ └── favicon.ico
├── src
│ ├── App.vue
│ ├── assets
│ │ ├── style
│ │ │ ├── color.scss
│ │ │ ├── el-message.css
│ │ │ ├── global.scss
│ │ │ ├── hightlight.scss
│ │ │ ├── index.scss
│ │ │ └── mobile.scss
│ │ └── svg
│ │ │ └── svg.js
│ ├── components
│ │ ├── Document
│ │ │ ├── Document.vue
│ │ │ ├── components
│ │ │ │ ├── content.vue
│ │ │ │ └── slider.vue
│ │ │ └── index.ts
│ │ ├── Enter
│ │ │ ├── enter.vue
│ │ │ └── index.ts
│ │ └── Header
│ │ │ ├── Header.vue
│ │ │ └── index.ts
│ ├── main.ts
│ ├── package
│ │ ├── button-group
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ │ └── button-group.vue
│ │ ├── button
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ │ └── button.vue
│ │ ├── datepicker-demo
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ │ └── datepicker-demo.vue
│ │ ├── demo-card
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ │ └── card.vue
│ │ ├── icon
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ │ └── icon.vue
│ │ ├── index.ts
│ │ ├── input
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ │ └── Input.vue
│ │ ├── install-card-group
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ │ ├── group.vue
│ │ │ │ └── install-card.vue
│ │ ├── logo
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ │ └── logo.vue
│ │ └── theme-card
│ │ │ ├── index.ts
│ │ │ └── src
│ │ │ └── card.vue
│ ├── plugins
│ │ └── md-loader
│ │ │ ├── index.ts
│ │ │ ├── markdown.ts
│ │ │ ├── markdownTag.ts
│ │ │ ├── render.ts
│ │ │ └── snippet.ts
│ ├── router
│ │ └── index.ts
│ ├── shims-vue.d.ts
│ ├── type
│ │ └── utils.ts
│ ├── utils.ts
│ └── views
│ │ ├── en
│ │ ├── api.md
│ │ ├── basic.md
│ │ ├── home.md
│ │ ├── locale.md
│ │ ├── method.md
│ │ ├── options.md
│ │ ├── start.md
│ │ ├── theme.md
│ │ └── type.md
│ │ └── zh
│ │ ├── api.md
│ │ ├── basic.md
│ │ ├── home.md
│ │ ├── locale.md
│ │ ├── method.md
│ │ ├── options.md
│ │ ├── start.md
│ │ ├── theme.md
│ │ └── type.md
└── tsconfig.json
├── LICENSE
├── README.md
├── build
├── gulpfile.ts
├── jest.config.ts
├── locales.ts
└── rollup.config.ts
├── locale
├── af.ts
├── br.ts
├── en-au.ts
├── en-ca.ts
├── en-gb.ts
├── en-ie.ts
├── en.ts
├── es.ts
├── fi.ts
├── fo.ts
├── fr.ts
├── hr.ts
├── ht.ts
├── it.ts
├── ja.ts
├── ko.ts
├── ku.ts
├── lb.ts
├── lo.ts
├── uk.ts
├── uz.ts
├── zh-cn.ts
├── zh-hk.ts
├── zh-tw.ts
└── zh.ts
├── package.json
├── tsconfig.json
├── vite.config.ts
└── yarn.lock
/.github/workflows/code-test.yml:
--------------------------------------------------------------------------------
1 | name: code-test
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | schedule:
8 | # Runs at 12am UTC
9 | - cron: '0 0 * * *'
10 |
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@master
19 | - name: Use Node.js 12.x
20 | uses: actions/setup-node@v1
21 | - name: test
22 | run: |
23 | npm i
24 | npm run test -u
25 | bash <(curl -s https://codecov.io/bash)
26 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 |
--------------------------------------------------------------------------------
/.idea/datepicker.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Doc/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Better datePicker
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Doc/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Js-Monkey/datepicker/1199144b4e7d54f1893de5c1e8dcebb07571a9e2/Doc/public/favicon.ico
--------------------------------------------------------------------------------
/Doc/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
41 |
42 |
68 |
--------------------------------------------------------------------------------
/Doc/src/assets/style/color.scss:
--------------------------------------------------------------------------------
1 | $red: #F1453D;
2 | $red-1: lighten($red, 30);
3 | $red-2: lighten($red, 20);
4 | $red-3: lighten($red, 10);
5 | $red-4: lighten($red, 0);
6 | $red-5: darken($red, 10);
7 | $red-6: darken($red, 20);
8 | $red-7: darken($red, 30);
9 |
10 | $orange: #ffb311;
11 | $orange-1: lighten($orange, 30);
12 | $orange-2: lighten($orange, 20);
13 | $orange-3: lighten($orange, 10);
14 | $orange-4: lighten($orange, 0);
15 | $orange-5: darken($orange, 10);
16 | $orange-6: darken($orange, 20);
17 | $orange-7: darken($orange, 30);
18 |
19 | $blue: #26acee;
20 | $blue-1: lighten($blue, 30);
21 | $blue-2: lighten($blue, 20);
22 | $blue-3: lighten($blue, 10);
23 | $blue-4: lighten($blue, 0);
24 | $blue-5: darken($blue, 10);
25 | $blue-6: darken($blue, 20);
26 | $blue-7: darken($blue, 30);
27 |
28 | $green: #17cc15;
29 | $green-1: lighten($green, 30);
30 | $green-2: lighten($green, 20);
31 | $green-3: lighten($green, 10);
32 | $green-4: lighten($green, 0);
33 | $green-5: darken($green, 10);
34 | $green-6: darken($green, 20);
35 | $green-7: darken($green, 30);
36 |
37 | $grey: #c2c5cb;
38 | $grey-1: lighten($grey, 30);
39 | $grey-2: lighten($grey, 20);
40 | $grey-3: lighten($grey, 10);
41 | $grey-4: lighten($grey, 0);
42 | $grey-5: darken($grey, 10);
43 | $grey-6: darken($grey, 20);
44 | $grey-7: darken($grey, 30);
45 |
46 |
47 | $black: #13181b;
48 | $black-1: lighten($black, 30);
49 | $black-2: lighten($black, 20);
50 | $black-3: lighten($black, 10);
51 | $black-4: lighten($black, 0);
52 | $black-5: darken($black, 10);
53 | $black-6: darken($black, 20);
54 | $black-7: darken($black, 30);
55 |
--------------------------------------------------------------------------------
/Doc/src/assets/style/el-message.css:
--------------------------------------------------------------------------------
1 | .el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#1ea83f;border-color:#aafa91}.el-message--success .el-message__content{color:#ffffff}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}
2 |
--------------------------------------------------------------------------------
/Doc/src/assets/style/global.scss:
--------------------------------------------------------------------------------
1 | @import "./color";
2 |
3 | $text-light: #ffffff;
4 |
5 | $text: $grey-7;
6 | $text-2: $grey-6;
7 | $text-3: $grey-4;
8 |
9 | $bg: $black;
10 | $bg-2: $black-3;
11 | $bg-3: $black-4;
12 |
13 | $line-1: $grey;
14 | $line-2: $grey-3;
15 | $line-3: $grey-2;
16 |
17 | $disabled-text: $grey-3;
18 | $disabled-bg: $grey-6;
19 |
20 |
21 | $border-color: $grey-3;
22 | $border-hover-color: $grey-7;
23 | $border-radius: 4px;
24 | $border-drop-radius: 1px 1px 4px 4px;
25 | $border-solid: 1px solid $border-color;
26 |
27 | $bg-color-1: $grey-1;
28 |
29 |
30 | $shadow-color: $grey-5;
31 |
32 | $shadow-up: 0 -1px 5px $bg;
33 | $shadow-down: 0 1px 5px $bg;
34 | $shadow-left: -1px 3px 3px 3px $bg;
35 | $shadow-right: 1px 0 5px $bg;
36 |
37 | $padding-left-more: 0 30px 0 25px;
38 | $padding-right-more: 0 10px 0 30px;
39 |
40 | $button-active-bg: #ffffff;
41 | $button-bg: $grey-1;
42 |
43 | $font-size-large: 16px;
44 | $font-size: 14px;
45 | $font-size-small: 13px;
46 |
47 | $animation-duration: .32s;
48 |
49 |
50 | $primary-1: $blue;
51 | $primary-2: $blue-5;
52 | $error-1: $red;
53 | $error-2: $red-5;
54 | $success-1: $green;
55 | $success-2: $green-5;
56 | $warn-1: $orange;
57 | $warn-2: $orange-5;
58 | $info-1: $grey;
59 | $info-2: $grey-5;
60 |
61 |
--------------------------------------------------------------------------------
/Doc/src/assets/style/hightlight.scss:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Darcula color scheme from the JetBrains family of IDEs
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #131b2e;
12 | color: #efefe4;
13 | }
14 |
15 | a {
16 | color: #3498DB;
17 | }
18 |
19 | pre {
20 | margin: 0;
21 | padding: 0;
22 | display: flex;
23 | align-items: stretch;
24 |
25 | code {
26 | width: 100%;
27 | border-radius: 7px;
28 | padding: 20px !important;
29 | font-size: 16px;
30 | line-height: 1.7;
31 |
32 | span {
33 | display: inline-block;
34 | }
35 |
36 | p {
37 | line-height: 1.75;
38 | }
39 | }
40 | }
41 |
42 | .hljs-strong,
43 | .hljs-emphasis {
44 | color: #a8a8a2;
45 | }
46 |
47 | .hljs-bullet,
48 | .hljs-quote,
49 | .hljs-link,
50 | .hljs-number,
51 | .hljs-regexp,
52 | .hljs-literal {
53 | color: #6896ba;
54 | }
55 |
56 | .hljs-code,
57 | .hljs-selector-class {
58 | color: #a6e22e;
59 | }
60 |
61 | .hljs-emphasis {
62 | font-style: italic;
63 | }
64 |
65 | .hljs-keyword,
66 | .hljs-selector-tag,
67 | .hljs-section,
68 | .hljs-attribute,
69 | .hljs-name,
70 | .hljs-variable {
71 | color: #ffb311;
72 | }
73 |
74 | .hljs-attr {
75 | color: #aafa91;
76 | }
77 |
78 | .hljs-title {
79 | color: #6ed766;
80 | }
81 |
82 | .hljs-params {
83 | color: #b9b9b9;
84 | }
85 |
86 | .hljs-string {
87 | color: #1ea83f;
88 | }
89 |
90 | .hljs-subst,
91 | .hljs-type,
92 | .hljs-built_in,
93 | .hljs-builtin-name,
94 | .hljs-symbol,
95 | .hljs-selector-id,
96 | .hljs-selector-attr,
97 | .hljs-selector-pseudo,
98 | .hljs-template-tag,
99 | .hljs-template-variable,
100 | .hljs-addition {
101 | color: #e0c46c;
102 | }
103 |
104 | .hljs-deletion,
105 | .hljs-meta {
106 | color: #aafa91;
107 | }
108 |
109 | .hljs-comment {
110 | color: #7a7a7a;
111 | }
112 |
113 | .markdown-body, .demo {
114 | color: #dae3f6;
115 |
116 | strong {
117 | color: #e84c3b;
118 | }
119 |
120 | > table {
121 | width: 100%;
122 | margin-top: 100px;
123 | border-collapse: collapse;
124 | font-family: Menlo;
125 | margin-bottom: 30px;
126 |
127 |
128 | th {
129 | color: #e84c3b;
130 | text-align: start;
131 | padding: 10px;
132 | }
133 |
134 | td {
135 | font-size: 14px;
136 |
137 | &:nth-child(odd) {
138 | color: #eec15c;
139 | font-size: 16px;
140 | }
141 |
142 | &:nth-child(3) {
143 | color: #48f68d;
144 | font-size: 16px;
145 | }
146 |
147 | &:nth-child(5) {
148 | color: #8189f1;
149 | font-size: 16px;
150 | }
151 |
152 | padding: 10px;
153 | }
154 |
155 | tr {
156 | border-bottom: 1px solid #808a89 !important;
157 | }
158 | }
159 |
160 | h1 {
161 | color: #ffb311;
162 | }
163 |
164 | h2 {
165 | color: #eec15c;
166 | }
167 |
168 | h2, h1 {
169 | font-family: Futura;
170 | }
171 |
172 | pre {
173 |
174 | }
175 |
176 | h3 {
177 | color: #eac674;
178 | }
179 |
180 | em {
181 | color: #3498DB;
182 | }
183 | }
184 |
--------------------------------------------------------------------------------
/Doc/src/assets/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./hightlight";
2 | @import "./global";
3 | @import "./src/assets/date-picker";
4 | @import "./mobile";
5 |
--------------------------------------------------------------------------------
/Doc/src/assets/style/mobile.scss:
--------------------------------------------------------------------------------
1 | @media screen and (max-width: 893px) {
2 | body {
3 | font-size: 14px;
4 | }
5 | .install {
6 | flex-direction: column;
7 | font-size: 14px;
8 |
9 | &-card {
10 | margin: 6px 0;
11 |
12 | &-code {
13 | padding: 6px 9px;
14 | }
15 |
16 | svg {
17 | font-size: 14px !important;
18 | }
19 | }
20 | }
21 | }
22 |
23 |
24 | @media screen and (max-width: 564px) {
25 | .install {
26 | font-size: 12px;
27 | }
28 | .enter-button {
29 | &-description {
30 | font-size: 15px !important;
31 | }
32 |
33 | //button{
34 | // padding: 5px 12px !important;
35 | // font-size: 12px !important;
36 | //}
37 | button {
38 | display: none !important;
39 | }
40 | }
41 | .header-nav {
42 | display: none !important;
43 | }
44 | .header-github {
45 | margin-left: auto !important;
46 | }
47 | .logo {
48 | width: 50vw !important;
49 | height: 39vw !important;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/Doc/src/assets/svg/svg.js:
--------------------------------------------------------------------------------
1 | !function(l){var c,a,o,t,h,i,e='',m=(m=document.getElementsByTagName("script"))[m.length-1].getAttribute("data-injectcss");if(m&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}function s(){h||(h=!0,o())}c=function(){var l,c,a,o;(o=document.createElement("div")).innerHTML=e,e=null,(a=o.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",l=a,(c=document.body).firstChild?(o=l,(a=c.firstChild).parentNode.insertBefore(o,a)):c.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),c()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(o=c,t=l.document,h=!1,(i=function(){try{t.documentElement.doScroll("left")}catch(l){return void setTimeout(i,50)}s()})(),t.onreadystatechange=function(){"complete"==t.readyState&&(t.onreadystatechange=null,s())})}(window);
2 |
--------------------------------------------------------------------------------
/Doc/src/components/Document/Document.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
19 |
20 |
25 |
--------------------------------------------------------------------------------
/Doc/src/components/Document/components/content.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
14 |
15 |
43 |
--------------------------------------------------------------------------------
/Doc/src/components/Document/components/slider.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 | {{ list.metaName }}
6 | {{ list.name }}
7 |
8 |
9 |
10 |
11 |
12 |
40 |
41 |
83 |
--------------------------------------------------------------------------------
/Doc/src/components/Document/index.ts:
--------------------------------------------------------------------------------
1 | import Document from './Document.vue'
2 |
3 | export default Document
4 |
--------------------------------------------------------------------------------
/Doc/src/components/Enter/enter.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
16 |
17 |
65 |
--------------------------------------------------------------------------------
/Doc/src/components/Enter/index.ts:
--------------------------------------------------------------------------------
1 | import Enter from './enter.vue'
2 |
3 | export default Enter
4 |
--------------------------------------------------------------------------------
/Doc/src/components/Header/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
26 |
27 |
28 |
60 |
61 |
138 |
--------------------------------------------------------------------------------
/Doc/src/components/Header/index.ts:
--------------------------------------------------------------------------------
1 | import Header from './Header.vue'
2 |
3 | export default Header
4 |
--------------------------------------------------------------------------------
/Doc/src/main.ts:
--------------------------------------------------------------------------------
1 | import {createApp, nextTick} from 'vue'
2 | import App from './App.vue'
3 | import Router from './router/index'
4 | import {useComponent} from "./package"
5 | import highlightJs from 'highlight.js'
6 | import './assets/style/index.scss'
7 | import ColorPicker from 'element-plus/lib/el-color-picker'
8 | import Msg from 'element-plus/lib/el-message'
9 | import 'element-plus/lib/theme-chalk/index.css'
10 | import './assets/style/el-message.css'
11 | import {createDatePicker, locale, defaultOptions, destroy} from '../../src'
12 | import NProgress from "nprogress";
13 | // import xx from '../../dist/locale_es/zh-cn'
14 | // locale(xx)
15 | // defaultOptions({
16 | // themeColor: '#1890ff',
17 | // rangeBgColor: '#e6f7ff',
18 | // tdColor: '#5f5f5f',
19 | // thColor: '#5f5f5f',
20 | // })
21 | NProgress.configure({
22 | easing: 'ease',
23 | speed: 200,
24 | showSpinner: true,
25 | trickleSpeed: 200,
26 | })
27 |
28 | const app = createApp(App)
29 | useComponent(app)
30 |
31 | app.config.globalProperties.createDatePicker = createDatePicker
32 | app.config.globalProperties.$Msg = Msg
33 |
34 | highlightJs.configure({
35 | languages: ['js', 'html']
36 | })
37 |
38 | Router.afterEach((event) => {
39 | nextTick(() => document.querySelectorAll('pre code').forEach(block => highlightJs.highlightBlock(block)))
40 | })
41 | app.use(Router)
42 | app.use(ColorPicker)
43 | app.mount('#app')
44 |
--------------------------------------------------------------------------------
/Doc/src/package/button-group/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import Group from './src/button-group.vue'
3 | import {VueComponent} from '../../type/utils'
4 |
5 | Group.install = (app: App): void => {
6 | app.component(Group.name, Group)
7 | }
8 |
9 | export default Group as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/button-group/src/button-group.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
16 |
17 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/Doc/src/package/button/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import Button from './src/button.vue'
3 | import {VueComponent} from '../../type/utils'
4 |
5 | Button.install = (app: App): void => {
6 | app.component(Button.name, Button)
7 | }
8 |
9 | export default Button as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/button/src/button.vue:
--------------------------------------------------------------------------------
1 |
155 |
156 |
183 |
184 |
255 |
256 |
257 |
258 |
259 |
--------------------------------------------------------------------------------
/Doc/src/package/datepicker-demo/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import demo from './src/datepicker-demo.vue'
3 | import {VueComponent} from "../../type/utils"
4 |
5 | demo.install = (app: App): void => {
6 | app.component(demo.name, demo)
7 | }
8 |
9 | export default demo as unknown as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/datepicker-demo/src/datepicker-demo.vue:
--------------------------------------------------------------------------------
1 |
2 |
4 |
32 |
34 |
35 | {{ name }} |
36 |
37 |
38 |
39 |
42 |
44 | x
45 |
46 | |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
84 |
85 |
98 |
--------------------------------------------------------------------------------
/Doc/src/package/demo-card/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import card from './src/card.vue'
3 | import {VueComponent} from "../../type/utils"
4 |
5 | card.install = (app: App): void => {
6 | app.component(card.name, card)
7 | }
8 |
9 | export default card as unknown as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/demo-card/src/card.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{ item }}
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
67 |
68 |
177 |
--------------------------------------------------------------------------------
/Doc/src/package/icon/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import Icon from './src/icon.vue'
3 | import {VueComponent} from "../../type/utils"
4 |
5 | Icon.install = (app: App): void => {
6 | app.component(Icon.name, Icon)
7 | }
8 |
9 | export default Icon as unknown as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/icon/src/icon.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
36 |
37 |
56 |
--------------------------------------------------------------------------------
/Doc/src/package/index.ts:
--------------------------------------------------------------------------------
1 | import Button from './button'
2 | import ButtonGroup from './button-group'
3 | import Input from './input'
4 | import Icon from './icon'
5 | import demoCard from './demo-card'
6 | import themeCard from './theme-card'
7 | import datepickerDemo from './datepicker-demo'
8 | import cardGroup from './install-card-group'
9 | import Logo from './logo'
10 | import {App} from 'vue'
11 |
12 | export function useComponent(app: App): void {
13 | app.use(Button)
14 | app.use(ButtonGroup)
15 | app.use(Icon)
16 | app.use(Input)
17 | app.use(demoCard)
18 | app.use(themeCard)
19 | app.use(datepickerDemo)
20 | app.use(cardGroup)
21 | app.use(Logo)
22 | }
23 |
--------------------------------------------------------------------------------
/Doc/src/package/input/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import Input from './src/Input.vue'
3 | import {VueComponent} from "../../type/utils"
4 |
5 | Input.install = (app: App): void => {
6 | app.component(Input.name, Input)
7 | }
8 |
9 | export default Input as unknown as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/input/src/Input.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
21 |
22 |
23 |
108 |
109 |
272 |
--------------------------------------------------------------------------------
/Doc/src/package/install-card-group/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import installCardGroup from './src/group.vue'
3 | import {VueComponent} from "../../type/utils"
4 |
5 | installCardGroup.install = (app: App): void => {
6 | app.component(installCardGroup.name, installCardGroup)
7 | }
8 |
9 | export default installCardGroup as unknown as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/install-card-group/src/group.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
20 |
21 |
40 |
--------------------------------------------------------------------------------
/Doc/src/package/install-card-group/src/install-card.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
{{ text }}
7 |
8 |
9 |
10 |
32 |
33 |
76 |
--------------------------------------------------------------------------------
/Doc/src/package/logo/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import logo from './src/logo.vue'
3 | import {VueComponent} from "../../type/utils"
4 |
5 | logo.install = (app: App): void => {
6 | app.component(logo.name, logo)
7 | }
8 |
9 | export default logo as unknown as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/logo/src/logo.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
49 |
50 |
75 |
--------------------------------------------------------------------------------
/Doc/src/package/theme-card/index.ts:
--------------------------------------------------------------------------------
1 | import {App} from 'vue'
2 | import card from './src/card.vue'
3 | import {VueComponent} from "../../type/utils"
4 |
5 | card.install = (app: App): void => {
6 | app.component(card.name, card)
7 | }
8 |
9 | export default card as unknown as VueComponent
10 |
--------------------------------------------------------------------------------
/Doc/src/package/theme-card/src/card.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {{ list.label }}
12 |
13 |
14 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
98 |
99 |
168 |
--------------------------------------------------------------------------------
/Doc/src/plugins/md-loader/index.ts:
--------------------------------------------------------------------------------
1 | import type {Plugin} from 'vite'
2 | import transformToVue from "./snippet"
3 |
4 | function MarkDownLoader(): Plugin {
5 |
6 | return {
7 | name: 'vite-plugin-markdown-to-vue',
8 | enforce: 'pre',
9 | transform(raw, id) {
10 | if (id.endsWith('.md')) return transformToVue(raw)
11 | },
12 | }
13 | }
14 |
15 | export default MarkDownLoader
16 |
17 |
--------------------------------------------------------------------------------
/Doc/src/plugins/md-loader/markdown.ts:
--------------------------------------------------------------------------------
1 | import MarkdownIt from "markdown-it"
2 |
3 | const markdown = new MarkdownIt({
4 | html: true,
5 | linkify: true,
6 | typographer: true
7 | })
8 | export default function toMd(source: any): string {
9 | return markdown.render(source, {})
10 | }
11 |
--------------------------------------------------------------------------------
/Doc/src/plugins/md-loader/markdownTag.ts:
--------------------------------------------------------------------------------
1 | export const h1 = '#'
2 | export const h2 = '##'
3 | export const codeBlock = ':::'
4 | export const htmlBlock = '```html'
5 | export const scriptTag = '
28 |
29 |
${title}
30 |
${content}
31 |
32 |
33 | ${html}
34 |
35 |
36 | ${mdScript}
37 |
38 |
39 | `
40 | const options: SFCTemplateCompileOptions = {
41 | id: String(Date.parse(new Date() as any)),
42 | source,
43 | filename: 'inline-component',
44 | compilerOptions: {
45 | mode: 'function',
46 | }
47 | }
48 | const compiled = compileTemplate(options)
49 | const renderFunction = `${(compiled.code)}`
50 | const filterImportField = script.split('import')
51 | script = filterImportField[filterImportField.length - 1]
52 | return componentsCode + `component${idx}:(function (){
53 | const render = (function(){ ${renderFunction}})()
54 | return defineComponent({
55 | render,
56 | data(){
57 | return {
58 | clear: null,
59 | destroyed: null,
60 | update: null,
61 | create: null,
62 | onChange: null,
63 | getCurrentDate: null,
64 | getDate: null,
65 | open: null,
66 | setPlacementLeft: ()=>{},
67 | close: null,
68 | }
69 | },
70 | mounted(){
71 | try{${script}}catch(err){console.error(err)}
72 | }
73 | })
74 | })(),`
75 | }, '')
76 | const componentsRender = `{${_componentsCode}}`
77 | return {
78 | componentNames,
79 | componentsRender
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/Doc/src/plugins/md-loader/snippet.ts:
--------------------------------------------------------------------------------
1 | import getRenderComponent from "./render"
2 | import {codeBlock, h2} from "./markdownTag"
3 | import toMd from "./markdown"
4 | import mdPlugin from 'vite-plugin-md'
5 | /**
6 | * name: markdown to vue component
7 | */
8 |
9 | /**
10 | * format:
11 | * # H1 title (Required)
12 | * ## h2 title (Required)
13 | * ::: Description
14 | * (Required)
15 | *
18 | *
19 | */
20 |
21 | export default function transformToVue(source: string): string {
22 | if (source.indexOf(':::') === -1) {
23 | const plugin = mdPlugin() as any
24 | return plugin.transform(source, 'xxx.md') as string
25 | }
26 | const snippet = source.split(h2)
27 | const title = snippet[0].slice(0, 2) === '# ' ? toMd(snippet.shift()) : ''
28 | const snippetStr = snippet.join(h2)
29 | const componentsEndIdx = snippetStr.lastIndexOf(codeBlock) + codeBlock.length
30 | const components = snippetStr.slice(0, componentsEndIdx).split(h2)
31 | const {componentNames, componentsRender} = getRenderComponent(components)
32 | const rowLeft: string[] = []
33 | const rowRight: string[] = []
34 | componentNames.forEach((name, idx) => {
35 | if (idx & 1) {
36 | rowRight.push(name)
37 | } else {
38 | rowLeft.push(name)
39 | }
40 | })
41 | return `
42 |
43 |
44 |
45 | ${title}
46 |
47 |
48 | ${rowLeft.join('')}
49 |
50 |
51 | ${rowRight.join('')}
52 |
53 |
54 |
55 |
67 |
68 | `
69 | }
70 |
--------------------------------------------------------------------------------
/Doc/src/router/index.ts:
--------------------------------------------------------------------------------
1 | import {createRouter, createWebHashHistory} from "vue-router"
2 | import Enter from '../components/Enter'
3 | import Document from '../components/Document'
4 | import NProgress from "nprogress"
5 |
6 | const history = createWebHashHistory()
7 |
8 |
9 | function createRoute(lang: string, lists: any[]) {
10 | const createChild = (list: any) => {
11 | return {
12 | path: list.path,
13 | name: list.name,
14 | metaName: list.metaName,
15 | isSecondLevel: list.isSecond,
16 | component: () => import(`../views/${lang}/${list.path}.md`)
17 | }
18 | }
19 |
20 | return {
21 | path: `/${lang}/doc`,
22 | component: Document,
23 | redirect: `/${lang}/doc/start`,
24 | children: lists.map(list => createChild(list))
25 | }
26 | }
27 |
28 | const router = createRouter({
29 | history,
30 | routes: [
31 | {
32 | path: '/',
33 | component: Enter,
34 | children: [
35 | {
36 | path: 'zh',
37 | name: 'zh',
38 | component: () => import('../views/zh/home.md')
39 | },
40 | {
41 | path: 'en',
42 | name: 'en',
43 | component: () => import('../views/en/home.md')
44 | },
45 | ]
46 | },
47 | createRoute('en', [
48 | {
49 | name: 'start',
50 | path: 'start'
51 | },
52 | {
53 | name: 'theme',
54 | path: 'theme'
55 | },
56 | {
57 | name: 'options',
58 | path: 'options'
59 | },
60 | {
61 | name: 'type',
62 | path: 'type',
63 | isSecond: true
64 | },
65 | {
66 | name: 'basic',
67 | path: 'basic',
68 | isSecond: true
69 | },
70 | {
71 | name: 'method',
72 | path: 'method'
73 | },
74 | {
75 | name: 'locale',
76 | path: 'locale',
77 | },
78 | {
79 | name: 'API',
80 | path: 'api'
81 | },
82 | ]),
83 | createRoute('zh', [
84 | {
85 | name: '开始',
86 | path: 'start',
87 | },
88 | {
89 | name: '主题',
90 | path: 'theme',
91 | },
92 | {
93 | name: '配置',
94 | path: 'options',
95 | },
96 | {
97 | name: '类型',
98 | path: 'type',
99 | isSecond: true
100 | },
101 | {
102 | name: '基础配置',
103 | isSecond: true,
104 | path: 'basic',
105 | },
106 | {
107 | name: '方法',
108 | path: 'method'
109 | },
110 |
111 | {
112 | name: '地区设置',
113 | path: 'locale',
114 | },
115 | {
116 | name: '其他接口',
117 | path: 'api'
118 | },
119 | ])
120 | ]
121 | })
122 |
123 |
124 | router.beforeEach((to, from, next) => {
125 | const name = localStorage.getItem('lang') || 'en'
126 | NProgress.start()
127 | if (to.path === '/') {
128 | next({
129 | name
130 | })
131 | } else if (to.path === '/zh/' || to.path === '/en/') {
132 | next('/')
133 | } else {
134 | next()
135 | }
136 | })
137 |
138 | router.afterEach(() => {
139 | NProgress.done()
140 | })
141 |
142 | export default router
143 |
--------------------------------------------------------------------------------
/Doc/src/shims-vue.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.vue' {
2 | import {ComponentOptions} from 'vue'
3 | const Component: ComponentOptions
4 | export default Component
5 | }
6 |
7 | declare module '*.md' {
8 | const value: any
9 | export default value
10 | }
11 |
12 | declare module 'rollup-plugin-sourcemaps' {
13 | const value: any
14 | export default value
15 | }
16 |
17 | declare module 'nprogress' {
18 | const value: any
19 | export default value
20 | }
21 |
22 |
23 | declare module 'rollup-plugin-json' {
24 | const value: any
25 | export default value
26 | }
27 |
28 |
29 | declare module 'lodash.camelcase' {
30 | const value: any
31 | export default value
32 | }
33 |
--------------------------------------------------------------------------------
/Doc/src/type/utils.ts:
--------------------------------------------------------------------------------
1 | import {App, DefineComponent} from "vue";
2 |
3 | export interface VueComponent extends DefineComponent {
4 | install(app: App): void
5 | }
6 |
7 |
--------------------------------------------------------------------------------
/Doc/src/utils.ts:
--------------------------------------------------------------------------------
1 | import {_Event} from "../../src/types/event"
2 | import $Msg from 'element-plus/lib/el-message'
3 |
4 | let message: any
5 |
6 | export function copyText(e: _Event): void {
7 | const transfer = document.createElement('input')
8 | document.body.appendChild(transfer)
9 | transfer.value = e.target.innerText
10 | transfer.select()
11 | if (document.execCommand) {
12 | document.execCommand('copy')
13 | if (message && message.close) {
14 | message.close()
15 | }
16 | message = $Msg.success('Copy succeeded')
17 | }
18 | document.body.removeChild(transfer)
19 | }
20 |
--------------------------------------------------------------------------------
/Doc/src/views/en/api.md:
--------------------------------------------------------------------------------
1 | # API
2 |
3 | ## DESTROYED INSTANCE
4 |
5 | **Deletion by Query**, If no parameters are provided, **destroyed All**
6 |
7 | ```js
8 | import {destroy} from "better-datepicker"
9 |
10 | const picker1 = createDatePicker('#input1')
11 |
12 | const picker1 = createDatePickerc('#input2')
13 | destroy([picker1,picker2]) // destroyed picker1 and picker 2
14 | destroy() //destroyed all
15 | ```
16 |
17 | ## TODO
18 |
--------------------------------------------------------------------------------
/Doc/src/views/en/basic.md:
--------------------------------------------------------------------------------
1 | Datepicker options
2 |
3 | ## format
4 |
5 | :::
6 |
7 | ```html
8 |
9 |
15 |
16 | ```
17 |
18 | :::
19 |
20 | ## placement
21 |
22 | :::
23 |
24 | ```html
25 |
26 |
30 |
31 | ```
32 |
33 | :::
34 |
35 | ## offset
36 |
37 | :::
38 |
39 | ```html
40 |
41 |
48 |
49 | ```
50 |
51 | :::
52 |
53 | ## binding
54 |
55 | ::: Whether to bind the value of the inputElement
56 |
57 | ```html
58 |
59 |
65 |
66 | ```
67 |
68 | :::
69 |
70 | ## disabledDate
71 |
72 | :::
73 |
74 | ```html
75 |
76 |
84 |
85 | ```
86 |
87 | :::
88 |
89 | :::
90 |
91 | ## insertTo
92 |
93 | ::: **Set** the DOM node that the picker insertTo, *body/parent*
94 |
95 | ```html
96 |
97 |
104 |
105 | ```
106 |
107 | :::
108 |
109 | ## Theme
110 |
111 | :::
112 |
113 | ```html
114 |
115 |
125 |
126 | ```
127 |
128 | :::
129 |
130 | ## Todo
131 |
132 | ::: Support *ClassName*、*Style*、*Size*、*unlinkPanels*、*zIndex*、*more format*、*readonly*
133 |
134 | ```html
135 |
136 | :::
137 |
--------------------------------------------------------------------------------
/Doc/src/views/en/home.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ## START
6 |
7 | Import styles, **or you can customize theme colors** [Here](#/en/doc/theme)
8 |
9 | ```js
10 | import {createDatePicker} from 'better-datepicker'
11 | import 'better-datepicker/dist/index.css'
12 |
13 | ```
14 |
15 | you can also
16 |
17 | ```html
18 |
19 | Including children, find the first inputElement
20 |
21 |
22 | ```
23 |
24 | ```js
25 | const input = document.querySelector('#wrapper')
26 | createDatePicker(input)
27 | ```
28 |
29 | ## OPTIONS
30 |
31 | *createDatePicker* accepts two parameters. The first is the **InputElement**, and the second is the **configuration
32 | item**. For more details [Here](#/en/doc/options)
33 |
34 | ```js
35 | const input = document.querySelector('#input')
36 | createDatePicker(input,{
37 | placement: 'bottom',
38 | type: 'date',
39 | zIndex: 2000,
40 | format: 'yyyy/MM/dd'
41 | })
42 | ```
43 |
44 | ## METHODS
45 |
46 | ```js
47 | const input = document.querySelector('#input')
48 | const picker = createDatePicker(input)
49 |
50 | picker.destroyed() //destroyed the datepicker
51 |
52 | picker.update({placement: 'top'}) //Update configuration, destroyed old datepicker
53 |
54 | picker.onChange((date)=>{
55 | console.log('The current date is ' + date)
56 | })
57 |
58 | picker.getCurrentDate()
59 |
60 | picker.open() // to open picker
61 |
62 | picker.close() // to close picker
63 |
64 | picker.clear() // to clear picker
65 |
66 | //more
67 | ```
68 |
69 | ## Locale
70 |
71 | **global config**
72 |
73 | ```js
74 | import {locale} from "better-datepicker"
75 | import zhCn from 'better-datepicker/dist/locale_es/zh-cn' // es
76 | //require('better-datepicker/dist/locale_umd/zh-cn') // cjs
77 | locale(zhCn)
78 | ```
79 |
80 | or
81 |
82 | ```js
83 | const localeConfig = {
84 | name: "en",
85 | weekStart: 0,
86 | yearStart: 1,
87 | weekdays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
88 | months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
89 | yearFormat: "yyyy",
90 | weekFormat: 'yyyy-ww'
91 | }
92 | locale(en)
93 | ```
94 |
95 | ## destroy
96 |
97 | ```js
98 | import {destroy} from "better-datepicker"
99 |
100 | const picker1 = createDatePicker('#input1')
101 |
102 | const picker1 = createDatePickerc('#input2')
103 | destroy([picker1,picker2]) // destroyed picker1 and picker 2
104 | destroy() //destroyed all
105 | ```
106 |
107 | ## TODOLIST
108 |
109 | | versions | Description|
110 | |---------|------------ |
111 | | 0.5.0 | support unlinkPanels、zIndex、readonly、default-value、className、style、size .... |
112 | | 0.7.0 | support extends plugins |
113 | | 0.9.0 | support time picker |
114 |
--------------------------------------------------------------------------------
/Doc/src/views/en/locale.md:
--------------------------------------------------------------------------------
1 | # Locale
2 |
3 | We provide some regional profiles
4 |
5 | ```js
6 | import {locale} from "better-datepicker"
7 | import zhCn from 'better-datepicker/dist/locale_es/zh-cn' // es
8 | //require('better-datepicker/dist/locale_umd/zh-cn') // cjs
9 | locale(zhCn)
10 | ```
11 |
12 | or you can add it yourself, pull request
13 |
14 | ```js
15 | const localeConfig = {
16 | name: "en",
17 | weekStart: 0,
18 | yearStart: 1,
19 | weekdays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
20 | months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
21 | yearFormat: "yyyy",
22 | weekFormat: 'yyyy-ww'
23 | }
24 | locale(en)
25 | ```
26 |
27 | | Locale/Language | Abbreviation/Link |
28 | | ----------------- | -------------------------------- |
29 | | Afghanistan | [af](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/af.ts) |
30 | | Brazil | [br](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/br.ts) |
31 | | English | [en](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en.ts) |
32 | | Australia | [en-au](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en-au.ts) |
33 | | Canada | [en-au](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en-ca.ts) |
34 | | England | [en-gb](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en-gb.ts) |
35 | | Ireland | [en-ie](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en-ie.ts) |
36 | | Spain | [es](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/es.ts) |
37 | | Finland | [fi](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/fi.ts) |
38 | | Angola | [fo](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/fo.ts) |
39 | | Faroe Islands | [fr](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/fr.ts) |
40 | | Croatia | [hr](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/hr.ts) |
41 | | Haiti | [ht](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/ht.ts) |
42 | | Italy | [it](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/it.ts) |
43 | | Japan | [ja](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/ja.ts) |
44 | | Korea(South) | [ko](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/ko.ts) |
45 | | Kuwait | [ku](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/ku.ts) |
46 | | Lebanon | [lb](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/lb.ts) |
47 | | Laos | [lo](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/lo.ts) |
48 | | Ukraine | [uk](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/uk.ts) |
49 | | Uzbekistan | [uz](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/uz.ts) |
50 | | Chinese | [zh](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/zh.ts) |
51 | | Simplified Chinese | [zh-cn](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/zh-cn.ts) |
52 | | Hong Kong China | [zh-hk](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/zh-hk.ts) |
53 | | Taiwan China | [zh-tw](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/zh-tw.ts) |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/Doc/src/views/en/method.md:
--------------------------------------------------------------------------------
1 | Instance method
2 |
3 | ## clear
4 |
5 | ::: **clear** date and InputElement value
6 |
7 | ```html
8 |
9 |
10 | clear
11 |
12 |
18 |
19 | ```
20 |
21 | :::
22 |
23 | ## destroyed
24 |
25 | ::: **destroyed** the datepicker, Instance methods are not available except *update*
26 |
27 | ```html
28 |
29 |
30 | destroyed
31 |
32 |
37 |
38 | ```
39 |
40 | :::
41 |
42 | ## update
43 |
44 | ::: **update** the datepicker
45 |
46 | ```html
47 |
48 |
49 | update
50 |
51 |
56 |
57 | ```
58 |
59 | :::
60 |
61 | ## onChange
62 |
63 | ::: It supports passing in a **callback**, which will be call after date change
64 |
65 | ```html
66 |
67 |
68 |
69 |
76 |
77 | ```
78 |
79 | :::
80 |
81 | ## getCurrentDate
82 |
83 | ::: **getCurrentDate**
84 |
85 | ```html
86 |
87 |
88 | get date
89 |
90 |
100 |
101 | ```
102 |
103 | :::
104 |
105 | ## open/close
106 |
107 | ::: **Manual open/close**
108 | If *open/close* is executed in the event listener callback. please use **e.stopPropagation()** to prevent events from
109 | bubbling onto the **Body**
110 |
111 | ```html
112 |
113 |
114 | open
115 |
116 |
123 |
124 | ```
125 |
126 | :::
127 |
--------------------------------------------------------------------------------
/Doc/src/views/en/options.md:
--------------------------------------------------------------------------------
1 | # Options
2 |
3 | configuration of better-datepicker
4 |
5 | ```js
6 | const input = document.querySelector('#input')
7 | const options = {
8 | placement: 'bottom',
9 | type: 'date',
10 | zIndex: 2000,
11 | format: 'yyyy/MM/dd',
12 | }
13 | createDatePicker(input,options)
14 | ```
15 |
16 | **Global config**
17 |
18 | ```
19 | import {locale,defaultOptions} from 'better-datepicker'
20 | defaultOptions({
21 | themeColor: '#1890ff',
22 | rangeBgColor: '#e6f7ff',
23 | tdColor: '#5f5f5f',
24 | thColor: '#5f5f5f'
25 | })
26 | ```
27 |
28 | | Property | Description | Type | Accepted Values | Default |
29 | | ----------------- | -------------------------------- | --------------- | ------ | ------ |
30 | | type | Type of datepicker | string | date/date-range/month/month-range/year/year-range/week | date |
31 | | format | To set the date format | string | - | yyyy/MM/dd |
32 | | classes | To set the picker wrapper classes(**It will have a logo prefix: better-datepicker**) | string[] | - | - |
33 | | zIndex | z-index of Picker | number | - | 2000
34 | | style | To set the picker wrapper style(**zIndex Priority is lower than above**) | Object | - | - |
35 | | placement | Placement of datepicker | string | top/bottom/right/left | bottom |
36 | | disabledDate | Specifies the date that cannot be selected | function | - | - |
37 | | offset | Distance between Picker and inputElement | number | - | 12 |
38 | | insertTo | Name of the node inserted | string | body/parent | body |
39 | | binding | Bind the value of the inputElement | boolean | - | true |
40 | | themeColor | Theme color(selected、hover、range-start、range-end), like *#2ECC71* | string | - | -
41 | | rangeBgColor | The backgroundColor that element is in range ,It's usually lighter than the themeColor | string | - | -
42 | | tdColor | Td text color | string | - | -
43 | | thColor | Th text color | string | - | -
44 |
45 | ## TODO
46 |
47 |
--------------------------------------------------------------------------------
/Doc/src/views/en/start.md:
--------------------------------------------------------------------------------
1 | # START
2 |
3 | First, use **npm** or **yarn** to install *better-datepicker*
4 |
5 | ```shell script
6 | npm install better-datepicker
7 | yarn add better-datepicker
8 | ```
9 |
10 | Then, import *better-datepicker* and css
11 |
12 | ```js
13 | import {createDatePicker} from 'better-datepicker'
14 | import 'better-datepicker/dist/index.css'
15 | ```
16 |
17 | ## CreateDatePicker
18 |
19 | createDatePicker accepts two parameters. The first is the InputElement, and the second is the configuration item.
20 |
21 | ```
22 | const input = document.querySelector('#input')
23 | const picker = createDatePicker(input,{
24 | type: 'week',
25 | offset: 20,
26 | placement: 'bottom'
27 | })
28 | ```
29 |
30 | ## defaultOptions
31 |
32 | ```
33 | import {locale,defaultOptions} from 'better-datepicker'
34 | defaultOptions({
35 | themeColor: '#1890ff',
36 | rangeBgColor: '#e6f7ff',
37 | tdColor: '#5f5f5f',
38 | thColor: '#5f5f5f'
39 | })
40 | ```
41 |
42 | ## locale
43 |
44 | ```
45 | import {locale} from 'better-datepicker'
46 | import ZH from 'better-datepicker/dist/locale_es/zh-cn'
47 | locale(ZH)
48 | ```
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Doc/src/views/en/theme.md:
--------------------------------------------------------------------------------
1 | # Theme
2 |
3 | We provide 3 ways for custom theme. For now we only support custom of **color**, totally there are 5 colors
4 |
5 | ## SCSS Variables
6 |
7 | `better-datepicker` uses **SCSS** as a pre-compiled language for the selector, you can modify it by
8 | downloading
9 | scss code directly.
10 |
11 | Of course, you need to use *loader* to parse the code.
12 |
13 | ```scss
14 | $theme-color: #2ECC71;
15 | $range-color: #eafaf1;
16 | $text-header-color: #858585;
17 | $text-th-color: #969595;
18 | $text-tbody-color: #5f5f5f;
19 | ```
20 |
21 | ## Style Configuration
22 |
23 | After configuring the style on this page, you can download the css code and put it into your project file and import it.
24 |
25 |
26 |
27 | ## Options
28 |
29 | ```js
30 | import {defaultOptions} from "better-datepicker"
31 | defaultOptions({
32 | themeColor: '#1890ff',
33 | rangeBgColor: '#e6f7ff',
34 | tdColor: '#5f5f5f',
35 | thColor: '#5f5f5f'
36 | })
37 | ```
38 |
39 | or
40 |
41 | only changes theme of the **current instance**
42 |
43 | ```js
44 | const input = document.querySelector('#input')
45 | const instance = createDatePicker(input,{
46 | themeColor: '#2a3a4a',
47 | rangeBgColor: '#bbbbbb',
48 | tdColor: '#5f5f5f',
49 | thColor: '#5f5f5f'
50 | })
51 |
52 | ```
53 |
--------------------------------------------------------------------------------
/Doc/src/views/en/type.md:
--------------------------------------------------------------------------------
1 | datepicker Type
2 |
3 | ## Date
4 |
5 | ::: Default mode is Date, the basic unit is [day]
6 |
7 | ```html
8 |
9 |
14 |
15 | ```
16 |
17 | :::
18 |
19 | ## Date-range
20 |
21 | ::: **date-range** mode can choose the start time and the end time.
22 |
23 | ```html
24 |
25 |
31 |
32 | ```
33 |
34 | :::
35 |
36 | ## Month
37 |
38 | ::: The basic unit is [month], and the date you choose is accurate to [day], which is the first day of the month
39 |
40 | ```html
41 |
42 |
48 |
49 | ```
50 |
51 | :::
52 |
53 | ## Month-range
54 |
55 | ::: The basic unit is [month], and the range you choose is a **month range**
56 |
57 | ```html
58 |
59 |
65 |
66 | ```
67 |
68 | :::
69 |
70 | ## Year
71 |
72 | :::
73 |
74 | ```html
75 |
76 |
83 |
84 | ```
85 |
86 | :::
87 |
88 | :::
89 |
90 | ## Year-range
91 |
92 | :::
93 |
94 | ```html
95 |
96 |
103 |
104 | ```
105 |
106 | :::
107 |
108 | ## Week
109 |
110 | :::
111 |
112 | ```html
113 |
114 |
122 |
123 | ```
124 |
125 | :::
126 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/api.md:
--------------------------------------------------------------------------------
1 | # API
2 |
3 | ## 删除实例
4 |
5 | **批量删除**, 如果不传参数, **则删除所有实例**
6 |
7 | ```js
8 | import {destroy} from "better-datepicker"
9 |
10 | const picker1 = createDatePicker('#input1')
11 |
12 | const picker1 = createDatePickerc('#input2')
13 | destroy([picker1,picker2]) // destroyed picker1 and picker 2
14 | destroy() //destroyed all
15 | ```
16 |
17 | ## TODO
18 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/basic.md:
--------------------------------------------------------------------------------
1 | Datepicker options 基础配置
2 |
3 | ## format
4 |
5 | ::: 输入框值**格式**, 如果设置带有*ww/w*,当前日期会改为**当周第一天**绑定到输入框
6 |
7 | ```html
8 |
9 |
15 |
16 | ```
17 |
18 | :::
19 |
20 | ## placement
21 |
22 | ::: 弹出框的**位置**
23 |
24 | ```html
25 |
26 |
30 |
31 | ```
32 |
33 | :::
34 |
35 | ## offset
36 |
37 | ::: 弹出框距离输入框的距离
38 |
39 | ```html
40 |
41 |
48 |
49 | ```
50 |
51 | :::
52 |
53 | ## binding
54 |
55 | ::: 是否**绑定**到输入框的值
56 |
57 | ```html
58 |
59 |
65 |
66 | ```
67 |
68 | :::
69 |
70 | ## disabledDate
71 |
72 | ::: **禁用**的日期
73 |
74 | ```html
75 |
76 |
84 |
85 | ```
86 |
87 | :::
88 |
89 | :::
90 |
91 | ## insertTo
92 |
93 | ::: 设置弹出框的父节点,当前只接受 *body/parent*, 后续版本会增加接受一个**dom节点**
94 |
95 | ```html
96 |
97 |
104 |
105 | ```
106 |
107 | :::
108 |
109 | ## Theme
110 |
111 | ::: **配置**主题
112 |
113 | ```html
114 |
115 |
125 |
126 | ```
127 |
128 | :::
129 |
130 | ## Todo
131 |
132 | ::: Support *ClassName*、*Style*、*Size*、*unlinkPanels*、*zIndex*、*more format*、*readonly*
133 |
134 | ```html
135 |
136 | :::
137 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/home.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ## START
6 |
7 | 引入样式, **或者你可以自定义主题颜色** [这里](#/en/doc/theme)
8 |
9 | ```js
10 | import {createDatePicker} from 'better-datepicker'
11 | import 'better-datepicker/dist/index.css'
12 |
13 | const input = document.querySelector('#input')
14 | createDatePicker(input)
15 | ```
16 |
17 | 你同样可以
18 |
19 | ```html
20 |
21 | 如果传入的dom节点不是Input元素,则会在子元素里面逐级寻找
22 |
23 |
24 | ```
25 |
26 | ```js
27 | const input = document.querySelector('#wrapper')
28 | createDatePicker(input)
29 | ```
30 |
31 | ## OPTIONS
32 |
33 | *createDatePicker* 接受两个参数 第一个是需要绑定的**输入框节点**, 第二个是选择器局部配置[更多详情](#/en/doc/options)
34 |
35 | ```js
36 | const input = document.querySelector('#input')
37 | createDatePicker(input,{
38 | placement: 'bottom',
39 | type: 'date',
40 | zIndex: 2000,
41 | format: 'yyyy/MM/dd'
42 | })
43 | ```
44 |
45 | ## METHODS 实例方法
46 |
47 | ```js
48 | const input = document.querySelector('#input')
49 | const picker = createDatePicker(input)
50 |
51 | picker.destroyed() //destroyed the datepicker
52 |
53 | picker.update({placement: 'top'}) //Update configuration, destroyed old datepicker
54 |
55 | picker.onChange((date)=>{
56 | console.log('The current date is ' + date)
57 | })
58 |
59 | picker.getCurrentDate()
60 |
61 | picker.open() // to open picker
62 |
63 | picker.close() // to close picker
64 |
65 | picker.clear()
66 |
67 | //more
68 | ```
69 |
70 | ## Locale 地区
71 |
72 | **全局配置**
73 |
74 | ```js
75 | import {locale} from "better-datepicker"
76 | import zhCn from 'better-datepicker/dist/locale_es/zh-cn' // es
77 | //require('better-datepicker/dist/locale_umd/zh-cn') // cjs
78 | locale(zhCn)
79 | ```
80 |
81 | 如果安装包没有提供的地区文件,可以自定义
82 |
83 | ```js
84 | const localeConfig = {
85 | name: "en",
86 | weekStart: 0,
87 | yearStart: 1,
88 | weekdays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
89 | months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
90 | yearFormat: "yyyy",
91 | weekFormat: 'yyyy-ww'
92 | }
93 | locale(en)
94 | ```
95 |
96 | ## destroy 删除所有实例
97 |
98 | ```js
99 | import {destroy} from "better-datepicker"
100 |
101 | const picker1 = createDatePicker('#input1')
102 |
103 | const picker1 = createDatePickerc('#input2')
104 | destroy([picker1,picker2]) // 删除 picker1 和 picker 2
105 | destroy() // 如果不传参,则默认是删除所有实例
106 | ```
107 |
108 | ## TODOLIST
109 |
110 | | versions | Description|
111 | |---------|------------ |
112 | | 0.5.0 | support unlinkPanels、zIndex、readonly、default-value、className、style、size .... |
113 | | 0.7.0 | support extends plugins |
114 | | 0.9.0 | support time picker |
115 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/locale.md:
--------------------------------------------------------------------------------
1 | # Locale 地区设置
2 |
3 | 安装包提供一部分地区静态配置文件
4 |
5 | ```js
6 | import {locale} from "better-datepicker"
7 | import zhCn from 'better-datepicker/dist/locale_es/zh-cn' // es
8 | //require('better-datepicker/dist/locale_umd/zh-cn') // cjs
9 | locale(zhCn)
10 | ```
11 |
12 | 如果安装包没有提供的地区文件,可以自定义
13 |
14 | ```js
15 | const localeConfig = {
16 | name: "en",
17 | weekStart: 0,
18 | yearStart: 1,
19 | weekdays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
20 | months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
21 | yearFormat: "yyyy",
22 | weekFormat: 'yyyy-ww'
23 | }
24 | locale(en)
25 | ```
26 |
27 | | 地区/语言 | 缩写/链接 |
28 | | ----------------- | -------------------------------- |
29 | | 阿富汗 | [af](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/af.ts) |
30 | | 巴西 | [br](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/br.ts) |
31 | | 英语 | [en](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en.ts) |
32 | | 澳大利亚 | [en-au](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en-au.ts) |
33 | | 加拿大 | [en-au](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en-ca.ts) |
34 | | 英国 | [en-gb](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en-gb.ts) |
35 | | 爱尔兰 | [en-ie](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/en-ie.ts) |
36 | | 西班牙 | [es](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/es.ts) |
37 | | 芬兰 | [fi](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/fi.ts) |
38 | | 法罗群岛 | [fo](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/fo.ts) |
39 | | 法国 | [fr](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/fr.ts) |
40 | | 克罗地亚 | [hr](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/hr.ts) |
41 | | 海地 | [ht](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/ht.ts) |
42 | | 意大利 | [it](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/it.ts) |
43 | | 日本 | [ja](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/ja.ts) |
44 | | 韩国 | [ko](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/ko.ts) |
45 | | 科威特 | [ku](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/ku.ts) |
46 | | 黎巴嫩 | [lb](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/lb.ts) |
47 | | 老挝 | [lo](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/lo.ts) |
48 | | 乌克兰 | [uk](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/uk.ts) |
49 | | 乌兹别克斯坦 | [uz](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/uz.ts) |
50 | | 中文 | [zh](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/zh.ts) |
51 | | 简体中文 | [zh-cn](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/zh-cn.ts) |
52 | | 中国香港 | [zh-hk](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/zh-hk.ts) |
53 | | 中国台湾 | [zh-tw](https://github.com/Js-Monkey/better-datepicker/blob/master/locale/zh-tw.ts) |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/method.md:
--------------------------------------------------------------------------------
1 | 示例方法
2 |
3 | ## clear
4 |
5 | ::: **清除** 日期和输入框的值
6 |
7 | ```html
8 |
9 |
10 | clear
11 |
12 |
17 |
18 | ```
19 |
20 | :::
21 |
22 | ## destroyed
23 |
24 | ::: **销毁**选择器,移除弹出框节点,数据将从内部移除。实例不会被清空,但所有函数都会**不可用**
25 |
26 | ```html
27 |
28 |
29 | destroyed
30 |
31 |
36 |
37 | ```
38 |
39 | :::
40 |
41 | ## update
42 |
43 | ::: **更新**选择器的配置,事实上它等于 *destroyed + create*, 之前的弹出框节点会被移除
44 |
45 | ```html
46 |
47 |
48 | update
49 |
50 |
55 |
56 | ```
57 |
58 | :::
59 |
60 | ## onChange
61 |
62 | ::: 支持传入一个回调函数, 在选择日期变化后,会触发这个回调
63 |
64 | ```html
65 |
66 |
67 |
68 |
75 |
76 | ```
77 |
78 | :::
79 |
80 | ## getCurrentDate
81 |
82 | ::: 获取当前选择的日期,如果不存在则返回**null**
83 |
84 | ```html
85 |
86 |
87 | get date
88 |
89 |
99 |
100 | ```
101 |
102 | :::
103 |
104 | ## open/close
105 |
106 | ::: **手动触发 open/close**
107 | 需要注意的是,如果在点击事件监听回调函数中使用这两个函数,会触发组件自带的*clickoutside*,导致**不生效**
108 | 或可以使用**e.stopPropagation()** 使点击事件不再冒泡到*body上面*
109 |
110 | ```html
111 |
112 |
113 | open
114 |
115 |
122 |
123 | ```
124 |
125 | :::
126 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/options.md:
--------------------------------------------------------------------------------
1 | # Options
2 |
3 | 日期选择器配置
4 |
5 | ```js
6 | const input = document.querySelector('#input')
7 | const options = {
8 | placement: 'bottom',
9 | type: 'date',
10 | zIndex: 2000,
11 | format: 'yyyy/MM/dd',
12 | }
13 | createDatePicker(input,options)
14 | ```
15 |
16 | | Property | Description | Type | Accepted Values | Default |
17 | | ----------------- | -------------------------------- | --------------- | ------ | ------ |
18 | | type | 选择器类型 | string | date/date-range/month/month-range/year/year-range/week | date
19 | | format | 格式 | string | - | yyyy/MM/d
20 | | classes | 设置弹出框的classes,**注意,这会携带logo前缀 better-datepicker** | string[] | - | - |
21 | | zIndex | 设置弹出框的z-index | number | - | 2000
22 | | style | 设置弹出框的样式,**需要注意类似z-index这种优先级没有上面高** | Object | - | - |
23 | | offset | 距离输入框的距离 | number | - | 12
24 | | insertTo | 设置弹出框的父节点,设置*body*可以规避 *overflow: hidden* | string | body/parent | body
25 | | binding | 选择日期后是否改变输入框的值 | boolean | - | true
26 | | disabledDate | 决定日期是否被禁用 | Function | - | -
27 | | disabled | 是否禁用整个输出框 | boolean | - | false
28 | | placement | 弹出框弹出的位置 | string | top/bottom/right/left | bottom
29 | | themeColor | 主题颜色(selected、hover、range-start、range-end), like *
30 | #2ECC71* | string | - | -
31 | | rangeBgColor | 处于时间范围的背景色 | string | - | -
32 | | tdColor | Td文字颜色 | string | - | -
33 | | thColor | Th文字颜色 | string | - | -
34 |
35 | ## TODO
36 |
37 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/start.md:
--------------------------------------------------------------------------------
1 | # START
2 |
3 | 首先使用 **npm** 或者 **yarn** 安装 *better-datepicker*
4 |
5 | ```shell script
6 | npm install better-datepicker
7 | yarn add better-datepicker
8 | ```
9 |
10 | 然后引入 *better-datepicker* 和 *css文件*
11 |
12 | ```js
13 | import {createDatePicker} from 'better-datepicker'
14 | import 'better-datepicker/dist/index.css'
15 | ```
16 |
17 | ## CreateDatePicker 创建日期选择器
18 |
19 | *createDatePicker*接受两个参数 **输出框节点**和**局部配置**
20 |
21 | ```
22 | const input = document.querySelector('#input')
23 | const picker = createDatePicker(input,{
24 | type: 'week',
25 | offset: 20,
26 | placement: 'bottom'
27 | })
28 | ```
29 |
30 | ## defaultOptions 全局默认配置
31 |
32 | ```
33 | import {locale,defaultOptions} from 'better-datepicker'
34 | defaultOptions({
35 | themeColor: '#1890ff',
36 | rangeBgColor: '#e6f7ff',
37 | tdColor: '#5f5f5f',
38 | thColor: '#5f5f5f'
39 | })
40 | ```
41 |
42 | ## locale 地区配置
43 |
44 | ```
45 | import {locale} from 'better-datepicker'
46 | import ZH from 'better-datepicker/dist/locale_es/zh-cn'
47 | locale(ZH)
48 | ```
49 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/theme.md:
--------------------------------------------------------------------------------
1 | # Theme 主题
2 |
3 | 提供三种方式用于修改*主题*
4 |
5 | ## SCSS Variables
6 |
7 | `better-datepicker` uses **SCSS** as a pre-compiled language for the selector, you can modify it by
8 | downloading
9 | scss code directly.
10 |
11 | Of course, you need to use *loader* to parse the code.
12 |
13 | ```scss
14 | $theme-color: #2ECC71;
15 | $range-color: #eafaf1;
16 | $text-header-color: #858585;
17 | $text-th-color: #969595;
18 | $text-tbody-color: #5f5f5f;
19 | ```
20 |
21 | ## Style Configuration 配置下载
22 |
23 | 配置完成后,下载引入
24 |
25 |
26 |
27 | ## Options 全局配置
28 |
29 | ```js
30 | import {defaultOptions} from "better-datepicker"
31 | defaultOptions({
32 | themeColor: '#1890ff',
33 | rangeBgColor: '#e6f7ff',
34 | tdColor: '#5f5f5f',
35 | thColor: '#5f5f5f'
36 | })
37 | ```
38 |
39 | 或者局部配置
40 |
41 | ```js
42 | const input = document.querySelector('#input')
43 | const instance = createDatePicker(input,{
44 | themeColor: '#2a3a4a',
45 | rangeBgColor: '#bbbbbb',
46 | tdColor: '#5f5f5f',
47 | thColor: '#5f5f5f'
48 | })
49 |
50 | ```
51 |
--------------------------------------------------------------------------------
/Doc/src/views/zh/type.md:
--------------------------------------------------------------------------------
1 | datepicker Type 选择器类型
2 |
3 | ## Date
4 |
5 | ::: 默认值是*date*, 单位是[**日**]
6 |
7 | ```html
8 |
9 |
13 |
14 | ```
15 |
16 | :::
17 |
18 | ## Date-range
19 |
20 | ::: 选择时间范围,单位是[**日**]
21 |
22 | ```html
23 |
24 |
30 |
31 | ```
32 |
33 | :::
34 |
35 | ## Month
36 |
37 | ::: 基础单位是[**月**],日期是选择月份的**第一天**
38 |
39 | ```html
40 |
41 |
47 |
48 | ```
49 |
50 | :::
51 |
52 | ## Month-range
53 |
54 | ::: 选择时间范围,单位是[**月**]
55 |
56 | ```html
57 |
58 |
64 |
65 | ```
66 |
67 | :::
68 |
69 | ## Year
70 |
71 | ::: 单位是[**年**]
72 |
73 | ```html
74 |
75 |
82 |
83 | ```
84 |
85 | :::
86 |
87 | :::
88 |
89 | ## Year-range
90 |
91 | ::: 选择时间范围,单位是[**年**]
92 |
93 | ```html
94 |
95 |
102 |
103 | ```
104 |
105 | :::
106 |
107 | ## Week
108 |
109 | ::: 得到的日期即是选择的日期,单位是[**日**]。输入框绑定的值是选择日期那周**第一天的周数**,可以被**format**覆盖。 值得注意的时候,如果**format** 包含*w*或者*ww*
110 | ,那么最终处理显示在输入框上的日期依然会被设为当前周的第一天,当然,这不影响你选择日期的值。
111 |
112 | ```html
113 |
114 |
122 |
123 | ```
124 |
125 | :::
126 |
--------------------------------------------------------------------------------
/Doc/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "moduleResolution": "node",
4 | "target": "es5",
5 | "module": "esnext",
6 | "lib": [
7 | "es2015",
8 | "es2016",
9 | "es2017",
10 | "dom"
11 | ],
12 | "strict": true,
13 | "sourceMap": true,
14 | "declaration": true,
15 | "allowSyntheticDefaultImports": true,
16 | "experimentalDecorators": true,
17 | "emitDecoratorMetadata": true,
18 | "noImplicitThis": false,
19 | "declarationDir": "./dist/types",
20 | "outDir": "./dist/lib",
21 | "typeRoots": [
22 | "./node_modules/@types"
23 | ]
24 | },
25 | "include": [
26 | "./src",
27 | "../build"
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Monkey
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Js-Monkey/datepicker/1199144b4e7d54f1893de5c1e8dcebb07571a9e2/README.md
--------------------------------------------------------------------------------
/build/gulpfile.ts:
--------------------------------------------------------------------------------
1 | 'use strict'
2 |
3 | const {series, src, dest} = require('gulp')
4 | const sass = require('gulp-dart-sass')
5 | const cssmin = require('gulp-cssmin')
6 | const rename = require('gulp-rename')
7 |
8 | function compile() {
9 | return src('../src/assets/*.scss')
10 | .pipe(sass.sync())
11 | .pipe(rename(function (path: any) {
12 | path.basename = "index"
13 | path.extname = ".css"
14 | }))
15 | .pipe(cssmin())
16 | .pipe(dest('../dist'))
17 | }
18 |
19 | exports.build = series(compile)
20 |
--------------------------------------------------------------------------------
/build/jest.config.ts:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | transform: {
3 | '.(ts|tsx)': 'ts-jest'
4 | },
5 | testEnvironment: 'jsdom',
6 | testRegex: '/tests/.*\\.(test|spec)\\.(ts)$',
7 | moduleFileExtensions: ['ts', 'tsx', 'js'],
8 | coveragePathIgnorePatterns: ['/node_modules/', '/src/svg'],
9 | coverageThreshold: {
10 | global: {
11 | functions: 2,
12 | lines: 1,
13 | statements: 1
14 | }
15 | },
16 | collectCoverageFrom: ['src/*.{ts}', 'src/**/*.{js,ts}']
17 | }
18 |
--------------------------------------------------------------------------------
/build/locales.ts:
--------------------------------------------------------------------------------
1 | const json = require("rollup-plugin-json")
2 | const typescript = require("rollup-plugin-typescript2")
3 | const commonjs = require("rollup-plugin-commonjs")
4 | const resolve = require("rollup-plugin-node-resolve")
5 | const sourceMaps = require("rollup-plugin-sourcemaps")
6 |
7 | const {rollup} = require('rollup')
8 | const fs = require('fs')
9 | const {terser} = require('rollup-plugin-terser')
10 |
11 |
12 | async function build(option: any) {
13 | const bundle = await rollup(option.input)
14 | await bundle.write(option.output_es)
15 | await bundle.write(option.output_umd)
16 | }
17 |
18 | const rollupConfig = (config: any) => {
19 | const {input, fileName, name} = config
20 | return {
21 | input: {
22 | input,
23 | plugins: [
24 | json(),
25 | typescript({useTsconfigDeclarationDir: true}),
26 | commonjs(),
27 | resolve(),
28 | sourceMaps(),
29 | terser()
30 | ],
31 | },
32 | output_es: {
33 | file: './dist/locale_es/' + fileName,
34 | format: 'es',
35 | name
36 | },
37 | output_umd: {
38 | file: './dist/locale_umd/' + fileName,
39 | format: 'umd',
40 | name
41 | }
42 | }
43 | }
44 |
45 | (async () => {
46 | try {
47 | const locales = await fs.readdirSync('./locale')
48 | locales.forEach((l: string) => {
49 | build(rollupConfig({
50 | input: `./locale/${l}`,
51 | fileName: l.replace('ts', 'js'),
52 | name: l.split('.ts').shift()
53 | }))
54 | })
55 | await fs.readFile('./dist/types/index.d.ts', 'utf8', function (err: null, data: string) {
56 | if (err) {
57 | throw err;
58 | }
59 | const curData = data.replace(/\.\//g, './types/')
60 | fs.writeFile('./dist/index.d.ts', curData, 'utf8', function (error: null) {
61 | if (error) {
62 | throw error;
63 | }
64 | });
65 | })
66 | } catch (e) {
67 | console.error(e)
68 | }
69 | })()
70 |
--------------------------------------------------------------------------------
/build/rollup.config.ts:
--------------------------------------------------------------------------------
1 | import resolve from 'rollup-plugin-node-resolve'
2 | import commonjs from 'rollup-plugin-commonjs'
3 | import sourceMaps from 'rollup-plugin-sourcemaps'
4 | import camelCase from 'lodash.camelcase'
5 | import typescript from 'rollup-plugin-typescript2'
6 | import json from 'rollup-plugin-json'
7 |
8 | const pkg = require('../package.json')
9 | import {terser} from 'rollup-plugin-terser'
10 |
11 | const libraryName = 'better-day-time-picker'
12 | const config = {
13 | input: ['src/index.ts'],
14 | output: [
15 | {file: pkg.main, name: camelCase(libraryName), format: 'umd', sourcemap: false},
16 | {file: pkg.module, format: 'es', sourcemap: false},
17 | ],
18 | external: [],
19 | watch: {
20 | include: 'src/**',
21 | },
22 | plugins: [
23 | json(),
24 | typescript({useTsconfigDeclarationDir: true}),
25 | commonjs(),
26 | resolve(),
27 | sourceMaps(),
28 | terser()
29 | ],
30 | }
31 |
32 | export default config
33 |
--------------------------------------------------------------------------------
/locale/af.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "af",
3 | weekStart: 1,
4 | months: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
5 | weekdays: ["So", "Ma", "Di", "Wo", "Do", "Vr", "Sa"],
6 | weekFormat: 'yyyy-ww'
7 | };
8 |
--------------------------------------------------------------------------------
/locale/br.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "br",
3 | weekStart: 1,
4 | months: ["Gen", "Cʼhwe", "Meu", "Ebr", "Mae", "Eve", "Gou", "Eos", "Gwe", "Her", "Du", "Ker"],
5 | weekdays: ["Su", "Lu", "Me", "Mer", "Ya", "Gw", "Sa"],
6 | weekFormat: 'yyyy-ww'
7 | };
8 |
--------------------------------------------------------------------------------
/locale/en-au.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "en-au",
3 | weekStart: 1,
4 | months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
5 | weekdays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
6 | weekFormat: 'yyyy-ww'
7 | };
8 |
--------------------------------------------------------------------------------
/locale/en-ca.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "en-ca",
3 | months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
4 | weekdays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
5 | weekFormat: 'yyyy-ww'
6 | };
7 |
--------------------------------------------------------------------------------
/locale/en-gb.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "en-gb",
3 | months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
4 | weekdays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
5 | weekFormat: 'yyyy-ww',
6 | weekStart: 1,
7 | yearStart: 4,
8 | };
9 |
--------------------------------------------------------------------------------
/locale/en-ie.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'en-ie',
3 | weekStart: 1,
4 | months: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
5 | weekdays: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6 | }
7 |
--------------------------------------------------------------------------------
/locale/en.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "en",
3 | weekStart: 0,
4 | weekdays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
5 | months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
6 | yearFormat: "yyyy",
7 | weekFormat: 'yyyy-ww'
8 | };
9 |
--------------------------------------------------------------------------------
/locale/es.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "es",
3 | months: ["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"],
4 | weekdays: ["do", "lu", "ma", "mi", "ju", "vi", "sá"],
5 | weekStart: 1,
6 | weekFormat: 'yyyy-ww'
7 | };
8 |
--------------------------------------------------------------------------------
/locale/fi.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "fi",
3 | weekdays: ["su", "ma", "ti", "ke", "to", "pe", "la"],
4 | months: ["tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu"],
5 | weekStart: 1,
6 | weekFormat: 'yyyy-ww',
7 | yearStart: 4
8 | };
9 |
--------------------------------------------------------------------------------
/locale/fo.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "fo",
3 | weekStart: 1,
4 | months: ["jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des"],
5 | weekdays: ["su", "má", "tý", "mi", "hó", "fr", "le"],
6 | weekFormat: 'yyyy-ww'
7 | };
8 |
--------------------------------------------------------------------------------
/locale/fr.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "fr",
3 | weekdays: ["di", "lu", "ma", "me", "je", "ve", "sa"],
4 | months: ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."],
5 | weekStart: 1,
6 | weekFormat: 'yyyy-ww',
7 | yearStart: 4,
8 | };
9 |
--------------------------------------------------------------------------------
/locale/hr.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "hr",
3 | weekdays: ["ne", "po", "ut", "sr", "če", "pe", "su"],
4 | months: ["sij.", "velj.", "ožu.", "tra.", "svi.", "lip.", "srp.", "kol.", "ruj.", "lis.", "stu.", "pro."],
5 | weekStart: 1,
6 | weekFormat: 'yyyy-ww'
7 | };
8 |
--------------------------------------------------------------------------------
/locale/ht.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "ht",
3 | months: ["jan.", "fev.", "mas", "avr.", "me", "jen", "jiyè.", "out", "sept.", "okt.", "nov.", "des."],
4 | weekdays: ["di", "le", "ma", "mè", "je", "va", "sa"],
5 | weekFormat: 'yyyy-ww'
6 | };
7 |
--------------------------------------------------------------------------------
/locale/it.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "it",
3 | weekdays: ["do", "lu", "ma", "me", "gi", "ve", "sa"],
4 | weekStart: 1,
5 | months: ["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"],
6 | weekFormat: 'yyyy-ww'
7 | };
8 |
--------------------------------------------------------------------------------
/locale/ja.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "ja",
3 | weekdays: "日_月_火_水_木_金_土".split("_"),
4 | months: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
5 | weekFormat: 'yyyy-ww'
6 | };
7 |
--------------------------------------------------------------------------------
/locale/ko.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'ko',
3 | weekdays: ["일", "월", "화", "수", "목", "금", "토"],
4 | months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
5 | weekFormat: 'yyyy-ww'
6 | }
7 |
--------------------------------------------------------------------------------
/locale/ku.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'ku',
3 | weekStart: 6,
4 | months: ["کانونی دووەم", "شوبات", "ئازار", "نیسان", "ئایار", "حوزەیران", "تەمموز", "ئاب", "ئەیلوول", "تشرینی یەكەم", "تشرینی دووەم", "كانونی یەکەم"],
5 | weekdays: ["ی", "د", "س", "چ", "پ", "ه", "ش"],
6 | weekFormat: 'yyyy-ww'
7 | }
8 |
--------------------------------------------------------------------------------
/locale/lb.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'lb',
3 | weekStart: 1,
4 | months: ["Jan.", "Febr.", "Mrz.", "Abr.", "Mee", "Jun.", "Jul.", "Aug.", "Sept.", "Okt.", "Nov.", "Dez."],
5 | weekdays: ["So", "Mé", "Dë", "Më", "Do", "Fr", "Sa"],
6 | weekFormat: 'yyyy-ww'
7 | }
8 |
--------------------------------------------------------------------------------
/locale/lo.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'lo',
3 | months: ["ມັງກອນ", "ກຸມພາ", "ມີນາ", "ເມສາ", "ພຶດສະພາ", "ມິຖຸນາ", "ກໍລະກົດ", "ສິງຫາ", "ກັນຍາ", "ຕຸລາ", "ພະຈິກ", "ທັນວາ"],
4 | weekdays: ["ທ", "ຈ", "ອຄ", "ພ", "ພຫ", "ສກ", "ສ"],
5 | weekFormat: 'yyyy-ww'
6 | }
7 |
--------------------------------------------------------------------------------
/locale/uk.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'uk',
3 | weekdays: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
4 | months: 'січ_лют_бер_квiт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
5 | weekStart: 1,
6 | weekFormat: 'yyyy-ww'
7 | }
8 |
--------------------------------------------------------------------------------
/locale/uz.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'uz',
3 | weekStart: 1,
4 | months: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
5 | weekdays: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
6 | weekFormat: 'yyyy-ww'
7 | }
8 |
--------------------------------------------------------------------------------
/locale/zh-cn.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'zh-cn',
3 | weekdays: '日_一_二_三_四_五_六'.split('_'),
4 | months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
5 | weekStart: 1,
6 | yearFormat: 'yyyy年',
7 | weekFormat: 'yyyy-ww周',
8 | yearStart: 4,
9 | }
10 |
--------------------------------------------------------------------------------
/locale/zh-hk.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'zh-hk',
3 | months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
4 | weekdays: '日_一_二_三_四_五_六'.split('_'),
5 | yearFormat: 'yyyy年',
6 | weekFormat: 'yyyy-ww周'
7 | }
8 |
--------------------------------------------------------------------------------
/locale/zh-tw.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'zh-tw',
3 | weekdays: '日_一_二_三_四_五_六'.split('_'),
4 | months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
5 | }
6 |
--------------------------------------------------------------------------------
/locale/zh.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'zh',
3 | weekdays: '日_一_二_三_四_五_六'.split('_'),
4 | months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
5 | weekStart: 1,
6 | yearFormat: 'yyyy年',
7 | weekFormat: 'yyyy-ww周',
8 | yearStart: 4
9 | }
10 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "better-datepicker",
3 | "version": "0.2.0",
4 | "description": "better-datepicker",
5 | "main": "dist/betterDatePicker.umd.js",
6 | "module": "dist/betterDatePicker.es5.js",
7 | "scripts": {
8 | "dev": "vite",
9 | "build:demo": "vite build",
10 | "serve": "vite preview",
11 | "build:css": "tsc build/gulpfile.ts && gulp build --gulpfile build/gulpfile.js && rm -rf build/gulpfile.js",
12 | "prebp": "rimraf dist",
13 | "build": "tsc --module commonjs && rollup -c build/rollup.config.ts && npm run build:locale && npm run build:css && rm -rf .rpt2_cache",
14 | "build:locale": "tsc build/locales.ts && node build/locales.js && rm -rf build/locales.js",
15 | "test": "jest --coverage",
16 | "test:watch": "jest --coverage --watch",
17 | "test:prod": "npm run lint && npm run test -- --no-cache",
18 | "lint": "eslint src --fix --ext .ts,.tsx"
19 | },
20 | "jest": {
21 | "preset": "./build/jest.config.ts"
22 | },
23 | "lint-staged": {
24 | "{src,test}/**/*.ts": [
25 | "eslint",
26 | "git add"
27 | ]
28 | },
29 | "devDependencies": {
30 | "@types/gulp-dart-sass": "^1.0.0",
31 | "@types/gulp-rename": "^2.0.0",
32 | "@types/jest": "^25.2.1",
33 | "@types/markdown-it": "^12.0.1",
34 | "@typescript-eslint/eslint-plugin": "^3.7.1",
35 | "@typescript-eslint/parser": "^3.7.1",
36 | "@vitejs/plugin-vue": "^1.1.4",
37 | "@vue/compiler-sfc": "^3.0.5",
38 | "better-datepicker": "0.1.9",
39 | "dart-sass": "^1.25.0",
40 | "element-plus": "^1.0.2-beta.35",
41 | "eslint": "^7.5.0",
42 | "eslint-config-prettier": "^6.11.0",
43 | "eslint-plugin-prettier": "^3.1.4",
44 | "gulp": "^4.0.2",
45 | "gulp-cssmin": "^0.2.0",
46 | "gulp-dart-sass": "^1.0.2",
47 | "gulp-rename": "^2.0.0",
48 | "gulp-uglify": "^3.0.2",
49 | "highlight.js": "^9.16.2",
50 | "jest": "^25.0.0",
51 | "jest-config": "^25.0.0",
52 | "markdown-it": "^12.0.4",
53 | "markdown-it-anchor": "^7.0.2",
54 | "nprogress": "^0.2.0",
55 | "rollup": "^2.37.1",
56 | "rollup-plugin-commonjs": "^10.1.0",
57 | "rollup-plugin-json": "^3.1.0",
58 | "rollup-plugin-node-resolve": "^5.2.0",
59 | "rollup-plugin-sourcemaps": "^0.4.2",
60 | "rollup-plugin-terser": "^5.2.0",
61 | "rollup-plugin-typescript2": "^0.23.0",
62 | "ts-jest": "^25.4.0",
63 | "typescript": "^4.1.3",
64 | "vite": "^2.1.2",
65 | "vite-plugin-md": "^0.6.1",
66 | "vue": "^3.0.5",
67 | "vue-router": "4.0.4"
68 | },
69 | "repository": {
70 | "type": "git",
71 | "url": "git+https://github.com/Js-Monkey/better-datepicker.git"
72 | },
73 | "author": "jumodada",
74 | "license": "MIT",
75 | "bugs": {
76 | "url": "https://github.com/Js-Monkey/better-datepicker/issues"
77 | },
78 | "homepage": "https://github.com/Js-Monkey/better-datepicker#readme"
79 | }
80 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "moduleResolution": "node",
4 | "target": "es6",
5 | "module":"es2015",
6 | "lib": ["es2015", "es2016", "es2017", "es2020","esnext","dom"],
7 | "strict": true,
8 | "sourceMap": true,
9 | "declaration": true,
10 | "allowSyntheticDefaultImports": true,
11 | "experimentalDecorators": true,
12 | "emitDecoratorMetadata": true,
13 | "noImplicitThis": false,
14 | "declarationDir": "./dist/types",
15 | "outDir": "./dist/lib",
16 | "typeRoots": [
17 | "./node_modules/@types"
18 | ]
19 | },
20 | "include": [
21 | "./src"
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import Vue from '@vitejs/plugin-vue'
2 | import md from './Doc/src/plugins/md-loader/index'
3 |
4 | export default {
5 | root: './Doc',
6 | server: {
7 | port: 8848
8 | },
9 | build: {
10 | rollupOptions: {
11 | output:{
12 | manualChunks(id: any) {
13 | if (id.includes('node_modules')) {
14 | return id.toString().split('node_modules/')[1].split('/')[0].toString();
15 | }
16 | }
17 | }
18 | }
19 | },
20 | plugins: [
21 | Vue({
22 | include: [/\.vue$/, /\.md$/]
23 | }),
24 | md()
25 | ],
26 | }
27 |
28 |
--------------------------------------------------------------------------------