diff --git a/packages/opendesign/package.json b/packages/opendesign/package.json index 9150d00c456d7b9d20fb58f95e4f4bdf13a578f3..e332b52f4cc67877e5561e6b2abef9f321ad537e 100644 --- a/packages/opendesign/package.json +++ b/packages/opendesign/package.json @@ -1,6 +1,6 @@ { "name": "@opensig/opendesign", - "version": "0.0.37", + "version": "0.0.38", "main": "lib/index.js", "module": "es/index.mjs", "types": "es/index.d.ts", diff --git a/packages/opendesign/src/components/_shared/dom.ts b/packages/opendesign/src/components/_shared/dom.ts index a4fe8567bc93aadc6d3ec45d48d09a9eaba8a71b..0694d5f356c627c77994f57b467bf27eeabea039 100644 --- a/packages/opendesign/src/components/_shared/dom.ts +++ b/packages/opendesign/src/components/_shared/dom.ts @@ -2,7 +2,7 @@ import { isArray } from './is'; export type DirectionT = 'left' | 'right' | 'top' | 'bottom'; -export function isElement(el: any) { +export function isHtmlElement(el: any) { return typeof HTMLElement === 'object' ? el instanceof HTMLElement : !!(el && typeof el === 'object' && (el.nodeType === 1 || el.nodeType === 9) && typeof el.nodeName === 'string'); diff --git a/packages/opendesign/src/components/_shared/vue-utils.ts b/packages/opendesign/src/components/_shared/vue-utils.ts index 107577a3ed07dc97c414f2b415c3798a6c07f8a4..50ac3a4b8620455f547a2f88652521bee3c63949 100644 --- a/packages/opendesign/src/components/_shared/vue-utils.ts +++ b/packages/opendesign/src/components/_shared/vue-utils.ts @@ -1,5 +1,6 @@ -import { Component, onMounted, ref, Slots, VNode, VNodeTypes, Comment } from 'vue'; +import { Component, onMounted, ref, Slots, VNode, VNodeTypes, Comment, ComponentPublicInstance, watchEffect, Ref } from 'vue'; import { isArray } from './is'; +import { isHtmlElement } from './dom'; // 来着vuejs/core // https://github.com/vuejs/core/blob/main/packages/shared/src/shapeFlags.ts @@ -154,3 +155,21 @@ export function useSlotFirstElement() { fistElement, }; } + +export const getHtmlElement = (elRef: Ref): Promise => { + return new Promise((resolve) => { + if (isHtmlElement(elRef.value)) { + resolve(elRef.value as HTMLElement); + } else if (typeof elRef.value === 'string') { + resolve(document.querySelector(elRef.value) as HTMLElement); + } else { + watchEffect(() => { + if (isHtmlElement(elRef.value)) { + resolve(elRef.value as HTMLElement); + } else if (elRef.value) { + resolve((elRef.value as ComponentPublicInstance).$el); + } + }); + } + }); +}; diff --git a/packages/opendesign/src/components/carousel/effect.ts b/packages/opendesign/src/components/carousel/effect.ts index 38fee0b6e38ad36bb05b82b323752d2ea6f4a30a..0f3d1816fcd45d73e73ea301ec21c68f2fdd541c 100644 --- a/packages/opendesign/src/components/carousel/effect.ts +++ b/packages/opendesign/src/components/carousel/effect.ts @@ -7,7 +7,7 @@ export interface EffectT { destroyed: () => void; } export interface EffectOptionT { - activeClass: string; + activeClass?: string; onTouchstart?: () => void; onTouchend?: () => void; onBeforeChange?: (from: number, to: number) => boolean | void; diff --git a/packages/opendesign/src/components/input-number/OInputNumber.vue b/packages/opendesign/src/components/input-number/OInputNumber.vue index f60bd93fb3f24646f5f7198b8fc9814a0829850e..869fb4ea058d36aace273526e9075d7d0b2ba2d3 100644 --- a/packages/opendesign/src/components/input-number/OInputNumber.vue +++ b/packages/opendesign/src/components/input-number/OInputNumber.vue @@ -27,6 +27,20 @@ let numberValue = getRealValue(currentValue.value); let lastNumberValue = numberValue; let lastInputValue = currentValue.value; +watch( + () => props.min, + (v) => { + isValid.value = isValidNumber(currentValue.value, v, props.max); + } +); + +watch( + () => props.max, + (v) => { + isValid.value = isValidNumber(currentValue.value, props.min, v); + } +); + watch( () => props.modelValue, (val) => { diff --git a/packages/opendesign/src/components/pagination/__demo__/PaginationBasic.vue b/packages/opendesign/src/components/pagination/__demo__/PaginationBasic.vue index d4cd6f2f4cf5bb965ec222bc5cee495d6bce3ab2..c38c88b2f11ecb5984f69a91e9e905cb1f80c4fd 100644 --- a/packages/opendesign/src/components/pagination/__demo__/PaginationBasic.vue +++ b/packages/opendesign/src/components/pagination/__demo__/PaginationBasic.vue @@ -2,11 +2,10 @@ import { ref } from 'vue'; import { OPagination } from '../index'; const currentPage = ref(5); -const total = ref(100); - -// setTimeout(() => { -// total.value = 50; -// }, 2000); +const total = ref(0); +setTimeout(() => { + total.value = 100; +}, 1000); const pageSize = 8; const pageSizes = [8, 16, 32, 64]; diff --git a/packages/opendesign/src/components/popup/OPopup.vue b/packages/opendesign/src/components/popup/OPopup.vue index 01b23606733546a82e3213760805a4a0815b096e..3b02f5e4f025fa4491b4eb40df82dcae0158bc16 100644 --- a/packages/opendesign/src/components/popup/OPopup.vue +++ b/packages/opendesign/src/components/popup/OPopup.vue @@ -4,9 +4,9 @@ export default { }; - - diff --git a/packages/opendesign/src/components/scrollbar/__demo__/ScrollbarBasic.vue b/packages/opendesign/src/components/scrollbar/__demo__/ScrollbarBasic.vue deleted file mode 100644 index 39b8f290b0528de46f0cb650ca6d18c81a99b840..0000000000000000000000000000000000000000 --- a/packages/opendesign/src/components/scrollbar/__demo__/ScrollbarBasic.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/packages/opendesign/src/components/scrollbar/index.ts b/packages/opendesign/src/components/scrollbar/index.ts deleted file mode 100644 index d55162bde6686f65c0bee837307855c86daf8ac4..0000000000000000000000000000000000000000 --- a/packages/opendesign/src/components/scrollbar/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { App } from 'vue'; - -import _OScrollbar from './OScrollbar.vue'; - -const OScrollbar = Object.assign(_OScrollbar, { - install(app: App) { - app.component(_OScrollbar.name, _OScrollbar); - }, -}); - -export { OScrollbar }; diff --git a/packages/opendesign/src/components/scrollbar/scrollbar.ts b/packages/opendesign/src/components/scrollbar/scrollbar.ts deleted file mode 100644 index 7d0993fe253dde108e82b5c028b4cd63f4acd85c..0000000000000000000000000000000000000000 --- a/packages/opendesign/src/components/scrollbar/scrollbar.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { defineComponent, cloneVNode, withDirectives } from 'vue'; -import { useReiszeObserverDirective } from '../hooks'; - -/** - * 子元素resize监听 - * 如果有多个子元素,每个子元素都会被监听到 - */ -export default defineComponent({ - name: 'OResizeObserver', - emits: ['resize'], - setup(props, { emit, slots }) { - const { vResizeObserver } = useReiszeObserverDirective((entry: ResizeObserverEntry, isFirst: boolean) => { - // 触发resize事件 - emit('resize', entry, isFirst); - }); - - return () => { - const children = slots.default?.(); - return children?.map((item) => withDirectives(cloneVNode(item), [[vResizeObserver]])); - }; - }, -}); diff --git a/packages/opendesign/src/components/scrollbar/style/index.scss b/packages/opendesign/src/components/scrollbar/style/index.scss deleted file mode 100644 index bce181a7e1bc7db28c5418100a87d16fd0cea708..0000000000000000000000000000000000000000 --- a/packages/opendesign/src/components/scrollbar/style/index.scss +++ /dev/null @@ -1,4 +0,0 @@ -@use './var.scss'; - -.o-scrollbar { -} diff --git a/packages/opendesign/src/components/scrollbar/style/var.scss b/packages/opendesign/src/components/scrollbar/style/var.scss deleted file mode 100644 index 8b9ec5be345abef50894b1206d47e2c6409eabed..0000000000000000000000000000000000000000 --- a/packages/opendesign/src/components/scrollbar/style/var.scss +++ /dev/null @@ -1,2 +0,0 @@ -.o-scrollbar { -} diff --git a/packages/opendesign/src/components/scroller/OScrollbar.vue b/packages/opendesign/src/components/scroller/OScrollbar.vue new file mode 100644 index 0000000000000000000000000000000000000000..a0116c822c281a77b4dfd311c1b0db79064cf17a --- /dev/null +++ b/packages/opendesign/src/components/scroller/OScrollbar.vue @@ -0,0 +1,182 @@ + + + diff --git a/packages/opendesign/src/components/scroller/OScroller.vue b/packages/opendesign/src/components/scroller/OScroller.vue new file mode 100644 index 0000000000000000000000000000000000000000..92da801f5a24c413e8ce6c77e1cbcd07ecb20431 --- /dev/null +++ b/packages/opendesign/src/components/scroller/OScroller.vue @@ -0,0 +1,215 @@ + + + diff --git a/packages/opendesign/src/components/scroller/__demo__/ScrollbarBasic.vue b/packages/opendesign/src/components/scroller/__demo__/ScrollbarBasic.vue new file mode 100644 index 0000000000000000000000000000000000000000..2b488e1e38b70af7b25556c1154420c1be39e47a --- /dev/null +++ b/packages/opendesign/src/components/scroller/__demo__/ScrollbarBasic.vue @@ -0,0 +1,123 @@ + + + diff --git a/packages/opendesign/src/components/scroller/__demo__/ScrollbarBody.vue b/packages/opendesign/src/components/scroller/__demo__/ScrollbarBody.vue new file mode 100644 index 0000000000000000000000000000000000000000..afa04ef73e7cf41582425d6caa2a738263fd5732 --- /dev/null +++ b/packages/opendesign/src/components/scroller/__demo__/ScrollbarBody.vue @@ -0,0 +1,24 @@ + + + diff --git a/packages/opendesign/src/components/scroller/__demo__/TheComp.vue b/packages/opendesign/src/components/scroller/__demo__/TheComp.vue new file mode 100644 index 0000000000000000000000000000000000000000..4d2a6dea6391e3e0116dd664551edb7dc355069f --- /dev/null +++ b/packages/opendesign/src/components/scroller/__demo__/TheComp.vue @@ -0,0 +1,16 @@ + + diff --git a/packages/opendesign/src/components/scrollbar/__demo__/IndexScrollbar.vue b/packages/opendesign/src/components/scroller/__demo__/TheIndex.vue similarity index 91% rename from packages/opendesign/src/components/scrollbar/__demo__/IndexScrollbar.vue rename to packages/opendesign/src/components/scroller/__demo__/TheIndex.vue index 2ec5dc7c6bd25f7e64fd9a0630f89f0b72a1db88..e43aec63756c4b3f29f728c5e32ce81148c892df 100644 --- a/packages/opendesign/src/components/scrollbar/__demo__/IndexScrollbar.vue +++ b/packages/opendesign/src/components/scroller/__demo__/TheIndex.vue @@ -1,5 +1,6 @@