From 14798921e137c84279c6bd397e9f52605a572cef Mon Sep 17 00:00:00 2001 From: liuzaijiang <530604689@qq.com> Date: Mon, 27 Dec 2021 19:04:59 +0800 Subject: [PATCH] feat(comp: space): add size and block props BREAKING CHANGE: size is used instead of gap --- packages/components/back-top/style/index.less | 8 +++- .../style/themes/default.variable.less | 6 +++ .../components/config/src/defaultConfig.ts | 2 +- packages/components/config/src/types.ts | 3 +- .../components/space/__tests__/space.spec.ts | 38 ++++++++++++++----- packages/components/space/demo/Basic.vue | 2 +- .../space/demo/{Gap.md => CustomSize.md} | 0 packages/components/space/demo/CustomSize.vue | 17 +++++++++ packages/components/space/demo/Direction.md | 2 +- packages/components/space/demo/Direction.vue | 4 +- packages/components/space/demo/Gap.vue | 16 -------- packages/components/space/demo/Size.md | 10 +++++ packages/components/space/demo/Size.vue | 20 ++++++++++ packages/components/space/docs/Index.zh.md | 7 +--- packages/components/space/index.ts | 1 + packages/components/space/src/Space.tsx | 16 ++++++-- packages/components/space/src/types.ts | 10 ++++- packages/components/space/style/index.less | 10 +++++ 18 files changed, 129 insertions(+), 43 deletions(-) rename packages/components/space/demo/{Gap.md => CustomSize.md} (100%) create mode 100644 packages/components/space/demo/CustomSize.vue delete mode 100644 packages/components/space/demo/Gap.vue create mode 100644 packages/components/space/demo/Size.md create mode 100644 packages/components/space/demo/Size.vue diff --git a/packages/components/back-top/style/index.less b/packages/components/back-top/style/index.less index 7fbc5d7cb..e979fabb9 100644 --- a/packages/components/back-top/style/index.less +++ b/packages/components/back-top/style/index.less @@ -10,13 +10,19 @@ background-color: @back-top-background-color; width: @back-top-width; height: @back-top-height; - color: @color-white; + color: @back-top-color; display: flex; align-items: center; justify-content: center; font-size: @back-top-font-size; border-radius: @back-top-border-radius; + box-shadow: @back-top-box-shadow; cursor: pointer; + + &:hover { + background-color: @back-top-background-hover-color; + color: @back-top-hover-color; + } } @media screen and (min-width: @screen-lg) and (max-width: @screen-lg-max) { diff --git a/packages/components/back-top/style/themes/default.variable.less b/packages/components/back-top/style/themes/default.variable.less index e4e5c9c36..b31706216 100644 --- a/packages/components/back-top/style/themes/default.variable.less +++ b/packages/components/back-top/style/themes/default.variable.less @@ -15,4 +15,10 @@ @back-top-bottom: 50px; +@back-top-color: @color-white; +@back-top-hover-color: @color-white; @back-top-background-color: @color-primary; +@back-top-background-hover-color: @color-primary; + + +@back-top-box-shadow: 0 2px 8px 0 rgba(30,35,43,0.12); diff --git a/packages/components/config/src/defaultConfig.ts b/packages/components/config/src/defaultConfig.ts index 19e96b3da..202ca2227 100644 --- a/packages/components/config/src/defaultConfig.ts +++ b/packages/components/config/src/defaultConfig.ts @@ -76,7 +76,7 @@ const divider: DividerConfig = { type: 'horizontal', } -const space: SpaceConfig = { gap: 8, wrap: true } +const space: SpaceConfig = { size: 'sm', wrap: true } const row: RowConfig = { wrap: true } diff --git a/packages/components/config/src/types.ts b/packages/components/config/src/types.ts index 823b799b8..908f8c277 100644 --- a/packages/components/config/src/types.ts +++ b/packages/components/config/src/types.ts @@ -23,6 +23,7 @@ import type { NotificationPlacement, NotificationType } from '@idux/components/n import type { PaginationItemRenderFn, PaginationSize, PaginationTotalRenderFn } from '@idux/components/pagination' import type { ProgressFormat, ProgressSize } from '@idux/components/progress' import type { ResultStatus } from '@idux/components/result' +import type { SpaceSize } from '@idux/components/space' import type { SpinSize, SpinTipAlignType } from '@idux/components/spin' import type { StepperSize } from '@idux/components/stepper' import type { TableColumnAlign, TableColumnSortOrder, TablePaginationPosition, TableSize } from '@idux/components/table' @@ -55,7 +56,7 @@ export interface DividerConfig { } export interface SpaceConfig { - gap: number | string | [number | string, number | string] + size: number | string | [number | string, number | string] | SpaceSize wrap: boolean } diff --git a/packages/components/space/__tests__/space.spec.ts b/packages/components/space/__tests__/space.spec.ts index e9a48666b..e98fcc9f4 100644 --- a/packages/components/space/__tests__/space.spec.ts +++ b/packages/components/space/__tests__/space.spec.ts @@ -54,7 +54,25 @@ describe('Space', () => { expect(wrapper.classes()).toContain('ix-space-vertical') }) - test('gap work', async () => { + test('block work', async () => { + const wrapper = SpaceMount({ + props: { + direction: 'vertical', + }, + }) + + expect(wrapper.classes()).not.toContain('ix-space-block') + + await wrapper.setProps({ block: true }) + + expect(wrapper.classes()).toContain('ix-space-block') + + await wrapper.setProps({ direction: 'horizontal' }) + + expect(wrapper.classes()).not.toContain('ix-space-block') + }) + + test('size work', async () => { const wrapper = SpaceMount() const wrapperElement = wrapper.element as HTMLElement @@ -68,7 +86,7 @@ describe('Space', () => { expect(itemElements[2].style.marginRight).toBe('') expect(itemElements[2].style.paddingBottom).toEqual('8px') - await wrapper.setProps({ gap: 16 }) + await wrapper.setProps({ size: 'md' }) expect(wrapperElement.style.marginBottom).toBe('-16px') expect(itemElements[0].style.marginRight).toBe('16px') @@ -78,17 +96,17 @@ describe('Space', () => { expect(itemElements[2].style.marginRight).toBe('') expect(itemElements[2].style.paddingBottom).toEqual('16px') - await wrapper.setProps({ gap: `24px` }) + await wrapper.setProps({ size: 30 }) - expect(wrapperElement.style.marginBottom).toBe('-24px') - expect(itemElements[0].style.marginRight).toBe('24px') - expect(itemElements[0].style.paddingBottom).toEqual('24px') - expect(itemElements[1].style.marginRight).toBe('24px') - expect(itemElements[1].style.paddingBottom).toEqual('24px') + expect(wrapperElement.style.marginBottom).toBe('-30px') + expect(itemElements[0].style.marginRight).toBe('30px') + expect(itemElements[0].style.paddingBottom).toEqual('30px') + expect(itemElements[1].style.marginRight).toBe('30px') + expect(itemElements[1].style.paddingBottom).toEqual('30px') expect(itemElements[2].style.marginRight).toBe('') - expect(itemElements[2].style.paddingBottom).toEqual('24px') + expect(itemElements[2].style.paddingBottom).toEqual('30px') - await wrapper.setProps({ gap: [8, 16] }) + await wrapper.setProps({ size: [8, 16] }) expect(wrapperElement.style.marginBottom).toBe('-16px') expect(itemElements[0].style.marginRight).toBe('8px') diff --git a/packages/components/space/demo/Basic.vue b/packages/components/space/demo/Basic.vue index 1b14770e5..f3fe8d9be 100644 --- a/packages/components/space/demo/Basic.vue +++ b/packages/components/space/demo/Basic.vue @@ -1,6 +1,6 @@