diff --git a/src/Children/toArray.ts b/src/Children/toArray.ts index 91ba5a41..37331cd6 100644 --- a/src/Children/toArray.ts +++ b/src/Children/toArray.ts @@ -11,7 +11,7 @@ export default function toArray( ): React.ReactElement[] { let ret: React.ReactElement[] = []; - React.Children.forEach(children, (child: any) => { + React.Children.forEach(children, (child: any | any[]) => { if ((child === undefined || child === null) && !option.keepEmpty) { return; } diff --git a/src/Dom/dynamicCSS.ts b/src/Dom/dynamicCSS.ts index 04f247c6..186733e4 100644 --- a/src/Dom/dynamicCSS.ts +++ b/src/Dom/dynamicCSS.ts @@ -1,13 +1,6 @@ import canUseDom from './canUseDom'; -const MARK_KEY = `rc-util-key` as any; - -function getMark({ mark }: Options = {}) { - if (mark) { - return mark.startsWith('data-') ? mark : `data-${mark}`; - } - return MARK_KEY; -} +const MARK_KEY = `rc-util-key`; interface Options { attachTo?: Element; @@ -16,6 +9,13 @@ interface Options { mark?: string; } +function getMark({ mark }: Options = {}) { + if (mark) { + return mark.startsWith('data-') ? mark : `data-${mark}`; + } + return MARK_KEY; +} + function getContainer(option: Options) { if (option.attachTo) { return option.attachTo; @@ -65,7 +65,6 @@ function findExistNode(key: string, option: Options = {}) { export function removeCSS(key: string, option: Options = {}) { const existNode = findExistNode(key, option); - existNode?.parentNode?.removeChild(existNode); } diff --git a/src/Dom/focus.ts b/src/Dom/focus.ts index 1d39e3d8..a6654841 100644 --- a/src/Dom/focus.ts +++ b/src/Dom/focus.ts @@ -1,5 +1,15 @@ import isVisible from './isVisible'; +type DisabledElement = + | HTMLLinkElement + | HTMLInputElement + | HTMLFieldSetElement + | HTMLButtonElement + | HTMLOptGroupElement + | HTMLOptionElement + | HTMLSelectElement + | HTMLTextAreaElement; + function focusable(node: HTMLElement, includePositive = false): boolean { if (isVisible(node)) { const nodeName = node.nodeName.toLowerCase(); @@ -24,7 +34,7 @@ function focusable(node: HTMLElement, includePositive = false): boolean { } // Block focusable if disabled - if (isFocusableElement && (node as any).disabled) { + if (isFocusableElement && (node as DisabledElement).disabled) { tabIndex = null; } @@ -37,13 +47,13 @@ function focusable(node: HTMLElement, includePositive = false): boolean { } export function getFocusNodeList(node: HTMLElement, includePositive = false) { - const res = [...node.querySelectorAll('*')].filter(child => { - return focusable(child as HTMLElement, includePositive); + const res = [...node.querySelectorAll('*')].filter(child => { + return focusable(child, includePositive); }); if (focusable(node, includePositive)) { res.unshift(node); } - return res as HTMLElement[]; + return res; } let lastFocusElement = null; diff --git a/src/Dom/isVisible.ts b/src/Dom/isVisible.ts index 9dfc2b75..825f79fa 100644 --- a/src/Dom/isVisible.ts +++ b/src/Dom/isVisible.ts @@ -3,20 +3,20 @@ export default (element: HTMLElement | SVGGraphicsElement): boolean => { return false; } - if ((element as HTMLElement).offsetParent) { + if (element instanceof HTMLElement && element.offsetParent) { return true; } - if ((element as SVGGraphicsElement).getBBox) { - const box = (element as SVGGraphicsElement).getBBox(); - if (box.width || box.height) { + if (element instanceof SVGGraphicsElement && element.getBBox) { + const { width, height } = element.getBBox(); + if (width || height) { return true; } } - if ((element as HTMLElement).getBoundingClientRect) { - const box = (element as HTMLElement).getBoundingClientRect(); - if (box.width || box.height) { + if (element instanceof HTMLElement && element.getBoundingClientRect) { + const { width, height } = element.getBoundingClientRect(); + if (width || height) { return true; } } diff --git a/src/Dom/scrollLocker.ts b/src/Dom/scrollLocker.ts index 41f4498c..dbd21493 100644 --- a/src/Dom/scrollLocker.ts +++ b/src/Dom/scrollLocker.ts @@ -5,6 +5,8 @@ export interface scrollLockOptions { container: HTMLElement; } +let uuid = 0; + interface Ilocks { target: typeof uuid; options: scrollLockOptions; @@ -17,8 +19,6 @@ const scrollingEffectClassNameReg = new RegExp( 'g', ); -let uuid = 0; - // https://github.com/ant-design/ant-design/issues/19340 // https://github.com/ant-design/ant-design/issues/19332 const cacheStyle = new Map(); @@ -92,14 +92,15 @@ export default class ScrollLocker { container, setStyle( { - width: scrollBarSize !== 0 ? `calc(100% - ${scrollBarSize}px)` : undefined, + width: + scrollBarSize !== 0 + ? `calc(100% - ${scrollBarSize}px)` + : undefined, overflow: 'hidden', overflowX: 'hidden', overflowY: 'hidden', }, - { - element: container, - }, + { element: container }, ), ); } diff --git a/src/composeProps.ts b/src/composeProps.ts index 82707808..01828bbb 100644 --- a/src/composeProps.ts +++ b/src/composeProps.ts @@ -11,7 +11,7 @@ function composeProps>( Object.keys(patchProps).forEach(key => { const func = patchProps[key]; if (typeof func === 'function') { - composedProps[key] = (...args) => { + composedProps[key] = (...args: any[]) => { func(...args); return originProps[key]?.(...args); }; diff --git a/src/deprecated.js b/src/deprecated.js index 8f91b5df..b05755f8 100644 --- a/src/deprecated.js +++ b/src/deprecated.js @@ -2,7 +2,7 @@ export default function deprecated(props, instead, component) { if (typeof window !== 'undefined' && window.console && window.console.error) { window.console.error( `Warning: ${props} is deprecated at [ ${component} ], ` + - `use [ ${instead} ] instead of it.` + `use [ ${instead} ] instead of it.`, ); } } diff --git a/src/isMobile.ts b/src/isMobile.ts index c4a1d4b7..4e661e22 100644 --- a/src/isMobile.ts +++ b/src/isMobile.ts @@ -5,15 +5,12 @@ export default () => { const agent = navigator.userAgent || navigator.vendor || (window as any).opera; - if ( + return ( /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test( agent, ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test( agent?.substr(0, 4), ) - ) { - return true; - } - return false; + ); };