diff --git a/.vscode/opendesign.token.code-snippets b/.vscode/opendesign.token.code-snippets index a9a68ebf0b4cccc8943657497d40332bc71b6271..c0ab64b136591578be4d8fe323754d4ce1bdfef9 100644 --- a/.vscode/opendesign.token.code-snippets +++ b/.vscode/opendesign.token.code-snippets @@ -1359,6 +1359,30 @@ "description": "小尺寸圆角[light: 2px, dark: 2px]", "scope": "css,scss,less" }, + "--o-radius-control-l": { + "prefix": [ + "var(--o-radius-control-l)" + ], + "body": "var(--o-radius-control-l)", + "description": "大尺寸控件圆角[light: var(--o-radius-l), dark: var(--o-radius-l)]", + "scope": "css,scss,less" + }, + "--o-radius-control-m": { + "prefix": [ + "var(--o-radius-control-m)" + ], + "body": "var(--o-radius-control-m)", + "description": "中尺寸控件圆角[light: var(--o-radius-m), dark: var(--o-radius-m)]", + "scope": "css,scss,less" + }, + "--o-radius-control-s": { + "prefix": [ + "var(--o-radius-control-s)" + ], + "body": "var(--o-radius-control-s)", + "description": "小尺寸控件圆角[light: var(--o-radius-s), dark: var(--o-radius-s)]", + "scope": "css,scss,less" + }, "--o-duration-s": { "prefix": [ "var(--o-duration-s)" diff --git a/packages/docs/global.md b/packages/docs/global.md index 1e5d93e738d136a92049f43e0e2af9bbddd02a79..e3dd5322cb98def8a815dce591e7f82ab5e9cd69 100644 --- a/packages/docs/global.md +++ b/packages/docs/global.md @@ -26,6 +26,8 @@ # 变量定义都在 var.scss 里,同时使用最外层内定义; +# 状态类 如果在最外层使用 o-[component]-[status],在内部可以使用 is-[status] + # 不同状态通过类改变变量值,而不是新定义多个变量; # 变量命名 diff --git a/packages/opendesign/src/components/_shared/export.ts b/packages/opendesign/src/components/_shared/export.ts index 03cc56910ac84dbaaa403028d218d925bb1b89e3..28edaec14866d99c093e3b0a35820f2aa1d917a8 100644 --- a/packages/opendesign/src/components/_shared/export.ts +++ b/packages/opendesign/src/components/_shared/export.ts @@ -1,7 +1,3 @@ export { initSize, initShape } from './global'; -export { - initLoadingIcon, - initLinkArrowIcon, - initLinkPrefixIcon -} from './icons'; \ No newline at end of file +export * from './init-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 e09958d80aa481cff9875cdf0dd67f9135ea264d..d6f0fe373374f00763a3ec427c18e3fc99124c9a 100644 --- a/packages/opendesign/src/components/_shared/global.ts +++ b/packages/opendesign/src/components/_shared/global.ts @@ -9,13 +9,13 @@ export function initSize(val: SizeT) { // 圆角 export type RoundT = 'pill' | string; -export const defaultRound = ref<{ m: string, s: string, l: string } | null>(); +export const defaultRound = ref<'pill' | 'default'>('default'); -export function initRound(m: string, s: string, l: string) { - defaultRound.value = { - m, s, l - }; +export function initRound(type: 'pill' | 'default') { + defaultRound.value = type; } +// TODO 全局变量增加 o-radius-control-s o-radius-control-m o-radius-control-l + // 方向 export type DirectionT = 'horizontal' | 'vertical'; diff --git a/packages/opendesign/src/components/_shared/icons.ts b/packages/opendesign/src/components/_shared/icons.ts index cf6b6de14b9fd2f99663a78dcff287f6b63dbeac..317ef013a73aea890d692d42cc2dcde891744885 100644 --- a/packages/opendesign/src/components/_shared/icons.ts +++ b/packages/opendesign/src/components/_shared/icons.ts @@ -10,60 +10,75 @@ import { IconAdd as _IconAdd, IconMinus as _IconMinus, IconDone as _IconDone, + IconChevronUp as _IconChevronUp, + IconChevronDown as _IconChevronDown, + IconChevronLeft as _IconChevronLeft, + IconChevronRight as _IconChevronRight, + IconEllipsis as _IconEllipsis, + IconStar as _IconStar } from '../icons'; /** * 全局loading图标 */ export const IconLoading = shallowRef(_IconLoading); -export function initLoadingIcon(icon: Component) { - IconLoading.value = icon; -} /** * link前缀图标 */ export const IconLinkPrefix = shallowRef(IconLink); -export function initLinkPrefixIcon(icon: Component) { - IconLinkPrefix.value = icon; -} /** * link箭头图标 */ export const IconLinkArrow = shallowRef(IconArrowRight); -export function initLinkArrowIcon(icon: Component) { - IconLinkArrow.value = icon; -} /** * close图标 */ export const IconClose = shallowRef(IconX); -export function initCloseIcon(icon: Component) { - IconClose.value = icon; -} /** * add图标 */ export const IconAdd = shallowRef(_IconAdd); -export function initAddIcon(icon: Component) { - IconAdd.value = icon; -} /** * minus图标 */ export const IconMinus = shallowRef(_IconMinus); -export function initMinusIcon(icon: Component) { - IconMinus.value = icon; -} + +/** + * up图标 + */ +export const IconChevronUp = shallowRef(_IconChevronUp); + +/** + * down图标 + */ +export const IconChevronDown = shallowRef(_IconChevronDown); + +/** + * left图标 + */ +export const IconChevronLeft = shallowRef(_IconChevronLeft); + +/** + * right图标 + */ +export const IconChevronRight = shallowRef(_IconChevronRight); /** * done图标 */ export const IconDone = shallowRef(_IconDone); -export function initDoneIcon(icon: Component) { - IconDone.value = icon; -} + +/** + * 更多...图标 + */ +export const IconEllipsis = shallowRef(_IconEllipsis); + +/** + * star图标 + */ +export const IconStar = shallowRef(_IconStar); diff --git a/packages/opendesign/src/components/_shared/init-icons.ts b/packages/opendesign/src/components/_shared/init-icons.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc9a6e4eba17f4ece04949e74e1000bdf19323c4 --- /dev/null +++ b/packages/opendesign/src/components/_shared/init-icons.ts @@ -0,0 +1,108 @@ +/** + * 定义全局图标,支持全局初始化自定义 + */ +import { Component } from 'vue'; +import { + IconLoading, + IconLinkPrefix, + IconLinkArrow, + IconClose, + IconAdd, + IconMinus, + IconDone, + IconChevronUp, + IconChevronDown, + IconChevronLeft, + IconChevronRight, + IconEllipsis, + IconStar +} from './icons'; + +/** + * 全局loading图标 + */ +export function initIconLoading(icon: Component) { + IconLoading.value = icon; +} + +/** + * link前缀图标 + */ +export function initIconLinkPrefix(icon: Component) { + IconLinkPrefix.value = icon; +} + +/** + * link箭头图标 + */ +export function initIconLinkArrow(icon: Component) { + IconLinkArrow.value = icon; +} + +/** + * close图标 + */ +export function initIconClose(icon: Component) { + IconClose.value = icon; +} + +/** + * add图标 + */ +export function initIconAdd(icon: Component) { + IconAdd.value = icon; +} + +/** + * minus图标 + */ +export function initIconMinus(icon: Component) { + IconMinus.value = icon; +} + +/** + * up图标 + */ +export function initIconChevronUp(icon: Component) { + IconChevronUp.value = icon; +} + +/** + * down图标 + */ +export function initIconChevronDown(icon: Component) { + IconChevronDown.value = icon; +} + +/** + * left图标 + */ +export function initIconChevronLeft(icon: Component) { + IconChevronLeft.value = icon; +} + +/** + * right图标 + */ +export function initIconChevronRight(icon: Component) { + IconChevronRight.value = icon; +} + +/** + * done图标 + */ +export function initIconDone(icon: Component) { + IconDone.value = icon; +} +/** + * 更多...图标 + */ +export function initIconEllipsis(icon: Component) { + IconEllipsis.value = icon; +} +/** + * star图标 + */ +export function initIconStar(icon: Component) { + IconStar.value = icon; +} diff --git a/packages/opendesign/src/components/_shared/style-class.ts b/packages/opendesign/src/components/_shared/style-class.ts index 14a0a193d3868cbd57476b8d7cd094764398e47b..dd85fdad1cb92f95d4a1105ef1fd07e157c210bc 100644 --- a/packages/opendesign/src/components/_shared/style-class.ts +++ b/packages/opendesign/src/components/_shared/style-class.ts @@ -1,37 +1,22 @@ -import { computed, StyleValue } from 'vue'; +import { computed } from 'vue'; import { defaultRound } from '../_shared/global'; export function getRoundClass(props: any, name: string) { return { class: computed(() => { - - if (props.round) { - if (props.round === 'pill') { - return `o-${name}-round-pill`; - } else { - return `o-${name}-round-diy`; - } - } else { - if (defaultRound.value) { - return `o-${name}-round-diy`; - } + if (props.round === 'pill' || (!props.round && defaultRound.value === 'pill')) { + return `o-${name}-round-pill`; } return ''; }), style: computed(() => { - const rlt: StyleValue = {}; - - const round = props.round || defaultRound.value; - - if (round) { - if (round !== 'pill') { - return { - [`--${name}-radius`]: props.round - }; - } + if (props.round && props.round !== 'pill') { + return { + [`--${name}-radius`]: props.round + }; } - return rlt; + return {}; }) }; } \ No newline at end of file diff --git a/packages/opendesign/src/components/badge/style/var.scss b/packages/opendesign/src/components/badge/style/var.scss index 36566620e11a05a75022e68185491e6107498cc4..664ae2eed42e3e92ff02ba365d2f24a60f619758 100644 --- a/packages/opendesign/src/components/badge/style/var.scss +++ b/packages/opendesign/src/components/badge/style/var.scss @@ -2,7 +2,7 @@ --badge-text-size: var(--o-font_size-tip1); --badge-text-height: var(--o-line_height-tip1); - --badge-border: var(--o-radius-l); + --badge-border: var(--o-radius-control-l); --badge-color: var(--o-color-info1); diff --git a/packages/opendesign/src/components/breadcrumb/OBreadcrumbItem.vue b/packages/opendesign/src/components/breadcrumb/OBreadcrumbItem.vue index a22f2432ed2c783d9085b2da75bc7b018470849a..957b0e97117d1c26a600ef1f64b993ad22072c30 100644 --- a/packages/opendesign/src/components/breadcrumb/OBreadcrumbItem.vue +++ b/packages/opendesign/src/components/breadcrumb/OBreadcrumbItem.vue @@ -3,7 +3,7 @@ import { inject } from 'vue'; import { breadcrumbItemProps } from './types'; import { breadcrumbInjectKey } from './provide'; -import { IconChevronRight } from '../icons'; +import { IconChevronRight } from '../_shared/icons'; defineProps(breadcrumbItemProps); diff --git a/packages/opendesign/src/components/button/__demo__/BtnRound.vue b/packages/opendesign/src/components/button/__demo__/BtnRound.vue index 8305a2c9cb313154179a3afd79cd6f00a105fb33..5b6fd47cef8433bd3bbd9b6a0664f31688e99049 100644 --- a/packages/opendesign/src/components/button/__demo__/BtnRound.vue +++ b/packages/opendesign/src/components/button/__demo__/BtnRound.vue @@ -40,7 +40,7 @@ const onClick = () => {
-

round="{{ r }}"

+

round="{{ r }}px"

Round Button diff --git a/packages/opendesign/src/components/button/style/index.scss b/packages/opendesign/src/components/button/style/index.scss index 4db5cd0305e19ac3bc1634af6ef5071de7a9d4fe..5a9c33677a664209c87962cea979dd1bf0f12046 100644 --- a/packages/opendesign/src/components/button/style/index.scss +++ b/packages/opendesign/src/components/button/style/index.scss @@ -7,6 +7,8 @@ transition: all var(--o-duration-s) var(--o-easing-standard); white-space: nowrap; + border-radius: var(--btn-radius); + display: inline-flex; align-items: center; justify-content: center; @@ -80,7 +82,6 @@ height: var(--o-size-s); font-size: var(--o-font_size-tip1); line-height: var(--o-line_height-tip1); - border-radius: var(--btn-radius); &.o-btn-icon-only { width: var(--o-size-s); @@ -95,7 +96,6 @@ height: var(--o-size-m); font-size: var(--o-font_size-text); line-height: var(--o-line_height-text); - border-radius: var(--btn-radius); &.o-btn-icon-only { width: var(--o-size-m); @@ -107,17 +107,12 @@ height: var(--o-size-l); font-size: var(--o-font_size-h4); line-height: var(--o-line_height-h4); - border-radius: var(--btn-radius); &.o-btn-icon-only { width: var(--o-size-l); } } -.o-btn-round-pill { - border-radius: var(--o-size-l); -} - .o-btn-icon-only { padding: 0; } diff --git a/packages/opendesign/src/components/button/style/var.scss b/packages/opendesign/src/components/button/style/var.scss index 7617203b8662db06c8021717b2924edc9b2b7b18..2b74b0bab79d210e5a95f7a264c8a6cee25ed0bf 100644 --- a/packages/opendesign/src/components/button/style/var.scss +++ b/packages/opendesign/src/components/button/style/var.scss @@ -167,12 +167,15 @@ } } +.o-btn-round-pill { + --btn-radius: var(--o-size-l); +} .o-btn-small { - --btn-radius: var(--o-radius-s); + --btn-radius: var(--o-radius-control-s); } .o-btn-medium { - --btn-radius: var(--o-radius-m); + --btn-radius: var(--o-radius-control-m); } .o-btn-large { - --btn-radius: var(--o-radius-l); + --btn-radius: var(--o-radius-control-l); } diff --git a/packages/opendesign/src/components/dropdown/style/var.scss b/packages/opendesign/src/components/dropdown/style/var.scss index 702a01358a471b41164f4c48aad1f94f09f4217b..fb57ac28401bedf92f393b14f4863c89184ddd3a 100644 --- a/packages/opendesign/src/components/dropdown/style/var.scss +++ b/packages/opendesign/src/components/dropdown/style/var.scss @@ -2,7 +2,7 @@ --dropdown-list-bg: var(--o-color-control-light); --dropdown-list-shadow: none; --dropdown-list-bd: 1px solid var(--o-color-primary2); - --dropdown-list-radius: var(--o-radius-s); + --dropdown-list-radius: var(--o-radius-control-s); } .o-dropdown-item { diff --git a/packages/opendesign/src/components/index.ts b/packages/opendesign/src/components/index.ts index 3239aacdc1f9747dbdaf67f70618b0d6fece6161..8ca317c60bc4bb7cbd81477fe9173089b9fff512 100644 --- a/packages/opendesign/src/components/index.ts +++ b/packages/opendesign/src/components/index.ts @@ -1,15 +1,33 @@ export * from './_shared/export'; - export * from './hooks'; +export * from './directves'; export * from './button'; - export * from './switch'; - +export * from './link'; +export * from './popup'; +export * from './popover'; +export * from './input'; +export * from './input-number'; +export * from './textarea'; +export * from './select'; +export * from './tabs'; +export * from './table'; +export * from './pagination'; export * from './radio'; - export * from './radio-group'; - export * from './checkbox'; +export * from './checkbox-group'; +export * from './rate'; +export * from './tag'; +export * from './badge'; +export * from './divider'; +export * from './form'; +export * from './menu'; +export * from './breadcrumb'; +// export * from './dropdown'; +// export * from './scrollbar'; -export * from './checkbox-group'; \ No newline at end of file +export * from './intersection-observer'; +export * from './resize-observer'; +export * from './child-only'; \ No newline at end of file diff --git a/packages/opendesign/src/components/input-number/OInputNumber.vue b/packages/opendesign/src/components/input-number/OInputNumber.vue index 04fe8a061615599cc8471443002a701db1bd3d64..6440ac3aa4fd63956d2ad3e2edfda48b7a0f2c27 100644 --- a/packages/opendesign/src/components/input-number/OInputNumber.vue +++ b/packages/opendesign/src/components/input-number/OInputNumber.vue @@ -1,7 +1,7 @@ diff --git a/packages/portal/src/router.ts b/packages/portal/src/router.ts index 1e512dd62b751fc1a773314113dc37a0aa217b39..7d7061daa4c4604931b870b4376128ea62e067f0 100644 --- a/packages/portal/src/router.ts +++ b/packages/portal/src/router.ts @@ -26,31 +26,12 @@ export const routes = [ label: '链接', component: () => import('@components/link/__demo__/IndexLink.vue'), }, - { path: '/switch', name: 'Switch', label: '开关', component: () => import('@components/switch/__demo__/IndexSwitch.vue'), }, - { - path: '/resize-observer', - name: 'ResizeObserver', - label: 'resize监听', - component: () => import('@components/resize-observer/__demo__/IndexResize.vue'), - }, - { - path: '/intersection-observer', - name: 'IntersectionObserver', - label: 'Intersection监听', - component: () => import('@components/intersection-observer/__demo__/IndexIntersection.vue'), - }, - { - path: '/child-only', - name: 'ChildOnly', - label: '只渲染一个子元素', - component: () => import('@components/child-only/__demo__/IndexChildOnly.vue'), - }, { path: '/popup', name: 'Popup', @@ -157,8 +138,26 @@ export const routes = [ path: '/dropdown', name: 'ODropdown', label: '下拉菜单', - component: () => import('@components/dropdown/__demo__/IndexDropdown.vue'), + component: () => import('@components/dropdown/__demo__/IndexDropdown.vue') + }, + { + path: '/resize-observer', + name: 'ResizeObserver', + label: 'resize监听', + component: () => import('@components/resize-observer/__demo__/IndexResize.vue'), + }, + { + path: '/intersection-observer', + name: 'IntersectionObserver', + label: 'Intersection监听', + component: () => import('@components/intersection-observer/__demo__/IndexIntersection.vue'), }, + { + path: '/child-only', + name: 'ChildOnly', + label: '只渲染一个子元素', + component: () => import('@components/child-only/__demo__/IndexChildOnly.vue'), + } ]; export const router = createRouter({