diff --git a/packages/opendesign/package.json b/packages/opendesign/package.json index 3ab14bd95b65d7a7bb451957f013e052ec12724d..232cf56d0fcb6a09bf203588b65718aad7386cff 100644 --- a/packages/opendesign/package.json +++ b/packages/opendesign/package.json @@ -1,6 +1,6 @@ { "name": "@opensig/opendesign", - "version": "0.0.30", + "version": "0.0.35", "main": "lib/index.js", "module": "es/index.mjs", "types": "es/index.d.ts", @@ -28,14 +28,9 @@ }, "devDependencies": { "@opensig/opensig-scripts": "workspace:^0.0.8", - "@types/lodash-es": "^4.17.6", "typescript": "^4.6.4", "vue": "^3.2.41", "vue-tsc": "^1.0.13" }, - "dependencies": { - "intersection-observer-polyfill": "^0.1.0", - "lodash-es": "^4.17.21", - "resize-observer-polyfill": "^1.5.1" - } + "dependencies": {} } diff --git a/packages/opendesign/src/components/_shared/export.ts b/packages/opendesign/src/components/_shared/export.ts index 54b272ab148b6db290dbc23fbc902bf2f5442b0b..1551a1ff0dd1831ebe071eedfae38c53bef479d2 100644 --- a/packages/opendesign/src/components/_shared/export.ts +++ b/packages/opendesign/src/components/_shared/export.ts @@ -3,3 +3,5 @@ export { initSize, initRound } from './global'; export * from './init-icons'; export * from './is'; + +export * from './utils'; diff --git a/packages/opendesign/src/components/_shared/global.ts b/packages/opendesign/src/components/_shared/global.ts index b5deb32e1f4dea1a5c366797e8b529e0db161ca0..7a850a52344fb648770fa191a7145346a73c3366 100644 --- a/packages/opendesign/src/components/_shared/global.ts +++ b/packages/opendesign/src/components/_shared/global.ts @@ -1,4 +1,5 @@ import { ref } from 'vue'; +import { ColorPool } from './utils'; // 尺寸 export const SizeTypes = ['large', 'medium', 'small'] as const; @@ -27,3 +28,10 @@ export type ColorT = typeof ColorTypes[number]; export const Color2Types = ['normal', 'success', 'warning', 'danger'] as const; export type Color2T = typeof ColorTypes[number]; + +// 随机颜色池 +const PrestColor = ['#d9e6c3', '#ebd5be', '#d1e6de', '#e0ceeb', '#ebd3c7', '#e6dada', '#e3deeb', '#dedae6', '#cad0e8', '#cedeeb']; +export const PrestColorPool = ref(new ColorPool(PrestColor)); +export function initPrestColor(colors: string[]) { + PrestColorPool.value = new ColorPool(colors); +} diff --git a/packages/opendesign/src/components/_shared/utils.ts b/packages/opendesign/src/components/_shared/utils.ts index aacccf1fe10188797181eca1265b3c26274f53e9..9e240eb13216f33bf1b9081208add098ab1c88b1 100644 --- a/packages/opendesign/src/components/_shared/utils.ts +++ b/packages/opendesign/src/components/_shared/utils.ts @@ -1,14 +1,3 @@ -import { throttle as _throttle, debounce as _debounce } from 'lodash-es'; -import type { ThrottleSettings, DebounceSettings } from 'lodash-es'; - -// 防抖 -export function debounce) => unknown>(fn: T, wait?: number, ctx?: unknown | null, opts?: ThrottleSettings) { - return _debounce.apply(ctx, [fn, wait, opts]); -} -// 节流 -export function throttle) => unknown>(fn: T, wait?: number, ctx?: unknown | null, opts?: DebounceSettings) { - return _throttle.apply(ctx, [fn, wait, opts]); -} // 防抖 时间为一个一帧 export function debounceRAF) => any>(fn: T) { let handle = 0; @@ -49,7 +38,7 @@ export function throttleRAF) => unknown>(fn: /** * 颜色池 */ -class ColorPool { +export class ColorPool { pool: Array; tmpPool: Array; @@ -77,6 +66,3 @@ class ColorPool { return color; } } - -const PrestColor = ['#d9e6c3', '#ebd5be', '#d1e6de', '#e0ceeb', '#ebd3c7', '#e6dada', '#e3deeb', '#dedae6', '#cad0e8', '#cedeeb']; -export const PrestColorPool = new ColorPool(PrestColor); \ No newline at end of file diff --git a/packages/opendesign/src/components/carousel/OCarousel.vue b/packages/opendesign/src/components/carousel/OCarousel.vue index 13fed7f1b3290e69a925c11b6183d989c5bffbb8..93f14b1f37f8115cf65ef896f1fb989366271922 100644 --- a/packages/opendesign/src/components/carousel/OCarousel.vue +++ b/packages/opendesign/src/components/carousel/OCarousel.vue @@ -52,10 +52,10 @@ const slideElList = computed(() => { return c ? Array.from(c).map((el) => el as HTMLElement) : null; }); -let isChanging = false; - // gallery let slidesInstance: InstanceType | null = null; +// 避免同一时间多次切换 +let isChanging = false; const activeSlideByIndex = (index: number): Promise => { return new Promise((resolve) => { @@ -65,13 +65,16 @@ const activeSlideByIndex = (index: number): Promise => { if (isChanging || !slideElList.value || to === from) { return Promise.resolve(false); } + isChanging = true; if (slidesInstance) { activeIndex.value = to; slidesInstance.active(to).then(() => { + isChanging = false; resolve(true); }); } else { + isChanging = false; resolve(false); } }); @@ -125,11 +128,9 @@ const initSlides = () => { } }, onBeforeChange: (to: number, from: number) => { - isChanging = true; emits('before-change', to, from); }, onChanged: (to: number, from: number) => { - isChanging = false; activeIndex.value = to; emits('change', to, from); }, @@ -232,7 +233,7 @@ defineExpose({