Gn.util
문자열
- hyphenate(str: string): string
- camelize(str: string): string
- parseBundle(text: string, locale: string): string (locale 에 맞는 표시 라벨 리턴)
- textToMultiLangs(text: string): { [key: string]: string } (언어와 표시 라벨을 객체화, Start Date{/default}{ko}사용시작{/ko} -> {default: 'Start Date', ko: '사용시작'})
- formatString(str: string, args: string[]): string ({0},{1},, 포함한 문자열 포맷팅)
- getByteSize(str: string): number (문자열의 바이트 사이즈 리턴)
- highlight(str: string, target: any = document.body): void (target 영역에 표시되는 컨텐츠 중, str에 해당하는 텍스트 강조처리)
- base64.base64UrlEncode(str: string): string
- base64.base64UrlDecode(str: string): string
Gn.util.hyphenate('someString') //=> some-string
Gn.util.hyphenate('some-string') //=> someString
객체 판별
파라메터로 전달된 값의 속성또는 상태를 판별한다.
- isFunction(obj: any): boolean
- isObject(obj: any): boolean
- isArray(obj: any): boolean
- isPlainObject(obj: any): boolean
- isWindow(obj: any): boolean
- isDocument(obj: any): boolean
- isNode(obj: any): boolean
- isElement(obj: any): boolean
- isNodeCollection(obj: any): boolean
- isString(value: any): boolean
- isBoolean(value: any): boolean
- isNumber(value: any): boolean
- isNumeric(value: any): boolean
- isEmpty(obj: any): boolean
- isUndefined(value: any): boolean
- isDate(value: any): boolean
- isHtml(str: string): boolean
- isVoidElement(element: any): boolean (void elements: area,base,br,col,embed,hr,img,input,keygen,link,menuitem,meta,param,source,track,wbr)
- isVisible(element: any): boolean
- isTouch(e: any): boolean (touch 속성이 있는지 판단)
- isInput(element: any): boolean (input elements: input,select,textarea,button)
- isEqual(value: any, other: any): boolean
- isMAC(macStr: string, sep = ':'): boolean
- isNetworkAndBroadcastAddr(ipStr: string): boolean (IP가 0.0.0.0 혹은 255.255.255.255인지 확인)
- isIP(ipStr: string, version?: string, ipPattern?: string): boolean (버전과 패턴을 받아서 IP 주소인지 검증)
- isIPv4Pattern(ipPattern: string, ipPattern?: string, isSubnetMask?: boolean): boolean (특정 패턴의 IP 주소인지 확인, ipPattern값이 없으면 모두 체크 (ipstr|cidr|range|longRange))
- isIPv6Pattern(ipPattern: string, ipPattern?: string): boolean (특정 패턴의 IP 주소인지 확인, ipPattern값이 없으면 모두 체크 (ipstr|cidr|range|longRange))
- isIPv4(ipStr: string): boolean (IP V4 주소인지 확인)
- isIPv4Exclusive(ipStr: string): boolean (IP의 마지막 자리가 0 또는 255 가 아닌 V4 주소인지 확인)
- isIPv6(ipStr: string): boolean
- isCidrIPv4(ipStr: string): boolean (cidr 표기법의 IP 주소인지 확인, 1.1.1.1/7 )
- isCidrIPv6(ipStr: string): boolean
- isRangeIPv4(ipStr: string): boolean (축약한 IP의 범위인지 확인, 1.1.1.1-2)
- isRangeIPv6(ipStr: string): boolean
- isLongRangeIPv4(ipStr: string): boolean (IP의 범위인지 확인, 1.1.1.1-1.1.1.2)
- isLongRangeIPv6(ipStr: string): boolean
- isHexPattern(color: string): boolean (헥사 코드인지 검사, #123 #27290e)
- startsWith(str: string, search: string): boolean
- endsWith(str: string, search: string): boolean
- includes(obj: any, search: any): boolean
Gn.util.isFunction(()=>{}) //=> true
Gn.util.isArray([]) //=> true
객체전환
파라메터로 전달된 값을 특정 타입으로 변환하여 리턴한다.
- toBoolean(value: any): boolean|any
- toNumber(value: any): number
- getNumber(value: any): number ( 10px => 10 )
- toFloat(value: any): number
- toNode(element: any): HTMLElement
- toNodes(element: any): any[]
- toWindow(element: any): any
- toList(value: any): any[]
- toMs(time: number): number (ms 단위로 환산한다)
- toDate(value: any): Date
- toJson(str: string): any (JSON 문자열을 JavaScript 객체로 변환)
- toArray(str: string): string[] (문자열을 Array로 변환)
객체속성
- offset(element: any, coordinates?: any): any
- position(element: any, parent?: any): any
- attr(element: any, name: any): any|void (element의 속성값을 가져온다) (get)
- attr(element: any, name: any, value: any): any|void (element의 속성값을 설정한다) (set)
- hasAttr(element: any, name: string): boolean
- removeAttr(element: any, name: string): void
- data(element: any, dataString: string): any (data-[attribute] 속성 값을 가져온다) (get)
Gn.util.offset($0) //=> { top: 1244, left: 300, height: 25, width: 838, bottom: 124, right: 32 }
Gn.util.position($0) //=> { top: 1244, left: 300 }
GN.util.attr($0, 'id')
GN.util.attr($0, 'id', 'newID')
Gn.util.hasAttr($0, 'id)
Gn.util.removeAttr($0, 'id')
객체 스타일
- css(element: any, property: any): any (get)
- css(element: any, property: any, value: any): void (set)
- css(element: any, property: {[key:string]: value} ): void (set)
GN.util.css($0, 'width')
GN.util.css($0, 'width', '100px')
GN.util.css($0, { width: '100px', height: '100px'})
클래스
- addClass(element: any, ...args: any[]): void
- removeClass(element: any, ...args: any[]): void
- removeClasses(element: any, cls: string): void
- replaceClass(element: any, ...args: any[]): void
- hasClass(element: any, cls: string): boolean
- toggleClass(element: any, ...args: any[]): void
DOM & Selector
- $(selector: any, context?: any): HTMLElement
- $$(selector: any, context?: any): Array
- fragment(html: string): any
- empty(element: any): any (해당 element 내부의 html을 삭제한다)
- html(parent: any): string (get)
- html(parent: any, html: string): void (set)
- text(parent: any): string (get)
- text(parent: any, text: string): void (set)
- val(parent: any): string (get)
- val(parent: any, text: string): void (set)
- prepend(parent: any, element: any): any
- append(parent: any, element: any): any
- before(ref: any, element: any): any
- after(ref: any, element: any): any
- remove(element: any): void
- find(selector: any, context: any): HTMLElement
- findAll(selector: any, context: any = document): Array
- matches(element: any, selector: any): Array
- parent(element: any): HTMLElement
- parents(element: any, selector?: any): HTMLElement
- children(element: any, selector?: any): HTMLElement
- next(element: any): HTMLElement
- prev(element: any): HTMLElement
- nextUntil(element: any, selector?: any): any
- siblings(element: any, selector?: any): Array
- escape(css: any): string (window.CSS.escape)
- isEquals(compareFrom: any, compareTo: any): boolean
이벤트
- on(targets: Array|any, eventName: string, listener: Function, delegator:? string , useCapture?: boolean): off
- off(target: Array|any, eventName: string, listener: Function): void
- once(element, type, selector, listener, useCapture, condition): off
- trigger(targets: any[]|Node, event: string|Event, detail?: any)
- getEventPos(e: any, prop = 'client')
- dragLayout(element: HTMLElement, boundary: Array, events: { drag?: Function, dragStart?: Function, dragEnd?: Function} = {}): Function (드래그 영역을 가로 또는 세로로 제한할 경우 사용, 리턴객체를 통해 이벤트를 해제할 수 있다.)
Viewport
- scrollTop(element: any, top: number): void
- scrollIntoView(element: any, offsetBy = 0): void
- scrollParents(element: any, overflowRe?: RegExp = /auto|scroll/): HTMLElement[]
- getViewport(scrollElement: any): window|HTMLElement
- getCenterX(): number
- getCenterY(): number
- getPositionX(element: HTMLElement): number
- getPositionY(element: HTMLElement): number
Number
- random(min: number, max: number): number
- clamp(number: number, min: number, max: number): number (number의 min ~ max 값을 제한한다)
- byteSize(orgValue: number): string|number
- commaNum(num: number): string
Array
- last(array: Array): any (배열의 마지막 항목)
- sortBy(array: Array, prop: string): Array : 오브젝트로 구성된 배열을 특정 prop값으로 정렬한다.(update)
- removeBy((array: Array, predicate: Function): Array : predicate 결과가 true인 항목을 삭제한 배열을 리턴한다.(update)
- uniqBy(array: Array, prop: string): Array : 오브젝트로 구성된 배열을 특정 prop값 기준으로 중복되지 않는 데이터를 리턴한다.(new array)
- sumBy(array: Array, prop?: string): Number : 숫자 또는 오브젝트로 구성된 배열의 특정항목에 대한 합계를 구한다.
- arrClone(array: Array): array: Array (array 복제)
Object
- each(obj: any, cb: any): boolean
- assign(target: any, ...args: Array): any (object.assign)
- hasOwn(obj: any, key: any): boolean (object의 own property 인지 확인한다.)
- extend(default: any, options: any): any ( object 얕은 병합 )
- objExtends(...args: any[]): any
- objClone(obj: any): any (object 복제)
- findPath(obj: any, key: string): string
- findValue(obj: any, pathString: string | Array): any
- findProperty(obj: any, predicate: (value, key) => {//return true/false}): Array : predicate 결과가 true인 항목 배열을 리턴한다.
- merge(target: any, source: any): any (deepmerge)
Date
- dayOfMonth(year: number, month: number) : number (해당하는 월의 일자수 확인)
- dateDiff(date1: string|number|Date, date2: string|number|Date): number (날짜 비교)
- dateTimeDiff(date1: string|number|Date, date2: string|number|Date): number (초단위 비교)
- tempDateByTime(timeStr: string, datestr = dateFormat(new Date(), 'yyyy-MM-dd')): Date (전달된 시간에 해당하는 임의의 Date 객체 생성)
- dateFormat(date: Date, format: string): string (날짜를 설정된 포멧으로 변경)
기타
- isIE: boolean (접속한 브라우저가 IE인지 아닌지 확인한다)
- getBrowser: string (접속한 브라우저를 확인한다)
- getOS: string (접속한 장비의 OS를 추측한다)
- toPlainText(content: string): string (html을 escape한 문자열을 반환한다)
- copyToClipboard(text: string): string (전달받은 텍스트를 클립보드에 저장한다)
- generateUUID(): string (uuid 를 생성한다)
- getQuery(key: string): string (url에 포함된 get parameter의 key에 해당하는 값을 반환한다)