fix(modal): height calc error #161

This commit is contained in:
vben
2021-01-06 00:08:45 +08:00
parent 8d7d0835ad
commit 144ab577da
26 changed files with 162 additions and 112 deletions

View File

@@ -4,17 +4,33 @@ export function is(val: unknown, type: string) {
return toString.call(val) === `[object ${type}]`;
}
export const isDef = <T = unknown>(val?: T): val is T => {
export function isDef<T = unknown>(val?: T): val is T {
return typeof val !== 'undefined';
};
}
export const isUnDef = <T = unknown>(val?: T): val is T => {
export function isUnDef<T = unknown>(val?: T): val is T {
return !isDef(val);
};
}
export const isObject = (val: any): val is Record<any, any> => {
export function isObject(val: any): val is Record<any, any> {
return val !== null && is(val, 'Object');
};
}
export function isEmpty<T = unknown>(val: T): val is T {
if (isArray(val) || isString(val)) {
return val.length === 0;
}
if (val instanceof Map || val instanceof Set) {
return val.size === 0;
}
if (isObject(val)) {
return Object.keys(val).length === 0;
}
return false;
}
export function isDate(val: unknown): val is Date {
return is(val, 'Date');
@@ -40,7 +56,9 @@ export function isString(val: unknown): val is string {
return is(val, 'String');
}
export const isFunction = (val: unknown): val is Function => typeof val === 'function';
export function isFunction(val: unknown): val is Function {
return typeof val === 'function';
}
export function isBoolean(val: unknown): val is boolean {
return is(val, 'Boolean');
@@ -54,13 +72,13 @@ export function isArray(val: any): val is Array<any> {
return val && Array.isArray(val);
}
export const isWindow = (val: any): val is Window => {
export function isWindow(val: any): val is Window {
return typeof window !== 'undefined' && is(val, 'Window');
};
}
export const isElement = (val: unknown): val is Element => {
export function isElement(val: unknown): val is Element {
return isObject(val) && !!val.tagName;
};
}
export const isServer = typeof window === 'undefined';
@@ -70,17 +88,17 @@ export function isImageDom(o: Element) {
return o && ['IMAGE', 'IMG'].includes(o.tagName);
}
export const isTextarea = (element: Element | null): element is HTMLTextAreaElement => {
export function isTextarea(element: Element | null): element is HTMLTextAreaElement {
return element !== null && element.tagName.toLowerCase() === 'textarea';
};
}
export const isMobile = (): boolean => {
export function isMobile(): boolean {
return !!navigator.userAgent.match(
/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
);
};
}
export const isUrl = (path: string): boolean => {
export function isUrl(path: string): boolean {
const reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;
return reg.test(path);
};
}