From be7fafc863894fbbebc3b597c2277b9d4cad184b Mon Sep 17 00:00:00 2001 From: dyh_a Date: Fri, 14 Jul 2023 11:37:58 +0800 Subject: [PATCH 1/4] =?UTF-8?q?perf(components):=20=E4=BC=98=E5=8C=96pop?= =?UTF-8?q?=E7=B3=BB=E5=88=97=E7=BB=84=E4=BB=B6=E7=9A=84=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/components/src/popover/index.scss | 2 +- .../components/src/word-balloon/index.scss | 31 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/packages/components/src/popover/index.scss b/packages/components/src/popover/index.scss index 9937fc34..5206b47d 100644 --- a/packages/components/src/popover/index.scss +++ b/packages/components/src/popover/index.scss @@ -16,6 +16,6 @@ $r: '#{$prefix}popover'; &-enter-from, &-leave-to { opacity: 0; - transform: scale(0.9); + transform: scale(0); } } diff --git a/packages/components/src/word-balloon/index.scss b/packages/components/src/word-balloon/index.scss index 2cdf708f..a262334d 100644 --- a/packages/components/src/word-balloon/index.scss +++ b/packages/components/src/word-balloon/index.scss @@ -16,7 +16,8 @@ $r: '#{$prefix}word-balloon'; white-space: pre-wrap; color: var(--t-text-color); background: var(--t-word-balloon-bg); - box-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), 0 9px 28px 8px rgb(0 0 0 / 5%); + box-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), + 0 9px 28px 8px rgb(0 0 0 / 5%); word-wrap: break-word; box-sizing: border-box; } @@ -68,6 +69,13 @@ $r: '#{$prefix}word-balloon'; } } &--top { + transform-origin: bottom center; + &-start { + transform-origin: bottom left; + } + &-end { + transform-origin: bottom right; + } &, &-start, &-end { @@ -77,6 +85,13 @@ $r: '#{$prefix}word-balloon'; } } &--right { + transform-origin: center left; + &-start { + transform-origin: top left; + } + &-end { + transform-origin: bottom left; + } &, &-start, &-end { @@ -88,6 +103,13 @@ $r: '#{$prefix}word-balloon'; } } &--bottom { + transform-origin: top center; + &-start { + transform-origin: top left; + } + &-end { + transform-origin: top right; + } &, &-start, &-end { @@ -98,6 +120,13 @@ $r: '#{$prefix}word-balloon'; } } &--left { + transform-origin: center right; + &-start { + transform-origin: top right; + } + &-end { + transform-origin: bottom right; + } &, &-start, &-end { From 4993899e50e72fcf28133c52241b6de05441aa52 Mon Sep 17 00:00:00 2001 From: dyh_a Date: Fri, 14 Jul 2023 12:12:24 +0800 Subject: [PATCH 2/4] =?UTF-8?q?perf(components/layouts):=20=E6=8A=BD?= =?UTF-8?q?=E5=8F=96=E5=85=AC=E5=85=B1=E4=BB=A3=E7=A0=81=E5=B9=B6=E8=AE=A9?= =?UTF-8?q?=E5=90=84=E7=A7=8Dlayout=E7=BB=84=E4=BB=B6=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/components/src/layouts/Aside.tsx | 19 ----- packages/components/src/layouts/Footer.tsx | 19 ----- packages/components/src/layouts/Header.tsx | 19 ----- packages/components/src/layouts/Layout.tsx | 73 ++++++++++++++----- packages/components/src/layouts/Main.tsx | 19 ----- packages/components/src/layouts/index.ts | 6 +- .../components/src/layouts/layout.types.ts | 7 +- .../components/src/layouts/useElement.tsx | 21 ++++++ 8 files changed, 83 insertions(+), 100 deletions(-) delete mode 100644 packages/components/src/layouts/Aside.tsx delete mode 100644 packages/components/src/layouts/Footer.tsx delete mode 100644 packages/components/src/layouts/Header.tsx delete mode 100644 packages/components/src/layouts/Main.tsx create mode 100644 packages/components/src/layouts/useElement.tsx diff --git a/packages/components/src/layouts/Aside.tsx b/packages/components/src/layouts/Aside.tsx deleted file mode 100644 index 90061102..00000000 --- a/packages/components/src/layouts/Aside.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { BaseLayoutsProps } from './layout.types'; -import { getComponentClass } from '@pkg/shared'; -import { getClassNames } from '@tool-pack/basic'; - -const rootClass = getComponentClass('aside'); - -export const Aside: React.FC = (props) => { - const { children, className, ...rest } = props; - return ( - - ); -}; diff --git a/packages/components/src/layouts/Footer.tsx b/packages/components/src/layouts/Footer.tsx deleted file mode 100644 index b3e46dfb..00000000 --- a/packages/components/src/layouts/Footer.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { BaseLayoutsProps } from './layout.types'; -import { getComponentClass } from '@pkg/shared'; -import { getClassNames } from '@tool-pack/basic'; - -const rootClass = getComponentClass('footer'); - -export const Footer: React.FC = (props) => { - const { children, className, ...rest } = props; - return ( -
- {children} -
- ); -}; diff --git a/packages/components/src/layouts/Header.tsx b/packages/components/src/layouts/Header.tsx deleted file mode 100644 index fb5a525a..00000000 --- a/packages/components/src/layouts/Header.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { BaseLayoutsProps } from './layout.types'; -import { getComponentClass } from '@pkg/shared'; -import { getClassNames } from '@tool-pack/basic'; - -const rootClass = getComponentClass('header'); - -export const Header: React.FC = (props) => { - const { children, className, ...rest } = props; - return ( -
- {children} -
- ); -}; diff --git a/packages/components/src/layouts/Layout.tsx b/packages/components/src/layouts/Layout.tsx index 787b00dd..0c92f1d0 100644 --- a/packages/components/src/layouts/Layout.tsx +++ b/packages/components/src/layouts/Layout.tsx @@ -1,25 +1,62 @@ import React from 'react'; import { getComponentClass } from '@pkg/shared'; import { getClassNames } from '@tool-pack/basic'; -import { BaseLayoutsProps } from './layout.types'; +import type { BaseLayoutsProps, LayoutProps } from './layout.types'; +import { useElement } from './useElement'; +import { RequiredPart } from '@tool-pack/types'; const rootClass = getComponentClass('layout'); -export const Layout = React.forwardRef< - HTMLElement, - BaseLayoutsProps & { - vertical?: boolean; - } ->((props, ref) => { - const { vertical, className, children, ...rest } = props; - return ( -
( + (props, ref) => { + const { tag, vertical, className, children, ...rest } = + props as RequiredPart; + return React.createElement(tag, { + ...rest, + ref, + className: getClassNames(rootClass, { vertical, [className as string]: className, - })}> - {children} -
- ); -}); + }), + children, + }); + }, +); +Layout.defaultProps = { + tag: 'section', +} satisfies Partial; + +// main +const mainRootClass = getComponentClass('main'); +export const Main: React.FC = (props) => { + return useElement(props, mainRootClass); +}; +Main.defaultProps = { + tag: 'main', +} satisfies Partial; + +// aside +const asideRootClass = getComponentClass('aside'); +export const Aside: React.FC = (props) => { + return useElement(props, asideRootClass); +}; +Aside.defaultProps = { + tag: 'aside', +} satisfies Partial; + +// header +const headerRootClass = getComponentClass('header'); +export const Header: React.FC = (props) => { + return useElement(props, headerRootClass); +}; +Header.defaultProps = { + tag: 'header', +} satisfies Partial; + +// footer +const footerRootClass = getComponentClass('footer'); +export const Footer: React.FC = (props) => { + return useElement(props, footerRootClass); +}; +Footer.defaultProps = { + tag: 'footer', +} satisfies Partial; diff --git a/packages/components/src/layouts/Main.tsx b/packages/components/src/layouts/Main.tsx deleted file mode 100644 index 73f807b4..00000000 --- a/packages/components/src/layouts/Main.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import { BaseLayoutsProps } from './layout.types'; -import { getComponentClass } from '@pkg/shared'; -import { getClassNames } from '@tool-pack/basic'; - -const rootClass = getComponentClass('main'); - -export const Main: React.FC = (props) => { - const { children, className, ...rest } = props; - return ( -
- {children} -
- ); -}; diff --git a/packages/components/src/layouts/index.ts b/packages/components/src/layouts/index.ts index 378fa6af..474fe5a0 100644 --- a/packages/components/src/layouts/index.ts +++ b/packages/components/src/layouts/index.ts @@ -1,6 +1,2 @@ -// import './layouts.scss'; +export type { LayoutProps, BaseLayoutsProps } from './layout.types'; export * from './Layout'; -export * from './Header'; -export * from './Footer'; -export * from './Main'; -export * from './Aside'; diff --git a/packages/components/src/layouts/layout.types.ts b/packages/components/src/layouts/layout.types.ts index 94cf3be3..123dbe46 100644 --- a/packages/components/src/layouts/layout.types.ts +++ b/packages/components/src/layouts/layout.types.ts @@ -1,3 +1,8 @@ import React from 'react'; -export type BaseLayoutsProps = React.HTMLAttributes; +export type BaseLayoutsProps = React.HTMLAttributes & { + tag?: keyof HTMLElementTagNameMap; +}; +export type LayoutProps = BaseLayoutsProps & { + vertical?: boolean; +}; diff --git a/packages/components/src/layouts/useElement.tsx b/packages/components/src/layouts/useElement.tsx new file mode 100644 index 00000000..ccbc20ec --- /dev/null +++ b/packages/components/src/layouts/useElement.tsx @@ -0,0 +1,21 @@ +import { BaseLayoutsProps } from './layout.types'; +import { RequiredPart } from '@tool-pack/types'; +import React from 'react'; +import { getClassNames } from '@tool-pack/basic'; + +export function useElement(props: BaseLayoutsProps, rootClass: string) { + const { children, className, tag, ...rest } = props as RequiredPart< + BaseLayoutsProps, + 'tag' + >; + return React.createElement( + tag, + { + ...rest, + className: getClassNames(rootClass, { + [className as string]: className, + }), + }, + children, + ); +} From 049bcaf23f6a0205bb2bf879fda3f657040fe4af Mon Sep 17 00:00:00 2001 From: dyh_a Date: Fri, 14 Jul 2023 12:32:58 +0800 Subject: [PATCH 3/4] =?UTF-8?q?perf(components/pop-confirm):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 各种layout的tag改为普通tag; 2. 添加缺失的className 3. 修复内容多时样式错乱 --- packages/components/src/pop-confirm/PopConfirm.tsx | 10 +++++----- packages/components/src/pop-confirm/demo/text.tsx | 11 ++++++++--- packages/components/src/pop-confirm/index.scss | 3 +++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/components/src/pop-confirm/PopConfirm.tsx b/packages/components/src/pop-confirm/PopConfirm.tsx index e5fffca9..6006e58f 100644 --- a/packages/components/src/pop-confirm/PopConfirm.tsx +++ b/packages/components/src/pop-confirm/PopConfirm.tsx @@ -51,19 +51,19 @@ export const PopConfirm: React.FC = (props) => { }, [onConfirm]); const Content = ( - -
- + +
+ {icon !== null && (icon || ( ))} - {content} +
{content}
-