mirror of https://github.com/halo-dev/halo-admin
feat: add smtp form validation. (#243)
* feat: add smtp form validation. * feat: add smtp test form validation. * feat: add api form validation. * feat: add input number min limit.pull/248/head
parent
7b7993807e
commit
6f083f3a85
|
@ -820,9 +820,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/polyfill": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz",
|
||||
"integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==",
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.11.5.tgz",
|
||||
"integrity": "sha512-FunXnE0Sgpd61pKSj2OSOs1D44rKTD3pGOfGilZ6LGrrIH0QEtJlTjqOqdF8Bs98JmjfGhni2BBkTfv9KcKJ9g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-js": "^2.6.5",
|
||||
|
@ -830,9 +830,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"regenerator-runtime": {
|
||||
"version": "0.13.5",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
||||
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
|
||||
"version": "0.13.7",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
|
||||
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
|
@ -2601,6 +2601,34 @@
|
|||
"webpack-sources": "^1.4.3"
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.7",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.7.tgz",
|
||||
"integrity": "sha512-xQ8/GZmRPdQ3EinnE0IXwdVoDzh7Dowo0MowoyBuScEBXrRabw6At5/IdtD3waKklKW5PGokPsm8KRN6rvQ1cw==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"@types/mini-css-extract-plugin": "^0.9.1",
|
||||
"chalk": "^3.0.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^1.2.3",
|
||||
"merge-source-map": "^1.1.0",
|
||||
"source-map": "^0.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
|
||||
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"wrap-ansi": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
|
||||
|
@ -2709,9 +2737,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"@vue/test-utils": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.4.tgz",
|
||||
"integrity": "sha512-uIdDqFauzNJWlhltLSZU+P3uHEgUQczklSv2b1EKC7JzxBg9OY/5sx8UyuJwBD+zuxidhFZ4SjTuPgr8cdf63w==",
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.1.0.tgz",
|
||||
"integrity": "sha512-M+3jtVqNYIrvzO5gaxogre5a5+96h0hN/dXw+5Lj0t+dp6fAhYcUjpLrC9j9cEEkl2Rcuh/gKYRUmR5N4vcqPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"dom-event-types": "^1.0.0",
|
||||
|
@ -7095,9 +7123,9 @@
|
|||
}
|
||||
},
|
||||
"eslint-plugin-html": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.0.3.tgz",
|
||||
"integrity": "sha512-1KV2ebQHywlXkfpXOGjxuEyoq+g6AWvD6g9TB28KsGhbM5rJeHXAEpHOev6LqZv6ylcfa9BWokDsNVKyYefzGw==",
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-6.1.0.tgz",
|
||||
"integrity": "sha512-xcqithhnjUxoEDRL0hYci4RSS8EZ1NGr3/H8x3BxJvxgbu4R3YaEUea9i93j95NuAgoAbOUfNmybta8fqi4UbA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"htmlparser2": "^4.1.0"
|
||||
|
@ -7791,9 +7819,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"filepond": {
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/filepond/-/filepond-4.19.2.tgz",
|
||||
"integrity": "sha512-2NgemeQGIx9TfjaRwn6LpjJFXILzGXl0FD+Er7veI/25Nn+4qu0mA8rk22S3vpJPajMRn+dD1EUTEOMgUolJ7w=="
|
||||
"version": "4.20.1",
|
||||
"resolved": "https://registry.npmjs.org/filepond/-/filepond-4.20.1.tgz",
|
||||
"integrity": "sha512-qYwE/xSODJuAJH0E2BHeD8f3X66nxZ/aUQSaGhUTVXuAWe0wvIjxaRcMZUIsZm2f7truScxAe16l5ITzxi5TFw=="
|
||||
},
|
||||
"filepond-plugin-image-preview": {
|
||||
"version": "4.6.4",
|
||||
|
@ -8639,15 +8667,15 @@
|
|||
"dev": true
|
||||
},
|
||||
"husky": {
|
||||
"version": "4.2.5",
|
||||
"resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz",
|
||||
"integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/husky/-/husky-4.3.0.tgz",
|
||||
"integrity": "sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.0.0",
|
||||
"ci-info": "^2.0.0",
|
||||
"compare-versions": "^3.6.0",
|
||||
"cosmiconfig": "^6.0.0",
|
||||
"cosmiconfig": "^7.0.0",
|
||||
"find-versions": "^3.2.0",
|
||||
"opencollective-postinstall": "^2.0.2",
|
||||
"pkg-dir": "^4.2.0",
|
||||
|
@ -8698,16 +8726,16 @@
|
|||
"dev": true
|
||||
},
|
||||
"cosmiconfig": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
|
||||
"integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
|
||||
"integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/parse-json": "^4.0.0",
|
||||
"import-fresh": "^3.1.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
"parse-json": "^5.0.0",
|
||||
"path-type": "^4.0.0",
|
||||
"yaml": "^1.7.2"
|
||||
"yaml": "^1.10.0"
|
||||
}
|
||||
},
|
||||
"find-up": {
|
||||
|
@ -8803,9 +8831,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
||||
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
|
@ -10554,20 +10582,20 @@
|
|||
"dev": true
|
||||
},
|
||||
"lint-staged": {
|
||||
"version": "10.2.11",
|
||||
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.2.11.tgz",
|
||||
"integrity": "sha512-LRRrSogzbixYaZItE2APaS4l2eJMjjf5MbclRZpLJtcQJShcvUzKXsNeZgsLIZ0H0+fg2tL4B59fU9wHIHtFIA==",
|
||||
"version": "10.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.3.0.tgz",
|
||||
"integrity": "sha512-an3VgjHqmJk0TORB/sdQl0CTkRg4E5ybYCXTTCSJ5h9jFwZbcgKIx5oVma5e7wp/uKt17s1QYFmYqT9MGVosGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.0.0",
|
||||
"cli-truncate": "2.1.0",
|
||||
"commander": "^5.1.0",
|
||||
"cosmiconfig": "^6.0.0",
|
||||
"chalk": "^4.1.0",
|
||||
"cli-truncate": "^2.1.0",
|
||||
"commander": "^6.0.0",
|
||||
"cosmiconfig": "^7.0.0",
|
||||
"debug": "^4.1.1",
|
||||
"dedent": "^0.7.0",
|
||||
"enquirer": "^2.3.5",
|
||||
"execa": "^4.0.1",
|
||||
"listr2": "^2.1.0",
|
||||
"enquirer": "^2.3.6",
|
||||
"execa": "^4.0.3",
|
||||
"listr2": "^2.6.0",
|
||||
"log-symbols": "^4.0.0",
|
||||
"micromatch": "^4.0.2",
|
||||
"normalize-path": "^3.0.0",
|
||||
|
@ -10621,22 +10649,22 @@
|
|||
"dev": true
|
||||
},
|
||||
"commander": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
|
||||
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.1.0.tgz",
|
||||
"integrity": "sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA==",
|
||||
"dev": true
|
||||
},
|
||||
"cosmiconfig": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
|
||||
"integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
|
||||
"integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/parse-json": "^4.0.0",
|
||||
"import-fresh": "^3.1.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
"parse-json": "^5.0.0",
|
||||
"path-type": "^4.0.0",
|
||||
"yaml": "^1.7.2"
|
||||
"yaml": "^1.10.0"
|
||||
}
|
||||
},
|
||||
"cross-spawn": {
|
||||
|
@ -10660,9 +10688,9 @@
|
|||
}
|
||||
},
|
||||
"execa": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-4.0.2.tgz",
|
||||
"integrity": "sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q==",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz",
|
||||
"integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^7.0.0",
|
||||
|
@ -10686,9 +10714,9 @@
|
|||
}
|
||||
},
|
||||
"get-stream": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
|
||||
"integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
|
||||
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pump": "^3.0.0"
|
||||
|
@ -10763,9 +10791,9 @@
|
|||
}
|
||||
},
|
||||
"onetime": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
|
||||
"integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
||||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mimic-fn": "^2.1.0"
|
||||
|
@ -10805,9 +10833,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
||||
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
|
@ -10834,18 +10862,18 @@
|
|||
}
|
||||
},
|
||||
"listr2": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/listr2/-/listr2-2.2.0.tgz",
|
||||
"integrity": "sha512-Q8qbd7rgmEwDo1nSyHaWQeztfGsdL6rb4uh7BA+Q80AZiDET5rVntiU1+13mu2ZTDVaBVbvAD1Db11rnu3l9sg==",
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/listr2/-/listr2-2.6.2.tgz",
|
||||
"integrity": "sha512-6x6pKEMs8DSIpA/tixiYY2m/GcbgMplMVmhQAaLFxEtNSKLeWTGjtmU57xvv6QCm2XcqzyNXL/cTSVf4IChCRA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^4.0.0",
|
||||
"chalk": "^4.1.0",
|
||||
"cli-truncate": "^2.1.0",
|
||||
"figures": "^3.2.0",
|
||||
"indent-string": "^4.0.0",
|
||||
"log-update": "^4.0.0",
|
||||
"p-map": "^4.0.0",
|
||||
"rxjs": "^6.5.5",
|
||||
"rxjs": "^6.6.2",
|
||||
"through": "^2.3.8"
|
||||
},
|
||||
"dependencies": {
|
||||
|
@ -10899,10 +10927,19 @@
|
|||
"aggregate-error": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "6.6.3",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
|
||||
"integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
||||
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
|
@ -11155,9 +11192,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"onetime": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
|
||||
"integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
||||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mimic-fn": "^2.1.0"
|
||||
|
@ -15126,9 +15163,9 @@
|
|||
}
|
||||
},
|
||||
"tailwindcss": {
|
||||
"version": "1.7.3",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.7.3.tgz",
|
||||
"integrity": "sha512-e6o/qhn80hcJ+cB1jIK3C1xlDPkFHU98c2m4ONMfeIOf8jvKQ+bowD39QKsWN+JMOvfATtMjgScpjSaqO1hffQ==",
|
||||
"version": "1.8.8",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.8.8.tgz",
|
||||
"integrity": "sha512-MCaTFA+ae278rYeB0UTJAkWJMW5eYMMO6/XXBL0oo+SKuZCM4uCFskroHbMFvQSoA96sslFX2+tCPDOv1T7Tbw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@fullhuman/postcss-purgecss": "^2.1.2",
|
||||
|
@ -15139,7 +15176,8 @@
|
|||
"color": "^3.1.2",
|
||||
"detective": "^5.2.0",
|
||||
"fs-extra": "^8.0.0",
|
||||
"lodash": "^4.17.15",
|
||||
"html-tags": "^3.1.0",
|
||||
"lodash": "^4.17.20",
|
||||
"node-emoji": "^1.8.1",
|
||||
"normalize.css": "^8.0.1",
|
||||
"object-hash": "^2.0.3",
|
||||
|
@ -15206,6 +15244,18 @@
|
|||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"html-tags": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz",
|
||||
"integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==",
|
||||
"dev": true
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.20",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
|
||||
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
|
||||
"dev": true
|
||||
},
|
||||
"object-hash": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz",
|
||||
|
@ -15213,9 +15263,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
||||
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
|
@ -16050,9 +16100,9 @@
|
|||
}
|
||||
},
|
||||
"vue-filepond": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/vue-filepond/-/vue-filepond-6.0.2.tgz",
|
||||
"integrity": "sha512-HE1TvV2LrKMU3pFeIBbR9Uf6cryNLVnnl35uSL+HLsZ6rfZ3C1alfre3UcaSoKTVuxNsn41Ce4IR528UwdxZfw=="
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/vue-filepond/-/vue-filepond-6.0.3.tgz",
|
||||
"integrity": "sha512-m0wArAdpgzOOs19bWA6zzYlHAb2aK+igPoKPZGrzpgKiiELPKW7XZ2OBDXzk7rhpFLkedujVrMqwjPyZfmQTTQ=="
|
||||
},
|
||||
"vue-github-badge": {
|
||||
"version": "1.0.1",
|
||||
|
@ -16105,86 +16155,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.5",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.5.tgz",
|
||||
"integrity": "sha512-ciWfzNefqWlmzKznCWY9hl+fPP4KlQ0A9MtHbJ/8DpyY+dAM8gDrjufIdxwTgC4szE4EZC3A6ip/BbrqM84GqA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"@types/mini-css-extract-plugin": "^0.9.1",
|
||||
"chalk": "^3.0.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^1.2.3",
|
||||
"merge-source-map": "^1.1.0",
|
||||
"source-map": "^0.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
|
||||
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"@types/color-name": "^1.1.1",
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
|
||||
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"vue-ls": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/vue-ls/-/vue-ls-3.2.1.tgz",
|
||||
|
|
16
package.json
16
package.json
|
@ -23,7 +23,7 @@
|
|||
"ant-design-vue": "^1.6.5",
|
||||
"axios": "^0.19.2",
|
||||
"enquire.js": "^2.1.6",
|
||||
"filepond": "^4.19.2",
|
||||
"filepond": "^4.20.1",
|
||||
"filepond-plugin-image-preview": "^4.6.4",
|
||||
"flv.js": "^1.5.0",
|
||||
"halo-editor": "^2.8.2",
|
||||
|
@ -37,33 +37,33 @@
|
|||
"vue-contextmenujs": "^1.3.12",
|
||||
"vue-count-to": "^1.0.13",
|
||||
"vue-dplayer": "0.0.10",
|
||||
"vue-filepond": "^6.0.2",
|
||||
"vue-filepond": "^6.0.3",
|
||||
"vue-ls": "^3.2.1",
|
||||
"vue-router": "^3.4.3",
|
||||
"vuejs-logger": "^1.5.4",
|
||||
"vuex": "^3.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/polyfill": "^7.10.4",
|
||||
"@babel/polyfill": "^7.11.5",
|
||||
"@vue/cli-plugin-babel": "^3.8.0",
|
||||
"@vue/cli-plugin-eslint": "^4.5.4",
|
||||
"@vue/cli-plugin-unit-jest": "^4.5.4",
|
||||
"@vue/cli-service": "^4.5.4",
|
||||
"@vue/eslint-config-standard": "^4.0.0",
|
||||
"@vue/test-utils": "^1.0.4",
|
||||
"@vue/test-utils": "^1.1.0",
|
||||
"babel-core": "7.0.0-bridge.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-jest": "^26.3.0",
|
||||
"babel-plugin-import": "^1.13.0",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-plugin-html": "^6.0.3",
|
||||
"eslint-plugin-html": "^6.1.0",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"generate-asset-webpack-plugin": "^0.3.0",
|
||||
"husky": "^4.2.5",
|
||||
"husky": "^4.3.0",
|
||||
"less": "^3.12.2",
|
||||
"less-loader": "^5.0.0",
|
||||
"lint-staged": "^10.2.11",
|
||||
"tailwindcss": "^1.7.3",
|
||||
"lint-staged": "^10.3.0",
|
||||
"tailwindcss": "^1.8.8",
|
||||
"vue-svg-component-runtime": "^1.0.1",
|
||||
"vue-svg-icon-loader": "^2.1.1",
|
||||
"vue-template-compiler": "^2.6.12"
|
||||
|
|
|
@ -10,7 +10,10 @@
|
|||
<a-form-model-item label="API 服务:">
|
||||
<a-switch v-model="options.api_enabled" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="Access key:">
|
||||
<a-form-model-item
|
||||
label="Access key:"
|
||||
prop="api_access_key"
|
||||
>
|
||||
<a-input-password
|
||||
v-model="options.api_access_key"
|
||||
autocomplete="new-password"
|
||||
|
@ -55,8 +58,7 @@ export default {
|
|||
lg: { span: 8 },
|
||||
sm: { span: 12 },
|
||||
xs: { span: 24 }
|
||||
},
|
||||
rules: {}
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
@ -64,22 +66,20 @@ export default {
|
|||
this.$emit('onChange', val)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
rules() {
|
||||
const required = this.options.api_enabled
|
||||
return {
|
||||
api_access_key: [{ required: required, message: '* Access key 不能为空', trigger: ['change'] }]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSaveOptions() {
|
||||
// API 配置验证
|
||||
if (this.options.api_enabled) {
|
||||
if (!this.options.api_access_key) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: 'Access key 不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
const _this = this
|
||||
_this.$refs.apiOptionsForm.validate(valid => {
|
||||
_this.$refs.apiOptionsForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$emit('onSave')
|
||||
_this.$emit('onSave')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -13,12 +13,14 @@
|
|||
<a-form-model-item label="最大上传文件数:">
|
||||
<a-input-number
|
||||
v-model="options.attachment_upload_max_files"
|
||||
:min="1"
|
||||
style="width:100%"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="同时上传文件数:">
|
||||
<a-input-number
|
||||
v-model="options.attachment_upload_max_parallel_uploads"
|
||||
:min="1"
|
||||
style="width:100%"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
<a-form-model-item label="每页显示条数: ">
|
||||
<a-input-number
|
||||
v-model="options.comment_page_size"
|
||||
:min="1"
|
||||
style="width:100%"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
|
|
|
@ -23,12 +23,14 @@
|
|||
<a-form-model-item label="首页每页条数:">
|
||||
<a-input-number
|
||||
v-model="options.post_index_page_size"
|
||||
:min="1"
|
||||
style="width:100%"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="归档每页条数:">
|
||||
<a-input-number
|
||||
v-model="options.post_archives_page_size"
|
||||
:min="1"
|
||||
style="width:100%"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
|
@ -41,6 +43,7 @@
|
|||
<a-form-model-item label="RSS 内容条数:">
|
||||
<a-input-number
|
||||
v-model="options.rss_page_size"
|
||||
:min="1"
|
||||
style="width:100%"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
|
|
|
@ -15,26 +15,44 @@
|
|||
<a-form-model-item label="是否启用:">
|
||||
<a-switch v-model="options.email_enabled" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="SMTP 地址:">
|
||||
<a-form-model-item
|
||||
label="SMTP 地址:"
|
||||
prop="email_host"
|
||||
>
|
||||
<a-input v-model="options.email_host" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="发送协议:">
|
||||
<a-form-model-item
|
||||
label="发送协议:"
|
||||
prop="email_protocol"
|
||||
>
|
||||
<a-input v-model="options.email_protocol" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="SSL 端口:">
|
||||
<a-form-model-item
|
||||
label="SSL 端口:"
|
||||
prop="email_ssl_port"
|
||||
>
|
||||
<a-input v-model="options.email_ssl_port" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="邮箱账号:">
|
||||
<a-form-model-item
|
||||
label="邮箱账号:"
|
||||
prop="email_username"
|
||||
>
|
||||
<a-input v-model="options.email_username" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="邮箱密码:">
|
||||
<a-form-model-item
|
||||
label="邮箱密码:"
|
||||
prop="email_password"
|
||||
>
|
||||
<a-input-password
|
||||
v-model="options.email_password"
|
||||
placeholder="部分邮箱可能是授权码"
|
||||
autocomplete="new-password"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="发件人:">
|
||||
<a-form-model-item
|
||||
label="发件人:"
|
||||
prop="email_from_name"
|
||||
>
|
||||
<a-input v-model="options.email_from_name" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item>
|
||||
|
@ -56,16 +74,28 @@
|
|||
key="smtptest"
|
||||
>
|
||||
<a-form-model
|
||||
ref="smtpTestForm"
|
||||
:model="mailParam"
|
||||
:rules="testRules"
|
||||
layout="vertical"
|
||||
:wrapperCol="wrapperCol"
|
||||
>
|
||||
<a-form-model-item label="收件人:">
|
||||
<a-form-model-item
|
||||
label="收件人地址:"
|
||||
prop="to"
|
||||
>
|
||||
<a-input v-model="mailParam.to" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="主题:">
|
||||
<a-form-model-item
|
||||
label="主题:"
|
||||
prop="subject"
|
||||
>
|
||||
<a-input v-model="mailParam.subject" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item label="内容:">
|
||||
<a-form-model-item
|
||||
label="内容:"
|
||||
prop="content"
|
||||
>
|
||||
<a-input
|
||||
type="textarea"
|
||||
:autoSize="{ minRows: 5 }"
|
||||
|
@ -118,7 +148,11 @@ export default {
|
|||
mailParam: {},
|
||||
sending: false,
|
||||
sendErrored: false,
|
||||
rules: {}
|
||||
testRules: {
|
||||
to: [{ required: true, message: '* 收件人地址不能为空', trigger: ['change'] }],
|
||||
subject: [{ required: true, message: '* 主题不能为空', trigger: ['change'] }],
|
||||
content: [{ required: true, message: '* 内容不能为空', trigger: ['change'] }]
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
@ -126,96 +160,51 @@ export default {
|
|||
this.$emit('onChange', val)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
rules() {
|
||||
const required = this.options.email_enabled
|
||||
return {
|
||||
email_host: [{ required: required, message: '* SMTP 地址不能为空', trigger: ['change'] }],
|
||||
email_protocol: [{ required: required, message: '* 发送协议不能为空', trigger: ['change'] }],
|
||||
email_ssl_port: [{ required: required, message: '* SSL 端口不能为空', trigger: ['change'] }],
|
||||
email_username: [
|
||||
{ required: required, message: '* 邮箱账号不能为空', trigger: ['change'] },
|
||||
{ type: 'email', message: '* 邮箱账号格式不正确', trigger: ['change'] }
|
||||
],
|
||||
email_password: [{ required: required, message: '* 邮箱密码不能为空', trigger: ['change'] }],
|
||||
email_from_name: [{ required: required, message: '* 发件人不能为空', trigger: ['change'] }]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSaveOptions() {
|
||||
// SMTP 配置验证
|
||||
if (this.options.email_enabled) {
|
||||
if (!this.options.email_host) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: 'SMTP 地址不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (!this.options.email_protocol) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: '发送协议不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (!this.options.email_ssl_port) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: 'SSL 端口不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (!this.options.email_username) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: '邮箱账号不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (!this.options.email_password) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: '邮箱密码不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (!this.options.email_from_name) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: '发件人不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
const _this = this
|
||||
_this.$refs.smtpOptionsForm.validate(valid => {
|
||||
_this.$refs.smtpOptionsForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$emit('onSave')
|
||||
_this.$emit('onSave')
|
||||
}
|
||||
})
|
||||
},
|
||||
handleTestMailClick() {
|
||||
if (!this.mailParam.to) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: '收件人不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (!this.mailParam.subject) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: '主题不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
if (!this.mailParam.content) {
|
||||
this.$notification['error']({
|
||||
message: '提示',
|
||||
description: '内容不能为空!'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.sending = true
|
||||
mailApi
|
||||
.testMail(this.mailParam)
|
||||
.then(response => {
|
||||
this.$message.info(response.data.message)
|
||||
})
|
||||
.catch(() => {
|
||||
this.sendErrored = true
|
||||
})
|
||||
.finally(() => {
|
||||
setTimeout(() => {
|
||||
this.sending = false
|
||||
}, 400)
|
||||
})
|
||||
const _this = this
|
||||
_this.$refs.smtpTestForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.sending = true
|
||||
mailApi
|
||||
.testMail(this.mailParam)
|
||||
.then((response) => {
|
||||
this.$message.info(response.data.message)
|
||||
})
|
||||
.catch(() => {
|
||||
this.sendErrored = true
|
||||
})
|
||||
.finally(() => {
|
||||
setTimeout(() => {
|
||||
this.sending = false
|
||||
}, 400)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -704,11 +704,14 @@ module.exports = {
|
|||
fontFamily: ['responsive'],
|
||||
fontSize: ['responsive'],
|
||||
fontSmoothing: ['responsive'],
|
||||
fontVariantNumeric: ['responsive'],
|
||||
fontStyle: ['responsive'],
|
||||
fontWeight: ['responsive', 'hover', 'focus'],
|
||||
height: ['responsive'],
|
||||
inset: ['responsive'],
|
||||
justifyContent: ['responsive'],
|
||||
justifyItems: ['responsive'],
|
||||
justifySelf: ['responsive'],
|
||||
letterSpacing: ['responsive'],
|
||||
lineHeight: ['responsive'],
|
||||
listStylePosition: ['responsive'],
|
||||
|
@ -726,6 +729,9 @@ module.exports = {
|
|||
overflow: ['responsive'],
|
||||
overscrollBehavior: ['responsive'],
|
||||
padding: ['responsive'],
|
||||
placeContent: ['responsive'],
|
||||
placeItems: ['responsive'],
|
||||
placeSelf: ['responsive'],
|
||||
placeholderColor: ['responsive', 'focus'],
|
||||
placeholderOpacity: ['responsive', 'focus'],
|
||||
pointerEvents: ['responsive'],
|
||||
|
|
Loading…
Reference in New Issue