Skip to content

Commit

Permalink
fix(comp:modal): the default header size should be 'md'
Browse files Browse the repository at this point in the history
  • Loading branch information
danranVm committed Jun 21, 2022
1 parent 4bda54b commit d1764b1
Show file tree
Hide file tree
Showing 13 changed files with 35 additions and 52 deletions.
1 change: 0 additions & 1 deletion packages/components/_private/footer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@ import Footer from './src/Footer'
const ɵFooter = Footer

export { ɵFooter }
export { footerTypeDef as ɵFooterTypeDef } from './src/types'
export type { FooterProps as ɵFooterProps, FooterButtonProps as ɵFooterButtonProps } from './src/types'
4 changes: 1 addition & 3 deletions packages/components/_private/footer/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ export interface FooterButtonProps extends ButtonProps {
onClick?: (evt: Event) => void
}

export const footerTypeDef = [Boolean, Array, Object] as PropType<boolean | FooterButtonProps[] | VNode>

export const footerProps = {
cancel: Function as PropType<(evt?: Event | unknown) => Promise<void> | void>,
cancelButton: Object as PropType<ButtonProps>,
Expand All @@ -26,7 +24,7 @@ export const footerProps = {
type: Boolean,
default: true,
},
footer: footerTypeDef,
footer: [Boolean, Array, Object] as PropType<boolean | FooterButtonProps[] | VNode>,
ok: Function as PropType<(evt?: Event | unknown) => Promise<void> | void>,
okButton: Object as PropType<ButtonProps>,
okLoading: Boolean,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Vitest Snapshot v1

exports[`Header > render work 1`] = `
"<div class=\\"ix-header ix-header-sm\\">
"<div class=\\"ix-header ix-header-md\\">
<div class=\\"ix-header-content\\">
<!---->
<!----><span class=\\"ix-header-title\\">Header title</span>
Expand Down
6 changes: 2 additions & 4 deletions packages/components/_private/header/src/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,9 @@ const Header: FunctionalComponent<HeaderProps> = (props, { slots }) => {
return <IxHeader {...headerProps} v-slots={headerSlots}></IxHeader>
}

const defaultSize = 'sm'

function convertProps(props: HeaderProps) {
const { closable, closeIcon, header, onClose } = props
const headerProps = isString(header) ? { size: defaultSize, title: header } : { size: defaultSize, ...header }
const { closable, closeIcon, header, size, onClose } = props
const headerProps = isString(header) ? { title: header, size } : { size, ...header }
if (closable) {
headerProps.suffix = headerProps.suffix ?? closeIcon
if (onClose) {
Expand Down
1 change: 1 addition & 0 deletions packages/components/_private/header/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ export interface HeaderProps {
closable?: boolean
closeIcon?: string | VNode
header?: string | IxHeaderProps
size?: 'xl' | 'lg' | 'md' | 'sm'
onClose?: (evt: Event) => void
}
2 changes: 1 addition & 1 deletion packages/components/card/src/Card.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export default defineComponent({
return (
<div class={classes.value}>
{renderCover(props, slots, prefixCls)}
<ɵHeader v-slots={slots} header={props.header} />
<ɵHeader v-slots={slots} size="sm" header={props.header} />
{renderBody(props, children, hasGrid, prefixCls)}
{renderFooter(props, slots, prefixCls)}
</div>
Expand Down
6 changes: 3 additions & 3 deletions packages/components/date-picker/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
*/

import type { ExtractInnerPropTypes, ExtractPublicPropTypes, MaybeArray } from '@idux/cdk/utils'
import type { ɵFooterButtonProps } from '@idux/components/_private/footer'
import type { FormSize } from '@idux/components/form'
import type { DefineComponent, HTMLAttributes, PropType, VNode, VNodeChild } from 'vue'

import { controlPropDef } from '@idux/cdk/forms'
import { ɵPortalTargetDef } from '@idux/cdk/portal'
import { ɵFooterTypeDef } from '@idux/components/_private/footer'

export interface TimePanelOptions {
disabledHours?: (selectedAmPm: string | undefined) => number[]
Expand Down Expand Up @@ -96,7 +96,7 @@ export const datePickerProps = {

value: [String, Date, Number],
defaultOpenValue: [String, Date, Number],
footer: { type: ɵFooterTypeDef, default: false },
footer: { type: [Boolean, Array, Object] as PropType<boolean | ɵFooterButtonProps[] | VNode>, default: false },
placeholder: String,
timePanelOptions: Object as PropType<TimePanelOptions>,
'onUpdate:value': [Function, Array] as PropType<MaybeArray<(value: Date | undefined) => void>>,
Expand All @@ -117,7 +117,7 @@ export const dateRangePickerProps = {

value: Array as PropType<(number | string | Date | undefined)[]>,
defaultOpenValue: Array as PropType<(number | string | Date)[]>,
footer: { type: ɵFooterTypeDef, default: true },
footer: { type: [Boolean, Array, Object] as PropType<boolean | ɵFooterButtonProps[] | VNode>, default: true },
placeholder: Array as PropType<string[]>,
separator: [String, Object] as PropType<string | VNode>,
timePanelOptions: [Object, Array] as PropType<TimePanelOptions | TimePanelOptions[]>,
Expand Down
8 changes: 3 additions & 5 deletions packages/components/drawer/src/DrawerWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ import {
watch,
} from 'vue'

import { isFunction, isString } from 'lodash-es'
import { isFunction } from 'lodash-es'

import { callEmit, convertCssPixel } from '@idux/cdk/utils'
import { ɵFooter } from '@idux/components/_private/footer'
import { ɵHeader, type ɵHeaderProps } from '@idux/components/_private/header'
import { ɵHeader } from '@idux/components/_private/header'

import { DRAWER_TOKEN, drawerToken } from './token'

Expand Down Expand Up @@ -124,8 +124,6 @@ export default defineComponent({
return () => {
const prefixCls = mergedPrefixCls.value

const headerProps = isString(props.header) ? ({ title: props.header, size: 'md' } as ɵHeaderProps) : props.header

return (
<Transition
name={transitionName.value}
Expand Down Expand Up @@ -158,7 +156,7 @@ export default defineComponent({
v-slots={slots}
closable={closable.value}
closeIcon={closeIcon.value}
header={headerProps}
header={props.header}
onClose={close}
/>
<div class={`${prefixCls}-body`}>{slots.default?.()}</div>
Expand Down
28 changes: 13 additions & 15 deletions packages/components/header/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,26 @@
* found in the LICENSE file at https://github.com/IDuxFE/idux/blob/main/LICENSE
*/

import type { ExtractInnerPropTypes, ExtractPublicPropTypes } from '@idux/cdk/utils'
import type { ExtractInnerPropTypes, ExtractPublicPropTypes, MaybeArray } from '@idux/cdk/utils'
import type { AvatarProps } from '@idux/components/avatar'
import type { DefineComponent, HTMLAttributes } from 'vue'

import { IxPropTypes } from '@idux/cdk/utils'
import type { DefineComponent, HTMLAttributes, PropType, VNode } from 'vue'

export type HeaderSize = 'xl' | 'lg' | 'md' | 'sm'

export const headerProps = {
avatar: IxPropTypes.oneOfType([String, IxPropTypes.object<AvatarProps>()]),
description: IxPropTypes.string,
disabled: IxPropTypes.bool.def(false),
prefix: IxPropTypes.oneOfType([String, IxPropTypes.vNode]),
size: IxPropTypes.oneOf<HeaderSize>(['xl', 'lg', 'md', 'sm']).def('md'),
showBar: IxPropTypes.bool.def(false),
subTitle: IxPropTypes.string,
suffix: IxPropTypes.oneOfType([String, IxPropTypes.vNode]),
title: IxPropTypes.string,
avatar: { type: [String, Object] as PropType<string | AvatarProps>, default: undefined },
description: { type: String, default: undefined },
disabled: { type: Boolean, default: false },
prefix: { type: [String, Object] as PropType<string | VNode>, default: undefined },
size: { type: String as PropType<HeaderSize>, default: 'md' },
showBar: { type: Boolean, default: false },
subTitle: { type: String, default: undefined },
suffix: { type: [String, Object] as PropType<string | VNode>, default: undefined },
title: { type: String, default: undefined },

// events
onPrefixClick: IxPropTypes.emit<(evt: MouseEvent) => void>(),
onSuffixClick: IxPropTypes.emit<(evt: MouseEvent) => void>(),
onPrefixClick: [Function, Array] as PropType<MaybeArray<(evt: MouseEvent) => void>>,
onSuffixClick: [Function, Array] as PropType<MaybeArray<(evt: MouseEvent) => void>>,
}

export type HeaderProps = ExtractInnerPropTypes<typeof headerProps>
Expand Down
20 changes: 5 additions & 15 deletions packages/components/modal/src/ModalWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ import {
watch,
} from 'vue'

import { isFunction, isString } from 'lodash-es'
import { isFunction } from 'lodash-es'

import { callEmit, convertCssPixel, getOffset } from '@idux/cdk/utils'
import { ɵFooter } from '@idux/components/_private/footer'
import { ɵHeader, type ɵHeaderProps } from '@idux/components/_private/header'
import { ɵHeader } from '@idux/components/_private/header'
import { type ModalConfig } from '@idux/components/config'

import ModalBody from './ModalBody'
Expand Down Expand Up @@ -111,16 +111,6 @@ export default defineComponent({
return () => {
const prefixCls = mergedPrefixCls.value

const headerProps = isString(props.header) ? ({ title: props.header, size: 'md' } as ɵHeaderProps) : props.header

const okButtonProps: ModalProps['okButton'] = props.okButton?.size
? props.okButton
: { size: 'md', ...props.okButton }

const cancelButtonProps: ModalProps['cancelButton'] = props.cancelButton?.size
? props.cancelButton
: { size: 'md', ...props.cancelButton }

return (
<div
v-show={mergedVisible.value}
Expand Down Expand Up @@ -154,21 +144,21 @@ export default defineComponent({
v-slots={slots}
closable={closable.value}
closeIcon={closeIcon.value}
header={headerProps}
header={props.header}
onClose={close}
/>
<ModalBody></ModalBody>
<ɵFooter
v-slots={slots}
class={`${prefixCls}-footer`}
cancel={cancel}
cancelButton={cancelButtonProps}
cancelButton={props.cancelButton}
cancelLoading={cancelLoading.value}
cancelText={cancelText.value}
cancelVisible={cancelVisible.value}
footer={props.footer}
ok={ok}
okButton={okButtonProps}
okButton={props.okButton}
okLoading={okLoading.value}
okText={okText.value}
></ɵFooter>
Expand Down
1 change: 1 addition & 0 deletions packages/components/popover/src/Popover.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ const renderContent = (
if (slots.header || props.header) {
children.push(
<ɵHeader
size="sm"
closable={props.closable}
closeIcon={closeIcon.value}
header={props.header ?? props.title}
Expand Down
2 changes: 1 addition & 1 deletion packages/components/table/__tests__/table.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ describe('Table', () => {
await wrapper.setProps({ header })

expect(wrapper.find('.ix-header').text()).toBe(header)
expect(wrapper.find('.ix-header').classes()).toContain('ix-header-sm')
expect(wrapper.find('.ix-header').classes()).toContain('ix-header-md')

header = { title: 'This is header2', size: 'lg' }
await wrapper.setProps({ header })
Expand Down
6 changes: 3 additions & 3 deletions packages/components/time-picker/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
*/

import type { ExtractInnerPropTypes, ExtractPublicPropTypes, MaybeArray } from '@idux/cdk/utils'
import type { ɵFooterButtonProps } from '@idux/components/_private/footer'
import type { FormSize } from '@idux/components/form'
import type { DefineComponent, HTMLAttributes, PropType, VNode, VNodeChild } from 'vue'

import { controlPropDef } from '@idux/cdk/forms'
import { ɵPortalTargetDef } from '@idux/cdk/portal'
import { ɵFooterTypeDef } from '@idux/components/_private/footer'
import { ɵbaseTimePanelProps } from '@idux/components/_private/time-panel'

const timePickerCommonProps = {
Expand Down Expand Up @@ -75,7 +75,7 @@ export const timePickerProps = {
value: [String, Date, Number] as PropType<string | Date | number>,

defaultOpenValue: [String, Date, Number] as PropType<string | Date | number>,
footer: { type: ɵFooterTypeDef, default: false },
footer: { type: [Boolean, Array, Object] as PropType<boolean | ɵFooterButtonProps[] | VNode>, default: false },
placeholder: String,

// events
Expand All @@ -98,7 +98,7 @@ export const timeRangePickerProps = {
// v-model
value: Array as PropType<(number | string | Date | undefined)[]>,
defaultOpenValue: Array as PropType<(number | string | Date)[]>,
footer: { type: ɵFooterTypeDef, default: true },
footer: { type: [Boolean, Array, Object] as PropType<boolean | ɵFooterButtonProps[] | VNode>, default: true },
placeholder: Array as PropType<string[]>,
separator: [String, Object] as PropType<string | VNode>,

Expand Down

0 comments on commit d1764b1

Please sign in to comment.