From e0d50f766926b111822fee4009f9c99b292e6e31 Mon Sep 17 00:00:00 2001 From: devin Date: Thu, 5 Jan 2023 10:01:42 +0800 Subject: [PATCH 1/3] isArray --- packages/opendesign/src/components/_shared/dom.ts | 4 +++- packages/opendesign/src/components/popup/OPopup.vue | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/opendesign/src/components/_shared/dom.ts b/packages/opendesign/src/components/_shared/dom.ts index 879a065f..4af7fb19 100644 --- a/packages/opendesign/src/components/_shared/dom.ts +++ b/packages/opendesign/src/components/_shared/dom.ts @@ -1,3 +1,5 @@ +import { isArray } from './utils'; + export type DirectionT = 'left' | 'right' | 'top' | 'bottom'; export function isElement(el: any) { @@ -79,7 +81,7 @@ export function getElementBorder(el: HTMLElement, dir?: DirectionT | DirectionT[ if (typeof dir === 'string') { d = [dir]; } else { - d = Array.isArray(dir) ? dir : ['left', 'right', 'bottom', 'top']; + d = isArray(dir) ? dir : ['left', 'right', 'bottom', 'top']; } const rlt: { left?: number, diff --git a/packages/opendesign/src/components/popup/OPopup.vue b/packages/opendesign/src/components/popup/OPopup.vue index acdc699c..8f4c04d8 100644 --- a/packages/opendesign/src/components/popup/OPopup.vue +++ b/packages/opendesign/src/components/popup/OPopup.vue @@ -7,7 +7,7 @@ export default { import { onMounted, reactive, ref, Ref, watch, nextTick, onUnmounted, PropType, ComponentPublicInstance, computed } from 'vue'; import { PopupPositionT, PopupTriggerT } from './types'; import { isElement, getScrollParents } from '../_shared/dom'; -import { throttleRAF } from '../_shared/utils'; +import { isArray, throttleRAF } from '../_shared/utils'; import { calcPopupStyle, bindTrigger, getTransformOrigin } from './popup'; import { useResizeObserver } from '../hooks/use-resize-observer'; import { ResizeObserver } from '../resize-observer'; @@ -120,7 +120,7 @@ const props = defineProps({ }); const emits = defineEmits<{ (e: 'update:visible', val: boolean): void; (e: 'change', val: boolean): void }>(); -const triggers = Array.isArray(props.trigger) ? props.trigger : [props.trigger]; +const triggers = isArray(props.trigger) ? props.trigger : [props.trigger]; const visible = ref(false); let targetEl: HTMLElement | null = null; -- Gitee From 5fbbfd7a76a71bac76719dd9623778d588d7bb35 Mon Sep 17 00:00:00 2001 From: devin Date: Thu, 5 Jan 2023 11:18:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=85=A8=E5=B1=80=E9=85=8D=E7=BD=AE=20?= =?UTF-8?q?=E5=93=8D=E5=BA=94=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/docs/global.md | 10 +++++ .../src/components/_shared/export.ts | 7 +++ .../src/components/_shared/global.ts | 6 +-- .../src/components/_shared/icons.ts | 45 ++++++++++--------- .../src/components/button/OButton.vue | 9 ++-- packages/opendesign/src/components/config.ts | 6 --- packages/opendesign/src/components/index.ts | 2 +- .../opendesign/src/components/link/OLink.vue | 7 +-- .../src/components/link/style/index.scss | 1 - .../src/components/style/index.scss | 2 +- .../src/components/switch/OSwitch.vue | 3 +- packages/portal/src/components/TheHeader.vue | 21 ++++++++- packages/portal/src/main.ts | 4 +- 13 files changed, 73 insertions(+), 50 deletions(-) create mode 100644 packages/docs/global.md create mode 100644 packages/opendesign/src/components/_shared/export.ts delete mode 100644 packages/opendesign/src/components/config.ts diff --git a/packages/docs/global.md b/packages/docs/global.md new file mode 100644 index 00000000..304d9c08 --- /dev/null +++ b/packages/docs/global.md @@ -0,0 +1,10 @@ +# 全局配置 + +## 方法 + +| name | type | 默认值 | 说明 | +| :------ | :---------- | :-------- | :----------------------------------- | +| shape | ShapeT | 'normal' | 形状: large \| normal \| small | +| size | SizeT | 'normal' | 形状 normal \| round | +| type | ButtonTypeT | 'outline' | 形状 primary \|outline\| text \|link | +| loading | boolean | false | 加载状态 | diff --git a/packages/opendesign/src/components/_shared/export.ts b/packages/opendesign/src/components/_shared/export.ts new file mode 100644 index 00000000..03cc5691 --- /dev/null +++ b/packages/opendesign/src/components/_shared/export.ts @@ -0,0 +1,7 @@ +export { initSize, initShape } from './global'; + +export { + initLoadingIcon, + initLinkArrowIcon, + initLinkPrefixIcon +} from './icons'; \ No newline at end of file diff --git a/packages/opendesign/src/components/_shared/global.ts b/packages/opendesign/src/components/_shared/global.ts index f86e3eca..f6e0c944 100644 --- a/packages/opendesign/src/components/_shared/global.ts +++ b/packages/opendesign/src/components/_shared/global.ts @@ -2,18 +2,14 @@ import { ref } from 'vue'; // 尺寸 export type SizeT = 'large' | 'normal' | 'small' - export const defaultSize = ref('normal'); - export function initSize(type: SizeT) { defaultSize.value = type; } // 形状 export type ShapeT = 'round' | 'normal' - export const defaultShape = ref('normal'); - export function initShape(type: ShapeT) { defaultShape.value = type; -} +} \ No newline at end of file diff --git a/packages/opendesign/src/components/_shared/icons.ts b/packages/opendesign/src/components/_shared/icons.ts index 4b46b1b1..27320a3a 100644 --- a/packages/opendesign/src/components/_shared/icons.ts +++ b/packages/opendesign/src/components/_shared/icons.ts @@ -1,30 +1,33 @@ /** * 定义全局图标,支持全局初始化自定义 */ -import { IconLoading, IconLink, IconArrowRight } from '../icons'; -import type { Component } from 'vue'; +import { Component, shallowRef } from 'vue'; +import { + IconLoading as _IconLoading, + IconLink as IconLink, + IconArrowRight +} from '../icons'; -let iLoading: Component = IconLoading; -export function setLoadingIcon(icon: Component) { - iLoading = icon; -} -export function getLoadingIcon() { - return iLoading; +/** + * 全局loading图标 + */ +export const IconLoading = shallowRef(_IconLoading); +export function initLoadingIcon(icon: Component) { + IconLoading.value = icon; } - -let iLink: Component = IconLink; -export function setLinkIcon(icon: Component) { - iLink = icon; -} -export function getLinkIcon() { - return iLink; +/** + * link前缀图标 + */ +export const IconLinkPrefix = shallowRef(IconLink); +export function initLinkPrefixIcon(icon: Component) { + IconLinkPrefix.value = icon; } -let iLinkArrow: Component = IconArrowRight; -export function setLinkArrowIcon(icon: Component) { - iLinkArrow = icon; -} -export function getLinkArrowIcon() { - return iLinkArrow; +/** + * link箭头图标 + */ +export const IconLinkArrow = shallowRef(IconArrowRight); +export function initLinkArrowIcon(icon: Component) { + IconLinkArrow.value = icon; } \ No newline at end of file diff --git a/packages/opendesign/src/components/button/OButton.vue b/packages/opendesign/src/components/button/OButton.vue index c857ebc7..8c9eb1a7 100644 --- a/packages/opendesign/src/components/button/OButton.vue +++ b/packages/opendesign/src/components/button/OButton.vue @@ -2,7 +2,8 @@ import { defaultSize, defaultShape } from '../_shared/global'; import type { SizeT, ShapeT } from '../_shared/global'; import { ButtonTypeT } from './types'; -import { getLoadingIcon } from '../_shared/icons'; +import { IconLoading } from '../_shared/icons'; +import { computed } from 'vue'; interface ButtonPropT { /** @@ -24,10 +25,10 @@ interface ButtonPropT { } const props = withDefaults(defineProps(), { type: 'outline', - size: defaultSize.value, + size: undefined, shape: defaultShape.value, }); -const IconLoading = getLoadingIcon(); +const size = computed(() => props.size || defaultSize.value);