-
-
+
+
+ 用户名:
+
+
+
+ 密 码:
+
+
+
+ 111
diff --git a/examples/main.ts b/examples/main.ts
index 3419fc0cbe40e989808e4f21c6dcea3016f5646f..8f5b56f784f6facda8a760a367aec319390e96d8 100644
--- a/examples/main.ts
+++ b/examples/main.ts
@@ -2,5 +2,9 @@ import { createApp } from 'vue'
import App from './app.vue'
const app = createApp(App)
import kittyui from "kitty-ui"
+import { Button } from 'kitty-ui'
app.use(kittyui)
+app.use(Button)
+console.log(kittyui);
+
app.mount('#app')
\ No newline at end of file
diff --git a/examples/vite.config.ts b/examples/vite.config.ts
index 6027983ba32bfc99ee68124d7f239bf61747007a..91437cb937a4f641936728b359208599ca12d056 100644
--- a/examples/vite.config.ts
+++ b/examples/vite.config.ts
@@ -1,6 +1,6 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
-
+import DefineOptions from 'unplugin-vue-define-options/vite';
export default defineConfig({
- plugins:[vue()]
+ plugins: [vue(), DefineOptions()]
})
\ No newline at end of file
diff --git a/package.json b/package.json
index d6743889507fd5e8e8e162e298e235603007bf95..9da75629c201f3a86ada195c55059bbc78e346b5 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,7 @@
"docs:serve": "pnpm run --filter ./site docs:serve",
"exm:dev": "pnpm run --filter ./examples dev",
"test": "pnpm run --filter ./packages/components test",
- "coverage": "pnpm run --filter ./packages/components vitest run --coverage"
+ "coverage": "pnpm run --filter ./packages/components coverage"
},
"devDependencies": {
"@types/gulp": "^4.0.9",
@@ -34,6 +34,7 @@
"less": "^4.1.3",
"sucrase": "^3.24.0",
"typescript": "^4.7.4",
+ "unplugin-vue-define-options": "^0.12.2",
"vite": "3.0.9",
"vite-plugin-dts": "^1.4.1",
"vite-plugin-libcss": "^1.0.5",
diff --git a/packages/components/index.ts b/packages/components/index.ts
index bd036dba634e8da3ca0b19136a2b5f5858e7d6a3..d20a92b70e3579038a6b868af2011f7a4e550622 100644
--- a/packages/components/index.ts
+++ b/packages/components/index.ts
@@ -1,9 +1,8 @@
-import * as components from './src/index'
+import components from './src/index'
export * from './src/index'
+import { App } from 'vue'
export default {
- install: (app: any) => {
- for (const comkey in components) {
- app.component((components as any)[comkey].name, (components as any)[comkey])
- }
+ install: (app: App) => {
+ components.forEach(c => app.use(c));
}
}
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index be2b4cb724f6a35d464ace183a839ce8b47e379a..a7d2b2ec908f3b9823395f209102902fb13e4659 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -1,4 +1,10 @@
-export { default as Button } from './button'
-export { default as Icon } from './icon'
-export { default as Link } from './link'
-export { default as Upload } from './upload'
+import { default as Button } from './button'
+import { default as Icon } from './icon'
+import { default as Link } from './link'
+import { default as Upload } from './upload'
+import { default as Shake } from './shake'
+import { Plugin } from 'vue'
+export {
+ Button, Icon, Link, Upload, Shake
+}
+export default [Button, Icon, Link, Upload, Shake] as Plugin[]
diff --git a/packages/components/src/shake/__tests__/shake.test.ts b/packages/components/src/shake/__tests__/shake.test.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d8c68eb9f597440a17c997bd1edc15b90c3fa9b0
--- /dev/null
+++ b/packages/components/src/shake/__tests__/shake.test.ts
@@ -0,0 +1,26 @@
+import { describe, expect, it } from "vitest";
+import { mount } from '@vue/test-utils'
+import shake from '../shake.vue'
+// The component to test
+
+
+describe('test shake', () => {
+ it("should render slot", () => {
+ const wrapper = mount(shake, {
+ slots: {
+ default: 'Hello world'
+ }
+ })
+
+ // Assert the rendered text of the component
+ expect(wrapper.text()).toContain('Hello world')
+ })
+ it("should have class", () => {
+ const wrapper = mount(shake, {
+ props: {
+ modelValue: true
+ }
+ })
+ expect(wrapper.classes()).toContain('k-shakeactive')
+ })
+})
\ No newline at end of file
diff --git a/packages/components/src/shake/index.ts b/packages/components/src/shake/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..33b18fb3a4c88bc05d608d1dbcdbd32f63108c8a
--- /dev/null
+++ b/packages/components/src/shake/index.ts
@@ -0,0 +1,4 @@
+import shake from './shake.vue'
+import { withInstall } from '@kitty-ui/utils'
+const Shake = withInstall(shake)
+export default Shake
diff --git a/packages/components/src/shake/shake.vue b/packages/components/src/shake/shake.vue
new file mode 100644
index 0000000000000000000000000000000000000000..1e3e8ae01c2c3d1f562f223c510d3154878e1220
--- /dev/null
+++ b/packages/components/src/shake/shake.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
diff --git a/packages/components/src/shake/style/index.less b/packages/components/src/shake/style/index.less
new file mode 100644
index 0000000000000000000000000000000000000000..c586fe042277209f58d886936956cc0c8a106ecd
--- /dev/null
+++ b/packages/components/src/shake/style/index.less
@@ -0,0 +1,31 @@
+@keyframes shake {
+
+ 10%,
+ 90% {
+ transform: translate3d(-1px, 0, 0);
+ }
+
+ 20%,
+ 80% {
+ transform: translate3d(2px, 0, 0);
+ }
+
+ 30%,
+ 70% {
+ transform: translate3d(-4px, 0, 0);
+ }
+
+ 40%,
+ 60% {
+ transform: translate3d(4px, 0, 0);
+ }
+
+ 50%,
+ 50% {
+ transform: translate3d(-4px, 0, 0);
+ }
+}
+
+.k-shake.k-shakeactive {
+ animation: shake 1s linear;
+}
\ No newline at end of file
diff --git a/packages/components/src/shake/types.ts b/packages/components/src/shake/types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/packages/components/src/upload/dragger.vue b/packages/components/src/upload/dragger.vue
index a59a8870aaed94f912237c4dc6a2780f31460dd5..09163c8d329ac6e8971d40bbabb81d0d9b7b8740 100644
--- a/packages/components/src/upload/dragger.vue
+++ b/packages/components/src/upload/dragger.vue
@@ -34,7 +34,7 @@ const onDragover = (e: Event) => {
if (timer.value !== null) {
clearTimeout(timer.value);
}
- timer.value = setTimeout(() => {
+ timer.value = window.setTimeout(() => {
isEnter.value = false;
timer.value = null;
}, 100);
diff --git a/packages/components/src/upload/types.ts b/packages/components/src/upload/types.ts
deleted file mode 100644
index 76e1deb3cb21ef3e28a67f049938fde9c57279da..0000000000000000000000000000000000000000
--- a/packages/components/src/upload/types.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-
-import { ExtractPropTypes } from 'vue'
-
-
-export const uploadType = {
- multiple: Boolean,
- accept: String,
- drag: Boolean
-}
-
-export type UploadType = ExtractPropTypes
-
-
diff --git a/packages/components/src/upload/upload.vue b/packages/components/src/upload/upload.vue
index 58433d742ee45df6e363892f68041683ece5cfb9..9ae609f51c95f56949b7a018879ed3507c9dfb4a 100644
--- a/packages/components/src/upload/upload.vue
+++ b/packages/components/src/upload/upload.vue
@@ -19,28 +19,25 @@