From 4dd2899035366bfa2a21e35eaea6a2740f555b4a Mon Sep 17 00:00:00 2001 From: danranVm Date: Sun, 9 Oct 2022 17:56:57 +0800 Subject: [PATCH] refactor: remove all deprecated api (#1188) --- lerna.json | 5 +- .../cdk/forms/__tests__/formControl.spec.ts | 16 +- packages/cdk/forms/src/controls.ts | 46 +-- packages/cdk/forms/src/types.ts | 4 - packages/cdk/forms/src/utils.ts | 129 ------- .../src/resize-observer/ResizeObserver.tsx | 2 +- .../src/resize-observer/useResizeObserver.ts | 15 +- .../cdk/scroll/src/virtual/VirtualScroll.tsx | 7 +- .../src/virtual/composables/useGetKey.ts | 19 +- packages/cdk/scroll/src/virtual/types.ts | 6 +- packages/components/cascader/src/Cascader.tsx | 11 +- .../cascader/src/contents/OverlayOption.tsx | 1 - packages/components/cascader/src/types.ts | 10 - .../components/checkbox/src/CheckboxGroup.tsx | 17 +- packages/components/checkbox/src/types.ts | 8 +- packages/components/config/src/types.ts | 64 ---- packages/components/divider/src/Divider.tsx | 15 +- packages/components/divider/src/types.ts | 2 - .../drawer/__tests__/drawer.spec.ts | 28 +- packages/components/drawer/src/Drawer.tsx | 11 +- .../components/drawer/src/DrawerWrapper.tsx | 2 - packages/components/drawer/src/types.ts | 13 +- packages/components/dropdown/src/Dropdown.tsx | 7 +- packages/components/dropdown/src/types.ts | 9 +- .../components/form/__tests__/form.spec.ts | 10 - packages/components/form/demo/Nest.vue | 4 +- packages/components/form/index.ts | 1 - packages/components/form/src/Form.tsx | 10 - packages/components/form/src/FormItem.tsx | 27 +- .../components/form/src/composables/public.ts | 28 +- packages/components/form/src/types.ts | 43 +-- .../components/image/__tests__/image.spec.ts | 2 +- .../image/__tests__/imageViewer.spec.ts | 4 +- packages/components/image/src/ImageViewer.tsx | 8 +- packages/components/image/src/types.ts | 9 +- packages/components/menu/src/Menu.tsx | 20 +- .../menu/src/composables/useDataSource.ts | 14 +- .../menu/src/contents/MenuDivider.tsx | 2 +- .../components/menu/src/contents/MenuItem.tsx | 7 +- .../menu/src/contents/MenuItemGroup.tsx | 8 +- .../menu/src/contents/menu-sub/Label.tsx | 8 +- .../menu/src/contents/menu-sub/MenuSub.tsx | 3 +- packages/components/menu/src/types.ts | 79 +--- .../message/src/MessageProvider.tsx | 8 +- packages/components/message/src/types.ts | 9 +- .../components/modal/__tests__/modal.spec.ts | 14 - packages/components/modal/src/Modal.tsx | 11 +- .../components/modal/src/ModalWrapper.tsx | 2 - packages/components/modal/src/types.ts | 13 +- .../notification/src/NotificationProvider.tsx | 8 +- packages/components/notification/src/types.ts | 9 +- .../components/popconfirm/src/Popconfirm.tsx | 4 +- packages/components/popover/docs/Api.zh.md | 1 - .../components/progress/demo/LineSize.vue | 12 +- packages/components/radio/src/RadioGroup.tsx | 16 +- packages/components/radio/src/types.ts | 9 +- .../select/__tests__/select.spec.ts | 10 +- packages/components/select/demo/Server.vue | 2 +- packages/components/select/src/Select.tsx | 29 +- .../select/src/composables/useGetOptionKey.ts | 23 +- .../select/src/composables/useOptions.ts | 16 +- .../components/select/src/panel/Option.tsx | 1 - .../select/src/panel/OptionGroup.tsx | 8 +- packages/components/select/src/types.ts | 50 +-- packages/components/space/src/Space.tsx | 36 +- packages/components/space/src/types.ts | 10 +- packages/components/switch/src/types.ts | 2 +- .../components/table/__tests__/table.spec.ts | 13 - packages/components/table/docs/Api.zh.md | 2 +- packages/components/table/src/Table.tsx | 35 +- .../table/src/composables/useColumns.ts | 14 +- .../table/src/composables/useDataSource.ts | 6 +- .../table/src/composables/useGetRowKey.ts | 36 -- .../table/src/composables/useScroll.ts | 8 +- .../components/table/src/main/MainTable.tsx | 6 +- .../table/src/main/body/BodyCell.tsx | 16 +- .../table/src/main/body/BodyRow.tsx | 6 +- .../table/src/main/head/HeadCell.tsx | 7 +- packages/components/table/src/types.ts | 27 +- packages/components/tabs/src/InternalTabs.tsx | 354 ++++++++++++++++++ packages/components/tabs/src/Tabs.tsx | 348 +---------------- .../textarea/src/composables/useAutoRows.ts | 2 +- .../components/time-picker/demo/Disable.vue | 10 +- packages/components/tooltip/src/types.ts | 7 - .../components/transfer/src/list/List.tsx | 1 - .../tree-select/__tests__/treeSelect.spec.ts | 2 +- .../components/tree-select/demo/Cascade.vue | 2 +- .../tree-select/demo/CascaderStrategy.vue | 1 - .../tree-select/demo/CustomLabel.vue | 2 +- .../components/tree-select/src/TreeSelect.tsx | 32 +- .../src/composables/useDataSource.ts | 8 +- .../src/composables/useGetNodeKey.ts | 39 -- .../tree-select/src/content/Content.tsx | 2 +- packages/components/tree-select/src/types.ts | 46 +-- .../components/tree/__tests__/tree.spec.ts | 23 +- packages/components/tree/src/Tree.tsx | 26 +- .../tree/src/composables/useCheckable.ts | 12 +- .../tree/src/composables/useGetNodeKey.ts | 39 -- .../components/tree/src/node/TreeNode.tsx | 1 - packages/components/tree/src/types.ts | 41 +- .../typography/__tests__/typography.spec.ts | 2 +- .../components/typography/src/typography.ts | 2 +- .../components/upload/demo/ListDisplay.vue | 8 +- packages/components/utils/src/portalTarget.ts | 13 +- packages/components/watermark/demo/Basic.vue | 10 +- .../components/watermark/demo/HighDensity.vue | 4 + .../pro/table/src/contents/LayoutToolTree.tsx | 2 +- .../src/composables/useTransferTableProps.ts | 2 +- .../layout/header/LayoutHeaderLogo.vue | 2 +- 109 files changed, 580 insertions(+), 1676 deletions(-) delete mode 100644 packages/components/table/src/composables/useGetRowKey.ts create mode 100644 packages/components/tabs/src/InternalTabs.tsx delete mode 100644 packages/components/tree-select/src/composables/useGetNodeKey.ts delete mode 100644 packages/components/tree/src/composables/useGetNodeKey.ts diff --git a/lerna.json b/lerna.json index 888ea94ea..2870d9310 100644 --- a/lerna.json +++ b/lerna.json @@ -3,11 +3,10 @@ "version": "1.0.0-rc.9", "command": { "publish": { - "allowBranch": ["main", "next", "hotfix"], + "allowBranch": ["main", "release", "next", "hotfix"], "ignoreChanges": ["*.md", "**/__tests__/**", "**/demo/**", "**/docs/**"], "message": "docs(release): publish %s", - "registry": "https://registry.npmjs.org", - "preid": "rc" + "registry": "https://registry.npmjs.org" }, "bootstrap": { "npmClient": "pnpm" diff --git a/packages/cdk/forms/__tests__/formControl.spec.ts b/packages/cdk/forms/__tests__/formControl.spec.ts index 4709a9b0b..038c16ab6 100644 --- a/packages/cdk/forms/__tests__/formControl.spec.ts +++ b/packages/cdk/forms/__tests__/formControl.spec.ts @@ -71,7 +71,7 @@ describe('formControl.ts', () => { test('validate work', async () => { expect(await control.validate()).toBeUndefined() - control.setValidator(Validators.required) + control.setValidators(Validators.required) expect(await control.validate()).toEqual({ required: { message: zhCNMessages.required({}, control) } }) }) @@ -197,19 +197,5 @@ describe('formControl.ts', () => { expect(control.getValue()).toEqual(' test ') }) - - test('trim enable work', () => { - control = new FormControl('', { trim: true }) - - expect(control.getValue()).toEqual('') - - control.setValue('test ') - - expect(control.getValue()).toEqual('test') - - control.setValue(' test') - - expect(control.getValue()).toEqual('test') - }) }) }) diff --git a/packages/cdk/forms/src/controls.ts b/packages/cdk/forms/src/controls.ts index 0cd37a554..95dffd117 100644 --- a/packages/cdk/forms/src/controls.ts +++ b/packages/cdk/forms/src/controls.ts @@ -21,9 +21,9 @@ import { watchEffect, } from 'vue' -import { isArray, isNil, isPlainObject, isString } from 'lodash-es' +import { isArray, isNil, isPlainObject } from 'lodash-es' -import { Logger, hasOwnProperty } from '@idux/cdk/utils' +import { hasOwnProperty } from '@idux/cdk/utils' import { type AsyncValidatorFn, @@ -154,17 +154,6 @@ export abstract class AbstractControl { return this._trigger ?? this._parent?.trigger ?? 'change' } - /** - * @deprecated - * - * Whether to remove the first and tail space - * Possible value: true | false - * Default value: false - */ - get trim(): boolean { - return this._trim ?? this._parent?.trim ?? false - } - name?: string example?: string @@ -183,7 +172,6 @@ export abstract class AbstractControl { private _composedAsyncValidators: AsyncValidatorFn | undefined private _parent: AbstractControl | undefined private _trigger?: 'change' | 'blur' | 'submit' - private _trim?: boolean constructor( controls?: GroupControls | AbstractControl>[], @@ -196,12 +184,6 @@ export abstract class AbstractControl { this._forEachControls(control => control.setParent(this)) this._convertOptions(validatorOrOptions, asyncValidator) this._init() - - if (__DEV__) { - if (isOptions(validatorOrOptions) && validatorOrOptions.trim) { - Logger.warn('cdk/forms', 'the `trim` of validatorOptions was deprecated.') - } - } } /** @@ -337,16 +319,6 @@ export abstract class AbstractControl { } } - /** - * @deprecated please use `setValidators` instead. - */ - setValidator(newValidator?: ValidatorFn | ValidatorFn[]): void { - if (__DEV__) { - Logger.warn('cdk/forms', 'the `setValidator` was deprecated, please use `setValidators` instead.') - } - this.setValidators(newValidator) - } - /** * Sets the new sync validator for the form control, it overwrites existing sync validators. * @@ -357,16 +329,6 @@ export abstract class AbstractControl { this._composedValidators = toValidator(newValidators) } - /** - * @deprecated please use `setAsyncValidators` instead. - */ - setAsyncValidator(newAsyncValidator?: AsyncValidatorFn | AsyncValidatorFn[]): void { - if (__DEV__) { - Logger.warn('cdk/forms', 'the `setAsyncValidator` was deprecated, please use `setAsyncValidators` instead.') - } - this.setAsyncValidators(newAsyncValidator) - } - /** * Sets the new async validator for the form control, it overwrites existing async validators. * @@ -597,7 +559,6 @@ export abstract class AbstractControl { this.name = validatorOrOptions.name this.example = validatorOrOptions.example this._trigger = validatorOrOptions.trigger ?? this._trigger - this._trim = validatorOrOptions.trim ?? this._trim this.setValidators(validatorOrOptions.validators) this.setAsyncValidators(validatorOrOptions.asyncValidators) if (validatorOrOptions.disabled) { @@ -706,8 +667,7 @@ export class FormControl extends AbstractControl { } getValue(): T { - const value = this._valueRef.value - return this.trim && isString(value) ? (value as any).trim() : value + return this._valueRef.value } protected _forEachControls(_: (v: AbstractControl, k: never) => void): void {} diff --git a/packages/cdk/forms/src/types.ts b/packages/cdk/forms/src/types.ts index 8022d965c..204346389 100644 --- a/packages/cdk/forms/src/types.ts +++ b/packages/cdk/forms/src/types.ts @@ -41,10 +41,6 @@ export interface ValidatorOptions { trigger?: 'change' | 'blur' | 'submit' validators?: ValidatorFn | ValidatorFn[] asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[] - /** - * @deprecated - */ - trim?: boolean } export type ValidateStatus = 'valid' | 'invalid' | 'validating' diff --git a/packages/cdk/forms/src/utils.ts b/packages/cdk/forms/src/utils.ts index e41d3894e..15e7553cd 100644 --- a/packages/cdk/forms/src/utils.ts +++ b/packages/cdk/forms/src/utils.ts @@ -8,15 +8,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { - type ComputedRef, type InjectionKey, type ShallowRef, type WatchStopHandle, - computed, getCurrentInstance, inject, reactive, - shallowReactive, shallowRef, toRaw, unref, @@ -218,129 +215,3 @@ export function useAccessorAndControl( return { accessor, control } } - -/** - * @deprecated - */ -export interface ValueControlOptions { - controlKey?: string -} - -/** - * @deprecated please use `useControl` or `useAccessorAndControl` instead - */ -export function useValueControl( - options: ValueControlOptions = {}, -): ShallowRef | undefined> { - if (__DEV__) { - Logger.warn( - 'cdk/forms', - 'the `useValueControl` was deprecated, please use `useControl` or `useAccessorAndControl` instead.', - ) - } - const { controlKey = 'control' } = options - const { props } = getCurrentInstance()! - const parentControl = inject(FORMS_CONTROL_TOKEN, shallowRef()) - - const control = shallowRef() - let watchStop: WatchStopHandle | undefined - - watch( - [() => props[controlKey], parentControl], - ([controlOrPath, pControl]) => { - if (watchStop) { - watchStop() - watchStop = undefined - } - if (isAbstractControl(controlOrPath)) { - control.value = controlOrPath - } else if (!!pControl && !isNil(controlOrPath)) { - watchStop = watch( - pControl.controls, - () => { - const _control = pControl.get(controlOrPath as ControlPathType) - if (__DEV__ && !_control) { - Logger.warn('cdk/forms', `not find control by [${controlOrPath}]`) - } - control.value = _control - }, - { immediate: true }, - ) - } - }, - { immediate: true }, - ) - - return control -} - -/** - * @deprecated - */ -export interface ValueAccessorOptions { - control: ShallowRef | undefined> - valueKey?: string - disabledKey?: string -} - -/** - * @deprecated - */ -export interface ValueAccessor { - valueRef: ComputedRef - disabled: ComputedRef - markAsBlurred: () => void - setValue: (value: T) => void -} - -/** - * @deprecated please use `useAccessor` or `useAccessorAndControl` instead - */ -export function useValueAccessor(options: ValueAccessorOptions): ValueAccessor { - if (__DEV__) { - Logger.warn( - 'cdk/forms', - 'the `useValueAccessor` was deprecated, please use `useAccessor` or `useAccessorAndControl` instead.', - ) - } - const { control, valueKey = 'value', disabledKey = 'disabled' } = options - const { props } = getCurrentInstance()! - - const accessor = shallowReactive({} as ValueAccessor) - let watchStop: WatchStopHandle | undefined - - watch( - control, - currControl => { - if (watchStop) { - watchStop() - watchStop = undefined - } - - if (currControl) { - accessor.valueRef = currControl.valueRef - accessor.disabled = currControl.disabled - accessor.setValue = value => currControl.setValue(value, { dirty: true }) - accessor.markAsBlurred = () => currControl.markAsBlurred() - } else { - const tempRef = shallowRef(props[valueKey]) - watchStop = watch( - () => props[valueKey], - value => (tempRef.value = value), - ) - accessor.valueRef = computed(() => props[valueKey] ?? tempRef.value) as ComputedRef - accessor.disabled = computed(() => props[disabledKey]) as ComputedRef - accessor.setValue = value => { - if (value != toRaw(accessor.valueRef.value)) { - tempRef.value = value - callEmit((props as any)[`onUpdate:${valueKey}`], value) - } - } - accessor.markAsBlurred = NoopFunction - } - }, - { immediate: true }, - ) - - return accessor -} diff --git a/packages/cdk/resize/src/resize-observer/ResizeObserver.tsx b/packages/cdk/resize/src/resize-observer/ResizeObserver.tsx index 0781851ff..2d0fee168 100644 --- a/packages/cdk/resize/src/resize-observer/ResizeObserver.tsx +++ b/packages/cdk/resize/src/resize-observer/ResizeObserver.tsx @@ -32,7 +32,7 @@ export default defineComponent({ ([disabled, options]) => { cleanup() if (!disabled) { - stop = useResizeObserver(elementRef, handler, options).stop + stop = useResizeObserver(elementRef, handler, options) } }, { immediate: true, flush: 'post' }, diff --git a/packages/cdk/resize/src/resize-observer/useResizeObserver.ts b/packages/cdk/resize/src/resize-observer/useResizeObserver.ts index 2317f8c89..48d048c34 100644 --- a/packages/cdk/resize/src/resize-observer/useResizeObserver.ts +++ b/packages/cdk/resize/src/resize-observer/useResizeObserver.ts @@ -7,7 +7,7 @@ import { watch } from 'vue' -import { Logger, type MaybeElementRef, convertElement, tryOnScopeDispose } from '@idux/cdk/utils' +import { type MaybeElementRef, convertElement, tryOnScopeDispose } from '@idux/cdk/utils' import { type ResizeListener, offResize, onResize } from './utils' @@ -15,7 +15,7 @@ export function useResizeObserver( target: MaybeElementRef, listener: ResizeListener, options?: ResizeObserverOptions, -): { stop: () => void } { +): () => void { const stopWatch = watch( () => convertElement(target), (currElement, prevElement) => { @@ -35,17 +35,6 @@ export function useResizeObserver( stopWatch() } - stop.stop = () => { - if (__DEV__) { - Logger.warn( - 'cdk/resize', - 'the `const { stop } = useResizeObserver()` was deprecated, please use `const stop = useResizeObserver()` instead.', - ) - } - offResize(convertElement(target), listener) - stopWatch() - } - tryOnScopeDispose(stop) return stop diff --git a/packages/cdk/scroll/src/virtual/VirtualScroll.tsx b/packages/cdk/scroll/src/virtual/VirtualScroll.tsx index ede684332..1977dae33 100644 --- a/packages/cdk/scroll/src/virtual/VirtualScroll.tsx +++ b/packages/cdk/scroll/src/virtual/VirtualScroll.tsx @@ -7,7 +7,7 @@ import { type ComponentPublicInstance, computed, defineComponent, provide, ref, watch } from 'vue' -import { Logger, callEmit, useState } from '@idux/cdk/utils' +import { callEmit, useState } from '@idux/cdk/utils' import { useContainerHeight } from './composables/useContainerHeight' import { useGetKey } from './composables/useGetKey' @@ -75,11 +75,6 @@ export default defineComponent({ const mergedData = computed(() => props.dataSource.slice(startIndex.value, endIndex.value + 1)) watch(mergedData, data => callEmit(props.onScrolledChange, startIndex.value, endIndex.value, data)) - if (__DEV__) { - if (props.itemKey) { - Logger.warn('cdk/scroll', 'the `itemKey` of VirtualScrollProps was deprecated, please use `getKey` instead.') - } - } return () => { const getKeyFn = getKey.value const start = startIndex.value diff --git a/packages/cdk/scroll/src/virtual/composables/useGetKey.ts b/packages/cdk/scroll/src/virtual/composables/useGetKey.ts index 43fcbc219..6a96fc324 100644 --- a/packages/cdk/scroll/src/virtual/composables/useGetKey.ts +++ b/packages/cdk/scroll/src/virtual/composables/useGetKey.ts @@ -5,26 +5,23 @@ * found in the LICENSE file at https://github.com/IDuxFE/idux/blob/main/LICENSE */ -import type { VirtualScrollProps } from '../types' -import type { VKey } from '@idux/cdk/utils' -import type { ComputedRef } from 'vue' - -import { computed } from 'vue' +import { type ComputedRef, computed } from 'vue' import { isString } from 'lodash-es' -import { Logger } from '@idux/cdk/utils' +import { Logger, type VKey } from '@idux/cdk/utils' + +import { type VirtualScrollProps } from '../types' export type GetKey = (item: unknown) => VKey export function useGetKey(props: VirtualScrollProps): ComputedRef { return computed(() => { - // TODO: remove props.itemKey - const getKey = props.getKey || props.itemKey + const getKey = props.getKey if (isString(getKey)) { - return (item: unknown) => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const key = (item as any)[getKey] + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return (item: any) => { + const key = item[getKey] if (__DEV__ && key === undefined) { Logger.warn('cdk/scroll', 'Each item in dataSource should have a unique `key` prop.') } diff --git a/packages/cdk/scroll/src/virtual/types.ts b/packages/cdk/scroll/src/virtual/types.ts index ada49c870..19459d593 100644 --- a/packages/cdk/scroll/src/virtual/types.ts +++ b/packages/cdk/scroll/src/virtual/types.ts @@ -17,10 +17,6 @@ export const virtualListProps = { getKey: { type: [String, Function] as PropType VKey)>, default: 'key' }, height: { type: [Number, String] as PropType, default: 0 }, itemHeight: { type: Number, default: 0 }, - /** - * @deprecated - */ - itemKey: { type: [String, Function] as PropType VKey)>, default: undefined }, itemRender: { type: Function as PropType, default: undefined }, virtual: { type: Boolean, default: true }, onScroll: [Function, Array] as PropType void>>, @@ -31,7 +27,7 @@ export const virtualListProps = { } as const export type VirtualScrollProps = ExtractInnerPropTypes -export type VirtualScrollPublicProps = Omit, 'itemKey'> +export type VirtualScrollPublicProps = ExtractPublicPropTypes export interface VirtualScrollBindings { scrollTo: VirtualScrollToFn } diff --git a/packages/components/cascader/src/Cascader.tsx b/packages/components/cascader/src/Cascader.tsx index 0e1f1d539..77cb9488e 100644 --- a/packages/components/cascader/src/Cascader.tsx +++ b/packages/components/cascader/src/Cascader.tsx @@ -8,7 +8,7 @@ import { computed, defineComponent, normalizeClass, provide, ref, watch } from 'vue' import { useAccessorAndControl } from '@idux/cdk/forms' -import { Logger, type VKey, useState } from '@idux/cdk/utils' +import { type VKey, useState } from '@idux/cdk/utils' import { ɵOverlay } from '@idux/components/_private/overlay' import { ɵSelector, type ɵSelectorInstance } from '@idux/components/_private/selector' import { useGlobalConfig } from '@idux/components/config' @@ -170,15 +170,6 @@ export default defineComponent({ const renderContent = () => - if (__DEV__) { - if (props.dataSource?.some(data => !!data.additional)) { - Logger.warn( - 'components/cascader', - 'the `additional` of CascaderData was deprecated, please use `customAdditional` instead.', - ) - } - } - return () => { const overlayProps = { class: overlayClasses.value, diff --git a/packages/components/cascader/src/contents/OverlayOption.tsx b/packages/components/cascader/src/contents/OverlayOption.tsx index ae23da966..0e738f649 100644 --- a/packages/components/cascader/src/contents/OverlayOption.tsx +++ b/packages/components/cascader/src/contents/OverlayOption.tsx @@ -109,7 +109,6 @@ export default defineComponent({ onMouseenter={disabled ? undefined : handleMouseEnter} aria-label={label} aria-selected={selected} - {...rawData.additional} {...customAdditional} > {multiple && ( diff --git a/packages/components/cascader/src/types.ts b/packages/components/cascader/src/types.ts index dac13edfa..30d7cdb94 100644 --- a/packages/components/cascader/src/types.ts +++ b/packages/components/cascader/src/types.ts @@ -100,16 +100,6 @@ export type CascaderCustomAdditional = (options: { }) => Record | undefined export interface CascaderData { - /** - * @deprecated please use `customAdditional` instead' - */ - additional?: { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - class?: any - // eslint-disable-next-line @typescript-eslint/no-explicit-any - style?: any - [key: string]: unknown - } children?: CascaderData[] disabled?: boolean isLeaf?: boolean diff --git a/packages/components/checkbox/src/CheckboxGroup.tsx b/packages/components/checkbox/src/CheckboxGroup.tsx index 8f1a6c087..69dc8797d 100644 --- a/packages/components/checkbox/src/CheckboxGroup.tsx +++ b/packages/components/checkbox/src/CheckboxGroup.tsx @@ -10,7 +10,7 @@ import { type VNodeChild, computed, defineComponent, normalizeClass, provide } f import { isNil } from 'lodash-es' import { useAccessorAndControl } from '@idux/cdk/forms' -import { Logger, convertCssPixel } from '@idux/cdk/utils' +import { convertCssPixel } from '@idux/cdk/utils' import { useGlobalConfig } from '@idux/components/config' import { useFormItemRegister } from '@idux/components/form' import { IxSpace } from '@idux/components/space' @@ -43,20 +43,13 @@ export default defineComponent({ return gap != null ? `gap: ${convertCssPixel(gap)};` : undefined }) - if (__DEV__) { - if (props.options) { - Logger.warn('components/checkbox', 'the `options` was deprecated, please use `dataSource` instead.') - } - } - return () => { - const { options, dataSource, vertical } = props - - const data = options ?? dataSource + const { dataSource, vertical } = props let children: VNodeChild[] | undefined - if (data) { - children = data.map(item => { + if (dataSource) { + children = dataSource.map(item => { + // TODO: remove value const { key, value } = item return }) diff --git a/packages/components/checkbox/src/types.ts b/packages/components/checkbox/src/types.ts index 9b9ed2a7a..e8dca8797 100644 --- a/packages/components/checkbox/src/types.ts +++ b/packages/components/checkbox/src/types.ts @@ -56,10 +56,6 @@ export const checkboxGroupProps = { disabled: { type: Boolean, default: false }, gap: { type: [Number, String] as PropType, default: undefined }, name: { type: String, default: undefined }, - /** - * @deprecated please use `dataSource` instead' - */ - options: { type: Array as PropType }, size: { type: String as PropType, default: undefined }, vertical: { type: Boolean, default: false }, @@ -69,13 +65,13 @@ export const checkboxGroupProps = { } as const export type CheckboxGroupProps = ExtractInnerPropTypes -export type CheckboxGroupPublicProps = Omit, 'options'> +export type CheckboxGroupPublicProps = ExtractPublicPropTypes export type CheckboxGroupComponent = DefineComponent< Omit & CheckboxGroupPublicProps > export type CheckboxGroupInstance = InstanceType> export type CheckValue = string | number | boolean -export interface CheckboxData extends CheckboxPublicProps { +export interface CheckboxData extends Omit { key?: K } diff --git a/packages/components/config/src/types.ts b/packages/components/config/src/types.ts index 5a5ae7ec7..90c9cb190 100644 --- a/packages/components/config/src/types.ts +++ b/packages/components/config/src/types.ts @@ -208,10 +208,6 @@ export interface DrawerConfig { height: string | number mask: boolean maskClosable: boolean - /** - * @deprecated please use `container` instead' - */ - target?: PortalTargetType width: string | number } @@ -222,10 +218,6 @@ export interface DropdownConfig { overlayContainer?: PortalTargetType placement: PopperPlacement showArrow: boolean - /** - * @deprecated please use `overlayContainer` instead' - */ - target?: PortalTargetType trigger: PopperTrigger } @@ -279,10 +271,6 @@ export interface ImageViewerConfig { container?: PortalTargetType loop: boolean maskClosable: boolean - /** - * @deprecated please use `container` instead' - */ - target?: PortalTargetType zoom: number[] } @@ -292,10 +280,6 @@ export interface MenuConfig { offset: [number, number] overlayContainer?: PortalTargetType suffix: string - /** - * @deprecated please use `overlayContainer` instead' - */ - target?: PortalTargetType theme: MenuTheme } @@ -305,10 +289,6 @@ export interface MessageConfig { duration: number icon: Partial> maxCount: number - /** - * @deprecated please use `container` instead' - */ - target?: PortalTargetType top?: number | string } @@ -321,10 +301,6 @@ export interface ModalConfig { icon?: Partial> mask: boolean maskClosable: boolean - /** - * @deprecated please use `container` instead' - */ - target?: PortalTargetType width: string | number } @@ -337,10 +313,6 @@ export interface NotificationConfig { maxCount: number offset: number | string | (string | number)[] placement: NotificationPlacement - /** - * @deprecated please use `container` instead' - */ - target?: PortalTargetType } export interface PaginationConfig { @@ -360,10 +332,6 @@ export interface PopconfirmConfig { destroyOnHide: boolean overlayContainer?: PortalTargetType placement: PopperPlacement - /** - * @deprecated please use `overlayContainer` instead' - */ - target?: PortalTargetType trigger: PopperTrigger } @@ -373,10 +341,6 @@ export interface PopoverConfig { destroyOnHide: boolean overlayContainer?: PortalTargetType placement: PopperPlacement - /** - * @deprecated please use `overlayContainer` instead' - */ - target?: PortalTargetType showArrow: boolean trigger: PopperTrigger closeIcon: string @@ -422,14 +386,6 @@ export interface SelectConfig { overlayMatchWidth: boolean size: FormSize suffix: string - /** - * @deprecated please use `overlayContainer` instead' - */ - target?: PortalTargetType - /** - * @deprecated please use `getKey` instead' - */ - valueKey?: string } export interface SkeletonConfig { @@ -478,10 +434,6 @@ export interface TableConfig { borderless: boolean childrenKey: string getKey: string | ((data: any) => any) - /** - * @deprecated please use `getKey` instead' - */ - rowKey?: string size: TableSize scrollToTopOnChange?: boolean @@ -549,10 +501,6 @@ export interface TooltipConfig { destroyOnHide: boolean overlayContainer?: PortalTargetType placement: PopperPlacement - /** - * @deprecated please use `overlayContainer` instead' - */ - target?: PortalTargetType trigger: PopperTrigger } @@ -564,10 +512,6 @@ export interface TreeConfig { draggableIcon: string getKey: string | ((data: TreeNode) => any) labelKey: string - /** - * @deprecated please use `getKey` instead' - */ - nodeKey?: string showLine: boolean } @@ -577,18 +521,10 @@ export interface TreeSelectConfig { clearIcon: string getKey: string | ((data: TreeNode) => any) labelKey: string - /** - * @deprecated please use `getKey` instead' - */ - nodeKey?: string overlayContainer?: PortalTargetType overlayMatchWidth: boolean size: FormSize suffix: string - /** - * @deprecated please use `overlayContainer` instead' - */ - target?: PortalTargetType } export interface UploadConfig { diff --git a/packages/components/divider/src/Divider.tsx b/packages/components/divider/src/Divider.tsx index 47cf049f1..7146dfa07 100644 --- a/packages/components/divider/src/Divider.tsx +++ b/packages/components/divider/src/Divider.tsx @@ -7,7 +7,6 @@ import { computed, defineComponent, normalizeClass } from 'vue' -import { Logger } from '@idux/cdk/utils' import { useGlobalConfig } from '@idux/components/config' import { convertStringVNode } from '@idux/components/utils' @@ -27,9 +26,7 @@ export default defineComponent({ label, labelPlacement = config.labelPlacement, plain = config.plain, - position, size = config.size, - type, vertical, } = props @@ -39,20 +36,14 @@ export default defineComponent({ [`${prefixCls}`]: true, [`${prefixCls}-${size}`]: true, [`${prefixCls}-dashed`]: dashed, - [`${prefixCls}-horizontal`]: !(type === 'vertical' || vertical), - [`${prefixCls}-vertical`]: type === 'vertical' || vertical, + [`${prefixCls}-horizontal`]: !vertical, + [`${prefixCls}-vertical`]: vertical, [`${prefixCls}-plain`]: withLabel && plain, [`${prefixCls}-with-label`]: withLabel, - [`${prefixCls}-with-label-${position || labelPlacement}`]: withLabel, + [`${prefixCls}-with-label-${labelPlacement}`]: withLabel, }) }) - if (__DEV__) { - props.position && - Logger.warn('components/divider', 'the `position` was deprecated, please use `labelPlacement` instead.') - props.type && Logger.warn('components/divider', 'the `type` was deprecated, please use `vertical` instead.') - } - return () => { const prefixCls = mergedPrefixCls.value const labelNode = convertStringVNode(slots.default, props.label) diff --git a/packages/components/divider/src/types.ts b/packages/components/divider/src/types.ts index 9a72f2093..217626ae3 100644 --- a/packages/components/divider/src/types.ts +++ b/packages/components/divider/src/types.ts @@ -20,9 +20,7 @@ export const dividerProps = { type: Boolean, default: undefined, }, - position: String as PropType<'left' | 'center' | 'right'>, size: String as PropType<'sm' | 'md' | 'lg'>, - type: String as PropType<'horizontal' | 'vertical'>, vertical: { type: Boolean, default: undefined, diff --git a/packages/components/drawer/__tests__/drawer.spec.ts b/packages/components/drawer/__tests__/drawer.spec.ts index 733d94bd0..4014251b2 100644 --- a/packages/components/drawer/__tests__/drawer.spec.ts +++ b/packages/components/drawer/__tests__/drawer.spec.ts @@ -257,18 +257,18 @@ describe('Drawer', () => { expect(drawerWrapper.classes()).toContain('ix-drawer-top') }) - test('target work', async () => { - const wrapper = DrawerMount({ props: { target: 'ix-test-container' } }) + test('container work', async () => { + const wrapper = DrawerMount({ props: { container: 'ix-test-container' } }) expect(document.querySelector('.ix-test-container')!.querySelector('.ix-drawer')).not.toBeNull() - const target = document.createElement('div') - target.classList.add('.ix-test-container2') - document.body.appendChild(target) + const container = document.createElement('div') + container.classList.add('.ix-test-container2') + document.body.appendChild(container) - await wrapper.setProps({ target }) + await wrapper.setProps({ container }) - expect(target.querySelector('.ix-drawer')).not.toBeNull() + expect(container.querySelector('.ix-drawer')).not.toBeNull() }) test('width work', async () => { @@ -287,20 +287,6 @@ describe('Drawer', () => { expect(contentDom.style.width).toBe('20%') }) - test('wrapperClassName work', async () => { - let wrapperClassName = 'test-container' - const wrapper = DrawerMount({ props: { wrapperClassName } }) - const drawerWrapper = wrapper.getComponent(DrawerWrapper) - - expect(drawerWrapper.classes()).toContain(wrapperClassName) - - wrapperClassName = 'test-container2' - - await wrapper.setProps({ wrapperClassName }) - - expect(drawerWrapper.classes()).toContain(wrapperClassName) - }) - test('zIndex work', async () => { const wrapper = DrawerMount({ props: { zIndex: 1001 } }) expect(document.querySelector('.ix-drawer-wrapper')!.getAttribute('style')).toContain('z-index: 1001') diff --git a/packages/components/drawer/src/Drawer.tsx b/packages/components/drawer/src/Drawer.tsx index c12bfcd3d..a96d699a2 100644 --- a/packages/components/drawer/src/Drawer.tsx +++ b/packages/components/drawer/src/Drawer.tsx @@ -22,7 +22,7 @@ import { import { CdkPortal } from '@idux/cdk/portal' import { BlockScrollStrategy, type ScrollStrategy } from '@idux/cdk/scroll' -import { Logger, callEmit, useControlledProp } from '@idux/cdk/utils' +import { callEmit, useControlledProp } from '@idux/cdk/utils' import { ɵMask } from '@idux/components/_private/mask' import { useGlobalConfig } from '@idux/components/config' import { usePortalTarget, useZIndex } from '@idux/components/utils' @@ -71,15 +71,6 @@ export default defineComponent({ useScrollStrategy(props, mask, mergedVisible) - if (__DEV__) { - if (props.target) { - Logger.warn('components/drawer', 'the `target` was deprecated, please use `container` instead.') - } - if (props.wrapperClassName) { - Logger.warn('components/drawer', 'the `wrapperClassName` was deprecated.') - } - } - return () => { if (!mergedVisible.value && props.destroyOnHide) { return null diff --git a/packages/components/drawer/src/DrawerWrapper.tsx b/packages/components/drawer/src/DrawerWrapper.tsx index f49294ac7..e8792cc23 100644 --- a/packages/components/drawer/src/DrawerWrapper.tsx +++ b/packages/components/drawer/src/DrawerWrapper.tsx @@ -91,7 +91,6 @@ export default defineComponent({ }) const wrapperClasses = computed(() => { - const { wrapperClassName = '' } = props const action = levelAction.value const prefixCls = mergedPrefixCls.value return normalizeClass({ @@ -100,7 +99,6 @@ export default defineComponent({ [`${prefixCls}-opened`]: animatedVisible.value, [`${prefixCls}-${action}`]: !!action, [`${prefixCls}-with-mask`]: mask.value, - [wrapperClassName]: !!wrapperClassName, }) }) diff --git a/packages/components/drawer/src/types.ts b/packages/components/drawer/src/types.ts index 1f4e11d96..0ab3728e4 100644 --- a/packages/components/drawer/src/types.ts +++ b/packages/components/drawer/src/types.ts @@ -78,18 +78,7 @@ export const drawerProps = { default: 'end', }, scrollStrategy: Object as PropType, - /** - * @deprecated please use `container` instead' - */ - target: { - type: [String, HTMLElement, Function] as PropType, - default: undefined, - }, width: [String, Number] as PropType, - /** - * @deprecated - */ - wrapperClassName: String, zIndex: Number, // events @@ -103,7 +92,7 @@ export const drawerProps = { } as const export type DrawerProps = ExtractInnerPropTypes -export type DrawerPublicProps = Omit, 'target' | 'wrapperClassName'> +export type DrawerPublicProps = ExtractPublicPropTypes export interface DrawerBindings { open: () => void close: (evt?: Event | unknown) => Promise diff --git a/packages/components/dropdown/src/Dropdown.tsx b/packages/components/dropdown/src/Dropdown.tsx index 0e02f3584..d54076be2 100644 --- a/packages/components/dropdown/src/Dropdown.tsx +++ b/packages/components/dropdown/src/Dropdown.tsx @@ -7,7 +7,7 @@ import { computed, defineComponent, provide, toRef } from 'vue' -import { Logger, useControlledProp } from '@idux/cdk/utils' +import { useControlledProp } from '@idux/cdk/utils' import { ɵOverlay } from '@idux/components/_private/overlay' import { type DropdownConfig, useGlobalConfig } from '@idux/components/config' import { useOverlayContainer } from '@idux/components/utils' @@ -31,11 +31,6 @@ export default defineComponent({ provide(dropdownToken, { hideOnClick: toRef(props, 'hideOnClick'), setVisibility }) - if (__DEV__) { - if (props.target) { - Logger.warn('components/dropdown', 'the `target` was deprecated, please use `overlayContainer` instead.') - } - } return () => { return ( <ɵOverlay diff --git a/packages/components/dropdown/src/types.ts b/packages/components/dropdown/src/types.ts index a491a67e3..15b4c88ef 100644 --- a/packages/components/dropdown/src/types.ts +++ b/packages/components/dropdown/src/types.ts @@ -42,13 +42,6 @@ export const dropdownProps = { type: Boolean, default: undefined, }, - /** - * @deprecated please use `overlayContainer` instead' - */ - target: { - type: [String, HTMLElement, Function] as PropType, - default: undefined, - }, trigger: ɵOverlayTriggerDef, // events @@ -56,6 +49,6 @@ export const dropdownProps = { } as const export type DropdownProps = ExtractInnerPropTypes -export type DropdownPublicProps = Omit, 'target'> +export type DropdownPublicProps = ExtractPublicPropTypes export type DropdownComponent = DefineComponent & DropdownPublicProps> export type DropdownInstance = InstanceType> diff --git a/packages/components/form/__tests__/form.spec.ts b/packages/components/form/__tests__/form.spec.ts index a7e83ef4d..f8fa494e2 100644 --- a/packages/components/form/__tests__/form.spec.ts +++ b/packages/components/form/__tests__/form.spec.ts @@ -321,16 +321,6 @@ describe('Form', () => { expect(wrapper.find('.ix-form-item-description').text()).toBe(description) }) - test('extraMessage slot work', async () => { - const description = 'extraMessage' - const wrapper = FormItemMount({ - props: { label: 'Username', description }, - slots: { default: () => h(IxInput), description: () => 'description slot' }, - }) - - expect(wrapper.find('.ix-form-item-description').text()).toBe('description slot') - }) - test('label work', async () => { let label = 'label' const wrapper = FormItemMount({ diff --git a/packages/components/form/demo/Nest.vue b/packages/components/form/demo/Nest.vue index 348f16c08..51c03a029 100644 --- a/packages/components/form/demo/Nest.vue +++ b/packages/components/form/demo/Nest.vue @@ -1,6 +1,6 @@