ng-smn-ui 4.2.8 → 4.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ng-smn-ui.umd.js +324 -50
- package/bundles/ng-smn-ui.umd.js.map +1 -1
- package/bundles/ng-smn-ui.umd.min.js +1 -1
- package/bundles/ng-smn-ui.umd.min.js.map +1 -1
- package/esm2015/lib/smn-ui.module.js +6 -2
- package/esm2015/lib/utils/masks/cnpj-novo/cnpj-novo.pipe.js +40 -0
- package/esm2015/lib/utils/masks/cnpj-novo/mask-cnpj-novo.directive.js +232 -0
- package/esm2015/ng-smn-ui.js +51 -50
- package/esm5/lib/smn-ui.module.js +6 -2
- package/esm5/lib/utils/masks/cnpj-novo/cnpj-novo.pipe.js +43 -0
- package/esm5/lib/utils/masks/cnpj-novo/mask-cnpj-novo.directive.js +236 -0
- package/esm5/ng-smn-ui.js +51 -50
- package/fesm2015/ng-smn-ui.js +266 -1
- package/fesm2015/ng-smn-ui.js.map +1 -1
- package/fesm5/ng-smn-ui.js +273 -1
- package/fesm5/ng-smn-ui.js.map +1 -1
- package/lib/smn-ui.module.d.ts +2 -1
- package/lib/utils/masks/cnpj-novo/cnpj-novo.pipe.d.ts +4 -0
- package/lib/utils/masks/cnpj-novo/mask-cnpj-novo.directive.d.ts +47 -0
- package/ng-smn-ui.d.ts +50 -49
- package/ng-smn-ui.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://ng-smn-ui/lib/utils/providers/element.provider.ts","ng://ng-smn-ui/lib/utils/functions/debounce.ts","ng://ng-smn-ui/lib/button/button.service.ts","ng://ng-smn-ui/lib/utils/functions/unaccent.ts","ng://ng-smn-ui/lib/calendar/add-calendar.directive.ts","ng://ng-smn-ui/lib/calendar/datetime.service.ts","ng://ng-smn-ui/lib/utils/providers/color.provider.ts","ng://ng-smn-ui/lib/calendar/calendar-content.component.ts","ng://ng-smn-ui/lib/calendar/calendar.component.ts","ng://ng-smn-ui/lib/utils/pipes/capitalize.pipe.ts","ng://ng-smn-ui/lib/utils/providers/cookie.provider.ts","ng://ng-smn-ui/lib/data-table/order-by.directive.ts","ng://ng-smn-ui/lib/date-picker/references.service.ts","ng://ng-smn-ui/lib/date-picker/date-picker-caller.directive.ts","ng://ng-smn-ui/lib/date-picker/date-picker.directive.ts","ng://ng-smn-ui/lib/utils/providers/element-ref.provider.ts","ng://ng-smn-ui/lib/dialog/dialog.component.ts","ng://ng-smn-ui/lib/dialog/dialog-trigger.directive.ts","ng://ng-smn-ui/lib/input/input-container.component.ts","ng://ng-smn-ui/lib/input/input.directive.ts","ng://ng-smn-ui/lib/utils/validators/maxlength.directive.ts","ng://ng-smn-ui/lib/menu/menu.component.ts","ng://ng-smn-ui/lib/menu/menu-trigger.directive.ts","ng://ng-smn-ui/lib/nav-drawer/nav-drawer.component.ts","ng://ng-smn-ui/lib/selection-control/option/option.component.ts","ng://ng-smn-ui/lib/progress/radial/progress-radial.component.ts","ng://ng-smn-ui/lib/ripple/ripple.directive.ts","ng://ng-smn-ui/lib/smart-list/smart-list.component.ts","ng://ng-smn-ui/lib/snackbar/snackbar.provider.ts","ng://ng-smn-ui/lib/toolbar/toolbar.service.ts","ng://ng-smn-ui/lib/smart-list/item/item.component.ts","ng://ng-smn-ui/lib/snackbar/snackbar.component.ts","ng://ng-smn-ui/lib/snackbar/snackbar-container.component.ts","ng://ng-smn-ui/lib/selection-control/switch/switch.component.ts","ng://ng-smn-ui/lib/toolbar/toolbar.component.ts","ng://ng-smn-ui/lib/utils/providers/window.provider.ts","ng://ng-smn-ui/lib/utils/masks/date/check-date.ts","ng://ng-smn-ui/lib/utils/masks/date/mask-date.directive.ts","ng://ng-smn-ui/lib/utils/pipes/time-ago.pipe.ts","ng://ng-smn-ui/lib/list/list-item.directive.ts","ng://ng-smn-ui/lib/utils/masks/cpf/cpf.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cpf/mask-cpf.directive.ts","ng://ng-smn-ui/lib/utils/masks/cnpj/cnpj.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cnpj/mask-cnpj.directive.ts","ng://ng-smn-ui/lib/utils/masks/cep/cep.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cep/mask-cep.directive.ts","ng://ng-smn-ui/lib/utils/masks/cep-novo/cep-novo.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cep-novo/mask-cep-novo.directive.ts","ng://ng-smn-ui/lib/utils/masks/phone/phone.pipe.ts","ng://ng-smn-ui/lib/utils/masks/phone/mask-phone.directive.ts","ng://ng-smn-ui/lib/list/list.component.ts","ng://ng-smn-ui/lib/dialog/dialog.service.ts","ng://ng-smn-ui/lib/list/items/items.component.ts","ng://ng-smn-ui/lib/list/item/item.component.ts","ng://ng-smn-ui/lib/slider/slider.component.ts","ng://ng-smn-ui/lib/slider/slider-multi-handle.component.ts","ng://ng-smn-ui/lib/utils/infinite-load/infinite-load.service.ts","ng://ng-smn-ui/lib/utils/infinite-load/infinite-load.directive.ts","ng://ng-smn-ui/lib/autocomplete/autocomplete.component.ts","ng://ng-smn-ui/lib/autocomplete/autocomplete.directive.ts","ng://ng-smn-ui/lib/utils/masks/integer/mask-integer.directive.ts","ng://ng-smn-ui/lib/old-tabs/tabs.component.ts","ng://ng-smn-ui/lib/old-tabs/pages/tabs-pages.component.ts","ng://ng-smn-ui/lib/lazy-load/lazy-load.directive.ts","ng://ng-smn-ui/lib/data-table/data-table.component.ts","ng://ng-smn-ui/lib/bottom-sheet/bottom-sheet.component.ts","ng://ng-smn-ui/lib/bottom-sheet/bottom-sheet.directive.ts","ng://ng-smn-ui/lib/input/input-file.directive.ts","ng://ng-smn-ui/lib/ellipsis/ellipsis.directive.ts","ng://ng-smn-ui/lib/utils/validators/required.directive.ts","ng://ng-smn-ui/lib/color-picker/color-picker.palette.ts","ng://ng-smn-ui/lib/color-picker/color-picker.component.ts","ng://ng-smn-ui/lib/color-picker/color-picker.directive.ts","ng://ng-smn-ui/lib/input/autosize.directive.ts","ng://ng-smn-ui/lib/clock/clock.component.ts","ng://ng-smn-ui/lib/time-picker/time-picker.service.ts","ng://ng-smn-ui/lib/time-picker/time-picker.directive.ts","ng://ng-smn-ui/lib/time-picker/time-picker-caller.directive.ts","ng://ng-smn-ui/lib/utils/masks/time/time.pipe.ts","ng://ng-smn-ui/lib/utils/masks/time/mask-time.directive.ts","ng://ng-smn-ui/lib/utils/masks/currency/currency.pipe.ts","ng://ng-smn-ui/lib/utils/masks/currency/mask-currency.directive.ts","ng://ng-smn-ui/lib/select/select.component.ts","ng://ng-smn-ui/lib/select/option/option.component.ts","ng://ng-smn-ui/lib/select/select-filter.pipe.ts","ng://ng-smn-ui/lib/utils/pipes/filter.pipe.ts","ng://ng-smn-ui/lib/avatar/avatar.component.ts","ng://ng-smn-ui/lib/utils/masks/float/float.pipe.ts","ng://ng-smn-ui/lib/utils/masks/float/mask-float.directive.ts","ng://ng-smn-ui/lib/tooltip/tooltip.directive.ts","ng://ng-smn-ui/lib/chosen/chosen-option/chosen-option.component.ts","ng://ng-smn-ui/lib/chosen/chosen-group/chosen-group.component.ts","ng://ng-smn-ui/lib/chosen/chosen.component.ts","ng://ng-smn-ui/lib/utils/masks/credit-card/credit-card.pipe.ts","ng://ng-smn-ui/lib/utils/masks/credit-card/credit-card-mask.directive.ts","ng://ng-smn-ui/lib/expansion-panel/expansion-panel.component.ts","ng://ng-smn-ui/lib/tab/tab-content.directive.ts","ng://ng-smn-ui/lib/tab/tab-label.directive.ts","ng://ng-smn-ui/lib/tab/tab.component.ts","ng://ng-smn-ui/lib/tab/header/tab-header.component.ts","ng://ng-smn-ui/lib/tab/group/tab-group.animation.ts","ng://ng-smn-ui/lib/tab/group/tab-group.component.ts","ng://ng-smn-ui/lib/label-content/label-content.component.ts","ng://ng-smn-ui/lib/upload/upload.ts","ng://ng-smn-ui/lib/utils/animations/enter-leave-view.animations.ts","ng://ng-smn-ui/lib/upload/upload.component.ts","ng://ng-smn-ui/lib/smn-ui.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__assign","assign","t","s","i","n","arguments","length","prototype","call","apply","this","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","__spread","concat","UiElement","disableScroll","window","addEventListener","preventDefault","onwheel","ontouchmove","document","onkeydown","preventDefaultForScrollKeys","enableScroll","removeEventListener","closest","el","selector","parent","matchesFn","some","fn","body","parentElement","index","node","count","nodes","parentNode","childNodes","item","nodeType","trigger","eventToTrigger","event","createEvent","initEvent","dispatchEvent","on","events","listener","elements","constructor","NodeList","split","forEach","el2","off","iLen","is","matches","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","position","withoutScroll","getBoundingClientRect","elem","box","docElem","documentElement","scrollTop","scrollLeft","pageYOffset","pageXOffset","clientTop","clientLeft","top","left","Math","round","getOffsetRect","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetSum","offset","animate","object","property","start_value","end_value","time","end","tick","propWithPx","frame","delta","handle","setInterval","hasPx","indexOf","style","toFixed","clearInterval","css","styleProp","newValue","replace","g","toUpperCase","defaultView","ownerDocument","getComputedStyle","toLowerCase","getPropertyValue","currentStyle","str","letter","test","value2","oldLeft","oldRsLeft","runtimeStyle","pixelLeft","isInViewport","rect","innerHeight","clientHeight","innerWidth","clientWidth","focus","headerSpace","querySelector","UiElement_1","scrollTo","isMobile","a","navigator","userAgent","vendor","opera","substr","caretPosition","get","getCaretPosition","set","setCaretPosition","classList","remove","removeClass","add","addClass","contains","containsClass","Injectable","keys","38","40","returnValue","keyCode","documentt","selection","undefined","caretPos","select","createRange","moveStart","text","selectionStart","beforeSelIndex","afterSelIndex","symbolsPositions","futureSelIndex","setTimeout","setSelectionRange","createTextRange","range","collapse","move","moveEnd","setCaret","className","debounce","func","wait","immediate","timeout","context","args","later","callNow","clearTimeout","fabContainers","querySelectorAll","len","scroll_1","scrollY","fabContainer","defaultDiacriticsRemovalMap","base","letters","diacriticsMap","j","unaccent","UiAddCalendarDirective","viewContainerRef","ViewContainerRef","Directive","UiDatetimeService","days","shortDays","months","shortMonths","UiColor","isBright","hex","minDarkPerc","_isBright","hexToRgb","_hexToRgb","color","result","exec","UiCalendarContentComponent","datetimeService","elementRef","changeDetectorRef","chosen","Subject","ngAfterViewInit","_this","verifyEventDates","detectChanges","nativeElement","toFocus","toFocusAlt","toFocusIndex","getSibling","isDay","dateToCheck","chosenDate","getDate","getMonth","getFullYear","chooseDate","confirmSelection","ngModel","isDisabled","minDate","Date","getTime","maxDate","date","isNaN","calendar","map","day","getTimezoneOffset","hasEvent","eventColor","blocked","ElementRef","ChangeDetectorRef","Component","template","UiCalendarComponent","componentFactoryResolver","EventEmitter","selectDateChange","cancel","ngModelChange","updateMonth","ngOnInit","isDate","viewDate","initOnSelected","renderCalendar","ngOnChanges","firstChange","currentValue","componentRef","instance","prevMonth","setMonth","emit","nextMonth","selectDate","cancelDate","dateTarget","setHours","setDate","year","month","monthDays","lastDayWeek","getDay","lastDayWeekName","firstDayWeek","firstDayWeekName","totalDays","firstDate","lastDate","today","componentFactory","resolveComponentFactory","addCalendar","clear","createComponent","subscribe","ComponentFactoryResolver","Input","Output","ViewChild","static","encapsulation","ViewEncapsulation","None","UiCapitalizePipe","transform","Pipe","name","UiCookie","ca","cookie","caLen","cookieName","substring","has","delete","domain","expireDays","path","setTime","expires","toUTCString","UiDataTableOrderByDirective","element","icon","createElement","innerHTML","insertBefore","cloneNode","firstChild","appendChild","changes","uiDataTableOrderBy","orderByCondition","orderByClick","onClick","withCondition","HostListener","UiReferencesService","datePickers","component","closeAll","getAll","updateModel","UiDatePickerCallerDirective","applicationRef","injector","referencesService","datePicker","datePickerCaller","pickerEvent","inputElement","pickerOpen","renderDatePicker","stopPropagation","type","closePicker","getComponentAsElement","hostView","rootNodes","setInstances","setCoordinate","componentElement","renderViewCalendar","themeClass","wrapDatePicker","overlay","create","attachView","detachView","overflowY","removeChild","coordinate","x","y","offsetHeight","pickerHorizontalCoveringArea","pickerVerticalCoveringArea","windowWidth","scrollX","windowHeight","ApplicationRef","Injector","UiDatePickerDirective","setAttribute","ngOnDestroy","UiElementRef","selected","callback","filter","attribute","getAttribute","height","newHeight","UiDialogComponent","closeChange","close","opened","viewRef","fabs","rootNode","destroy","show","config","clickOverlayToClose","JSON","parse","templateRef","createEmbeddedView","open","darkClass","transparentOverlay","cardSize","maxWidth","width","TemplateRef","UiDialogTriggerDirective","dialog","triggerEvents","render","fab","viewRef_1","UiInputContainerComponent","inputWrap","getElementsByClassName","line","methodInsertIcon","firstElementChild","UiInputDirective","renderer","placeholder","setPlaceholder","isEmpty","onBlur","onFocus","onFocusout","self","action","isNullOrUndefined","trim","persistPlaceholder","setProperty","Renderer2","UiMaxlengthDirective","validate","control","toString","maxLength","uiMaxlength","UiMaxlengthDirective_1","providers","provide","NG_VALIDATORS","useExisting","forwardRef","multi","UiMenuComponent","class","menuAlign","align","persistentMenu","persistent","createListener","clientX","clientY","horizontalCoveringArea","verticalCoveringArea","maxHeight","listenerExists","UiMenuTriggerDirective","menu","contextmenu","fixed","onContextmenu","UiNavDrawerComponent","openChange","openNav","closeNav","visibility","isPersistent","isOpen","srcElement","navDrawerTouch","mouseX","mouseXMovement","navDrawer","onTouchStart","touches","pageX","onTouchMove","onTouchEnd","closeMenuOverlay","UiOptionComponent","input","insertAdjacentHTML","setColor","borderColor","UiProgressRadialComponent","ripples","UiRippleDirective","isIE","elRippleContainerTemplate","elRippleTemplate","elRippleContainerTemplateClone","onMousedown","rippleDisable","hasAttribute","elementWidth","offsetWidth","elementHeight","isIcon","isFab","isRounded","borderRadius","elRippleTemplateClone_1","finalWidth","finalHeight","finalTop","finalLeft","mousePos","getMousePosition","elementPos","pos","onMouseup","eraseRipples","onMouseout","thiss","elRipples","children","elRipple","opacity","originalEvent","pageY","UiSmartListComponent","differs","modelChange","differ","find","defaultItem","list","model","console","objDiffer","elt","ngDoCheck","wasChanged","objChanges","diff","forEachChangedItem","elt2","autoDeleteException","equals","splice","newItem","found","includes","previousValue","KeyValueDiffers","stringify","mainToolbar","defaultBreakpoint","UiSmartListItemComponent","inputs","elItem","newIndex","currentFocusedElementIndex","Inject","bars","defaults","duration","center","actionText","UiSnackbar","bar","timerBar","barsChange","hide","snackbar","finishTimeout","elevateFAB","Infinity","shift","setTranslateFAB","snackHeight","translate","UiSnackbarComponent","UiSnackbarContainerComponent","UiSwitchComponent","UiToolbarComponent","header","paddingBottom","zIndex","change","sizes","UiToolbarService","sharedValue","registerMainToolbar","size","getMainToolbar","activateExtendedToolbar","breakpoint","join","transition","deactivateExtendedToolbar","activateTransparentToolbar","auxiliarClass","deactivateTransparentToolbar","activateElevatingToolbar","deactivateElevatingToolbar","_window","UiWindowRef","nativeWindow","checkDate","dayIndex","monthIndex","yearIndex","splittedDate","mask","UiMaskDateDirective","datePipe","maxlength","regex","regexiso","dateFormatsList","format","validaDateFormat","loaded","writeValue","rawValue","markAsDirty","dateFormat","renderViaInput","getCorrectValue","registerOnChange","onChange","registerOnTouched","onTouched","valid","updateValueAndValidity","valueSplitted","dateControl","toLocaleDateString","setDisabledState","method","onKeydown","onInput","$event","DatePipe","UiMaskDateDirective_1","NG_VALUE_ACCESSOR","UiTimeAgoPipe","ref","isDestroyed","async","AsyncPipe","obj","textBefore","textAfter","isMinified","isHence","Error","timer","getObservable","now","of","pipe","repeatWhen","notifications","flatMap","sleep","takeWhile","_","elapsed","realDelta","floor","timeAgo","pure","UiListItemDirective","uiListItem","toggle","toggleExpand","elementList","elementTrigger","backupHeight","listItemGroup","getHeight","overflow_1","reduce","UiCpfPipe","padStart","UiMaskCpfDirective","cpfPipe","padOnPaste","uiMaskCpf","cpfIsValid","cpf","sum","rest","padLeft","data","clipboardData","getData","UiMaskCpfDirective_1","UiCnpjPipe","UiMaskCnpjDirective","cnpjPipe","uiMaskCnpj","cnpjIsValid","cnpj","numbers","digits","charAt","UiMaskCnpjDirective_1","UiCepPipe","UiMaskCepDirective","cepPipe","UiMaskCepDirective_1","UiCepNovoPipe","UiMaskCepNovoDirective","UiMaskCepNovoDirective_1","UiPhonePipe","UiMaskPhoneDirective","phonePipe","uiMaskPhone","firstChar","UiMaskPhoneDirective_1","UiListComponent","allItems","remainingList","itemModel","id","parentId","url","old_key","oldName","newName","renameObjectKey","iterateOptionsMenu","fullList","subMenus","childs","UiListItemsComponent","UiListItemComponent","UiSliderComponent","valueChange","viewFormat","percentageBlock","valueModel","closestNumber","mouseDown","textColor","valueElement","registerEventsListeners","disabled","toggleTackOn","toggleBalloon","mouseUp","currentPosition","changedTouches","getPositionInIndex","active","right","balloon","trackOff","number","newDifference","current","difference","abs","itemIndex","getPercentage","Function","UiSliderMultiHandleComponent","beginChange","endChange","bodyElement","htmlElement","multiHandle","begin","beginModel","endModel","thumbs","beginElement","endElement","stopImmediatePropagation","direction","getPercentageLeft","getPercentageRight","UiInfiniteLoadService","register","orientation","heightOffset","scrollHeight","widthOffset","scrollWidth","readyToCheck","UiInfiniteLoadDirective","infiniteLoad","uiInfiniteLoad","UiAutocompleteComponent","selectItem","selectChange","loadMoreEmit","loadMore","UiAutocompleteDirective","loadMoreEmmiter","modelValueChange","requiredChange","primary","modelValue","modelProperty","blur","setPosition","loading","createWrapElement","wrapElement","setFocusIndex","focusedIndex","initialize","accentClass","wrap","maxHeightWrap","secondary","required","hidePanel","relatedTarget","which","UiAutocompleteDirective_1","UiMaskIntegerDirective","max","min","uiMaskInteger","valueConverted","Number","UiMaskIntegerDirective_1","UiTabsComponent","onScroll","tabsScroll","internetExplorer","tabs","indicator","scrollToTab","tab","withoutAnimation","tab2","overflow","this_1","tabSelected","maxScrollLeft","animationTiming","showLeftArrow","showRightArrow","UiTabsPagesComponent","onChangePage","currentPage","touchXMovement_1","touchXStartPosition_1","touchYMovement_1","touchYStartPosition_1","firstMovementCoord_1","currentBannerIndex_1","newPosition_1","tabs_1","elBannerContainer_1","enableOverflow","pages","i_1","page","pagesGoToPage","nextPage","newPosition","pages_1","pageContainer","elNextPage","firstLoad","elCurrentPage","timeOutTurnBack","UiLazyLoadDirective","visible","lazySrc","UiDataTableComponent","tfoot","tableFooter","UiBottomSheetComponent","card","UiBottomSheetTriggerDirective","bottomSheet","UiInputFileDirective","ngControl","filesChange","readFiles","files","setErrors","accepts","accept","maxSize","toByte","maxFileSize","file","validMaxFileSize","validateMaxSize","validMaxSize","fileExtension","lastIndexOf","validType","validateType","errors","readFile","fileChange","invalid","extension","match","RegExp","sizeString","unitMatch","unit","sizeMatch","unitSize","pow","reader","FileReader","resolved","onload","read","onerror","onprogress","progress","total","percent","readAsDataURL","NgControl","exportAs","UiEllipsisDirective","uiEllipsis","lineHeight","innerText","removeAttribute","UiRequiredDirective","UiRequiredDirective_1","textBlack","colors","hideSlider","hasBorder","palette","red","50","100","200","300","400","500","600","700","800","900","pink","purple","deepPurple","indigo","blue","lightBlue","cyan","teal","green","lightGreen","lime","yellow","amber","orange","deepOrange","brown","grey","blueGrey","black","white","UiColorPickerComponent","hues","from","colorSelected","setColorSelected","hueColor","hue","getColor","getColorText","selectColor","deselectColors","UiColorPickerDirective","generateElementColor","setColorElement","elementColor","addEvents","UiInputAutosizeDirective","retries","tagName","_findNestedTextArea","textAreaEl","textArea","adjust","getElementsByTagName","HTMLTextAreaElement","UiClockComponent","beforeMidday","afterMidday","val","hours","minutes","activeSelection","pointerRotation","formatModel","tabIndex","focused","selectHour","hour","selectMinute","minute","getPositionPointer","selectTime","hasHourAndMinute","formatToLpad","cancelTime","amountRotate","oldRotation","actualRotate","getPositionTopPointer","animations","UiTimePickerService","timePickers","UiTimePickerDirective","timePickerService","timePicker","UiTimePickerCallerDirective","timePickerCaller","renderTimePicker","objectValue","renderViewClock","wrapTimePicker","UiTimePipe","UiMaskTimeDirective","timePipe","minTime","maxTime","customTime","UiMaskTimeDirective_1","UiCurrencyPipe","isNegative","noValue","every","newCurrency","noNegative","UiMaskCurrencyDirective","currencyPipe","formatViewValue","removeGroupSep","parseFloat","beforeViewValue","UiMaskCurrencyDirective_1","UiDialog","UiDialog_1","onClose","UiSelectComponent","options","optionsExternal","selectOption","onChangeSelect","closestFieldset","selectNative","click","label","search","option","NgModel","UiSelectComponent_1","UiSelectOptionComponent","selectComponent","internal","title","onEnter","UiSelectFilterPipe","filterBy","UiFilterPipe","UiAvatarComponent","nameLength","initials","newImage","image","setSize","showImage","loadedImage","animateImage","grayscale","empty","getFontSize","getName","ini","nome","changeDetection","ChangeDetectionStrategy","OnPush","UiFloatPipe","decimal","decimals","UiMaskFloatDirective","floatPipe","uiMaskFloat","standard","padEnd","UiMaskFloatDirective_1","TooltipDirective","onShow","onHide","bottom","setClass","uiTooltip","positionLeft","positionTop","elementPosition","checkHeight","tooltip","UiChosenOptionComponent","loadOption","updateOptionLabel","onSelect","setActive","UiChosenComponent","UiChosenGroupComponent","ContentChildren","QueryList","setValue","ngAfterContentInit","nativeSelect","clearFilter","inputSearch","optionTemplate","bodyHeight","content","contentHeight","searchHeight","updated","markAsTouched","filterList","hidden","searchText","optionsGroup","group","changeNativeSelect","trackByValue","descendants","UiChosenComponent_1","UiCreditCardPipe","UiMaskCreditCard","creditCardPipe","changeDetector","UiMaskCreditCard_1","ExpansionPanelComponent","UiTabContentDirective","ContentChild","UiTabLabelDirective","UiTabComponent","viewContainer","tabChange","subscription","isActive","unsubscribe","UiTabHeaderComponent","increment","tabsContainer","inkBar","showInkBar","ngAfterViewChecked","hasRightScroll","checkRightScroll","hasLeftScroll","checkLeftScroll","moveInkBarTo","tabRef","updateScroll","tabFakeAnimation","timing","tabTransform","state","UiTabGroupComponent","tabsQueryList","toArray","generateIndexes","getFirstTab","activateTab","getTabRef","animation","newTabs","activatedTab","newTab","tabsRef","tabsContentElement","tabHeader","updateActivatedTab","indexActivatedTab","startTranslateAnimation","toState","doneTranslateAnimation","UiLabelContentComponent","Upload","base64","multiple","modelFile","isDuplicated","modelConfig","errorFile","removeFile","getFileName","enterLeaveViewAnimation","UiUploadComponent","_super","bind","__","__extends","isArray","onDragEnter","isDragging","onDragOver","dataTransfer","dropEffect","onDragLeave","onDrop","inputFileRef","UiUploadComponent_1","lib","SMNUIModule","NgModule","imports","CommonModule","FormsModule","RouterModule","schemas","CUSTOM_ELEMENTS_SCHEMA","declarations","exports","entryComponents"],"mappings":"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6CqBlS,EAAA,CAAtCqX,EAAAA,aAAa,YAAa,CAAC,oIAMUrX,EAAA,CAArCqX,EAAAA,aAAa,WAAY,CAAC,mIAOYrX,EAAA,CAAtCqX,EAAAA,aAAa,YAAa,CAAC,oIAMMrX,EAAA,CAAjCqX,EAAAA,aAAa,OAAQ,CAAC,+HA/Edy2B,EAAiBc,EAAA5uC,EAAA,CAX7B8R,EAAAA,UAAU,CACPhP,SAAU,YACViP,SAAA,oxDAEAuM,UAAW,CAAC,CACRC,QAASsM,EAAAA,kBACTpM,YAAaC,EAAAA,YAAW,WAAM,OAAAkwB,KAC9BjwB,OAAO,IAEXyjB,WAAY,CAACyL,+6BAEJC,IAA0BV,IC2GjCyB,GAAa,CACf1gC,EACA6D,EACA1C,EACA8F,EACAkB,EACAsB,EACAuC,EACAW,EACAsB,EACAM,EACAM,EACAe,EACAa,EACAa,GACAK,GACAkB,GACAK,GACAE,GACAkC,GACA4B,GACAwB,GACAA,GACAC,GACAC,GACAC,GACApI,EACAa,GACA4B,GACAyH,GACAgC,GACA2B,GACAa,GACAF,GACAgB,GACAD,GACAW,GACAD,GACAK,GACAD,GACAI,GACAD,GACAM,GACAe,GACAC,GACAtB,GACAuB,GACA6B,GACAwB,GACAQ,GACAL,GACA6B,GACAO,GACAiB,GACAyB,GACAG,GACAH,GACAM,GACAE,GACAE,GACA6C,GACAK,GACAsC,GACAW,GACAK,GACAL,GACAc,GACA2B,GACAG,GACAM,GACAC,GACAY,GACAN,GACAgB,GACAa,GACAK,GACAE,GACAC,GACAqB,GACAM,GACAgB,GACAL,GACAM,GACAwB,GACAC,GACAI,GACAvD,GACA2D,GACAuB,GACA1B,GACAE,GACAO,GACAoC,GACAW,kBA+BJ,SAAAgB,KACA,OADaA,EAAW9uC,EAAA,CA5BvB+uC,EAAAA,SAAS,CACNC,QAAS,CACLC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,cAEJC,QAAS,CAACC,EAAAA,wBACVC,aAAYxtC,EAAM+sC,IAClBU,QAAOztC,EAAM+sC,IACbvwB,UAAW,CACP1P,EACAL,EACAvM,EACAsV,EACA0O,GACAsC,GACAkL,GACA6O,GACA+B,IAEJoL,gBAAiB,CACbx9B,EACA1C,EACA6kB,GACAgL,GACAyB,OAGKkO","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UiElement {\r\n static caretPosition = {\r\n get: getCaretPosition,\r\n set: setCaretPosition\r\n };\r\n\r\n static classList = {\r\n remove: removeClass,\r\n add: addClass,\r\n contains: containsClass\r\n };\r\n\r\n static disableScroll(): any {\r\n if (window.addEventListener) { // older FF\r\n window.addEventListener('DOMMouseScroll', preventDefault, false);\r\n }\r\n\r\n window.onwheel = preventDefault; // modern standard\r\n // window.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE\r\n window.ontouchmove = preventDefault; // mobile\r\n document.onkeydown = preventDefaultForScrollKeys;\r\n }\r\n\r\n static enableScroll(): any {\r\n if (window.removeEventListener) {\r\n window.removeEventListener('DOMMouseScroll', preventDefault, false);\r\n }\r\n // window.onmousewheel = document.onmousewheel = null;\r\n window.onwheel = null;\r\n window.ontouchmove = null;\r\n document.onkeydown = null;\r\n }\r\n\r\n static closest(el, selector): any {\r\n /* Source: http://stackoverflow.com/questions/18663941/finding-closest-element-without-jquery */\r\n\r\n let matchesFn = null;\r\n\r\n // find vendor prefix\r\n ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'].some(function (fn) {\r\n if (typeof document.body[fn] === 'function') {\r\n matchesFn = fn;\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n let parent;\r\n\r\n // traverse parents\r\n while (el) {\r\n parent = el.parentElement;\r\n if (parent && parent[matchesFn](selector)) {\r\n return parent;\r\n }\r\n el = parent;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n static index(el): any {\r\n const nodes = el.parentNode.childNodes;\r\n let node;\r\n let count;\r\n let i = count = 0;\r\n while ((node = nodes.item(i++)) && node !== el) {\r\n if (node.nodeType === 1) {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n static trigger(el, eventToTrigger): any {\r\n const event = document.createEvent('HTMLEvents');\r\n event.initEvent(eventToTrigger, true, false);\r\n el.dispatchEvent(event);\r\n }\r\n\r\n static on(el, events, listener): any {\r\n let elements;\r\n if (el.constructor === NodeList) {\r\n elements = el;\r\n } else {\r\n elements = [el];\r\n }\r\n\r\n events = events.split(' ');\r\n\r\n Array.prototype.forEach.call(elements, el2 => {\r\n events.forEach(event => el2.addEventListener(event, listener, false));\r\n });\r\n }\r\n\r\n static off(el, events, listener): any {\r\n events = events.split(' ');\r\n const iLen = events.length;\r\n for (let i = 0; i < iLen; i++) {\r\n if (events[i]) {\r\n el.removeEventListener(events[i], listener, false);\r\n }\r\n }\r\n }\r\n\r\n static is(el, selector): any {\r\n const matches = el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector;\r\n\r\n if (matches) {\r\n return (matches).call(el, selector);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n static position(el, withoutScroll?): any {\r\n /* http://javascript.info/tutorial/coordinates */\r\n\r\n if (el.getBoundingClientRect) {\r\n return getOffsetRect(el);\r\n } else { // old browser\r\n return getOffsetSum(el);\r\n }\r\n\r\n function getOffsetSum(elem) {\r\n /* Source: http://javascript.info/tutorial/coordinates */\r\n\r\n let top = 0, left = 0;\r\n\r\n while (elem) {\r\n top = top + parseInt(elem.offsetTop, 10);\r\n left = left + parseInt(elem.offsetLeft, 10);\r\n elem = elem.offsetParent;\r\n }\r\n\r\n return {top: top, left: left};\r\n }\r\n\r\n function getOffsetRect(elem) {\r\n /* http://javascript.info/tutorial/coordinates */\r\n\r\n const box = elem.getBoundingClientRect();\r\n\r\n const body = document.body;\r\n const docElem = document.documentElement;\r\n\r\n let scrollTop = 0;\r\n let scrollLeft = 0;\r\n if (!withoutScroll) {\r\n scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n }\r\n\r\n const clientTop = docElem.clientTop || body.clientTop || 0;\r\n const clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n const top = box.top + scrollTop - clientTop;\r\n const left = box.left + scrollLeft - clientLeft;\r\n\r\n return {top: Math.round(top), left: Math.round(left)};\r\n }\r\n }\r\n\r\n static offset(el): any {\r\n const top = el.offsetTop;\r\n const left = el.offsetLeft;\r\n\r\n return {top: Math.round(top), left: Math.round(left)};\r\n }\r\n\r\n static animate(object, property, start_value, end_value, time, end?, tick?): any {\r\n const propWithPx = ['width', 'height', 'left', 'top', 'border-radius', 'border-spacing', 'margin-left', 'margin-top'];\r\n\r\n const frame_rate = 0.06; // 60 FPS\r\n let frame = 0;\r\n const delta = (end_value - start_value) / time / frame_rate;\r\n const handle = setInterval(() => {\r\n frame++;\r\n const value = start_value + delta * frame;\r\n\r\n if (tick) {\r\n tick(value);\r\n }\r\n\r\n const hasPx = propWithPx.indexOf(property) > -1;\r\n\r\n object.style[property] = value + (hasPx ? 'px' : '');\r\n if ((start_value > end_value ? value.toFixed(2) <= end_value : value.toFixed(2) >= end_value)) {\r\n clearInterval(handle);\r\n\r\n if (end) {\r\n end();\r\n }\r\n }\r\n }, 1 / frame_rate);\r\n }\r\n\r\n static css(el, styleProp, newValue?) {\r\n if (typeof newValue !== 'undefined') {\r\n styleProp = styleProp.replace(/-([a-z])/g, function (g) {\r\n return g[1].toUpperCase();\r\n });\r\n\r\n el.style[styleProp] = newValue;\r\n } else {\r\n let value;\r\n const defaultView = (el.ownerDocument || document).defaultView;\r\n // W3C standard way:\r\n if (defaultView && defaultView.getComputedStyle) {\r\n // sanitize property name to css notation\r\n // (hyphen separated words eg. font-Size)\r\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase();\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);\r\n } else if (el.currentStyle) { // IE\r\n // sanitize property name to camelCase\r\n styleProp = styleProp.replace(/-(\\w)/g, function (str, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = el.currentStyle[styleProp];\r\n // convert other units to pixels on IE\r\n if (/^\\d+(em|pt|%|ex)?$/i.test(value)) {\r\n return (function (value2) {\r\n const oldLeft = el.style.left;\r\n const oldRsLeft = el.runtimeStyle.left;\r\n el.runtimeStyle.left = el.currentStyle.left;\r\n el.style.left = value2 || 0;\r\n value2 = el.style.pixelLeft + 'px';\r\n el.style.left = oldLeft;\r\n el.runtimeStyle.left = oldRsLeft;\r\n return value2;\r\n })(value);\r\n }\r\n return value;\r\n }\r\n }\r\n }\r\n\r\n static isInViewport(el) {\r\n const rect = el.getBoundingClientRect();\r\n\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.top <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.left <= (window.innerWidth || document.documentElement.clientWidth)\r\n );\r\n }\r\n\r\n static focus(el) {\r\n el.focus();\r\n const headerSpace = document.querySelector('ui-toolbar header').clientHeight + 16;\r\n const elTop = UiElement.position(el, true).top;\r\n\r\n if (elTop < headerSpace) {\r\n window.scrollTo(0, UiElement.position(el).top - headerSpace);\r\n }\r\n\r\n return;\r\n }\r\n\r\n static isMobile() {\r\n let isMobile = false;\r\n\r\n (function (a) {\r\n if (/(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/i.test(a) || /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(a.substr(0, 4))) {\r\n isMobile = true;\r\n }\r\n })(navigator.userAgent || navigator.vendor || (<any>window).opera);\r\n\r\n return isMobile;\r\n }\r\n}\r\n\r\n// left: 37, up: 38, right: 39, down: 40,\r\n// spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36\r\n// const keys = {37: 1, 38: 1, 39: 1, 40: 1};\r\nconst keys = {38: 1, 40: 1};\r\n\r\nfunction preventDefault(e) {\r\n e = e || window.event;\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n e.returnValue = false;\r\n}\r\n\r\nfunction preventDefaultForScrollKeys(e) {\r\n if (keys[e.keyCode]) {\r\n preventDefault(e);\r\n return false;\r\n }\r\n}\r\n\r\nexport function getCaretPosition(el): any {\r\n const documentt: any = {\r\n selection: undefined\r\n };\r\n Object.assign(documentt, document);\r\n\r\n let caretPos = 0;\r\n if (documentt.selection) { // IE Support\r\n el.focus();\r\n const select = documentt.selection.createRange();\r\n select.moveStart('character', -el.value.length);\r\n caretPos = select.text.length;\r\n } else if (el.selectionStart || el.selectionStart === '0') { // Firefox support\r\n caretPos = el.selectionStart;\r\n }\r\n\r\n return caretPos;\r\n}\r\n\r\nexport function setCaretPosition(el, beforeSelIndex, afterSelIndex, symbolsPositions?): any {\r\n // https://javascriptexamples.info/snippet/getset-cursor-in-html-textarea\r\n\r\n let futureSelIndex;\r\n symbolsPositions = symbolsPositions || [];\r\n if (el.selectionStart || el.selectionStart === '0') {\r\n\r\n futureSelIndex = afterSelIndex;\r\n\r\n for (let i = 0; i < symbolsPositions.length; i++) {\r\n if (beforeSelIndex === symbolsPositions[i] && afterSelIndex === symbolsPositions[i] + 1) {\r\n futureSelIndex = symbolsPositions[i] + 2;\r\n\r\n break;\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n setCaret();\r\n });\r\n }\r\n\r\n function setCaret() {\r\n if (el.setSelectionRange) {\r\n if (el.selectionStart) {\r\n el.focus();\r\n el.setSelectionRange(futureSelIndex, futureSelIndex);\r\n } else {\r\n el.focus();\r\n }\r\n } else if (el.createTextRange) {\r\n const range = el.createTextRange();\r\n range.collapse(true);\r\n range.move('character', futureSelIndex);\r\n range.moveEnd('character', futureSelIndex);\r\n range.moveStart('character', futureSelIndex);\r\n range.select();\r\n }\r\n }\r\n}\r\n\r\nexport function removeClass(el, className) {\r\n return el.classList.remove(className);\r\n}\r\n\r\nexport function addClass(el, className) {\r\n return el.classList.add(className);\r\n}\r\n\r\nexport function containsClass(el, className) {\r\n return el.classList.contains(className);\r\n}\r\n","export function debounce(func, wait, immediate?) {\r\n let timeout;\r\n return function () {\r\n const context = this;\r\n const args = arguments;\r\n const later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n func.apply(context, args);\r\n }\r\n };\r\n const callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n func.apply(context, args);\r\n }\r\n };\r\n}\r\n","import {UiElement} from '../utils/providers/element.provider';\r\n\r\nUiElement.on(window, 'scroll resize', (e) => {\r\n const fabContainers = document.querySelectorAll('.ui-fab-container');\r\n\r\n const len = fabContainers.length;\r\n\r\n if (len) {\r\n const scroll = (window.scrollY || window.pageYOffset);\r\n\r\n for (let i = 0; i < len; i++) {\r\n const fabContainer = fabContainers[i];\r\n\r\n if (scroll > 1) {\r\n fabContainer.classList.add('scrolled');\r\n } else {\r\n fabContainer.classList.remove('scrolled');\r\n }\r\n }\r\n }\r\n});\r\n","/*\r\nLicensed under the Apache License, Version 2.0 (the \"License\");\r\nyou may not use this file except in compliance with the License.\r\nYou may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an \"AS IS\" BASIS,\r\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\nSee the License for the specific language governing permissions and\r\nlimitations under the License.\r\n*/\r\nconst defaultDiacriticsRemovalMap = [\r\n {\r\n 'base': 'A',\r\n 'letters': '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\r\n },\r\n {'base': 'AA', 'letters': '\\uA732'},\r\n {'base': 'AE', 'letters': '\\u00C6\\u01FC\\u01E2'},\r\n {'base': 'AO', 'letters': '\\uA734'},\r\n {'base': 'AU', 'letters': '\\uA736'},\r\n {'base': 'AV', 'letters': '\\uA738\\uA73A'},\r\n {'base': 'AY', 'letters': '\\uA73C'},\r\n {'base': 'B', 'letters': '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'},\r\n {'base': 'C', 'letters': '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'},\r\n {\r\n 'base': 'D',\r\n 'letters': '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0'\r\n },\r\n {'base': 'DZ', 'letters': '\\u01F1\\u01C4'},\r\n {'base': 'Dz', 'letters': '\\u01F2\\u01C5'},\r\n {\r\n 'base': 'E',\r\n 'letters': '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\r\n },\r\n {'base': 'F', 'letters': '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'},\r\n {\r\n 'base': 'G',\r\n 'letters': '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\r\n },\r\n {\r\n 'base': 'H',\r\n 'letters': '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\r\n },\r\n {\r\n 'base': 'I',\r\n 'letters': '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\r\n },\r\n {'base': 'J', 'letters': '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'},\r\n {\r\n 'base': 'K',\r\n 'letters': '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\r\n },\r\n {\r\n 'base': 'L',\r\n 'letters': '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\r\n },\r\n {'base': 'LJ', 'letters': '\\u01C7'},\r\n {'base': 'Lj', 'letters': '\\u01C8'},\r\n {'base': 'M', 'letters': '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'},\r\n {\r\n 'base': 'N',\r\n 'letters': '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\r\n },\r\n {'base': 'NJ', 'letters': '\\u01CA'},\r\n {'base': 'Nj', 'letters': '\\u01CB'},\r\n {\r\n 'base': 'O',\r\n 'letters': '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\r\n },\r\n {'base': 'OI', 'letters': '\\u01A2'},\r\n {'base': 'OO', 'letters': '\\uA74E'},\r\n {'base': 'OU', 'letters': '\\u0222'},\r\n {'base': 'OE', 'letters': '\\u008C\\u0152'},\r\n {'base': 'oe', 'letters': '\\u009C\\u0153'},\r\n {'base': 'P', 'letters': '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'},\r\n {'base': 'Q', 'letters': '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'},\r\n {\r\n 'base': 'R',\r\n 'letters': '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\r\n },\r\n {\r\n 'base': 'S',\r\n 'letters': '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\r\n },\r\n {\r\n 'base': 'T',\r\n 'letters': '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\r\n },\r\n {'base': 'TZ', 'letters': '\\uA728'},\r\n {\r\n 'base': 'U',\r\n 'letters': '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\r\n },\r\n {'base': 'V', 'letters': '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'},\r\n {'base': 'VY', 'letters': '\\uA760'},\r\n {'base': 'W', 'letters': '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'},\r\n {'base': 'X', 'letters': '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'},\r\n {\r\n 'base': 'Y',\r\n 'letters': '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\r\n },\r\n {\r\n 'base': 'Z',\r\n 'letters': '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\r\n },\r\n {\r\n 'base': 'a',\r\n 'letters': '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\r\n },\r\n {'base': 'aa', 'letters': '\\uA733'},\r\n {'base': 'ae', 'letters': '\\u00E6\\u01FD\\u01E3'},\r\n {'base': 'ao', 'letters': '\\uA735'},\r\n {'base': 'au', 'letters': '\\uA737'},\r\n {'base': 'av', 'letters': '\\uA739\\uA73B'},\r\n {'base': 'ay', 'letters': '\\uA73D'},\r\n {'base': 'b', 'letters': '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'},\r\n {'base': 'c', 'letters': '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'},\r\n {\r\n 'base': 'd',\r\n 'letters': '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\r\n },\r\n {'base': 'dz', 'letters': '\\u01F3\\u01C6'},\r\n {\r\n 'base': 'e',\r\n 'letters': '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\r\n },\r\n {'base': 'f', 'letters': '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'},\r\n {\r\n 'base': 'g',\r\n 'letters': '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\r\n },\r\n {\r\n 'base': 'h',\r\n 'letters': '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\r\n },\r\n {'base': 'hv', 'letters': '\\u0195'},\r\n {\r\n 'base': 'i',\r\n 'letters': '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\r\n },\r\n {'base': 'j', 'letters': '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'},\r\n {\r\n 'base': 'k',\r\n 'letters': '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\r\n },\r\n {\r\n 'base': 'l',\r\n 'letters': '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\r\n },\r\n {'base': 'lj', 'letters': '\\u01C9'},\r\n {'base': 'm', 'letters': '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'},\r\n {\r\n 'base': 'n',\r\n 'letters': '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\r\n },\r\n {'base': 'nj', 'letters': '\\u01CC'},\r\n {\r\n 'base': 'o',\r\n 'letters': '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\r\n },\r\n {'base': 'oi', 'letters': '\\u01A3'},\r\n {'base': 'ou', 'letters': '\\u0223'},\r\n {'base': 'oo', 'letters': '\\uA74F'},\r\n {'base': 'p', 'letters': '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'},\r\n {'base': 'q', 'letters': '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'},\r\n {\r\n 'base': 'r',\r\n 'letters': '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\r\n },\r\n {\r\n 'base': 's',\r\n 'letters': '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\r\n },\r\n {\r\n 'base': 't',\r\n 'letters': '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\r\n },\r\n {'base': 'tz', 'letters': '\\uA729'},\r\n {\r\n 'base': 'u',\r\n 'letters': '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\r\n },\r\n {'base': 'v', 'letters': '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'},\r\n {'base': 'vy', 'letters': '\\uA761'},\r\n {'base': 'w', 'letters': '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'},\r\n {'base': 'x', 'letters': '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'},\r\n {\r\n 'base': 'y',\r\n 'letters': '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\r\n },\r\n {\r\n 'base': 'z',\r\n 'letters': '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\r\n }\r\n];\r\n\r\nconst diacriticsMap = {};\r\nfor (let i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\r\n const letters = defaultDiacriticsRemovalMap [i].letters;\r\n for (let j = 0; j < letters.length; j++) {\r\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap [i].base;\r\n }\r\n}\r\n\r\n// \"what?\" version ... http://jsperf.com/diacritics/12\r\nexport function unaccent(str) {\r\n return str.replace(/[^\\u0000-\\u007E]/g, function (a) {\r\n return diacriticsMap[a] || a;\r\n });\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[addCalendar]'\r\n})\r\nexport class UiAddCalendarDirective {\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UiDatetimeService {\r\n days: any;\r\n shortDays: any;\r\n months: any;\r\n shortMonths: any;\r\n\r\n constructor() {\r\n this.days = ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado'];\r\n this.shortDays = ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'];\r\n this.months = ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'];\r\n this.shortMonths = ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'];\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UiColor {\r\n static isBright(hex, minDarkPerc?): boolean {\r\n return _isBright(hex, minDarkPerc);\r\n }\r\n\r\n static hexToRgb(hex): {} {\r\n return _hexToRgb(hex);\r\n }\r\n\r\n constructor() {\r\n }\r\n}\r\n\r\nexport function _isBright(hex, minDarkPerc) {\r\n const color = _hexToRgb(hex);\r\n if (!color) {\r\n return false;\r\n }\r\n const luminosityPerc = 1 - (0.299 * color.r + 0.587 * color.g + 0.114 * color.b) / 255;\r\n return (luminosityPerc < (minDarkPerc || 0.3));\r\n}\r\n\r\nexport function _hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n}\r\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\nimport {UiDatetimeService} from './datetime.service';\r\n\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiColor} from '../utils/providers/color.provider';\r\n\r\n@Component({\r\n selector: 'ui-calendar-content',\r\n templateUrl: './calendar-content.component.html',\r\n styleUrls: ['./calendar-content.component.scss'],\r\n})\r\nexport class UiCalendarContentComponent implements AfterViewInit {\r\n\r\n maxDate: Date;\r\n minDate: Date;\r\n calendar: any;\r\n ngModel: any;\r\n events: any[];\r\n chosenDate: any;\r\n days: any;\r\n months: any;\r\n confirmSelection: boolean;\r\n chosen: Subject<any> = new Subject();\r\n\r\n constructor(public datetimeService: UiDatetimeService, public elementRef: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\r\n this.days = datetimeService.days;\r\n this.months = datetimeService.months;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.events && this.events.length) {\r\n this.verifyEventDates();\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n this.elementRef.nativeElement.querySelectorAll('.days button').forEach(item => {\r\n item.addEventListener('keydown', e => {\r\n const target = UiElement.closest(e.target, '.day');\r\n const index = UiElement.index(target);\r\n\r\n let toFocus;\r\n let toFocusIndex = 0;\r\n let toFocusAlt;\r\n\r\n setTimeout(() => {\r\n switch (e.keyCode) {\r\n // Seta para esquerda\r\n case 37:\r\n toFocus = this.getSibling(index - 1);\r\n if (!toFocus.length) {\r\n toFocus = this.elementRef.nativeElement.querySelectorAll('.days button:not([disabled])');\r\n toFocusIndex = toFocus.length - 1;\r\n }\r\n toFocus[toFocusIndex].focus();\r\n break;\r\n // Seta para cima\r\n case 38:\r\n toFocus = this.getSibling(index - 7);\r\n toFocusAlt = this.elementRef.nativeElement.querySelectorAll('.days button:not([disabled])')[0];\r\n\r\n if (toFocus.length && index > UiElement.index(toFocus[0])) {\r\n toFocus[0].focus();\r\n } else {\r\n toFocusAlt.focus();\r\n }\r\n break;\r\n // Seta para direita\r\n case 39:\r\n toFocus = this.getSibling(index + 1);\r\n if (!toFocus.length) {\r\n this.elementRef.nativeElement.querySelectorAll('.days button:not([disabled])')[0].focus();\r\n } else {\r\n toFocus[0].focus();\r\n }\r\n break;\r\n // // Seta para baixo\r\n case 40:\r\n toFocus = this.getSibling(index + 7);\r\n toFocusAlt = this.elementRef.nativeElement.querySelectorAll('.days button:not([disabled])');\r\n toFocusAlt = toFocusAlt[toFocusAlt.length - 1];\r\n\r\n if (toFocus.length && index < UiElement.index(toFocus[0].parentNode)) {\r\n toFocus[0].focus();\r\n } else {\r\n toFocusAlt.focus();\r\n }\r\n break;\r\n }\r\n });\r\n });\r\n });\r\n\r\n this.elementRef.nativeElement.addEventListener('keydown', e => {\r\n if ([37, 38, 39, 40].indexOf(e.keyCode) > -1) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n getSibling(index): any[] {\r\n if (index < 0 || !this.elementRef.nativeElement.querySelectorAll('.day')[index]) {\r\n return [];\r\n }\r\n return this.elementRef.nativeElement.querySelectorAll('.day')[index].querySelectorAll('button:not([disabled])');\r\n }\r\n\r\n isDay(value) {\r\n const dateToCheck = this.chosenDate;\r\n if (!dateToCheck) {\r\n return;\r\n }\r\n\r\n return (\r\n dateToCheck.getDate() === value.getDate() &&\r\n dateToCheck.getMonth() === value.getMonth() &&\r\n dateToCheck.getFullYear() === value.getFullYear()\r\n );\r\n }\r\n\r\n chooseDate(value) {\r\n if (value) {\r\n this.chosenDate = value;\r\n if (!this.confirmSelection) {\r\n this.ngModel = value;\r\n }\r\n const newValue = {\r\n value,\r\n confirmSelection: this.confirmSelection\r\n };\r\n\r\n this.chosen.next(newValue);\r\n }\r\n }\r\n\r\n isDisabled(value) {\r\n const minDate = this.minDate ? new Date(this.minDate).getTime() : null;\r\n const maxDate = this.maxDate ? new Date(this.maxDate).getTime() : null;\r\n const date = value.getTime();\r\n\r\n return (typeof minDate === 'number' && !isNaN(minDate) && date < minDate) || (typeof maxDate === 'number' && !isNaN(maxDate) && date > maxDate);\r\n }\r\n\r\n verifyEventDates() {\r\n this.calendar.days.map(day => {\r\n this.events.map(event => {\r\n const date = new Date (event.date);\r\n\r\n if ((date.getTime() + (day.value.getTimezoneOffset() * 60000)) === day.value.getTime()) {\r\n day.hasEvent = true;\r\n day.eventColor = event.color;\r\n day.blocked = event.blocked;\r\n }\r\n });\r\n });\r\n }\r\n\r\n isBright(color) {\r\n return UiColor.isBright(color);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ComponentFactoryResolver,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {UiCalendarContentComponent} from './calendar-content.component';\r\nimport {UiAddCalendarDirective} from './add-calendar.directive';\r\nimport {UiDatetimeService} from './datetime.service';\r\nimport {Subject} from 'rxjs';\r\nimport {isDate} from 'rxjs/internal/util/isDate';\r\n\r\n@Component({\r\n selector: 'ui-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiCalendarComponent implements OnInit, OnChanges {\r\n @Input() ngModel: any;\r\n @Input() maxDate: Date;\r\n @Input() minDate: Date;\r\n @Input() hideHeader: boolean;\r\n @Input() initOnSelected: Date;\r\n @Input() confirmSelection: boolean;\r\n @Output() select: EventEmitter<any> = new EventEmitter();\r\n @Output() selectDateChange: EventEmitter<any> = new EventEmitter();\r\n @Output() cancel: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n @Output() updateMonth: EventEmitter<any> = new EventEmitter();\r\n @ViewChild(UiAddCalendarDirective, { static: true }) addCalendar: UiAddCalendarDirective;\r\n chosen: Subject<any> = new Subject();\r\n\r\n calendar: any;\r\n days: any;\r\n shortDays: any;\r\n months: any;\r\n viewDate: Date;\r\n chosenDate: any;\r\n componentRef;\r\n\r\n constructor(public componentFactoryResolver: ComponentFactoryResolver, public datetimeService: UiDatetimeService) {\r\n this.days = datetimeService.days;\r\n this.shortDays = datetimeService.shortDays;\r\n this.months = datetimeService.months;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.minDate = this.minDate && isDate(new Date(this.minDate)) ? new Date(this.minDate) : this.minDate;\r\n this.maxDate = this.maxDate && isDate(new Date(this.maxDate)) ? new Date(this.maxDate) : this.maxDate;\r\n this.chosenDate = this.ngModel && isDate(new Date(this.ngModel)) ? new Date(this.ngModel) : null;\r\n this.ngModel = this.ngModel && isDate(new Date(this.ngModel)) ? new Date(this.ngModel) : this.ngModel;\r\n this.viewDate = isDate(this.ngModel) ? this.ngModel : this.initOnSelected || new Date();\r\n this.renderCalendar(this.viewDate);\r\n\r\n }\r\n\r\n public ngOnChanges(value): void {\r\n if (value.ngModel && !value.ngModel.firstChange && !isNaN(value.ngModel.currentValue)) {\r\n const ngModel = value.ngModel.currentValue = value.ngModel.currentValue && isDate(new Date(value.ngModel.currentValue)) ? new Date(value.ngModel.currentValue) : value.ngModel.currentValue;\r\n this.ngModel = this.chosenDate = this.componentRef.instance.chosenDate = this.componentRef.instance.ngModel = ngModel;\r\n }\r\n if (value.maxDate && !value.maxDate.firstChange) {\r\n const maxDate = value.maxDate.currentValue = value.maxDate.currentValue && isDate(new Date(value.maxDate.currentValue)) ? new Date(value.maxDate.currentValue) : value.maxDate.currentValue;\r\n this.componentRef.instance.maxDate = this.maxDate = maxDate;\r\n }\r\n if (value.minDate && !value.minDate.firstChange) {\r\n const minDate = value.minDate.currentValue = value.minDate.currentValue && isDate(new Date(value.minDate.currentValue)) ? new Date(value.minDate.currentValue) : value.minDate.currentValue;\r\n this.componentRef.instance.minDate = this.minDate = minDate;\r\n }\r\n if (value.confirmSelection) {\r\n this.confirmSelection = value.confirmSelection.currentValue;\r\n }\r\n }\r\n\r\n public prevMonth(): void {\r\n this.viewDate.setMonth(this.viewDate.getMonth() - 1);\r\n this.updateMonth.emit();\r\n this.renderCalendar(this.viewDate);\r\n }\r\n\r\n public nextMonth(): void {\r\n this.viewDate.setMonth(this.viewDate.getMonth() + 1);\r\n this.updateMonth.emit();\r\n this.renderCalendar(this.viewDate);\r\n }\r\n\r\n public selectDate(value) {\r\n this.ngModel = this.componentRef.instance.ngModel = value;\r\n this.ngModelChange.emit(this.ngModel);\r\n this.select.emit(this.ngModel);\r\n this.selectDateChange.emit(this.ngModel);\r\n this.chosen.next(this.ngModel);\r\n }\r\n\r\n public cancelDate() {\r\n this.ngModel = this.chosenDate = this.componentRef.instance.ngModel = this.componentRef.instance.chosenDate = null;\r\n this.cancel.emit();\r\n this.ngModelChange.emit(this.ngModel);\r\n }\r\n\r\n public renderCalendar(dateTarget: Date): void {\r\n let date: Date = dateTarget;\r\n\r\n date.setHours(0, 0, 0, 0);\r\n date.setDate(1);\r\n date.setMonth(date.getMonth() + 1);\r\n date.setDate(0);\r\n\r\n this.viewDate = date;\r\n\r\n const calendar: any = {\r\n year: date.getFullYear(),\r\n month: date.getMonth(),\r\n monthDays: date.getDate(),\r\n lastDayWeek: date.getDay(),\r\n lastDayWeekName: this.days[date.getDay()]\r\n };\r\n\r\n date.setDate(1);\r\n calendar.firstDayWeek = date.getDay();\r\n calendar.firstDayWeekName = this.days[date.getDay()];\r\n calendar.totalDays = calendar.monthDays + calendar.firstDayWeek + (6 - calendar.lastDayWeek);\r\n calendar.days = [];\r\n\r\n const firstDate = -calendar.firstDayWeek + 1;\r\n const lastDate = calendar.monthDays + (7 - calendar.lastDayWeek);\r\n\r\n for (let i = firstDate; i < lastDate; i++) {\r\n date = new Date(calendar.year, calendar.month, i);\r\n let today: any = new Date();\r\n today = date.getFullYear() === today.getFullYear() && date.getMonth() === today.getMonth() && date.getDate() === today.getDate();\r\n calendar.days.push({\r\n month: date.getMonth(),\r\n date: date.getDate(),\r\n value: date,\r\n time: date.getTime(),\r\n today: today\r\n });\r\n }\r\n\r\n this.calendar = calendar;\r\n\r\n const keysComponent = ['calendar', 'ngModel', 'minDate', 'maxDate', 'chosenDate', 'confirmSelection', 'events'];\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiCalendarContentComponent);\r\n const viewContainerRef = this.addCalendar.viewContainerRef;\r\n viewContainerRef.clear();\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n keysComponent.map(key => this.componentRef.instance[key] = this[key]);\r\n\r\n this.componentRef.instance.chosen.subscribe(newValue => {\r\n if (newValue) {\r\n this.chosenDate = newValue.value;\r\n if (!newValue.confirmSelection) {\r\n this.selectDate(newValue.value);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCapitalize'\r\n})\r\nexport class UiCapitalizePipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n return value && value.length > 0 ? value[0].toUpperCase() + value.substr(1).toLowerCase() : value;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class UiCookie {\r\n static get(name: string) {\r\n const ca: Array<string> = document.cookie.split(';');\r\n const caLen: number = ca.length;\r\n const cookieName = `${name}=`;\r\n let c: string;\r\n\r\n for (let i = 0; i < caLen; i += 1) {\r\n c = ca[i].replace(/^\\s+/g, '');\r\n if (c.indexOf(cookieName) === 0) {\r\n return c.substring(cookieName.length, c.length);\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n static has(name: string) {\r\n return !!this.get(name);\r\n }\r\n\r\n static delete(name: string, domain?: string) {\r\n this.set(name, '', -1, null, domain);\r\n }\r\n\r\n static set(name: string, value: string, expireDays: number = 365, path: string = '/', domain?: string) {\r\n const d: Date = new Date();\r\n d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);\r\n const expires: string = 'expires=' + d.toUTCString();\r\n if (domain) domain = '; domain=' + domain\r\n document.cookie = name + '=' + value + '; ' + expires + '; path=' + path + domain;\r\n }\r\n}\r\n","import {Directive, ElementRef, AfterViewInit, HostListener, Input, OnChanges} from '@angular/core';\r\n\r\n@Directive({selector: 'th[uiDataTableOrderBy]'})\r\nexport class UiDataTableOrderByDirective implements AfterViewInit, OnChanges {\r\n @Input('withCondition') withCondition: boolean;\r\n @Input('uiDataTableOrderBy') uiDataTableOrderBy: 'ASC' | 'DESC' | null;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const icon: HTMLElement = document.createElement('i');\r\n icon.classList.add('material-icons');\r\n icon.innerHTML = 'arrow_downward';\r\n\r\n if (this.element.nativeElement.classList.contains('align-right')) {\r\n this.element.nativeElement.insertBefore(icon.cloneNode(true), this.element.nativeElement.firstChild);\r\n } else {\r\n this.element.nativeElement.appendChild(icon.cloneNode(true));\r\n }\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.uiDataTableOrderBy && !changes.uiDataTableOrderBy.firstChange) {\r\n this.uiDataTableOrderBy = changes.uiDataTableOrderBy.currentValue;\r\n this.orderByCondition();\r\n }\r\n }\r\n\r\n orderByClick() {\r\n if (this.element.nativeElement.classList.contains('order_desc')\r\n || this.element.nativeElement.classList.contains('order_asc')) {\r\n if (this.element.nativeElement.classList.contains('order_asc')) {\r\n this.element.nativeElement.classList.add('order_desc');\r\n this.element.nativeElement.classList.remove('order_asc');\r\n } else if (this.element.nativeElement.classList.contains('order_desc')) {\r\n this.element.nativeElement.classList.remove('order_desc');\r\n this.element.nativeElement.classList.remove('order_asc');\r\n }\r\n } else {\r\n this.element.nativeElement.classList.add('order_asc');\r\n }\r\n }\r\n\r\n orderByCondition() {\r\n switch (this.uiDataTableOrderBy) {\r\n case 'ASC':\r\n this.element.nativeElement.classList.add('order_asc');\r\n this.element.nativeElement.classList.remove('order_desc');\r\n break;\r\n case 'DESC':\r\n this.element.nativeElement.classList.add('order_desc');\r\n this.element.nativeElement.classList.remove('order_asc');\r\n break;\r\n default:\r\n this.element.nativeElement.classList.remove('order_asc', 'order_desc');\r\n break;\r\n }\r\n }\r\n\r\n @HostListener('click') onClick() {\r\n if (this.withCondition) {\r\n return;\r\n }\r\n\r\n this.orderByClick();\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {UiDatePickerDirective} from './date-picker.directive';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Injectable()\r\nexport class UiReferencesService {\r\n\r\n datePickers: any = {};\r\n\r\n constructor() {\r\n }\r\n\r\n add(name: string, component: UiDatePickerDirective): void {\r\n if (this.datePickers && this.datePickers[name]) {\r\n return;\r\n }\r\n\r\n this.datePickers[name] = component;\r\n }\r\n\r\n get(name: string): UiDatePickerDirective {\r\n return this.datePickers[name];\r\n }\r\n\r\n remove(name: string) {\r\n delete this.datePickers[name];\r\n }\r\n\r\n closeAll() {\r\n UiElement.trigger(window, 'click');\r\n }\r\n\r\n getAll(): UiDatePickerDirective {\r\n return this.datePickers;\r\n }\r\n\r\n updateModel(name, value) {\r\n this.datePickers[name].ngModel = value;\r\n this.datePickers[name].ngModelChange.emit(value);\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n Directive,\r\n EmbeddedViewRef,\r\n ElementRef,\r\n Injector,\r\n Input\r\n} from '@angular/core';\r\n\r\nimport {UiReferencesService} from './references.service';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiCalendarComponent} from '../calendar/calendar.component';\r\n\r\n@Directive({\r\n selector: '[uiDatePickerCaller]'\r\n})\r\nexport class UiDatePickerCallerDirective implements AfterViewInit {\r\n datePicker;\r\n componentRef: any;\r\n componentElement: any;\r\n pickerOpen: boolean;\r\n wrapDatePicker: HTMLElement;\r\n inputElement: HTMLElement;\r\n @Input() pickerEvent: string;\r\n @Input('uiDatePickerCaller') datePickerCaller: string;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector,\r\n private referencesService: UiReferencesService,\r\n private elementRef: ElementRef) {\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.datePicker = this.referencesService.get(this.datePickerCaller);\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.pickerEvent || 'click', (e) => {\r\n this.inputElement = <HTMLElement>document.querySelector(`[date-picker-name=\"${this.datePickerCaller}\"]`);\r\n\r\n this.referencesService.closeAll();\r\n\r\n if (!this.pickerOpen) {\r\n this.renderDatePicker(this.datePicker);\r\n e.stopPropagation(); // Parando propagação do evento para os eventos do window\r\n }\r\n });\r\n\r\n UiElement.on(window, 'click resize scroll', (e) => {\r\n if (this.pickerOpen) {\r\n if ((!(UiElement.is(e.target, '.wrap-date-picker') || UiElement.closest(e.target, '.wrap-date-picker'))\r\n && !(document.body.clientWidth <= 600 && e.type === 'scroll')) || UiElement.is(e.target, '.overlay')) {\r\n this.closePicker();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getComponentAsElement(componentRef): HTMLElement {\r\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n public setInstances(component, componentRef): void {\r\n const keysComponent = ['ngModel', 'maxDate', 'minDate', 'initOnSelected', 'confirmSelection', 'select', 'selectDateChange', 'events'];\r\n keysComponent.map(key => componentRef.instance[key] = component[key]);\r\n componentRef.instance.cancel.subscribe(() => this.closePicker());\r\n componentRef.instance.updateMonth.subscribe(() => this.setCoordinate(this.componentElement));\r\n component.chosen.subscribe(value => componentRef.instance.ngOnChanges(value));\r\n componentRef.instance.chosen.subscribe(value => {\r\n this.referencesService.updateModel(this.datePickerCaller, value);\r\n if (this.pickerOpen) {\r\n this.inputElement.focus();\r\n this.closePicker();\r\n }\r\n });\r\n }\r\n\r\n public renderViewCalendar(element, themeClass): void {\r\n this.wrapDatePicker = document.createElement('div');\r\n this.wrapDatePicker.classList.add('wrap-date-picker');\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('overlay');\r\n if (themeClass) {\r\n this.wrapDatePicker.classList.add(themeClass);\r\n }\r\n\r\n this.wrapDatePicker.style.transform = 'scale(0)';\r\n element.classList.add('portrait-only');\r\n this.wrapDatePicker.appendChild(overlay);\r\n this.wrapDatePicker.appendChild(element);\r\n document.body.appendChild(this.wrapDatePicker);\r\n\r\n this.setCoordinate(element);\r\n }\r\n\r\n public renderDatePicker(component): void {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiCalendarComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n this.componentElement = this.getComponentAsElement(this.componentRef);\r\n\r\n this.setInstances(component, this.componentRef);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n this.renderViewCalendar(this.componentElement, component.themeClass);\r\n this.pickerOpen = true;\r\n }\r\n\r\n public closePicker(): void {\r\n this.wrapDatePicker.classList.remove('open');\r\n setTimeout(() => {\r\n this.pickerOpen = false;\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n document.body.style.overflowY = '';\r\n try {\r\n document.body.removeChild(this.wrapDatePicker);\r\n } catch (e) {\r\n }\r\n }, 280);\r\n }\r\n\r\n private setCoordinate(element) {\r\n const position = UiElement.position(this.inputElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: this.inputElement.offsetHeight + position.top\r\n };\r\n\r\n setTimeout(() => {\r\n const pickerHorizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const pickerVerticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + (document.body.scrollLeft || window.scrollX || window.pageXOffset);\r\n const windowHeight = window.innerHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (pickerHorizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n if (pickerVerticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n this.wrapDatePicker.style.transform = '';\r\n element.style.position = 'absolute';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n\r\n this.wrapDatePicker.classList.add('open');\r\n if (document.body.clientWidth <= 600) {\r\n document.body.style.overflowY = 'hidden';\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Directive, EventEmitter, Input, Output, OnChanges, OnInit, OnDestroy, ElementRef,\r\n AfterViewInit, ChangeDetectorRef\r\n} from '@angular/core';\r\nimport {UiReferencesService} from './references.service';\r\nimport {Subject} from 'rxjs';\r\nimport {isDate} from 'rxjs/internal/util/isDate';\r\n\r\n@Directive({\r\n selector: '[uiDatePicker]'\r\n})\r\nexport class UiDatePickerDirective implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n @Input() ngModel;\r\n @Input() maxDate: Date;\r\n @Input() minDate: Date;\r\n @Input() events: any;\r\n @Input() initOnSelected: Date;\r\n @Input() confirmSelection: boolean;\r\n @Input('theme-class') themeClass: string;\r\n @Input('uiDatePicker') datePicker: string;\r\n @Output() select: EventEmitter<any> = new EventEmitter();\r\n @Output() selectDateChange: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n chosen: Subject<any> = new Subject();\r\n\r\n constructor(public referencesService: UiReferencesService, public element: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\r\n this.minDate = this.minDate && isDate(new Date(this.minDate)) ? new Date(this.minDate) : this.minDate;\r\n this.maxDate = this.maxDate && isDate(new Date(this.maxDate)) ? new Date(this.maxDate) : this.maxDate;\r\n }\r\n\r\n ngOnInit() {\r\n this.referencesService.add(this.datePicker, this);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.element.nativeElement.setAttribute('date-picker-name', this.datePicker);\r\n }\r\n\r\n ngOnChanges(value) {\r\n this.chosen.next(value);\r\n if (value.ngModel && value.ngModel.currentValue === '') {\r\n this.ngModelChange.emit(null);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.referencesService.remove(this.datePicker);\r\n }\r\n}\r\n","import {UiElement} from './element.provider';\r\n\r\nexport class UiElementRef {\r\n nativeElement: any;\r\n length: number;\r\n classList: any;\r\n\r\n constructor(element: any) {\r\n this.nativeElement = element;\r\n\r\n if (element) {\r\n if (element.length) {\r\n this.length = element.length;\r\n if (element === window) {\r\n this[0] = new UiElementRef(element);\r\n } else {\r\n for (let i = 0; i < element.length; i++) {\r\n this[i] = new UiElementRef(element[i]);\r\n }\r\n }\r\n } else {\r\n this.length = 1;\r\n this[0] = element;\r\n }\r\n }\r\n\r\n this.classList = {\r\n remove: function removeClass(className) {\r\n return UiElement.classList.remove(element, className);\r\n },\r\n add: function addClass(className) {\r\n return UiElement.classList.add(element, className);\r\n },\r\n contains: function addClass(className) {\r\n return UiElement.classList.contains(element, className);\r\n }\r\n };\r\n }\r\n\r\n closest(selector): any {\r\n return new UiElementRef(UiElement.closest(this.nativeElement, selector));\r\n }\r\n\r\n index(): any {\r\n return UiElement.index(this.nativeElement);\r\n }\r\n\r\n trigger(eventToTrigger): any {\r\n return UiElement.trigger(this.nativeElement, eventToTrigger);\r\n }\r\n\r\n on(events, listener): any {\r\n return UiElement.on(this.nativeElement, events, listener);\r\n }\r\n\r\n off(events, listener): any {\r\n return UiElement.off(this.nativeElement, events, listener);\r\n }\r\n\r\n is(selector): any {\r\n return UiElement.is(this.nativeElement, selector);\r\n }\r\n\r\n position(withoutScroll?): any {\r\n return UiElement.position(this.nativeElement, withoutScroll);\r\n }\r\n\r\n offset(): any {\r\n return UiElement.offset(this.nativeElement);\r\n }\r\n\r\n animate(property, start_value, end_value, time, end?, tick?): any {\r\n return UiElement.animate(this.nativeElement, property, start_value, end_value, time, end, tick);\r\n }\r\n\r\n querySelector(selector): any {\r\n let selected = this.nativeElement.querySelectorAll(selector);\r\n\r\n if (selected.length) {\r\n selected = selected.length === 1 ? selected[0] : selected;\r\n return new UiElementRef(selected);\r\n }\r\n\r\n return new UiElementRef(null);\r\n }\r\n\r\n forEach(callback): any {\r\n return Array.prototype.forEach.call(this, callback);\r\n }\r\n\r\n filter(callback): any {\r\n return Array.prototype.filter.call(this, callback);\r\n }\r\n\r\n indexOf(element): any {\r\n return Array.prototype.indexOf.call(this, element);\r\n }\r\n\r\n css(styleProp, newValue?): any {\r\n return UiElement.css(this.nativeElement, styleProp, newValue);\r\n }\r\n\r\n isInViewport(): any {\r\n return UiElement.isInViewport(this.nativeElement);\r\n }\r\n\r\n attribute(name, value?): any {\r\n if (typeof value !== 'undefined') {\r\n return this.nativeElement.setAttribute(name, value);\r\n } else {\r\n return this.nativeElement.getAttribute(name);\r\n }\r\n }\r\n\r\n height(newHeight?) {\r\n if (typeof newHeight !== 'undefined') {\r\n UiElement.css(this.nativeElement, 'height', newHeight);\r\n }\r\n\r\n return this.nativeElement.clientHeight;\r\n }\r\n\r\n parent() {\r\n return new UiElementRef(this.nativeElement.parentNode);\r\n }\r\n\r\n focus() {\r\n if (this.nativeElement && this.nativeElement.focus) {\r\n this.nativeElement.focus();\r\n }\r\n }\r\n}\r\n","import {\r\n Component, ElementRef, Output, TemplateRef, ViewChild,\r\n ViewEncapsulation, EventEmitter, Input\r\n} from '@angular/core';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\n@Component({\r\n selector: 'ui-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiDialogComponent {\r\n viewRef: any;\r\n opened: boolean;\r\n @Input('card-size') cardSize: number;\r\n @Output() closeChange: EventEmitter<any> = new EventEmitter();\r\n @ViewChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n }\r\n\r\n close() {\r\n this.opened = false;\r\n this.closeChange.emit();\r\n\r\n if (this.viewRef) {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (fabs.length) {\r\n fabs.classList.remove('hide');\r\n }\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n if (this.viewRef) {\r\n setTimeout(() => {\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.remove) {\r\n rootNode.remove();\r\n } else {\r\n rootNode.parentNode.removeChild(rootNode);\r\n }\r\n });\r\n this.viewRef.destroy();\r\n this.viewRef = null;\r\n }, 280);\r\n }\r\n\r\n document.body.style.overflowY = '';\r\n }\r\n }\r\n\r\n show(config?: any) {\r\n if (!this.viewRef) {\r\n const dialog = this;\r\n\r\n this.close();\r\n config = config || {};\r\n\r\n if (config.clickOverlayToClose === undefined) {\r\n config.clickOverlayToClose = true;\r\n } else if (config.clickOverlayToClose) {\r\n config.clickOverlayToClose = JSON.parse(config.clickOverlayToClose);\r\n }\r\n\r\n this.viewRef = dialog.templateRef.createEmbeddedView(dialog.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode, config);\r\n }\r\n });\r\n }\r\n }\r\n\r\n open(element, config) {\r\n this.opened = true;\r\n setTimeout(() => {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (config.darkClass) {\r\n element.classList.add(config.darkClass);\r\n }\r\n if (config.themeClass) {\r\n element.classList.add(config.themeClass);\r\n }\r\n if (config.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (config.cardSize || this.cardSize) {\r\n element.querySelector('ui-card').style.maxWidth = (config.cardSize || this.cardSize) + 'px';\r\n element.querySelector('ui-card').style.width = '100%';\r\n }\r\n\r\n if (!config.transparentOverlay && fabs.length) {\r\n fabs.classList.add('hide');\r\n }\r\n\r\n if (config.clickOverlayToClose) {\r\n element.querySelector('.overlay').addEventListener('click', () => {\r\n this.close();\r\n });\r\n }\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n document.body.style.overflowY = 'hidden';\r\n });\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, ViewContainerRef } from '@angular/core';\r\nimport { UiElement } from '../utils/providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiDialogTrigger]'\r\n})\r\nexport class UiDialogTriggerDirective implements AfterViewInit {\r\n viewRef: any;\r\n opened: boolean;\r\n @Input('trigger-events') triggerEvents: string;\r\n @Input('dark-class') darkClass: string;\r\n @Input('theme-class') themeClass: string;\r\n @Input('transparent-overlay') transparentOverlay: boolean;\r\n @Input('uiDialogTrigger') dialog;\r\n @Input('click-overlay-to-close') clickOverlayToClose;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef, public elementRef: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.dialog.closeChange.subscribe(() => {\r\n this.close();\r\n });\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.triggerEvents || 'click', () => {\r\n this.render();\r\n });\r\n\r\n this.clickOverlayToClose = this.clickOverlayToClose !== undefined ? this.clickOverlayToClose : true;\r\n }\r\n\r\n render() {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.dialog.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode);\r\n }\r\n });\r\n }\r\n\r\n open(element) {\r\n this.opened = true;\r\n setTimeout(() => {\r\n const fabs = document.querySelectorAll('.ui-fab-container');\r\n\r\n if (this.darkClass) {\r\n element.classList.add(this.darkClass);\r\n }\r\n if (this.themeClass) {\r\n element.classList.add(this.themeClass);\r\n }\r\n if (this.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (this.dialog.cardSize) {\r\n element.querySelectorAll('ui-card')[0].style.maxWidth = this.dialog.cardSize + 'px';\r\n element.querySelectorAll('ui-card')[0].style.width = '100%';\r\n }\r\n\r\n if (!this.transparentOverlay && fabs.length) {\r\n Array.prototype.forEach.call(fabs, fab => {\r\n fab.classList.add('hide');\r\n });\r\n }\r\n\r\n if (this.clickOverlayToClose) {\r\n element.querySelectorAll('.overlay')[0].addEventListener('click', () => {\r\n this.close();\r\n });\r\n }\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n document.body.style.overflowY = 'hidden';\r\n });\r\n }\r\n\r\n close() {\r\n this.opened = false;\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n const fabs = document.querySelectorAll('.ui-fab-container');\r\n if (fabs.length) {\r\n\r\n Array.prototype.forEach.call(fabs, fab => {\r\n fab.classList.remove('hide');\r\n });\r\n }\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n document.body.style.overflowY = '';\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, ViewEncapsulation, ElementRef, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-input-container',\r\n template: `\r\n <div class=\"ui-input-wrap\">\r\n <ng-content></ng-content>\r\n \r\n <div *ngIf=\"loading\" class=\"ui-progress input\">\r\n <div class=\"indeterminate\"></div>\r\n </div>\r\n </div>\r\n `,\r\n // styleUrls: ['input.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class UiInputContainerComponent implements AfterViewInit {\r\n\r\n @Input() loading;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const nativeElement = this.element.nativeElement;\r\n const inputWrap = nativeElement.getElementsByClassName('ui-input-wrap')[0];\r\n\r\n const icon = nativeElement.getElementsByClassName('icon')[0];\r\n const line = document.createElement('div');\r\n line.className = 'line';\r\n inputWrap.appendChild(line);\r\n\r\n if (icon) {\r\n const methodInsertIcon = icon === inputWrap.firstElementChild ? 'insertBefore' : 'appendChild';\r\n inputWrap.removeChild(icon);\r\n nativeElement[methodInsertIcon](icon, nativeElement.firstChild);\r\n }\r\n\r\n\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output,\r\n Renderer2\r\n} from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Directive({\r\n selector: '[uiInput]'\r\n})\r\n\r\nexport class UiInputDirective implements AfterViewInit, OnChanges {\r\n placeholder: string;\r\n @Input() ngModel: any;\r\n @Input() persistPlaceholder: boolean;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(private element: ElementRef, private renderer: Renderer2) {\r\n this.placeholder = element.nativeElement.placeholder;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.renderer.addClass(this.element.nativeElement, 'ui-control');\r\n this.setPlaceholder();\r\n }\r\n\r\n ngOnChanges() {\r\n this.isEmpty(this.ngModel);\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n this.isEmpty(this.ngModel);\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n this.isEmpty(this.ngModel);\r\n this.setPlaceholder(this.placeholder);\r\n }\r\n\r\n @HostListener('focusout')\r\n onFocusout() {\r\n this.setPlaceholder();\r\n }\r\n\r\n isEmpty(value: any): void {\r\n // TODO: Try model e view value\r\n const self = this;\r\n function isEmpty() {\r\n let action = isNullOrUndefined(value) && !self.element.nativeElement.value ? 'addClass' : 'removeClass';\r\n if (!isNullOrUndefined(self.ngModel) && self.ngModel.trim && !self.ngModel.trim()) {\r\n action = 'addClass';\r\n }\r\n self.renderer[action](self.element.nativeElement, 'ui-empty');\r\n }\r\n\r\n isEmpty();\r\n setTimeout(isEmpty);\r\n }\r\n\r\n setPlaceholder(value?: string) {\r\n value = this.persistPlaceholder ? this.placeholder : value || '';\r\n this.renderer.setProperty(this.element.nativeElement, 'placeholder', value);\r\n }\r\n}\r\n","import { Directive, Input, forwardRef} from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[uiMaxlength][ngModel]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => UiMaxlengthDirective), multi: true }\r\n ]\r\n})\r\nexport class UiMaxlengthDirective implements Validator {\r\n @Input('uiMaxlength') maxLength: any;\r\n\r\n constructor() {}\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n\r\n const value = control.value ? control.value.toString() : control.value;\r\n\r\n if (value && value.length > this.maxLength) {\r\n return {\r\n uiMaxlength: true\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}\r\n","import {\r\n Component, ElementRef, EventEmitter, OnDestroy, Output, TemplateRef, ViewChild, ViewContainerRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-menu',\r\n templateUrl: './menu.component.html',\r\n styleUrls: ['./menu.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiMenuComponent implements OnDestroy {\r\n viewRef;\r\n menu;\r\n themeClass;\r\n menuAlign;\r\n persistentMenu;\r\n element;\r\n listenerExists;\r\n overlay;\r\n\r\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\r\n @Output() closeChange: EventEmitter<any> = new EventEmitter(); // OLD VERSION\r\n\r\n constructor(public viewContainerRef: ViewContainerRef, public elementRef: ElementRef) {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.close();\r\n }\r\n\r\n show(event, config?) {\r\n if (config) {\r\n this.element = config.element || null;\r\n this.themeClass = config.class || null;\r\n this.menuAlign = config.align || null;\r\n this.persistentMenu = config.persistent || null;\r\n }\r\n\r\n this.createListener();\r\n\r\n let coordinate = {\r\n x: event.clientX,\r\n y: event.clientY + window.pageYOffset\r\n };\r\n if (this.element) {\r\n const position = UiElement.position(this.element);\r\n coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n }\r\n this.render(coordinate);\r\n }\r\n\r\n render(coordinate) {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode, coordinate);\r\n }\r\n });\r\n }\r\n\r\n open(element, coordinate) {\r\n setTimeout(() => {\r\n let horizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const verticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + document.body.scrollLeft;\r\n const windowHeight = document.body.clientHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (this.menuAlign === 'right') {\r\n coordinate.x -= element.clientWidth - (this.element ? this.element.clientWidth : 0);\r\n horizontalCoveringArea = coordinate.x;\r\n }\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n element.classList.add('right');\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n if (coordinate.y <= 0) {\r\n coordinate.y = 0;\r\n }\r\n\r\n if (this.themeClass) {\r\n element.classList.add(this.themeClass);\r\n }\r\n if (this.menuAlign) {\r\n element.classList.add(this.menuAlign);\r\n }\r\n\r\n element.style.transform = '';\r\n element.querySelector('ui-card').style.maxHeight = window.innerHeight + 'px';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n element.classList.add('open');\r\n });\r\n }\r\n\r\n close() {\r\n this.closeChange.emit(); // OLD VERSION\r\n\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n }\r\n }\r\n\r\n createListener() {\r\n if (!this.listenerExists) {\r\n this.listenerExists = true;\r\n UiElement.on(window, 'mouseup resize scroll touchend', (e) => {\r\n if (this.elementRef.nativeElement !== e.target) {\r\n if (!this.persistentMenu) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n\r\n }\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, Input, ViewContainerRef, AfterViewChecked,\r\n HostListener\r\n} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMenuTrigger]'\r\n})\r\nexport class UiMenuTriggerDirective implements AfterViewInit {\r\n viewRef;\r\n @Input('trigger-events') triggerEvents;\r\n @Input('theme-class') themeClass;\r\n @Input() align;\r\n @Input('menu-align') menuAlign;\r\n @Input('uiMenuTrigger') menu;\r\n @Input() persistentMenu;\r\n @Input('click-overlay-to-close') clickOverlayToClose;\r\n @Input() contextmenu: boolean;\r\n @Input() overlay: boolean;\r\n @Input() fixed: boolean;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef, public elementRef: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.menu.closeChange.subscribe(() => {\r\n this.close();\r\n });\r\n\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.triggerEvents || 'click', event => {\r\n this.menu.overlay = this.overlay;\r\n\r\n if (!this.persistentMenu) {\r\n this.close();\r\n }\r\n\r\n if (this.contextmenu) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n const position = UiElement.position(this.elementRef.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n this.render(coordinate);\r\n });\r\n });\r\n\r\n UiElement.on(window, 'mouseup resize scroll touchend', (e) => {\r\n\r\n if (this.fixed && (e.type === 'scroll' || e.type === 'resize')) {\r\n return;\r\n }\r\n\r\n if (this.clickOverlayToClose) {\r\n switch (e.type) {\r\n case 'mouseup':\r\n case 'touchend':\r\n if (!UiElement.closest(e.target, '.wrap-menu')) {\r\n this.close();\r\n }\r\n return;\r\n default:\r\n this.close();\r\n return;\r\n }\r\n }\r\n\r\n if (this.elementRef.nativeElement !== e.target) {\r\n if (!this.persistentMenu) {\r\n this.close();\r\n }\r\n\r\n }\r\n });\r\n\r\n UiElement.on(window, 'mouseup touchend', e => {\r\n if (this.clickOverlayToClose && !UiElement.closest(e.target, '.wrap-menu')) {\r\n this.close();\r\n return;\r\n }\r\n });\r\n }\r\n\r\n @HostListener('contextmenu') onContextmenu() {\r\n if (!this.contextmenu) {\r\n return true;\r\n }\r\n\r\n const position = UiElement.position(this.elementRef.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n this.render(coordinate);\r\n\r\n return false;\r\n }\r\n\r\n render(coordinate) {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.menu.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth && !rootNode.classList.contains('wrap-menu-overlay')) {\r\n this.open(rootNode, coordinate);\r\n }\r\n });\r\n }\r\n\r\n open(element, coordinate) {\r\n setTimeout(() => {\r\n let horizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const verticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + document.body.scrollLeft;\r\n const windowHeight = document.body.clientHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (this.align === 'right' || this.menuAlign === 'right') {\r\n coordinate.x -= element.clientWidth - this.elementRef.nativeElement.clientWidth;\r\n horizontalCoveringArea = coordinate.x;\r\n }\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n if (coordinate.y <= 0) {\r\n coordinate.y = 0;\r\n }\r\n\r\n if (this.themeClass) {\r\n element.classList.add(this.themeClass);\r\n }\r\n if (this.align || this.menuAlign) {\r\n element.classList.add(this.align || this.menuAlign);\r\n }\r\n\r\n element.style.transform = '';\r\n element.querySelector('ui-card').style.maxHeight = window.innerHeight + 'px';\r\n element.querySelector('ui-card').style.maxWidth = (window.innerWidth - 16) + 'px';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n\r\n\r\n element.classList.add('open');\r\n });\r\n }\r\n\r\n close() {\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n AfterViewInit,\r\n ViewEncapsulation,\r\n Output,\r\n EventEmitter,\r\n ElementRef,\r\n OnChanges,\r\n Input, OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { UiElement } from '../utils/providers/element.provider';\r\nimport { UiCookie } from '../utils/providers/cookie.provider';\r\n\r\n@Component({\r\n selector: 'ui-nav-drawer',\r\n templateUrl: './nav-drawer.component.html',\r\n styleUrls: ['./nav-drawer.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiNavDrawerComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n @Input() open: boolean;\r\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n public openNav: Function;\r\n public closeNav: Function;\r\n onTouchStart: Function;\r\n onTouchMove: Function;\r\n onTouchEnd: Function;\r\n\r\n constructor(private element: ElementRef) {\r\n this.openNav = () => {\r\n if (document.body.clientWidth <= 375 || (!this.element.nativeElement.classList.contains('persistent') && (window.scrollY || window.pageYOffset) > 1)) {\r\n const fabContainer = document.querySelectorAll('.ui-fab-container')[0];\r\n if (fabContainer) {\r\n fabContainer.classList.add('hide');\r\n }\r\n }\r\n this.element.nativeElement.classList.add('open');\r\n if (!this.element.nativeElement.classList.contains('persistent')) {\r\n document.body.style.overflowY = 'hidden';\r\n } else {\r\n document.body.style.overflowY = '';\r\n }\r\n };\r\n\r\n this.closeNav = () => {\r\n const fabContainer = document.querySelectorAll('.ui-fab-container')[0];\r\n if (fabContainer) {\r\n fabContainer.classList.remove('hide');\r\n }\r\n this.element.nativeElement.classList.remove('open');\r\n document.body.style.overflowY = '';\r\n };\r\n }\r\n\r\n ngAfterViewInit() {\r\n const body = UiElement.closest(this.element.nativeElement, 'body');\r\n body.classList.add('notransition');\r\n\r\n setTimeout(() => {\r\n body.classList.remove('notransition');\r\n this.element.nativeElement.querySelectorAll('.ui-nav-drawer-overlay')[0].style.visibility = 'visible';\r\n }, 300);\r\n\r\n const isPersistent = this.element.nativeElement.classList.contains('persistent');\r\n const isOpen = this.element.nativeElement.classList.contains('open');\r\n if (isPersistent && isOpen) {\r\n if (document.body.clientWidth > 375) {\r\n body.classList.add('ui-nav-drawer-persistent');\r\n }\r\n } else {\r\n body.classList.remove('ui-nav-drawer-persistent');\r\n }\r\n\r\n this.element.nativeElement.addEventListener('click', (e) => {\r\n if (!(isPersistent && window.innerWidth > 763) && UiElement.is(e.srcElement, 'a')) {\r\n this.open = false;\r\n this.openChange.emit(this.open);\r\n }\r\n });\r\n\r\n if (this.open) {\r\n this.openNav();\r\n } else {\r\n this.closeNav();\r\n }\r\n\r\n const navDrawer = this.element.nativeElement.querySelector('nav');\r\n\r\n let navDrawerTouch;\r\n let mouseX;\r\n let mouseXMovement;\r\n\r\n this.onTouchStart = (e) => {\r\n if (this.element.nativeElement.classList.contains('.right')) {\r\n return;\r\n }\r\n \r\n mouseX = e.touches[0].pageX;\r\n navDrawerTouch = (mouseX > 0 && mouseX < 40) ? 'open' : navDrawerTouch;\r\n navDrawerTouch = (mouseX > 320 && mouseX < 360) ? 'close' : navDrawerTouch;\r\n };\r\n\r\n this.onTouchMove = (e) => {\r\n if (navDrawerTouch) {\r\n mouseXMovement = e.touches[0].pageX - mouseX;\r\n if (navDrawerTouch === 'open' && !this.open) {\r\n mouseXMovement = mouseXMovement > 320 ? 320 : mouseXMovement;\r\n UiElement.css(navDrawer, 'transform', 'translateX(' + (-320 + mouseXMovement) + 'px)');\r\n } else if (navDrawerTouch === 'close' && this.open) {\r\n mouseXMovement = mouseXMovement < -330 ? -330 : mouseXMovement;\r\n mouseXMovement = mouseXMovement > 0 ? 0 : mouseXMovement;\r\n UiElement.css(navDrawer, 'transform', 'translateX(' + (mouseXMovement) + 'px)');\r\n }\r\n }\r\n };\r\n\r\n this.onTouchEnd = (e) => {\r\n if (navDrawerTouch) {\r\n if (navDrawerTouch === 'open' && mouseXMovement > 20) {\r\n UiElement.css(navDrawer, 'transform', '');\r\n this.open = true;\r\n this.openChange.emit(this.open);\r\n this.openNav();\r\n } else if (navDrawerTouch === 'close' && mouseXMovement < -20) {\r\n UiElement.css(navDrawer, 'transform', '');\r\n this.open = false;\r\n this.openChange.emit(this.open);\r\n this.closeNav();\r\n } else {\r\n UiElement.css(navDrawer, 'transform', '');\r\n }\r\n }\r\n\r\n navDrawerTouch = undefined;\r\n };\r\n\r\n UiElement.on(window, 'touchstart', this.onTouchStart);\r\n UiElement.on(window, 'touchmove', this.onTouchMove);\r\n UiElement.on(window, 'touchend', this.onTouchEnd);\r\n }\r\n\r\n ngOnChanges(changes) {\r\n const isNavDrawerPersistent = UiCookie.get('NavDrawerPersistent') === 'true';\r\n\r\n if (isNavDrawerPersistent) {\r\n this.open = true;\r\n this.openNav();\r\n }\r\n\r\n if (changes.open) {\r\n const isOpen = changes.open.currentValue;\r\n this.open = isOpen;\r\n\r\n if (isOpen) {\r\n this.openNav();\r\n } else {\r\n this.closeNav();\r\n }\r\n\r\n const isPersistent = this.element.nativeElement.classList.contains('persistent');\r\n const body = UiElement.closest(this.element.nativeElement, 'body');\r\n\r\n if (isPersistent && isOpen) {\r\n if (document.body.clientWidth > 375) {\r\n body.classList.add('ui-nav-drawer-persistent');\r\n UiCookie.set('NavDrawerPersistent', 'true');\r\n }\r\n } else {\r\n body.classList.remove('ui-nav-drawer-persistent');\r\n UiCookie.set('NavDrawerPersistent', 'false');\r\n }\r\n\r\n setTimeout(() => {\r\n UiElement.trigger(window, 'resize');\r\n }, 280);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n UiElement.off(window, 'touchstart', this.onTouchStart);\r\n UiElement.off(window, 'touchmove', this.onTouchMove);\r\n UiElement.off(window, 'touchend', this.onTouchEnd);\r\n document.body.classList.add('notransition');\r\n document.body.classList.remove('ui-nav-drawer-persistent');\r\n setTimeout(() => {\r\n document.body.classList.remove('notransition');\r\n }, 1);\r\n }\r\n\r\n closeMenuOverlay() {\r\n if (this.open !== undefined) {\r\n this.open = false;\r\n this.openChange.emit(this.open);\r\n }\r\n }\r\n}\r\n","import {Component, AfterViewInit, ElementRef, ViewEncapsulation, Input, OnChanges} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-option',\r\n templateUrl: './option.component.html',\r\n styleUrls: ['./option.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiOptionComponent implements AfterViewInit, OnChanges {\r\n @Input() color: string;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const input = this.element.nativeElement.querySelector('input');\r\n\r\n input.classList.add('ui-option');\r\n\r\n const optionShell = '<div class=\"ui-option-shell\"><div class=\"ui-option-fill\"></div><div class=\"ui-option-mark\"></div></div>';\r\n\r\n input.insertAdjacentHTML('afterend', optionShell);\r\n this.setColor();\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.color && !changes.color.firstChange) {\r\n this.setColor();\r\n }\r\n }\r\n\r\n setColor() {\r\n const optionFill = this.element.nativeElement.querySelector('.ui-option-fill');\r\n optionFill.style.borderColor = this.color || '';\r\n }\r\n\r\n}\r\n","import {Component, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-progress-radial.indeterminate',\r\n templateUrl: 'progress-radial.component.html',\r\n styleUrls: ['./progress-radial.component.scss']\r\n})\r\n\r\nexport class UiProgressRadialComponent implements OnInit {\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, HostListener, Input} from '@angular/core';\r\n\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\nconst maxRipples = 10;\r\nlet ripples = 0;\r\nimport {debounce} from '../utils/functions/debounce';\r\n\r\n@Directive({\r\n selector: '[uiRipple]'\r\n})\r\nexport class UiRippleDirective implements AfterViewInit {\r\n isIE: boolean;\r\n @Input('ripple-disable') rippleDisable;\r\n public elRippleContainerTemplate: HTMLElement;\r\n public elRippleTemplate: HTMLElement;\r\n public elRippleContainerTemplateClone: HTMLElement;\r\n\r\n constructor(public element: ElementRef) {\r\n this.isIE = navigator.userAgent.indexOf('Trident') > -1;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.elRippleContainerTemplate = document.createElement('div');\r\n this.elRippleContainerTemplate.classList.add('ui-ripple-container');\r\n this.elRippleTemplate = document.createElement('div');\r\n this.elRippleTemplate.classList.add('ui-ripple-wave');\r\n\r\n this.elRippleContainerTemplateClone = <HTMLElement>this.elRippleContainerTemplate.cloneNode(true);\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMousedown(e) {\r\n if (!this.isIE) {\r\n ripples = document.querySelectorAll('.ui-ripple-wave').length;\r\n\r\n if (!this.rippleDisable && !this.element.nativeElement.hasAttribute('disabled') && ripples < maxRipples) {\r\n const elementWidth = this.element.nativeElement.offsetWidth;\r\n const elementHeight = this.element.nativeElement.offsetHeight;\r\n\r\n const isIcon = this.element.nativeElement.classList.contains('icon');\r\n const isFab = this.element.nativeElement.classList.contains('fab');\r\n const isRounded = this.element.nativeElement.classList.contains('ripple-rounded');\r\n\r\n if (isIcon || isFab || isRounded) {\r\n this.elRippleContainerTemplateClone.style.borderRadius = '50%';\r\n }\r\n this.elRippleContainerTemplateClone.style.width = elementWidth + 'px';\r\n this.elRippleContainerTemplateClone.style.height = elementHeight + 'px';\r\n\r\n this.element.nativeElement.appendChild(this.elRippleContainerTemplateClone);\r\n\r\n const elRippleTemplateClone = <HTMLElement>this.elRippleTemplate.cloneNode(true);\r\n\r\n const isElementHorizontal = elementWidth > elementHeight;\r\n\r\n let finalWidth;\r\n let finalHeight;\r\n let finalTop;\r\n let finalLeft;\r\n\r\n if (isElementHorizontal) {\r\n finalWidth = elementWidth * 3;\r\n finalHeight = elementWidth * 3;\r\n } else {\r\n finalWidth = elementHeight * 3;\r\n finalHeight = elementHeight * 3;\r\n }\r\n\r\n finalTop = -(finalWidth / 2);\r\n finalLeft = -(finalWidth / 2);\r\n\r\n elRippleTemplateClone.style.width = finalWidth + 'px';\r\n elRippleTemplateClone.style.height = finalHeight + 'px';\r\n\r\n const mousePos = this.getMousePosition(e);\r\n const elementPos = UiElement.position(this.element.nativeElement);\r\n\r\n const pos = {\r\n y: mousePos.y - elementPos.top,\r\n x: mousePos.x - elementPos.left\r\n };\r\n\r\n if (isIcon || isFab || isRounded) {\r\n finalTop = finalTop + (elementWidth / 2);\r\n finalLeft = finalLeft + (elementWidth / 2);\r\n } else {\r\n finalTop = finalTop + pos.y;\r\n finalLeft = finalLeft + pos.x;\r\n }\r\n\r\n elRippleTemplateClone.style.top = finalTop + 'px';\r\n elRippleTemplateClone.style.left = finalLeft + 'px';\r\n\r\n this.elRippleContainerTemplateClone.insertBefore(elRippleTemplateClone, this.elRippleContainerTemplateClone.firstChild);\r\n\r\n this.elRippleContainerTemplateClone.classList.add('pressed');\r\n\r\n UiElement.animate(this.elRippleContainerTemplateClone, 'border-spacing', 0, 1, 800, null, (tick) => {\r\n elRippleTemplateClone.style.transform = `scale(${tick})`;\r\n });\r\n\r\n ripples++;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseup')\r\n onMouseup() {\r\n if (!this.isIE) {\r\n debounce(() => {\r\n this.eraseRipples(this);\r\n }, 800, true)();\r\n }\r\n }\r\n\r\n @HostListener('mouseout')\r\n onMouseout() {\r\n if (!this.isIE) {\r\n debounce(() => {\r\n this.eraseRipples(this);\r\n }, 2000, true)();\r\n }\r\n }\r\n\r\n eraseRipples(thiss?) {\r\n thiss.elRippleContainerTemplateClone.classList.remove('pressed');\r\n\r\n const elRipples = thiss.elRippleContainerTemplateClone.children;\r\n\r\n const len = elRipples.length;\r\n\r\n ripples = len;\r\n\r\n for (let i = 0; i < len; i++) {\r\n const elRipple = <HTMLElement>elRipples[i];\r\n if (elRipple) {\r\n const elementOpacity = elRipple.style.opacity || '1';\r\n\r\n if (elementOpacity === '1') {\r\n UiElement.animate(elRipple, 'opacity', 1, 0, 800, () => {\r\n try {\r\n elRipple.parentNode.removeChild(elRipple);\r\n ripples--;\r\n } catch (e) {\r\n }\r\n if (!ripples) {\r\n try {\r\n thiss.elRippleContainerTemplateClone.parentNode.removeChild(thiss.elRippleContainerTemplateClone);\r\n } catch (e) {\r\n }\r\n }\r\n }, null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n getMousePosition(e?) {\r\n const pos = {\r\n y: undefined,\r\n x: undefined\r\n };\r\n\r\n if (e.originalEvent && e.originalEvent.touches !== undefined) {\r\n pos.y = e.originalEvent.touches[0].pageY;\r\n pos.x = e.originalEvent.touches[0].pageX;\r\n } else if (e.pageX) {\r\n pos.y = e.pageY;\r\n pos.x = e.pageX;\r\n } else if (e && e.touches !== undefined) {\r\n pos.y = e.touches[0].pageY;\r\n pos.x = e.touches[0].pageX;\r\n }\r\n\r\n return pos;\r\n }\r\n}\r\n","import {\r\n Component, OnInit, Input, DoCheck, KeyValueDiffers, Output, EventEmitter, OnChanges,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-smart-list',\r\n templateUrl: 'smart-list.component.html',\r\n styleUrls: ['smart-list.component.scss']\r\n})\r\n\r\nexport class UiSmartListComponent implements OnInit, DoCheck, OnChanges {\r\n @Input() model: any;\r\n @Input('default-item') defaultItem: any;\r\n @Input('auto-delete-exception') autoDeleteException: any;\r\n @Output() modelChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n list: any[];\r\n differ: any;\r\n objDiffer: { string?: any };\r\n currentFocusedElementIndex: any;\r\n\r\n constructor(private differs: KeyValueDiffers, public element: ElementRef) {\r\n this.differ = differs.find([]).create();\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.defaultItem) {\r\n this.defaultItem = {};\r\n }\r\n this.list = [Object.assign({}, this.defaultItem)];\r\n if (!this.model) {\r\n console.error('Você precisa declarar a model no seu componente');\r\n }\r\n this.objDiffer = {};\r\n this.list.forEach((elt, i) => {\r\n this.objDiffer[i] = this.differs.find(elt).create();\r\n });\r\n this.model.forEach((item) => {\r\n this.list.push(item);\r\n });\r\n }\r\n\r\n ngDoCheck() {\r\n let wasChanged = false;\r\n\r\n this.list.forEach((elt, i) => {\r\n let objDiffer = this.objDiffer[i];\r\n if (!objDiffer) {\r\n objDiffer = this.objDiffer[i] = this.differs.find(elt).create();\r\n }\r\n const objChanges = objDiffer.diff(elt);\r\n if (objChanges) {\r\n wasChanged = true;\r\n objChanges.forEachChangedItem((elt2) => {\r\n if (!elt2.currentValue && typeof elt2.currentValue !== 'number' && typeof elt2.currentValue !== 'boolean' && !elt[this.autoDeleteException]) {\r\n delete elt[elt2.key];\r\n }\r\n });\r\n\r\n if (elt && this.model.indexOf(elt) < 0 && (Object.keys(elt).length > Object.keys(this.defaultItem).length)) {\r\n this.model.push(elt);\r\n }\r\n\r\n if (elt && (Object.keys(elt).length === Object.keys(this.defaultItem).length) && equals(elt, this.defaultItem) && this.model.length && this.model.indexOf(elt) > -1 && !elt[this.autoDeleteException]) {\r\n this.model.splice(this.model.indexOf(elt), 1);\r\n }\r\n }\r\n });\r\n\r\n if (wasChanged) {\r\n this.newItem();\r\n }\r\n }\r\n\r\n newItem() {\r\n let found = 0;\r\n\r\n this.list.forEach((item) => {\r\n if (item && (Object.keys(item).length <= Object.keys(this.defaultItem).length) && equals(item, this.defaultItem)) {\r\n found++;\r\n const element = this.list[this.list.indexOf(item)];\r\n this.list.splice(this.list.indexOf(item), 1);\r\n this.list.splice(this.list.length, 0, element);\r\n }\r\n });\r\n\r\n if (!found) {\r\n this.list.push(Object.assign({}, this.defaultItem));\r\n } else {\r\n setTimeout(() => {\r\n this.list.splice(this.list.length - 1, 1);\r\n this.newItem();\r\n });\r\n }\r\n }\r\n\r\n remove(i) {\r\n Object.keys(this.list[i]).forEach((key) => {\r\n if (!Object.keys(this.defaultItem).includes(key)) {\r\n delete this.list[i][key];\r\n } else {\r\n this.list[i][key] = this.defaultItem[key];\r\n }\r\n });\r\n this.ngDoCheck();\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.model && changes.model.currentValue) {\r\n if (changes.model.currentValue.length) {\r\n changes.model.currentValue.forEach((item) => {\r\n if (this.list && this.list.indexOf(item) === -1) {\r\n this.list.push(item);\r\n }\r\n });\r\n } else if (changes.model.currentValue && changes.model.previousValue) {\r\n this.list = [Object.assign({}, this.defaultItem)];\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\nfunction equals(x, y) {\r\n return JSON.stringify(x) === JSON.stringify(y);\r\n}\r\n","import {EventEmitter, Injectable} from '@angular/core';\r\n\r\nlet timeout: any;\r\nconst bars: any[] = [];\r\nconst defaults: {} = {\r\n duration: 5000,\r\n center: false,\r\n actionText: null\r\n};\r\n\r\n@Injectable()\r\nexport class UiSnackbar {\r\n static barsChange: EventEmitter<any> = new EventEmitter();\r\n\r\n static show(bar) {\r\n bar = Object.assign({}, defaults, bar);\r\n bars.push(bar);\r\n if (bars.length === 1) {\r\n this.timerBar(bar);\r\n }\r\n this.barsChange.emit(bars);\r\n }\r\n\r\n static hide() {\r\n if (bars.length) {\r\n const snackbar = document.querySelector('ui-snackbar-container > ui-snackbar');\r\n if (!snackbar) {\r\n return;\r\n }\r\n\r\n snackbar.classList.add('leave');\r\n setTimeout(() => {\r\n clearTimeout(timeout);\r\n this.finishTimeout();\r\n }, 280);\r\n }\r\n }\r\n\r\n private static timerBar(bar) {\r\n if (bars.length) {\r\n this.elevateFAB();\r\n\r\n if (bar.duration !== Infinity) {\r\n timeout = setTimeout(() => {\r\n const firstSnackbar = document.querySelectorAll('ui-snackbar-container > ui-snackbar')[0];\r\n if (firstSnackbar) {\r\n document.querySelectorAll('ui-snackbar-container > ui-snackbar')[0].classList.add('leave');\r\n }\r\n setTimeout(() => this.finishTimeout(), 280);\r\n }, bar.duration);\r\n }\r\n }\r\n };\r\n\r\n private static finishTimeout() {\r\n bars.shift();\r\n this.setTranslateFAB(0, false);\r\n if (bars.length) {\r\n this.timerBar(bars[0]);\r\n }\r\n this.barsChange.emit(bars);\r\n }\r\n\r\n public static elevateFAB() {\r\n setTimeout(() => {\r\n let snackHeight;\r\n if (window.innerWidth <= 764) {\r\n snackHeight = document.querySelectorAll('ui-snackbar-container > ui-snackbar')[0].clientHeight;\r\n } else {\r\n snackHeight = 0;\r\n }\r\n this.setTranslateFAB(snackHeight, true);\r\n });\r\n }\r\n\r\n private static setTranslateFAB(translate, addClass) {\r\n let fabs;\r\n if (window.innerWidth <= 764) {\r\n fabs = document.querySelectorAll('.ui-fab-container');\r\n } else {\r\n fabs = document.querySelectorAll('.ui-fab-container.scrolled');\r\n }\r\n\r\n [].forEach.call(document.querySelectorAll('.ui-fab-container'), (fab) => {\r\n fab.classList.remove('elevating-snack');\r\n fab.style.transform = '';\r\n });\r\n\r\n [].forEach.call(fabs, (fab) => {\r\n fab.classList[addClass ? 'add' : 'remove']('elevating-snack');\r\n if (translate) {\r\n fab.style.transform = `translateY(-${translate}px)`;\r\n } else {\r\n fab.style.transform = '';\r\n }\r\n });\r\n }\r\n\r\n constructor() {\r\n }\r\n}\r\n","import {Injectable, EventEmitter} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\nlet mainToolbar: HTMLElement;\r\nlet defaultBreakpoint: any;\r\nconst change: EventEmitter<any> = new EventEmitter();\r\n\r\nconst sizes: any[] = [480, 600, 840, 960, 1280, 1440, 1600];\r\n\r\n@Injectable()\r\nexport class UiToolbarService {\r\n sharedValue: String;\r\n change: EventEmitter<any>;\r\n\r\n constructor() {\r\n this.change = change;\r\n }\r\n\r\n public get() {\r\n return this.sharedValue;\r\n }\r\n\r\n public set(sharedValue: String) {\r\n this.sharedValue = sharedValue;\r\n\r\n this.change.emit(sharedValue);\r\n }\r\n\r\n public registerMainToolbar(element: any) {\r\n mainToolbar = <HTMLElement>element;\r\n defaultBreakpoint = [];\r\n sizes.forEach(size => {\r\n if (mainToolbar.classList.contains(`elevate-on-s${size}`)) {\r\n defaultBreakpoint.push(size);\r\n }\r\n });\r\n }\r\n\r\n public getMainToolbar(): HTMLElement {\r\n if (!mainToolbar) {\r\n console.error('Você não registrou um toolbar principal.');\r\n } else {\r\n return mainToolbar;\r\n }\r\n }\r\n\r\n public activateExtendedToolbar(breakpoint?: any) {\r\n if (!mainToolbar) {\r\n return;\r\n }\r\n\r\n if (breakpoint) {\r\n if (!sizes.includes(breakpoint)) {\r\n console.error(`O tamanho do \"breakpoint\" tem que ser um dos tamanhos suportados: ${sizes.join(', ')}`);\r\n } else {\r\n sizes.forEach(size => this.getMainToolbar().classList.remove(`elevate-on-s${size}`));\r\n this.getMainToolbar().classList.add(`elevate-on-s${breakpoint}`);\r\n }\r\n }\r\n\r\n this.getMainToolbar().classList.add('size-2x');\r\n\r\n const header = this.getMainToolbar().querySelectorAll('header')[0];\r\n header.style.transition = 'all 280ms';\r\n setTimeout(() => {\r\n header.style.transition = '';\r\n UiElement.trigger(window, 'scroll');\r\n }, 280);\r\n }\r\n\r\n public deactivateExtendedToolbar() {\r\n if (!mainToolbar) {\r\n return;\r\n }\r\n\r\n sizes.forEach(size => this.getMainToolbar().classList.remove(`elevate-on-s${size}`));\r\n defaultBreakpoint.forEach(size => this.getMainToolbar().classList.add(`elevate-on-s${size}`));\r\n\r\n this.getMainToolbar().classList.remove('size-2x');\r\n this.getMainToolbar().classList.remove('scrolled');\r\n\r\n const header = this.getMainToolbar().querySelectorAll('header')[0];\r\n header.style.transition = 'all 280ms';\r\n header.style.height = '';\r\n header.style.paddingBottom = '';\r\n setTimeout(() => {\r\n header.style.transition = '';\r\n }, 280);\r\n\r\n UiElement.trigger(window, 'scroll');\r\n }\r\n\r\n public activateTransparentToolbar(auxiliarClass?: string) {\r\n this.getMainToolbar().classList.add('transparent');\r\n if (auxiliarClass) {\r\n this.getMainToolbar().classList.add(auxiliarClass);\r\n }\r\n }\r\n\r\n public deactivateTransparentToolbar(auxiliarClass?: string) {\r\n this.getMainToolbar().classList.remove('transparent');\r\n if (auxiliarClass) {\r\n this.getMainToolbar().classList.remove(auxiliarClass);\r\n }\r\n }\r\n\r\n public activateElevatingToolbar(auxiliarClass?: string) {\r\n this.getMainToolbar().classList.add('elevate-on-scroll');\r\n if (auxiliarClass) {\r\n this.getMainToolbar().classList.add(auxiliarClass);\r\n }\r\n }\r\n\r\n public deactivateElevatingToolbar(auxiliarClass?: string) {\r\n this.getMainToolbar().classList.remove('elevate-on-scroll');\r\n if (auxiliarClass) {\r\n this.getMainToolbar().classList.remove(auxiliarClass);\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, Inject, AfterViewInit} from '@angular/core';\r\nimport {UiSmartListComponent} from '../smart-list.component';\r\nimport {UiElementRef} from '../../utils/providers/element-ref.provider';\r\n\r\n@Component({\r\n selector: 'ui-smart-list-item',\r\n templateUrl: '../smart-list.component.html'\r\n})\r\n\r\nexport class UiSmartListItemComponent implements AfterViewInit {\r\n constructor(@Inject(UiSmartListComponent) private parent: UiSmartListComponent, private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const self = this;\r\n const inputs = this.element.nativeElement.querySelectorAll('input');\r\n for (let i = 0; i < inputs.length; i++) {\r\n const el = inputs[i];\r\n el.addEventListener('focus', e => {\r\n this.onFocus(e, self);\r\n });\r\n\r\n el.addEventListener('blur', e => {\r\n this.onBlur(e, self);\r\n });\r\n }\r\n }\r\n\r\n onFocus(event, self) {\r\n const el = event.target;\r\n\r\n const elItem = new UiElementRef(el).closest('ui-smart-list-item');\r\n const newIndex = Array.prototype.indexOf.call(self.parent.element.nativeElement.children, elItem.nativeElement);\r\n self.parent.currentFocusedElementIndex = newIndex > -1 ? newIndex : self.parent.currentFocusedElementIndex;\r\n }\r\n\r\n onBlur(event, self) {\r\n setTimeout(() => {\r\n const target = new UiElementRef(event.target);\r\n if (!target.closest('body').nativeElement) {\r\n setTimeout(() => {\r\n self.parent.element.nativeElement.children[self.parent.currentFocusedElementIndex].querySelector('input').focus();\r\n }, 100);\r\n }\r\n });\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {UiSnackbar} from './snackbar.provider';\r\n\r\n@Component({\r\n selector: 'ui-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styleUrls: ['./snackbar.component.scss']\r\n})\r\nexport class UiSnackbarComponent {\r\n\r\n @Input() bar;\r\n\r\n constructor() {\r\n }\r\n\r\n hide() {\r\n UiSnackbar.hide();\r\n }\r\n}\r\n","import {AfterViewInit, Component} from '@angular/core';\r\nimport {UiSnackbar} from './snackbar.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-snackbar-container',\r\n templateUrl: './snackbar-container.component.html',\r\n styleUrls: ['./snackbar-container.component.scss']\r\n})\r\nexport class UiSnackbarContainerComponent implements AfterViewInit {\r\n\r\n bars: any[];\r\n\r\n constructor() {\r\n UiSnackbar.barsChange.subscribe((value) => {\r\n this.bars = value;\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n UiElement.on(window, 'resize', () => {\r\n if (this.bars && this.bars.length) {\r\n UiSnackbar.elevateFAB();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import {Component, AfterViewInit, ElementRef, ViewEncapsulation} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-switch',\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiSwitchComponent implements AfterViewInit {\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const input = this.element.nativeElement.querySelectorAll('input')[0];\r\n\r\n input.classList.add('ui-switch');\r\n\r\n const switchShell = '<div class=\"switch-cover\"><div class=\"track\"></div><div class=\"thumb-container\"><div class=\"thumb\"></div></div></div>';\r\n\r\n input.insertAdjacentHTML('afterend', switchShell);\r\n }\r\n\r\n}\r\n","import {Component, AfterViewInit, ViewEncapsulation, ElementRef} from '@angular/core';\r\n\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n // styleUrls: ['./toolbar.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiToolbarComponent implements AfterViewInit {\r\n\r\n constructor(private element: ElementRef) {\r\n UiElement.on(window, 'scroll resize', (e) => {\r\n if (this.element.nativeElement.classList.contains('elevate-on-scroll')) {\r\n const header = this.element.nativeElement.querySelectorAll('header')[0];\r\n const scroll = (window.scrollY || window.pageYOffset) * 3.6;\r\n\r\n if (this.element.nativeElement.classList.contains('size-2x')) {\r\n if (e.type === 'scroll' && scroll < 97) {\r\n this.element.nativeElement.classList.add('notransition');\r\n header.style.paddingBottom = (102 - scroll) + 'px';\r\n header.style.height = (162 - (scroll)) + 'px';\r\n setTimeout(() => {\r\n this.element.nativeElement.classList.remove('notransition');\r\n }, 500);\r\n } else {\r\n header.style.paddingBottom = '';\r\n header.style.height = '';\r\n }\r\n\r\n if (scroll > 97) {\r\n header.style.zIndex = 3;\r\n this.element.nativeElement.classList.add('scrolled');\r\n } else {\r\n header.style.zIndex = 2;\r\n this.element.nativeElement.classList.remove('scrolled');\r\n }\r\n } else {\r\n if ((window.scrollY || window.pageYOffset) > 1) {\r\n this.element.nativeElement.classList.add('scrolled');\r\n } else {\r\n this.element.nativeElement.classList.remove('scrolled');\r\n }\r\n }\r\n }\r\n });\r\n\r\n // let form: any = document.querySelectorAll('form');\r\n // if (form.length) {\r\n // form = <HTMLElement>form[0];\r\n // const input = form.querySelectorAll('input')[0];\r\n // input.addEventListener('focus', () => {\r\n // form.classList.add('open');\r\n // });\r\n // input.addEventListener('blur', () => {\r\n // form.classList.remove('open');\r\n // });\r\n // }\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\nexport function _window(): any {\r\n // return the global native browser window object\r\n return window;\r\n}\r\n\r\n@Injectable()\r\nexport class UiWindowRef {\r\n static nativeWindow(): any {\r\n return _window();\r\n }\r\n}\r\n","export function checkDate(value: any): any {\r\n value = value.replace(/[^\\w\\s!\\/]/gi, '');\r\n if (!/^[\\d, \\/]+$/.test(value)) {\r\n return false;\r\n }\r\n\r\n const splittedDate: string[] = value.split('/');\r\n\r\n if (splittedDate.length !== 3) {\r\n return false;\r\n }\r\n\r\n let dayIndex: any;\r\n let monthIndex: any;\r\n let yearIndex: any;\r\n let mask: any = 'd/M/yy';\r\n\r\n mask = mask.split('/');\r\n for (let i = 0; i < 3; i++) {\r\n if (mask[i].indexOf('d') > -1) {\r\n dayIndex = i;\r\n }\r\n if (mask[i].indexOf('M') > -1) {\r\n monthIndex = i;\r\n }\r\n if (mask[i].indexOf('y') > -1) {\r\n yearIndex = i;\r\n }\r\n }\r\n\r\n if (isNaN(dayIndex) || isNaN(monthIndex) || isNaN(yearIndex)) {\r\n return false;\r\n }\r\n\r\n const date: any = splittedDate[dayIndex];\r\n const month: any = splittedDate[monthIndex];\r\n const year: any = splittedDate[yearIndex];\r\n\r\n if (!date || !month || !year) {\r\n return false;\r\n }\r\n if (month < 1 || month > 12) {\r\n return false;\r\n }\r\n if (year.length < 4) {\r\n return false;\r\n }\r\n\r\n const dateCheck: number = new Date(year, month, 0).getDate();\r\n if (date > dateCheck || date < 1) {\r\n return false;\r\n }\r\n\r\n return new Date(year, month - 1, date);\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\n\r\nimport { isDate } from 'rxjs/internal/util/isDate';\r\n\r\nimport { UiElement } from '../../providers/element.provider';\r\nimport { checkDate } from './check-date';\r\n\r\n@Directive({\r\n selector: '[uiMaskDate][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskDateDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskDateDirective),\r\n multi: true\r\n }, DatePipe]\r\n})\r\nexport class UiMaskDateDirective implements ControlValueAccessor, Validator, OnChanges, AfterViewInit, OnInit {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: any;\r\n maxlength = 10;\r\n regex = /^\\d\\d\\/\\d\\d\\/\\d\\d\\d\\d$/g;\r\n regexiso = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z|(((\\+|\\-)[0-1][0-9]):([0-5][0-9])))?$/g;\r\n symbolsPositions: number[] = [2, 5];\r\n dateFormatsList = [\r\n {\r\n format: 'dd/MM/yyyy',\r\n maxlength: 10,\r\n regex: /^(\\d{2}\\/){2}\\d{4}$/g,\r\n symbolsPositions: [2, 5]\r\n },\r\n {\r\n format: 'dd/MM',\r\n maxlength: 5,\r\n regex: /^(\\d{2})\\/(\\d{2})$/g,\r\n symbolsPositions: [2]\r\n },\r\n {\r\n format: 'MM/yyyy',\r\n maxlength: 7,\r\n regex: /^(\\d{2})\\/(\\d{4})$/g,\r\n symbolsPositions: [2]\r\n },\r\n {\r\n format: 'dd/MM/yy',\r\n maxlength: 8,\r\n regex: /^(\\d{2}\\/){2}\\d{2}$/g,\r\n symbolsPositions: [2, 5]\r\n },\r\n {\r\n format: 'MM/yy',\r\n maxlength: 5,\r\n regex: /^(\\d{2})\\/(\\d{2})$/g,\r\n symbolsPositions: [2]\r\n }\r\n ];\r\n\r\n @Input() minDate: Date;\r\n @Input() maxDate: Date;\r\n @Input() ngModel: any;\r\n @Input() dateFormat: string;\r\n @Input() day = '01'; // Dia padrão\r\n @Input() year: string = (new Date().getFullYear()).toString(); // Ano Padrão\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public datePipe: DatePipe) {\r\n }\r\n\r\n ngOnInit() {\r\n this.validaDateFormat();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.minDate = this.minDate && isDate(new Date(this.minDate)) ? new Date(this.minDate) : this.minDate;\r\n this.maxDate = this.maxDate && isDate(new Date(this.maxDate)) ? new Date(this.maxDate) : this.maxDate;\r\n\r\n this.ngModel = this.ngModel && isDate(new Date(this.ngModel)) ? new Date(this.ngModel) : this.ngModel;\r\n\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input && rawValue) {\r\n this.elementRef.nativeElement.value = this.format(this.datePipe.transform(this.ngModel, this.dateFormat));\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = checkDate(this.getCorrectValue(this.format(rawValue))) || this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.format(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(date: string): string {\r\n if (!date) {\r\n return '';\r\n }\r\n\r\n date = date.toString().replace(/[^0-9]+/g, '');\r\n if (date.length > this.symbolsPositions[0]) {\r\n date = date.substring(0, this.symbolsPositions[0]) + '/' + date.substring(this.symbolsPositions[0]);\r\n }\r\n if (date.length > this.symbolsPositions[1]) {\r\n date = date.substring(0, this.symbolsPositions[1]) + '/' + date.substring(this.symbolsPositions[1], this.maxlength - 1);\r\n }\r\n return date.substring(0, this.maxlength);\r\n }\r\n\r\n /**\r\n * Verifica se o formato da data é válido\r\n */\r\n validaDateFormat() {\r\n if (!this.dateFormat) { // Caso não seja passado nenhum parametro, coloca o default\r\n this.dateFormat = 'dd/MM/yyyy';\r\n return;\r\n }\r\n\r\n let valid = false;\r\n\r\n this.dateFormatsList.forEach(item => {\r\n if (item.format === this.dateFormat) {\r\n this.maxlength = item.maxlength;\r\n this.regex = item.regex;\r\n this.symbolsPositions = item.symbolsPositions;\r\n valid = true;\r\n }\r\n });\r\n\r\n if (!valid) {\r\n console.error('Formato de data não suportado, tente algum destes: [\"dd/MM/yyyy\", \"dd/MM\", \"MM/yyyy\", \"dd/MM/yy\", \"MM/yy\"]');\r\n }\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (changes.minDate && !changes.minDate.firstChange) {\r\n this.minDate = changes.minDate.currentValue && isDate(new Date(this.minDate)) ? new Date(this.minDate) : this.minDate;\r\n this.control.updateValueAndValidity(this.control);\r\n }\r\n if (changes.maxDate && !changes.maxDate.firstChange) {\r\n this.maxDate = changes.maxDate.currentValue && isDate(new Date(this.maxDate)) ? new Date(this.maxDate) : this.maxDate;\r\n this.control.updateValueAndValidity(this.control);\r\n }\r\n if ((changes.minDate && !changes.minDate.firstChange) || (changes.maxDate && !changes.maxDate.firstChange)) {\r\n this.control.updateValueAndValidity(this.control);\r\n }\r\n }\r\n\r\n /**\r\n * Retorna o valor formatado corretamente p/ uma data válida\r\n * @param value { string } valor da view\r\n */\r\n getCorrectValue(value: string) {\r\n const test = this.regex.test(value);\r\n\r\n if (this.dateFormat === 'MM/yyyy' && test) {\r\n return `${this.day}/${value}`;\r\n }\r\n\r\n if (this.dateFormat === 'dd/MM' && test) {\r\n return `${value}/${this.year}`;\r\n }\r\n\r\n if (this.dateFormat === 'dd/MM/yy' && test) {\r\n const valueSplitted = value.split('/');\r\n return `${valueSplitted[0]}/${valueSplitted[1]}/20${valueSplitted[2]}`;\r\n }\r\n\r\n if (this.dateFormat === 'MM/yy' && test) {\r\n const valueSplitted = value.split('/');\r\n return `${this.day}/${valueSplitted[0]}/20${valueSplitted[1]}`;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n const value = this.ngModel && this.regexiso.test(this.ngModel) ? new Date(this.ngModel) : this.ngModel;\r\n const dateControl = isDate(control.value) ? control.value : new Date(control.value);\r\n\r\n if (value && (!isDate(value) || !checkDate(value.toLocaleDateString('pt-BR')))) {\r\n return { parse: true };\r\n }\r\n\r\n if (value && (isDate(value) || checkDate(value.toLocaleDateString('pt-BR')))) {\r\n dateControl.setHours(0, 0, 0, 0);\r\n\r\n if (this.minDate && isDate(this.minDate)) {\r\n this.minDate.setHours(0, 0, 0, 0);\r\n\r\n if (dateControl.getTime() < this.minDate.getTime()) {\r\n return { minDate: true };\r\n }\r\n }\r\n if (this.maxDate && isDate(this.maxDate)) {\r\n this.maxDate.setHours(0, 0, 0, 0);\r\n\r\n if (dateControl.getTime() > this.maxDate.getTime()) {\r\n return { maxDate: true };\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown')\r\n onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n}\r\n","import {OnDestroy, ChangeDetectorRef, Pipe, PipeTransform} from '@angular/core';\r\nimport {AsyncPipe} from '@angular/common';\r\nimport {Observable, of, timer} from 'rxjs/index';\r\nimport {repeatWhen, takeWhile, map, flatMap} from 'rxjs/internal/operators';\r\n\r\n@Pipe({\r\n name: 'uiTimeAgo',\r\n pure: false\r\n})\r\nexport class UiTimeAgoPipe implements PipeTransform, OnDestroy {\r\n private async: AsyncPipe;\r\n private isDestroyed = false;\r\n private value: Date;\r\n private timer: Observable<string>;\r\n\r\n private textBefore: string;\r\n private textAfter: string;\r\n private isMinified: boolean;\r\n private isHence: boolean;\r\n\r\n constructor(ref: ChangeDetectorRef) {\r\n this.async = new AsyncPipe(ref);\r\n }\r\n\r\n public transform(obj: any, textBefore: string = '', textAfter: string = '', isMinified: boolean, isHence: boolean): any {\r\n this.textBefore = textBefore;\r\n this.textAfter = textAfter;\r\n this.isMinified = isMinified;\r\n this.isHence = isHence;\r\n\r\n if (obj == null) {\r\n return '';\r\n }\r\n\r\n if (!(obj instanceof Date)) {\r\n try {\r\n obj = new Date(obj);\r\n } catch (e) {\r\n throw new Error('UiTimeAgo só funciona com datas');\r\n }\r\n }\r\n\r\n this.value = obj;\r\n\r\n if (!this.timer) {\r\n this.timer = this.getObservable();\r\n }\r\n\r\n return this.async.transform(this.timer);\r\n }\r\n\r\n public now(): Date {\r\n return new Date();\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.isDestroyed = true;\r\n }\r\n\r\n private getObservable() {\r\n return of(1).pipe(\r\n repeatWhen(notifications => {\r\n return notifications.pipe(\r\n flatMap((x, i) => {\r\n const sleep = i < 60 ? 1000 : 30000;\r\n return timer(sleep);\r\n })\r\n );\r\n }),\r\n takeWhile(_ => !this.isDestroyed),\r\n map((x, i) => this.elapsed())\r\n );\r\n }\r\n\r\n private elapsed(): string {\r\n const now = this.now().getTime();\r\n\r\n let delta = (now - this.value.getTime()) / 1000;\r\n\r\n if (this.isHence) {\r\n delta = delta * -1;\r\n }\r\n\r\n if (delta < 60) {\r\n const realDelta = Math.floor(delta);\r\n let timeAgo;\r\n if (this.isMinified) {\r\n timeAgo = `${realDelta}s`;\r\n } else {\r\n timeAgo = `${realDelta} segundo${(realDelta !== 1) ? 's' : ''}`;\r\n }\r\n return `${this.textBefore}${timeAgo}${this.textAfter}`;\r\n } else if (delta < 3600) {\r\n const realDelta = Math.floor(delta / 60);\r\n let timeAgo;\r\n if (this.isMinified) {\r\n timeAgo = `${realDelta}m`;\r\n } else {\r\n timeAgo = `${realDelta} minuto${(realDelta !== 1) ? 's' : ''}`;\r\n }\r\n return `${this.textBefore}${timeAgo}${this.textAfter}`;\r\n } else if (delta < 86400) {\r\n const realDelta = Math.floor(delta / 3600);\r\n let timeAgo;\r\n if (this.isMinified) {\r\n timeAgo = `${realDelta}h`;\r\n } else {\r\n timeAgo = `${realDelta} hora${(realDelta !== 1) ? 's' : ''}`;\r\n }\r\n return `${this.textBefore}${timeAgo}${this.textAfter}`;\r\n } else {\r\n const realDelta = Math.floor(delta / 86400);\r\n let timeAgo;\r\n if (this.isMinified) {\r\n timeAgo = `${realDelta}d`;\r\n } else {\r\n timeAgo = `${realDelta} dia${(realDelta !== 1) ? 's' : ''}`;\r\n }\r\n return `${this.textBefore}${timeAgo}${this.textAfter}`;\r\n }\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, HostListener, Input} from '@angular/core';\r\n\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Directive({selector: '[uiListItem]'})\r\nexport class UiListItemDirective implements AfterViewInit {\r\n @Input() uiListItem;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n const itemActive = this.uiListItem.querySelectorAll('.ui-list-item.active')[0];\r\n if (itemActive) {\r\n this.element.nativeElement.classList.toggle('expanded');\r\n this.uiListItem.classList.toggle('expanded');\r\n toggleExpand(this.uiListItem, this.element.nativeElement);\r\n }\r\n });\r\n }\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.element.nativeElement.classList.toggle('expanded');\r\n this.uiListItem.classList.toggle('expanded');\r\n toggleExpand(this.uiListItem, this.element.nativeElement);\r\n }\r\n}\r\n\r\nfunction toggleExpand(elementList, elementTrigger) {\r\n if (!elementList.style.height || elementList.style.height === '0px') {\r\n const height = getHeight(elementList);\r\n elementList.style.height = (elementList.style.maxHeight ? (height > elementList.style.maxHeight.replace('px', '') ? elementList.style.maxHeight : height + 'px') : height + 'px');\r\n let listItemGroup = UiElement.closest(elementList, '.ui-list-item-group');\r\n while (listItemGroup) {\r\n listItemGroup.style.height = getHeight(listItemGroup) + height + 'px';\r\n if (listItemGroup) {\r\n listItemGroup = UiElement.closest(listItemGroup, '.ui-list-item-group');\r\n }\r\n }\r\n } else {\r\n const backupHeight = parseInt(elementList.style.height.replace('px', ''), 10);\r\n elementList.style.height = '';\r\n\r\n let listItemGroup = UiElement.closest(elementList, '.ui-list-item-group');\r\n while (listItemGroup) {\r\n listItemGroup.style.height = getHeight(listItemGroup) - backupHeight + 'px';\r\n if (listItemGroup) {\r\n listItemGroup = UiElement.closest(listItemGroup, '.ui-list-item-group');\r\n }\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n const list = UiElement.closest(elementList, '.ui-list');\r\n if (list) {\r\n let overflow = list.parentNode;\r\n if (UiElement.is(overflow, 'ui-list')) {\r\n overflow = overflow.parentNode;\r\n }\r\n UiElement.animate(elementList, 'border-spacing', overflow.scrollTop, elementTrigger.offsetTop, 500, null, (tick) => {\r\n overflow.scrollTop = tick;\r\n });\r\n }\r\n }, 500);\r\n}\r\n\r\nfunction getHeight(element) {\r\n return Array.prototype.reduce.call(element.childNodes, (p, c) => p + (c.offsetHeight || 0), 0);\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCpf'\r\n})\r\nexport class UiCpfPipe implements PipeTransform {\r\n\r\n transform(value: any, mask?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n\r\n if (!mask) {\r\n value = value.padStart(11, '0');\r\n }\r\n\r\n if (value.length > 3) {\r\n value = value.substring(0, 3) + '.' + value.substring(3);\r\n }\r\n if (value.length > 7) {\r\n value = value.substring(0, 7) + '.' + value.substring(7);\r\n }\r\n if (value.length > 11) {\r\n value = value.substring(0, 11) + '-' + value.substring(11);\r\n }\r\n if (value.length > 14) {\r\n value = value.substring(0, 14);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiElement } from '../../providers/element.provider';\r\nimport { UiCpfPipe } from './cpf.pipe';\r\n\r\n@Directive({\r\n selector: '[uiMaskCpf][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCpfDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCpfDirective),\r\n multi: true\r\n }, UiCpfPipe]\r\n})\r\nexport class UiMaskCpfDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n beforeSelIndex;\r\n control: FormControl;\r\n input: boolean;\r\n loaded: boolean;\r\n symbolsPositions: number[] = [3, 7, 11, 14];\r\n onChange: Function;\r\n onTouched: Function;\r\n @Input() ngModel: any;\r\n @Input() padOnPaste: boolean = true;\r\n @Input('uiMaskCpf') uiMaskCpf;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cpfPipe: UiCpfPipe) {}\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n\r\n if (!this.input) {\r\n this.ngModel = this.ngModel ? this.ngModel.toString().padStart(11, '0') : '';\r\n this.elementRef.nativeElement.value = this.cpfPipe.transform(this.ngModel, true);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cpfPipe.transform(this.elementRef.nativeElement.value, true);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 11);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (this.input) {\r\n if (control.value && this.format(control.value).length < 11) {\r\n return {parse: true};\r\n }\r\n }\r\n\r\n if (this.uiMaskCpf === true && control.value && !this.cpfIsValid(control.value)) {\r\n return {parse: true};\r\n }\r\n\r\n this.input = false;\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n cpfIsValid(cpf) {\r\n if (cpf && cpf.length === 11) {\r\n let sum;\r\n let rest;\r\n sum = 0;\r\n if (cpf === '00000000000') {\r\n return false;\r\n }\r\n for (let i = 1; i <= 9; i++) {\r\n sum = sum + parseInt(cpf.substring(i - 1, i), 10) * (11 - i);\r\n }\r\n rest = (sum * 10) % 11;\r\n if ((rest === 10) || (rest === 11)) {\r\n rest = 0;\r\n }\r\n if (rest !== parseInt(cpf.substring(9, 10), 10)) {\r\n return false;\r\n }\r\n sum = 0;\r\n for (let i = 1; i <= 10; i++) {\r\n sum = sum + parseInt(cpf.substring(i - 1, i), 20) * (12 - i);\r\n }\r\n rest = (sum * 10) % 11;\r\n if ((rest === 10) || (rest === 11)) {\r\n rest = 0;\r\n }\r\n return rest === parseInt(cpf.substring(10, 11), 10);\r\n }\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = this.format(rawValue) !== this.ngModel;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n padLeft(event: any): void {\r\n if (this.padOnPaste) {\r\n event.preventDefault();\r\n\r\n let data: any;\r\n\r\n if (window['clipboardData']) {\r\n data = window['clipboardData'];\r\n } else if (event.clipboardData && event.clipboardData.getData) {\r\n data = event.clipboardData;\r\n }\r\n\r\n const text = data.getData('text').toString().replace(/[^0-9]+/g, '');\r\n this.renderViaInput(text.padStart(11, '0'));\r\n }\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCnpj'\r\n})\r\nexport class UiCnpjPipe implements PipeTransform {\r\n\r\n transform(value: any, mask?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n\r\n if(!mask) {\r\n value = value.padStart(14, '0');\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n if (value.length > 2) {\r\n value = value.substring(0, 2) + '.' + value.substring(2);\r\n }\r\n if (value.length > 6) {\r\n value = value.substring(0, 6) + '.' + value.substring(6);\r\n }\r\n if (value.length > 10) {\r\n value = value.substring(0, 10) + '/' + value.substring(10);\r\n }\r\n if (value.length > 15) {\r\n value = value.substring(0, 15) + '-' + value.substring(15);\r\n }\r\n if (value.length > 18) {\r\n value = value.substring(0, 18);\r\n }\r\n return value;\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator} from '@angular/forms';\r\nimport {UiCnpjPipe} from './cnpj.pipe';\r\nimport {UiElement} from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskCnpj][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCnpjDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCnpjDirective),\r\n multi: true\r\n }, UiCnpjPipe]\r\n})\r\nexport class UiMaskCnpjDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [2, 6, 10, 15, 18];\r\n @Input() ngModel: any;\r\n @Input() padOnPaste: boolean = true;\r\n @Input('uiMaskCnpj') uiMaskCnpj;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cnpjPipe: UiCnpjPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.ngModel = this.ngModel ? this.ngModel.toString().padStart(14, '0') : '';\r\n this.elementRef.nativeElement.value = this.cnpjPipe.transform(this.ngModel, true);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cnpjPipe.transform(this.elementRef.nativeElement.value, true);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 14);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (this.input) {\r\n if (control.value && this.format(control.value).length < 14) {\r\n return {parse: true};\r\n }\r\n }\r\n\r\n if (this.uiMaskCnpj === true && control.value && !this.cnpjIsValid(control.value)) {\r\n return {parse: true};\r\n }\r\n\r\n this.input = false;\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n cnpjIsValid(cnpj) {\r\n if (!(+cnpj) || cnpj.length !== 14) {\r\n return false;\r\n }\r\n let size = cnpj.length - 2;\r\n let numbers = cnpj.substring(0, size);\r\n const digits = cnpj.substring(size);\r\n let sum = 0;\r\n let pos = size - 7;\r\n for (let i = size; i >= 1; i--) {\r\n sum += numbers.charAt(size - i) * pos--;\r\n if (pos < 2) {\r\n pos = 9;\r\n }\r\n }\r\n let result = sum % 11 < 2 ? 0 : 11 - sum % 11;\r\n if (result.toString() !== digits.charAt(0)) {\r\n return false;\r\n }\r\n\r\n size = size + 1;\r\n numbers = cnpj.substring(0, size);\r\n sum = 0;\r\n pos = size - 7;\r\n for (let i = size; i >= 1; i--) {\r\n sum += numbers.charAt(size - i) * pos--;\r\n if (pos < 2) {\r\n pos = 9;\r\n }\r\n }\r\n result = sum % 11 < 2 ? 0 : 11 - sum % 11;\r\n\r\n return result.toString() === digits.charAt(1);\r\n }\r\n\r\n @HostListener('keydown')\r\n onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = this.format(rawValue) !== this.ngModel;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n padLeft(event: any): void {\r\n if (this.padOnPaste) {\r\n event.preventDefault();\r\n\r\n let data: any;\r\n\r\n if (window['clipboardData']) {\r\n data = window['clipboardData'];\r\n } else if (event.clipboardData && event.clipboardData.getData) {\r\n data = event.clipboardData;\r\n }\r\n\r\n const text = data.getData('text').toString().replace(/[^0-9]+/g, '');\r\n this.renderViaInput(text.padStart(14, '0'));\r\n }\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCep'\r\n})\r\nexport class UiCepPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n if (value.length > 5) {\r\n value = value.substring(0, 5) + '-' + value.substring(5);\r\n }\r\n if (value.length > 9) {\r\n value = value.substring(0, 9);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n}\r\n","import {Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, AfterViewInit, OnChanges} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator} from '@angular/forms';\r\nimport {UiCepPipe} from './cep.pipe';\r\nimport {UiElement} from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskCep][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCepDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCepDirective),\r\n multi: true\r\n }, UiCepPipe]\r\n})\r\nexport class UiMaskCepDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [5, 9];\r\n @Input() ngModel: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cepPipe: UiCepPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.cepPipe.transform(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cepPipe.transform(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 8);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < 8) {\r\n return {parse: true};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCepNovo'\r\n})\r\nexport class UiCepNovoPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^a-zA-Z0-9]+/g, '');\r\n if (value.length > 5) {\r\n value = value.substring(0, 5) + '-' + value.substring(5);\r\n }\r\n if (value.length > 9) {\r\n value = value.substring(0, 9);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n}\r\n","import {Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, AfterViewInit, OnChanges} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator} from '@angular/forms';\r\nimport {UiCepNovoPipe} from './cep-novo.pipe';\r\nimport {UiElement} from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskCepNovo][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCepNovoDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCepNovoDirective),\r\n multi: true\r\n }, UiCepNovoPipe]\r\n})\r\nexport class UiMaskCepNovoDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [5, 9];\r\n @Input() ngModel: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cepPipe: UiCepNovoPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.cepPipe.transform(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cepPipe.transform(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^a-zA-Z0-9]+/g, '');\r\n return value.substring(0, 8);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < 8) {\r\n return {parse: true};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiPhone'\r\n})\r\nexport class UiPhonePipe implements PipeTransform {\r\n\r\n transform(value: any, type?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n \r\n\r\n if (type === 'ddi') { // MASK COM PADRAO DDI\r\n if (value.length > 0) {\r\n value = '+' + value;\r\n } \r\n if (value[1] === '1') { // US +1 (000) 000-000-0000\r\n \r\n if (value.length > 2) {\r\n value = value.substring(0, 2) + ' (' + value.substring(2);\r\n }\r\n if (value.length > 7) {\r\n value = value.substring(0, 7) + ') ' + value.substring(7);\r\n }\r\n if (value.length > 12) {\r\n value = value.substring(0, 12) + '-' + value.substring(12);\r\n }\r\n if (value.length > 17) {\r\n value = value.substring(0, 17);\r\n }\r\n } else { // BR +55 (00) 00000-0000 \r\n \r\n if (value.length > 3) {\r\n value = value.substring(0, 3) + ' (' + value.substring(3);\r\n }\r\n if (value.length > 7) {\r\n value = value.substring(0, 7) + ') ' + value.substring(7);\r\n }\r\n if (value.length > 12 && value.length < 18) {\r\n value = value.substring(0, 13) + '-' + value.substring(13);\r\n } else if (value.length > 17) {\r\n value = value.substring(0, 14) + '-' + value.substring(14);\r\n }\r\n if (value.length > 17) {\r\n value = value.substring(0, 19);\r\n }\r\n } \r\n } else { // MASK COM PADRÃO DEFAULT (00) 00000-0000 \r\n if (value.length > 0) {\r\n value = '(' + value;\r\n }\r\n if (value.length > 3) {\r\n value = value.substring(0, 3) + ') ' + value.substring(3);\r\n }\r\n if (value.length > 9 && value.length < 14) {\r\n value = value.substring(0, 9) + '-' + value.substring(9);\r\n } else if (value.length > 13) {\r\n value = value.substring(0, 10) + '-' + value.substring(10);\r\n }\r\n if (value.length > 15) {\r\n value = value.substring(0, 15);\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input,\r\n Output, OnChanges, OnInit\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiPhonePipe } from './phone.pipe';\r\nimport { UiElement } from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskPhone][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskPhoneDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskPhoneDirective),\r\n multi: true\r\n }, UiPhonePipe]\r\n})\r\nexport class UiMaskPhoneDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges, OnInit {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[];\r\n maxLength: number;\r\n @Input() ngModel: any;\r\n @Input() uiMaskPhone: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public phonePipe: UiPhonePipe) {\r\n }\r\n\r\n ngOnInit() {\r\n switch (this.uiMaskPhone) {\r\n case 'ddi':\r\n this.symbolsPositions = [0, 12, 14, 17];\r\n break;\r\n default:\r\n this.maxLength = 11;\r\n this.symbolsPositions = [0, 9, 11, 14];\r\n }\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.uiMaskPhone === 'ddi' && rawValue) {\r\n const firstChar = rawValue.toString().substring(0, 1);\r\n this.maxLength = firstChar === '1' ? 11 : 13;\r\n }\r\n\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n\r\n this.elementRef.nativeElement.value = this.phonePipe.transform(this.ngModel, this.uiMaskPhone || '');\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.phonePipe.transform(this.elementRef.nativeElement.value, this.uiMaskPhone || '');\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, this.maxLength);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < this.maxLength - 1) {\r\n return { parse: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n let afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n\r\n if (this.uiMaskPhone === 'ddi') {\r\n if (this.ngModel && this.ngModel.substring(0, 1) === '1') {\r\n this.maxLength = 11;\r\n if (afterSelIndex === 3) {\r\n this.beforeSelIndex = 4;\r\n afterSelIndex = 5;\r\n }\r\n } else {\r\n this.maxLength = 13;\r\n if (afterSelIndex === 4) {\r\n this.beforeSelIndex = 5;\r\n afterSelIndex = 6;\r\n }\r\n }\r\n\r\n if (afterSelIndex === 8) {\r\n this.beforeSelIndex = 9;\r\n afterSelIndex = 10;\r\n }\r\n } else {\r\n if (afterSelIndex === 4) {\r\n this.beforeSelIndex = 5;\r\n afterSelIndex = 6;\r\n }\r\n }\r\n\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import {Component, Input, OnChanges, ViewEncapsulation} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-list',\r\n templateUrl: 'list.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class UiListComponent implements OnChanges {\r\n @Input() list: any;\r\n @Input('item-model') itemModel: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnChanges() {\r\n if (!this.list) {\r\n console.error('É obrigatório fornecer a model \"list\"');\r\n return false;\r\n }\r\n\r\n if (!this.itemModel) {\r\n this.itemModel = {\r\n id: 'id',\r\n parentId: 'parentId',\r\n name: 'name',\r\n url: 'url',\r\n icon: 'icon'\r\n };\r\n }\r\n\r\n this.list.forEach(item => {\r\n Object.keys(this.itemModel).forEach((key) => {\r\n const old_key = this.itemModel[key];\r\n renameObjectKey(item, old_key, key);\r\n });\r\n });\r\n\r\n this.list = iteratePristineMenu(this.list);\r\n }\r\n}\r\n\r\nfunction iteratePristineMenu(allItems) {\r\n const remainingList = [];\r\n const newMenu = allItems.filter(function (item) {\r\n if (item.parentId !== null) {\r\n remainingList.push(item);\r\n }\r\n return item.parentId === null;\r\n });\r\n return iterateOptionsMenu(newMenu, remainingList)[0];\r\n}\r\n\r\nfunction iterateOptionsMenu(list, fullList) {\r\n let remainingList;\r\n for (let i = 0; i < list.length; i++) {\r\n remainingList = [];\r\n const target = list[i];\r\n const subMenus = fullList.filter(item => {\r\n if (item.parentId !== target.id) {\r\n remainingList.push(item);\r\n }\r\n return item.parentId === target.id;\r\n });\r\n if (subMenus.length) {\r\n target.childs = subMenus;\r\n remainingList = iterateOptionsMenu(target.childs, remainingList)[1];\r\n }\r\n }\r\n return [list, remainingList];\r\n}\r\n\r\nfunction renameObjectKey(obj, oldName, newName) {\r\n if (!obj.hasOwnProperty(oldName) || oldName === newName) {\r\n return false;\r\n }\r\n\r\n obj[newName] = obj[oldName];\r\n delete obj[oldName];\r\n return true;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {UiDialogComponent} from './dialog.component';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\nlet viewRef;\r\n\r\n@Injectable()\r\nexport class UiDialog {\r\n\r\n public static show(dialog: UiDialogComponent, config?: any) {\r\n UiDialog.hide();\r\n config = config || {};\r\n\r\n if (config.clickOverlayToClose === undefined) {\r\n config.clickOverlayToClose = true;\r\n } else if (config.clickOverlayToClose) {\r\n config.clickOverlayToClose = JSON.parse(config.clickOverlayToClose);\r\n }\r\n\r\n viewRef = dialog.templateRef.createEmbeddedView(dialog.templateRef);\r\n viewRef.detectChanges();\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n UiDialog.open(rootNode, config);\r\n }\r\n });\r\n }\r\n\r\n private static open(element, config) {\r\n setTimeout(() => {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (config.darkClass) {\r\n element.classList.add(config.darkClass);\r\n }\r\n if (config.themeClass) {\r\n element.classList.add(config.themeClass);\r\n }\r\n if (config.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (config.cardSize) {\r\n element.querySelector('ui-card').style.maxWidth = config.cardSize + 'px';\r\n element.querySelector('ui-card').style.width = '100%';\r\n }\r\n\r\n if (!config.transparentOverlay && fabs.length) {\r\n fabs.classList.add('hide');\r\n }\r\n\r\n if (config.clickOverlayToClose) {\r\n element.querySelector('.overlay').addEventListener('click', () => {\r\n if (typeof config.onClose === 'function') {\r\n config.onClose();\r\n }\r\n UiDialog.hide();\r\n });\r\n }\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n document.body.style.overflowY = 'hidden';\r\n });\r\n }\r\n\r\n public static hide() {\r\n if (viewRef) {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (fabs.length) {\r\n fabs.classList.remove('hide');\r\n }\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => {\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.remove) {\r\n rootNode.remove();\r\n } else {\r\n rootNode.parentNode.removeChild(rootNode);\r\n }\r\n });\r\n viewRef.destroy();\r\n viewRef = null;\r\n }, 280);\r\n\r\n document.body.style.overflowY = '';\r\n }\r\n }\r\n\r\n}\r\n","import {Component, Input, OnInit, OnChanges, Output, EventEmitter} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-list-items',\r\n templateUrl: 'items.component.html'\r\n})\r\n\r\nexport class UiListItemsComponent implements OnInit {\r\n @Input() items: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-list-item',\r\n templateUrl: 'item.component.html'\r\n})\r\n\r\nexport class UiListItemComponent implements OnInit {\r\n @Input() item: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-slider[value]',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss']\r\n})\r\nexport class UiSliderComponent implements OnInit, AfterViewInit, OnChanges {\r\n multiHandle: boolean;\r\n valueModel;\r\n mouseDown: boolean;\r\n percentageBlock: number;\r\n valueElement: HTMLElement;\r\n getPercentageLeft: Function;\r\n getPercentageRight: Function;\r\n\r\n @Input() hideBalloon: boolean;\r\n @Input() disabled: boolean;\r\n @Input() begin: number;\r\n @Input() end: number;\r\n @Input() direction: string;\r\n @Input() value: number;\r\n @Input() range: number[];\r\n @Input() color: string;\r\n @Input('text-color') textColor: string;\r\n @Output() valueChange: EventEmitter<number> = new EventEmitter();\r\n\r\n @Input('view-format') viewFormat: Function;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n if (!this.viewFormat) {\r\n this.viewFormat = value => value;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.percentageBlock = 100 / (this.range.length - 1);\r\n this.value = this.value || this.range[0];\r\n this.valueModel = this.closestNumber(this.value).index || this.range[0];\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.value && !changes.value.firstChange && !this.mouseDown) {\r\n this.valueModel = this.closestNumber(changes.value.currentValue).index;\r\n }\r\n if (changes.color && !changes.color.firstChange && !this.mouseDown) {\r\n this.color = changes.color.currentValue;\r\n }\r\n if (changes.textColor && !changes.textColor.firstChange && !this.mouseDown) {\r\n this.textColor = changes.textColor.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.valueElement = this.elementRef.nativeElement.querySelectorAll('.thumb-container')[0];\r\n this.registerEventsListeners();\r\n }\r\n\r\n registerEventsListeners() {\r\n UiElement.on(this.valueElement, 'mousedown touchstart', () => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.mouseDown = true;\r\n this.toggleTackOn(true);\r\n this.toggleBalloon(true, 0);\r\n\r\n this.valueElement.classList.add('active');\r\n });\r\n\r\n UiElement.on(document, 'mouseup touchend', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.valueElement.classList.remove('active');\r\n\r\n if (this.mouseDown && (e.pageX || e.originalEvent)) {\r\n this.change(e, true);\r\n }\r\n\r\n this.mouseDown = false;\r\n this.toggleBalloon();\r\n this.toggleTackOn();\r\n });\r\n\r\n UiElement.on(document, 'mousemove touchmove', e => {\r\n if (!this.mouseDown || this.disabled) {\r\n return;\r\n }\r\n\r\n this.change(e);\r\n });\r\n }\r\n\r\n change(event, mouseUp?) {\r\n const currentPosition = event.pageX || (event.touches ? event.touches[0].pageX : null) || (event.changedTouches ? event.changedTouches[0].pageX : null);\r\n let position = this.getPositionInIndex(currentPosition);\r\n const newValue = this.closestNumber(this.range[Math.round(position)]);\r\n\r\n if (mouseUp) {\r\n position = newValue.index;\r\n }\r\n\r\n this.value = newValue.value;\r\n this.valueModel = position;\r\n this.valueChange.emit(this.value);\r\n\r\n }\r\n\r\n toggleBalloon(active?, right?) {\r\n const balloon = this.elementRef.nativeElement.querySelectorAll('.balloon-wrap')[0];\r\n\r\n if (balloon) {\r\n if (active) {\r\n balloon.style.right = typeof right === 'number' ? right : '';\r\n balloon.classList.add('active');\r\n } else {\r\n balloon.classList.remove('active');\r\n }\r\n }\r\n }\r\n\r\n toggleTackOn(active?) {\r\n const trackOn = this.elementRef.nativeElement.querySelectorAll('.track.on')[0];\r\n const method = active ? 'add' : 'remove';\r\n trackOn.classList[method]('no-transition');\r\n }\r\n\r\n getPositionInIndex(position) {\r\n const trackOff = this.elementRef.nativeElement.querySelectorAll('.track.off')[0];\r\n position -= UiElement.position(trackOff).left;\r\n position = position / trackOff.clientWidth * 100;\r\n position = position > 100 ? 100 : position < 0 ? 0 : position;\r\n return ((this.range.length - 1) / 100) * position;\r\n }\r\n\r\n closestNumber(number) {\r\n let current = this.range[0];\r\n let difference = Math.abs(number - current);\r\n let itemIndex = 0;\r\n let newDifference;\r\n for (let i = 0; i < this.range.length; i++) {\r\n newDifference = Math.abs(number - this.range[i]);\r\n if (newDifference < difference) {\r\n difference = newDifference;\r\n current = this.range[i];\r\n itemIndex = i;\r\n }\r\n }\r\n\r\n return {index: itemIndex, value: current};\r\n }\r\n\r\n getPercentage() {\r\n return this.percentageBlock * this.valueModel;\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-slider[begin][end]',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss']\r\n})\r\nexport class UiSliderMultiHandleComponent implements OnInit, AfterViewInit, OnChanges {\r\n\r\n multiHandle: boolean;\r\n beginModel;\r\n endModel;\r\n direction: string;\r\n mouseDown: boolean;\r\n percentageBlock: number;\r\n beginElement: HTMLElement;\r\n endElement: HTMLElement;\r\n thumbs: HTMLElement;\r\n bodyElement: HTMLElement;\r\n htmlElement: HTMLElement;\r\n getPercentage: Function;\r\n\r\n @Input() hideBalloon: boolean;\r\n @Input() disabled: boolean;\r\n @Input() begin: number;\r\n @Input() end: number;\r\n @Input() value;\r\n @Input() range: number[];\r\n @Input() color: string;\r\n @Input('text-color') textColor: string;\r\n @Output() beginChange: EventEmitter<number> = new EventEmitter();\r\n @Output() endChange: EventEmitter<number> = new EventEmitter();\r\n\r\n @Input('view-format') viewFormat: Function;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n if (!this.viewFormat) {\r\n this.viewFormat = value => value;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.bodyElement = document.body;\r\n this.htmlElement = <HTMLElement>document.documentElement;\r\n\r\n this.multiHandle = true;\r\n this.percentageBlock = 100 / (this.range.length - 1);\r\n this.begin = this.begin || this.range[0];\r\n this.end = this.end || this.range[0];\r\n this.beginModel = this.closestNumber(this.begin).index || this.range[0];\r\n this.endModel = this.closestNumber(this.end).index || this.range[0];\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.begin && !changes.begin.firstChange && !this.mouseDown) {\r\n this.beginModel = this.closestNumber(this.begin).index;\r\n }\r\n if (changes.end && !changes.end.firstChange && !this.mouseDown) {\r\n this.endModel = this.closestNumber(this.end).index;\r\n }\r\n if (changes.color && !changes.color.firstChange && !this.mouseDown) {\r\n this.color = changes.color.currentValue;\r\n }\r\n if (changes.textColor && !changes.textColor.firstChange && !this.mouseDown) {\r\n this.textColor = changes.textColor.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.thumbs = this.elementRef.nativeElement.querySelectorAll('.thumb-container');\r\n this.beginElement = this.thumbs[0];\r\n this.endElement = this.thumbs[1];\r\n\r\n this.registerEventsListeners();\r\n }\r\n\r\n registerEventsListeners() {\r\n UiElement.on(this.beginElement, 'mousedown touchstart', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n e.stopImmediatePropagation();\r\n this.direction = 'begin';\r\n this.toggleBalloon(true);\r\n\r\n this.beginElement.classList.add('active');\r\n this.endElement.classList.remove('active');\r\n });\r\n\r\n UiElement.on(this.thumbs, 'mousedown touchstart', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n e.stopImmediatePropagation();\r\n this.mouseDown = true;\r\n this.toggleTackOn(true);\r\n UiElement.disableScroll();\r\n });\r\n\r\n UiElement.on(this.endElement, 'mousedown touchstart', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n e.stopImmediatePropagation();\r\n this.direction = 'end';\r\n this.toggleBalloon(true, 0);\r\n\r\n this.endElement.classList.add('active');\r\n this.beginElement.classList.remove('active');\r\n });\r\n\r\n UiElement.on(document, 'mouseup touchend', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.beginElement.classList.remove('active');\r\n this.endElement.classList.remove('active');\r\n\r\n if (this.mouseDown && (e.pageX || e.originalEvent)) {\r\n this.change(e, true);\r\n }\r\n\r\n this.mouseDown = false;\r\n this.toggleBalloon();\r\n this.toggleTackOn();\r\n\r\n UiElement.enableScroll();\r\n\r\n });\r\n\r\n UiElement.on(document, 'mousemove touchmove', e => {\r\n if (!this.mouseDown || this.disabled) {\r\n return;\r\n }\r\n this.change(e);\r\n });\r\n }\r\n\r\n change(event, mouseUp?) {\r\n const currentPosition = event.pageX || (event.touches ? event.touches[0].pageX : null) || (event.changedTouches ? event.changedTouches[0].pageX : null);\r\n let position = this.getPositionInIndex(currentPosition);\r\n const newValue = this.closestNumber(this.range[Math.round(position)]);\r\n\r\n if (mouseUp) {\r\n position = newValue.index;\r\n }\r\n\r\n if (this.direction === 'begin' && this.beginModel >= this.endModel) {\r\n this[`${this.direction}Model`] = newValue.index;\r\n this.direction = 'end';\r\n UiElement.trigger(this.endElement, 'mousedown');\r\n this.endElement.focus();\r\n } else if (this.direction === 'end' && this.endModel < this.beginModel) {\r\n this[`${this.direction}Model`] = newValue.index;\r\n this.direction = 'begin';\r\n UiElement.trigger(this.beginElement, 'mousedown');\r\n this.beginElement.focus();\r\n }\r\n\r\n this[this.direction] = newValue.value;\r\n this[`${this.direction}Model`] = position;\r\n this[`${this.direction}Change`].emit(this[this.direction]);\r\n\r\n }\r\n\r\n toggleBalloon(active?, right?) {\r\n const balloon = this.elementRef.nativeElement.querySelectorAll('.balloon-wrap')[0];\r\n\r\n if (balloon) {\r\n if (active) {\r\n balloon.style.right = typeof right === 'number' ? right : '';\r\n balloon.classList.add('active');\r\n } else {\r\n balloon.classList.remove('active');\r\n }\r\n }\r\n }\r\n\r\n toggleTackOn(active?) {\r\n const trackOn = this.elementRef.nativeElement.querySelectorAll('.track.on')[0];\r\n const method = active ? 'add' : 'remove';\r\n trackOn.classList[method]('no-transition');\r\n }\r\n\r\n getPositionInIndex(position) {\r\n const trackOff = this.elementRef.nativeElement.querySelectorAll('.track.off')[0];\r\n position -= UiElement.position(trackOff).left;\r\n position = position / trackOff.clientWidth * 100;\r\n position = position > 100 ? 100 : position < 0 ? 0 : position;\r\n return ((this.range.length - 1) / 100) * position;\r\n }\r\n\r\n closestNumber(number) {\r\n let current = this.range[0];\r\n let difference = Math.abs(number - current);\r\n let itemIndex = 0;\r\n let newDifference;\r\n for (let i = 0; i < this.range.length; i++) {\r\n newDifference = Math.abs(number - this.range[i]);\r\n if (newDifference < difference) {\r\n difference = newDifference;\r\n current = this.range[i];\r\n itemIndex = i;\r\n }\r\n }\r\n\r\n return {index: itemIndex, value: current};\r\n }\r\n\r\n getPercentageLeft() {\r\n return this.percentageBlock * this.beginModel;\r\n }\r\n\r\n getPercentageRight() {\r\n return this.percentageBlock * Math.abs(this.endModel - (this.range.length - 1));\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UiInfiniteLoadService {\r\n readyToCheck: boolean;\r\n func;\r\n element;\r\n listener;\r\n\r\n constructor() {\r\n }\r\n\r\n register(element, func, orientation = 'vertical') {\r\n this.element = element;\r\n this.func = func;\r\n\r\n this.listener = () => {\r\n if (orientation === 'vertical') {\r\n const heightOffset = (this.element.scrollHeight || document.documentElement.scrollHeight) - (this.element.clientHeight || this.element.innerHeight);\r\n const scrollTop = this.element.scrollTop || this.element.scrollY;\r\n const safeZone = heightOffset * 0.1;\r\n\r\n if (scrollTop >= heightOffset - safeZone) {\r\n func();\r\n }\r\n } else {\r\n const widthOffset = (this.element.scrollWidth || document.documentElement.scrollWidth) - (this.element.clientWidth || this.element.innerWidth);\r\n const scrollLeft = this.element.scrollLeft || this.element.scrollX;\r\n const safeZone = widthOffset * 0.1;\r\n\r\n if (scrollLeft >= widthOffset - safeZone) {\r\n func();\r\n }\r\n }\r\n };\r\n\r\n this.element.addEventListener('scroll', this.listener);\r\n this.readyToCheck = true;\r\n }\r\n\r\n destroy() {\r\n this.element.removeEventListener('scroll', this.listener);\r\n this.readyToCheck = false;\r\n }\r\n}\r\n\r\n","import {AfterViewInit, Directive, ElementRef, Output, DoCheck, Input, EventEmitter} from '@angular/core';\r\nimport {UiInfiniteLoadService} from './infinite-load.service';\r\n\r\n@Directive({\r\n selector: '[uiInfiniteLoad]'\r\n})\r\nexport class UiInfiniteLoadDirective implements AfterViewInit, DoCheck {\r\n @Output() uiInfiniteLoad: EventEmitter<any> = new EventEmitter();\r\n @Input() orientation;\r\n\r\n constructor(private element: ElementRef, private infiniteLoad: UiInfiniteLoadService) {\r\n this.orientation = 'vertical';\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.infiniteLoad.register(this.element.nativeElement, () => {\r\n this.uiInfiniteLoad.emit();\r\n }, this.orientation);\r\n }\r\n\r\n ngDoCheck() {\r\n if (this.infiniteLoad.listener) {\r\n this.infiniteLoad.listener();\r\n }\r\n }\r\n}\r\n","import {Component, EventEmitter} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss']\r\n})\r\nexport class UiAutocompleteComponent {\r\n ngModel: any;\r\n list: any[];\r\n loading: boolean;\r\n primary: string;\r\n secondary: string;\r\n accentClass: boolean;\r\n focusedIndex: number;\r\n hideNotFound: boolean;\r\n selectChange: EventEmitter<any>;\r\n loadMore: EventEmitter<any>;\r\n\r\n selectItem(item) {\r\n this.selectChange.emit(item);\r\n }\r\n\r\n loadMoreEmit() {\r\n setTimeout(() => this.loadMore.emit());\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n Directive,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n EventEmitter,\r\n HostListener,\r\n Injector,\r\n Input,\r\n OnChanges, OnInit,\r\n Output, forwardRef\r\n} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiAutocompleteComponent} from './autocomplete.component';\r\nimport {FormControl, NG_VALIDATORS} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[uiAutocomplete]',\r\n providers: [{\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiAutocompleteDirective),\r\n multi: true\r\n }]\r\n})\r\nexport class UiAutocompleteDirective implements AfterViewInit, OnInit, OnChanges {\r\n\r\n @Input() list: any[];\r\n @Input() ngModel: any;\r\n @Input() modelValue: any;\r\n @Input('model-property') modelProperty: any;\r\n @Input() select: Function;\r\n @Input() primary: string;\r\n @Input() secondary: string;\r\n @Input() loading: boolean;\r\n @Input('theme-class') themeClass: string;\r\n @Input() hideNotFound: boolean;\r\n @Input() hidePanel: boolean;\r\n @Output() loadMore: EventEmitter<any> = new EventEmitter();\r\n @Output() loadMoreEmmiter: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n @Output() modelValueChange: EventEmitter<any> = new EventEmitter();\r\n @Output() selectChange: EventEmitter<any> = new EventEmitter();\r\n @Output() requiredChange: EventEmitter<any> = new EventEmitter();\r\n\r\n focusedIndex: number;\r\n accentClass: boolean;\r\n componentRef: any;\r\n componentElement: HTMLElement;\r\n wrapElement: HTMLElement;\r\n control: FormControl;\r\n onChange: Function;\r\n onTouched: Function;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector,\r\n private elementRef: ElementRef) {\r\n }\r\n\r\n public ngOnInit() {\r\n this.selectChange.subscribe(item => {\r\n this.ngModel = item[this.primary] || item;\r\n this.modelValue = this.modelProperty && item && typeof item === 'object' ? item[this.modelProperty] : item;\r\n this.ngModelChange.emit(this.ngModel);\r\n this.modelValueChange.emit(this.modelValue);\r\n if (this.select) {\r\n this.select(item);\r\n }\r\n this.elementRef.nativeElement.blur();\r\n this.close();\r\n });\r\n\r\n }\r\n\r\n public ngAfterViewInit() {\r\n UiElement.on(window, 'click resize', e => {\r\n if (this.componentRef) {\r\n if (!(UiElement.is(e.target, '.wrap-autocomplete') || UiElement.closest(e.target, '.wrap-autocomplete') || UiElement.is(e.target, '.overlay') || e.target === this.elementRef.nativeElement)) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public ngOnChanges(changes) {\r\n if (changes.ngModel && !changes.ngModel.firstChange && this.componentRef) {\r\n this.componentRef.instance.ngModel = changes.ngModel.currentValue;\r\n }\r\n if (changes.list && !changes.list.firstChange && this.componentRef) {\r\n this.componentRef.instance.list = changes.list.currentValue;\r\n setTimeout(() => {\r\n const position = UiElement.position(this.elementRef.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top + 1\r\n };\r\n this.setPosition(coordinate, this.componentElement);\r\n });\r\n }\r\n if (changes.loading && !changes.loading.firstChange && this.componentRef) {\r\n this.componentRef.instance.loading = changes.loading.currentValue;\r\n }\r\n }\r\n\r\n private createComponent() {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiAutocompleteComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n }\r\n\r\n private getComponentAsElement(): HTMLElement {\r\n return (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n private setInstances(component, componentRef): void {\r\n const keysComponent = ['ngModel', 'list', 'primary', 'secondary', 'selectChange', 'loading', 'accentClass', 'loadMore', 'hideNotFound'];\r\n\r\n keysComponent.forEach(key => {\r\n componentRef.instance[key] = component[key];\r\n });\r\n }\r\n\r\n private render(element, coordinate): void {\r\n this.createWrapElement();\r\n this.wrapElement.appendChild(element);\r\n document.body.appendChild(this.wrapElement);\r\n\r\n\r\n setTimeout(() => {\r\n this.setPosition(coordinate, element);\r\n this.wrapElement.classList.add('open');\r\n });\r\n }\r\n\r\n private createWrapElement() {\r\n this.wrapElement = document.createElement('div');\r\n this.wrapElement.classList.add('wrap-autocomplete');\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('overlay');\r\n\r\n if (this.themeClass) {\r\n this.wrapElement.classList.add(this.themeClass);\r\n }\r\n\r\n UiElement.css(this.wrapElement, 'top', 0);\r\n UiElement.css(this.wrapElement, 'left', 0);\r\n UiElement.css(this.wrapElement, 'visibility', 'hidden');\r\n UiElement.css(this.wrapElement, 'transition', 'none');\r\n this.wrapElement.appendChild(overlay);\r\n }\r\n\r\n private setFocusIndex(index) {\r\n this.componentRef.instance.focusedIndex = index;\r\n }\r\n\r\n private close() {\r\n if (this.wrapElement) {\r\n this.wrapElement.classList.remove('open');\r\n setTimeout(() => {\r\n if (this.componentRef) {\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n this.componentRef = null;\r\n this.wrapElement.remove();\r\n }\r\n }, 280);\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.focusedIndex = undefined;\r\n\r\n this.accentClass = this.elementRef.nativeElement.classList.contains('accent');\r\n\r\n const position = UiElement.position(this.elementRef.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top + 1\r\n };\r\n\r\n if (!this.componentRef) {\r\n this.createComponent();\r\n this.setInstances(this, this.componentRef);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n this.componentElement = this.getComponentAsElement();\r\n this.render(this.componentElement, coordinate);\r\n }\r\n }\r\n\r\n private setPosition(coordinate, element) {\r\n const wrap = element.querySelector('.suggestions-wrap');\r\n const maxHeightWrap = !!this.secondary ? 370 : 240;\r\n const horizontalCoveringArea = coordinate.x + wrap.clientWidth;\r\n const verticalCoveringArea = coordinate.y + (wrap.clientHeight > maxHeightWrap ? maxHeightWrap : wrap.clientHeight);\r\n const windowWidth = window.innerWidth + (document.body.scrollLeft || window.scrollX || window.pageXOffset);\r\n const windowHeight = window.innerHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (wrap.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = coordinate.y - ((wrap.clientHeight > maxHeightWrap ? maxHeightWrap : wrap.clientHeight) + this.elementRef.nativeElement.clientHeight) - 14; // 14 = label focus\r\n }\r\n\r\n UiElement.css(this.wrapElement, 'top', `${coordinate.y + this.elementRef.nativeElement.clientHeight}px`);\r\n UiElement.css(this.wrapElement, 'left', `${coordinate.x}px`);\r\n UiElement.css(this.wrapElement, 'width', `${this.elementRef.nativeElement.clientWidth}px`);\r\n UiElement.css(this.wrapElement, 'visibility', '');\r\n UiElement.css(this.wrapElement, 'transition', '');\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (this.elementRef.nativeElement.hasAttribute('required') && !control.value) {\r\n return {required: true};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n @HostListener('input') onInput() {\r\n if (!(this.ngModel && this.modelValue) || (this.ngModel !== this.modelValue)) {\r\n this.modelValue = null;\r\n this.modelValueChange.emit(this.modelValue);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n @HostListener('focus') onFocus() {\r\n if (this.hidePanel) {\r\n return;\r\n }\r\n\r\n this.initialize();\r\n }\r\n\r\n @HostListener('click') onClick() {\r\n if (this.hidePanel) {\r\n return;\r\n }\r\n\r\n this.initialize();\r\n }\r\n\r\n @HostListener('blur', ['$event']) onBlur(e) {\r\n if (!this.hidePanel && e.relatedTarget !== this.componentElement.querySelector('ui-card.suggestions')) {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event']) onKeydown(e) {\r\n if (!this.componentRef) {\r\n return;\r\n }\r\n if (typeof this.focusedIndex === 'undefined') {\r\n this.focusedIndex = -1;\r\n }\r\n switch (e.which) {\r\n case 8:\r\n case 37:\r\n this.elementRef.nativeElement.focus();\r\n break;\r\n case 38:\r\n this.focusedIndex = !this.list.length ? null : this.focusedIndex ? this.focusedIndex - 1 : this.list.length - 1;\r\n this.setFocusIndex(this.focusedIndex);\r\n break;\r\n case 40:\r\n this.focusedIndex = !this.list.length ? null : this.list.length - 1 === this.focusedIndex ? 0 : this.focusedIndex + 1;\r\n this.setFocusIndex(this.focusedIndex);\r\n break;\r\n case 13:\r\n if (this.list && typeof this.focusedIndex === 'number' && this.focusedIndex !== -1) {\r\n this.selectChange.emit(this.list[this.focusedIndex]);\r\n }\r\n event.preventDefault();\r\n break;\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input,\r\n Output, OnChanges, OnInit\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[uiMaskInteger][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskIntegerDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskIntegerDirective),\r\n multi: true\r\n }]\r\n})\r\nexport class UiMaskIntegerDirective implements ControlValueAccessor, AfterViewInit, OnChanges, OnInit {\r\n loaded: boolean;\r\n input: boolean;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n @Input() ngModel: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n @Input() uiMaskInteger: any;\r\n @Input() min: number;\r\n @Input() max: number;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (typeof changes.max !== 'undefined') {\r\n this.max = changes.max.currentValue;\r\n }\r\n if (typeof changes.min !== 'undefined') {\r\n this.min = changes.min.currentValue;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n switch (this.uiMaskInteger) {\r\n case 'smallint':\r\n this.min = -32768;\r\n this.max = 32768;\r\n break;\r\n case 'bigint':\r\n this.min = -9223372036854775808;\r\n this.max = 9223372036854775807;\r\n break;\r\n case 'integer':\r\n this.min = -2147483648 ;\r\n this.max = 2147483647;\r\n break;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n const valueConverted = parseInt(this.ngModel, 10);\r\n this.elementRef.nativeElement.value = typeof this.ngModel === 'number' ? this.ngModel : !Number.isNaN(valueConverted) ? valueConverted : '';\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.ngModel || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n const newValue = value.toString().replace(/[^0-9]+/g, '');\r\n return newValue || undefined;\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (typeof this.min !== 'undefined' && control.value && this.format(control.value) < this.min) {\r\n return {min: true};\r\n }\r\n\r\n if (typeof this.max !== 'undefined' && control.value && this.format(control.value) > this.max) {\r\n return {max: true};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput($event): void {\r\n const rawValue = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit\r\n} from '@angular/core';\r\n\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-tabs',\r\n templateUrl: 'tabs.component.html',\r\n styleUrls: ['tabs.component.scss']\r\n})\r\n/**/\r\nexport class UiTabsComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n showLeftArrow: boolean;\r\n showRightArrow: boolean;\r\n onScroll;\r\n internetExplorer: boolean;\r\n\r\n @Input('infinite-load') infiniteLoad;\r\n @Input() watch;\r\n @Input() disabled;\r\n\r\n constructor(private element: ElementRef) {\r\n this.onScroll = () => this.tabsScroll(0);\r\n this.disabled = [];\r\n }\r\n\r\n ngOnInit() {\r\n this.internetExplorer = navigator.userAgent.includes('Trident');\r\n }\r\n\r\n ngAfterViewInit() {\r\n const tabs = this.element.nativeElement.querySelectorAll('.tab');\r\n const indicator = this.element.nativeElement.querySelector('.indicator');\r\n\r\n for (let i = 0; i < tabs.length; i++) {\r\n if (tabs[i].classList.contains('disabled')) {\r\n tabs[i].classList.remove('disabled');\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.disabled.length; i++) {\r\n tabs[this.disabled[i]].classList.add('disabled');\r\n }\r\n\r\n const self = this;\r\n\r\n let timeout;\r\n\r\n function scrollToTab(tab, withoutAnimation?) {\r\n for (let i = 0; i < tabs.length; i++) {\r\n const tab2 = tabs[i];\r\n if (tab2 !== tab && tab2.classList.contains('selected')) {\r\n UiElement.css(indicator, 'left', UiElement.offset(tab2).left + 'px');\r\n UiElement.css(indicator, 'width', tab2.offsetWidth + 'px');\r\n tab2.classList.remove('selected');\r\n }\r\n }\r\n\r\n UiElement.css(indicator, 'left', UiElement.offset(tab).left + 'px');\r\n UiElement.css(indicator, 'width', tab.offsetWidth + 'px');\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n tab.classList.add('selected');\r\n UiElement.css(indicator, 'width', '');\r\n UiElement.css(indicator, 'left', '');\r\n }, 280);\r\n\r\n const overflow = self.element.nativeElement.querySelector('.overflow');\r\n\r\n self.tabsScroll(UiElement.offset(tab).left - overflow.scrollLeft, withoutAnimation);\r\n }\r\n\r\n for (let i = 0; i < tabs.length; i++) {\r\n const tab = tabs[i];\r\n this.element.nativeElement.addEventListener('click', (e) => {\r\n if (e.target === tab && !e.target.classList.contains('disabled')) {\r\n scrollToTab(tab);\r\n }\r\n });\r\n }\r\n\r\n const tabSelected = this.element.nativeElement.querySelector('.tab.first-selected');\r\n if (tabSelected) {\r\n scrollToTab(tabSelected, true);\r\n // tabSelected.nativeElement.click();\r\n }\r\n\r\n UiElement.trigger(window, 'scroll');\r\n UiElement.on(window, 'scroll resize', this.onScroll);\r\n }\r\n\r\n ngOnChanges(changes) {\r\n setTimeout(() => {\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n UiElement.off(window, 'scroll resize', this.onScroll);\r\n }\r\n\r\n tabsScroll(value?, withoutAnimation?) {\r\n const overflow = this.element.nativeElement.querySelector('.overflow');\r\n\r\n let scrollLeft = overflow.scrollLeft;\r\n\r\n const maxScrollLeft = overflow.scrollWidth - overflow.clientWidth;\r\n\r\n const animationTiming = withoutAnimation || this.internetExplorer ? 1 : 280\r\n\r\n if (typeof value !== 'undefined') {\r\n UiElement.animate(overflow, 'borderSpacing', scrollLeft, scrollLeft + value, animationTiming, null, (tick) => {\r\n overflow.scrollLeft = tick;\r\n\r\n scrollLeft = overflow.scrollLeft;\r\n\r\n this.showLeftArrow = (scrollLeft > 0);\r\n this.showRightArrow = (scrollLeft < maxScrollLeft);\r\n });\r\n } else {\r\n this.showLeftArrow = (scrollLeft > 0);\r\n this.showRightArrow = (scrollLeft < maxScrollLeft);\r\n }\r\n\r\n if (!this.showRightArrow) {\r\n if (this.infiniteLoad) {\r\n this.infiniteLoad();\r\n }\r\n }\r\n }\r\n}\r\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, Output} from '@angular/core';\r\nimport {UiElementRef} from '../../utils/providers/element-ref.provider';\r\nimport {UiElement} from '../../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-tabs-pages',\r\n templateUrl: 'tabs-pages.component.html',\r\n styleUrls: ['tabs-pages.component.scss']\r\n})\r\n\r\nexport class UiTabsPagesComponent implements AfterViewInit {\r\n @Input() tabs: any;\r\n firstLoad: boolean;\r\n currentPage: number;\r\n timeOutTurnBack: any;\r\n @Input('enable-overflow') enableOverflow: boolean;\r\n @Output('onchangepage') onChangePage: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(private element: ElementRef) {\r\n this.currentPage = 1;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.tabs) {\r\n const tabs = new UiElementRef(this.tabs.element.nativeElement).querySelector('.tab');\r\n\r\n let touchXMovement;\r\n let touchXStartPosition;\r\n let touchYMovement;\r\n let touchYStartPosition;\r\n let firstMovementCoord;\r\n let currentBannerIndex;\r\n let newPosition;\r\n\r\n const elBannerContainer = this.element.nativeElement.querySelector('.page-container');\r\n\r\n elBannerContainer.addEventListener('touchstart', (e) => {\r\n currentBannerIndex = tabs.indexOf(tabs.filter(tab => tab.is('.selected'))[0]);\r\n touchXStartPosition = e.touches[0].pageX;\r\n touchYStartPosition = e.touches[0].pageY;\r\n elBannerContainer.classList.add('no-transition');\r\n\r\n if (this.enableOverflow) {\r\n const pageContainer = new UiElementRef(this.element.nativeElement);\r\n\r\n const pages = pageContainer.querySelector('.page-container .page');\r\n for (let i = 0; i < pages.length; i++) {\r\n pages[i].css('height', '');\r\n }\r\n }\r\n });\r\n\r\n elBannerContainer.addEventListener('touchmove', (e) => {\r\n if (touchXStartPosition < 0 || touchXStartPosition > 40) {\r\n touchXMovement = touchXStartPosition - e.touches[0].pageX;\r\n touchYMovement = touchYStartPosition - e.touches[0].pageY;\r\n\r\n if (!firstMovementCoord) {\r\n if (touchXMovement > 20 || touchXMovement < -20) {\r\n firstMovementCoord = 'X';\r\n } else if (touchYMovement > 20 || touchYMovement < -20) {\r\n firstMovementCoord = 'Y';\r\n }\r\n }\r\n\r\n if (touchXMovement && firstMovementCoord === 'X') {\r\n UiElement.disableScroll();\r\n\r\n const i = currentBannerIndex;\r\n\r\n const isNegative = i > 0 ? -1 : 1;\r\n const currentPosition = (i * 100) * isNegative;\r\n\r\n const pages = this.element.nativeElement.querySelectorAll('.page-container .page');\r\n for (let i = 0; i < pages.length; i++) {\r\n const page = pages[i];\r\n newPosition = currentPosition - ((100 / page.clientWidth) * touchXMovement);\r\n page.style.transform = `translate(${newPosition}%)`;\r\n }\r\n }\r\n }\r\n });\r\n\r\n elBannerContainer.addEventListener('touchend', () => {\r\n elBannerContainer.classList.remove('no-transition');\r\n if (touchXMovement) {\r\n const newIndex = (Math.round(newPosition / 100) * -1);\r\n if (tabs[newIndex]) {\r\n tabs[newIndex].trigger('click');\r\n } else {\r\n this.pagesGoToPage();\r\n }\r\n }\r\n UiElement.enableScroll();\r\n firstMovementCoord = undefined;\r\n });\r\n }\r\n\r\n this.pagesGoToPage(1);\r\n }\r\n\r\n pagesGoToPage(nextPage?) {\r\n let tabs;\r\n if (this.tabs) {\r\n tabs = new UiElementRef(this.tabs.element.nativeElement).querySelector('.tab');\r\n } else {\r\n tabs = new UiElementRef(this.element.nativeElement).querySelector('.page');\r\n }\r\n\r\n if (tabs[nextPage - 1]) {\r\n const isNegative = (nextPage - 1) > 0 ? -1 : 1;\r\n const newPosition = (nextPage - 1) * 100 * isNegative;\r\n\r\n const pages = this.element.nativeElement.children[0].children;\r\n for (let i = 0; i < pages.length; i++) {\r\n const page = pages[i];\r\n page.style.transform = `translate(${newPosition}%)`;\r\n\r\n }\r\n } else {\r\n this.pagesGoToPage(tabs.indexOf(tabs.filter(tab => tab.is('.selected'))[0]) + 1);\r\n // TODO: Verificar se isso realmente funciona\r\n }\r\n\r\n const pageContainer = new UiElementRef(this.element.nativeElement);\r\n const elNextPage = new UiElementRef(this.element.nativeElement.children[0].children[nextPage - 1]);\r\n const pages = this.element.nativeElement.children[0].children;\r\n for (let i = 0; i < pages.length; i++) {\r\n if (nextPage - 1 === i) {\r\n const pageRef = new UiElementRef(pages[i]);\r\n pageRef.css('height', '');\r\n }\r\n }\r\n\r\n if (this.firstLoad) {\r\n const elCurrentPage = new UiElementRef(this.element.nativeElement.children[0].children[this.currentPage - 1]);\r\n pageContainer.css('height', elCurrentPage.nativeElement.clientHeight + 'px');\r\n } else {\r\n this.firstLoad = true;\r\n }\r\n if (elNextPage) {\r\n setTimeout(() => {\r\n pageContainer.css('height', elNextPage.nativeElement.clientHeight + 'px');\r\n\r\n clearTimeout(this.timeOutTurnBack);\r\n this.timeOutTurnBack = setTimeout(() => {\r\n pageContainer.css('height', '');\r\n\r\n for (let i = 0; i < pages.length; i++) {\r\n if (nextPage - 1 !== i) {\r\n const pageRef = new UiElementRef(pages[i]);\r\n pageRef.css('height', 0);\r\n }\r\n }\r\n }, 280);\r\n });\r\n }\r\n\r\n if (typeof nextPage !== 'undefined') {\r\n this.currentPage = nextPage;\r\n if (this.onChangePage) {\r\n setTimeout(() => {\r\n this.onChangePage.emit();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import {Directive, DoCheck, ElementRef, Input} from '@angular/core';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\n@Directive({selector: '[uiLazyLoad][lazy-src]'})\r\nexport class UiLazyLoadDirective implements DoCheck {\r\n elementRef: any;\r\n visible: boolean;\r\n @Input('lazy-src') lazySrc: any;\r\n\r\n constructor(private element: ElementRef) {\r\n this.elementRef = new UiElementRef(element.nativeElement);\r\n this.elementRef.on('load', () => {\r\n this.elementRef.classList.add('loaded');\r\n });\r\n }\r\n\r\n ngDoCheck() {\r\n if (!this.visible && this.elementRef.isInViewport()) {\r\n this.visible = true;\r\n this.elementRef.attribute('src', this.lazySrc);\r\n }\r\n }\r\n}\r\n","import {AfterViewInit, Component, ElementRef, OnInit, ViewChild} from '@angular/core';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\n@Component({\r\n selector: 'ui-data-table',\r\n templateUrl: 'data-table.component.html'\r\n})\r\n\r\nexport class UiDataTableComponent implements OnInit {\r\n @ViewChild('tableFooter', { static: true }) tableFooter: any;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngOnInit() {\r\n const self = new UiElementRef(this.element.nativeElement);\r\n const tfoot = self.querySelector('tfoot');\r\n\r\n if (tfoot) {\r\n this.tableFooter.nativeElement.appendChild(tfoot.nativeElement);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { UiElementRef } from '../utils/providers/element-ref.provider';\r\n\r\n@Component({\r\n selector: 'ui-bottom-sheet',\r\n templateUrl: './bottom-sheet.component.html',\r\n styleUrls: ['./bottom-sheet.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiBottomSheetComponent {\r\n @Input('card-size') cardSize: number;\r\n @ViewChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\r\n @Output() closeChange: EventEmitter<any> = new EventEmitter();\r\n\r\n viewRef;\r\n opened;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n }\r\n\r\n close() {\r\n this.opened = false;\r\n this.closeChange.emit();\r\n\r\n if (this.viewRef) {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (fabs.length) {\r\n fabs.classList.remove('hide');\r\n }\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n if (this.viewRef) {\r\n setTimeout(() => {\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.remove) {\r\n rootNode.remove();\r\n } else {\r\n rootNode.parentNode.removeChild(rootNode);\r\n }\r\n });\r\n this.viewRef.destroy();\r\n this.viewRef = null;\r\n }, 280);\r\n }\r\n\r\n document.body.style.overflowY = '';\r\n }\r\n }\r\n\r\n show(config?: any) {\r\n if (!this.viewRef) {\r\n const dialog = this;\r\n\r\n this.close();\r\n config = config || {};\r\n\r\n if (config.clickOverlayToClose === undefined) {\r\n config.clickOverlayToClose = true;\r\n } else if (config.clickOverlayToClose) {\r\n config.clickOverlayToClose = JSON.parse(config.clickOverlayToClose);\r\n }\r\n\r\n this.viewRef = dialog.templateRef.createEmbeddedView(dialog.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode, config);\r\n }\r\n });\r\n }\r\n }\r\n\r\n open(element, config) {\r\n this.opened = true;\r\n setTimeout(() => {\r\n setTimeout(() => {\r\n const card = element.querySelector('ui-card');\r\n card.className += ` ${this.elementRef.nativeElement.className}`;\r\n\r\n if (config.themeClass) {\r\n element.classList.add(config.themeClass);\r\n }\r\n if (config.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (config.cardSize) {\r\n card.style.maxWidth = config.cardSize + 'px';\r\n }\r\n if (!config.transparentOverlay && config.fabs) {\r\n config.fabs.classList.add('hide');\r\n }\r\n\r\n element.querySelectorAll('.overlay')[0].addEventListener('click', () => {\r\n this.close();\r\n });\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n // UiElement.disableScroll();\r\n });\r\n });\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, Input, ViewContainerRef} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiBottomSheetTrigger]'\r\n})\r\nexport class UiBottomSheetTriggerDirective implements AfterViewInit {\r\n viewRef: any;\r\n fabs: HTMLElement;\r\n @Input('trigger-events') triggerEvents: string;\r\n @Input('theme-class') themeClass: string;\r\n @Input('transparent-overlay') transparentOverlay: boolean;\r\n @Input('uiBottomSheetTrigger') bottomSheet;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef, public elementRef: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.bottomSheet.closeChange.subscribe(() => {\r\n this.close();\r\n });\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.triggerEvents || 'click', () => {\r\n this.render();\r\n });\r\n }\r\n\r\n render() {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.bottomSheet.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode);\r\n }\r\n });\r\n }\r\n\r\n open(element) {\r\n setTimeout(() => {\r\n const card = element.querySelector('ui-card');\r\n card.className += ` ${this.bottomSheet.elementRef.nativeElement.className}`;\r\n\r\n if (this.themeClass) {\r\n element.classList.add(this.themeClass);\r\n }\r\n if (this.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (this.bottomSheet.cardSize) {\r\n card.style.maxWidth = this.bottomSheet.cardSize + 'px';\r\n }\r\n if (!this.transparentOverlay && this.fabs) {\r\n this.fabs.classList.add('hide');\r\n }\r\n\r\n element.querySelectorAll('.overlay')[0].addEventListener('click', () => {\r\n this.close();\r\n });\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n // UiElement.disableScroll();\r\n });\r\n }\r\n\r\n close() {\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef;\r\n if (this.fabs) {\r\n this.fabs.classList.remove('hide');\r\n }\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n // UiElement.enableScroll();\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output } from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[uiInputFile]',\r\n exportAs: 'uiInputFile'\r\n})\r\nexport class UiInputFileDirective {\r\n\r\n @Input() files: any;\r\n @Input() model: any;\r\n @Input() accept: string;\r\n @Input() read: Function;\r\n @Input() error: Function;\r\n @Input() fileChange: Function;\r\n @Input('max-size') maxSize: string;\r\n @Input('max-file-size') maxFileSize: string;\r\n @Output() filesChange: EventEmitter<any> = new EventEmitter();\r\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n constructor(public element: ElementRef, public ngControl: NgControl) {\r\n }\r\n\r\n @HostListener('change', ['$event'])\r\n onChange(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n this.readFiles(e.target.files);\r\n }\r\n\r\n readFiles(files) {\r\n this.ngControl.control.markAsDirty();\r\n this.ngControl.control.setErrors(null);\r\n\r\n this.model = [];\r\n const accepts = this.accept ? this.accept.split(',') : [];\r\n const maxSize = this.maxSize ? this.toByte(this.maxSize) : null;\r\n const maxFileSize = this.maxFileSize ? this.toByte(this.maxFileSize) : null;\r\n\r\n let sum = 0;\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n sum += file.size;\r\n\r\n const validMaxFileSize = this.validateMaxSize(file.size, maxFileSize);\r\n const validMaxSize = this.validateMaxSize(sum, maxSize);\r\n const fileExtension = file.name.substring(file.name.lastIndexOf('.') + 1);\r\n const validType = this.validateType(file, fileExtension, accepts);\r\n\r\n if (validMaxFileSize) {\r\n this.ngControl.control.setErrors(Object.assign(this.ngControl.errors || {}, {maxFileSize: true}));\r\n }\r\n\r\n if (!validType) {\r\n this.ngControl.control.setErrors(Object.assign(this.ngControl.errors || {}, {accept: true}));\r\n }\r\n\r\n if (this.validateMaxSize(sum, maxSize)) {\r\n this.ngControl.control.setErrors(Object.assign(this.ngControl.errors || {}, {maxSize: true}));\r\n }\r\n\r\n if (validType && !validMaxFileSize && !validMaxSize) {\r\n this.model.push({});\r\n this.modelChange.emit(this.model);\r\n this.readFile(file, this.model[i], i);\r\n } else if (this.error) {\r\n this.error(file, {\r\n type: !validType,\r\n maxSize: validMaxSize,\r\n maxFileSize: validMaxFileSize\r\n }, i);\r\n }\r\n }\r\n\r\n this.files = files;\r\n this.filesChange.emit(this.files);\r\n\r\n if (this.fileChange) {\r\n this.fileChange(this.files, this.ngControl.control.invalid);\r\n }\r\n\r\n this.element.nativeElement.value = ''; // Resetando value para próximos arquivos\r\n }\r\n\r\n validateType(file, extension, accepts): boolean {\r\n if (!accepts.length) {\r\n return true;\r\n }\r\n\r\n for (let j = 0; j < accepts.length; j++) {\r\n const accept = accepts[j].trim();\r\n const regex = accept.match(/^[^\\*]*\\*$/) ? new RegExp('^' + accept) : new RegExp('^' + accept + '$');\r\n\r\n if (file.type.match(regex) || extension.match(regex)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n validateMaxSize(size, maxSize): boolean {\r\n return (maxSize && size > maxSize);\r\n }\r\n\r\n toByte(sizeString: string) {\r\n sizeString = sizeString.toString();\r\n const unitMatch = sizeString.match(/[a-zA-Z]+/g);\r\n const unit = unitMatch ? unitMatch[0] : null;\r\n const sizeMatch = sizeString.match(/\\d+/);\r\n const unitSize = sizeMatch ? parseInt(sizeMatch[0], 10) : null;\r\n let size = unitSize;\r\n\r\n switch (unit) {\r\n case 'KB':\r\n size = unitSize * 1024;\r\n break;\r\n case 'MB':\r\n size = unitSize * Math.pow(1024, 2);\r\n break;\r\n case 'GB':\r\n size = unitSize * Math.pow(1024, 3);\r\n break;\r\n case 'TB':\r\n size = unitSize * Math.pow(1024, 4);\r\n break;\r\n case 'PB':\r\n size = unitSize * Math.pow(1024, 5);\r\n break;\r\n case 'EB':\r\n size = unitSize * Math.pow(1024, 6);\r\n break;\r\n case 'ZB':\r\n size = unitSize * Math.pow(1024, 7);\r\n break;\r\n case 'YB':\r\n size = unitSize * Math.pow(1024, 8);\r\n break;\r\n }\r\n return size;\r\n }\r\n\r\n readFile(file, data, index) {\r\n if (typeof (data) !== 'object') return;\r\n\r\n const reader = new FileReader();\r\n\r\n data.resolved = 'false';\r\n\r\n reader.onload = (e: any) => {\r\n data.result = e.target.result;\r\n data.resolved = true;\r\n this.modelChange.emit(this.model);\r\n this.read(file, data.result, index);\r\n };\r\n\r\n reader.onerror = (e: any) => {\r\n data.error = e.target.error;\r\n this.modelChange.emit(this.model);\r\n };\r\n\r\n reader.onprogress = (e: any) => {\r\n data.progress = {\r\n loaded: e.loaded,\r\n total: e.total,\r\n percent: Math.round((e.loaded / e.total) * 100)\r\n };\r\n this.modelChange.emit(this.model);\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnInit, Output} from '@angular/core';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\n@Directive({selector: '[uiEllipsis]'})\r\nexport class UiEllipsisDirective implements OnInit {\r\n @Input() uiEllipsis: number;\r\n @Output() uiEllipsisChange: number;\r\n @Input('line-height') lineHeight: number;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngOnInit() {\r\n const elementRef = new UiElementRef(this.element.nativeElement);\r\n\r\n this.uiEllipsis = this.uiEllipsis || 1;\r\n this.lineHeight = this.lineHeight || 17;\r\n\r\n elementRef.css('-webkit-line-clamp', this.uiEllipsis);\r\n elementRef.css('max-height', (this.lineHeight * this.uiEllipsis) + 'px');\r\n elementRef.css('line-height', this.lineHeight + 'px');\r\n\r\n elementRef.on('mousemove', () => {\r\n if (elementRef.nativeElement.scrollHeight > elementRef.nativeElement.clientHeight) {\r\n elementRef.nativeElement.setAttribute('title', elementRef.nativeElement.innerText);\r\n } else {\r\n elementRef.nativeElement.removeAttribute('title');\r\n }\r\n });\r\n }\r\n}\r\n","import { Directive, Input, forwardRef} from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[required][ngModel]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => UiRequiredDirective), multi: true }\r\n ]\r\n})\r\nexport class UiRequiredDirective implements Validator {\r\n @Input('required') maxLength: any;\r\n\r\n constructor() {}\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n\r\n const value = control.value;\r\n\r\n if (value && value.trim && !value.trim()) {\r\n return {\r\n required: true,\r\n uiMaxlength: false\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}\r\n","const textBlack = 'rgba(0, 0, 0, .87)';\r\nconst textWhite = '#fff';\r\nconst colors: any[] = [{\r\n name: 'red'\r\n}, {\r\n name: 'pink'\r\n}, {\r\n name: 'purple'\r\n}, {\r\n name: 'deepPurple'\r\n}, {\r\n name: 'indigo'\r\n}, {\r\n name: 'blue'\r\n}, {\r\n name: 'lightBlue'\r\n}, {\r\n name: 'cyan'\r\n}, {\r\n name: 'teal'\r\n}, {\r\n name: 'green'\r\n}, {\r\n name: 'lightGreen'\r\n}, {\r\n name: 'lime'\r\n}, {\r\n name: 'yellow'\r\n}, {\r\n name: 'amber'\r\n}, {\r\n name: 'orange'\r\n}, {\r\n name: 'deepOrange'\r\n}, {\r\n name: 'brown'\r\n}, {\r\n name: 'grey'\r\n}, {\r\n name: 'blueGrey'\r\n}, {\r\n name: 'black',\r\n hideSlider: true\r\n}, {\r\n name: 'white',\r\n hideSlider: true,\r\n hasBorder: true\r\n}];\r\nconst palette: any = {\r\n red: {\r\n 50: {\r\n color: '#ffebee',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#ffcdd2',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ef9a9a',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#e57373',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ef5350',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#f44336',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#e53935',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#d32f2f',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#c62828',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#b71c1c',\r\n text: textWhite\r\n }\r\n },\r\n pink: {\r\n 50: {\r\n color: '#fce4ec',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#f8bbd0',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#f48fb1',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#f06292',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#ec407a',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#e91e63',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#d81b60',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#c2185b',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#ad1457',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#880e4f',\r\n text: textWhite\r\n }\r\n },\r\n purple: {\r\n 50: {\r\n color: '#f3e5f5',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#e1bee7',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ce93d8',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#ba68c8',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#ab47bc',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#9c27b0',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#8e24aa',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#7b1fa2',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#6a1b9a',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#4a148c',\r\n text: textWhite\r\n }\r\n },\r\n deepPurple: {\r\n 50: {\r\n color: '#ede7f6',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#d1c4e9',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#b39ddb',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#9575cd',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#7e57c2',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#673ab7',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#5e35b1',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#512da8',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#4527a0',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#311b92',\r\n text: textWhite\r\n }\r\n },\r\n indigo: {\r\n 50: {\r\n color: '#e8eaf6',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#c5cae9',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#9fa8da',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#7986cb',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#5c6bc0',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#3f51b5',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#3949ab',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#303f9f',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#283593',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#1a237e',\r\n text: textWhite\r\n }\r\n },\r\n blue: {\r\n 50: {\r\n color: '#e3f2fd',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#bbdefb',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#90caf9',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#64b5f6',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#42a5f5',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#2196f3',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#1e88e5',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#1976d2',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#1565c0',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#0d47a1',\r\n text: textWhite\r\n }\r\n },\r\n lightBlue: {\r\n 50: {\r\n color: '#e1f5fe',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#b3e5fc',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#81d4fa',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#4fc3f7',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#29b6f6',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#03a9f4',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#039be5',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#0288d1',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#0277bd',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#01579b',\r\n text: textWhite\r\n }\r\n },\r\n cyan: {\r\n 50: {\r\n color: '#e0f7fa',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#b2ebf2',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#80deea',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#4dd0e1',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#26c6da',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#00bcd4',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#00acc1',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#0097a7',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#00838f',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#006064',\r\n text: textWhite\r\n }\r\n },\r\n teal: {\r\n 50: {\r\n color: '#e0f2f1',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#b2dfdb',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#80cbc4',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#4db6ac',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#26a69a',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#009688',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#00897b',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#00796b',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#00695c',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#004d40',\r\n text: textWhite\r\n }\r\n },\r\n green: {\r\n 50: {\r\n color: '#e8f5e9',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#c8e6c9',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#a5d6a7',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#81c784',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#66bb6a',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#4caf50',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#43a047',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#388e3c',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#2e7d32',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#1b5e20',\r\n text: textWhite\r\n }\r\n },\r\n lightGreen: {\r\n 50: {\r\n color: '#f1f8e9',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#dcedc8',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#c5e1a5',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#aed581',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#9ccc65',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#8bc34a',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#7cb342',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#689f38',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#558b2f',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#33691e',\r\n text: textWhite\r\n }\r\n },\r\n lime: {\r\n 50: {\r\n color: '#f9fbe7',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#f0f4c3',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#e6ee9c',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#dce775',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#d4e157',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#cddc39',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#c0ca33',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#afb42b',\r\n text: textBlack\r\n },\r\n 800: {\r\n color: '#9e9d24',\r\n text: textBlack\r\n },\r\n 900: {\r\n color: '#827717',\r\n text: textWhite\r\n }\r\n },\r\n yellow: {\r\n 50: {\r\n color: '#fffde7',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#fff9c4',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#fff59d',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#fff176',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ffee58',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#ffeb3b',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#fdd835',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#fbc02d',\r\n text: textBlack\r\n },\r\n 800: {\r\n color: '#f9a825',\r\n text: textBlack\r\n },\r\n 900: {\r\n color: '#f57f17',\r\n text: textBlack\r\n }\r\n },\r\n amber: {\r\n 50: {\r\n color: '#fff8e1',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#ffecb3',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ffe082',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#ffd54f',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ffca28',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#ffc107',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#ffb300',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#ffa000',\r\n text: textBlack\r\n },\r\n 800: {\r\n color: '#ff8f00',\r\n text: textBlack\r\n },\r\n 900: {\r\n color: '#ff6f00',\r\n text: textBlack\r\n }\r\n },\r\n orange: {\r\n 50: {\r\n color: '#fff3e0',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#ffe0b2',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ffcc80',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#ffb74d',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ffa726',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#ff9800',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#fb8c00',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#f57c00',\r\n text: textBlack\r\n },\r\n 800: {\r\n color: '#ef6c00',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#e65100',\r\n text: textWhite\r\n }\r\n },\r\n deepOrange: {\r\n 50: {\r\n color: '#fbe9e7',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#ffccbc',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ffab91',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#ff8a65',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ff7043',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#ff5722',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#f4511e',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#e64a19',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#d84315',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#bf360c',\r\n text: textWhite\r\n }\r\n },\r\n brown: {\r\n 50: {\r\n color: '#efebe9',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#d7ccc8',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#bcaaa4',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#a1887f',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#8d6e63',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#795548',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#6d4c41',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#5d4037',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#4e342e',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#3e2723',\r\n text: textWhite\r\n }\r\n },\r\n grey: {\r\n 50: {\r\n color: '#fafafa',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#f5f5f5',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#eeeeee',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#e0e0e0',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#bdbdbd',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#9e9e9e',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#757575',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#616161',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#424242',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#212121',\r\n text: textWhite\r\n }\r\n },\r\n blueGrey: {\r\n 50: {\r\n color: '#eceff1',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#cfd8dc',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#b0bec5',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#90a4ae',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#78909c',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#607d8b',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#546e7a',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#455a64',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#37474f',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#263238',\r\n text: textWhite\r\n }\r\n },\r\n black: {\r\n 500: {\r\n color: '#000000',\r\n text: textWhite\r\n }\r\n },\r\n white: {\r\n 500: {\r\n color: '#FFFFFF',\r\n text: textBlack\r\n }\r\n }\r\n};\r\nexport {\r\n palette,\r\n colors\r\n}\r\n","import {Component, EventEmitter, AfterViewInit, Output, ViewChild, Input} from '@angular/core';\r\nimport {palette, colors} from './color-picker.palette';\r\nimport {NgControl} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'ui-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n styleUrls: ['./color-picker.component.scss']\r\n})\r\nexport class UiColorPickerComponent implements AfterViewInit {\r\n\r\n palette: any;\r\n colors: any;\r\n hues: any;\r\n colorSelected: any;\r\n ngModel: any;\r\n value: any;\r\n ngModelChange: EventEmitter<any>;\r\n @Output() valueChange: EventEmitter<any> = new EventEmitter();\r\n @ViewChild('hueColor') hueColor: any;\r\n\r\n constructor(private ngControl: NgControl) {\r\n this.palette = palette;\r\n this.colors = colors;\r\n this.hues = Array.from({length: 10}, (ngModel, index) => index * 100);\r\n this.hues[0] = 50;\r\n this.value = 500;\r\n this.colorSelected = {};\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setColorSelected(this.ngModel);\r\n this.hueColor.valueChange.subscribe(hue => {\r\n this.ngModel = this.getColor(this.colorSelected.name, hue);\r\n this.ngModelChange.emit(this.ngModel);\r\n });\r\n }\r\n\r\n getColor(color, hue = 500) {\r\n if (!color) {\r\n return;\r\n }\r\n return this.palette[color][hue].color;\r\n }\r\n\r\n getColorText(color, hue = 500) {\r\n if (!color) {\r\n return;\r\n }\r\n return this.palette[color][hue].text;\r\n }\r\n\r\n selectColor(colorSelected) {\r\n this.ngControl.control.markAsDirty();\r\n this.deselectColors();\r\n colorSelected.selected = true;\r\n this.colorSelected = colorSelected;\r\n this.ngModel = this.getColor(this.colorSelected.name, this.value);\r\n this.ngModelChange.emit(this.ngModel);\r\n }\r\n\r\n deselectColors() {\r\n this.ngControl.control.markAsDirty();\r\n this.ngModel = this.getColor(null);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.colorSelected = {};\r\n this.value = 500;\r\n this.colors.forEach(color => color.selected = false);\r\n }\r\n\r\n setColorSelected(color) {\r\n if (!color) {\r\n return;\r\n }\r\n\r\n Object.keys(this.palette).forEach(key => {\r\n Object.keys(this.palette[key]).forEach(hue => {\r\n if (this.palette[key][hue].color === color) {\r\n this.colors.forEach(item => {\r\n if (item.name === key) {\r\n setTimeout(() => {\r\n item.selected = true;\r\n this.value = hue;\r\n this.colorSelected = item;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n","import {\r\n AfterViewInit, ApplicationRef, ComponentFactoryResolver, Directive, ElementRef, EmbeddedViewRef, EventEmitter,\r\n Injector, Input, OnChanges, Output\r\n} from '@angular/core';\r\nimport {palette} from './color-picker.palette';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiColorPickerComponent} from './color-picker.component';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\n\r\n@Directive({\r\n selector: '[uiColorPicker]'\r\n})\r\nexport class UiColorPickerDirective implements AfterViewInit, OnChanges {\r\n\r\n @Input() ngModel;\r\n @Input('theme-class') themeClass;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n elementColor;\r\n palette;\r\n componentRef;\r\n wrapElement;\r\n componentElement;\r\n\r\n constructor(private element: ElementRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector) {\r\n this.palette = palette;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.generateElementColor();\r\n this.setColorElement(this.ngModel);\r\n\r\n this.element.nativeElement.classList.add('elevate');\r\n this.element.nativeElement.parentNode.appendChild(this.elementColor);\r\n\r\n this.addEvents();\r\n\r\n this.ngModelChange.subscribe(color => {\r\n this.setColorElement(color);\r\n });\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.ngModel && !changes.ngModel.firstChange) {\r\n this.ngModel = changes.ngModel.currentValue;\r\n this.setColorElement(this.ngModel);\r\n }\r\n }\r\n\r\n generateElementColor() {\r\n this.elementColor = document.createElement('div');\r\n this.elementColor.classList.add('ui-color');\r\n this.elementColor.setAttribute('tabindex', '1');\r\n }\r\n\r\n setColorElement(color) {\r\n let icon = this.elementColor.querySelector('i');\r\n\r\n if (color) {\r\n if (icon) {\r\n icon.remove();\r\n }\r\n this.elementColor.setAttribute('style', `background-color: ${color}`);\r\n } else if (!icon) {\r\n icon = document.createElement('i');\r\n icon.classList.add('material-icons', 'secondary-text');\r\n icon.innerText = 'block';\r\n this.elementColor.appendChild(icon);\r\n this.elementColor.setAttribute('style', '');\r\n }\r\n }\r\n\r\n addEvents() {\r\n UiElement.on(this.elementColor, 'click', e => {\r\n const position = UiElement.position(this.elementColor);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n\r\n if (!this.componentRef) {\r\n this.createComponent();\r\n this.setInstances(this, this.componentRef);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n this.componentElement = this.getComponentAsElement();\r\n this.render(this.componentElement, coordinate);\r\n e.stopPropagation();\r\n }\r\n });\r\n\r\n UiElement.on(window, 'click resize scroll', (e) => {\r\n if (this.componentRef) {\r\n if ((!(UiElement.is(e.target, '.wrap-color-picker') || UiElement.closest(e.target, '.wrap-color-picker')) && !(document.body.clientWidth <= 600 && e.type === 'scroll')) || UiElement.is(e.target, '.overlay')) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n\r\n private createComponent() {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiColorPickerComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n }\r\n\r\n private getComponentAsElement(): HTMLElement {\r\n return (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n private setInstances(component, componentRef): void {\r\n const keysComponent = ['ngModel', 'ngModelChange'];\r\n\r\n keysComponent.forEach(key => {\r\n componentRef.instance[key] = component[key];\r\n });\r\n }\r\n\r\n private render(element, coordinate): void {\r\n this.createWrapElement();\r\n this.wrapElement.appendChild(element);\r\n\r\n document.body.appendChild(this.wrapElement);\r\n\r\n setTimeout(() => {\r\n if (this.themeClass) {\r\n this.wrapElement.classList.add(this.themeClass);\r\n }\r\n\r\n this.wrapElement.classList.add('open');\r\n\r\n this.setPosition(coordinate);\r\n });\r\n }\r\n\r\n private createWrapElement() {\r\n this.wrapElement = document.createElement('div');\r\n this.wrapElement.classList.add('wrap-color-picker');\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('overlay');\r\n\r\n this.wrapElement.appendChild(overlay);\r\n }\r\n\r\n private setPosition(coordinate) {\r\n const horizontalCoveringArea = coordinate.x + this.componentElement.clientWidth;\r\n const verticalCoveringArea = coordinate.y + this.componentElement.clientHeight;\r\n const windowWidth = window.innerWidth + document.body.scrollLeft;\r\n const windowHeight = window.innerHeight + document.body.scrollTop;\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (this.componentElement.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = coordinate.y - this.componentElement.clientHeight;\r\n }\r\n\r\n this.componentElement.style.top = (coordinate.y) + 'px';\r\n this.componentElement.style.left = coordinate.x + 'px';\r\n }\r\n\r\n private close() {\r\n if (this.wrapElement) {\r\n this.wrapElement.classList.remove('open');\r\n setTimeout(() => {\r\n if (this.componentRef) {\r\n this.componentRef.instance.colors.forEach(color => color.selected = false);\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n this.componentRef = null;\r\n this.wrapElement.remove();\r\n }\r\n }, 280);\r\n }\r\n\r\n }\r\n}\r\n","import {ElementRef, HostListener, Directive, OnChanges, Input, AfterViewInit, DoCheck} from '@angular/core';\r\n\r\nconst MAX_LOOKUP_RETRIES = 3;\r\n\r\n@Directive({\r\n selector: '[autosize]'\r\n})\r\n\r\nexport class UiInputAutosizeDirective implements OnChanges, AfterViewInit, DoCheck {\r\n private retries = 0;\r\n private textAreaEl: any;\r\n @Input() ngModel;\r\n\r\n @HostListener('input', ['$event.target'])\r\n onInput(textArea: HTMLTextAreaElement): void {\r\n this.adjust();\r\n }\r\n\r\n @HostListener('change', ['$event.target'])\r\n onChange(textArea: HTMLTextAreaElement): void {\r\n this.adjust();\r\n }\r\n\r\n constructor(public element: ElementRef) {\r\n if (this.element.nativeElement.tagName !== 'TEXTAREA') {\r\n this._findNestedTextArea();\r\n } else {\r\n this.textAreaEl = this.element.nativeElement;\r\n }\r\n }\r\n\r\n // Faz com que o autosize execute quando a tela for carregada, para casos em que o campo iniciar preenchido\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.adjust();\r\n });\r\n }\r\n\r\n _findNestedTextArea() {\r\n this.textAreaEl = this.element.nativeElement.getElementsByTagName('textarea')[0];\r\n if (!this.textAreaEl) {\r\n if (this.retries >= MAX_LOOKUP_RETRIES) {\r\n console.error('textarea não encontrado');\r\n\r\n } else {\r\n this.retries++;\r\n setTimeout(() => {\r\n this._findNestedTextArea();\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n // this.adjust();\r\n }\r\n\r\n // setTimeout para aguardar a atualização da model do input\r\n ngOnChanges(changes) {\r\n setTimeout(() => {\r\n this.adjust();\r\n });\r\n }\r\n\r\n adjust(): void {\r\n if (!!this.textAreaEl) {\r\n this.textAreaEl.style.overflow = 'hidden';\r\n this.textAreaEl.style.height = '';\r\n this.textAreaEl.style.height = this.textAreaEl.scrollHeight + 'px';\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ComponentFactoryResolver, ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {Subject} from 'rxjs/index';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {animate, style, transition, trigger} from \"@angular/animations\";\r\n\r\n@Component({\r\n selector: 'ui-clock',\r\n templateUrl: './clock.component.html',\r\n styleUrls: ['./clock.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [trigger(\r\n 'explosion', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'scale(1.3)'\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 1,\r\n transform: 'scale(1)'\r\n }))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n transform: 'scale(1)'\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 0,\r\n transform: 'scale(1.3)'\r\n }))\r\n ])\r\n ],\r\n ), trigger(\r\n 'fade', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 1,\r\n }))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 0,\r\n }))\r\n ])\r\n ],\r\n )]\r\n})\r\nexport class UiClockComponent implements OnInit, AfterViewInit, OnChanges {\r\n @Input() ngModel: any;\r\n @Input('hide-header') hideHeader: boolean;\r\n @Input('confirm-selection') confirmSelection: boolean;\r\n @Output() select: EventEmitter<any> = new EventEmitter();\r\n @Output() cancel: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n chosen: Subject<any> = new Subject();\r\n\r\n hours: number[];\r\n minutes: number[];\r\n hour: number;\r\n minute: number;\r\n focused: boolean;\r\n pointerRotation: number;\r\n activeSelection: string;\r\n\r\n constructor(private element: ElementRef) {\r\n const beforeMidday = Array.apply(null, {length: 12}).map(Number.call, Number);\r\n const afterMidday = Array.apply(null, {length: 12}).map(Number.call, Number).map(val => val + 12);\r\n beforeMidday[0] = 12;\r\n afterMidday[0] = 0;\r\n this.hours = [...afterMidday, ...beforeMidday];\r\n this.minutes = Array.apply(null, {length: 12}).map(Number.call, Number).map(val => val * 5);\r\n this.activeSelection = 'hours';\r\n this.pointerRotation = 0;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.formatModel();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.element.nativeElement.tabIndex = 1;\r\n setTimeout(() => {\r\n this.element.nativeElement.focus();\r\n });\r\n\r\n UiElement.on(document, 'keydown', e => {\r\n if (!this.focused) {\r\n return;\r\n }\r\n switch (e.keyCode) {\r\n case 13:\r\n if (this.activeSelection === 'hours') {\r\n this.selectHour(this.hour);\r\n } else {\r\n this.selectMinute(this.minute);\r\n }\r\n break;\r\n case 39:\r\n case 40:\r\n if (this.activeSelection === 'hours') {\r\n this.hour = this.hour + 1 > 23 ? 0 : this.hour + 1;\r\n } else {\r\n this.minute = this.minute + 1 > 59 ? 0 : this.minute + 1;\r\n }\r\n this.getPositionPointer();\r\n e.preventDefault();\r\n break;\r\n case 37:\r\n case 38:\r\n if (this.activeSelection === 'hours') {\r\n this.hour = this.hour - 1 < 0 ? 23 : this.hour - 1;\r\n } else {\r\n this.minute = this.minute - 1 < 0 ? 59 : this.minute - 1;\r\n }\r\n this.getPositionPointer();\r\n e.preventDefault();\r\n break;\r\n }\r\n\r\n });\r\n\r\n UiElement.on(document, 'click', e => {\r\n this.focused = (this.element.nativeElement === e.target || this.element.nativeElement === UiElement.closest(e.target, 'ui-clock')) && (UiElement.is(e.target, 'ui-clock') || UiElement.closest(e.target, 'ui-clock'));\r\n });\r\n }\r\n\r\n public ngOnChanges(value): void {\r\n if (value.ngModel && !value.ngModel.firstChange) {\r\n this.ngModel = value.ngModel.currentValue;\r\n this.formatModel();\r\n }\r\n if (value.confirmSelection) {\r\n this.confirmSelection = value.confirmSelection.currentValue;\r\n }\r\n }\r\n\r\n public formatModel() {\r\n if (this.ngModel) {\r\n const time = this.ngModel.split(':');\r\n this.hour = parseInt(time[0], 10);\r\n this.minute = parseInt(time [1], 10);\r\n this.getPositionPointer();\r\n }\r\n }\r\n\r\n public selectTime(close?: boolean) {\r\n if (this.hasHourAndMinute()) {\r\n this.ngModel = `${this.formatToLpad(this.hour)}:${this.formatToLpad(this.minute)}`;\r\n this.ngModelChange.emit(this.ngModel);\r\n this.select.emit(this.ngModel);\r\n this.chosen.next({value: this.ngModel, close});\r\n }\r\n }\r\n\r\n public cancelTime() {\r\n this.activeSelection = 'hours';\r\n this.hour = null;\r\n this.minute = null;\r\n this.ngModel = null;\r\n this.ngModelChange.emit(this.ngModel);\r\n this.cancel.emit();\r\n }\r\n\r\n public selectHour(hour): void {\r\n this.activeSelection = 'minutes';\r\n this.hour = hour;\r\n this.minute = this.minute || 0;\r\n this.getPositionPointer();\r\n\r\n if (!this.confirmSelection) {\r\n this.selectTime();\r\n }\r\n }\r\n\r\n public selectMinute(minute): void {\r\n this.activeSelection = 'hours';\r\n this.minute = minute;\r\n this.getPositionPointer();\r\n\r\n if (!this.confirmSelection) {\r\n this.selectTime(true);\r\n }\r\n }\r\n\r\n public isEmpty(): boolean {\r\n return !(typeof this.hour === 'number' && typeof this.minute === 'number');\r\n }\r\n\r\n public formatToLpad(value): string {\r\n if (typeof value === 'number' && value.toString().length < 2) {\r\n value = `0${value}`;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n public getPositionPointer(): void {\r\n if (!this.hasHourAndMinute()) {\r\n return;\r\n }\r\n let oldRotation = this.pointerRotation;\r\n oldRotation = oldRotation >= 360 ? oldRotation - (Math.floor(oldRotation / 360) * 360) : (oldRotation <= -360 ? oldRotation + (Math.floor(Math.abs(oldRotation) / 360) * 360) : oldRotation);\r\n let amountRotate;\r\n const actualRotate = this.activeSelection === 'hours' ? (30 * (this.hour >= 12 ? this.hour - 12 : this.hour)) : 6 * this.minute;\r\n\r\n if (actualRotate - oldRotation < -180) {\r\n amountRotate = 360 - oldRotation + actualRotate;\r\n } else if (actualRotate - oldRotation > 180) {\r\n amountRotate = -(360 - actualRotate + oldRotation);\r\n } else {\r\n amountRotate = actualRotate - oldRotation;\r\n }\r\n\r\n if (Math.abs(amountRotate) === 180) {\r\n amountRotate = actualRotate > oldRotation ? Math.abs(amountRotate) : -amountRotate;\r\n }\r\n\r\n this.pointerRotation += amountRotate;\r\n\r\n }\r\n\r\n public getPositionTopPointer(): string {\r\n if (this.activeSelection === 'hours' && this.hour > 0 && this.hour < 13) {\r\n return '40px';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n public hasHourAndMinute(): boolean {\r\n return typeof this.hour === 'number' && typeof this.minute === 'number';\r\n }\r\n\r\n public validate(): boolean {\r\n return (this.hour < 24 && this.minute < 60) || !this.hasHourAndMinute();\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {UiTimePickerDirective} from './time-picker.directive';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Injectable()\r\nexport class UiTimePickerService {\r\n\r\n timePickers: any = {};\r\n\r\n constructor() {\r\n }\r\n\r\n add(name: string, component: UiTimePickerDirective): void {\r\n if (this.timePickers && this.timePickers[name]) {\r\n return;\r\n }\r\n\r\n this.timePickers[name] = component;\r\n }\r\n\r\n get(name: string): UiTimePickerDirective {\r\n return this.timePickers[name];\r\n }\r\n\r\n remove(name: string) {\r\n delete this.timePickers[name];\r\n }\r\n\r\n closeAll() {\r\n UiElement.trigger(window, 'click');\r\n }\r\n\r\n getAll(): UiTimePickerDirective {\r\n return this.timePickers;\r\n }\r\n\r\n updateModel(name, value) {\r\n this.timePickers[name].ngModel = value;\r\n this.timePickers[name].ngModelChange.emit(value);\r\n }\r\n\r\n}\r\n","import {\r\n Directive, EventEmitter, Input, Output, OnChanges, OnInit, OnDestroy, ElementRef,\r\n AfterViewInit\r\n} from '@angular/core';\r\nimport {UiTimePickerService} from './time-picker.service';\r\nimport {Subject} from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[uiTimePicker]'\r\n})\r\nexport class UiTimePickerDirective implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n @Input() ngModel;\r\n @Input() confirmSelection: boolean;\r\n @Input('theme-class') themeClass: string;\r\n @Input('uiTimePicker') timePicker: string;\r\n @Output() select: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n chosen: Subject<any> = new Subject();\r\n\r\n constructor(public timePickerService: UiTimePickerService, public element: ElementRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.timePickerService.add(this.timePicker, this);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.element.nativeElement.setAttribute('time-picker-name', this.timePicker);\r\n }\r\n\r\n ngOnChanges(value) {\r\n this.chosen.next(value);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.timePickerService.remove(this.timePicker);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n Directive,\r\n EmbeddedViewRef,\r\n ElementRef,\r\n Injector,\r\n Input\r\n} from '@angular/core';\r\n\r\nimport {UiTimePickerService} from './time-picker.service';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiClockComponent} from '../clock/clock.component';\r\n\r\n@Directive({\r\n selector: '[uiTimePickerCaller]'\r\n})\r\nexport class UiTimePickerCallerDirective implements AfterViewInit {\r\n timePicker;\r\n componentRef: any;\r\n componentElement: any;\r\n pickerOpen: boolean;\r\n wrapTimePicker: HTMLElement;\r\n inputElement: HTMLElement;\r\n @Input() pickerEvent: string;\r\n @Input('uiTimePickerCaller') timePickerCaller: string;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector,\r\n private timePickerService: UiTimePickerService,\r\n private elementRef: ElementRef) {\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.timePicker = this.timePickerService.get(this.timePickerCaller);\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.pickerEvent || 'click', (e) => {\r\n this.inputElement = <HTMLElement>document.querySelector(`[time-picker-name=\"${this.timePickerCaller}\"]`);\r\n\r\n this.timePickerService.closeAll();\r\n const position = UiElement.position(this.inputElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: this.inputElement.offsetHeight + position.top\r\n };\r\n\r\n if (!this.pickerOpen) {\r\n this.renderTimePicker(this.timePicker, coordinate);\r\n e.stopPropagation(); // Parando propagação do evento para os eventos do window\r\n }\r\n });\r\n\r\n UiElement.on(window, 'click resize scroll', (e) => {\r\n if (this.pickerOpen) {\r\n if ((!(UiElement.is(e.target, '.wrap-time-picker') || UiElement.closest(e.target, '.wrap-time-picker'))\r\n && !(document.body.clientWidth <= 600 && e.type === 'scroll')) || UiElement.is(e.target, '.overlay')) {\r\n this.closePicker();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getComponentAsElement(componentRef): HTMLElement {\r\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n public setInstances(component, componentRef): void {\r\n const keysComponent = ['ngModel', 'confirmSelection', 'select'];\r\n keysComponent.map(key => componentRef.instance[key] = component[key]);\r\n componentRef.instance.focused = true;\r\n\r\n component.chosen.subscribe(value => componentRef.instance.ngOnChanges(value));\r\n componentRef.instance.cancel.subscribe(() => this.closePicker());\r\n\r\n componentRef.instance.chosen.subscribe(objectValue => {\r\n this.timePickerService.updateModel(this.timePickerCaller, objectValue.value);\r\n if (this.pickerOpen && objectValue.close) {\r\n this.inputElement.focus();\r\n this.closePicker();\r\n }\r\n });\r\n }\r\n\r\n public renderViewClock(element, coordinate, themeClass): void {\r\n this.wrapTimePicker = document.createElement('div');\r\n this.wrapTimePicker.classList.add('wrap-time-picker');\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('overlay');\r\n if (themeClass) {\r\n this.wrapTimePicker.classList.add(themeClass);\r\n }\r\n\r\n this.wrapTimePicker.style.transform = 'scale(0)';\r\n element.classList.add('portrait-only');\r\n this.wrapTimePicker.appendChild(overlay);\r\n this.wrapTimePicker.appendChild(element);\r\n document.body.appendChild(this.wrapTimePicker);\r\n\r\n setTimeout(() => {\r\n const pickerHorizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const pickerVerticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + (document.body.scrollLeft || window.scrollX || window.pageXOffset);\r\n const windowHeight = window.innerHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (pickerHorizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n if (pickerVerticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n this.wrapTimePicker.style.transform = '';\r\n element.style.position = 'absolute';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n\r\n this.wrapTimePicker.classList.add('open');\r\n if (document.body.clientWidth <= 600) {\r\n document.body.style.overflowY = 'hidden';\r\n }\r\n });\r\n }\r\n\r\n public renderTimePicker(component, coordinate): void {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiClockComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n this.componentElement = this.getComponentAsElement(this.componentRef);\r\n\r\n this.setInstances(component, this.componentRef);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n this.renderViewClock(this.componentElement, coordinate, component.themeClass);\r\n this.pickerOpen = true;\r\n }\r\n\r\n public closePicker(): void {\r\n this.wrapTimePicker.classList.remove('open');\r\n setTimeout(() => {\r\n this.pickerOpen = false;\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n document.body.style.overflowY = '';\r\n try {\r\n document.body.removeChild(this.wrapTimePicker);\r\n } catch (e) {\r\n }\r\n }, 280);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiTime'\r\n})\r\nexport class UiTimePipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n if (value.length > 2) {\r\n value = value.substring(0, 2) + ':' + value.substring(2);\r\n }\r\n if (value.length > 5) {\r\n value = value.substring(0, 5);\r\n }\r\n return value;\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, AfterViewInit, OnChanges } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiTimePipe } from './time.pipe';\r\nimport { UiElement } from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskTime][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskTimeDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskTimeDirective),\r\n multi: true\r\n }, UiTimePipe]\r\n})\r\nexport class UiMaskTimeDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [2];\r\n @Input() ngModel: any;\r\n @Input() minTime: string;\r\n @Input() maxTime: string;\r\n @Input() customTime: boolean;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public timePipe: UiTimePipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (changes.minTime && !changes.minTime.firstChange) {\r\n this.minTime = changes.minTime.currentValue;\r\n }\r\n if (changes.maxTime && !changes.maxTime.firstChange) {\r\n this.maxTime = changes.maxTime.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.timePipe.transform(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.timePipe.transform(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.timePipe.transform(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 4);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < 4) {\r\n return { parse: true };\r\n }\r\n\r\n if (control.value) {\r\n const time = control.value.split(':');\r\n\r\n if (!this.customTime && time[0] > 23) {\r\n return { hour: true };\r\n }\r\n\r\n if (!this.customTime && time[1] > 59) {\r\n return { minute: true };\r\n }\r\n\r\n if (this.minTime && this.format(this.minTime).length === 4 && this.format(control.value) < this.format(this.minTime)) {\r\n return { minTime: true };\r\n }\r\n\r\n if (this.maxTime && this.format(this.maxTime).length === 4 && this.format(control.value) > this.format(this.maxTime)) {\r\n return { maxTime: true };\r\n }\r\n\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input') onInput(): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\ninterface UiCurrencyPipeArgs {\r\n noNegative?: boolean;\r\n}\r\n\r\n@Pipe({\r\n name: 'uiCurrency'\r\n})\r\nexport class UiCurrencyPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: UiCurrencyPipeArgs): any {\r\n if (!value && typeof value !== 'number') {\r\n return '';\r\n }\r\n if (typeof value === 'number') {\r\n value = value.toFixed(2);\r\n }\r\n\r\n const isNegative = !(value.toString().match(/[+]/) || !value.toString().match(/[-]/));\r\n\r\n // Verifica se há valor no model (permite remover o '0,00')\r\n const noValue = value.length === 3 && value.replace(',', '').split('').every(n => n === '0');\r\n\r\n // Removendo o que não é dígito qualquer zero adicional no começo da string\r\n value = value.toString().replace(/[^0-9]+/g, '').replace(/^0+/g, '');\r\n\r\n // Adiciona os zeros necessários à esquerda devido a formatação de dinheiro, caso haja valor na model\r\n if (!noValue) {\r\n while (value.length < 3) {\r\n value = '0' + value.toString();\r\n }\r\n }\r\n\r\n\r\n let newCurrency = '';\r\n value = value.split('');\r\n for (let i = 0; i < value.length; i++) {\r\n const valueChar = value[value.length - 1 - i];\r\n if (i === 2) {\r\n newCurrency = ',' + newCurrency;\r\n } else if (i > 3 && !((i - 2) % 3)) {\r\n newCurrency = '.' + newCurrency;\r\n }\r\n newCurrency = valueChar + newCurrency;\r\n }\r\n\r\n // ADICIONANDO O SINAL NEGATIVO\r\n if (args && args.noNegative) {\r\n return newCurrency;\r\n }\r\n\r\n return isNegative ? '-' + newCurrency : newCurrency;\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiElement } from '../../providers/element.provider';\r\nimport { UiCurrencyPipe } from './currency.pipe';\r\n\r\n@Directive({\r\n selector: '[uiMaskCurrency][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCurrencyDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCurrencyDirective),\r\n multi: true\r\n }, UiCurrencyPipe]\r\n})\r\nexport class UiMaskCurrencyDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeViewValue;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n @Input() ngModel: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n @Input() min: number;\r\n @Input() max: number;\r\n @Input() noNegative: boolean;\r\n\r\n constructor(public elementRef: ElementRef, public currencyPipe: UiCurrencyPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (typeof changes.max !== 'undefined') {\r\n this.max = changes.max.currentValue;\r\n }\r\n if (typeof changes.min !== 'undefined') {\r\n this.min = changes.min.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.formatViewValue(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.formatViewValue(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = this.currencyPipe.transform(value, { noNegative: this.noNegative });\r\n const removeGroupSep = new RegExp('[^\\\\d\\\\,-]+', 'g');\r\n value = value.toString().replace(removeGroupSep, '');\r\n value = parseFloat(value.replace(',', '.'));\r\n return typeof value === 'number' && !isNaN(value) ? value : null;\r\n }\r\n\r\n formatViewValue(value) {\r\n const isDeletingZero = this.beforeViewValue === ('0,00') && value.length < this.beforeViewValue.length;\r\n value = isDeletingZero ? '' : value;\r\n return this.currencyPipe.transform(value, { noNegative: this.noNegative });\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n // if (control.value && this.format(control.value).length < 11) {\r\n // return {parse: true};\r\n // }\r\n\r\n if (typeof this.min !== 'undefined' && control.value && this.format(control.value) < this.min) {\r\n return { min: true };\r\n }\r\n\r\n if (typeof this.max !== 'undefined' && control.value && this.format(control.value) > this.max) {\r\n return { max: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n // const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.beforeViewValue = rawValue;\r\n this.renderViaInput(rawValue);\r\n // UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import {\r\n Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output,\r\n ViewContainerRef, ViewChild, TemplateRef, AfterViewInit, OnChanges\r\n} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\r\nimport {UiSelectFilterPipe} from './select-filter.pipe';\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n templateUrl: 'select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: UiSelectComponent,\r\n multi: true,\r\n }],\r\n})\r\n\r\nexport class UiSelectComponent implements OnInit, AfterViewInit, OnChanges {\r\n @Input('dark-class') darkClass;\r\n @Input() input;\r\n @Input() disabled;\r\n @Input() chosen;\r\n @Output() ngModelChange = new EventEmitter();\r\n selected;\r\n viewRef;\r\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\r\n @ViewChild('selectNative', { static: true }) selectNative;\r\n selectedNative;\r\n search;\r\n @Input() value;\r\n @Input() label;\r\n @Input() options;\r\n @Input() ngModel;\r\n optionsExternal;\r\n @ViewChild(NgModel) model: NgModel;\r\n isMobile = UiElement.isMobile;\r\n\r\n constructor(public element: ElementRef, public viewContainerRef: ViewContainerRef) {\r\n this.options = [];\r\n this.optionsExternal = [];\r\n }\r\n\r\n ngOnInit() {\r\n this.element.nativeElement.setAttribute('tabindex', 0);\r\n this.selectOption();\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n ngOnChanges(changes) {\r\n this.element.nativeElement.setAttribute('disabled', this.disabled);\r\n if (changes.options || changes.ngModel) {\r\n this.selectOption();\r\n }\r\n if (changes.ngModel && !changes.ngModel.firstChange) {\r\n this.ngModel = changes.ngModel.currentValue;\r\n\r\n if (changes.ngModel.currentValue) {\r\n this.selectOption();\r\n } else {\r\n this.onChangeSelect(changes.ngModel.currentValue);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n this.close();\r\n\r\n const closestFieldset = UiElement.closest(this.element.nativeElement, 'fieldset:disabled');\r\n\r\n if (!this.disabled && !closestFieldset) {\r\n if (this.isMobile()) {\r\n this.selectNative.nativeElement.focus();\r\n } else {\r\n setTimeout(() => {\r\n const position = UiElement.position(this.element.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n this.render(coordinate);\r\n });\r\n }\r\n } else {\r\n this.element.nativeElement.blur();\r\n }\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n onBlur(event) {\r\n if (!event.relatedTarget || !(UiElement.is(event.relatedTarget, 'ui-select-option') || UiElement.closest(event.relatedTarget, '.wrap-select'))) {\r\n this.close();\r\n }\r\n }\r\n\r\n\r\n render(coordinate) {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode, coordinate);\r\n }\r\n });\r\n }\r\n\r\n open(element, coordinate) {\r\n setTimeout(() => {\r\n const horizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const verticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + (window.scrollX || window.pageXOffset);\r\n const windowHeight = document.body.clientHeight + (window.scrollY || window.pageYOffset);\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n if (coordinate.y <= 0) {\r\n coordinate.y = 0;\r\n }\r\n\r\n if (this.darkClass) {\r\n element.classList.add(this.darkClass);\r\n }\r\n\r\n element.style.transform = '';\r\n // element.querySelector('ui-card').style.maxHeight = window.innerHeight + 'px';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n element.style.width = this.element.nativeElement.clientWidth + 'px';\r\n\r\n element.querySelector('.selected').addEventListener('blur', (event) => {\r\n if (!event.relatedTarget || !(UiElement.is(event.relatedTarget, 'ui-select-option') || UiElement.is(event.relatedTarget, '.input-select'))) {\r\n this.close();\r\n }\r\n });\r\n if (this.chosen) {\r\n element.querySelector('.input-select').addEventListener('blur', (event) => {\r\n if (!event.relatedTarget || !(UiElement.is(event.relatedTarget, 'ui-select-option') || UiElement.is(event.relatedTarget, '.selected'))) {\r\n this.close();\r\n }\r\n });\r\n element.querySelector('.input-select').click();\r\n element.scrollTo(0, 0);\r\n } else {\r\n element.querySelector('.selected').focus();\r\n }\r\n\r\n element.classList.add('open');\r\n });\r\n }\r\n\r\n close() {\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n }\r\n }\r\n\r\n onChangeSelect(select) {\r\n if (select) {\r\n this.model = select[this.value];\r\n this.selected = select[this.label];\r\n this.ngModelChange.emit(select[this.value]);\r\n } else {\r\n this.search = select;\r\n this.model = select;\r\n this.selected = select;\r\n this.ngModelChange.emit(select);\r\n }\r\n }\r\n\r\n selectOption() {\r\n this.options.forEach(option => {\r\n if (option[this.value] === this.ngModel) {\r\n this.onChangeSelect(option);\r\n }\r\n });\r\n }\r\n\r\n writeValue() {\r\n }\r\n\r\n registerOnChange() {\r\n }\r\n\r\n registerOnTouched() {\r\n }\r\n}\r\n\r\n","import {Component, ElementRef, HostListener, Inject, Input, OnInit} from '@angular/core';\r\nimport {UiSelectComponent} from '../select.component';\r\nimport {UiElement} from '../../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-select-option',\r\n templateUrl: 'option.component.html',\r\n styleUrls: ['./option.component.scss']\r\n})\r\n\r\nexport class UiSelectOptionComponent implements OnInit {\r\n @Input() value;\r\n @Input() label;\r\n @Input() internal;\r\n\r\n constructor(@Inject(UiSelectComponent) private selectComponent: UiSelectComponent, private element: ElementRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.element.nativeElement.setAttribute('tabindex', 0);\r\n if (!this.internal) {\r\n this.selectComponent.optionsExternal.push({\r\n value: this.value,\r\n title: this.label\r\n });\r\n }\r\n }\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.selectComponent.ngModelChange.next(this.value);\r\n this.selectComponent.model = this.value;\r\n this.selectComponent.selected = this.label;\r\n this.element.nativeElement.blur();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onEnter(e) {\r\n if (e.keyCode === 13) {\r\n this.element.nativeElement.click();\r\n }\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n onBlur(event) {\r\n if (!event.relatedTarget || !(UiElement.is(event.relatedTarget, 'ui-select-option') || UiElement.is(event.relatedTarget, '.selected') || UiElement.is(event.relatedTarget, '.input-select'))) {\r\n this.selectComponent.close();\r\n }\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {unaccent} from '../utils/functions/unaccent';\r\n\r\n@Pipe({\r\n name: 'selectFilter',\r\n pure: false\r\n})\r\nexport class UiSelectFilterPipe implements PipeTransform {\r\n transform(value, filterBy, name) {\r\n filterBy = filterBy ? unaccent(filterBy.toLowerCase()) : null;\r\n return filterBy ? value.filter(item =>\r\n unaccent(item[name].toLowerCase()).indexOf(filterBy) !== -1) : value;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {unaccent} from '../functions/unaccent';\r\n\r\n@Pipe({\r\n name: 'uiFilter',\r\n pure: false\r\n})\r\nexport class UiFilterPipe implements PipeTransform {\r\n transform(value, filterBy, name) {\r\n filterBy = filterBy ? unaccent(filterBy.toLowerCase()) : null;\r\n return filterBy ? value.filter(item =>\r\n unaccent(item[name].toLowerCase()).indexOf(filterBy) !== -1) : value;\r\n }\r\n}\r\n","import {AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, OnInit} from '@angular/core';\r\nimport {UiColor} from '../utils/providers/color.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {animate, style, transition, trigger} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'ui-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [trigger(\r\n 'image', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 1\r\n }))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n }),\r\n animate('2800ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 0,\r\n }))\r\n ])\r\n ],\r\n ), trigger(\r\n 'letter', [\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 0,\r\n }))\r\n ])\r\n ],\r\n )]\r\n})\r\nexport class UiAvatarComponent implements OnInit, AfterViewInit, OnChanges {\r\n newImage: string;\r\n showImage: boolean;\r\n grayscale: boolean;\r\n\r\n @Input() name: string;\r\n @Input() color: string;\r\n @Input() image: string;\r\n @Input() size: number;\r\n @Input() nameLength: number;\r\n @Input() initials: boolean;\r\n\r\n constructor(private element: ElementRef) {\r\n this.nameLength = 1;\r\n this.initials = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.newImage = this.image;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setSize();\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.name && !changes.name.firstChange) {\r\n this.name = changes.name.currentValue;\r\n }\r\n if (changes.color && !changes.color.firstChange) {\r\n this.color = changes.color.currentValue;\r\n }\r\n if (changes.image && !changes.image.firstChange) {\r\n if (!changes.image.currentValue) {\r\n this.showImage = false;\r\n this.newImage = null;\r\n }\r\n this.image = changes.image.currentValue;\r\n }\r\n if (changes.size && !changes.size.firstChange) {\r\n this.size = changes.size.currentValue;\r\n this.setSize();\r\n }\r\n if (changes.nameLength && !changes.nameLength.firstChange) {\r\n this.nameLength = changes.nameLength.currentValue;\r\n }\r\n }\r\n\r\n isBright(color): boolean {\r\n return UiColor.isBright(color);\r\n }\r\n\r\n loadedImage(): void {\r\n this.showImage = true;\r\n this.animateImage();\r\n }\r\n\r\n animateImage(): void {\r\n this.grayscale = true;\r\n setTimeout(() => {\r\n this.grayscale = false;\r\n this.newImage = this.image;\r\n }, 1120);\r\n }\r\n\r\n setSize() {\r\n if (this.size) {\r\n const wrap = this.element.nativeElement.querySelector('.wrap');\r\n const empty = this.element.nativeElement.querySelector('.empty');\r\n if (empty) {\r\n UiElement.css(empty, 'font-size', `${Math.round(this.size / 100 * 36.36)}px`);\r\n }\r\n UiElement.css(wrap, 'width', `${this.size}px`);\r\n UiElement.css(wrap, 'height', `${this.size}px`);\r\n }\r\n }\r\n\r\n getFontSize() {\r\n return Math.round(this.size / 100 * 36.36);\r\n }\r\n\r\n getName(): string {\r\n if (this.name) {\r\n if (this.initials) {\r\n const ini = this.name.trim().split(' ').map((nome) => { return nome.charAt(0).toUpperCase(); });\r\n return ini[0] + ini[ini.length - 1];\r\n } else {\r\n return this.name.trim().substr(0, this.nameLength).toUpperCase();\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiFloat'\r\n})\r\nexport class UiFloatPipe implements PipeTransform {\r\n\r\n transform(value: any, decimal: number = null, noNegative?: boolean): any {\r\n if (!value && typeof value !== 'number') {\r\n return '';\r\n }\r\n\r\n if (!decimal || isNaN(decimal)) {\r\n const decimals = value.toString().split('.');\r\n decimal = decimals.length > 1 ? decimals[1].length : 0;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n value = value.toFixed(decimal);\r\n }\r\n\r\n const isNegative = !(value.toString().match(/[+]/) || !value.toString().match(/[-]/));\r\n\r\n // Verifica se há valor no model (permite remover o '0,00')\r\n const noValue = decimal && value.length === (decimal + 1) && value.replace(',', '').split('').every(n => n === '0');\r\n\r\n // Removendo o que não é dígito qualquer zero adicional no começo da string\r\n value = value.toString().replace(/[^0-9]+/g, '').replace(/^0+/g, '');\r\n\r\n // Adiciona os zeros necessários à esquerda, caso haja valor na model\r\n if (!noValue) {\r\n while (value.length < (decimal + 1)) {\r\n value = '0' + value.toString();\r\n }\r\n }\r\n\r\n let newValue = '';\r\n value = value.split('');\r\n for (let i = 0; i < value.length; i++) {\r\n const valueChar = value[value.length - 1 - i];\r\n if (decimal && i === decimal) {\r\n newValue = ',' + newValue;\r\n } else if (\r\n i > decimal &&\r\n !((i - decimal) % 3)\r\n ) {\r\n newValue = '.' + newValue;\r\n }\r\n newValue = valueChar + newValue;\r\n }\r\n\r\n // ADICIONANDO O SINAL NEGATIVO\r\n if (noNegative) {\r\n return newValue;\r\n }\r\n\r\n return isNegative ? '-' + newValue : newValue;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input,\r\n Output, OnChanges, OnInit\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { UiElement } from '../../providers/element.provider';\r\nimport { UiFloatPipe } from './float.pipe';\r\n\r\n@Directive({\r\n selector: '[uiMaskFloat][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskFloatDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskFloatDirective),\r\n multi: true\r\n }, UiFloatPipe]\r\n})\r\nexport class UiMaskFloatDirective implements ControlValueAccessor, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeViewValue;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n @Input() uiMaskFloat: number = 2;\r\n @Input() decimal: number;\r\n @Input() max: number;\r\n @Input() min: number;\r\n @Input() ngModel: any;\r\n @Input() noNegative: boolean;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public floatPipe: UiFloatPipe) {\r\n this.decimal = this.uiMaskFloat;\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (typeof changes.uiMaskFloat !== 'undefined') {\r\n this.uiMaskFloat = changes.uiMaskFloat.currentValue || 2;\r\n this.decimal = this.uiMaskFloat;\r\n }\r\n if (typeof changes.decimal !== 'undefined') {\r\n this.decimal = changes.decimal.currentValue || 2;\r\n this.uiMaskFloat = this.decimal;\r\n }\r\n if (typeof changes.max !== 'undefined') {\r\n this.max = changes.max.currentValue;\r\n }\r\n if (typeof changes.min !== 'undefined') {\r\n this.min = changes.min.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.formatViewValue(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value =\r\n this.formatViewValue(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = this.floatPipe.transform(value, +this.decimal, this.noNegative);\r\n const removeGroupSep = new RegExp('[^\\\\d\\\\,-]+', 'g');\r\n value = value.toString().replace(removeGroupSep, '');\r\n value = parseFloat(value.replace(',', '.'));\r\n return typeof value === 'number' && !isNaN(value) ? value : null;\r\n }\r\n\r\n formatViewValue(value) {\r\n let standard = '0,';\r\n standard = standard.padEnd(+this.decimal + 2, '0');\r\n const isDeletingZero = this.beforeViewValue === (standard) && value.length < this.beforeViewValue.length;\r\n value = isDeletingZero ? '' : value;\r\n return this.floatPipe.transform(value, +this.decimal, this.noNegative);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (typeof this.min !== 'undefined' && control.value && this.format(control.value) < this.min) {\r\n return { min: true };\r\n }\r\n\r\n if (typeof this.max !== 'undefined' && control.value && this.format(control.value) > this.max) {\r\n return { max: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.beforeViewValue = rawValue;\r\n this.renderViaInput(rawValue);\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { UiElement } from '../utils/providers/element.provider';\r\n\r\n/**\r\n * TODO: Persist tooltip.\r\n * */\r\n@Directive({\r\n selector: '[uiTooltip]'\r\n})\r\nexport class TooltipDirective implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() uiTooltip: string;\r\n @Input() top: boolean;\r\n @Input() left: boolean;\r\n @Input() right: boolean;\r\n @Input() bottom: boolean;\r\n\r\n onShow: Function;\r\n onHide: Function;\r\n wrap: HTMLElement;\r\n class: string;\r\n\r\n constructor(private element: ElementRef) {\r\n this.onShow = (event) => {\r\n this.show(event);\r\n };\r\n this.onHide = () => {\r\n this.hide();\r\n };\r\n\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.top && !this.left && !this.right) {\r\n this.bottom = true;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n UiElement.on(this.element.nativeElement, 'mouseenter', this.onShow);\r\n UiElement.on(this.element.nativeElement, 'mouseleave', this.onHide);\r\n }\r\n\r\n ngOnDestroy() {\r\n UiElement.off(this.element.nativeElement, 'mouseenter', this.onShow);\r\n UiElement.off(this.element.nativeElement, 'mouseleave', this.onHide);\r\n this.hide();\r\n }\r\n\r\n setClass() {\r\n if (this.top) {\r\n this.class = 'top';\r\n }\r\n if (this.left) {\r\n this.class = 'left';\r\n }\r\n if (this.right) {\r\n this.class = 'right';\r\n }\r\n if (this.bottom) {\r\n this.class = 'bottom';\r\n }\r\n\r\n }\r\n\r\n show(event) {\r\n if (!this.uiTooltip) {\r\n return;\r\n }\r\n\r\n this.setClass();\r\n\r\n this.wrap = document.createElement('div');\r\n this.wrap.classList.add('wrap-tooltip', this.class);\r\n this.wrap.innerText = this.uiTooltip;\r\n\r\n document.body.appendChild(this.wrap);\r\n const elementPosition = UiElement.position(this.element.nativeElement);\r\n let positionLeft: number;\r\n let positionTop: number;\r\n\r\n if (this.top || this.bottom) {\r\n positionLeft = (elementPosition.left + this.element.nativeElement.clientWidth / 2) - (this.wrap.clientWidth / 2);\r\n\r\n positionLeft = positionLeft > 0 ? positionLeft : 0;\r\n positionTop = elementPosition.top;\r\n\r\n const checkHeight = window.innerHeight - 32 >= this.element.nativeElement.clientHeight + positionTop;\r\n\r\n if (this.bottom && checkHeight) {\r\n positionTop += this.element.nativeElement.clientHeight;\r\n } else {\r\n positionTop -= this.wrap.clientHeight;\r\n }\r\n }\r\n\r\n if (this.left || this.right) {\r\n positionTop = (elementPosition.top + this.element.nativeElement.clientHeight / 2) - (this.wrap.clientHeight / 2);\r\n positionLeft = elementPosition.left;\r\n\r\n if (this.left && positionLeft >= this.wrap.clientWidth) {\r\n positionLeft -= this.wrap.clientWidth;\r\n } else {\r\n positionLeft += this.element.nativeElement.clientWidth;\r\n }\r\n }\r\n\r\n UiElement.css(this.wrap, 'left', `${Math.round(positionLeft)}px`);\r\n UiElement.css(this.wrap, 'top', `${Math.round(positionTop)}px`);\r\n\r\n setTimeout(() => this.wrap && this.wrap.classList.add('show'));\r\n }\r\n\r\n hide() {\r\n if (!this.wrap) {\r\n return;\r\n }\r\n this.wrap.classList.add('hide');\r\n const tooltips = Array.from(document.querySelectorAll('.wrap-tooltip'));\r\n tooltips.forEach(\r\n tooltip => tooltip.remove()\r\n );\r\n }\r\n}\r\n","import {AfterViewInit, Component, forwardRef, Inject, Input, OnChanges, OnInit} from '@angular/core';\r\nimport {UiChosenComponent} from '../chosen.component';\r\n\r\n@Component({\r\n selector: 'ui-chosen-option',\r\n templateUrl: './chosen-option.component.html',\r\n styleUrls: ['./chosen-option.component.scss']\r\n})\r\nexport class UiChosenOptionComponent implements AfterViewInit, OnChanges {\r\n\r\n @Input() label;\r\n @Input() value;\r\n @Input() disabled;\r\n\r\n active: boolean;\r\n hidden: boolean;\r\n\r\n constructor(@Inject(forwardRef(() => UiChosenComponent)) private parent: any) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.parent.loadOption(this);\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (this.active && changes.label && !changes.label.firstChange) {\r\n this.label = changes.label.currentValue;\r\n\r\n this.parent.updateOptionLabel(this.label);\r\n }\r\n }\r\n\r\n onSelect() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.parent.select(this);\r\n }\r\n\r\n setActive(active) {\r\n this.active = active;\r\n }\r\n}\r\n","import {Component, ContentChildren, Input, OnInit, QueryList} from '@angular/core';\r\nimport {UiChosenOptionComponent} from '../chosen-option/chosen-option.component';\r\n\r\n@Component({\r\n selector: 'ui-chosen-group',\r\n templateUrl: './chosen-group.component.html',\r\n styleUrls: ['./chosen-group.component.scss']\r\n})\r\nexport class UiChosenGroupComponent implements OnInit {\r\n\r\n @Input() label: string;\r\n\r\n @ContentChildren(UiChosenOptionComponent) options: QueryList<UiChosenOptionComponent>;\r\n\r\n hidden: boolean;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","// @ts-ignore\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { unaccent } from '../utils/functions/unaccent';\r\nimport { UiElement } from '../utils/providers/element.provider';\r\nimport { UiChosenGroupComponent } from './chosen-group/chosen-group.component';\r\nimport { UiChosenOptionComponent } from './chosen-option/chosen-option.component';\r\n\r\n// TODO: Animation\r\n// TODO: Export render, open, close\r\n\r\n@Component({\r\n selector: 'ui-chosen',\r\n templateUrl: './chosen.component.html',\r\n styleUrls: ['./chosen.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: UiChosenComponent,\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiChosenComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UiChosenComponent\r\n implements OnInit, AfterViewInit, OnChanges, AfterContentInit {\r\n viewRef: any;\r\n value: any;\r\n focused: boolean;\r\n searchText: string;\r\n isMobile: boolean;\r\n control: any;\r\n\r\n @Input() search: any;\r\n @Input() ngModel: any;\r\n @Input() required: boolean;\r\n @Input() disabled: boolean;\r\n @Input() placeholder: string;\r\n @Input() persistPlaceholder: string;\r\n\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @ViewChild('optionTemplate', { static: true }) optionTemplate: TemplateRef<any>;\r\n @ViewChild('inputSearch') inputSearch: ElementRef;\r\n @ViewChild('nativeSelect') nativeSelect: ElementRef;\r\n\r\n /**\r\n * O param 'descendants' fala para o @ContentChildren pegar todos components UiChosenOptionComponent\r\n * mesmo que eles estejam dentro de outros components(UiChosenGroupComponent)\r\n */\r\n @ContentChildren(UiChosenOptionComponent, { descendants: true })\r\n options: QueryList<UiChosenOptionComponent>;\r\n\r\n // Pegando os options que foram colocados sem o group\r\n @ContentChildren(UiChosenOptionComponent) onlyOptions: QueryList<\r\n UiChosenOptionComponent\r\n >;\r\n\r\n @ContentChildren(UiChosenGroupComponent, { descendants: true })\r\n optionsGroup: QueryList<UiChosenGroupComponent>;\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private viewContainerRef: ViewContainerRef,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {\r\n this.element.nativeElement.setAttribute(\r\n 'tabindex',\r\n this.element.nativeElement.getAttribute('tabindex') || '0'\r\n );\r\n\r\n UiElement.on(window, 'resize scroll', () => {\r\n this.close();\r\n });\r\n\r\n if (/Mobi|Android/.test(navigator.userAgent)) {\r\n this.isMobile = true;\r\n\r\n this.element.nativeElement.classList.add('mobile');\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (\r\n !isNullOrUndefined(changes.ngModel) &&\r\n !changes.ngModel.firstChange\r\n ) {\r\n this.setValue(changes.ngModel.currentValue);\r\n }\r\n\r\n if (changes.required && !changes.required.firstChange) {\r\n this.required = changes.required.currentValue;\r\n }\r\n\r\n if (changes.disabled) {\r\n this.disabled = changes.disabled.currentValue;\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n if (!isNullOrUndefined(this.ngModel)) {\r\n setTimeout(() => this.setValue(this.ngModel));\r\n }\r\n }\r\n writeValue() {}\r\n\r\n registerOnChange() {}\r\n\r\n registerOnTouched() {}\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (this.required && !control.value && control.value !== 0) {\r\n return { required: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n if (this.isMobile) {\r\n this.nativeSelect.nativeElement.focus();\r\n return;\r\n }\r\n\r\n if (this.focused) {\r\n return;\r\n }\r\n\r\n if (this.disabled) {\r\n this.element.nativeElement.blur();\r\n return;\r\n }\r\n\r\n this.clearFilter();\r\n\r\n if (this.search) {\r\n setTimeout(() => this.inputSearch.nativeElement.focus(), 100);\r\n }\r\n\r\n this.focused = true;\r\n\r\n const position = UiElement.position(this.element.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top + this.element.nativeElement.clientHeight\r\n };\r\n\r\n this.render(coordinate);\r\n }\r\n\r\n render(coordinate) {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(\r\n this.optionTemplate\r\n );\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (\r\n rootNode.clientWidth &&\r\n !rootNode.classList.contains('wrap-chosen-overlay')\r\n ) {\r\n this.open(rootNode, coordinate);\r\n }\r\n });\r\n }\r\n\r\n open(element, coordinate) {\r\n element.style.top = 0;\r\n\r\n setTimeout(() => {\r\n const verticalCoveringArea =\r\n UiElement.position(this.element.nativeElement, true).top +\r\n element.clientHeight;\r\n const bodyHeight = document.body.clientHeight;\r\n\r\n if (verticalCoveringArea + this.element.nativeElement.clientHeight > bodyHeight) {\r\n coordinate.y -=\r\n verticalCoveringArea -\r\n bodyHeight +\r\n this.element.nativeElement.clientHeight;\r\n }\r\n\r\n if (coordinate.y <= 0) {\r\n coordinate.y = 0;\r\n }\r\n\r\n const content = element.querySelector('ui-card > .content');\r\n const contentHeight = content.clientHeight;\r\n\r\n const search = element.querySelector('ui-card > .search');\r\n const searchHeight = search ? search.clientHeight : 0;\r\n\r\n content.style.maxHeight =\r\n (contentHeight > bodyHeight\r\n ? bodyHeight - searchHeight\r\n : contentHeight) + 'px';\r\n\r\n element.style.transform = '';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n\r\n const card = element.querySelector('ui-card');\r\n card.style.maxHeight = window.innerHeight + 'px';\r\n card.style.maxWidth = window.innerWidth - 16 + 'px';\r\n card.style.width = this.element.nativeElement.clientWidth + 'px';\r\n\r\n element.classList.add('open');\r\n });\r\n }\r\n\r\n close() {\r\n this.focused = false;\r\n\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(\r\n () =>\r\n this.viewContainerRef.remove(\r\n this.viewContainerRef.indexOf(viewRef)\r\n ),\r\n 280\r\n );\r\n }\r\n }\r\n\r\n setValue(value) {\r\n let updated = false;\r\n\r\n this.options.map(option => {\r\n if (option.value != value) {\r\n // tslint:disable-line\r\n option.setActive(false);\r\n return;\r\n }\r\n\r\n updated = true;\r\n this.value = option.label;\r\n option.setActive(true);\r\n });\r\n\r\n if (!updated) {\r\n this.value = null;\r\n }\r\n\r\n this.element.nativeElement.value = this.value;\r\n }\r\n\r\n select(option) {\r\n this.control.markAsDirty();\r\n this.control.markAsTouched();\r\n this.ngModelChange.emit(option.value);\r\n this.close();\r\n }\r\n\r\n filterList() {\r\n this.options.map(option => {\r\n option.hidden = this.searchText\r\n ? !unaccent(option.label.toLowerCase()).includes(\r\n unaccent(this.searchText.toLowerCase())\r\n )\r\n : false;\r\n });\r\n\r\n this.optionsGroup.map(\r\n group =>\r\n (group.hidden =\r\n group.options.filter(option => !option.hidden).length === 0)\r\n );\r\n }\r\n\r\n clearFilter() {\r\n this.searchText = null;\r\n this.filterList();\r\n }\r\n\r\n changeNativeSelect() {\r\n setTimeout(() => {\r\n this.control.markAsDirty();\r\n this.control.markAsTouched();\r\n this.ngModelChange.emit(this.ngModel);\r\n });\r\n }\r\n\r\n trackByValue(index, option) {\r\n return option.value;\r\n }\r\n\r\n updateOptionLabel(label) {\r\n this.value = label;\r\n }\r\n\r\n loadOption(option: UiChosenOptionComponent) {\r\n if (!isNullOrUndefined(this.ngModel) && option.value === this.ngModel) {\r\n this.value = option.label;\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCreditCard'\r\n})\r\nexport class UiCreditCardPipe implements PipeTransform {\r\n\r\n transform(value: string, args?: any) {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n\r\n if (value.length > 4) {\r\n value = `${value.substring(0, 4)} ${value.substring(4)}`;\r\n }\r\n\r\n if (value.length > 9) {\r\n value = `${value.substring(0, 9)} ${value.substring(9)}`;\r\n }\r\n\r\n if(value.length > 14) {\r\n value = `${value.substring(0, 14)} ${value.substring(14)}`;\r\n }\r\n\r\n if(value.length > 19) {\r\n value = value.substring(0, 19);\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n","import { Directive, forwardRef, OnChanges, AfterViewInit, Input, EventEmitter, Output, ElementRef, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, Validator, FormControl } from '@angular/forms';\r\nimport { UiCreditCardPipe, UiElement } from '../../../smn-ui.module';\r\n\r\n@Directive({\r\n selector: '[uiMaskCreditCard][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCreditCard),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCreditCard),\r\n multi: true\r\n }, UiCreditCardPipe]\r\n})\r\nexport class UiMaskCreditCard implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n loaded: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [4, 9, 14];\r\n @Input() ngModel: any;\r\n @Input() UiMaskCreditCard;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public creditCardPipe: UiCreditCardPipe, private changeDetector: ChangeDetectorRef) { }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.loaded = true;\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n\r\n this.elementRef.nativeElement.value = this.creditCardPipe.transform(this.ngModel);\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.creditCardPipe.transform(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 16);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < 16) {\r\n return { parse: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n}\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"ui-expansion-panel\",\r\n templateUrl: \"./expansion-panel.component.html\",\r\n styleUrls: [\"./expansion-panel.component.scss\"],\r\n animations: [\r\n trigger(\"expandAnimation\", [\r\n transition(\":enter\", [\r\n style({\r\n height: \"0\"\r\n }),\r\n animate(\r\n \"280ms cubic-bezier(0.0, 0.0, 0.2, 1)\",\r\n style({\r\n height: \"*\"\r\n })\r\n )\r\n ]),\r\n transition(\":leave\", [\r\n style({\r\n height: \"*\"\r\n }),\r\n animate(\r\n \"280ms cubic-bezier(0.0, 0.0, 0.2, 1)\",\r\n style({\r\n height: \"0\"\r\n })\r\n )\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class ExpansionPanelComponent implements OnInit {\r\n element: any;\r\n\r\n @Input() disabled: boolean;\r\n @Input() noArrow: boolean;\r\n @Input() label: string;\r\n @Input() description: string;\r\n @Input() color: string = 'primary';\r\n\r\n @Input() open: boolean;\r\n @Output() openChange: EventEmitter<boolean> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n toggle() {\r\n if (!this.disabled) {\r\n this.open = !this.open;\r\n this.openChange.emit(this.open);\r\n }\r\n }\r\n}\r\n","import {ContentChild, Directive, TemplateRef} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[uiTabContent]'\r\n})\r\nexport class UiTabContentDirective {\r\n @ContentChild(TemplateRef) template: TemplateRef<any>;\r\n\r\n constructor() { }\r\n}\r\n","import {ContentChild, Directive, TemplateRef} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[uiTabLabel]'\r\n})\r\nexport class UiTabLabelDirective {\r\n @ContentChild(TemplateRef) template: TemplateRef<any>;\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport {UiTabContentDirective} from './tab-content.directive';\r\nimport {UiTabLabelDirective} from './tab-label.directive';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ui-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrls: ['./tab.component.scss']\r\n})\r\nexport class UiTabComponent implements OnInit, OnDestroy {\r\n @ViewChild('tabContent', { static: true }) tabContent: TemplateRef<any>;\r\n @ContentChild(UiTabContentDirective) templateContent: UiTabContentDirective;\r\n @ContentChild(UiTabLabelDirective) templateLabel: UiTabLabelDirective;\r\n @Input() label: string;\r\n @Input() icon: string;\r\n @Input() disabled: string;\r\n private subscription: Subscription;\r\n isActive: boolean;\r\n index: number;\r\n indexActivatedTab: number;\r\n tabChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n loaded: boolean;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private changeDetectorRef: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.subscription = this.tabChange.subscribe(value => {\r\n if (value) {\r\n this.loaded = true;\r\n }\r\n this.isActive = value;\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n}\r\n","import {AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnInit} from '@angular/core';\r\nimport {UiTabComponent} from '../tab.component';\r\nimport {UiElement} from '../../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-tab-header',\r\n templateUrl: './tab-header.component.html',\r\n styleUrls: ['./tab-header.component.scss']\r\n})\r\nexport class UiTabHeaderComponent implements OnInit, AfterViewInit, AfterViewChecked {\r\n @Input() topIcon: boolean;\r\n\r\n tabsContainer: HTMLElement;\r\n inkBar: HTMLElement;\r\n showInkBar: boolean;\r\n increment: number;\r\n hasRightScroll: boolean;\r\n hasLeftScroll: boolean;\r\n\r\n constructor(private element: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\r\n this.increment = 90;\r\n }\r\n\r\n ngOnInit() {\r\n this.tabsContainer = this.element.nativeElement.querySelector('.tabs-container');\r\n this.inkBar = this.element.nativeElement.querySelector('.ink-bar');\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.inkBar.addEventListener('transitionend', () => {\r\n this.showInkBar = false;\r\n });\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.hasRightScroll = this.checkRightScroll();\r\n this.hasLeftScroll = this.checkLeftScroll();\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Move o ink bar para a tab que está ativa\r\n **/\r\n moveInkBarTo(tabRef: HTMLElement) {\r\n this.showInkBar = true;\r\n this.changeDetectorRef.detectChanges();\r\n\r\n setTimeout(() => {\r\n UiElement.css(this.inkBar, 'left', `${tabRef.offsetLeft}px`);\r\n UiElement.css(this.inkBar, 'width', `${tabRef.clientWidth}px`);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna se o scroll left ja saiu da posição 0\r\n * */\r\n checkLeftScroll() {\r\n return this.tabsContainer.scrollLeft > 0;\r\n }\r\n\r\n /**\r\n * Retorna se deve exibir o control da direita\r\n * */\r\n checkRightScroll() {\r\n const widthWithScroll = this.tabsContainer.scrollLeft + this.tabsContainer.clientWidth;\r\n return widthWithScroll < this.tabsContainer.scrollWidth;\r\n }\r\n\r\n /**\r\n * Altera o valor do scroll\r\n **/\r\n updateScroll(value: number) {\r\n const scrollLeft = this.tabsContainer.scrollLeft;\r\n UiElement.animate(\r\n this.tabsContainer,\r\n 'borderSpacing',\r\n scrollLeft,\r\n scrollLeft + value,\r\n 280,\r\n null,\r\n (tick) => {\r\n this.tabsContainer.scrollLeft = tick;\r\n });\r\n }\r\n}\r\n","import {animate, AnimationTriggerMetadata, state, style, transition, trigger} from '@angular/animations';\r\n\r\nconst timing = 280;\r\nexport const tabFakeAnimation: AnimationTriggerMetadata = trigger('tabFakeAnimation',\r\n [\r\n transition(':enter', animate(`${timing}ms cubic-bezier(0.0, 0.0, 0.2, 1)`)),\r\n transition(':leave', animate(`${timing}ms cubic-bezier(0.0, 0.0, 0.2, 1)`)),\r\n ]\r\n);\r\n\r\nexport const tabTransform: AnimationTriggerMetadata = trigger('tabTransform',\r\n [\r\n state('left', style({\r\n transform: 'translateX(-100%)',\r\n position: 'absolute'\r\n })),\r\n state('right', style({\r\n transform: 'translateX(100%)',\r\n position: 'absolute'\r\n })),\r\n state('active', style({\r\n transform: 'translateX(0)',\r\n position: 'relative'\r\n })),\r\n transition('left <=> right', animate(timing)),\r\n transition('active <=> right', animate(timing)),\r\n transition('left <=> active', animate(timing)),\r\n ]\r\n);\r\n","import {\r\n AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, Input, QueryList, ViewChild\r\n} from '@angular/core';\r\nimport {UiTabComponent} from '../tab.component';\r\nimport {UiTabHeaderComponent} from '../header/tab-header.component';\r\nimport {AnimationEvent} from '@angular/animations';\r\nimport {tabFakeAnimation, tabTransform} from './tab-group.animation';\r\n\r\n@Component({\r\n selector: 'ui-tab-group',\r\n templateUrl: './tab-group.component.html',\r\n styleUrls: ['./tab-group.component.scss'],\r\n animations: [tabFakeAnimation, tabTransform]\r\n})\r\nexport class UiTabGroupComponent implements AfterViewInit {\r\n @ContentChildren(UiTabComponent) tabsQueryList: QueryList<UiTabComponent>;\r\n @ViewChild(UiTabHeaderComponent, { static: true }) tabHeader: UiTabHeaderComponent;\r\n @ViewChild('tabsContentElement', { static: true }) tabsContentElement: ElementRef;\r\n @Input() active: number;\r\n @Input() fillBackground: boolean;\r\n @Input() themeInkBar: boolean;\r\n @Input() accent: boolean;\r\n @Input() topIcon: boolean;\r\n @Input() lazyLoad: boolean;\r\n\r\n tabs: any[];\r\n activatedTab: UiTabComponent;\r\n animation: boolean;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef, private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Transformando a QueryList em um array de component(UiTabComponent)\r\n this.tabs = this.tabsQueryList.toArray();\r\n this.changeDetectorRef.detectChanges();\r\n this.generateIndexes();\r\n\r\n // Ativa uma tab através do index passado com Input ou a primeira tab\r\n const tab = this.getFirstTab(this.active);\r\n this.activateTab(tab, this.getTabRef(tab));\r\n this.animation = true;\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.tabsQueryList.changes.subscribe(newTabs => {\r\n this.tabs = newTabs.toArray();\r\n this.generateIndexes();\r\n\r\n // Verificando se a tab selecionada foi removida da lista\r\n if (!this.tabs.includes(this.activatedTab)) {\r\n // Ativando a tab que ficou no mesmo index da última tab ativa\r\n // TODO: Procurar uma tab que não esteja desabilitada\r\n const newTab = this.tabs[this.activatedTab.index] || this.tabs[this.tabs.length - 1];\r\n this.activateTab(newTab, this.getTabRef(newTab));\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Atribuí os index para as tabs\r\n **/\r\n generateIndexes() {\r\n this.tabs.map((tab, index) => tab.index = index);\r\n }\r\n\r\n /**\r\n * Retorna a primeira tab que não está desabilitada\r\n **/\r\n getFirstTab (tabIndex: number) {\r\n if (typeof tabIndex === 'number' && !this.tabs[tabIndex].disabled) {\r\n return this.tabs[tabIndex];\r\n }\r\n\r\n for (let i = 0; i < this.tabs.length; i++) {\r\n const tab = this.tabs[i];\r\n if (!tab.disabled) {\r\n return tab;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retorna a refencia da tab em HTML\r\n **/\r\n getTabRef (tab: UiTabComponent) {\r\n const tabsRef = this.element.nativeElement.querySelectorAll('.tab');\r\n return tabsRef ? tabsRef[tab.index] : null;\r\n }\r\n\r\n /**\r\n * Ativa uma tab\r\n * */\r\n activateTab(tab: UiTabComponent, tabRef: HTMLElement) {\r\n if (tab.disabled || tab === this.activatedTab) {\r\n return;\r\n }\r\n\r\n if (this.activatedTab) {\r\n this.activatedTab.tabChange.emit(false);\r\n }\r\n this.tabsContentElement.nativeElement.style.height = this.tabsContentElement.nativeElement.clientHeight + 'px';\r\n\r\n tab.tabChange.emit(true);\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.activatedTab = tab;\r\n\r\n this.tabHeader.moveInkBarTo(tabRef);\r\n this.updateActivatedTab();\r\n }\r\n\r\n /**\r\n * Altera em todos components(UiTabComponent) o index da nova tab ativada\r\n **/\r\n updateActivatedTab() {\r\n this.tabs.map(tab => tab.indexActivatedTab = this.activatedTab.index);\r\n }\r\n\r\n /**\r\n * Callback para quando a animação do conteúdo da tab iniciar\r\n * */\r\n startTranslateAnimation(event: AnimationEvent) {\r\n if (event.toState === 'active') {\r\n this.tabsContentElement.nativeElement.style.height = event.element.scrollHeight + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Callback para quando a animação do conteúdo da tab terminar\r\n * */\r\n doneTranslateAnimation(event: AnimationEvent) {\r\n this.tabsContentElement.nativeElement.style.height = '';\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-label-content',\r\n templateUrl: './label-content.component.html',\r\n styleUrls: ['./label-content.component.scss']\r\n})\r\nexport class UiLabelContentComponent {\r\n @Input() label: string;\r\n @Input() content: string;\r\n}\r\n","import { EventEmitter, Input, Output, Directive } from '@angular/core';\r\nimport { UiSnackbar } from '../smn-ui.module';\r\n\r\n\r\n@Directive()\r\nexport abstract class Upload {\r\n\r\n @Input() accept: string;\r\n @Input() multiple: boolean;\r\n @Input() disabled: boolean;\r\n @Input() max: number;\r\n\r\n\r\n @Output() ngModelChange: EventEmitter<any>;\r\n @Output() remove: EventEmitter<any>;\r\n\r\n maxLength: number;\r\n ngModel: any;\r\n modelConfig: any;\r\n maxFileSize: string;\r\n\r\n\r\n readFile(file, base64) {\r\n if (!this.multiple) {\r\n this.max = 1;\r\n }\r\n\r\n if (this.max && this.ngModel.length === this.max) {\r\n return;\r\n }\r\n\r\n if (this.maxLength && file.name.length > this.maxLength) {\r\n UiSnackbar.show({\r\n text: `Arquivo \"${file.name}\" não pode ultrapassar ${this.maxLength} caracteres.`\r\n });\r\n return;\r\n }\r\n\r\n const modelFile: any = {};\r\n let isDuplicated: boolean = false;\r\n modelFile[this.modelConfig.name] = file.name;\r\n modelFile[this.modelConfig.base64] = base64;\r\n\r\n this.ngModel.forEach((file) => {\r\n if (modelFile.name === file.name) {\r\n isDuplicated = true;\r\n UiSnackbar.show({\r\n text: `Já existe o arquivo \"${file.name}\".`,\r\n duration: 4000\r\n });\r\n return;\r\n }\r\n });\r\n\r\n if (isDuplicated) {\r\n return;\r\n }\r\n\r\n\r\n this.ngModel.push(modelFile);\r\n this.ngModelChange.emit(this.ngModel);\r\n\r\n\r\n }\r\n\r\n errorFile(file, error) {\r\n if (error.type) {\r\n const accept = this.accept.toUpperCase().split(',');\r\n UiSnackbar.hide();\r\n UiSnackbar.show({\r\n text: 'Você pode selecionar apenas arquivo' + (accept.length == 1\r\n ? ` do tipo ${accept[0]}`\r\n : `s dos tipos ${accept.join(', ')}`) + '.'\r\n });\r\n }\r\n if (error.maxFileSize) {\r\n UiSnackbar.hide();\r\n UiSnackbar.show({\r\n text: `Use arquivos menores que ${this.maxFileSize}.`\r\n });\r\n }\r\n }\r\n\r\n removeFile(file, index) {\r\n this.ngModel.splice(index, 1);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.remove.emit({file, index});\r\n }\r\n\r\n filesChange(files) {\r\n if (this.max && (this.ngModel.length + files.length) > this.max) {\r\n UiSnackbar.hide();\r\n UiSnackbar.show({\r\n text: `Você pode selecionar apenas ${this.max} arquivo${this.max > 1 ? 's' : ''}.`\r\n });\r\n }\r\n }\r\n\r\n getFileName(file) {\r\n return file[this.modelConfig.name];\r\n }\r\n}\r\n","import {animate, style, transition, trigger} from '@angular/animations';\r\n\r\nexport const enterLeaveViewAnimation = trigger(\r\n 'enterLeaveViewAnimation',\r\n // Default é 280ms de transição.\r\n [\r\n transition(\r\n ':enter', [\r\n style({\r\n height: '0',\r\n transform: 'scale(0.8) translateY(-16px)',\r\n opacity: 0\r\n }),\r\n animate('550ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n height: '*',\r\n transform: 'scale(1) translateY(0)',\r\n opacity: 1\r\n }))\r\n ]\r\n ),\r\n transition(\r\n ':leave', [\r\n style({\r\n height: '*',\r\n transform: 'scale(1) translateY(0)',\r\n opacity: 1\r\n }),\r\n animate('550ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n height: '0',\r\n transform: 'scale(0.8) translateY(-16px)',\r\n opacity: 0\r\n }))\r\n ]\r\n )]\r\n);\r\n","import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n Input,\r\n forwardRef,\r\n Output,\r\n EventEmitter,\r\n HostListener,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Upload } from './upload';\r\nimport { enterLeaveViewAnimation } from '../utils/animations/enter-leave-view.animations';\r\n\r\n\r\n@Component({\r\n selector: 'ui-upload',\r\n templateUrl: './upload.component.html',\r\n styleUrls: ['./upload.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiUploadComponent),\r\n multi: true\r\n }],\r\n animations: [enterLeaveViewAnimation]\r\n})\r\nexport class UiUploadComponent extends Upload implements OnInit, OnChanges {\r\n\r\n @ViewChild('inputFileRef') inputFileRef;\r\n\r\n @Input() ngModel: any;\r\n @Input() modelConfig: any;\r\n @Input() message: string;\r\n @Input() max: number;\r\n @Input() maxLength: number;\r\n @Input() maxSize: string;\r\n @Input() maxFileSize: string;\r\n @Input() multiple: boolean;\r\n @Input() disabled: boolean;\r\n\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() remove: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n model: any;\r\n isDragging: boolean;\r\n\r\n constructor() {\r\n super();\r\n this.readFile = this.readFile.bind(this);\r\n this.errorFile = this.errorFile.bind(this);\r\n }\r\n\r\n ngOnInit() {\r\n this.modelConfig = {\r\n name: 'name',\r\n base64: 'base64',\r\n ...this.modelConfig\r\n };\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.ngModel) {\r\n this.ngModel = changes.ngModel.currentValue && Array.isArray(changes.ngModel.currentValue) ? changes.ngModel.currentValue : [];\r\n }\r\n\r\n if (changes.modelConfig) {\r\n this.modelConfig = {\r\n name: 'name',\r\n base64: 'base64',\r\n ...changes.modelConfig.currentValue\r\n };\r\n }\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n @HostListener('dragenter', ['$event']) onDragEnter(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.isDragging = true;\r\n }\r\n\r\n @HostListener('dragover', ['$event']) onDragOver(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.isDragging = true;\r\n event.dataTransfer.dropEffect = 'copy';\r\n }\r\n\r\n @HostListener('dragleave', ['$event']) onDragLeave(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.isDragging = false;\r\n }\r\n\r\n @HostListener('drop', ['$event']) onDrop(event) {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragging = false;\r\n\r\n const {files} = event.dataTransfer;\r\n this.inputFileRef.readFiles(files);\r\n }\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport './button/button.service';\r\nimport { debounce } from './utils/functions/debounce';\r\nimport { unaccent } from './utils/functions/unaccent';\r\nimport { UiAddCalendarDirective } from './calendar/add-calendar.directive';\r\nimport { UiCalendarComponent } from './calendar/calendar.component';\r\nimport { UiCalendarContentComponent } from './calendar/calendar-content.component';\r\nimport { UiCapitalizePipe } from './utils/pipes/capitalize.pipe';\r\nimport { UiColor } from './utils/providers/color.provider';\r\nimport { UiCookie } from './utils/providers/cookie.provider';\r\nimport { UiDataTableOrderByDirective } from './data-table/order-by.directive';\r\nimport { UiDatePickerCallerDirective } from './date-picker/date-picker-caller.directive';\r\nimport { UiDatePickerDirective } from './date-picker/date-picker.directive';\r\nimport { UiDatetimeService } from './calendar/datetime.service';\r\nimport { UiDialogComponent } from './dialog/dialog.component';\r\nimport { UiDialogTriggerDirective } from './dialog/dialog-trigger.directive';\r\nimport { UiElement } from './utils/providers/element.provider';\r\nimport { UiElementRef } from './utils/providers/element-ref.provider';\r\nimport { UiInputContainerComponent } from './input/input-container.component';\r\nimport { UiInputDirective } from './input/input.directive';\r\nimport { UiMaxlengthDirective } from './utils/validators/maxlength.directive';\r\nimport { UiMenuComponent } from './menu/menu.component';\r\nimport { UiMenuTriggerDirective } from './menu/menu-trigger.directive';\r\nimport { UiNavDrawerComponent } from './nav-drawer/nav-drawer.component';\r\nimport { UiOptionComponent } from './selection-control/option/option.component';\r\nimport { UiProgressRadialComponent } from './progress/radial/progress-radial.component';\r\nimport { UiReferencesService } from './date-picker/references.service';\r\nimport { UiRippleDirective } from './ripple/ripple.directive';\r\nimport { UiSmartListComponent } from './smart-list/smart-list.component';\r\nimport { UiSmartListItemComponent } from './smart-list/item/item.component';\r\nimport { UiSnackbarComponent } from './snackbar/snackbar.component';\r\nimport { UiSnackbarContainerComponent } from './snackbar/snackbar-container.component';\r\nimport { UiSnackbar } from './snackbar/snackbar.provider';\r\nimport { UiSwitchComponent } from './selection-control/switch/switch.component';\r\nimport { UiToolbarComponent } from './toolbar/toolbar.component';\r\nimport { UiToolbarService } from './toolbar/toolbar.service';\r\nimport { UiWindowRef } from './utils/providers/window.provider';\r\nimport { UiMaskDateDirective } from './utils/masks/date/mask-date.directive';\r\nimport { UiTimeAgoPipe } from './utils/pipes/time-ago.pipe';\r\nimport { UiListItemDirective } from './list/list-item.directive';\r\nimport { UiMaskCpfDirective } from './utils/masks/cpf/mask-cpf.directive';\r\nimport { UiCpfPipe } from './utils/masks/cpf/cpf.pipe';\r\nimport { UiMaskCnpjDirective } from './utils/masks/cnpj/mask-cnpj.directive';\r\nimport { UiCnpjPipe } from './utils/masks/cnpj/cnpj.pipe';\r\nimport { UiMaskCepDirective } from './utils/masks/cep/mask-cep.directive';\r\nimport { UiCepPipe } from './utils/masks/cep/cep.pipe';\r\nimport { UiMaskCepNovoDirective } from './utils/masks/cep-novo/mask-cep-novo.directive';\r\nimport { UiCepNovoPipe } from './utils/masks/cep-novo/cep-novo.pipe';\r\nimport { UiPhonePipe } from './utils/masks/phone/phone.pipe';\r\nimport { UiMaskPhoneDirective } from './utils/masks/phone/mask-phone.directive';\r\nimport { UiListComponent } from './list/list.component';\r\nimport { UiListItemsComponent } from './list/items/items.component';\r\nimport { UiListItemComponent } from './list/item/item.component';\r\nimport { UiSliderComponent } from './slider/slider.component';\r\nimport { UiSliderMultiHandleComponent } from './slider/slider-multi-handle.component';\r\nimport { UiInfiniteLoadDirective } from './utils/infinite-load/infinite-load.directive';\r\nimport { UiInfiniteLoadService } from './utils/infinite-load/infinite-load.service';\r\nimport { UiAutocompleteDirective } from './autocomplete/autocomplete.directive';\r\nimport { UiAutocompleteComponent } from './autocomplete/autocomplete.component';\r\nimport { UiMaskIntegerDirective } from './utils/masks/integer/mask-integer.directive';\r\nimport { UiTabsComponent } from './old-tabs/tabs.component';\r\nimport { UiTabsPagesComponent } from './old-tabs/pages/tabs-pages.component';\r\nimport { UiLazyLoadDirective } from './lazy-load/lazy-load.directive';\r\nimport { UiDataTableComponent } from './data-table/data-table.component';\r\nimport { UiBottomSheetComponent } from './bottom-sheet/bottom-sheet.component';\r\nimport { UiBottomSheetTriggerDirective } from './bottom-sheet/bottom-sheet.directive';\r\nimport { UiInputFileDirective } from './input/input-file.directive';\r\nimport { UiEllipsisDirective } from './ellipsis/ellipsis.directive';\r\nimport { UiRequiredDirective } from './utils/validators/required.directive';\r\nimport { UiColorPickerComponent } from './color-picker/color-picker.component';\r\nimport { UiColorPickerDirective } from './color-picker/color-picker.directive';\r\nimport { UiInputAutosizeDirective } from './input/autosize.directive';\r\nimport { UiClockComponent } from './clock/clock.component';\r\nimport { UiTimePickerService } from './time-picker/time-picker.service';\r\nimport { UiTimePickerDirective } from './time-picker/time-picker.directive';\r\nimport { UiTimePickerCallerDirective } from './time-picker/time-picker-caller.directive';\r\nimport { UiTimePipe } from './utils/masks/time/time.pipe';\r\nimport { UiMaskTimeDirective } from './utils/masks/time/mask-time.directive';\r\nimport { UiMaskCurrencyDirective } from './utils/masks/currency/mask-currency.directive';\r\nimport { UiCurrencyPipe } from './utils/masks/currency/currency.pipe';\r\nimport { UiDialog } from './dialog/dialog.service';\r\nimport { UiSelectComponent } from './select/select.component';\r\nimport { UiSelectOptionComponent } from './select/option/option.component';\r\nimport { UiSelectFilterPipe } from './select/select-filter.pipe';\r\nimport { UiFilterPipe } from './utils/pipes/filter.pipe';\r\nimport { UiAvatarComponent } from './avatar/avatar.component';\r\nimport { UiMaskFloatDirective } from './utils/masks/float/mask-float.directive';\r\nimport { TooltipDirective } from './tooltip/tooltip.directive';\r\nimport { UiChosenComponent } from './chosen/chosen.component';\r\nimport { UiChosenOptionComponent } from './chosen/chosen-option/chosen-option.component';\r\nimport { UiChosenGroupComponent } from './chosen/chosen-group/chosen-group.component';\r\nimport { UiCreditCardPipe } from './utils/masks/credit-card/credit-card.pipe';\r\nimport { UiMaskCreditCard } from './utils/masks/credit-card/credit-card-mask.directive';\r\nimport { ExpansionPanelComponent } from './expansion-panel/expansion-panel.component';\r\nimport { UiFloatPipe } from './utils/masks/float/float.pipe';\r\nimport { UiTabComponent } from './tab/tab.component';\r\nimport { UiTabGroupComponent } from './tab/group/tab-group.component';\r\nimport { UiTabContentDirective } from './tab/tab-content.directive';\r\nimport { UiTabLabelDirective } from './tab/tab-label.directive';\r\nimport { UiTabHeaderComponent } from './tab/header/tab-header.component';\r\nimport { UiLabelContentComponent } from './label-content/label-content.component';\r\nimport { UiUploadComponent } from './upload/upload.component';\r\n\r\nexport {\r\n debounce,\r\n unaccent,\r\n UiColor,\r\n UiCookie,\r\n UiElement,\r\n UiElementRef,\r\n UiSnackbar,\r\n UiToolbarService,\r\n UiWindowRef,\r\n UiCpfPipe,\r\n UiCnpjPipe,\r\n UiCepPipe,\r\n UiCepNovoPipe,\r\n UiPhonePipe,\r\n UiInfiniteLoadService,\r\n UiDatetimeService,\r\n UiTimePipe,\r\n UiCurrencyPipe,\r\n UiMaskPhoneDirective,\r\n UiDialog,\r\n UiFilterPipe,\r\n UiCreditCardPipe,\r\n UiMaskCreditCard,\r\n UiFloatPipe,\r\n}\r\n\r\nconst lib: any[] = [\r\n UiAddCalendarDirective,\r\n UiCalendarComponent,\r\n UiCalendarContentComponent,\r\n UiCapitalizePipe,\r\n UiDataTableOrderByDirective,\r\n UiDatePickerCallerDirective,\r\n UiDatePickerDirective,\r\n UiDialogComponent,\r\n UiDialogTriggerDirective,\r\n UiInputContainerComponent,\r\n UiInputDirective,\r\n UiMaxlengthDirective,\r\n UiMenuComponent,\r\n UiMenuTriggerDirective,\r\n UiNavDrawerComponent,\r\n UiOptionComponent,\r\n UiProgressRadialComponent,\r\n UiRippleDirective,\r\n UiSmartListComponent,\r\n UiSmartListItemComponent,\r\n UiSnackbarComponent,\r\n UiSnackbarComponent,\r\n UiSnackbarContainerComponent,\r\n UiSwitchComponent,\r\n UiToolbarComponent,\r\n UiMenuComponent,\r\n UiMenuTriggerDirective,\r\n UiProgressRadialComponent,\r\n UiMaskDateDirective,\r\n UiTimeAgoPipe,\r\n UiListItemDirective,\r\n UiMaskCpfDirective,\r\n UiCpfPipe,\r\n UiMaskCnpjDirective,\r\n UiCnpjPipe,\r\n UiMaskCepDirective,\r\n UiCepPipe,\r\n UiMaskCepNovoDirective,\r\n UiCepNovoPipe,\r\n UiMaskPhoneDirective,\r\n UiPhonePipe,\r\n UiListComponent,\r\n UiListItemsComponent,\r\n UiListItemComponent,\r\n UiPhonePipe,\r\n UiSliderComponent,\r\n UiSliderMultiHandleComponent,\r\n UiInfiniteLoadDirective,\r\n UiAutocompleteDirective,\r\n UiAutocompleteComponent,\r\n UiMaskIntegerDirective,\r\n UiTabsComponent,\r\n UiTabsPagesComponent,\r\n UiLazyLoadDirective,\r\n UiDataTableComponent,\r\n UiLazyLoadDirective,\r\n UiBottomSheetComponent,\r\n UiBottomSheetTriggerDirective,\r\n UiInputFileDirective,\r\n UiEllipsisDirective,\r\n UiRequiredDirective,\r\n UiColorPickerComponent,\r\n UiColorPickerDirective,\r\n UiInputAutosizeDirective,\r\n UiColorPickerDirective,\r\n UiClockComponent,\r\n UiTimePickerDirective,\r\n UiTimePickerCallerDirective,\r\n UiTimePipe,\r\n UiMaskTimeDirective,\r\n UiMaskCurrencyDirective,\r\n UiCurrencyPipe,\r\n UiSelectComponent,\r\n UiSelectOptionComponent,\r\n UiSelectFilterPipe,\r\n UiFilterPipe,\r\n UiAvatarComponent,\r\n UiMaskFloatDirective,\r\n TooltipDirective,\r\n UiChosenComponent,\r\n UiChosenOptionComponent,\r\n UiChosenGroupComponent,\r\n UiCreditCardPipe,\r\n UiMaskCreditCard,\r\n ExpansionPanelComponent,\r\n UiFloatPipe,\r\n UiTabComponent,\r\n UiTabGroupComponent,\r\n UiTabContentDirective,\r\n UiTabLabelDirective,\r\n UiTabHeaderComponent,\r\n UiLabelContentComponent,\r\n UiUploadComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n RouterModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n declarations: [...lib],\r\n exports: [...lib],\r\n providers: [\r\n UiColor,\r\n UiDatetimeService,\r\n UiElement,\r\n UiReferencesService,\r\n UiSnackbar,\r\n UiWindowRef,\r\n UiInfiniteLoadService,\r\n UiTimePickerService,\r\n UiDialog,\r\n ],\r\n entryComponents: [\r\n UiCalendarComponent,\r\n UiCalendarContentComponent,\r\n UiAutocompleteComponent,\r\n UiColorPickerComponent,\r\n UiClockComponent\r\n ]\r\n})\r\nexport class SMNUIModule {\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://ng-smn-ui/lib/utils/providers/element.provider.ts","ng://ng-smn-ui/lib/utils/functions/debounce.ts","ng://ng-smn-ui/lib/button/button.service.ts","ng://ng-smn-ui/lib/utils/functions/unaccent.ts","ng://ng-smn-ui/lib/calendar/add-calendar.directive.ts","ng://ng-smn-ui/lib/calendar/datetime.service.ts","ng://ng-smn-ui/lib/utils/providers/color.provider.ts","ng://ng-smn-ui/lib/calendar/calendar-content.component.ts","ng://ng-smn-ui/lib/calendar/calendar.component.ts","ng://ng-smn-ui/lib/utils/pipes/capitalize.pipe.ts","ng://ng-smn-ui/lib/utils/providers/cookie.provider.ts","ng://ng-smn-ui/lib/data-table/order-by.directive.ts","ng://ng-smn-ui/lib/date-picker/references.service.ts","ng://ng-smn-ui/lib/date-picker/date-picker-caller.directive.ts","ng://ng-smn-ui/lib/date-picker/date-picker.directive.ts","ng://ng-smn-ui/lib/utils/providers/element-ref.provider.ts","ng://ng-smn-ui/lib/dialog/dialog.component.ts","ng://ng-smn-ui/lib/dialog/dialog-trigger.directive.ts","ng://ng-smn-ui/lib/input/input-container.component.ts","ng://ng-smn-ui/lib/input/input.directive.ts","ng://ng-smn-ui/lib/utils/validators/maxlength.directive.ts","ng://ng-smn-ui/lib/menu/menu.component.ts","ng://ng-smn-ui/lib/menu/menu-trigger.directive.ts","ng://ng-smn-ui/lib/nav-drawer/nav-drawer.component.ts","ng://ng-smn-ui/lib/selection-control/option/option.component.ts","ng://ng-smn-ui/lib/progress/radial/progress-radial.component.ts","ng://ng-smn-ui/lib/ripple/ripple.directive.ts","ng://ng-smn-ui/lib/smart-list/smart-list.component.ts","ng://ng-smn-ui/lib/snackbar/snackbar.provider.ts","ng://ng-smn-ui/lib/toolbar/toolbar.service.ts","ng://ng-smn-ui/lib/smart-list/item/item.component.ts","ng://ng-smn-ui/lib/snackbar/snackbar.component.ts","ng://ng-smn-ui/lib/snackbar/snackbar-container.component.ts","ng://ng-smn-ui/lib/selection-control/switch/switch.component.ts","ng://ng-smn-ui/lib/toolbar/toolbar.component.ts","ng://ng-smn-ui/lib/utils/providers/window.provider.ts","ng://ng-smn-ui/lib/utils/masks/date/check-date.ts","ng://ng-smn-ui/lib/utils/masks/date/mask-date.directive.ts","ng://ng-smn-ui/lib/utils/pipes/time-ago.pipe.ts","ng://ng-smn-ui/lib/list/list-item.directive.ts","ng://ng-smn-ui/lib/utils/masks/cpf/cpf.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cpf/mask-cpf.directive.ts","ng://ng-smn-ui/lib/utils/masks/cnpj/cnpj.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cnpj/mask-cnpj.directive.ts","ng://ng-smn-ui/lib/utils/masks/cnpj-novo/cnpj-novo.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cnpj-novo/mask-cnpj-novo.directive.ts","ng://ng-smn-ui/lib/utils/masks/cep/cep.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cep/mask-cep.directive.ts","ng://ng-smn-ui/lib/utils/masks/cep-novo/cep-novo.pipe.ts","ng://ng-smn-ui/lib/utils/masks/cep-novo/mask-cep-novo.directive.ts","ng://ng-smn-ui/lib/utils/masks/phone/phone.pipe.ts","ng://ng-smn-ui/lib/utils/masks/phone/mask-phone.directive.ts","ng://ng-smn-ui/lib/list/list.component.ts","ng://ng-smn-ui/lib/dialog/dialog.service.ts","ng://ng-smn-ui/lib/list/items/items.component.ts","ng://ng-smn-ui/lib/list/item/item.component.ts","ng://ng-smn-ui/lib/slider/slider.component.ts","ng://ng-smn-ui/lib/slider/slider-multi-handle.component.ts","ng://ng-smn-ui/lib/utils/infinite-load/infinite-load.service.ts","ng://ng-smn-ui/lib/utils/infinite-load/infinite-load.directive.ts","ng://ng-smn-ui/lib/autocomplete/autocomplete.component.ts","ng://ng-smn-ui/lib/autocomplete/autocomplete.directive.ts","ng://ng-smn-ui/lib/utils/masks/integer/mask-integer.directive.ts","ng://ng-smn-ui/lib/old-tabs/tabs.component.ts","ng://ng-smn-ui/lib/old-tabs/pages/tabs-pages.component.ts","ng://ng-smn-ui/lib/lazy-load/lazy-load.directive.ts","ng://ng-smn-ui/lib/data-table/data-table.component.ts","ng://ng-smn-ui/lib/bottom-sheet/bottom-sheet.component.ts","ng://ng-smn-ui/lib/bottom-sheet/bottom-sheet.directive.ts","ng://ng-smn-ui/lib/input/input-file.directive.ts","ng://ng-smn-ui/lib/ellipsis/ellipsis.directive.ts","ng://ng-smn-ui/lib/utils/validators/required.directive.ts","ng://ng-smn-ui/lib/color-picker/color-picker.palette.ts","ng://ng-smn-ui/lib/color-picker/color-picker.component.ts","ng://ng-smn-ui/lib/color-picker/color-picker.directive.ts","ng://ng-smn-ui/lib/input/autosize.directive.ts","ng://ng-smn-ui/lib/clock/clock.component.ts","ng://ng-smn-ui/lib/time-picker/time-picker.service.ts","ng://ng-smn-ui/lib/time-picker/time-picker.directive.ts","ng://ng-smn-ui/lib/time-picker/time-picker-caller.directive.ts","ng://ng-smn-ui/lib/utils/masks/time/time.pipe.ts","ng://ng-smn-ui/lib/utils/masks/time/mask-time.directive.ts","ng://ng-smn-ui/lib/utils/masks/currency/currency.pipe.ts","ng://ng-smn-ui/lib/utils/masks/currency/mask-currency.directive.ts","ng://ng-smn-ui/lib/select/select.component.ts","ng://ng-smn-ui/lib/select/option/option.component.ts","ng://ng-smn-ui/lib/select/select-filter.pipe.ts","ng://ng-smn-ui/lib/utils/pipes/filter.pipe.ts","ng://ng-smn-ui/lib/avatar/avatar.component.ts","ng://ng-smn-ui/lib/utils/masks/float/float.pipe.ts","ng://ng-smn-ui/lib/utils/masks/float/mask-float.directive.ts","ng://ng-smn-ui/lib/tooltip/tooltip.directive.ts","ng://ng-smn-ui/lib/chosen/chosen-option/chosen-option.component.ts","ng://ng-smn-ui/lib/chosen/chosen-group/chosen-group.component.ts","ng://ng-smn-ui/lib/chosen/chosen.component.ts","ng://ng-smn-ui/lib/utils/masks/credit-card/credit-card.pipe.ts","ng://ng-smn-ui/lib/utils/masks/credit-card/credit-card-mask.directive.ts","ng://ng-smn-ui/lib/expansion-panel/expansion-panel.component.ts","ng://ng-smn-ui/lib/tab/tab-content.directive.ts","ng://ng-smn-ui/lib/tab/tab-label.directive.ts","ng://ng-smn-ui/lib/tab/tab.component.ts","ng://ng-smn-ui/lib/tab/header/tab-header.component.ts","ng://ng-smn-ui/lib/tab/group/tab-group.animation.ts","ng://ng-smn-ui/lib/tab/group/tab-group.component.ts","ng://ng-smn-ui/lib/label-content/label-content.component.ts","ng://ng-smn-ui/lib/upload/upload.ts","ng://ng-smn-ui/lib/utils/animations/enter-leave-view.animations.ts","ng://ng-smn-ui/lib/upload/upload.component.ts","ng://ng-smn-ui/lib/smn-ui.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__assign","assign","t","s","i","n","arguments","length","prototype","call","apply","this","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","__spread","concat","UiElement","disableScroll","window","addEventListener","preventDefault","onwheel","ontouchmove","document","onkeydown","preventDefaultForScrollKeys","enableScroll","removeEventListener","closest","el","selector","parent","matchesFn","some","fn","body","parentElement","index","node","count","nodes","parentNode","childNodes","item","nodeType","trigger","eventToTrigger","event","createEvent","initEvent","dispatchEvent","on","events","listener","elements","constructor","NodeList","split","forEach","el2","off","iLen","is","matches","matchesSelector","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","oMatchesSelector","position","withoutScroll","getBoundingClientRect","elem","box","docElem","documentElement","scrollTop","scrollLeft","pageYOffset","pageXOffset","clientTop","clientLeft","top","left","Math","round","getOffsetRect","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetSum","offset","animate","object","property","start_value","end_value","time","end","tick","propWithPx","frame","delta","handle","setInterval","hasPx","indexOf","style","toFixed","clearInterval","css","styleProp","newValue","replace","g","toUpperCase","defaultView","ownerDocument","getComputedStyle","toLowerCase","getPropertyValue","currentStyle","str","letter","test","value2","oldLeft","oldRsLeft","runtimeStyle","pixelLeft","isInViewport","rect","innerHeight","clientHeight","innerWidth","clientWidth","focus","headerSpace","querySelector","UiElement_1","scrollTo","isMobile","a","navigator","userAgent","vendor","opera","substr","caretPosition","get","getCaretPosition","set","setCaretPosition","classList","remove","removeClass","add","addClass","contains","containsClass","Injectable","keys","38","40","returnValue","keyCode","documentt","selection","undefined","caretPos","select","createRange","moveStart","text","selectionStart","beforeSelIndex","afterSelIndex","symbolsPositions","futureSelIndex","setTimeout","setSelectionRange","createTextRange","range","collapse","move","moveEnd","setCaret","className","debounce","func","wait","immediate","timeout","context","args","later","callNow","clearTimeout","fabContainers","querySelectorAll","len","scroll_1","scrollY","fabContainer","defaultDiacriticsRemovalMap","base","letters","diacriticsMap","j","unaccent","UiAddCalendarDirective","viewContainerRef","ViewContainerRef","Directive","UiDatetimeService","days","shortDays","months","shortMonths","UiColor","isBright","hex","minDarkPerc","_isBright","hexToRgb","_hexToRgb","color","result","exec","UiCalendarContentComponent","datetimeService","elementRef","changeDetectorRef","chosen","Subject","ngAfterViewInit","_this","verifyEventDates","detectChanges","nativeElement","toFocus","toFocusAlt","toFocusIndex","getSibling","isDay","dateToCheck","chosenDate","getDate","getMonth","getFullYear","chooseDate","confirmSelection","ngModel","isDisabled","minDate","Date","getTime","maxDate","date","isNaN","calendar","map","day","getTimezoneOffset","hasEvent","eventColor","blocked","ElementRef","ChangeDetectorRef","Component","template","UiCalendarComponent","componentFactoryResolver","EventEmitter","selectDateChange","cancel","ngModelChange","updateMonth","ngOnInit","isDate","viewDate","initOnSelected","renderCalendar","ngOnChanges","firstChange","currentValue","componentRef","instance","prevMonth","setMonth","emit","nextMonth","selectDate","cancelDate","dateTarget","setHours","setDate","year","month","monthDays","lastDayWeek","getDay","lastDayWeekName","firstDayWeek","firstDayWeekName","totalDays","firstDate","lastDate","today","componentFactory","resolveComponentFactory","addCalendar","clear","createComponent","subscribe","ComponentFactoryResolver","Input","Output","ViewChild","static","encapsulation","ViewEncapsulation","None","UiCapitalizePipe","transform","Pipe","name","UiCookie","ca","cookie","caLen","cookieName","substring","has","delete","domain","expireDays","path","setTime","expires","toUTCString","UiDataTableOrderByDirective","element","icon","createElement","innerHTML","insertBefore","cloneNode","firstChild","appendChild","changes","uiDataTableOrderBy","orderByCondition","orderByClick","onClick","withCondition","HostListener","UiReferencesService","datePickers","component","closeAll","getAll","updateModel","UiDatePickerCallerDirective","applicationRef","injector","referencesService","datePicker","datePickerCaller","pickerEvent","inputElement","pickerOpen","renderDatePicker","stopPropagation","type","closePicker","getComponentAsElement","hostView","rootNodes","setInstances","setCoordinate","componentElement","renderViewCalendar","themeClass","wrapDatePicker","overlay","create","attachView","detachView","overflowY","removeChild","coordinate","x","y","offsetHeight","pickerHorizontalCoveringArea","pickerVerticalCoveringArea","windowWidth","scrollX","windowHeight","ApplicationRef","Injector","UiDatePickerDirective","setAttribute","ngOnDestroy","UiElementRef","selected","callback","filter","attribute","getAttribute","height","newHeight","UiDialogComponent","closeChange","close","opened","viewRef","fabs","rootNode","destroy","show","config","clickOverlayToClose","JSON","parse","templateRef","createEmbeddedView","open","darkClass","transparentOverlay","cardSize","maxWidth","width","TemplateRef","UiDialogTriggerDirective","dialog","triggerEvents","render","fab","viewRef_1","UiInputContainerComponent","inputWrap","getElementsByClassName","line","methodInsertIcon","firstElementChild","UiInputDirective","renderer","placeholder","setPlaceholder","isEmpty","onBlur","onFocus","onFocusout","self","action","isNullOrUndefined","trim","persistPlaceholder","setProperty","Renderer2","UiMaxlengthDirective","validate","control","toString","maxLength","uiMaxlength","UiMaxlengthDirective_1","providers","provide","NG_VALIDATORS","useExisting","forwardRef","multi","UiMenuComponent","class","menuAlign","align","persistentMenu","persistent","createListener","clientX","clientY","horizontalCoveringArea","verticalCoveringArea","maxHeight","listenerExists","UiMenuTriggerDirective","menu","contextmenu","fixed","onContextmenu","UiNavDrawerComponent","openChange","openNav","closeNav","visibility","isPersistent","isOpen","srcElement","navDrawerTouch","mouseX","mouseXMovement","navDrawer","onTouchStart","touches","pageX","onTouchMove","onTouchEnd","closeMenuOverlay","UiOptionComponent","input","insertAdjacentHTML","setColor","borderColor","UiProgressRadialComponent","ripples","UiRippleDirective","isIE","elRippleContainerTemplate","elRippleTemplate","elRippleContainerTemplateClone","onMousedown","rippleDisable","hasAttribute","elementWidth","offsetWidth","elementHeight","isIcon","isFab","isRounded","borderRadius","elRippleTemplateClone_1","finalWidth","finalHeight","finalTop","finalLeft","mousePos","getMousePosition","elementPos","pos","onMouseup","eraseRipples","onMouseout","thiss","elRipples","children","elRipple","opacity","originalEvent","pageY","UiSmartListComponent","differs","modelChange","differ","find","defaultItem","list","model","console","objDiffer","elt","ngDoCheck","wasChanged","objChanges","diff","forEachChangedItem","elt2","autoDeleteException","equals","splice","newItem","found","includes","previousValue","KeyValueDiffers","stringify","mainToolbar","defaultBreakpoint","UiSmartListItemComponent","inputs","elItem","newIndex","currentFocusedElementIndex","Inject","bars","defaults","duration","center","actionText","UiSnackbar","bar","timerBar","barsChange","hide","snackbar","finishTimeout","elevateFAB","Infinity","shift","setTranslateFAB","snackHeight","translate","UiSnackbarComponent","UiSnackbarContainerComponent","UiSwitchComponent","UiToolbarComponent","header","paddingBottom","zIndex","change","sizes","UiToolbarService","sharedValue","registerMainToolbar","size","getMainToolbar","activateExtendedToolbar","breakpoint","join","transition","deactivateExtendedToolbar","activateTransparentToolbar","auxiliarClass","deactivateTransparentToolbar","activateElevatingToolbar","deactivateElevatingToolbar","_window","UiWindowRef","nativeWindow","checkDate","dayIndex","monthIndex","yearIndex","splittedDate","mask","UiMaskDateDirective","datePipe","maxlength","regex","regexiso","dateFormatsList","format","validaDateFormat","loaded","writeValue","rawValue","markAsDirty","dateFormat","renderViaInput","getCorrectValue","registerOnChange","onChange","registerOnTouched","onTouched","valid","updateValueAndValidity","valueSplitted","dateControl","toLocaleDateString","setDisabledState","method","onKeydown","onInput","$event","DatePipe","UiMaskDateDirective_1","NG_VALUE_ACCESSOR","UiTimeAgoPipe","ref","isDestroyed","async","AsyncPipe","obj","textBefore","textAfter","isMinified","isHence","Error","timer","getObservable","now","of","pipe","repeatWhen","notifications","flatMap","sleep","takeWhile","_","elapsed","realDelta","floor","timeAgo","pure","UiListItemDirective","uiListItem","toggle","toggleExpand","elementList","elementTrigger","backupHeight","listItemGroup","getHeight","overflow_1","reduce","UiCpfPipe","padStart","UiMaskCpfDirective","cpfPipe","padOnPaste","uiMaskCpf","cpfIsValid","cpf","sum","rest","padLeft","data","clipboardData","getData","UiMaskCpfDirective_1","UiCnpjPipe","UiMaskCnpjDirective","cnpjPipe","uiMaskCnpj","cnpjIsValid","cnpj","numbers","digits","charAt","UiMaskCnpjDirective_1","UiCnpjNovoPipe","UiMaskCnpjNovoDirective","cleanValue","paddedValue","uiMaskCnpjNovo","charToValue","char","charCodeAt","baseWithFirstDigit","isNumericOnly","UiMaskCnpjNovoDirective_1","UiCepPipe","UiMaskCepDirective","cepPipe","UiMaskCepDirective_1","UiCepNovoPipe","UiMaskCepNovoDirective","UiMaskCepNovoDirective_1","UiPhonePipe","UiMaskPhoneDirective","phonePipe","uiMaskPhone","firstChar","UiMaskPhoneDirective_1","UiListComponent","allItems","remainingList","itemModel","id","parentId","url","old_key","oldName","newName","renameObjectKey","iterateOptionsMenu","fullList","subMenus","childs","UiListItemsComponent","UiListItemComponent","UiSliderComponent","valueChange","viewFormat","percentageBlock","valueModel","closestNumber","mouseDown","textColor","valueElement","registerEventsListeners","disabled","toggleTackOn","toggleBalloon","mouseUp","currentPosition","changedTouches","getPositionInIndex","active","right","balloon","trackOff","number","newDifference","current","difference","abs","itemIndex","getPercentage","Function","UiSliderMultiHandleComponent","beginChange","endChange","bodyElement","htmlElement","multiHandle","begin","beginModel","endModel","thumbs","beginElement","endElement","stopImmediatePropagation","direction","getPercentageLeft","getPercentageRight","UiInfiniteLoadService","register","orientation","heightOffset","scrollHeight","widthOffset","scrollWidth","readyToCheck","UiInfiniteLoadDirective","infiniteLoad","uiInfiniteLoad","UiAutocompleteComponent","selectItem","selectChange","loadMoreEmit","loadMore","UiAutocompleteDirective","loadMoreEmmiter","modelValueChange","requiredChange","primary","modelValue","modelProperty","blur","setPosition","loading","createWrapElement","wrapElement","setFocusIndex","focusedIndex","initialize","accentClass","wrap","maxHeightWrap","secondary","required","hidePanel","relatedTarget","which","UiAutocompleteDirective_1","UiMaskIntegerDirective","max","min","uiMaskInteger","valueConverted","Number","UiMaskIntegerDirective_1","UiTabsComponent","onScroll","tabsScroll","internetExplorer","tabs","indicator","scrollToTab","tab","withoutAnimation","tab2","overflow","this_1","tabSelected","maxScrollLeft","animationTiming","showLeftArrow","showRightArrow","UiTabsPagesComponent","onChangePage","currentPage","touchXMovement_1","touchXStartPosition_1","touchYMovement_1","touchYStartPosition_1","firstMovementCoord_1","currentBannerIndex_1","newPosition_1","tabs_1","elBannerContainer_1","enableOverflow","pages","i_1","page","pagesGoToPage","nextPage","newPosition","pages_1","pageContainer","elNextPage","firstLoad","elCurrentPage","timeOutTurnBack","UiLazyLoadDirective","visible","lazySrc","UiDataTableComponent","tfoot","tableFooter","UiBottomSheetComponent","card","UiBottomSheetTriggerDirective","bottomSheet","UiInputFileDirective","ngControl","filesChange","readFiles","files","setErrors","accepts","accept","maxSize","toByte","maxFileSize","file","validMaxFileSize","validateMaxSize","validMaxSize","fileExtension","lastIndexOf","validType","validateType","errors","readFile","fileChange","invalid","extension","match","RegExp","sizeString","unitMatch","unit","sizeMatch","unitSize","pow","reader","FileReader","resolved","onload","read","onerror","onprogress","progress","total","percent","readAsDataURL","NgControl","exportAs","UiEllipsisDirective","uiEllipsis","lineHeight","innerText","removeAttribute","UiRequiredDirective","UiRequiredDirective_1","textBlack","colors","hideSlider","hasBorder","palette","red","50","100","200","300","400","500","600","700","800","900","pink","purple","deepPurple","indigo","blue","lightBlue","cyan","teal","green","lightGreen","lime","yellow","amber","orange","deepOrange","brown","grey","blueGrey","black","white","UiColorPickerComponent","hues","from","colorSelected","setColorSelected","hueColor","hue","getColor","getColorText","selectColor","deselectColors","UiColorPickerDirective","generateElementColor","setColorElement","elementColor","addEvents","UiInputAutosizeDirective","retries","tagName","_findNestedTextArea","textAreaEl","textArea","adjust","getElementsByTagName","HTMLTextAreaElement","UiClockComponent","beforeMidday","afterMidday","val","hours","minutes","activeSelection","pointerRotation","formatModel","tabIndex","focused","selectHour","hour","selectMinute","minute","getPositionPointer","selectTime","hasHourAndMinute","formatToLpad","cancelTime","amountRotate","oldRotation","actualRotate","getPositionTopPointer","animations","UiTimePickerService","timePickers","UiTimePickerDirective","timePickerService","timePicker","UiTimePickerCallerDirective","timePickerCaller","renderTimePicker","objectValue","renderViewClock","wrapTimePicker","UiTimePipe","UiMaskTimeDirective","timePipe","minTime","maxTime","customTime","UiMaskTimeDirective_1","UiCurrencyPipe","isNegative","noValue","every","newCurrency","noNegative","UiMaskCurrencyDirective","currencyPipe","formatViewValue","removeGroupSep","parseFloat","beforeViewValue","UiMaskCurrencyDirective_1","UiDialog","UiDialog_1","onClose","UiSelectComponent","options","optionsExternal","selectOption","onChangeSelect","closestFieldset","selectNative","click","label","search","option","NgModel","UiSelectComponent_1","UiSelectOptionComponent","selectComponent","internal","title","onEnter","UiSelectFilterPipe","filterBy","UiFilterPipe","UiAvatarComponent","nameLength","initials","newImage","image","setSize","showImage","loadedImage","animateImage","grayscale","empty","getFontSize","getName","ini","nome","changeDetection","ChangeDetectionStrategy","OnPush","UiFloatPipe","decimal","decimals","UiMaskFloatDirective","floatPipe","uiMaskFloat","standard","padEnd","UiMaskFloatDirective_1","TooltipDirective","onShow","onHide","bottom","setClass","uiTooltip","positionLeft","positionTop","elementPosition","checkHeight","tooltip","UiChosenOptionComponent","loadOption","updateOptionLabel","onSelect","setActive","UiChosenComponent","UiChosenGroupComponent","ContentChildren","QueryList","setValue","ngAfterContentInit","nativeSelect","clearFilter","inputSearch","optionTemplate","bodyHeight","content","contentHeight","searchHeight","updated","markAsTouched","filterList","hidden","searchText","optionsGroup","group","changeNativeSelect","trackByValue","descendants","UiChosenComponent_1","UiCreditCardPipe","UiMaskCreditCard","creditCardPipe","changeDetector","UiMaskCreditCard_1","ExpansionPanelComponent","UiTabContentDirective","ContentChild","UiTabLabelDirective","UiTabComponent","viewContainer","tabChange","subscription","isActive","unsubscribe","UiTabHeaderComponent","increment","tabsContainer","inkBar","showInkBar","ngAfterViewChecked","hasRightScroll","checkRightScroll","hasLeftScroll","checkLeftScroll","moveInkBarTo","tabRef","updateScroll","tabFakeAnimation","timing","tabTransform","state","UiTabGroupComponent","tabsQueryList","toArray","generateIndexes","getFirstTab","activateTab","getTabRef","animation","newTabs","activatedTab","newTab","tabsRef","tabsContentElement","tabHeader","updateActivatedTab","indexActivatedTab","startTranslateAnimation","toState","doneTranslateAnimation","UiLabelContentComponent","Upload","base64","multiple","modelFile","isDuplicated","modelConfig","errorFile","removeFile","getFileName","enterLeaveViewAnimation","UiUploadComponent","_super","bind","__","__extends","isArray","onDragEnter","isDragging","onDragOver","dataTransfer","dropEffect","onDragLeave","onDrop","inputFileRef","UiUploadComponent_1","lib","SMNUIModule","NgModule","imports","CommonModule","FormsModule","RouterModule","schemas","CUSTOM_ELEMENTS_SCHEMA","declarations","exports","entryComponents"],"mappings":"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YACViP,SAAA,oxDAEAuM,UAAW,CAAC,CACRC,QAASsM,EAAAA,kBACTpM,YAAaC,EAAAA,YAAW,WAAM,OAAA6wB,KAC9B5wB,OAAO,IAEXokB,WAAY,CAACyL,+6BAEJC,IAA0BV,IC8GjCyB,GAAa,CACfrhC,EACA6D,EACA1C,EACA8F,EACAkB,EACAsB,EACAuC,EACAW,EACAsB,EACAM,EACAM,EACAe,EACAa,EACAa,GACAK,GACAkB,GACAK,GACAE,GACAkC,GACA4B,GACAwB,GACAA,GACAC,GACAC,GACAC,GACApI,EACAa,GACA4B,GACAyH,GACAgC,GACA2B,GACAa,GACAF,GACAgB,GACAD,GACAW,GACAD,GACAY,GACAD,GACAK,GACAD,GACAI,GACAD,GACAM,GACAe,GACAC,GACAtB,GACAuB,GACA6B,GACAwB,GACAQ,GACAL,GACA6B,GACAO,GACAiB,GACAyB,GACAG,GACAH,GACAM,GACAE,GACAE,GACA6C,GACAK,GACAsC,GACAW,GACAK,GACAL,GACAc,GACA2B,GACAG,GACAM,GACAC,GACAY,GACAN,GACAgB,GACAa,GACAK,GACAE,GACAC,GACAqB,GACAM,GACAgB,GACAL,GACAM,GACAwB,GACAC,GACAI,GACAvD,GACA2D,GACAuB,GACA1B,GACAE,GACAO,GACAoC,GACAW,kBA+BJ,SAAAgB,KACA,OADaA,EAAWzvC,EAAA,CA5BvB0vC,EAAAA,SAAS,CACNC,QAAS,CACLC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,cAEJC,QAAS,CAACC,EAAAA,wBACVC,aAAYnuC,EAAM0tC,IAClBU,QAAOpuC,EAAM0tC,IACblxB,UAAW,CACP1P,EACAL,EACAvM,EACAsV,EACA0O,GACAsC,GACA6L,GACA6O,GACA+B,IAEJoL,gBAAiB,CACbn+B,EACA1C,EACAwlB,GACAgL,GACAyB,OAGKkO","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UiElement {\r\n static caretPosition = {\r\n get: getCaretPosition,\r\n set: setCaretPosition\r\n };\r\n\r\n static classList = {\r\n remove: removeClass,\r\n add: addClass,\r\n contains: containsClass\r\n };\r\n\r\n static disableScroll(): any {\r\n if (window.addEventListener) { // older FF\r\n window.addEventListener('DOMMouseScroll', preventDefault, false);\r\n }\r\n\r\n window.onwheel = preventDefault; // modern standard\r\n // window.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE\r\n window.ontouchmove = preventDefault; // mobile\r\n document.onkeydown = preventDefaultForScrollKeys;\r\n }\r\n\r\n static enableScroll(): any {\r\n if (window.removeEventListener) {\r\n window.removeEventListener('DOMMouseScroll', preventDefault, false);\r\n }\r\n // window.onmousewheel = document.onmousewheel = null;\r\n window.onwheel = null;\r\n window.ontouchmove = null;\r\n document.onkeydown = null;\r\n }\r\n\r\n static closest(el, selector): any {\r\n /* Source: http://stackoverflow.com/questions/18663941/finding-closest-element-without-jquery */\r\n\r\n let matchesFn = null;\r\n\r\n // find vendor prefix\r\n ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'].some(function (fn) {\r\n if (typeof document.body[fn] === 'function') {\r\n matchesFn = fn;\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n let parent;\r\n\r\n // traverse parents\r\n while (el) {\r\n parent = el.parentElement;\r\n if (parent && parent[matchesFn](selector)) {\r\n return parent;\r\n }\r\n el = parent;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n static index(el): any {\r\n const nodes = el.parentNode.childNodes;\r\n let node;\r\n let count;\r\n let i = count = 0;\r\n while ((node = nodes.item(i++)) && node !== el) {\r\n if (node.nodeType === 1) {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n static trigger(el, eventToTrigger): any {\r\n const event = document.createEvent('HTMLEvents');\r\n event.initEvent(eventToTrigger, true, false);\r\n el.dispatchEvent(event);\r\n }\r\n\r\n static on(el, events, listener): any {\r\n let elements;\r\n if (el.constructor === NodeList) {\r\n elements = el;\r\n } else {\r\n elements = [el];\r\n }\r\n\r\n events = events.split(' ');\r\n\r\n Array.prototype.forEach.call(elements, el2 => {\r\n events.forEach(event => el2.addEventListener(event, listener, false));\r\n });\r\n }\r\n\r\n static off(el, events, listener): any {\r\n events = events.split(' ');\r\n const iLen = events.length;\r\n for (let i = 0; i < iLen; i++) {\r\n if (events[i]) {\r\n el.removeEventListener(events[i], listener, false);\r\n }\r\n }\r\n }\r\n\r\n static is(el, selector): any {\r\n const matches = el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector;\r\n\r\n if (matches) {\r\n return (matches).call(el, selector);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n static position(el, withoutScroll?): any {\r\n /* http://javascript.info/tutorial/coordinates */\r\n\r\n if (el.getBoundingClientRect) {\r\n return getOffsetRect(el);\r\n } else { // old browser\r\n return getOffsetSum(el);\r\n }\r\n\r\n function getOffsetSum(elem) {\r\n /* Source: http://javascript.info/tutorial/coordinates */\r\n\r\n let top = 0, left = 0;\r\n\r\n while (elem) {\r\n top = top + parseInt(elem.offsetTop, 10);\r\n left = left + parseInt(elem.offsetLeft, 10);\r\n elem = elem.offsetParent;\r\n }\r\n\r\n return {top: top, left: left};\r\n }\r\n\r\n function getOffsetRect(elem) {\r\n /* http://javascript.info/tutorial/coordinates */\r\n\r\n const box = elem.getBoundingClientRect();\r\n\r\n const body = document.body;\r\n const docElem = document.documentElement;\r\n\r\n let scrollTop = 0;\r\n let scrollLeft = 0;\r\n if (!withoutScroll) {\r\n scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n }\r\n\r\n const clientTop = docElem.clientTop || body.clientTop || 0;\r\n const clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n const top = box.top + scrollTop - clientTop;\r\n const left = box.left + scrollLeft - clientLeft;\r\n\r\n return {top: Math.round(top), left: Math.round(left)};\r\n }\r\n }\r\n\r\n static offset(el): any {\r\n const top = el.offsetTop;\r\n const left = el.offsetLeft;\r\n\r\n return {top: Math.round(top), left: Math.round(left)};\r\n }\r\n\r\n static animate(object, property, start_value, end_value, time, end?, tick?): any {\r\n const propWithPx = ['width', 'height', 'left', 'top', 'border-radius', 'border-spacing', 'margin-left', 'margin-top'];\r\n\r\n const frame_rate = 0.06; // 60 FPS\r\n let frame = 0;\r\n const delta = (end_value - start_value) / time / frame_rate;\r\n const handle = setInterval(() => {\r\n frame++;\r\n const value = start_value + delta * frame;\r\n\r\n if (tick) {\r\n tick(value);\r\n }\r\n\r\n const hasPx = propWithPx.indexOf(property) > -1;\r\n\r\n object.style[property] = value + (hasPx ? 'px' : '');\r\n if ((start_value > end_value ? value.toFixed(2) <= end_value : value.toFixed(2) >= end_value)) {\r\n clearInterval(handle);\r\n\r\n if (end) {\r\n end();\r\n }\r\n }\r\n }, 1 / frame_rate);\r\n }\r\n\r\n static css(el, styleProp, newValue?) {\r\n if (typeof newValue !== 'undefined') {\r\n styleProp = styleProp.replace(/-([a-z])/g, function (g) {\r\n return g[1].toUpperCase();\r\n });\r\n\r\n el.style[styleProp] = newValue;\r\n } else {\r\n let value;\r\n const defaultView = (el.ownerDocument || document).defaultView;\r\n // W3C standard way:\r\n if (defaultView && defaultView.getComputedStyle) {\r\n // sanitize property name to css notation\r\n // (hyphen separated words eg. font-Size)\r\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase();\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);\r\n } else if (el.currentStyle) { // IE\r\n // sanitize property name to camelCase\r\n styleProp = styleProp.replace(/-(\\w)/g, function (str, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = el.currentStyle[styleProp];\r\n // convert other units to pixels on IE\r\n if (/^\\d+(em|pt|%|ex)?$/i.test(value)) {\r\n return (function (value2) {\r\n const oldLeft = el.style.left;\r\n const oldRsLeft = el.runtimeStyle.left;\r\n el.runtimeStyle.left = el.currentStyle.left;\r\n el.style.left = value2 || 0;\r\n value2 = el.style.pixelLeft + 'px';\r\n el.style.left = oldLeft;\r\n el.runtimeStyle.left = oldRsLeft;\r\n return value2;\r\n })(value);\r\n }\r\n return value;\r\n }\r\n }\r\n }\r\n\r\n static isInViewport(el) {\r\n const rect = el.getBoundingClientRect();\r\n\r\n return (\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.top <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.left <= (window.innerWidth || document.documentElement.clientWidth)\r\n );\r\n }\r\n\r\n static focus(el) {\r\n el.focus();\r\n const headerSpace = document.querySelector('ui-toolbar header').clientHeight + 16;\r\n const elTop = UiElement.position(el, true).top;\r\n\r\n if (elTop < headerSpace) {\r\n window.scrollTo(0, UiElement.position(el).top - headerSpace);\r\n }\r\n\r\n return;\r\n }\r\n\r\n static isMobile() {\r\n let isMobile = false;\r\n\r\n (function (a) {\r\n if (/(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/i.test(a) || /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(a.substr(0, 4))) {\r\n isMobile = true;\r\n }\r\n })(navigator.userAgent || navigator.vendor || (<any>window).opera);\r\n\r\n return isMobile;\r\n }\r\n}\r\n\r\n// left: 37, up: 38, right: 39, down: 40,\r\n// spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36\r\n// const keys = {37: 1, 38: 1, 39: 1, 40: 1};\r\nconst keys = {38: 1, 40: 1};\r\n\r\nfunction preventDefault(e) {\r\n e = e || window.event;\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n e.returnValue = false;\r\n}\r\n\r\nfunction preventDefaultForScrollKeys(e) {\r\n if (keys[e.keyCode]) {\r\n preventDefault(e);\r\n return false;\r\n }\r\n}\r\n\r\nexport function getCaretPosition(el): any {\r\n const documentt: any = {\r\n selection: undefined\r\n };\r\n Object.assign(documentt, document);\r\n\r\n let caretPos = 0;\r\n if (documentt.selection) { // IE Support\r\n el.focus();\r\n const select = documentt.selection.createRange();\r\n select.moveStart('character', -el.value.length);\r\n caretPos = select.text.length;\r\n } else if (el.selectionStart || el.selectionStart === '0') { // Firefox support\r\n caretPos = el.selectionStart;\r\n }\r\n\r\n return caretPos;\r\n}\r\n\r\nexport function setCaretPosition(el, beforeSelIndex, afterSelIndex, symbolsPositions?): any {\r\n // https://javascriptexamples.info/snippet/getset-cursor-in-html-textarea\r\n\r\n let futureSelIndex;\r\n symbolsPositions = symbolsPositions || [];\r\n if (el.selectionStart || el.selectionStart === '0') {\r\n\r\n futureSelIndex = afterSelIndex;\r\n\r\n for (let i = 0; i < symbolsPositions.length; i++) {\r\n if (beforeSelIndex === symbolsPositions[i] && afterSelIndex === symbolsPositions[i] + 1) {\r\n futureSelIndex = symbolsPositions[i] + 2;\r\n\r\n break;\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n setCaret();\r\n });\r\n }\r\n\r\n function setCaret() {\r\n if (el.setSelectionRange) {\r\n if (el.selectionStart) {\r\n el.focus();\r\n el.setSelectionRange(futureSelIndex, futureSelIndex);\r\n } else {\r\n el.focus();\r\n }\r\n } else if (el.createTextRange) {\r\n const range = el.createTextRange();\r\n range.collapse(true);\r\n range.move('character', futureSelIndex);\r\n range.moveEnd('character', futureSelIndex);\r\n range.moveStart('character', futureSelIndex);\r\n range.select();\r\n }\r\n }\r\n}\r\n\r\nexport function removeClass(el, className) {\r\n return el.classList.remove(className);\r\n}\r\n\r\nexport function addClass(el, className) {\r\n return el.classList.add(className);\r\n}\r\n\r\nexport function containsClass(el, className) {\r\n return el.classList.contains(className);\r\n}\r\n","export function debounce(func, wait, immediate?) {\r\n let timeout;\r\n return function () {\r\n const context = this;\r\n const args = arguments;\r\n const later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n func.apply(context, args);\r\n }\r\n };\r\n const callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n func.apply(context, args);\r\n }\r\n };\r\n}\r\n","import {UiElement} from '../utils/providers/element.provider';\r\n\r\nUiElement.on(window, 'scroll resize', (e) => {\r\n const fabContainers = document.querySelectorAll('.ui-fab-container');\r\n\r\n const len = fabContainers.length;\r\n\r\n if (len) {\r\n const scroll = (window.scrollY || window.pageYOffset);\r\n\r\n for (let i = 0; i < len; i++) {\r\n const fabContainer = fabContainers[i];\r\n\r\n if (scroll > 1) {\r\n fabContainer.classList.add('scrolled');\r\n } else {\r\n fabContainer.classList.remove('scrolled');\r\n }\r\n }\r\n }\r\n});\r\n","/*\r\nLicensed under the Apache License, Version 2.0 (the \"License\");\r\nyou may not use this file except in compliance with the License.\r\nYou may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an \"AS IS\" BASIS,\r\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\nSee the License for the specific language governing permissions and\r\nlimitations under the License.\r\n*/\r\nconst defaultDiacriticsRemovalMap = [\r\n {\r\n 'base': 'A',\r\n 'letters': '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\r\n },\r\n {'base': 'AA', 'letters': '\\uA732'},\r\n {'base': 'AE', 'letters': '\\u00C6\\u01FC\\u01E2'},\r\n {'base': 'AO', 'letters': '\\uA734'},\r\n {'base': 'AU', 'letters': '\\uA736'},\r\n {'base': 'AV', 'letters': '\\uA738\\uA73A'},\r\n {'base': 'AY', 'letters': '\\uA73C'},\r\n {'base': 'B', 'letters': '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'},\r\n {'base': 'C', 'letters': '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'},\r\n {\r\n 'base': 'D',\r\n 'letters': '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0'\r\n },\r\n {'base': 'DZ', 'letters': '\\u01F1\\u01C4'},\r\n {'base': 'Dz', 'letters': '\\u01F2\\u01C5'},\r\n {\r\n 'base': 'E',\r\n 'letters': '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\r\n },\r\n {'base': 'F', 'letters': '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'},\r\n {\r\n 'base': 'G',\r\n 'letters': '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\r\n },\r\n {\r\n 'base': 'H',\r\n 'letters': '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\r\n },\r\n {\r\n 'base': 'I',\r\n 'letters': '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\r\n },\r\n {'base': 'J', 'letters': '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'},\r\n {\r\n 'base': 'K',\r\n 'letters': '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\r\n },\r\n {\r\n 'base': 'L',\r\n 'letters': '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\r\n },\r\n {'base': 'LJ', 'letters': '\\u01C7'},\r\n {'base': 'Lj', 'letters': '\\u01C8'},\r\n {'base': 'M', 'letters': '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'},\r\n {\r\n 'base': 'N',\r\n 'letters': '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\r\n },\r\n {'base': 'NJ', 'letters': '\\u01CA'},\r\n {'base': 'Nj', 'letters': '\\u01CB'},\r\n {\r\n 'base': 'O',\r\n 'letters': '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\r\n },\r\n {'base': 'OI', 'letters': '\\u01A2'},\r\n {'base': 'OO', 'letters': '\\uA74E'},\r\n {'base': 'OU', 'letters': '\\u0222'},\r\n {'base': 'OE', 'letters': '\\u008C\\u0152'},\r\n {'base': 'oe', 'letters': '\\u009C\\u0153'},\r\n {'base': 'P', 'letters': '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'},\r\n {'base': 'Q', 'letters': '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'},\r\n {\r\n 'base': 'R',\r\n 'letters': '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\r\n },\r\n {\r\n 'base': 'S',\r\n 'letters': '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\r\n },\r\n {\r\n 'base': 'T',\r\n 'letters': '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\r\n },\r\n {'base': 'TZ', 'letters': '\\uA728'},\r\n {\r\n 'base': 'U',\r\n 'letters': '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\r\n },\r\n {'base': 'V', 'letters': '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'},\r\n {'base': 'VY', 'letters': '\\uA760'},\r\n {'base': 'W', 'letters': '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'},\r\n {'base': 'X', 'letters': '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'},\r\n {\r\n 'base': 'Y',\r\n 'letters': '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\r\n },\r\n {\r\n 'base': 'Z',\r\n 'letters': '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\r\n },\r\n {\r\n 'base': 'a',\r\n 'letters': '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\r\n },\r\n {'base': 'aa', 'letters': '\\uA733'},\r\n {'base': 'ae', 'letters': '\\u00E6\\u01FD\\u01E3'},\r\n {'base': 'ao', 'letters': '\\uA735'},\r\n {'base': 'au', 'letters': '\\uA737'},\r\n {'base': 'av', 'letters': '\\uA739\\uA73B'},\r\n {'base': 'ay', 'letters': '\\uA73D'},\r\n {'base': 'b', 'letters': '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'},\r\n {'base': 'c', 'letters': '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'},\r\n {\r\n 'base': 'd',\r\n 'letters': '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\r\n },\r\n {'base': 'dz', 'letters': '\\u01F3\\u01C6'},\r\n {\r\n 'base': 'e',\r\n 'letters': '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\r\n },\r\n {'base': 'f', 'letters': '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'},\r\n {\r\n 'base': 'g',\r\n 'letters': '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\r\n },\r\n {\r\n 'base': 'h',\r\n 'letters': '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\r\n },\r\n {'base': 'hv', 'letters': '\\u0195'},\r\n {\r\n 'base': 'i',\r\n 'letters': '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\r\n },\r\n {'base': 'j', 'letters': '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'},\r\n {\r\n 'base': 'k',\r\n 'letters': '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\r\n },\r\n {\r\n 'base': 'l',\r\n 'letters': '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\r\n },\r\n {'base': 'lj', 'letters': '\\u01C9'},\r\n {'base': 'm', 'letters': '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'},\r\n {\r\n 'base': 'n',\r\n 'letters': '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\r\n },\r\n {'base': 'nj', 'letters': '\\u01CC'},\r\n {\r\n 'base': 'o',\r\n 'letters': '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\r\n },\r\n {'base': 'oi', 'letters': '\\u01A3'},\r\n {'base': 'ou', 'letters': '\\u0223'},\r\n {'base': 'oo', 'letters': '\\uA74F'},\r\n {'base': 'p', 'letters': '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'},\r\n {'base': 'q', 'letters': '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'},\r\n {\r\n 'base': 'r',\r\n 'letters': '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\r\n },\r\n {\r\n 'base': 's',\r\n 'letters': '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\r\n },\r\n {\r\n 'base': 't',\r\n 'letters': '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\r\n },\r\n {'base': 'tz', 'letters': '\\uA729'},\r\n {\r\n 'base': 'u',\r\n 'letters': '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\r\n },\r\n {'base': 'v', 'letters': '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'},\r\n {'base': 'vy', 'letters': '\\uA761'},\r\n {'base': 'w', 'letters': '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'},\r\n {'base': 'x', 'letters': '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'},\r\n {\r\n 'base': 'y',\r\n 'letters': '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\r\n },\r\n {\r\n 'base': 'z',\r\n 'letters': '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\r\n }\r\n];\r\n\r\nconst diacriticsMap = {};\r\nfor (let i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\r\n const letters = defaultDiacriticsRemovalMap [i].letters;\r\n for (let j = 0; j < letters.length; j++) {\r\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap [i].base;\r\n }\r\n}\r\n\r\n// \"what?\" version ... http://jsperf.com/diacritics/12\r\nexport function unaccent(str) {\r\n return str.replace(/[^\\u0000-\\u007E]/g, function (a) {\r\n return diacriticsMap[a] || a;\r\n });\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[addCalendar]'\r\n})\r\nexport class UiAddCalendarDirective {\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UiDatetimeService {\r\n days: any;\r\n shortDays: any;\r\n months: any;\r\n shortMonths: any;\r\n\r\n constructor() {\r\n this.days = ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado'];\r\n this.shortDays = ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'];\r\n this.months = ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'];\r\n this.shortMonths = ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'];\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UiColor {\r\n static isBright(hex, minDarkPerc?): boolean {\r\n return _isBright(hex, minDarkPerc);\r\n }\r\n\r\n static hexToRgb(hex): {} {\r\n return _hexToRgb(hex);\r\n }\r\n\r\n constructor() {\r\n }\r\n}\r\n\r\nexport function _isBright(hex, minDarkPerc) {\r\n const color = _hexToRgb(hex);\r\n if (!color) {\r\n return false;\r\n }\r\n const luminosityPerc = 1 - (0.299 * color.r + 0.587 * color.g + 0.114 * color.b) / 255;\r\n return (luminosityPerc < (minDarkPerc || 0.3));\r\n}\r\n\r\nexport function _hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n}\r\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\nimport {UiDatetimeService} from './datetime.service';\r\n\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiColor} from '../utils/providers/color.provider';\r\n\r\n@Component({\r\n selector: 'ui-calendar-content',\r\n templateUrl: './calendar-content.component.html',\r\n styleUrls: ['./calendar-content.component.scss'],\r\n})\r\nexport class UiCalendarContentComponent implements AfterViewInit {\r\n\r\n maxDate: Date;\r\n minDate: Date;\r\n calendar: any;\r\n ngModel: any;\r\n events: any[];\r\n chosenDate: any;\r\n days: any;\r\n months: any;\r\n confirmSelection: boolean;\r\n chosen: Subject<any> = new Subject();\r\n\r\n constructor(public datetimeService: UiDatetimeService, public elementRef: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\r\n this.days = datetimeService.days;\r\n this.months = datetimeService.months;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.events && this.events.length) {\r\n this.verifyEventDates();\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n this.elementRef.nativeElement.querySelectorAll('.days button').forEach(item => {\r\n item.addEventListener('keydown', e => {\r\n const target = UiElement.closest(e.target, '.day');\r\n const index = UiElement.index(target);\r\n\r\n let toFocus;\r\n let toFocusIndex = 0;\r\n let toFocusAlt;\r\n\r\n setTimeout(() => {\r\n switch (e.keyCode) {\r\n // Seta para esquerda\r\n case 37:\r\n toFocus = this.getSibling(index - 1);\r\n if (!toFocus.length) {\r\n toFocus = this.elementRef.nativeElement.querySelectorAll('.days button:not([disabled])');\r\n toFocusIndex = toFocus.length - 1;\r\n }\r\n toFocus[toFocusIndex].focus();\r\n break;\r\n // Seta para cima\r\n case 38:\r\n toFocus = this.getSibling(index - 7);\r\n toFocusAlt = this.elementRef.nativeElement.querySelectorAll('.days button:not([disabled])')[0];\r\n\r\n if (toFocus.length && index > UiElement.index(toFocus[0])) {\r\n toFocus[0].focus();\r\n } else {\r\n toFocusAlt.focus();\r\n }\r\n break;\r\n // Seta para direita\r\n case 39:\r\n toFocus = this.getSibling(index + 1);\r\n if (!toFocus.length) {\r\n this.elementRef.nativeElement.querySelectorAll('.days button:not([disabled])')[0].focus();\r\n } else {\r\n toFocus[0].focus();\r\n }\r\n break;\r\n // // Seta para baixo\r\n case 40:\r\n toFocus = this.getSibling(index + 7);\r\n toFocusAlt = this.elementRef.nativeElement.querySelectorAll('.days button:not([disabled])');\r\n toFocusAlt = toFocusAlt[toFocusAlt.length - 1];\r\n\r\n if (toFocus.length && index < UiElement.index(toFocus[0].parentNode)) {\r\n toFocus[0].focus();\r\n } else {\r\n toFocusAlt.focus();\r\n }\r\n break;\r\n }\r\n });\r\n });\r\n });\r\n\r\n this.elementRef.nativeElement.addEventListener('keydown', e => {\r\n if ([37, 38, 39, 40].indexOf(e.keyCode) > -1) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n getSibling(index): any[] {\r\n if (index < 0 || !this.elementRef.nativeElement.querySelectorAll('.day')[index]) {\r\n return [];\r\n }\r\n return this.elementRef.nativeElement.querySelectorAll('.day')[index].querySelectorAll('button:not([disabled])');\r\n }\r\n\r\n isDay(value) {\r\n const dateToCheck = this.chosenDate;\r\n if (!dateToCheck) {\r\n return;\r\n }\r\n\r\n return (\r\n dateToCheck.getDate() === value.getDate() &&\r\n dateToCheck.getMonth() === value.getMonth() &&\r\n dateToCheck.getFullYear() === value.getFullYear()\r\n );\r\n }\r\n\r\n chooseDate(value) {\r\n if (value) {\r\n this.chosenDate = value;\r\n if (!this.confirmSelection) {\r\n this.ngModel = value;\r\n }\r\n const newValue = {\r\n value,\r\n confirmSelection: this.confirmSelection\r\n };\r\n\r\n this.chosen.next(newValue);\r\n }\r\n }\r\n\r\n isDisabled(value) {\r\n const minDate = this.minDate ? new Date(this.minDate).getTime() : null;\r\n const maxDate = this.maxDate ? new Date(this.maxDate).getTime() : null;\r\n const date = value.getTime();\r\n\r\n return (typeof minDate === 'number' && !isNaN(minDate) && date < minDate) || (typeof maxDate === 'number' && !isNaN(maxDate) && date > maxDate);\r\n }\r\n\r\n verifyEventDates() {\r\n this.calendar.days.map(day => {\r\n this.events.map(event => {\r\n const date = new Date (event.date);\r\n\r\n if ((date.getTime() + (day.value.getTimezoneOffset() * 60000)) === day.value.getTime()) {\r\n day.hasEvent = true;\r\n day.eventColor = event.color;\r\n day.blocked = event.blocked;\r\n }\r\n });\r\n });\r\n }\r\n\r\n isBright(color) {\r\n return UiColor.isBright(color);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ComponentFactoryResolver,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {UiCalendarContentComponent} from './calendar-content.component';\r\nimport {UiAddCalendarDirective} from './add-calendar.directive';\r\nimport {UiDatetimeService} from './datetime.service';\r\nimport {Subject} from 'rxjs';\r\nimport {isDate} from 'rxjs/internal/util/isDate';\r\n\r\n@Component({\r\n selector: 'ui-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiCalendarComponent implements OnInit, OnChanges {\r\n @Input() ngModel: any;\r\n @Input() maxDate: Date;\r\n @Input() minDate: Date;\r\n @Input() hideHeader: boolean;\r\n @Input() initOnSelected: Date;\r\n @Input() confirmSelection: boolean;\r\n @Output() select: EventEmitter<any> = new EventEmitter();\r\n @Output() selectDateChange: EventEmitter<any> = new EventEmitter();\r\n @Output() cancel: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n @Output() updateMonth: EventEmitter<any> = new EventEmitter();\r\n @ViewChild(UiAddCalendarDirective, { static: true }) addCalendar: UiAddCalendarDirective;\r\n chosen: Subject<any> = new Subject();\r\n\r\n calendar: any;\r\n days: any;\r\n shortDays: any;\r\n months: any;\r\n viewDate: Date;\r\n chosenDate: any;\r\n componentRef;\r\n\r\n constructor(public componentFactoryResolver: ComponentFactoryResolver, public datetimeService: UiDatetimeService) {\r\n this.days = datetimeService.days;\r\n this.shortDays = datetimeService.shortDays;\r\n this.months = datetimeService.months;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.minDate = this.minDate && isDate(new Date(this.minDate)) ? new Date(this.minDate) : this.minDate;\r\n this.maxDate = this.maxDate && isDate(new Date(this.maxDate)) ? new Date(this.maxDate) : this.maxDate;\r\n this.chosenDate = this.ngModel && isDate(new Date(this.ngModel)) ? new Date(this.ngModel) : null;\r\n this.ngModel = this.ngModel && isDate(new Date(this.ngModel)) ? new Date(this.ngModel) : this.ngModel;\r\n this.viewDate = isDate(this.ngModel) ? this.ngModel : this.initOnSelected || new Date();\r\n this.renderCalendar(this.viewDate);\r\n\r\n }\r\n\r\n public ngOnChanges(value): void {\r\n if (value.ngModel && !value.ngModel.firstChange && !isNaN(value.ngModel.currentValue)) {\r\n const ngModel = value.ngModel.currentValue = value.ngModel.currentValue && isDate(new Date(value.ngModel.currentValue)) ? new Date(value.ngModel.currentValue) : value.ngModel.currentValue;\r\n this.ngModel = this.chosenDate = this.componentRef.instance.chosenDate = this.componentRef.instance.ngModel = ngModel;\r\n }\r\n if (value.maxDate && !value.maxDate.firstChange) {\r\n const maxDate = value.maxDate.currentValue = value.maxDate.currentValue && isDate(new Date(value.maxDate.currentValue)) ? new Date(value.maxDate.currentValue) : value.maxDate.currentValue;\r\n this.componentRef.instance.maxDate = this.maxDate = maxDate;\r\n }\r\n if (value.minDate && !value.minDate.firstChange) {\r\n const minDate = value.minDate.currentValue = value.minDate.currentValue && isDate(new Date(value.minDate.currentValue)) ? new Date(value.minDate.currentValue) : value.minDate.currentValue;\r\n this.componentRef.instance.minDate = this.minDate = minDate;\r\n }\r\n if (value.confirmSelection) {\r\n this.confirmSelection = value.confirmSelection.currentValue;\r\n }\r\n }\r\n\r\n public prevMonth(): void {\r\n this.viewDate.setMonth(this.viewDate.getMonth() - 1);\r\n this.updateMonth.emit();\r\n this.renderCalendar(this.viewDate);\r\n }\r\n\r\n public nextMonth(): void {\r\n this.viewDate.setMonth(this.viewDate.getMonth() + 1);\r\n this.updateMonth.emit();\r\n this.renderCalendar(this.viewDate);\r\n }\r\n\r\n public selectDate(value) {\r\n this.ngModel = this.componentRef.instance.ngModel = value;\r\n this.ngModelChange.emit(this.ngModel);\r\n this.select.emit(this.ngModel);\r\n this.selectDateChange.emit(this.ngModel);\r\n this.chosen.next(this.ngModel);\r\n }\r\n\r\n public cancelDate() {\r\n this.ngModel = this.chosenDate = this.componentRef.instance.ngModel = this.componentRef.instance.chosenDate = null;\r\n this.cancel.emit();\r\n this.ngModelChange.emit(this.ngModel);\r\n }\r\n\r\n public renderCalendar(dateTarget: Date): void {\r\n let date: Date = dateTarget;\r\n\r\n date.setHours(0, 0, 0, 0);\r\n date.setDate(1);\r\n date.setMonth(date.getMonth() + 1);\r\n date.setDate(0);\r\n\r\n this.viewDate = date;\r\n\r\n const calendar: any = {\r\n year: date.getFullYear(),\r\n month: date.getMonth(),\r\n monthDays: date.getDate(),\r\n lastDayWeek: date.getDay(),\r\n lastDayWeekName: this.days[date.getDay()]\r\n };\r\n\r\n date.setDate(1);\r\n calendar.firstDayWeek = date.getDay();\r\n calendar.firstDayWeekName = this.days[date.getDay()];\r\n calendar.totalDays = calendar.monthDays + calendar.firstDayWeek + (6 - calendar.lastDayWeek);\r\n calendar.days = [];\r\n\r\n const firstDate = -calendar.firstDayWeek + 1;\r\n const lastDate = calendar.monthDays + (7 - calendar.lastDayWeek);\r\n\r\n for (let i = firstDate; i < lastDate; i++) {\r\n date = new Date(calendar.year, calendar.month, i);\r\n let today: any = new Date();\r\n today = date.getFullYear() === today.getFullYear() && date.getMonth() === today.getMonth() && date.getDate() === today.getDate();\r\n calendar.days.push({\r\n month: date.getMonth(),\r\n date: date.getDate(),\r\n value: date,\r\n time: date.getTime(),\r\n today: today\r\n });\r\n }\r\n\r\n this.calendar = calendar;\r\n\r\n const keysComponent = ['calendar', 'ngModel', 'minDate', 'maxDate', 'chosenDate', 'confirmSelection', 'events'];\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiCalendarContentComponent);\r\n const viewContainerRef = this.addCalendar.viewContainerRef;\r\n viewContainerRef.clear();\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n keysComponent.map(key => this.componentRef.instance[key] = this[key]);\r\n\r\n this.componentRef.instance.chosen.subscribe(newValue => {\r\n if (newValue) {\r\n this.chosenDate = newValue.value;\r\n if (!newValue.confirmSelection) {\r\n this.selectDate(newValue.value);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCapitalize'\r\n})\r\nexport class UiCapitalizePipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n return value && value.length > 0 ? value[0].toUpperCase() + value.substr(1).toLowerCase() : value;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class UiCookie {\r\n static get(name: string) {\r\n const ca: Array<string> = document.cookie.split(';');\r\n const caLen: number = ca.length;\r\n const cookieName = `${name}=`;\r\n let c: string;\r\n\r\n for (let i = 0; i < caLen; i += 1) {\r\n c = ca[i].replace(/^\\s+/g, '');\r\n if (c.indexOf(cookieName) === 0) {\r\n return c.substring(cookieName.length, c.length);\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n static has(name: string) {\r\n return !!this.get(name);\r\n }\r\n\r\n static delete(name: string, domain?: string) {\r\n this.set(name, '', -1, null, domain);\r\n }\r\n\r\n static set(name: string, value: string, expireDays: number = 365, path: string = '/', domain?: string) {\r\n const d: Date = new Date();\r\n d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);\r\n const expires: string = 'expires=' + d.toUTCString();\r\n if (domain) domain = '; domain=' + domain\r\n document.cookie = name + '=' + value + '; ' + expires + '; path=' + path + domain;\r\n }\r\n}\r\n","import {Directive, ElementRef, AfterViewInit, HostListener, Input, OnChanges} from '@angular/core';\r\n\r\n@Directive({selector: 'th[uiDataTableOrderBy]'})\r\nexport class UiDataTableOrderByDirective implements AfterViewInit, OnChanges {\r\n @Input('withCondition') withCondition: boolean;\r\n @Input('uiDataTableOrderBy') uiDataTableOrderBy: 'ASC' | 'DESC' | null;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const icon: HTMLElement = document.createElement('i');\r\n icon.classList.add('material-icons');\r\n icon.innerHTML = 'arrow_downward';\r\n\r\n if (this.element.nativeElement.classList.contains('align-right')) {\r\n this.element.nativeElement.insertBefore(icon.cloneNode(true), this.element.nativeElement.firstChild);\r\n } else {\r\n this.element.nativeElement.appendChild(icon.cloneNode(true));\r\n }\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.uiDataTableOrderBy && !changes.uiDataTableOrderBy.firstChange) {\r\n this.uiDataTableOrderBy = changes.uiDataTableOrderBy.currentValue;\r\n this.orderByCondition();\r\n }\r\n }\r\n\r\n orderByClick() {\r\n if (this.element.nativeElement.classList.contains('order_desc')\r\n || this.element.nativeElement.classList.contains('order_asc')) {\r\n if (this.element.nativeElement.classList.contains('order_asc')) {\r\n this.element.nativeElement.classList.add('order_desc');\r\n this.element.nativeElement.classList.remove('order_asc');\r\n } else if (this.element.nativeElement.classList.contains('order_desc')) {\r\n this.element.nativeElement.classList.remove('order_desc');\r\n this.element.nativeElement.classList.remove('order_asc');\r\n }\r\n } else {\r\n this.element.nativeElement.classList.add('order_asc');\r\n }\r\n }\r\n\r\n orderByCondition() {\r\n switch (this.uiDataTableOrderBy) {\r\n case 'ASC':\r\n this.element.nativeElement.classList.add('order_asc');\r\n this.element.nativeElement.classList.remove('order_desc');\r\n break;\r\n case 'DESC':\r\n this.element.nativeElement.classList.add('order_desc');\r\n this.element.nativeElement.classList.remove('order_asc');\r\n break;\r\n default:\r\n this.element.nativeElement.classList.remove('order_asc', 'order_desc');\r\n break;\r\n }\r\n }\r\n\r\n @HostListener('click') onClick() {\r\n if (this.withCondition) {\r\n return;\r\n }\r\n\r\n this.orderByClick();\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {UiDatePickerDirective} from './date-picker.directive';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Injectable()\r\nexport class UiReferencesService {\r\n\r\n datePickers: any = {};\r\n\r\n constructor() {\r\n }\r\n\r\n add(name: string, component: UiDatePickerDirective): void {\r\n if (this.datePickers && this.datePickers[name]) {\r\n return;\r\n }\r\n\r\n this.datePickers[name] = component;\r\n }\r\n\r\n get(name: string): UiDatePickerDirective {\r\n return this.datePickers[name];\r\n }\r\n\r\n remove(name: string) {\r\n delete this.datePickers[name];\r\n }\r\n\r\n closeAll() {\r\n UiElement.trigger(window, 'click');\r\n }\r\n\r\n getAll(): UiDatePickerDirective {\r\n return this.datePickers;\r\n }\r\n\r\n updateModel(name, value) {\r\n this.datePickers[name].ngModel = value;\r\n this.datePickers[name].ngModelChange.emit(value);\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n Directive,\r\n EmbeddedViewRef,\r\n ElementRef,\r\n Injector,\r\n Input\r\n} from '@angular/core';\r\n\r\nimport {UiReferencesService} from './references.service';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiCalendarComponent} from '../calendar/calendar.component';\r\n\r\n@Directive({\r\n selector: '[uiDatePickerCaller]'\r\n})\r\nexport class UiDatePickerCallerDirective implements AfterViewInit {\r\n datePicker;\r\n componentRef: any;\r\n componentElement: any;\r\n pickerOpen: boolean;\r\n wrapDatePicker: HTMLElement;\r\n inputElement: HTMLElement;\r\n @Input() pickerEvent: string;\r\n @Input('uiDatePickerCaller') datePickerCaller: string;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector,\r\n private referencesService: UiReferencesService,\r\n private elementRef: ElementRef) {\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.datePicker = this.referencesService.get(this.datePickerCaller);\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.pickerEvent || 'click', (e) => {\r\n this.inputElement = <HTMLElement>document.querySelector(`[date-picker-name=\"${this.datePickerCaller}\"]`);\r\n\r\n this.referencesService.closeAll();\r\n\r\n if (!this.pickerOpen) {\r\n this.renderDatePicker(this.datePicker);\r\n e.stopPropagation(); // Parando propagação do evento para os eventos do window\r\n }\r\n });\r\n\r\n UiElement.on(window, 'click resize scroll', (e) => {\r\n if (this.pickerOpen) {\r\n if ((!(UiElement.is(e.target, '.wrap-date-picker') || UiElement.closest(e.target, '.wrap-date-picker'))\r\n && !(document.body.clientWidth <= 600 && e.type === 'scroll')) || UiElement.is(e.target, '.overlay')) {\r\n this.closePicker();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getComponentAsElement(componentRef): HTMLElement {\r\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n public setInstances(component, componentRef): void {\r\n const keysComponent = ['ngModel', 'maxDate', 'minDate', 'initOnSelected', 'confirmSelection', 'select', 'selectDateChange', 'events'];\r\n keysComponent.map(key => componentRef.instance[key] = component[key]);\r\n componentRef.instance.cancel.subscribe(() => this.closePicker());\r\n componentRef.instance.updateMonth.subscribe(() => this.setCoordinate(this.componentElement));\r\n component.chosen.subscribe(value => componentRef.instance.ngOnChanges(value));\r\n componentRef.instance.chosen.subscribe(value => {\r\n this.referencesService.updateModel(this.datePickerCaller, value);\r\n if (this.pickerOpen) {\r\n this.inputElement.focus();\r\n this.closePicker();\r\n }\r\n });\r\n }\r\n\r\n public renderViewCalendar(element, themeClass): void {\r\n this.wrapDatePicker = document.createElement('div');\r\n this.wrapDatePicker.classList.add('wrap-date-picker');\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('overlay');\r\n if (themeClass) {\r\n this.wrapDatePicker.classList.add(themeClass);\r\n }\r\n\r\n this.wrapDatePicker.style.transform = 'scale(0)';\r\n element.classList.add('portrait-only');\r\n this.wrapDatePicker.appendChild(overlay);\r\n this.wrapDatePicker.appendChild(element);\r\n document.body.appendChild(this.wrapDatePicker);\r\n\r\n this.setCoordinate(element);\r\n }\r\n\r\n public renderDatePicker(component): void {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiCalendarComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n this.componentElement = this.getComponentAsElement(this.componentRef);\r\n\r\n this.setInstances(component, this.componentRef);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n this.renderViewCalendar(this.componentElement, component.themeClass);\r\n this.pickerOpen = true;\r\n }\r\n\r\n public closePicker(): void {\r\n this.wrapDatePicker.classList.remove('open');\r\n setTimeout(() => {\r\n this.pickerOpen = false;\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n document.body.style.overflowY = '';\r\n try {\r\n document.body.removeChild(this.wrapDatePicker);\r\n } catch (e) {\r\n }\r\n }, 280);\r\n }\r\n\r\n private setCoordinate(element) {\r\n const position = UiElement.position(this.inputElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: this.inputElement.offsetHeight + position.top\r\n };\r\n\r\n setTimeout(() => {\r\n const pickerHorizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const pickerVerticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + (document.body.scrollLeft || window.scrollX || window.pageXOffset);\r\n const windowHeight = window.innerHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (pickerHorizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n if (pickerVerticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n this.wrapDatePicker.style.transform = '';\r\n element.style.position = 'absolute';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n\r\n this.wrapDatePicker.classList.add('open');\r\n if (document.body.clientWidth <= 600) {\r\n document.body.style.overflowY = 'hidden';\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Directive, EventEmitter, Input, Output, OnChanges, OnInit, OnDestroy, ElementRef,\r\n AfterViewInit, ChangeDetectorRef\r\n} from '@angular/core';\r\nimport {UiReferencesService} from './references.service';\r\nimport {Subject} from 'rxjs';\r\nimport {isDate} from 'rxjs/internal/util/isDate';\r\n\r\n@Directive({\r\n selector: '[uiDatePicker]'\r\n})\r\nexport class UiDatePickerDirective implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n @Input() ngModel;\r\n @Input() maxDate: Date;\r\n @Input() minDate: Date;\r\n @Input() events: any;\r\n @Input() initOnSelected: Date;\r\n @Input() confirmSelection: boolean;\r\n @Input('theme-class') themeClass: string;\r\n @Input('uiDatePicker') datePicker: string;\r\n @Output() select: EventEmitter<any> = new EventEmitter();\r\n @Output() selectDateChange: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n chosen: Subject<any> = new Subject();\r\n\r\n constructor(public referencesService: UiReferencesService, public element: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\r\n this.minDate = this.minDate && isDate(new Date(this.minDate)) ? new Date(this.minDate) : this.minDate;\r\n this.maxDate = this.maxDate && isDate(new Date(this.maxDate)) ? new Date(this.maxDate) : this.maxDate;\r\n }\r\n\r\n ngOnInit() {\r\n this.referencesService.add(this.datePicker, this);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.element.nativeElement.setAttribute('date-picker-name', this.datePicker);\r\n }\r\n\r\n ngOnChanges(value) {\r\n this.chosen.next(value);\r\n if (value.ngModel && value.ngModel.currentValue === '') {\r\n this.ngModelChange.emit(null);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.referencesService.remove(this.datePicker);\r\n }\r\n}\r\n","import {UiElement} from './element.provider';\r\n\r\nexport class UiElementRef {\r\n nativeElement: any;\r\n length: number;\r\n classList: any;\r\n\r\n constructor(element: any) {\r\n this.nativeElement = element;\r\n\r\n if (element) {\r\n if (element.length) {\r\n this.length = element.length;\r\n if (element === window) {\r\n this[0] = new UiElementRef(element);\r\n } else {\r\n for (let i = 0; i < element.length; i++) {\r\n this[i] = new UiElementRef(element[i]);\r\n }\r\n }\r\n } else {\r\n this.length = 1;\r\n this[0] = element;\r\n }\r\n }\r\n\r\n this.classList = {\r\n remove: function removeClass(className) {\r\n return UiElement.classList.remove(element, className);\r\n },\r\n add: function addClass(className) {\r\n return UiElement.classList.add(element, className);\r\n },\r\n contains: function addClass(className) {\r\n return UiElement.classList.contains(element, className);\r\n }\r\n };\r\n }\r\n\r\n closest(selector): any {\r\n return new UiElementRef(UiElement.closest(this.nativeElement, selector));\r\n }\r\n\r\n index(): any {\r\n return UiElement.index(this.nativeElement);\r\n }\r\n\r\n trigger(eventToTrigger): any {\r\n return UiElement.trigger(this.nativeElement, eventToTrigger);\r\n }\r\n\r\n on(events, listener): any {\r\n return UiElement.on(this.nativeElement, events, listener);\r\n }\r\n\r\n off(events, listener): any {\r\n return UiElement.off(this.nativeElement, events, listener);\r\n }\r\n\r\n is(selector): any {\r\n return UiElement.is(this.nativeElement, selector);\r\n }\r\n\r\n position(withoutScroll?): any {\r\n return UiElement.position(this.nativeElement, withoutScroll);\r\n }\r\n\r\n offset(): any {\r\n return UiElement.offset(this.nativeElement);\r\n }\r\n\r\n animate(property, start_value, end_value, time, end?, tick?): any {\r\n return UiElement.animate(this.nativeElement, property, start_value, end_value, time, end, tick);\r\n }\r\n\r\n querySelector(selector): any {\r\n let selected = this.nativeElement.querySelectorAll(selector);\r\n\r\n if (selected.length) {\r\n selected = selected.length === 1 ? selected[0] : selected;\r\n return new UiElementRef(selected);\r\n }\r\n\r\n return new UiElementRef(null);\r\n }\r\n\r\n forEach(callback): any {\r\n return Array.prototype.forEach.call(this, callback);\r\n }\r\n\r\n filter(callback): any {\r\n return Array.prototype.filter.call(this, callback);\r\n }\r\n\r\n indexOf(element): any {\r\n return Array.prototype.indexOf.call(this, element);\r\n }\r\n\r\n css(styleProp, newValue?): any {\r\n return UiElement.css(this.nativeElement, styleProp, newValue);\r\n }\r\n\r\n isInViewport(): any {\r\n return UiElement.isInViewport(this.nativeElement);\r\n }\r\n\r\n attribute(name, value?): any {\r\n if (typeof value !== 'undefined') {\r\n return this.nativeElement.setAttribute(name, value);\r\n } else {\r\n return this.nativeElement.getAttribute(name);\r\n }\r\n }\r\n\r\n height(newHeight?) {\r\n if (typeof newHeight !== 'undefined') {\r\n UiElement.css(this.nativeElement, 'height', newHeight);\r\n }\r\n\r\n return this.nativeElement.clientHeight;\r\n }\r\n\r\n parent() {\r\n return new UiElementRef(this.nativeElement.parentNode);\r\n }\r\n\r\n focus() {\r\n if (this.nativeElement && this.nativeElement.focus) {\r\n this.nativeElement.focus();\r\n }\r\n }\r\n}\r\n","import {\r\n Component, ElementRef, Output, TemplateRef, ViewChild,\r\n ViewEncapsulation, EventEmitter, Input\r\n} from '@angular/core';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\n@Component({\r\n selector: 'ui-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiDialogComponent {\r\n viewRef: any;\r\n opened: boolean;\r\n @Input('card-size') cardSize: number;\r\n @Output() closeChange: EventEmitter<any> = new EventEmitter();\r\n @ViewChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n }\r\n\r\n close() {\r\n this.opened = false;\r\n this.closeChange.emit();\r\n\r\n if (this.viewRef) {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (fabs.length) {\r\n fabs.classList.remove('hide');\r\n }\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n if (this.viewRef) {\r\n setTimeout(() => {\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.remove) {\r\n rootNode.remove();\r\n } else {\r\n rootNode.parentNode.removeChild(rootNode);\r\n }\r\n });\r\n this.viewRef.destroy();\r\n this.viewRef = null;\r\n }, 280);\r\n }\r\n\r\n document.body.style.overflowY = '';\r\n }\r\n }\r\n\r\n show(config?: any) {\r\n if (!this.viewRef) {\r\n const dialog = this;\r\n\r\n this.close();\r\n config = config || {};\r\n\r\n if (config.clickOverlayToClose === undefined) {\r\n config.clickOverlayToClose = true;\r\n } else if (config.clickOverlayToClose) {\r\n config.clickOverlayToClose = JSON.parse(config.clickOverlayToClose);\r\n }\r\n\r\n this.viewRef = dialog.templateRef.createEmbeddedView(dialog.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode, config);\r\n }\r\n });\r\n }\r\n }\r\n\r\n open(element, config) {\r\n this.opened = true;\r\n setTimeout(() => {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (config.darkClass) {\r\n element.classList.add(config.darkClass);\r\n }\r\n if (config.themeClass) {\r\n element.classList.add(config.themeClass);\r\n }\r\n if (config.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (config.cardSize || this.cardSize) {\r\n element.querySelector('ui-card').style.maxWidth = (config.cardSize || this.cardSize) + 'px';\r\n element.querySelector('ui-card').style.width = '100%';\r\n }\r\n\r\n if (!config.transparentOverlay && fabs.length) {\r\n fabs.classList.add('hide');\r\n }\r\n\r\n if (config.clickOverlayToClose) {\r\n element.querySelector('.overlay').addEventListener('click', () => {\r\n this.close();\r\n });\r\n }\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n document.body.style.overflowY = 'hidden';\r\n });\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, ViewContainerRef } from '@angular/core';\r\nimport { UiElement } from '../utils/providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiDialogTrigger]'\r\n})\r\nexport class UiDialogTriggerDirective implements AfterViewInit {\r\n viewRef: any;\r\n opened: boolean;\r\n @Input('trigger-events') triggerEvents: string;\r\n @Input('dark-class') darkClass: string;\r\n @Input('theme-class') themeClass: string;\r\n @Input('transparent-overlay') transparentOverlay: boolean;\r\n @Input('uiDialogTrigger') dialog;\r\n @Input('click-overlay-to-close') clickOverlayToClose;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef, public elementRef: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.dialog.closeChange.subscribe(() => {\r\n this.close();\r\n });\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.triggerEvents || 'click', () => {\r\n this.render();\r\n });\r\n\r\n this.clickOverlayToClose = this.clickOverlayToClose !== undefined ? this.clickOverlayToClose : true;\r\n }\r\n\r\n render() {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.dialog.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode);\r\n }\r\n });\r\n }\r\n\r\n open(element) {\r\n this.opened = true;\r\n setTimeout(() => {\r\n const fabs = document.querySelectorAll('.ui-fab-container');\r\n\r\n if (this.darkClass) {\r\n element.classList.add(this.darkClass);\r\n }\r\n if (this.themeClass) {\r\n element.classList.add(this.themeClass);\r\n }\r\n if (this.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (this.dialog.cardSize) {\r\n element.querySelectorAll('ui-card')[0].style.maxWidth = this.dialog.cardSize + 'px';\r\n element.querySelectorAll('ui-card')[0].style.width = '100%';\r\n }\r\n\r\n if (!this.transparentOverlay && fabs.length) {\r\n Array.prototype.forEach.call(fabs, fab => {\r\n fab.classList.add('hide');\r\n });\r\n }\r\n\r\n if (this.clickOverlayToClose) {\r\n element.querySelectorAll('.overlay')[0].addEventListener('click', () => {\r\n this.close();\r\n });\r\n }\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n document.body.style.overflowY = 'hidden';\r\n });\r\n }\r\n\r\n close() {\r\n this.opened = false;\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n const fabs = document.querySelectorAll('.ui-fab-container');\r\n if (fabs.length) {\r\n\r\n Array.prototype.forEach.call(fabs, fab => {\r\n fab.classList.remove('hide');\r\n });\r\n }\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n document.body.style.overflowY = '';\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, ViewEncapsulation, ElementRef, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-input-container',\r\n template: `\r\n <div class=\"ui-input-wrap\">\r\n <ng-content></ng-content>\r\n \r\n <div *ngIf=\"loading\" class=\"ui-progress input\">\r\n <div class=\"indeterminate\"></div>\r\n </div>\r\n </div>\r\n `,\r\n // styleUrls: ['input.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class UiInputContainerComponent implements AfterViewInit {\r\n\r\n @Input() loading;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const nativeElement = this.element.nativeElement;\r\n const inputWrap = nativeElement.getElementsByClassName('ui-input-wrap')[0];\r\n\r\n const icon = nativeElement.getElementsByClassName('icon')[0];\r\n const line = document.createElement('div');\r\n line.className = 'line';\r\n inputWrap.appendChild(line);\r\n\r\n if (icon) {\r\n const methodInsertIcon = icon === inputWrap.firstElementChild ? 'insertBefore' : 'appendChild';\r\n inputWrap.removeChild(icon);\r\n nativeElement[methodInsertIcon](icon, nativeElement.firstChild);\r\n }\r\n\r\n\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output,\r\n Renderer2\r\n} from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\n@Directive({\r\n selector: '[uiInput]'\r\n})\r\n\r\nexport class UiInputDirective implements AfterViewInit, OnChanges {\r\n placeholder: string;\r\n @Input() ngModel: any;\r\n @Input() persistPlaceholder: boolean;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(private element: ElementRef, private renderer: Renderer2) {\r\n this.placeholder = element.nativeElement.placeholder;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.renderer.addClass(this.element.nativeElement, 'ui-control');\r\n this.setPlaceholder();\r\n }\r\n\r\n ngOnChanges() {\r\n this.isEmpty(this.ngModel);\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n this.isEmpty(this.ngModel);\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n this.isEmpty(this.ngModel);\r\n this.setPlaceholder(this.placeholder);\r\n }\r\n\r\n @HostListener('focusout')\r\n onFocusout() {\r\n this.setPlaceholder();\r\n }\r\n\r\n isEmpty(value: any): void {\r\n // TODO: Try model e view value\r\n const self = this;\r\n function isEmpty() {\r\n let action = isNullOrUndefined(value) && !self.element.nativeElement.value ? 'addClass' : 'removeClass';\r\n if (!isNullOrUndefined(self.ngModel) && self.ngModel.trim && !self.ngModel.trim()) {\r\n action = 'addClass';\r\n }\r\n self.renderer[action](self.element.nativeElement, 'ui-empty');\r\n }\r\n\r\n isEmpty();\r\n setTimeout(isEmpty);\r\n }\r\n\r\n setPlaceholder(value?: string) {\r\n value = this.persistPlaceholder ? this.placeholder : value || '';\r\n this.renderer.setProperty(this.element.nativeElement, 'placeholder', value);\r\n }\r\n}\r\n","import { Directive, Input, forwardRef} from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[uiMaxlength][ngModel]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => UiMaxlengthDirective), multi: true }\r\n ]\r\n})\r\nexport class UiMaxlengthDirective implements Validator {\r\n @Input('uiMaxlength') maxLength: any;\r\n\r\n constructor() {}\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n\r\n const value = control.value ? control.value.toString() : control.value;\r\n\r\n if (value && value.length > this.maxLength) {\r\n return {\r\n uiMaxlength: true\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}\r\n","import {\r\n Component, ElementRef, EventEmitter, OnDestroy, Output, TemplateRef, ViewChild, ViewContainerRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-menu',\r\n templateUrl: './menu.component.html',\r\n styleUrls: ['./menu.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiMenuComponent implements OnDestroy {\r\n viewRef;\r\n menu;\r\n themeClass;\r\n menuAlign;\r\n persistentMenu;\r\n element;\r\n listenerExists;\r\n overlay;\r\n\r\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\r\n @Output() closeChange: EventEmitter<any> = new EventEmitter(); // OLD VERSION\r\n\r\n constructor(public viewContainerRef: ViewContainerRef, public elementRef: ElementRef) {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.close();\r\n }\r\n\r\n show(event, config?) {\r\n if (config) {\r\n this.element = config.element || null;\r\n this.themeClass = config.class || null;\r\n this.menuAlign = config.align || null;\r\n this.persistentMenu = config.persistent || null;\r\n }\r\n\r\n this.createListener();\r\n\r\n let coordinate = {\r\n x: event.clientX,\r\n y: event.clientY + window.pageYOffset\r\n };\r\n if (this.element) {\r\n const position = UiElement.position(this.element);\r\n coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n }\r\n this.render(coordinate);\r\n }\r\n\r\n render(coordinate) {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode, coordinate);\r\n }\r\n });\r\n }\r\n\r\n open(element, coordinate) {\r\n setTimeout(() => {\r\n let horizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const verticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + document.body.scrollLeft;\r\n const windowHeight = document.body.clientHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (this.menuAlign === 'right') {\r\n coordinate.x -= element.clientWidth - (this.element ? this.element.clientWidth : 0);\r\n horizontalCoveringArea = coordinate.x;\r\n }\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n element.classList.add('right');\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n if (coordinate.y <= 0) {\r\n coordinate.y = 0;\r\n }\r\n\r\n if (this.themeClass) {\r\n element.classList.add(this.themeClass);\r\n }\r\n if (this.menuAlign) {\r\n element.classList.add(this.menuAlign);\r\n }\r\n\r\n element.style.transform = '';\r\n element.querySelector('ui-card').style.maxHeight = window.innerHeight + 'px';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n element.classList.add('open');\r\n });\r\n }\r\n\r\n close() {\r\n this.closeChange.emit(); // OLD VERSION\r\n\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n }\r\n }\r\n\r\n createListener() {\r\n if (!this.listenerExists) {\r\n this.listenerExists = true;\r\n UiElement.on(window, 'mouseup resize scroll touchend', (e) => {\r\n if (this.elementRef.nativeElement !== e.target) {\r\n if (!this.persistentMenu) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n\r\n }\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, Input, ViewContainerRef, AfterViewChecked,\r\n HostListener\r\n} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMenuTrigger]'\r\n})\r\nexport class UiMenuTriggerDirective implements AfterViewInit {\r\n viewRef;\r\n @Input('trigger-events') triggerEvents;\r\n @Input('theme-class') themeClass;\r\n @Input() align;\r\n @Input('menu-align') menuAlign;\r\n @Input('uiMenuTrigger') menu;\r\n @Input() persistentMenu;\r\n @Input('click-overlay-to-close') clickOverlayToClose;\r\n @Input() contextmenu: boolean;\r\n @Input() overlay: boolean;\r\n @Input() fixed: boolean;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef, public elementRef: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.menu.closeChange.subscribe(() => {\r\n this.close();\r\n });\r\n\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.triggerEvents || 'click', event => {\r\n this.menu.overlay = this.overlay;\r\n\r\n if (!this.persistentMenu) {\r\n this.close();\r\n }\r\n\r\n if (this.contextmenu) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n const position = UiElement.position(this.elementRef.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n this.render(coordinate);\r\n });\r\n });\r\n\r\n UiElement.on(window, 'mouseup resize scroll touchend', (e) => {\r\n\r\n if (this.fixed && (e.type === 'scroll' || e.type === 'resize')) {\r\n return;\r\n }\r\n\r\n if (this.clickOverlayToClose) {\r\n switch (e.type) {\r\n case 'mouseup':\r\n case 'touchend':\r\n if (!UiElement.closest(e.target, '.wrap-menu')) {\r\n this.close();\r\n }\r\n return;\r\n default:\r\n this.close();\r\n return;\r\n }\r\n }\r\n\r\n if (this.elementRef.nativeElement !== e.target) {\r\n if (!this.persistentMenu) {\r\n this.close();\r\n }\r\n\r\n }\r\n });\r\n\r\n UiElement.on(window, 'mouseup touchend', e => {\r\n if (this.clickOverlayToClose && !UiElement.closest(e.target, '.wrap-menu')) {\r\n this.close();\r\n return;\r\n }\r\n });\r\n }\r\n\r\n @HostListener('contextmenu') onContextmenu() {\r\n if (!this.contextmenu) {\r\n return true;\r\n }\r\n\r\n const position = UiElement.position(this.elementRef.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n this.render(coordinate);\r\n\r\n return false;\r\n }\r\n\r\n render(coordinate) {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.menu.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth && !rootNode.classList.contains('wrap-menu-overlay')) {\r\n this.open(rootNode, coordinate);\r\n }\r\n });\r\n }\r\n\r\n open(element, coordinate) {\r\n setTimeout(() => {\r\n let horizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const verticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + document.body.scrollLeft;\r\n const windowHeight = document.body.clientHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (this.align === 'right' || this.menuAlign === 'right') {\r\n coordinate.x -= element.clientWidth - this.elementRef.nativeElement.clientWidth;\r\n horizontalCoveringArea = coordinate.x;\r\n }\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n if (coordinate.y <= 0) {\r\n coordinate.y = 0;\r\n }\r\n\r\n if (this.themeClass) {\r\n element.classList.add(this.themeClass);\r\n }\r\n if (this.align || this.menuAlign) {\r\n element.classList.add(this.align || this.menuAlign);\r\n }\r\n\r\n element.style.transform = '';\r\n element.querySelector('ui-card').style.maxHeight = window.innerHeight + 'px';\r\n element.querySelector('ui-card').style.maxWidth = (window.innerWidth - 16) + 'px';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n\r\n\r\n element.classList.add('open');\r\n });\r\n }\r\n\r\n close() {\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n AfterViewInit,\r\n ViewEncapsulation,\r\n Output,\r\n EventEmitter,\r\n ElementRef,\r\n OnChanges,\r\n Input, OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { UiElement } from '../utils/providers/element.provider';\r\nimport { UiCookie } from '../utils/providers/cookie.provider';\r\n\r\n@Component({\r\n selector: 'ui-nav-drawer',\r\n templateUrl: './nav-drawer.component.html',\r\n styleUrls: ['./nav-drawer.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiNavDrawerComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n @Input() open: boolean;\r\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n public openNav: Function;\r\n public closeNav: Function;\r\n onTouchStart: Function;\r\n onTouchMove: Function;\r\n onTouchEnd: Function;\r\n\r\n constructor(private element: ElementRef) {\r\n this.openNav = () => {\r\n if (document.body.clientWidth <= 375 || (!this.element.nativeElement.classList.contains('persistent') && (window.scrollY || window.pageYOffset) > 1)) {\r\n const fabContainer = document.querySelectorAll('.ui-fab-container')[0];\r\n if (fabContainer) {\r\n fabContainer.classList.add('hide');\r\n }\r\n }\r\n this.element.nativeElement.classList.add('open');\r\n if (!this.element.nativeElement.classList.contains('persistent')) {\r\n document.body.style.overflowY = 'hidden';\r\n } else {\r\n document.body.style.overflowY = '';\r\n }\r\n };\r\n\r\n this.closeNav = () => {\r\n const fabContainer = document.querySelectorAll('.ui-fab-container')[0];\r\n if (fabContainer) {\r\n fabContainer.classList.remove('hide');\r\n }\r\n this.element.nativeElement.classList.remove('open');\r\n document.body.style.overflowY = '';\r\n };\r\n }\r\n\r\n ngAfterViewInit() {\r\n const body = UiElement.closest(this.element.nativeElement, 'body');\r\n body.classList.add('notransition');\r\n\r\n setTimeout(() => {\r\n body.classList.remove('notransition');\r\n this.element.nativeElement.querySelectorAll('.ui-nav-drawer-overlay')[0].style.visibility = 'visible';\r\n }, 300);\r\n\r\n const isPersistent = this.element.nativeElement.classList.contains('persistent');\r\n const isOpen = this.element.nativeElement.classList.contains('open');\r\n if (isPersistent && isOpen) {\r\n if (document.body.clientWidth > 375) {\r\n body.classList.add('ui-nav-drawer-persistent');\r\n }\r\n } else {\r\n body.classList.remove('ui-nav-drawer-persistent');\r\n }\r\n\r\n this.element.nativeElement.addEventListener('click', (e) => {\r\n if (!(isPersistent && window.innerWidth > 763) && UiElement.is(e.srcElement, 'a')) {\r\n this.open = false;\r\n this.openChange.emit(this.open);\r\n }\r\n });\r\n\r\n if (this.open) {\r\n this.openNav();\r\n } else {\r\n this.closeNav();\r\n }\r\n\r\n const navDrawer = this.element.nativeElement.querySelector('nav');\r\n\r\n let navDrawerTouch;\r\n let mouseX;\r\n let mouseXMovement;\r\n\r\n this.onTouchStart = (e) => {\r\n if (this.element.nativeElement.classList.contains('.right')) {\r\n return;\r\n }\r\n \r\n mouseX = e.touches[0].pageX;\r\n navDrawerTouch = (mouseX > 0 && mouseX < 40) ? 'open' : navDrawerTouch;\r\n navDrawerTouch = (mouseX > 320 && mouseX < 360) ? 'close' : navDrawerTouch;\r\n };\r\n\r\n this.onTouchMove = (e) => {\r\n if (navDrawerTouch) {\r\n mouseXMovement = e.touches[0].pageX - mouseX;\r\n if (navDrawerTouch === 'open' && !this.open) {\r\n mouseXMovement = mouseXMovement > 320 ? 320 : mouseXMovement;\r\n UiElement.css(navDrawer, 'transform', 'translateX(' + (-320 + mouseXMovement) + 'px)');\r\n } else if (navDrawerTouch === 'close' && this.open) {\r\n mouseXMovement = mouseXMovement < -330 ? -330 : mouseXMovement;\r\n mouseXMovement = mouseXMovement > 0 ? 0 : mouseXMovement;\r\n UiElement.css(navDrawer, 'transform', 'translateX(' + (mouseXMovement) + 'px)');\r\n }\r\n }\r\n };\r\n\r\n this.onTouchEnd = (e) => {\r\n if (navDrawerTouch) {\r\n if (navDrawerTouch === 'open' && mouseXMovement > 20) {\r\n UiElement.css(navDrawer, 'transform', '');\r\n this.open = true;\r\n this.openChange.emit(this.open);\r\n this.openNav();\r\n } else if (navDrawerTouch === 'close' && mouseXMovement < -20) {\r\n UiElement.css(navDrawer, 'transform', '');\r\n this.open = false;\r\n this.openChange.emit(this.open);\r\n this.closeNav();\r\n } else {\r\n UiElement.css(navDrawer, 'transform', '');\r\n }\r\n }\r\n\r\n navDrawerTouch = undefined;\r\n };\r\n\r\n UiElement.on(window, 'touchstart', this.onTouchStart);\r\n UiElement.on(window, 'touchmove', this.onTouchMove);\r\n UiElement.on(window, 'touchend', this.onTouchEnd);\r\n }\r\n\r\n ngOnChanges(changes) {\r\n const isNavDrawerPersistent = UiCookie.get('NavDrawerPersistent') === 'true';\r\n\r\n if (isNavDrawerPersistent) {\r\n this.open = true;\r\n this.openNav();\r\n }\r\n\r\n if (changes.open) {\r\n const isOpen = changes.open.currentValue;\r\n this.open = isOpen;\r\n\r\n if (isOpen) {\r\n this.openNav();\r\n } else {\r\n this.closeNav();\r\n }\r\n\r\n const isPersistent = this.element.nativeElement.classList.contains('persistent');\r\n const body = UiElement.closest(this.element.nativeElement, 'body');\r\n\r\n if (isPersistent && isOpen) {\r\n if (document.body.clientWidth > 375) {\r\n body.classList.add('ui-nav-drawer-persistent');\r\n UiCookie.set('NavDrawerPersistent', 'true');\r\n }\r\n } else {\r\n body.classList.remove('ui-nav-drawer-persistent');\r\n UiCookie.set('NavDrawerPersistent', 'false');\r\n }\r\n\r\n setTimeout(() => {\r\n UiElement.trigger(window, 'resize');\r\n }, 280);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n UiElement.off(window, 'touchstart', this.onTouchStart);\r\n UiElement.off(window, 'touchmove', this.onTouchMove);\r\n UiElement.off(window, 'touchend', this.onTouchEnd);\r\n document.body.classList.add('notransition');\r\n document.body.classList.remove('ui-nav-drawer-persistent');\r\n setTimeout(() => {\r\n document.body.classList.remove('notransition');\r\n }, 1);\r\n }\r\n\r\n closeMenuOverlay() {\r\n if (this.open !== undefined) {\r\n this.open = false;\r\n this.openChange.emit(this.open);\r\n }\r\n }\r\n}\r\n","import {Component, AfterViewInit, ElementRef, ViewEncapsulation, Input, OnChanges} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-option',\r\n templateUrl: './option.component.html',\r\n styleUrls: ['./option.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiOptionComponent implements AfterViewInit, OnChanges {\r\n @Input() color: string;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const input = this.element.nativeElement.querySelector('input');\r\n\r\n input.classList.add('ui-option');\r\n\r\n const optionShell = '<div class=\"ui-option-shell\"><div class=\"ui-option-fill\"></div><div class=\"ui-option-mark\"></div></div>';\r\n\r\n input.insertAdjacentHTML('afterend', optionShell);\r\n this.setColor();\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.color && !changes.color.firstChange) {\r\n this.setColor();\r\n }\r\n }\r\n\r\n setColor() {\r\n const optionFill = this.element.nativeElement.querySelector('.ui-option-fill');\r\n optionFill.style.borderColor = this.color || '';\r\n }\r\n\r\n}\r\n","import {Component, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-progress-radial.indeterminate',\r\n templateUrl: 'progress-radial.component.html',\r\n styleUrls: ['./progress-radial.component.scss']\r\n})\r\n\r\nexport class UiProgressRadialComponent implements OnInit {\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, HostListener, Input} from '@angular/core';\r\n\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\nconst maxRipples = 10;\r\nlet ripples = 0;\r\nimport {debounce} from '../utils/functions/debounce';\r\n\r\n@Directive({\r\n selector: '[uiRipple]'\r\n})\r\nexport class UiRippleDirective implements AfterViewInit {\r\n isIE: boolean;\r\n @Input('ripple-disable') rippleDisable;\r\n public elRippleContainerTemplate: HTMLElement;\r\n public elRippleTemplate: HTMLElement;\r\n public elRippleContainerTemplateClone: HTMLElement;\r\n\r\n constructor(public element: ElementRef) {\r\n this.isIE = navigator.userAgent.indexOf('Trident') > -1;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.elRippleContainerTemplate = document.createElement('div');\r\n this.elRippleContainerTemplate.classList.add('ui-ripple-container');\r\n this.elRippleTemplate = document.createElement('div');\r\n this.elRippleTemplate.classList.add('ui-ripple-wave');\r\n\r\n this.elRippleContainerTemplateClone = <HTMLElement>this.elRippleContainerTemplate.cloneNode(true);\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMousedown(e) {\r\n if (!this.isIE) {\r\n ripples = document.querySelectorAll('.ui-ripple-wave').length;\r\n\r\n if (!this.rippleDisable && !this.element.nativeElement.hasAttribute('disabled') && ripples < maxRipples) {\r\n const elementWidth = this.element.nativeElement.offsetWidth;\r\n const elementHeight = this.element.nativeElement.offsetHeight;\r\n\r\n const isIcon = this.element.nativeElement.classList.contains('icon');\r\n const isFab = this.element.nativeElement.classList.contains('fab');\r\n const isRounded = this.element.nativeElement.classList.contains('ripple-rounded');\r\n\r\n if (isIcon || isFab || isRounded) {\r\n this.elRippleContainerTemplateClone.style.borderRadius = '50%';\r\n }\r\n this.elRippleContainerTemplateClone.style.width = elementWidth + 'px';\r\n this.elRippleContainerTemplateClone.style.height = elementHeight + 'px';\r\n\r\n this.element.nativeElement.appendChild(this.elRippleContainerTemplateClone);\r\n\r\n const elRippleTemplateClone = <HTMLElement>this.elRippleTemplate.cloneNode(true);\r\n\r\n const isElementHorizontal = elementWidth > elementHeight;\r\n\r\n let finalWidth;\r\n let finalHeight;\r\n let finalTop;\r\n let finalLeft;\r\n\r\n if (isElementHorizontal) {\r\n finalWidth = elementWidth * 3;\r\n finalHeight = elementWidth * 3;\r\n } else {\r\n finalWidth = elementHeight * 3;\r\n finalHeight = elementHeight * 3;\r\n }\r\n\r\n finalTop = -(finalWidth / 2);\r\n finalLeft = -(finalWidth / 2);\r\n\r\n elRippleTemplateClone.style.width = finalWidth + 'px';\r\n elRippleTemplateClone.style.height = finalHeight + 'px';\r\n\r\n const mousePos = this.getMousePosition(e);\r\n const elementPos = UiElement.position(this.element.nativeElement);\r\n\r\n const pos = {\r\n y: mousePos.y - elementPos.top,\r\n x: mousePos.x - elementPos.left\r\n };\r\n\r\n if (isIcon || isFab || isRounded) {\r\n finalTop = finalTop + (elementWidth / 2);\r\n finalLeft = finalLeft + (elementWidth / 2);\r\n } else {\r\n finalTop = finalTop + pos.y;\r\n finalLeft = finalLeft + pos.x;\r\n }\r\n\r\n elRippleTemplateClone.style.top = finalTop + 'px';\r\n elRippleTemplateClone.style.left = finalLeft + 'px';\r\n\r\n this.elRippleContainerTemplateClone.insertBefore(elRippleTemplateClone, this.elRippleContainerTemplateClone.firstChild);\r\n\r\n this.elRippleContainerTemplateClone.classList.add('pressed');\r\n\r\n UiElement.animate(this.elRippleContainerTemplateClone, 'border-spacing', 0, 1, 800, null, (tick) => {\r\n elRippleTemplateClone.style.transform = `scale(${tick})`;\r\n });\r\n\r\n ripples++;\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseup')\r\n onMouseup() {\r\n if (!this.isIE) {\r\n debounce(() => {\r\n this.eraseRipples(this);\r\n }, 800, true)();\r\n }\r\n }\r\n\r\n @HostListener('mouseout')\r\n onMouseout() {\r\n if (!this.isIE) {\r\n debounce(() => {\r\n this.eraseRipples(this);\r\n }, 2000, true)();\r\n }\r\n }\r\n\r\n eraseRipples(thiss?) {\r\n thiss.elRippleContainerTemplateClone.classList.remove('pressed');\r\n\r\n const elRipples = thiss.elRippleContainerTemplateClone.children;\r\n\r\n const len = elRipples.length;\r\n\r\n ripples = len;\r\n\r\n for (let i = 0; i < len; i++) {\r\n const elRipple = <HTMLElement>elRipples[i];\r\n if (elRipple) {\r\n const elementOpacity = elRipple.style.opacity || '1';\r\n\r\n if (elementOpacity === '1') {\r\n UiElement.animate(elRipple, 'opacity', 1, 0, 800, () => {\r\n try {\r\n elRipple.parentNode.removeChild(elRipple);\r\n ripples--;\r\n } catch (e) {\r\n }\r\n if (!ripples) {\r\n try {\r\n thiss.elRippleContainerTemplateClone.parentNode.removeChild(thiss.elRippleContainerTemplateClone);\r\n } catch (e) {\r\n }\r\n }\r\n }, null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n getMousePosition(e?) {\r\n const pos = {\r\n y: undefined,\r\n x: undefined\r\n };\r\n\r\n if (e.originalEvent && e.originalEvent.touches !== undefined) {\r\n pos.y = e.originalEvent.touches[0].pageY;\r\n pos.x = e.originalEvent.touches[0].pageX;\r\n } else if (e.pageX) {\r\n pos.y = e.pageY;\r\n pos.x = e.pageX;\r\n } else if (e && e.touches !== undefined) {\r\n pos.y = e.touches[0].pageY;\r\n pos.x = e.touches[0].pageX;\r\n }\r\n\r\n return pos;\r\n }\r\n}\r\n","import {\r\n Component, OnInit, Input, DoCheck, KeyValueDiffers, Output, EventEmitter, OnChanges,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-smart-list',\r\n templateUrl: 'smart-list.component.html',\r\n styleUrls: ['smart-list.component.scss']\r\n})\r\n\r\nexport class UiSmartListComponent implements OnInit, DoCheck, OnChanges {\r\n @Input() model: any;\r\n @Input('default-item') defaultItem: any;\r\n @Input('auto-delete-exception') autoDeleteException: any;\r\n @Output() modelChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n list: any[];\r\n differ: any;\r\n objDiffer: { string?: any };\r\n currentFocusedElementIndex: any;\r\n\r\n constructor(private differs: KeyValueDiffers, public element: ElementRef) {\r\n this.differ = differs.find([]).create();\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.defaultItem) {\r\n this.defaultItem = {};\r\n }\r\n this.list = [Object.assign({}, this.defaultItem)];\r\n if (!this.model) {\r\n console.error('Você precisa declarar a model no seu componente');\r\n }\r\n this.objDiffer = {};\r\n this.list.forEach((elt, i) => {\r\n this.objDiffer[i] = this.differs.find(elt).create();\r\n });\r\n this.model.forEach((item) => {\r\n this.list.push(item);\r\n });\r\n }\r\n\r\n ngDoCheck() {\r\n let wasChanged = false;\r\n\r\n this.list.forEach((elt, i) => {\r\n let objDiffer = this.objDiffer[i];\r\n if (!objDiffer) {\r\n objDiffer = this.objDiffer[i] = this.differs.find(elt).create();\r\n }\r\n const objChanges = objDiffer.diff(elt);\r\n if (objChanges) {\r\n wasChanged = true;\r\n objChanges.forEachChangedItem((elt2) => {\r\n if (!elt2.currentValue && typeof elt2.currentValue !== 'number' && typeof elt2.currentValue !== 'boolean' && !elt[this.autoDeleteException]) {\r\n delete elt[elt2.key];\r\n }\r\n });\r\n\r\n if (elt && this.model.indexOf(elt) < 0 && (Object.keys(elt).length > Object.keys(this.defaultItem).length)) {\r\n this.model.push(elt);\r\n }\r\n\r\n if (elt && (Object.keys(elt).length === Object.keys(this.defaultItem).length) && equals(elt, this.defaultItem) && this.model.length && this.model.indexOf(elt) > -1 && !elt[this.autoDeleteException]) {\r\n this.model.splice(this.model.indexOf(elt), 1);\r\n }\r\n }\r\n });\r\n\r\n if (wasChanged) {\r\n this.newItem();\r\n }\r\n }\r\n\r\n newItem() {\r\n let found = 0;\r\n\r\n this.list.forEach((item) => {\r\n if (item && (Object.keys(item).length <= Object.keys(this.defaultItem).length) && equals(item, this.defaultItem)) {\r\n found++;\r\n const element = this.list[this.list.indexOf(item)];\r\n this.list.splice(this.list.indexOf(item), 1);\r\n this.list.splice(this.list.length, 0, element);\r\n }\r\n });\r\n\r\n if (!found) {\r\n this.list.push(Object.assign({}, this.defaultItem));\r\n } else {\r\n setTimeout(() => {\r\n this.list.splice(this.list.length - 1, 1);\r\n this.newItem();\r\n });\r\n }\r\n }\r\n\r\n remove(i) {\r\n Object.keys(this.list[i]).forEach((key) => {\r\n if (!Object.keys(this.defaultItem).includes(key)) {\r\n delete this.list[i][key];\r\n } else {\r\n this.list[i][key] = this.defaultItem[key];\r\n }\r\n });\r\n this.ngDoCheck();\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.model && changes.model.currentValue) {\r\n if (changes.model.currentValue.length) {\r\n changes.model.currentValue.forEach((item) => {\r\n if (this.list && this.list.indexOf(item) === -1) {\r\n this.list.push(item);\r\n }\r\n });\r\n } else if (changes.model.currentValue && changes.model.previousValue) {\r\n this.list = [Object.assign({}, this.defaultItem)];\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\nfunction equals(x, y) {\r\n return JSON.stringify(x) === JSON.stringify(y);\r\n}\r\n","import {EventEmitter, Injectable} from '@angular/core';\r\n\r\nlet timeout: any;\r\nconst bars: any[] = [];\r\nconst defaults: {} = {\r\n duration: 5000,\r\n center: false,\r\n actionText: null\r\n};\r\n\r\n@Injectable()\r\nexport class UiSnackbar {\r\n static barsChange: EventEmitter<any> = new EventEmitter();\r\n\r\n static show(bar) {\r\n bar = Object.assign({}, defaults, bar);\r\n bars.push(bar);\r\n if (bars.length === 1) {\r\n this.timerBar(bar);\r\n }\r\n this.barsChange.emit(bars);\r\n }\r\n\r\n static hide() {\r\n if (bars.length) {\r\n const snackbar = document.querySelector('ui-snackbar-container > ui-snackbar');\r\n if (!snackbar) {\r\n return;\r\n }\r\n\r\n snackbar.classList.add('leave');\r\n setTimeout(() => {\r\n clearTimeout(timeout);\r\n this.finishTimeout();\r\n }, 280);\r\n }\r\n }\r\n\r\n private static timerBar(bar) {\r\n if (bars.length) {\r\n this.elevateFAB();\r\n\r\n if (bar.duration !== Infinity) {\r\n timeout = setTimeout(() => {\r\n const firstSnackbar = document.querySelectorAll('ui-snackbar-container > ui-snackbar')[0];\r\n if (firstSnackbar) {\r\n document.querySelectorAll('ui-snackbar-container > ui-snackbar')[0].classList.add('leave');\r\n }\r\n setTimeout(() => this.finishTimeout(), 280);\r\n }, bar.duration);\r\n }\r\n }\r\n };\r\n\r\n private static finishTimeout() {\r\n bars.shift();\r\n this.setTranslateFAB(0, false);\r\n if (bars.length) {\r\n this.timerBar(bars[0]);\r\n }\r\n this.barsChange.emit(bars);\r\n }\r\n\r\n public static elevateFAB() {\r\n setTimeout(() => {\r\n let snackHeight;\r\n if (window.innerWidth <= 764) {\r\n snackHeight = document.querySelectorAll('ui-snackbar-container > ui-snackbar')[0].clientHeight;\r\n } else {\r\n snackHeight = 0;\r\n }\r\n this.setTranslateFAB(snackHeight, true);\r\n });\r\n }\r\n\r\n private static setTranslateFAB(translate, addClass) {\r\n let fabs;\r\n if (window.innerWidth <= 764) {\r\n fabs = document.querySelectorAll('.ui-fab-container');\r\n } else {\r\n fabs = document.querySelectorAll('.ui-fab-container.scrolled');\r\n }\r\n\r\n [].forEach.call(document.querySelectorAll('.ui-fab-container'), (fab) => {\r\n fab.classList.remove('elevating-snack');\r\n fab.style.transform = '';\r\n });\r\n\r\n [].forEach.call(fabs, (fab) => {\r\n fab.classList[addClass ? 'add' : 'remove']('elevating-snack');\r\n if (translate) {\r\n fab.style.transform = `translateY(-${translate}px)`;\r\n } else {\r\n fab.style.transform = '';\r\n }\r\n });\r\n }\r\n\r\n constructor() {\r\n }\r\n}\r\n","import {Injectable, EventEmitter} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\nlet mainToolbar: HTMLElement;\r\nlet defaultBreakpoint: any;\r\nconst change: EventEmitter<any> = new EventEmitter();\r\n\r\nconst sizes: any[] = [480, 600, 840, 960, 1280, 1440, 1600];\r\n\r\n@Injectable()\r\nexport class UiToolbarService {\r\n sharedValue: String;\r\n change: EventEmitter<any>;\r\n\r\n constructor() {\r\n this.change = change;\r\n }\r\n\r\n public get() {\r\n return this.sharedValue;\r\n }\r\n\r\n public set(sharedValue: String) {\r\n this.sharedValue = sharedValue;\r\n\r\n this.change.emit(sharedValue);\r\n }\r\n\r\n public registerMainToolbar(element: any) {\r\n mainToolbar = <HTMLElement>element;\r\n defaultBreakpoint = [];\r\n sizes.forEach(size => {\r\n if (mainToolbar.classList.contains(`elevate-on-s${size}`)) {\r\n defaultBreakpoint.push(size);\r\n }\r\n });\r\n }\r\n\r\n public getMainToolbar(): HTMLElement {\r\n if (!mainToolbar) {\r\n console.error('Você não registrou um toolbar principal.');\r\n } else {\r\n return mainToolbar;\r\n }\r\n }\r\n\r\n public activateExtendedToolbar(breakpoint?: any) {\r\n if (!mainToolbar) {\r\n return;\r\n }\r\n\r\n if (breakpoint) {\r\n if (!sizes.includes(breakpoint)) {\r\n console.error(`O tamanho do \"breakpoint\" tem que ser um dos tamanhos suportados: ${sizes.join(', ')}`);\r\n } else {\r\n sizes.forEach(size => this.getMainToolbar().classList.remove(`elevate-on-s${size}`));\r\n this.getMainToolbar().classList.add(`elevate-on-s${breakpoint}`);\r\n }\r\n }\r\n\r\n this.getMainToolbar().classList.add('size-2x');\r\n\r\n const header = this.getMainToolbar().querySelectorAll('header')[0];\r\n header.style.transition = 'all 280ms';\r\n setTimeout(() => {\r\n header.style.transition = '';\r\n UiElement.trigger(window, 'scroll');\r\n }, 280);\r\n }\r\n\r\n public deactivateExtendedToolbar() {\r\n if (!mainToolbar) {\r\n return;\r\n }\r\n\r\n sizes.forEach(size => this.getMainToolbar().classList.remove(`elevate-on-s${size}`));\r\n defaultBreakpoint.forEach(size => this.getMainToolbar().classList.add(`elevate-on-s${size}`));\r\n\r\n this.getMainToolbar().classList.remove('size-2x');\r\n this.getMainToolbar().classList.remove('scrolled');\r\n\r\n const header = this.getMainToolbar().querySelectorAll('header')[0];\r\n header.style.transition = 'all 280ms';\r\n header.style.height = '';\r\n header.style.paddingBottom = '';\r\n setTimeout(() => {\r\n header.style.transition = '';\r\n }, 280);\r\n\r\n UiElement.trigger(window, 'scroll');\r\n }\r\n\r\n public activateTransparentToolbar(auxiliarClass?: string) {\r\n this.getMainToolbar().classList.add('transparent');\r\n if (auxiliarClass) {\r\n this.getMainToolbar().classList.add(auxiliarClass);\r\n }\r\n }\r\n\r\n public deactivateTransparentToolbar(auxiliarClass?: string) {\r\n this.getMainToolbar().classList.remove('transparent');\r\n if (auxiliarClass) {\r\n this.getMainToolbar().classList.remove(auxiliarClass);\r\n }\r\n }\r\n\r\n public activateElevatingToolbar(auxiliarClass?: string) {\r\n this.getMainToolbar().classList.add('elevate-on-scroll');\r\n if (auxiliarClass) {\r\n this.getMainToolbar().classList.add(auxiliarClass);\r\n }\r\n }\r\n\r\n public deactivateElevatingToolbar(auxiliarClass?: string) {\r\n this.getMainToolbar().classList.remove('elevate-on-scroll');\r\n if (auxiliarClass) {\r\n this.getMainToolbar().classList.remove(auxiliarClass);\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, Inject, AfterViewInit} from '@angular/core';\r\nimport {UiSmartListComponent} from '../smart-list.component';\r\nimport {UiElementRef} from '../../utils/providers/element-ref.provider';\r\n\r\n@Component({\r\n selector: 'ui-smart-list-item',\r\n templateUrl: '../smart-list.component.html'\r\n})\r\n\r\nexport class UiSmartListItemComponent implements AfterViewInit {\r\n constructor(@Inject(UiSmartListComponent) private parent: UiSmartListComponent, private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const self = this;\r\n const inputs = this.element.nativeElement.querySelectorAll('input');\r\n for (let i = 0; i < inputs.length; i++) {\r\n const el = inputs[i];\r\n el.addEventListener('focus', e => {\r\n this.onFocus(e, self);\r\n });\r\n\r\n el.addEventListener('blur', e => {\r\n this.onBlur(e, self);\r\n });\r\n }\r\n }\r\n\r\n onFocus(event, self) {\r\n const el = event.target;\r\n\r\n const elItem = new UiElementRef(el).closest('ui-smart-list-item');\r\n const newIndex = Array.prototype.indexOf.call(self.parent.element.nativeElement.children, elItem.nativeElement);\r\n self.parent.currentFocusedElementIndex = newIndex > -1 ? newIndex : self.parent.currentFocusedElementIndex;\r\n }\r\n\r\n onBlur(event, self) {\r\n setTimeout(() => {\r\n const target = new UiElementRef(event.target);\r\n if (!target.closest('body').nativeElement) {\r\n setTimeout(() => {\r\n self.parent.element.nativeElement.children[self.parent.currentFocusedElementIndex].querySelector('input').focus();\r\n }, 100);\r\n }\r\n });\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {UiSnackbar} from './snackbar.provider';\r\n\r\n@Component({\r\n selector: 'ui-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styleUrls: ['./snackbar.component.scss']\r\n})\r\nexport class UiSnackbarComponent {\r\n\r\n @Input() bar;\r\n\r\n constructor() {\r\n }\r\n\r\n hide() {\r\n UiSnackbar.hide();\r\n }\r\n}\r\n","import {AfterViewInit, Component} from '@angular/core';\r\nimport {UiSnackbar} from './snackbar.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-snackbar-container',\r\n templateUrl: './snackbar-container.component.html',\r\n styleUrls: ['./snackbar-container.component.scss']\r\n})\r\nexport class UiSnackbarContainerComponent implements AfterViewInit {\r\n\r\n bars: any[];\r\n\r\n constructor() {\r\n UiSnackbar.barsChange.subscribe((value) => {\r\n this.bars = value;\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n UiElement.on(window, 'resize', () => {\r\n if (this.bars && this.bars.length) {\r\n UiSnackbar.elevateFAB();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import {Component, AfterViewInit, ElementRef, ViewEncapsulation} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-switch',\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiSwitchComponent implements AfterViewInit {\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n const input = this.element.nativeElement.querySelectorAll('input')[0];\r\n\r\n input.classList.add('ui-switch');\r\n\r\n const switchShell = '<div class=\"switch-cover\"><div class=\"track\"></div><div class=\"thumb-container\"><div class=\"thumb\"></div></div></div>';\r\n\r\n input.insertAdjacentHTML('afterend', switchShell);\r\n }\r\n\r\n}\r\n","import {Component, AfterViewInit, ViewEncapsulation, ElementRef} from '@angular/core';\r\n\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n // styleUrls: ['./toolbar.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiToolbarComponent implements AfterViewInit {\r\n\r\n constructor(private element: ElementRef) {\r\n UiElement.on(window, 'scroll resize', (e) => {\r\n if (this.element.nativeElement.classList.contains('elevate-on-scroll')) {\r\n const header = this.element.nativeElement.querySelectorAll('header')[0];\r\n const scroll = (window.scrollY || window.pageYOffset) * 3.6;\r\n\r\n if (this.element.nativeElement.classList.contains('size-2x')) {\r\n if (e.type === 'scroll' && scroll < 97) {\r\n this.element.nativeElement.classList.add('notransition');\r\n header.style.paddingBottom = (102 - scroll) + 'px';\r\n header.style.height = (162 - (scroll)) + 'px';\r\n setTimeout(() => {\r\n this.element.nativeElement.classList.remove('notransition');\r\n }, 500);\r\n } else {\r\n header.style.paddingBottom = '';\r\n header.style.height = '';\r\n }\r\n\r\n if (scroll > 97) {\r\n header.style.zIndex = 3;\r\n this.element.nativeElement.classList.add('scrolled');\r\n } else {\r\n header.style.zIndex = 2;\r\n this.element.nativeElement.classList.remove('scrolled');\r\n }\r\n } else {\r\n if ((window.scrollY || window.pageYOffset) > 1) {\r\n this.element.nativeElement.classList.add('scrolled');\r\n } else {\r\n this.element.nativeElement.classList.remove('scrolled');\r\n }\r\n }\r\n }\r\n });\r\n\r\n // let form: any = document.querySelectorAll('form');\r\n // if (form.length) {\r\n // form = <HTMLElement>form[0];\r\n // const input = form.querySelectorAll('input')[0];\r\n // input.addEventListener('focus', () => {\r\n // form.classList.add('open');\r\n // });\r\n // input.addEventListener('blur', () => {\r\n // form.classList.remove('open');\r\n // });\r\n // }\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\nexport function _window(): any {\r\n // return the global native browser window object\r\n return window;\r\n}\r\n\r\n@Injectable()\r\nexport class UiWindowRef {\r\n static nativeWindow(): any {\r\n return _window();\r\n }\r\n}\r\n","export function checkDate(value: any): any {\r\n value = value.replace(/[^\\w\\s!\\/]/gi, '');\r\n if (!/^[\\d, \\/]+$/.test(value)) {\r\n return false;\r\n }\r\n\r\n const splittedDate: string[] = value.split('/');\r\n\r\n if (splittedDate.length !== 3) {\r\n return false;\r\n }\r\n\r\n let dayIndex: any;\r\n let monthIndex: any;\r\n let yearIndex: any;\r\n let mask: any = 'd/M/yy';\r\n\r\n mask = mask.split('/');\r\n for (let i = 0; i < 3; i++) {\r\n if (mask[i].indexOf('d') > -1) {\r\n dayIndex = i;\r\n }\r\n if (mask[i].indexOf('M') > -1) {\r\n monthIndex = i;\r\n }\r\n if (mask[i].indexOf('y') > -1) {\r\n yearIndex = i;\r\n }\r\n }\r\n\r\n if (isNaN(dayIndex) || isNaN(monthIndex) || isNaN(yearIndex)) {\r\n return false;\r\n }\r\n\r\n const date: any = splittedDate[dayIndex];\r\n const month: any = splittedDate[monthIndex];\r\n const year: any = splittedDate[yearIndex];\r\n\r\n if (!date || !month || !year) {\r\n return false;\r\n }\r\n if (month < 1 || month > 12) {\r\n return false;\r\n }\r\n if (year.length < 4) {\r\n return false;\r\n }\r\n\r\n const dateCheck: number = new Date(year, month, 0).getDate();\r\n if (date > dateCheck || date < 1) {\r\n return false;\r\n }\r\n\r\n return new Date(year, month - 1, date);\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\n\r\nimport { isDate } from 'rxjs/internal/util/isDate';\r\n\r\nimport { UiElement } from '../../providers/element.provider';\r\nimport { checkDate } from './check-date';\r\n\r\n@Directive({\r\n selector: '[uiMaskDate][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskDateDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskDateDirective),\r\n multi: true\r\n }, DatePipe]\r\n})\r\nexport class UiMaskDateDirective implements ControlValueAccessor, Validator, OnChanges, AfterViewInit, OnInit {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: any;\r\n maxlength = 10;\r\n regex = /^\\d\\d\\/\\d\\d\\/\\d\\d\\d\\d$/g;\r\n regexiso = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z|(((\\+|\\-)[0-1][0-9]):([0-5][0-9])))?$/g;\r\n symbolsPositions: number[] = [2, 5];\r\n dateFormatsList = [\r\n {\r\n format: 'dd/MM/yyyy',\r\n maxlength: 10,\r\n regex: /^(\\d{2}\\/){2}\\d{4}$/g,\r\n symbolsPositions: [2, 5]\r\n },\r\n {\r\n format: 'dd/MM',\r\n maxlength: 5,\r\n regex: /^(\\d{2})\\/(\\d{2})$/g,\r\n symbolsPositions: [2]\r\n },\r\n {\r\n format: 'MM/yyyy',\r\n maxlength: 7,\r\n regex: /^(\\d{2})\\/(\\d{4})$/g,\r\n symbolsPositions: [2]\r\n },\r\n {\r\n format: 'dd/MM/yy',\r\n maxlength: 8,\r\n regex: /^(\\d{2}\\/){2}\\d{2}$/g,\r\n symbolsPositions: [2, 5]\r\n },\r\n {\r\n format: 'MM/yy',\r\n maxlength: 5,\r\n regex: /^(\\d{2})\\/(\\d{2})$/g,\r\n symbolsPositions: [2]\r\n }\r\n ];\r\n\r\n @Input() minDate: Date;\r\n @Input() maxDate: Date;\r\n @Input() ngModel: any;\r\n @Input() dateFormat: string;\r\n @Input() day = '01'; // Dia padrão\r\n @Input() year: string = (new Date().getFullYear()).toString(); // Ano Padrão\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public datePipe: DatePipe) {\r\n }\r\n\r\n ngOnInit() {\r\n this.validaDateFormat();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.minDate = this.minDate && isDate(new Date(this.minDate)) ? new Date(this.minDate) : this.minDate;\r\n this.maxDate = this.maxDate && isDate(new Date(this.maxDate)) ? new Date(this.maxDate) : this.maxDate;\r\n\r\n this.ngModel = this.ngModel && isDate(new Date(this.ngModel)) ? new Date(this.ngModel) : this.ngModel;\r\n\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input && rawValue) {\r\n this.elementRef.nativeElement.value = this.format(this.datePipe.transform(this.ngModel, this.dateFormat));\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = checkDate(this.getCorrectValue(this.format(rawValue))) || this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.format(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(date: string): string {\r\n if (!date) {\r\n return '';\r\n }\r\n\r\n date = date.toString().replace(/[^0-9]+/g, '');\r\n if (date.length > this.symbolsPositions[0]) {\r\n date = date.substring(0, this.symbolsPositions[0]) + '/' + date.substring(this.symbolsPositions[0]);\r\n }\r\n if (date.length > this.symbolsPositions[1]) {\r\n date = date.substring(0, this.symbolsPositions[1]) + '/' + date.substring(this.symbolsPositions[1], this.maxlength - 1);\r\n }\r\n return date.substring(0, this.maxlength);\r\n }\r\n\r\n /**\r\n * Verifica se o formato da data é válido\r\n */\r\n validaDateFormat() {\r\n if (!this.dateFormat) { // Caso não seja passado nenhum parametro, coloca o default\r\n this.dateFormat = 'dd/MM/yyyy';\r\n return;\r\n }\r\n\r\n let valid = false;\r\n\r\n this.dateFormatsList.forEach(item => {\r\n if (item.format === this.dateFormat) {\r\n this.maxlength = item.maxlength;\r\n this.regex = item.regex;\r\n this.symbolsPositions = item.symbolsPositions;\r\n valid = true;\r\n }\r\n });\r\n\r\n if (!valid) {\r\n console.error('Formato de data não suportado, tente algum destes: [\"dd/MM/yyyy\", \"dd/MM\", \"MM/yyyy\", \"dd/MM/yy\", \"MM/yy\"]');\r\n }\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (changes.minDate && !changes.minDate.firstChange) {\r\n this.minDate = changes.minDate.currentValue && isDate(new Date(this.minDate)) ? new Date(this.minDate) : this.minDate;\r\n this.control.updateValueAndValidity(this.control);\r\n }\r\n if (changes.maxDate && !changes.maxDate.firstChange) {\r\n this.maxDate = changes.maxDate.currentValue && isDate(new Date(this.maxDate)) ? new Date(this.maxDate) : this.maxDate;\r\n this.control.updateValueAndValidity(this.control);\r\n }\r\n if ((changes.minDate && !changes.minDate.firstChange) || (changes.maxDate && !changes.maxDate.firstChange)) {\r\n this.control.updateValueAndValidity(this.control);\r\n }\r\n }\r\n\r\n /**\r\n * Retorna o valor formatado corretamente p/ uma data válida\r\n * @param value { string } valor da view\r\n */\r\n getCorrectValue(value: string) {\r\n const test = this.regex.test(value);\r\n\r\n if (this.dateFormat === 'MM/yyyy' && test) {\r\n return `${this.day}/${value}`;\r\n }\r\n\r\n if (this.dateFormat === 'dd/MM' && test) {\r\n return `${value}/${this.year}`;\r\n }\r\n\r\n if (this.dateFormat === 'dd/MM/yy' && test) {\r\n const valueSplitted = value.split('/');\r\n return `${valueSplitted[0]}/${valueSplitted[1]}/20${valueSplitted[2]}`;\r\n }\r\n\r\n if (this.dateFormat === 'MM/yy' && test) {\r\n const valueSplitted = value.split('/');\r\n return `${this.day}/${valueSplitted[0]}/20${valueSplitted[1]}`;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n const value = this.ngModel && this.regexiso.test(this.ngModel) ? new Date(this.ngModel) : this.ngModel;\r\n const dateControl = isDate(control.value) ? control.value : new Date(control.value);\r\n\r\n if (value && (!isDate(value) || !checkDate(value.toLocaleDateString('pt-BR')))) {\r\n return { parse: true };\r\n }\r\n\r\n if (value && (isDate(value) || checkDate(value.toLocaleDateString('pt-BR')))) {\r\n dateControl.setHours(0, 0, 0, 0);\r\n\r\n if (this.minDate && isDate(this.minDate)) {\r\n this.minDate.setHours(0, 0, 0, 0);\r\n\r\n if (dateControl.getTime() < this.minDate.getTime()) {\r\n return { minDate: true };\r\n }\r\n }\r\n if (this.maxDate && isDate(this.maxDate)) {\r\n this.maxDate.setHours(0, 0, 0, 0);\r\n\r\n if (dateControl.getTime() > this.maxDate.getTime()) {\r\n return { maxDate: true };\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown')\r\n onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n}\r\n","import {OnDestroy, ChangeDetectorRef, Pipe, PipeTransform} from '@angular/core';\r\nimport {AsyncPipe} from '@angular/common';\r\nimport {Observable, of, timer} from 'rxjs/index';\r\nimport {repeatWhen, takeWhile, map, flatMap} from 'rxjs/internal/operators';\r\n\r\n@Pipe({\r\n name: 'uiTimeAgo',\r\n pure: false\r\n})\r\nexport class UiTimeAgoPipe implements PipeTransform, OnDestroy {\r\n private async: AsyncPipe;\r\n private isDestroyed = false;\r\n private value: Date;\r\n private timer: Observable<string>;\r\n\r\n private textBefore: string;\r\n private textAfter: string;\r\n private isMinified: boolean;\r\n private isHence: boolean;\r\n\r\n constructor(ref: ChangeDetectorRef) {\r\n this.async = new AsyncPipe(ref);\r\n }\r\n\r\n public transform(obj: any, textBefore: string = '', textAfter: string = '', isMinified: boolean, isHence: boolean): any {\r\n this.textBefore = textBefore;\r\n this.textAfter = textAfter;\r\n this.isMinified = isMinified;\r\n this.isHence = isHence;\r\n\r\n if (obj == null) {\r\n return '';\r\n }\r\n\r\n if (!(obj instanceof Date)) {\r\n try {\r\n obj = new Date(obj);\r\n } catch (e) {\r\n throw new Error('UiTimeAgo só funciona com datas');\r\n }\r\n }\r\n\r\n this.value = obj;\r\n\r\n if (!this.timer) {\r\n this.timer = this.getObservable();\r\n }\r\n\r\n return this.async.transform(this.timer);\r\n }\r\n\r\n public now(): Date {\r\n return new Date();\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.isDestroyed = true;\r\n }\r\n\r\n private getObservable() {\r\n return of(1).pipe(\r\n repeatWhen(notifications => {\r\n return notifications.pipe(\r\n flatMap((x, i) => {\r\n const sleep = i < 60 ? 1000 : 30000;\r\n return timer(sleep);\r\n })\r\n );\r\n }),\r\n takeWhile(_ => !this.isDestroyed),\r\n map((x, i) => this.elapsed())\r\n );\r\n }\r\n\r\n private elapsed(): string {\r\n const now = this.now().getTime();\r\n\r\n let delta = (now - this.value.getTime()) / 1000;\r\n\r\n if (this.isHence) {\r\n delta = delta * -1;\r\n }\r\n\r\n if (delta < 60) {\r\n const realDelta = Math.floor(delta);\r\n let timeAgo;\r\n if (this.isMinified) {\r\n timeAgo = `${realDelta}s`;\r\n } else {\r\n timeAgo = `${realDelta} segundo${(realDelta !== 1) ? 's' : ''}`;\r\n }\r\n return `${this.textBefore}${timeAgo}${this.textAfter}`;\r\n } else if (delta < 3600) {\r\n const realDelta = Math.floor(delta / 60);\r\n let timeAgo;\r\n if (this.isMinified) {\r\n timeAgo = `${realDelta}m`;\r\n } else {\r\n timeAgo = `${realDelta} minuto${(realDelta !== 1) ? 's' : ''}`;\r\n }\r\n return `${this.textBefore}${timeAgo}${this.textAfter}`;\r\n } else if (delta < 86400) {\r\n const realDelta = Math.floor(delta / 3600);\r\n let timeAgo;\r\n if (this.isMinified) {\r\n timeAgo = `${realDelta}h`;\r\n } else {\r\n timeAgo = `${realDelta} hora${(realDelta !== 1) ? 's' : ''}`;\r\n }\r\n return `${this.textBefore}${timeAgo}${this.textAfter}`;\r\n } else {\r\n const realDelta = Math.floor(delta / 86400);\r\n let timeAgo;\r\n if (this.isMinified) {\r\n timeAgo = `${realDelta}d`;\r\n } else {\r\n timeAgo = `${realDelta} dia${(realDelta !== 1) ? 's' : ''}`;\r\n }\r\n return `${this.textBefore}${timeAgo}${this.textAfter}`;\r\n }\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, HostListener, Input} from '@angular/core';\r\n\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Directive({selector: '[uiListItem]'})\r\nexport class UiListItemDirective implements AfterViewInit {\r\n @Input() uiListItem;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n const itemActive = this.uiListItem.querySelectorAll('.ui-list-item.active')[0];\r\n if (itemActive) {\r\n this.element.nativeElement.classList.toggle('expanded');\r\n this.uiListItem.classList.toggle('expanded');\r\n toggleExpand(this.uiListItem, this.element.nativeElement);\r\n }\r\n });\r\n }\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.element.nativeElement.classList.toggle('expanded');\r\n this.uiListItem.classList.toggle('expanded');\r\n toggleExpand(this.uiListItem, this.element.nativeElement);\r\n }\r\n}\r\n\r\nfunction toggleExpand(elementList, elementTrigger) {\r\n if (!elementList.style.height || elementList.style.height === '0px') {\r\n const height = getHeight(elementList);\r\n elementList.style.height = (elementList.style.maxHeight ? (height > elementList.style.maxHeight.replace('px', '') ? elementList.style.maxHeight : height + 'px') : height + 'px');\r\n let listItemGroup = UiElement.closest(elementList, '.ui-list-item-group');\r\n while (listItemGroup) {\r\n listItemGroup.style.height = getHeight(listItemGroup) + height + 'px';\r\n if (listItemGroup) {\r\n listItemGroup = UiElement.closest(listItemGroup, '.ui-list-item-group');\r\n }\r\n }\r\n } else {\r\n const backupHeight = parseInt(elementList.style.height.replace('px', ''), 10);\r\n elementList.style.height = '';\r\n\r\n let listItemGroup = UiElement.closest(elementList, '.ui-list-item-group');\r\n while (listItemGroup) {\r\n listItemGroup.style.height = getHeight(listItemGroup) - backupHeight + 'px';\r\n if (listItemGroup) {\r\n listItemGroup = UiElement.closest(listItemGroup, '.ui-list-item-group');\r\n }\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n const list = UiElement.closest(elementList, '.ui-list');\r\n if (list) {\r\n let overflow = list.parentNode;\r\n if (UiElement.is(overflow, 'ui-list')) {\r\n overflow = overflow.parentNode;\r\n }\r\n UiElement.animate(elementList, 'border-spacing', overflow.scrollTop, elementTrigger.offsetTop, 500, null, (tick) => {\r\n overflow.scrollTop = tick;\r\n });\r\n }\r\n }, 500);\r\n}\r\n\r\nfunction getHeight(element) {\r\n return Array.prototype.reduce.call(element.childNodes, (p, c) => p + (c.offsetHeight || 0), 0);\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCpf'\r\n})\r\nexport class UiCpfPipe implements PipeTransform {\r\n\r\n transform(value: any, mask?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n\r\n if (!mask) {\r\n value = value.padStart(11, '0');\r\n }\r\n\r\n if (value.length > 3) {\r\n value = value.substring(0, 3) + '.' + value.substring(3);\r\n }\r\n if (value.length > 7) {\r\n value = value.substring(0, 7) + '.' + value.substring(7);\r\n }\r\n if (value.length > 11) {\r\n value = value.substring(0, 11) + '-' + value.substring(11);\r\n }\r\n if (value.length > 14) {\r\n value = value.substring(0, 14);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiElement } from '../../providers/element.provider';\r\nimport { UiCpfPipe } from './cpf.pipe';\r\n\r\n@Directive({\r\n selector: '[uiMaskCpf][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCpfDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCpfDirective),\r\n multi: true\r\n }, UiCpfPipe]\r\n})\r\nexport class UiMaskCpfDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n beforeSelIndex;\r\n control: FormControl;\r\n input: boolean;\r\n loaded: boolean;\r\n symbolsPositions: number[] = [3, 7, 11, 14];\r\n onChange: Function;\r\n onTouched: Function;\r\n @Input() ngModel: any;\r\n @Input() padOnPaste: boolean = true;\r\n @Input('uiMaskCpf') uiMaskCpf;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cpfPipe: UiCpfPipe) {}\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n\r\n if (!this.input) {\r\n this.ngModel = this.ngModel ? this.ngModel.toString().padStart(11, '0') : '';\r\n this.elementRef.nativeElement.value = this.cpfPipe.transform(this.ngModel, true);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cpfPipe.transform(this.elementRef.nativeElement.value, true);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 11);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (this.input) {\r\n if (control.value && this.format(control.value).length < 11) {\r\n return {parse: true};\r\n }\r\n }\r\n\r\n if (this.uiMaskCpf === true && control.value && !this.cpfIsValid(control.value)) {\r\n return {parse: true};\r\n }\r\n\r\n this.input = false;\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n cpfIsValid(cpf) {\r\n if (cpf && cpf.length === 11) {\r\n let sum;\r\n let rest;\r\n sum = 0;\r\n if (cpf === '00000000000') {\r\n return false;\r\n }\r\n for (let i = 1; i <= 9; i++) {\r\n sum = sum + parseInt(cpf.substring(i - 1, i), 10) * (11 - i);\r\n }\r\n rest = (sum * 10) % 11;\r\n if ((rest === 10) || (rest === 11)) {\r\n rest = 0;\r\n }\r\n if (rest !== parseInt(cpf.substring(9, 10), 10)) {\r\n return false;\r\n }\r\n sum = 0;\r\n for (let i = 1; i <= 10; i++) {\r\n sum = sum + parseInt(cpf.substring(i - 1, i), 20) * (12 - i);\r\n }\r\n rest = (sum * 10) % 11;\r\n if ((rest === 10) || (rest === 11)) {\r\n rest = 0;\r\n }\r\n return rest === parseInt(cpf.substring(10, 11), 10);\r\n }\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = this.format(rawValue) !== this.ngModel;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n padLeft(event: any): void {\r\n if (this.padOnPaste) {\r\n event.preventDefault();\r\n\r\n let data: any;\r\n\r\n if (window['clipboardData']) {\r\n data = window['clipboardData'];\r\n } else if (event.clipboardData && event.clipboardData.getData) {\r\n data = event.clipboardData;\r\n }\r\n\r\n const text = data.getData('text').toString().replace(/[^0-9]+/g, '');\r\n this.renderViaInput(text.padStart(11, '0'));\r\n }\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCnpj'\r\n})\r\nexport class UiCnpjPipe implements PipeTransform {\r\n\r\n transform(value: any, mask?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n\r\n if(!mask) {\r\n value = value.padStart(14, '0');\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n if (value.length > 2) {\r\n value = value.substring(0, 2) + '.' + value.substring(2);\r\n }\r\n if (value.length > 6) {\r\n value = value.substring(0, 6) + '.' + value.substring(6);\r\n }\r\n if (value.length > 10) {\r\n value = value.substring(0, 10) + '/' + value.substring(10);\r\n }\r\n if (value.length > 15) {\r\n value = value.substring(0, 15) + '-' + value.substring(15);\r\n }\r\n if (value.length > 18) {\r\n value = value.substring(0, 18);\r\n }\r\n return value;\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator} from '@angular/forms';\r\nimport {UiCnpjPipe} from './cnpj.pipe';\r\nimport {UiElement} from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskCnpj][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCnpjDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCnpjDirective),\r\n multi: true\r\n }, UiCnpjPipe]\r\n})\r\nexport class UiMaskCnpjDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [2, 6, 10, 15, 18];\r\n @Input() ngModel: any;\r\n @Input() padOnPaste: boolean = true;\r\n @Input('uiMaskCnpj') uiMaskCnpj;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cnpjPipe: UiCnpjPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.ngModel = this.ngModel ? this.ngModel.toString().padStart(14, '0') : '';\r\n this.elementRef.nativeElement.value = this.cnpjPipe.transform(this.ngModel, true);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cnpjPipe.transform(this.elementRef.nativeElement.value, true);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 14);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (this.input) {\r\n if (control.value && this.format(control.value).length < 14) {\r\n return {parse: true};\r\n }\r\n }\r\n\r\n if (this.uiMaskCnpj === true && control.value && !this.cnpjIsValid(control.value)) {\r\n return {parse: true};\r\n }\r\n\r\n this.input = false;\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n cnpjIsValid(cnpj) {\r\n if (!(+cnpj) || cnpj.length !== 14) {\r\n return false;\r\n }\r\n let size = cnpj.length - 2;\r\n let numbers = cnpj.substring(0, size);\r\n const digits = cnpj.substring(size);\r\n let sum = 0;\r\n let pos = size - 7;\r\n for (let i = size; i >= 1; i--) {\r\n sum += numbers.charAt(size - i) * pos--;\r\n if (pos < 2) {\r\n pos = 9;\r\n }\r\n }\r\n let result = sum % 11 < 2 ? 0 : 11 - sum % 11;\r\n if (result.toString() !== digits.charAt(0)) {\r\n return false;\r\n }\r\n\r\n size = size + 1;\r\n numbers = cnpj.substring(0, size);\r\n sum = 0;\r\n pos = size - 7;\r\n for (let i = size; i >= 1; i--) {\r\n sum += numbers.charAt(size - i) * pos--;\r\n if (pos < 2) {\r\n pos = 9;\r\n }\r\n }\r\n result = sum % 11 < 2 ? 0 : 11 - sum % 11;\r\n\r\n return result.toString() === digits.charAt(1);\r\n }\r\n\r\n @HostListener('keydown')\r\n onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = this.format(rawValue) !== this.ngModel;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n padLeft(event: any): void {\r\n if (this.padOnPaste) {\r\n event.preventDefault();\r\n\r\n let data: any;\r\n\r\n if (window['clipboardData']) {\r\n data = window['clipboardData'];\r\n } else if (event.clipboardData && event.clipboardData.getData) {\r\n data = event.clipboardData;\r\n }\r\n\r\n const text = data.getData('text').toString().replace(/[^0-9]+/g, '');\r\n this.renderViaInput(text.padStart(14, '0'));\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCnpjNovo'\r\n})\r\nexport class UiCnpjNovoPipe implements PipeTransform {\r\n\r\n transform(value: any, mask?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().toUpperCase().replace(/[^0-9A-Z]+/g, '');\r\n\r\n if (!mask) {\r\n const isNumericOnly = /^[0-9]*$/.test(value);\r\n if (isNumericOnly) {\r\n value = value.padStart(14, '0');\r\n }\r\n }\r\n\r\n value = value.toString().toUpperCase().replace(/[^0-9A-Z]+/g, '');\r\n if (value.length > 2) {\r\n value = value.substring(0, 2) + '.' + value.substring(2);\r\n }\r\n if (value.length > 6) {\r\n value = value.substring(0, 6) + '.' + value.substring(6);\r\n }\r\n if (value.length > 10) {\r\n value = value.substring(0, 10) + '/' + value.substring(10);\r\n }\r\n if (value.length > 15) {\r\n value = value.substring(0, 15) + '-' + value.substring(15);\r\n }\r\n if (value.length > 18) {\r\n value = value.substring(0, 18);\r\n }\r\n return value;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiCnpjNovoPipe } from './cnpj-novo.pipe';\r\nimport { UiElement } from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskCnpjNovo][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCnpjNovoDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCnpjNovoDirective),\r\n multi: true\r\n }, UiCnpjNovoPipe]\r\n})\r\nexport class UiMaskCnpjNovoDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [2, 6, 10, 15, 18];\r\n @Input() ngModel: any;\r\n @Input() padOnPaste: boolean = true;\r\n @Input('uiMaskCnpjNovo') uiMaskCnpjNovo;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cnpjPipe: UiCnpjNovoPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n if (this.ngModel) {\r\n const value = this.ngModel.toString().toUpperCase();\r\n const cleanValue = value.replace(/[^0-9A-Z]+/g, '');\r\n const isNumericOnly = /^[0-9]*$/.test(cleanValue);\r\n const paddedValue = isNumericOnly ? cleanValue.padStart(14, '0') : cleanValue;\r\n if (paddedValue !== cleanValue) {\r\n this.ngModel = paddedValue;\r\n setTimeout(() => this.ngModelChange.emit(this.ngModel));\r\n } else {\r\n this.ngModel = paddedValue;\r\n }\r\n } else {\r\n this.ngModel = '';\r\n }\r\n this.elementRef.nativeElement.value = this.cnpjPipe.transform(this.ngModel, true);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cnpjPipe.transform(this.elementRef.nativeElement.value, true);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n // Aceita números e letras (A-Z), normaliza para maiúsculas\r\n value = value.toString().toUpperCase().replace(/[^0-9A-Z]+/g, '');\r\n return value.substring(0, 14);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (this.input) {\r\n if (control.value && this.format(control.value).length < 14) {\r\n return { parse: true };\r\n }\r\n }\r\n\r\n if (this.uiMaskCnpjNovo === true && control.value) {\r\n let value = control.value.toString().toUpperCase().replace(/[^0-9A-Z]+/g, '');\r\n const isNumericOnly = /^[0-9]*$/.test(value);\r\n if (isNumericOnly) {\r\n value = value.padStart(14, '0');\r\n }\r\n if (!this.cnpjIsValid(value)) {\r\n return { parse: true };\r\n }\r\n }\r\n\r\n this.input = false;\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n /**\r\n * Converte um caractere para seu valor numérico.\r\n * Usa código ASCII - 48 para todos os caracteres:\r\n * - Dígitos 0-9 retornam 0-9\r\n * - Letras A-Z retornam 17-42 (A=17, B=18, ..., Z=42)\r\n * Referência: https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/perguntas-e-respostas/cnpj/cnpj-alfanumerico.pdf\r\n */\r\n charToValue(char: string): number {\r\n return char.toUpperCase().charCodeAt(0) - 48;\r\n }\r\n\r\n /**\r\n * Valida CNPJ alfanumérico conforme especificação.\r\n * Suporta tanto CNPJs numéricos tradicionais quanto os novos alfanuméricos.\r\n * A conversão usa ASCII - 48 para todos os caracteres (A=17, B=18, ..., Z=42).\r\n */\r\n cnpjIsValid(cnpj: string): boolean {\r\n if (!cnpj || cnpj.length !== 14) {\r\n return false;\r\n }\r\n\r\n // Normaliza para maiúsculas\r\n cnpj = cnpj.toUpperCase();\r\n\r\n // Verifica se contém apenas caracteres válidos (0-9 e A-Z)\r\n if (!/^[0-9A-Z]{14}$/.test(cnpj)) {\r\n return false;\r\n }\r\n\r\n // Verifica CNPJs com todos os caracteres iguais\r\n if (/^(.)\\1{13}$/.test(cnpj)) {\r\n return false;\r\n }\r\n\r\n const base = cnpj.substring(0, 12);\r\n const digits = cnpj.substring(12);\r\n\r\n // Calcula o primeiro dígito verificador\r\n let sum = 0;\r\n let pos = 5;\r\n for (let i = 0; i < 12; i++) {\r\n sum += this.charToValue(base.charAt(i)) * pos--;\r\n if (pos < 2) {\r\n pos = 9;\r\n }\r\n }\r\n let result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\r\n if (result !== this.charToValue(digits.charAt(0))) {\r\n return false;\r\n }\r\n\r\n // Calcula o segundo dígito verificador\r\n const baseWithFirstDigit = base + digits.charAt(0);\r\n sum = 0;\r\n pos = 6;\r\n for (let i = 0; i < 13; i++) {\r\n sum += this.charToValue(baseWithFirstDigit.charAt(i)) * pos--;\r\n if (pos < 2) {\r\n pos = 9;\r\n }\r\n }\r\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\r\n\r\n return result === this.charToValue(digits.charAt(1));\r\n }\r\n\r\n @HostListener('keydown')\r\n onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = this.format(rawValue) !== this.ngModel;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n padLeft(event: any): void {\r\n if (this.padOnPaste) {\r\n event.preventDefault();\r\n\r\n let data: any;\r\n\r\n if (window['clipboardData']) {\r\n data = window['clipboardData'];\r\n } else if (event.clipboardData && event.clipboardData.getData) {\r\n data = event.clipboardData;\r\n }\r\n\r\n // Aceita números e letras, normaliza para maiúsculas\r\n const text = data.getData('text').toString().toUpperCase().replace(/[^0-9A-Z]+/g, '');\r\n // Só faz padStart se for CNPJ numérico puro (retrocompatibilidade)\r\n const isNumericOnly = /^[0-9]*$/.test(text);\r\n this.renderViaInput(isNumericOnly ? text.padStart(14, '0') : text);\r\n }\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCep'\r\n})\r\nexport class UiCepPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n if (value.length > 5) {\r\n value = value.substring(0, 5) + '-' + value.substring(5);\r\n }\r\n if (value.length > 9) {\r\n value = value.substring(0, 9);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n}\r\n","import {Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, AfterViewInit, OnChanges} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator} from '@angular/forms';\r\nimport {UiCepPipe} from './cep.pipe';\r\nimport {UiElement} from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskCep][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCepDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCepDirective),\r\n multi: true\r\n }, UiCepPipe]\r\n})\r\nexport class UiMaskCepDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [5, 9];\r\n @Input() ngModel: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cepPipe: UiCepPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.cepPipe.transform(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cepPipe.transform(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 8);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < 8) {\r\n return {parse: true};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCepNovo'\r\n})\r\nexport class UiCepNovoPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^a-zA-Z0-9]+/g, '');\r\n if (value.length > 5) {\r\n value = value.substring(0, 5) + '-' + value.substring(5);\r\n }\r\n if (value.length > 9) {\r\n value = value.substring(0, 9);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n}\r\n","import {Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, AfterViewInit, OnChanges} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator} from '@angular/forms';\r\nimport {UiCepNovoPipe} from './cep-novo.pipe';\r\nimport {UiElement} from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskCepNovo][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCepNovoDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCepNovoDirective),\r\n multi: true\r\n }, UiCepNovoPipe]\r\n})\r\nexport class UiMaskCepNovoDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [5, 9];\r\n @Input() ngModel: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public cepPipe: UiCepNovoPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.cepPipe.transform(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.cepPipe.transform(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^a-zA-Z0-9]+/g, '');\r\n return value.substring(0, 8);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < 8) {\r\n return {parse: true};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiPhone'\r\n})\r\nexport class UiPhonePipe implements PipeTransform {\r\n\r\n transform(value: any, type?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n \r\n\r\n if (type === 'ddi') { // MASK COM PADRAO DDI\r\n if (value.length > 0) {\r\n value = '+' + value;\r\n } \r\n if (value[1] === '1') { // US +1 (000) 000-000-0000\r\n \r\n if (value.length > 2) {\r\n value = value.substring(0, 2) + ' (' + value.substring(2);\r\n }\r\n if (value.length > 7) {\r\n value = value.substring(0, 7) + ') ' + value.substring(7);\r\n }\r\n if (value.length > 12) {\r\n value = value.substring(0, 12) + '-' + value.substring(12);\r\n }\r\n if (value.length > 17) {\r\n value = value.substring(0, 17);\r\n }\r\n } else { // BR +55 (00) 00000-0000 \r\n \r\n if (value.length > 3) {\r\n value = value.substring(0, 3) + ' (' + value.substring(3);\r\n }\r\n if (value.length > 7) {\r\n value = value.substring(0, 7) + ') ' + value.substring(7);\r\n }\r\n if (value.length > 12 && value.length < 18) {\r\n value = value.substring(0, 13) + '-' + value.substring(13);\r\n } else if (value.length > 17) {\r\n value = value.substring(0, 14) + '-' + value.substring(14);\r\n }\r\n if (value.length > 17) {\r\n value = value.substring(0, 19);\r\n }\r\n } \r\n } else { // MASK COM PADRÃO DEFAULT (00) 00000-0000 \r\n if (value.length > 0) {\r\n value = '(' + value;\r\n }\r\n if (value.length > 3) {\r\n value = value.substring(0, 3) + ') ' + value.substring(3);\r\n }\r\n if (value.length > 9 && value.length < 14) {\r\n value = value.substring(0, 9) + '-' + value.substring(9);\r\n } else if (value.length > 13) {\r\n value = value.substring(0, 10) + '-' + value.substring(10);\r\n }\r\n if (value.length > 15) {\r\n value = value.substring(0, 15);\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input,\r\n Output, OnChanges, OnInit\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiPhonePipe } from './phone.pipe';\r\nimport { UiElement } from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskPhone][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskPhoneDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskPhoneDirective),\r\n multi: true\r\n }, UiPhonePipe]\r\n})\r\nexport class UiMaskPhoneDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges, OnInit {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[];\r\n maxLength: number;\r\n @Input() ngModel: any;\r\n @Input() uiMaskPhone: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public phonePipe: UiPhonePipe) {\r\n }\r\n\r\n ngOnInit() {\r\n switch (this.uiMaskPhone) {\r\n case 'ddi':\r\n this.symbolsPositions = [0, 12, 14, 17];\r\n break;\r\n default:\r\n this.maxLength = 11;\r\n this.symbolsPositions = [0, 9, 11, 14];\r\n }\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.uiMaskPhone === 'ddi' && rawValue) {\r\n const firstChar = rawValue.toString().substring(0, 1);\r\n this.maxLength = firstChar === '1' ? 11 : 13;\r\n }\r\n\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n\r\n this.elementRef.nativeElement.value = this.phonePipe.transform(this.ngModel, this.uiMaskPhone || '');\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.phonePipe.transform(this.elementRef.nativeElement.value, this.uiMaskPhone || '');\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, this.maxLength);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < this.maxLength - 1) {\r\n return { parse: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n let afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n\r\n if (this.uiMaskPhone === 'ddi') {\r\n if (this.ngModel && this.ngModel.substring(0, 1) === '1') {\r\n this.maxLength = 11;\r\n if (afterSelIndex === 3) {\r\n this.beforeSelIndex = 4;\r\n afterSelIndex = 5;\r\n }\r\n } else {\r\n this.maxLength = 13;\r\n if (afterSelIndex === 4) {\r\n this.beforeSelIndex = 5;\r\n afterSelIndex = 6;\r\n }\r\n }\r\n\r\n if (afterSelIndex === 8) {\r\n this.beforeSelIndex = 9;\r\n afterSelIndex = 10;\r\n }\r\n } else {\r\n if (afterSelIndex === 4) {\r\n this.beforeSelIndex = 5;\r\n afterSelIndex = 6;\r\n }\r\n }\r\n\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import {Component, Input, OnChanges, ViewEncapsulation} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-list',\r\n templateUrl: 'list.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class UiListComponent implements OnChanges {\r\n @Input() list: any;\r\n @Input('item-model') itemModel: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnChanges() {\r\n if (!this.list) {\r\n console.error('É obrigatório fornecer a model \"list\"');\r\n return false;\r\n }\r\n\r\n if (!this.itemModel) {\r\n this.itemModel = {\r\n id: 'id',\r\n parentId: 'parentId',\r\n name: 'name',\r\n url: 'url',\r\n icon: 'icon'\r\n };\r\n }\r\n\r\n this.list.forEach(item => {\r\n Object.keys(this.itemModel).forEach((key) => {\r\n const old_key = this.itemModel[key];\r\n renameObjectKey(item, old_key, key);\r\n });\r\n });\r\n\r\n this.list = iteratePristineMenu(this.list);\r\n }\r\n}\r\n\r\nfunction iteratePristineMenu(allItems) {\r\n const remainingList = [];\r\n const newMenu = allItems.filter(function (item) {\r\n if (item.parentId !== null) {\r\n remainingList.push(item);\r\n }\r\n return item.parentId === null;\r\n });\r\n return iterateOptionsMenu(newMenu, remainingList)[0];\r\n}\r\n\r\nfunction iterateOptionsMenu(list, fullList) {\r\n let remainingList;\r\n for (let i = 0; i < list.length; i++) {\r\n remainingList = [];\r\n const target = list[i];\r\n const subMenus = fullList.filter(item => {\r\n if (item.parentId !== target.id) {\r\n remainingList.push(item);\r\n }\r\n return item.parentId === target.id;\r\n });\r\n if (subMenus.length) {\r\n target.childs = subMenus;\r\n remainingList = iterateOptionsMenu(target.childs, remainingList)[1];\r\n }\r\n }\r\n return [list, remainingList];\r\n}\r\n\r\nfunction renameObjectKey(obj, oldName, newName) {\r\n if (!obj.hasOwnProperty(oldName) || oldName === newName) {\r\n return false;\r\n }\r\n\r\n obj[newName] = obj[oldName];\r\n delete obj[oldName];\r\n return true;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {UiDialogComponent} from './dialog.component';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\nlet viewRef;\r\n\r\n@Injectable()\r\nexport class UiDialog {\r\n\r\n public static show(dialog: UiDialogComponent, config?: any) {\r\n UiDialog.hide();\r\n config = config || {};\r\n\r\n if (config.clickOverlayToClose === undefined) {\r\n config.clickOverlayToClose = true;\r\n } else if (config.clickOverlayToClose) {\r\n config.clickOverlayToClose = JSON.parse(config.clickOverlayToClose);\r\n }\r\n\r\n viewRef = dialog.templateRef.createEmbeddedView(dialog.templateRef);\r\n viewRef.detectChanges();\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n UiDialog.open(rootNode, config);\r\n }\r\n });\r\n }\r\n\r\n private static open(element, config) {\r\n setTimeout(() => {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (config.darkClass) {\r\n element.classList.add(config.darkClass);\r\n }\r\n if (config.themeClass) {\r\n element.classList.add(config.themeClass);\r\n }\r\n if (config.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (config.cardSize) {\r\n element.querySelector('ui-card').style.maxWidth = config.cardSize + 'px';\r\n element.querySelector('ui-card').style.width = '100%';\r\n }\r\n\r\n if (!config.transparentOverlay && fabs.length) {\r\n fabs.classList.add('hide');\r\n }\r\n\r\n if (config.clickOverlayToClose) {\r\n element.querySelector('.overlay').addEventListener('click', () => {\r\n if (typeof config.onClose === 'function') {\r\n config.onClose();\r\n }\r\n UiDialog.hide();\r\n });\r\n }\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n document.body.style.overflowY = 'hidden';\r\n });\r\n }\r\n\r\n public static hide() {\r\n if (viewRef) {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (fabs.length) {\r\n fabs.classList.remove('hide');\r\n }\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => {\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.remove) {\r\n rootNode.remove();\r\n } else {\r\n rootNode.parentNode.removeChild(rootNode);\r\n }\r\n });\r\n viewRef.destroy();\r\n viewRef = null;\r\n }, 280);\r\n\r\n document.body.style.overflowY = '';\r\n }\r\n }\r\n\r\n}\r\n","import {Component, Input, OnInit, OnChanges, Output, EventEmitter} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-list-items',\r\n templateUrl: 'items.component.html'\r\n})\r\n\r\nexport class UiListItemsComponent implements OnInit {\r\n @Input() items: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-list-item',\r\n templateUrl: 'item.component.html'\r\n})\r\n\r\nexport class UiListItemComponent implements OnInit {\r\n @Input() item: any;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-slider[value]',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss']\r\n})\r\nexport class UiSliderComponent implements OnInit, AfterViewInit, OnChanges {\r\n multiHandle: boolean;\r\n valueModel;\r\n mouseDown: boolean;\r\n percentageBlock: number;\r\n valueElement: HTMLElement;\r\n getPercentageLeft: Function;\r\n getPercentageRight: Function;\r\n\r\n @Input() hideBalloon: boolean;\r\n @Input() disabled: boolean;\r\n @Input() begin: number;\r\n @Input() end: number;\r\n @Input() direction: string;\r\n @Input() value: number;\r\n @Input() range: number[];\r\n @Input() color: string;\r\n @Input('text-color') textColor: string;\r\n @Output() valueChange: EventEmitter<number> = new EventEmitter();\r\n\r\n @Input('view-format') viewFormat: Function;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n if (!this.viewFormat) {\r\n this.viewFormat = value => value;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.percentageBlock = 100 / (this.range.length - 1);\r\n this.value = this.value || this.range[0];\r\n this.valueModel = this.closestNumber(this.value).index || this.range[0];\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.value && !changes.value.firstChange && !this.mouseDown) {\r\n this.valueModel = this.closestNumber(changes.value.currentValue).index;\r\n }\r\n if (changes.color && !changes.color.firstChange && !this.mouseDown) {\r\n this.color = changes.color.currentValue;\r\n }\r\n if (changes.textColor && !changes.textColor.firstChange && !this.mouseDown) {\r\n this.textColor = changes.textColor.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.valueElement = this.elementRef.nativeElement.querySelectorAll('.thumb-container')[0];\r\n this.registerEventsListeners();\r\n }\r\n\r\n registerEventsListeners() {\r\n UiElement.on(this.valueElement, 'mousedown touchstart', () => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.mouseDown = true;\r\n this.toggleTackOn(true);\r\n this.toggleBalloon(true, 0);\r\n\r\n this.valueElement.classList.add('active');\r\n });\r\n\r\n UiElement.on(document, 'mouseup touchend', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.valueElement.classList.remove('active');\r\n\r\n if (this.mouseDown && (e.pageX || e.originalEvent)) {\r\n this.change(e, true);\r\n }\r\n\r\n this.mouseDown = false;\r\n this.toggleBalloon();\r\n this.toggleTackOn();\r\n });\r\n\r\n UiElement.on(document, 'mousemove touchmove', e => {\r\n if (!this.mouseDown || this.disabled) {\r\n return;\r\n }\r\n\r\n this.change(e);\r\n });\r\n }\r\n\r\n change(event, mouseUp?) {\r\n const currentPosition = event.pageX || (event.touches ? event.touches[0].pageX : null) || (event.changedTouches ? event.changedTouches[0].pageX : null);\r\n let position = this.getPositionInIndex(currentPosition);\r\n const newValue = this.closestNumber(this.range[Math.round(position)]);\r\n\r\n if (mouseUp) {\r\n position = newValue.index;\r\n }\r\n\r\n this.value = newValue.value;\r\n this.valueModel = position;\r\n this.valueChange.emit(this.value);\r\n\r\n }\r\n\r\n toggleBalloon(active?, right?) {\r\n const balloon = this.elementRef.nativeElement.querySelectorAll('.balloon-wrap')[0];\r\n\r\n if (balloon) {\r\n if (active) {\r\n balloon.style.right = typeof right === 'number' ? right : '';\r\n balloon.classList.add('active');\r\n } else {\r\n balloon.classList.remove('active');\r\n }\r\n }\r\n }\r\n\r\n toggleTackOn(active?) {\r\n const trackOn = this.elementRef.nativeElement.querySelectorAll('.track.on')[0];\r\n const method = active ? 'add' : 'remove';\r\n trackOn.classList[method]('no-transition');\r\n }\r\n\r\n getPositionInIndex(position) {\r\n const trackOff = this.elementRef.nativeElement.querySelectorAll('.track.off')[0];\r\n position -= UiElement.position(trackOff).left;\r\n position = position / trackOff.clientWidth * 100;\r\n position = position > 100 ? 100 : position < 0 ? 0 : position;\r\n return ((this.range.length - 1) / 100) * position;\r\n }\r\n\r\n closestNumber(number) {\r\n let current = this.range[0];\r\n let difference = Math.abs(number - current);\r\n let itemIndex = 0;\r\n let newDifference;\r\n for (let i = 0; i < this.range.length; i++) {\r\n newDifference = Math.abs(number - this.range[i]);\r\n if (newDifference < difference) {\r\n difference = newDifference;\r\n current = this.range[i];\r\n itemIndex = i;\r\n }\r\n }\r\n\r\n return {index: itemIndex, value: current};\r\n }\r\n\r\n getPercentage() {\r\n return this.percentageBlock * this.valueModel;\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-slider[begin][end]',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss']\r\n})\r\nexport class UiSliderMultiHandleComponent implements OnInit, AfterViewInit, OnChanges {\r\n\r\n multiHandle: boolean;\r\n beginModel;\r\n endModel;\r\n direction: string;\r\n mouseDown: boolean;\r\n percentageBlock: number;\r\n beginElement: HTMLElement;\r\n endElement: HTMLElement;\r\n thumbs: HTMLElement;\r\n bodyElement: HTMLElement;\r\n htmlElement: HTMLElement;\r\n getPercentage: Function;\r\n\r\n @Input() hideBalloon: boolean;\r\n @Input() disabled: boolean;\r\n @Input() begin: number;\r\n @Input() end: number;\r\n @Input() value;\r\n @Input() range: number[];\r\n @Input() color: string;\r\n @Input('text-color') textColor: string;\r\n @Output() beginChange: EventEmitter<number> = new EventEmitter();\r\n @Output() endChange: EventEmitter<number> = new EventEmitter();\r\n\r\n @Input('view-format') viewFormat: Function;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n if (!this.viewFormat) {\r\n this.viewFormat = value => value;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.bodyElement = document.body;\r\n this.htmlElement = <HTMLElement>document.documentElement;\r\n\r\n this.multiHandle = true;\r\n this.percentageBlock = 100 / (this.range.length - 1);\r\n this.begin = this.begin || this.range[0];\r\n this.end = this.end || this.range[0];\r\n this.beginModel = this.closestNumber(this.begin).index || this.range[0];\r\n this.endModel = this.closestNumber(this.end).index || this.range[0];\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.begin && !changes.begin.firstChange && !this.mouseDown) {\r\n this.beginModel = this.closestNumber(this.begin).index;\r\n }\r\n if (changes.end && !changes.end.firstChange && !this.mouseDown) {\r\n this.endModel = this.closestNumber(this.end).index;\r\n }\r\n if (changes.color && !changes.color.firstChange && !this.mouseDown) {\r\n this.color = changes.color.currentValue;\r\n }\r\n if (changes.textColor && !changes.textColor.firstChange && !this.mouseDown) {\r\n this.textColor = changes.textColor.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.thumbs = this.elementRef.nativeElement.querySelectorAll('.thumb-container');\r\n this.beginElement = this.thumbs[0];\r\n this.endElement = this.thumbs[1];\r\n\r\n this.registerEventsListeners();\r\n }\r\n\r\n registerEventsListeners() {\r\n UiElement.on(this.beginElement, 'mousedown touchstart', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n e.stopImmediatePropagation();\r\n this.direction = 'begin';\r\n this.toggleBalloon(true);\r\n\r\n this.beginElement.classList.add('active');\r\n this.endElement.classList.remove('active');\r\n });\r\n\r\n UiElement.on(this.thumbs, 'mousedown touchstart', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n e.stopImmediatePropagation();\r\n this.mouseDown = true;\r\n this.toggleTackOn(true);\r\n UiElement.disableScroll();\r\n });\r\n\r\n UiElement.on(this.endElement, 'mousedown touchstart', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n e.stopImmediatePropagation();\r\n this.direction = 'end';\r\n this.toggleBalloon(true, 0);\r\n\r\n this.endElement.classList.add('active');\r\n this.beginElement.classList.remove('active');\r\n });\r\n\r\n UiElement.on(document, 'mouseup touchend', e => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.beginElement.classList.remove('active');\r\n this.endElement.classList.remove('active');\r\n\r\n if (this.mouseDown && (e.pageX || e.originalEvent)) {\r\n this.change(e, true);\r\n }\r\n\r\n this.mouseDown = false;\r\n this.toggleBalloon();\r\n this.toggleTackOn();\r\n\r\n UiElement.enableScroll();\r\n\r\n });\r\n\r\n UiElement.on(document, 'mousemove touchmove', e => {\r\n if (!this.mouseDown || this.disabled) {\r\n return;\r\n }\r\n this.change(e);\r\n });\r\n }\r\n\r\n change(event, mouseUp?) {\r\n const currentPosition = event.pageX || (event.touches ? event.touches[0].pageX : null) || (event.changedTouches ? event.changedTouches[0].pageX : null);\r\n let position = this.getPositionInIndex(currentPosition);\r\n const newValue = this.closestNumber(this.range[Math.round(position)]);\r\n\r\n if (mouseUp) {\r\n position = newValue.index;\r\n }\r\n\r\n if (this.direction === 'begin' && this.beginModel >= this.endModel) {\r\n this[`${this.direction}Model`] = newValue.index;\r\n this.direction = 'end';\r\n UiElement.trigger(this.endElement, 'mousedown');\r\n this.endElement.focus();\r\n } else if (this.direction === 'end' && this.endModel < this.beginModel) {\r\n this[`${this.direction}Model`] = newValue.index;\r\n this.direction = 'begin';\r\n UiElement.trigger(this.beginElement, 'mousedown');\r\n this.beginElement.focus();\r\n }\r\n\r\n this[this.direction] = newValue.value;\r\n this[`${this.direction}Model`] = position;\r\n this[`${this.direction}Change`].emit(this[this.direction]);\r\n\r\n }\r\n\r\n toggleBalloon(active?, right?) {\r\n const balloon = this.elementRef.nativeElement.querySelectorAll('.balloon-wrap')[0];\r\n\r\n if (balloon) {\r\n if (active) {\r\n balloon.style.right = typeof right === 'number' ? right : '';\r\n balloon.classList.add('active');\r\n } else {\r\n balloon.classList.remove('active');\r\n }\r\n }\r\n }\r\n\r\n toggleTackOn(active?) {\r\n const trackOn = this.elementRef.nativeElement.querySelectorAll('.track.on')[0];\r\n const method = active ? 'add' : 'remove';\r\n trackOn.classList[method]('no-transition');\r\n }\r\n\r\n getPositionInIndex(position) {\r\n const trackOff = this.elementRef.nativeElement.querySelectorAll('.track.off')[0];\r\n position -= UiElement.position(trackOff).left;\r\n position = position / trackOff.clientWidth * 100;\r\n position = position > 100 ? 100 : position < 0 ? 0 : position;\r\n return ((this.range.length - 1) / 100) * position;\r\n }\r\n\r\n closestNumber(number) {\r\n let current = this.range[0];\r\n let difference = Math.abs(number - current);\r\n let itemIndex = 0;\r\n let newDifference;\r\n for (let i = 0; i < this.range.length; i++) {\r\n newDifference = Math.abs(number - this.range[i]);\r\n if (newDifference < difference) {\r\n difference = newDifference;\r\n current = this.range[i];\r\n itemIndex = i;\r\n }\r\n }\r\n\r\n return {index: itemIndex, value: current};\r\n }\r\n\r\n getPercentageLeft() {\r\n return this.percentageBlock * this.beginModel;\r\n }\r\n\r\n getPercentageRight() {\r\n return this.percentageBlock * Math.abs(this.endModel - (this.range.length - 1));\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UiInfiniteLoadService {\r\n readyToCheck: boolean;\r\n func;\r\n element;\r\n listener;\r\n\r\n constructor() {\r\n }\r\n\r\n register(element, func, orientation = 'vertical') {\r\n this.element = element;\r\n this.func = func;\r\n\r\n this.listener = () => {\r\n if (orientation === 'vertical') {\r\n const heightOffset = (this.element.scrollHeight || document.documentElement.scrollHeight) - (this.element.clientHeight || this.element.innerHeight);\r\n const scrollTop = this.element.scrollTop || this.element.scrollY;\r\n const safeZone = heightOffset * 0.1;\r\n\r\n if (scrollTop >= heightOffset - safeZone) {\r\n func();\r\n }\r\n } else {\r\n const widthOffset = (this.element.scrollWidth || document.documentElement.scrollWidth) - (this.element.clientWidth || this.element.innerWidth);\r\n const scrollLeft = this.element.scrollLeft || this.element.scrollX;\r\n const safeZone = widthOffset * 0.1;\r\n\r\n if (scrollLeft >= widthOffset - safeZone) {\r\n func();\r\n }\r\n }\r\n };\r\n\r\n this.element.addEventListener('scroll', this.listener);\r\n this.readyToCheck = true;\r\n }\r\n\r\n destroy() {\r\n this.element.removeEventListener('scroll', this.listener);\r\n this.readyToCheck = false;\r\n }\r\n}\r\n\r\n","import {AfterViewInit, Directive, ElementRef, Output, DoCheck, Input, EventEmitter} from '@angular/core';\r\nimport {UiInfiniteLoadService} from './infinite-load.service';\r\n\r\n@Directive({\r\n selector: '[uiInfiniteLoad]'\r\n})\r\nexport class UiInfiniteLoadDirective implements AfterViewInit, DoCheck {\r\n @Output() uiInfiniteLoad: EventEmitter<any> = new EventEmitter();\r\n @Input() orientation;\r\n\r\n constructor(private element: ElementRef, private infiniteLoad: UiInfiniteLoadService) {\r\n this.orientation = 'vertical';\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.infiniteLoad.register(this.element.nativeElement, () => {\r\n this.uiInfiniteLoad.emit();\r\n }, this.orientation);\r\n }\r\n\r\n ngDoCheck() {\r\n if (this.infiniteLoad.listener) {\r\n this.infiniteLoad.listener();\r\n }\r\n }\r\n}\r\n","import {Component, EventEmitter} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss']\r\n})\r\nexport class UiAutocompleteComponent {\r\n ngModel: any;\r\n list: any[];\r\n loading: boolean;\r\n primary: string;\r\n secondary: string;\r\n accentClass: boolean;\r\n focusedIndex: number;\r\n hideNotFound: boolean;\r\n selectChange: EventEmitter<any>;\r\n loadMore: EventEmitter<any>;\r\n\r\n selectItem(item) {\r\n this.selectChange.emit(item);\r\n }\r\n\r\n loadMoreEmit() {\r\n setTimeout(() => this.loadMore.emit());\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n Directive,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n EventEmitter,\r\n HostListener,\r\n Injector,\r\n Input,\r\n OnChanges, OnInit,\r\n Output, forwardRef\r\n} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiAutocompleteComponent} from './autocomplete.component';\r\nimport {FormControl, NG_VALIDATORS} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[uiAutocomplete]',\r\n providers: [{\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiAutocompleteDirective),\r\n multi: true\r\n }]\r\n})\r\nexport class UiAutocompleteDirective implements AfterViewInit, OnInit, OnChanges {\r\n\r\n @Input() list: any[];\r\n @Input() ngModel: any;\r\n @Input() modelValue: any;\r\n @Input('model-property') modelProperty: any;\r\n @Input() select: Function;\r\n @Input() primary: string;\r\n @Input() secondary: string;\r\n @Input() loading: boolean;\r\n @Input('theme-class') themeClass: string;\r\n @Input() hideNotFound: boolean;\r\n @Input() hidePanel: boolean;\r\n @Output() loadMore: EventEmitter<any> = new EventEmitter();\r\n @Output() loadMoreEmmiter: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n @Output() modelValueChange: EventEmitter<any> = new EventEmitter();\r\n @Output() selectChange: EventEmitter<any> = new EventEmitter();\r\n @Output() requiredChange: EventEmitter<any> = new EventEmitter();\r\n\r\n focusedIndex: number;\r\n accentClass: boolean;\r\n componentRef: any;\r\n componentElement: HTMLElement;\r\n wrapElement: HTMLElement;\r\n control: FormControl;\r\n onChange: Function;\r\n onTouched: Function;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector,\r\n private elementRef: ElementRef) {\r\n }\r\n\r\n public ngOnInit() {\r\n this.selectChange.subscribe(item => {\r\n this.ngModel = item[this.primary] || item;\r\n this.modelValue = this.modelProperty && item && typeof item === 'object' ? item[this.modelProperty] : item;\r\n this.ngModelChange.emit(this.ngModel);\r\n this.modelValueChange.emit(this.modelValue);\r\n if (this.select) {\r\n this.select(item);\r\n }\r\n this.elementRef.nativeElement.blur();\r\n this.close();\r\n });\r\n\r\n }\r\n\r\n public ngAfterViewInit() {\r\n UiElement.on(window, 'click resize', e => {\r\n if (this.componentRef) {\r\n if (!(UiElement.is(e.target, '.wrap-autocomplete') || UiElement.closest(e.target, '.wrap-autocomplete') || UiElement.is(e.target, '.overlay') || e.target === this.elementRef.nativeElement)) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public ngOnChanges(changes) {\r\n if (changes.ngModel && !changes.ngModel.firstChange && this.componentRef) {\r\n this.componentRef.instance.ngModel = changes.ngModel.currentValue;\r\n }\r\n if (changes.list && !changes.list.firstChange && this.componentRef) {\r\n this.componentRef.instance.list = changes.list.currentValue;\r\n setTimeout(() => {\r\n const position = UiElement.position(this.elementRef.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top + 1\r\n };\r\n this.setPosition(coordinate, this.componentElement);\r\n });\r\n }\r\n if (changes.loading && !changes.loading.firstChange && this.componentRef) {\r\n this.componentRef.instance.loading = changes.loading.currentValue;\r\n }\r\n }\r\n\r\n private createComponent() {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiAutocompleteComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n }\r\n\r\n private getComponentAsElement(): HTMLElement {\r\n return (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n private setInstances(component, componentRef): void {\r\n const keysComponent = ['ngModel', 'list', 'primary', 'secondary', 'selectChange', 'loading', 'accentClass', 'loadMore', 'hideNotFound'];\r\n\r\n keysComponent.forEach(key => {\r\n componentRef.instance[key] = component[key];\r\n });\r\n }\r\n\r\n private render(element, coordinate): void {\r\n this.createWrapElement();\r\n this.wrapElement.appendChild(element);\r\n document.body.appendChild(this.wrapElement);\r\n\r\n\r\n setTimeout(() => {\r\n this.setPosition(coordinate, element);\r\n this.wrapElement.classList.add('open');\r\n });\r\n }\r\n\r\n private createWrapElement() {\r\n this.wrapElement = document.createElement('div');\r\n this.wrapElement.classList.add('wrap-autocomplete');\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('overlay');\r\n\r\n if (this.themeClass) {\r\n this.wrapElement.classList.add(this.themeClass);\r\n }\r\n\r\n UiElement.css(this.wrapElement, 'top', 0);\r\n UiElement.css(this.wrapElement, 'left', 0);\r\n UiElement.css(this.wrapElement, 'visibility', 'hidden');\r\n UiElement.css(this.wrapElement, 'transition', 'none');\r\n this.wrapElement.appendChild(overlay);\r\n }\r\n\r\n private setFocusIndex(index) {\r\n this.componentRef.instance.focusedIndex = index;\r\n }\r\n\r\n private close() {\r\n if (this.wrapElement) {\r\n this.wrapElement.classList.remove('open');\r\n setTimeout(() => {\r\n if (this.componentRef) {\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n this.componentRef = null;\r\n this.wrapElement.remove();\r\n }\r\n }, 280);\r\n }\r\n }\r\n\r\n private initialize() {\r\n this.focusedIndex = undefined;\r\n\r\n this.accentClass = this.elementRef.nativeElement.classList.contains('accent');\r\n\r\n const position = UiElement.position(this.elementRef.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top + 1\r\n };\r\n\r\n if (!this.componentRef) {\r\n this.createComponent();\r\n this.setInstances(this, this.componentRef);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n this.componentElement = this.getComponentAsElement();\r\n this.render(this.componentElement, coordinate);\r\n }\r\n }\r\n\r\n private setPosition(coordinate, element) {\r\n const wrap = element.querySelector('.suggestions-wrap');\r\n const maxHeightWrap = !!this.secondary ? 370 : 240;\r\n const horizontalCoveringArea = coordinate.x + wrap.clientWidth;\r\n const verticalCoveringArea = coordinate.y + (wrap.clientHeight > maxHeightWrap ? maxHeightWrap : wrap.clientHeight);\r\n const windowWidth = window.innerWidth + (document.body.scrollLeft || window.scrollX || window.pageXOffset);\r\n const windowHeight = window.innerHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (wrap.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = coordinate.y - ((wrap.clientHeight > maxHeightWrap ? maxHeightWrap : wrap.clientHeight) + this.elementRef.nativeElement.clientHeight) - 14; // 14 = label focus\r\n }\r\n\r\n UiElement.css(this.wrapElement, 'top', `${coordinate.y + this.elementRef.nativeElement.clientHeight}px`);\r\n UiElement.css(this.wrapElement, 'left', `${coordinate.x}px`);\r\n UiElement.css(this.wrapElement, 'width', `${this.elementRef.nativeElement.clientWidth}px`);\r\n UiElement.css(this.wrapElement, 'visibility', '');\r\n UiElement.css(this.wrapElement, 'transition', '');\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (this.elementRef.nativeElement.hasAttribute('required') && !control.value) {\r\n return {required: true};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n @HostListener('input') onInput() {\r\n if (!(this.ngModel && this.modelValue) || (this.ngModel !== this.modelValue)) {\r\n this.modelValue = null;\r\n this.modelValueChange.emit(this.modelValue);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n @HostListener('focus') onFocus() {\r\n if (this.hidePanel) {\r\n return;\r\n }\r\n\r\n this.initialize();\r\n }\r\n\r\n @HostListener('click') onClick() {\r\n if (this.hidePanel) {\r\n return;\r\n }\r\n\r\n this.initialize();\r\n }\r\n\r\n @HostListener('blur', ['$event']) onBlur(e) {\r\n if (!this.hidePanel && e.relatedTarget !== this.componentElement.querySelector('ui-card.suggestions')) {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event']) onKeydown(e) {\r\n if (!this.componentRef) {\r\n return;\r\n }\r\n if (typeof this.focusedIndex === 'undefined') {\r\n this.focusedIndex = -1;\r\n }\r\n switch (e.which) {\r\n case 8:\r\n case 37:\r\n this.elementRef.nativeElement.focus();\r\n break;\r\n case 38:\r\n this.focusedIndex = !this.list.length ? null : this.focusedIndex ? this.focusedIndex - 1 : this.list.length - 1;\r\n this.setFocusIndex(this.focusedIndex);\r\n break;\r\n case 40:\r\n this.focusedIndex = !this.list.length ? null : this.list.length - 1 === this.focusedIndex ? 0 : this.focusedIndex + 1;\r\n this.setFocusIndex(this.focusedIndex);\r\n break;\r\n case 13:\r\n if (this.list && typeof this.focusedIndex === 'number' && this.focusedIndex !== -1) {\r\n this.selectChange.emit(this.list[this.focusedIndex]);\r\n }\r\n event.preventDefault();\r\n break;\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input,\r\n Output, OnChanges, OnInit\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[uiMaskInteger][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskIntegerDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskIntegerDirective),\r\n multi: true\r\n }]\r\n})\r\nexport class UiMaskIntegerDirective implements ControlValueAccessor, AfterViewInit, OnChanges, OnInit {\r\n loaded: boolean;\r\n input: boolean;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n @Input() ngModel: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n @Input() uiMaskInteger: any;\r\n @Input() min: number;\r\n @Input() max: number;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (typeof changes.max !== 'undefined') {\r\n this.max = changes.max.currentValue;\r\n }\r\n if (typeof changes.min !== 'undefined') {\r\n this.min = changes.min.currentValue;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n switch (this.uiMaskInteger) {\r\n case 'smallint':\r\n this.min = -32768;\r\n this.max = 32768;\r\n break;\r\n case 'bigint':\r\n this.min = -9223372036854775808;\r\n this.max = 9223372036854775807;\r\n break;\r\n case 'integer':\r\n this.min = -2147483648 ;\r\n this.max = 2147483647;\r\n break;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n const valueConverted = parseInt(this.ngModel, 10);\r\n this.elementRef.nativeElement.value = typeof this.ngModel === 'number' ? this.ngModel : !Number.isNaN(valueConverted) ? valueConverted : '';\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.ngModel || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n const newValue = value.toString().replace(/[^0-9]+/g, '');\r\n return newValue || undefined;\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (typeof this.min !== 'undefined' && control.value && this.format(control.value) < this.min) {\r\n return {min: true};\r\n }\r\n\r\n if (typeof this.max !== 'undefined' && control.value && this.format(control.value) > this.max) {\r\n return {max: true};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput($event): void {\r\n const rawValue = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit\r\n} from '@angular/core';\r\n\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-tabs',\r\n templateUrl: 'tabs.component.html',\r\n styleUrls: ['tabs.component.scss']\r\n})\r\n/**/\r\nexport class UiTabsComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n showLeftArrow: boolean;\r\n showRightArrow: boolean;\r\n onScroll;\r\n internetExplorer: boolean;\r\n\r\n @Input('infinite-load') infiniteLoad;\r\n @Input() watch;\r\n @Input() disabled;\r\n\r\n constructor(private element: ElementRef) {\r\n this.onScroll = () => this.tabsScroll(0);\r\n this.disabled = [];\r\n }\r\n\r\n ngOnInit() {\r\n this.internetExplorer = navigator.userAgent.includes('Trident');\r\n }\r\n\r\n ngAfterViewInit() {\r\n const tabs = this.element.nativeElement.querySelectorAll('.tab');\r\n const indicator = this.element.nativeElement.querySelector('.indicator');\r\n\r\n for (let i = 0; i < tabs.length; i++) {\r\n if (tabs[i].classList.contains('disabled')) {\r\n tabs[i].classList.remove('disabled');\r\n }\r\n }\r\n\r\n for (let i = 0; i < this.disabled.length; i++) {\r\n tabs[this.disabled[i]].classList.add('disabled');\r\n }\r\n\r\n const self = this;\r\n\r\n let timeout;\r\n\r\n function scrollToTab(tab, withoutAnimation?) {\r\n for (let i = 0; i < tabs.length; i++) {\r\n const tab2 = tabs[i];\r\n if (tab2 !== tab && tab2.classList.contains('selected')) {\r\n UiElement.css(indicator, 'left', UiElement.offset(tab2).left + 'px');\r\n UiElement.css(indicator, 'width', tab2.offsetWidth + 'px');\r\n tab2.classList.remove('selected');\r\n }\r\n }\r\n\r\n UiElement.css(indicator, 'left', UiElement.offset(tab).left + 'px');\r\n UiElement.css(indicator, 'width', tab.offsetWidth + 'px');\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n tab.classList.add('selected');\r\n UiElement.css(indicator, 'width', '');\r\n UiElement.css(indicator, 'left', '');\r\n }, 280);\r\n\r\n const overflow = self.element.nativeElement.querySelector('.overflow');\r\n\r\n self.tabsScroll(UiElement.offset(tab).left - overflow.scrollLeft, withoutAnimation);\r\n }\r\n\r\n for (let i = 0; i < tabs.length; i++) {\r\n const tab = tabs[i];\r\n this.element.nativeElement.addEventListener('click', (e) => {\r\n if (e.target === tab && !e.target.classList.contains('disabled')) {\r\n scrollToTab(tab);\r\n }\r\n });\r\n }\r\n\r\n const tabSelected = this.element.nativeElement.querySelector('.tab.first-selected');\r\n if (tabSelected) {\r\n scrollToTab(tabSelected, true);\r\n // tabSelected.nativeElement.click();\r\n }\r\n\r\n UiElement.trigger(window, 'scroll');\r\n UiElement.on(window, 'scroll resize', this.onScroll);\r\n }\r\n\r\n ngOnChanges(changes) {\r\n setTimeout(() => {\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n UiElement.off(window, 'scroll resize', this.onScroll);\r\n }\r\n\r\n tabsScroll(value?, withoutAnimation?) {\r\n const overflow = this.element.nativeElement.querySelector('.overflow');\r\n\r\n let scrollLeft = overflow.scrollLeft;\r\n\r\n const maxScrollLeft = overflow.scrollWidth - overflow.clientWidth;\r\n\r\n const animationTiming = withoutAnimation || this.internetExplorer ? 1 : 280\r\n\r\n if (typeof value !== 'undefined') {\r\n UiElement.animate(overflow, 'borderSpacing', scrollLeft, scrollLeft + value, animationTiming, null, (tick) => {\r\n overflow.scrollLeft = tick;\r\n\r\n scrollLeft = overflow.scrollLeft;\r\n\r\n this.showLeftArrow = (scrollLeft > 0);\r\n this.showRightArrow = (scrollLeft < maxScrollLeft);\r\n });\r\n } else {\r\n this.showLeftArrow = (scrollLeft > 0);\r\n this.showRightArrow = (scrollLeft < maxScrollLeft);\r\n }\r\n\r\n if (!this.showRightArrow) {\r\n if (this.infiniteLoad) {\r\n this.infiniteLoad();\r\n }\r\n }\r\n }\r\n}\r\n","import {AfterViewInit, Component, ElementRef, EventEmitter, Input, Output} from '@angular/core';\r\nimport {UiElementRef} from '../../utils/providers/element-ref.provider';\r\nimport {UiElement} from '../../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-tabs-pages',\r\n templateUrl: 'tabs-pages.component.html',\r\n styleUrls: ['tabs-pages.component.scss']\r\n})\r\n\r\nexport class UiTabsPagesComponent implements AfterViewInit {\r\n @Input() tabs: any;\r\n firstLoad: boolean;\r\n currentPage: number;\r\n timeOutTurnBack: any;\r\n @Input('enable-overflow') enableOverflow: boolean;\r\n @Output('onchangepage') onChangePage: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(private element: ElementRef) {\r\n this.currentPage = 1;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.tabs) {\r\n const tabs = new UiElementRef(this.tabs.element.nativeElement).querySelector('.tab');\r\n\r\n let touchXMovement;\r\n let touchXStartPosition;\r\n let touchYMovement;\r\n let touchYStartPosition;\r\n let firstMovementCoord;\r\n let currentBannerIndex;\r\n let newPosition;\r\n\r\n const elBannerContainer = this.element.nativeElement.querySelector('.page-container');\r\n\r\n elBannerContainer.addEventListener('touchstart', (e) => {\r\n currentBannerIndex = tabs.indexOf(tabs.filter(tab => tab.is('.selected'))[0]);\r\n touchXStartPosition = e.touches[0].pageX;\r\n touchYStartPosition = e.touches[0].pageY;\r\n elBannerContainer.classList.add('no-transition');\r\n\r\n if (this.enableOverflow) {\r\n const pageContainer = new UiElementRef(this.element.nativeElement);\r\n\r\n const pages = pageContainer.querySelector('.page-container .page');\r\n for (let i = 0; i < pages.length; i++) {\r\n pages[i].css('height', '');\r\n }\r\n }\r\n });\r\n\r\n elBannerContainer.addEventListener('touchmove', (e) => {\r\n if (touchXStartPosition < 0 || touchXStartPosition > 40) {\r\n touchXMovement = touchXStartPosition - e.touches[0].pageX;\r\n touchYMovement = touchYStartPosition - e.touches[0].pageY;\r\n\r\n if (!firstMovementCoord) {\r\n if (touchXMovement > 20 || touchXMovement < -20) {\r\n firstMovementCoord = 'X';\r\n } else if (touchYMovement > 20 || touchYMovement < -20) {\r\n firstMovementCoord = 'Y';\r\n }\r\n }\r\n\r\n if (touchXMovement && firstMovementCoord === 'X') {\r\n UiElement.disableScroll();\r\n\r\n const i = currentBannerIndex;\r\n\r\n const isNegative = i > 0 ? -1 : 1;\r\n const currentPosition = (i * 100) * isNegative;\r\n\r\n const pages = this.element.nativeElement.querySelectorAll('.page-container .page');\r\n for (let i = 0; i < pages.length; i++) {\r\n const page = pages[i];\r\n newPosition = currentPosition - ((100 / page.clientWidth) * touchXMovement);\r\n page.style.transform = `translate(${newPosition}%)`;\r\n }\r\n }\r\n }\r\n });\r\n\r\n elBannerContainer.addEventListener('touchend', () => {\r\n elBannerContainer.classList.remove('no-transition');\r\n if (touchXMovement) {\r\n const newIndex = (Math.round(newPosition / 100) * -1);\r\n if (tabs[newIndex]) {\r\n tabs[newIndex].trigger('click');\r\n } else {\r\n this.pagesGoToPage();\r\n }\r\n }\r\n UiElement.enableScroll();\r\n firstMovementCoord = undefined;\r\n });\r\n }\r\n\r\n this.pagesGoToPage(1);\r\n }\r\n\r\n pagesGoToPage(nextPage?) {\r\n let tabs;\r\n if (this.tabs) {\r\n tabs = new UiElementRef(this.tabs.element.nativeElement).querySelector('.tab');\r\n } else {\r\n tabs = new UiElementRef(this.element.nativeElement).querySelector('.page');\r\n }\r\n\r\n if (tabs[nextPage - 1]) {\r\n const isNegative = (nextPage - 1) > 0 ? -1 : 1;\r\n const newPosition = (nextPage - 1) * 100 * isNegative;\r\n\r\n const pages = this.element.nativeElement.children[0].children;\r\n for (let i = 0; i < pages.length; i++) {\r\n const page = pages[i];\r\n page.style.transform = `translate(${newPosition}%)`;\r\n\r\n }\r\n } else {\r\n this.pagesGoToPage(tabs.indexOf(tabs.filter(tab => tab.is('.selected'))[0]) + 1);\r\n // TODO: Verificar se isso realmente funciona\r\n }\r\n\r\n const pageContainer = new UiElementRef(this.element.nativeElement);\r\n const elNextPage = new UiElementRef(this.element.nativeElement.children[0].children[nextPage - 1]);\r\n const pages = this.element.nativeElement.children[0].children;\r\n for (let i = 0; i < pages.length; i++) {\r\n if (nextPage - 1 === i) {\r\n const pageRef = new UiElementRef(pages[i]);\r\n pageRef.css('height', '');\r\n }\r\n }\r\n\r\n if (this.firstLoad) {\r\n const elCurrentPage = new UiElementRef(this.element.nativeElement.children[0].children[this.currentPage - 1]);\r\n pageContainer.css('height', elCurrentPage.nativeElement.clientHeight + 'px');\r\n } else {\r\n this.firstLoad = true;\r\n }\r\n if (elNextPage) {\r\n setTimeout(() => {\r\n pageContainer.css('height', elNextPage.nativeElement.clientHeight + 'px');\r\n\r\n clearTimeout(this.timeOutTurnBack);\r\n this.timeOutTurnBack = setTimeout(() => {\r\n pageContainer.css('height', '');\r\n\r\n for (let i = 0; i < pages.length; i++) {\r\n if (nextPage - 1 !== i) {\r\n const pageRef = new UiElementRef(pages[i]);\r\n pageRef.css('height', 0);\r\n }\r\n }\r\n }, 280);\r\n });\r\n }\r\n\r\n if (typeof nextPage !== 'undefined') {\r\n this.currentPage = nextPage;\r\n if (this.onChangePage) {\r\n setTimeout(() => {\r\n this.onChangePage.emit();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import {Directive, DoCheck, ElementRef, Input} from '@angular/core';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\n@Directive({selector: '[uiLazyLoad][lazy-src]'})\r\nexport class UiLazyLoadDirective implements DoCheck {\r\n elementRef: any;\r\n visible: boolean;\r\n @Input('lazy-src') lazySrc: any;\r\n\r\n constructor(private element: ElementRef) {\r\n this.elementRef = new UiElementRef(element.nativeElement);\r\n this.elementRef.on('load', () => {\r\n this.elementRef.classList.add('loaded');\r\n });\r\n }\r\n\r\n ngDoCheck() {\r\n if (!this.visible && this.elementRef.isInViewport()) {\r\n this.visible = true;\r\n this.elementRef.attribute('src', this.lazySrc);\r\n }\r\n }\r\n}\r\n","import {AfterViewInit, Component, ElementRef, OnInit, ViewChild} from '@angular/core';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\n@Component({\r\n selector: 'ui-data-table',\r\n templateUrl: 'data-table.component.html'\r\n})\r\n\r\nexport class UiDataTableComponent implements OnInit {\r\n @ViewChild('tableFooter', { static: true }) tableFooter: any;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngOnInit() {\r\n const self = new UiElementRef(this.element.nativeElement);\r\n const tfoot = self.querySelector('tfoot');\r\n\r\n if (tfoot) {\r\n this.tableFooter.nativeElement.appendChild(tfoot.nativeElement);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { UiElementRef } from '../utils/providers/element-ref.provider';\r\n\r\n@Component({\r\n selector: 'ui-bottom-sheet',\r\n templateUrl: './bottom-sheet.component.html',\r\n styleUrls: ['./bottom-sheet.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UiBottomSheetComponent {\r\n @Input('card-size') cardSize: number;\r\n @ViewChild(TemplateRef, { static: true }) templateRef: TemplateRef<any>;\r\n @Output() closeChange: EventEmitter<any> = new EventEmitter();\r\n\r\n viewRef;\r\n opened;\r\n\r\n constructor(public elementRef: ElementRef) {\r\n }\r\n\r\n close() {\r\n this.opened = false;\r\n this.closeChange.emit();\r\n\r\n if (this.viewRef) {\r\n const fabs = new UiElementRef(document).querySelector('.ui-fab-container');\r\n\r\n if (fabs.length) {\r\n fabs.classList.remove('hide');\r\n }\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n if (this.viewRef) {\r\n setTimeout(() => {\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.remove) {\r\n rootNode.remove();\r\n } else {\r\n rootNode.parentNode.removeChild(rootNode);\r\n }\r\n });\r\n this.viewRef.destroy();\r\n this.viewRef = null;\r\n }, 280);\r\n }\r\n\r\n document.body.style.overflowY = '';\r\n }\r\n }\r\n\r\n show(config?: any) {\r\n if (!this.viewRef) {\r\n const dialog = this;\r\n\r\n this.close();\r\n config = config || {};\r\n\r\n if (config.clickOverlayToClose === undefined) {\r\n config.clickOverlayToClose = true;\r\n } else if (config.clickOverlayToClose) {\r\n config.clickOverlayToClose = JSON.parse(config.clickOverlayToClose);\r\n }\r\n\r\n this.viewRef = dialog.templateRef.createEmbeddedView(dialog.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode, config);\r\n }\r\n });\r\n }\r\n }\r\n\r\n open(element, config) {\r\n this.opened = true;\r\n setTimeout(() => {\r\n setTimeout(() => {\r\n const card = element.querySelector('ui-card');\r\n card.className += ` ${this.elementRef.nativeElement.className}`;\r\n\r\n if (config.themeClass) {\r\n element.classList.add(config.themeClass);\r\n }\r\n if (config.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (config.cardSize) {\r\n card.style.maxWidth = config.cardSize + 'px';\r\n }\r\n if (!config.transparentOverlay && config.fabs) {\r\n config.fabs.classList.add('hide');\r\n }\r\n\r\n element.querySelectorAll('.overlay')[0].addEventListener('click', () => {\r\n this.close();\r\n });\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n // UiElement.disableScroll();\r\n });\r\n });\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, Input, ViewContainerRef} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiBottomSheetTrigger]'\r\n})\r\nexport class UiBottomSheetTriggerDirective implements AfterViewInit {\r\n viewRef: any;\r\n fabs: HTMLElement;\r\n @Input('trigger-events') triggerEvents: string;\r\n @Input('theme-class') themeClass: string;\r\n @Input('transparent-overlay') transparentOverlay: boolean;\r\n @Input('uiBottomSheetTrigger') bottomSheet;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef, public elementRef: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.bottomSheet.closeChange.subscribe(() => {\r\n this.close();\r\n });\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.triggerEvents || 'click', () => {\r\n this.render();\r\n });\r\n }\r\n\r\n render() {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.bottomSheet.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode);\r\n }\r\n });\r\n }\r\n\r\n open(element) {\r\n setTimeout(() => {\r\n const card = element.querySelector('ui-card');\r\n card.className += ` ${this.bottomSheet.elementRef.nativeElement.className}`;\r\n\r\n if (this.themeClass) {\r\n element.classList.add(this.themeClass);\r\n }\r\n if (this.transparentOverlay) {\r\n element.classList.add('transparent-overlay');\r\n }\r\n if (this.bottomSheet.cardSize) {\r\n card.style.maxWidth = this.bottomSheet.cardSize + 'px';\r\n }\r\n if (!this.transparentOverlay && this.fabs) {\r\n this.fabs.classList.add('hide');\r\n }\r\n\r\n element.querySelectorAll('.overlay')[0].addEventListener('click', () => {\r\n this.close();\r\n });\r\n\r\n element.style.transform = '';\r\n\r\n element.classList.add('open');\r\n\r\n // UiElement.disableScroll();\r\n });\r\n }\r\n\r\n close() {\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef;\r\n if (this.fabs) {\r\n this.fabs.classList.remove('hide');\r\n }\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n // UiElement.enableScroll();\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output } from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[uiInputFile]',\r\n exportAs: 'uiInputFile'\r\n})\r\nexport class UiInputFileDirective {\r\n\r\n @Input() files: any;\r\n @Input() model: any;\r\n @Input() accept: string;\r\n @Input() read: Function;\r\n @Input() error: Function;\r\n @Input() fileChange: Function;\r\n @Input('max-size') maxSize: string;\r\n @Input('max-file-size') maxFileSize: string;\r\n @Output() filesChange: EventEmitter<any> = new EventEmitter();\r\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n constructor(public element: ElementRef, public ngControl: NgControl) {\r\n }\r\n\r\n @HostListener('change', ['$event'])\r\n onChange(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n this.readFiles(e.target.files);\r\n }\r\n\r\n readFiles(files) {\r\n this.ngControl.control.markAsDirty();\r\n this.ngControl.control.setErrors(null);\r\n\r\n this.model = [];\r\n const accepts = this.accept ? this.accept.split(',') : [];\r\n const maxSize = this.maxSize ? this.toByte(this.maxSize) : null;\r\n const maxFileSize = this.maxFileSize ? this.toByte(this.maxFileSize) : null;\r\n\r\n let sum = 0;\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n sum += file.size;\r\n\r\n const validMaxFileSize = this.validateMaxSize(file.size, maxFileSize);\r\n const validMaxSize = this.validateMaxSize(sum, maxSize);\r\n const fileExtension = file.name.substring(file.name.lastIndexOf('.') + 1);\r\n const validType = this.validateType(file, fileExtension, accepts);\r\n\r\n if (validMaxFileSize) {\r\n this.ngControl.control.setErrors(Object.assign(this.ngControl.errors || {}, {maxFileSize: true}));\r\n }\r\n\r\n if (!validType) {\r\n this.ngControl.control.setErrors(Object.assign(this.ngControl.errors || {}, {accept: true}));\r\n }\r\n\r\n if (this.validateMaxSize(sum, maxSize)) {\r\n this.ngControl.control.setErrors(Object.assign(this.ngControl.errors || {}, {maxSize: true}));\r\n }\r\n\r\n if (validType && !validMaxFileSize && !validMaxSize) {\r\n this.model.push({});\r\n this.modelChange.emit(this.model);\r\n this.readFile(file, this.model[i], i);\r\n } else if (this.error) {\r\n this.error(file, {\r\n type: !validType,\r\n maxSize: validMaxSize,\r\n maxFileSize: validMaxFileSize\r\n }, i);\r\n }\r\n }\r\n\r\n this.files = files;\r\n this.filesChange.emit(this.files);\r\n\r\n if (this.fileChange) {\r\n this.fileChange(this.files, this.ngControl.control.invalid);\r\n }\r\n\r\n this.element.nativeElement.value = ''; // Resetando value para próximos arquivos\r\n }\r\n\r\n validateType(file, extension, accepts): boolean {\r\n if (!accepts.length) {\r\n return true;\r\n }\r\n\r\n for (let j = 0; j < accepts.length; j++) {\r\n const accept = accepts[j].trim();\r\n const regex = accept.match(/^[^\\*]*\\*$/) ? new RegExp('^' + accept) : new RegExp('^' + accept + '$');\r\n\r\n if (file.type.match(regex) || extension.match(regex)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n validateMaxSize(size, maxSize): boolean {\r\n return (maxSize && size > maxSize);\r\n }\r\n\r\n toByte(sizeString: string) {\r\n sizeString = sizeString.toString();\r\n const unitMatch = sizeString.match(/[a-zA-Z]+/g);\r\n const unit = unitMatch ? unitMatch[0] : null;\r\n const sizeMatch = sizeString.match(/\\d+/);\r\n const unitSize = sizeMatch ? parseInt(sizeMatch[0], 10) : null;\r\n let size = unitSize;\r\n\r\n switch (unit) {\r\n case 'KB':\r\n size = unitSize * 1024;\r\n break;\r\n case 'MB':\r\n size = unitSize * Math.pow(1024, 2);\r\n break;\r\n case 'GB':\r\n size = unitSize * Math.pow(1024, 3);\r\n break;\r\n case 'TB':\r\n size = unitSize * Math.pow(1024, 4);\r\n break;\r\n case 'PB':\r\n size = unitSize * Math.pow(1024, 5);\r\n break;\r\n case 'EB':\r\n size = unitSize * Math.pow(1024, 6);\r\n break;\r\n case 'ZB':\r\n size = unitSize * Math.pow(1024, 7);\r\n break;\r\n case 'YB':\r\n size = unitSize * Math.pow(1024, 8);\r\n break;\r\n }\r\n return size;\r\n }\r\n\r\n readFile(file, data, index) {\r\n if (typeof (data) !== 'object') return;\r\n\r\n const reader = new FileReader();\r\n\r\n data.resolved = 'false';\r\n\r\n reader.onload = (e: any) => {\r\n data.result = e.target.result;\r\n data.resolved = true;\r\n this.modelChange.emit(this.model);\r\n this.read(file, data.result, index);\r\n };\r\n\r\n reader.onerror = (e: any) => {\r\n data.error = e.target.error;\r\n this.modelChange.emit(this.model);\r\n };\r\n\r\n reader.onprogress = (e: any) => {\r\n data.progress = {\r\n loaded: e.loaded,\r\n total: e.total,\r\n percent: Math.round((e.loaded / e.total) * 100)\r\n };\r\n this.modelChange.emit(this.model);\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnInit, Output} from '@angular/core';\r\nimport {UiElementRef} from '../utils/providers/element-ref.provider';\r\n\r\n@Directive({selector: '[uiEllipsis]'})\r\nexport class UiEllipsisDirective implements OnInit {\r\n @Input() uiEllipsis: number;\r\n @Output() uiEllipsisChange: number;\r\n @Input('line-height') lineHeight: number;\r\n\r\n constructor(private element: ElementRef) {\r\n }\r\n\r\n ngOnInit() {\r\n const elementRef = new UiElementRef(this.element.nativeElement);\r\n\r\n this.uiEllipsis = this.uiEllipsis || 1;\r\n this.lineHeight = this.lineHeight || 17;\r\n\r\n elementRef.css('-webkit-line-clamp', this.uiEllipsis);\r\n elementRef.css('max-height', (this.lineHeight * this.uiEllipsis) + 'px');\r\n elementRef.css('line-height', this.lineHeight + 'px');\r\n\r\n elementRef.on('mousemove', () => {\r\n if (elementRef.nativeElement.scrollHeight > elementRef.nativeElement.clientHeight) {\r\n elementRef.nativeElement.setAttribute('title', elementRef.nativeElement.innerText);\r\n } else {\r\n elementRef.nativeElement.removeAttribute('title');\r\n }\r\n });\r\n }\r\n}\r\n","import { Directive, Input, forwardRef} from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[required][ngModel]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => UiRequiredDirective), multi: true }\r\n ]\r\n})\r\nexport class UiRequiredDirective implements Validator {\r\n @Input('required') maxLength: any;\r\n\r\n constructor() {}\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n\r\n const value = control.value;\r\n\r\n if (value && value.trim && !value.trim()) {\r\n return {\r\n required: true,\r\n uiMaxlength: false\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}\r\n","const textBlack = 'rgba(0, 0, 0, .87)';\r\nconst textWhite = '#fff';\r\nconst colors: any[] = [{\r\n name: 'red'\r\n}, {\r\n name: 'pink'\r\n}, {\r\n name: 'purple'\r\n}, {\r\n name: 'deepPurple'\r\n}, {\r\n name: 'indigo'\r\n}, {\r\n name: 'blue'\r\n}, {\r\n name: 'lightBlue'\r\n}, {\r\n name: 'cyan'\r\n}, {\r\n name: 'teal'\r\n}, {\r\n name: 'green'\r\n}, {\r\n name: 'lightGreen'\r\n}, {\r\n name: 'lime'\r\n}, {\r\n name: 'yellow'\r\n}, {\r\n name: 'amber'\r\n}, {\r\n name: 'orange'\r\n}, {\r\n name: 'deepOrange'\r\n}, {\r\n name: 'brown'\r\n}, {\r\n name: 'grey'\r\n}, {\r\n name: 'blueGrey'\r\n}, {\r\n name: 'black',\r\n hideSlider: true\r\n}, {\r\n name: 'white',\r\n hideSlider: true,\r\n hasBorder: true\r\n}];\r\nconst palette: any = {\r\n red: {\r\n 50: {\r\n color: '#ffebee',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#ffcdd2',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ef9a9a',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#e57373',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ef5350',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#f44336',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#e53935',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#d32f2f',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#c62828',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#b71c1c',\r\n text: textWhite\r\n }\r\n },\r\n pink: {\r\n 50: {\r\n color: '#fce4ec',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#f8bbd0',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#f48fb1',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#f06292',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#ec407a',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#e91e63',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#d81b60',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#c2185b',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#ad1457',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#880e4f',\r\n text: textWhite\r\n }\r\n },\r\n purple: {\r\n 50: {\r\n color: '#f3e5f5',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#e1bee7',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ce93d8',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#ba68c8',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#ab47bc',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#9c27b0',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#8e24aa',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#7b1fa2',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#6a1b9a',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#4a148c',\r\n text: textWhite\r\n }\r\n },\r\n deepPurple: {\r\n 50: {\r\n color: '#ede7f6',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#d1c4e9',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#b39ddb',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#9575cd',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#7e57c2',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#673ab7',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#5e35b1',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#512da8',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#4527a0',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#311b92',\r\n text: textWhite\r\n }\r\n },\r\n indigo: {\r\n 50: {\r\n color: '#e8eaf6',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#c5cae9',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#9fa8da',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#7986cb',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#5c6bc0',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#3f51b5',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#3949ab',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#303f9f',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#283593',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#1a237e',\r\n text: textWhite\r\n }\r\n },\r\n blue: {\r\n 50: {\r\n color: '#e3f2fd',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#bbdefb',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#90caf9',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#64b5f6',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#42a5f5',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#2196f3',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#1e88e5',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#1976d2',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#1565c0',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#0d47a1',\r\n text: textWhite\r\n }\r\n },\r\n lightBlue: {\r\n 50: {\r\n color: '#e1f5fe',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#b3e5fc',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#81d4fa',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#4fc3f7',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#29b6f6',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#03a9f4',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#039be5',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#0288d1',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#0277bd',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#01579b',\r\n text: textWhite\r\n }\r\n },\r\n cyan: {\r\n 50: {\r\n color: '#e0f7fa',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#b2ebf2',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#80deea',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#4dd0e1',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#26c6da',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#00bcd4',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#00acc1',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#0097a7',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#00838f',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#006064',\r\n text: textWhite\r\n }\r\n },\r\n teal: {\r\n 50: {\r\n color: '#e0f2f1',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#b2dfdb',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#80cbc4',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#4db6ac',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#26a69a',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#009688',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#00897b',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#00796b',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#00695c',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#004d40',\r\n text: textWhite\r\n }\r\n },\r\n green: {\r\n 50: {\r\n color: '#e8f5e9',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#c8e6c9',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#a5d6a7',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#81c784',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#66bb6a',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#4caf50',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#43a047',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#388e3c',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#2e7d32',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#1b5e20',\r\n text: textWhite\r\n }\r\n },\r\n lightGreen: {\r\n 50: {\r\n color: '#f1f8e9',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#dcedc8',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#c5e1a5',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#aed581',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#9ccc65',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#8bc34a',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#7cb342',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#689f38',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#558b2f',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#33691e',\r\n text: textWhite\r\n }\r\n },\r\n lime: {\r\n 50: {\r\n color: '#f9fbe7',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#f0f4c3',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#e6ee9c',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#dce775',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#d4e157',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#cddc39',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#c0ca33',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#afb42b',\r\n text: textBlack\r\n },\r\n 800: {\r\n color: '#9e9d24',\r\n text: textBlack\r\n },\r\n 900: {\r\n color: '#827717',\r\n text: textWhite\r\n }\r\n },\r\n yellow: {\r\n 50: {\r\n color: '#fffde7',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#fff9c4',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#fff59d',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#fff176',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ffee58',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#ffeb3b',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#fdd835',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#fbc02d',\r\n text: textBlack\r\n },\r\n 800: {\r\n color: '#f9a825',\r\n text: textBlack\r\n },\r\n 900: {\r\n color: '#f57f17',\r\n text: textBlack\r\n }\r\n },\r\n amber: {\r\n 50: {\r\n color: '#fff8e1',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#ffecb3',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ffe082',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#ffd54f',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ffca28',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#ffc107',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#ffb300',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#ffa000',\r\n text: textBlack\r\n },\r\n 800: {\r\n color: '#ff8f00',\r\n text: textBlack\r\n },\r\n 900: {\r\n color: '#ff6f00',\r\n text: textBlack\r\n }\r\n },\r\n orange: {\r\n 50: {\r\n color: '#fff3e0',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#ffe0b2',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ffcc80',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#ffb74d',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ffa726',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#ff9800',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#fb8c00',\r\n text: textBlack\r\n },\r\n 700: {\r\n color: '#f57c00',\r\n text: textBlack\r\n },\r\n 800: {\r\n color: '#ef6c00',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#e65100',\r\n text: textWhite\r\n }\r\n },\r\n deepOrange: {\r\n 50: {\r\n color: '#fbe9e7',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#ffccbc',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#ffab91',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#ff8a65',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#ff7043',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#ff5722',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#f4511e',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#e64a19',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#d84315',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#bf360c',\r\n text: textWhite\r\n }\r\n },\r\n brown: {\r\n 50: {\r\n color: '#efebe9',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#d7ccc8',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#bcaaa4',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#a1887f',\r\n text: textWhite\r\n },\r\n 400: {\r\n color: '#8d6e63',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#795548',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#6d4c41',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#5d4037',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#4e342e',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#3e2723',\r\n text: textWhite\r\n }\r\n },\r\n grey: {\r\n 50: {\r\n color: '#fafafa',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#f5f5f5',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#eeeeee',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#e0e0e0',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#bdbdbd',\r\n text: textBlack\r\n },\r\n 500: {\r\n color: '#9e9e9e',\r\n text: textBlack\r\n },\r\n 600: {\r\n color: '#757575',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#616161',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#424242',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#212121',\r\n text: textWhite\r\n }\r\n },\r\n blueGrey: {\r\n 50: {\r\n color: '#eceff1',\r\n text: textBlack\r\n },\r\n 100: {\r\n color: '#cfd8dc',\r\n text: textBlack\r\n },\r\n 200: {\r\n color: '#b0bec5',\r\n text: textBlack\r\n },\r\n 300: {\r\n color: '#90a4ae',\r\n text: textBlack\r\n },\r\n 400: {\r\n color: '#78909c',\r\n text: textWhite\r\n },\r\n 500: {\r\n color: '#607d8b',\r\n text: textWhite\r\n },\r\n 600: {\r\n color: '#546e7a',\r\n text: textWhite\r\n },\r\n 700: {\r\n color: '#455a64',\r\n text: textWhite\r\n },\r\n 800: {\r\n color: '#37474f',\r\n text: textWhite\r\n },\r\n 900: {\r\n color: '#263238',\r\n text: textWhite\r\n }\r\n },\r\n black: {\r\n 500: {\r\n color: '#000000',\r\n text: textWhite\r\n }\r\n },\r\n white: {\r\n 500: {\r\n color: '#FFFFFF',\r\n text: textBlack\r\n }\r\n }\r\n};\r\nexport {\r\n palette,\r\n colors\r\n}\r\n","import {Component, EventEmitter, AfterViewInit, Output, ViewChild, Input} from '@angular/core';\r\nimport {palette, colors} from './color-picker.palette';\r\nimport {NgControl} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'ui-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n styleUrls: ['./color-picker.component.scss']\r\n})\r\nexport class UiColorPickerComponent implements AfterViewInit {\r\n\r\n palette: any;\r\n colors: any;\r\n hues: any;\r\n colorSelected: any;\r\n ngModel: any;\r\n value: any;\r\n ngModelChange: EventEmitter<any>;\r\n @Output() valueChange: EventEmitter<any> = new EventEmitter();\r\n @ViewChild('hueColor') hueColor: any;\r\n\r\n constructor(private ngControl: NgControl) {\r\n this.palette = palette;\r\n this.colors = colors;\r\n this.hues = Array.from({length: 10}, (ngModel, index) => index * 100);\r\n this.hues[0] = 50;\r\n this.value = 500;\r\n this.colorSelected = {};\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setColorSelected(this.ngModel);\r\n this.hueColor.valueChange.subscribe(hue => {\r\n this.ngModel = this.getColor(this.colorSelected.name, hue);\r\n this.ngModelChange.emit(this.ngModel);\r\n });\r\n }\r\n\r\n getColor(color, hue = 500) {\r\n if (!color) {\r\n return;\r\n }\r\n return this.palette[color][hue].color;\r\n }\r\n\r\n getColorText(color, hue = 500) {\r\n if (!color) {\r\n return;\r\n }\r\n return this.palette[color][hue].text;\r\n }\r\n\r\n selectColor(colorSelected) {\r\n this.ngControl.control.markAsDirty();\r\n this.deselectColors();\r\n colorSelected.selected = true;\r\n this.colorSelected = colorSelected;\r\n this.ngModel = this.getColor(this.colorSelected.name, this.value);\r\n this.ngModelChange.emit(this.ngModel);\r\n }\r\n\r\n deselectColors() {\r\n this.ngControl.control.markAsDirty();\r\n this.ngModel = this.getColor(null);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.colorSelected = {};\r\n this.value = 500;\r\n this.colors.forEach(color => color.selected = false);\r\n }\r\n\r\n setColorSelected(color) {\r\n if (!color) {\r\n return;\r\n }\r\n\r\n Object.keys(this.palette).forEach(key => {\r\n Object.keys(this.palette[key]).forEach(hue => {\r\n if (this.palette[key][hue].color === color) {\r\n this.colors.forEach(item => {\r\n if (item.name === key) {\r\n setTimeout(() => {\r\n item.selected = true;\r\n this.value = hue;\r\n this.colorSelected = item;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n","import {\r\n AfterViewInit, ApplicationRef, ComponentFactoryResolver, Directive, ElementRef, EmbeddedViewRef, EventEmitter,\r\n Injector, Input, OnChanges, Output\r\n} from '@angular/core';\r\nimport {palette} from './color-picker.palette';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiColorPickerComponent} from './color-picker.component';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\n\r\n@Directive({\r\n selector: '[uiColorPicker]'\r\n})\r\nexport class UiColorPickerDirective implements AfterViewInit, OnChanges {\r\n\r\n @Input() ngModel;\r\n @Input('theme-class') themeClass;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n elementColor;\r\n palette;\r\n componentRef;\r\n wrapElement;\r\n componentElement;\r\n\r\n constructor(private element: ElementRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector) {\r\n this.palette = palette;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.generateElementColor();\r\n this.setColorElement(this.ngModel);\r\n\r\n this.element.nativeElement.classList.add('elevate');\r\n this.element.nativeElement.parentNode.appendChild(this.elementColor);\r\n\r\n this.addEvents();\r\n\r\n this.ngModelChange.subscribe(color => {\r\n this.setColorElement(color);\r\n });\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.ngModel && !changes.ngModel.firstChange) {\r\n this.ngModel = changes.ngModel.currentValue;\r\n this.setColorElement(this.ngModel);\r\n }\r\n }\r\n\r\n generateElementColor() {\r\n this.elementColor = document.createElement('div');\r\n this.elementColor.classList.add('ui-color');\r\n this.elementColor.setAttribute('tabindex', '1');\r\n }\r\n\r\n setColorElement(color) {\r\n let icon = this.elementColor.querySelector('i');\r\n\r\n if (color) {\r\n if (icon) {\r\n icon.remove();\r\n }\r\n this.elementColor.setAttribute('style', `background-color: ${color}`);\r\n } else if (!icon) {\r\n icon = document.createElement('i');\r\n icon.classList.add('material-icons', 'secondary-text');\r\n icon.innerText = 'block';\r\n this.elementColor.appendChild(icon);\r\n this.elementColor.setAttribute('style', '');\r\n }\r\n }\r\n\r\n addEvents() {\r\n UiElement.on(this.elementColor, 'click', e => {\r\n const position = UiElement.position(this.elementColor);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n\r\n if (!this.componentRef) {\r\n this.createComponent();\r\n this.setInstances(this, this.componentRef);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n this.componentElement = this.getComponentAsElement();\r\n this.render(this.componentElement, coordinate);\r\n e.stopPropagation();\r\n }\r\n });\r\n\r\n UiElement.on(window, 'click resize scroll', (e) => {\r\n if (this.componentRef) {\r\n if ((!(UiElement.is(e.target, '.wrap-color-picker') || UiElement.closest(e.target, '.wrap-color-picker')) && !(document.body.clientWidth <= 600 && e.type === 'scroll')) || UiElement.is(e.target, '.overlay')) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n\r\n private createComponent() {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiColorPickerComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n }\r\n\r\n private getComponentAsElement(): HTMLElement {\r\n return (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n private setInstances(component, componentRef): void {\r\n const keysComponent = ['ngModel', 'ngModelChange'];\r\n\r\n keysComponent.forEach(key => {\r\n componentRef.instance[key] = component[key];\r\n });\r\n }\r\n\r\n private render(element, coordinate): void {\r\n this.createWrapElement();\r\n this.wrapElement.appendChild(element);\r\n\r\n document.body.appendChild(this.wrapElement);\r\n\r\n setTimeout(() => {\r\n if (this.themeClass) {\r\n this.wrapElement.classList.add(this.themeClass);\r\n }\r\n\r\n this.wrapElement.classList.add('open');\r\n\r\n this.setPosition(coordinate);\r\n });\r\n }\r\n\r\n private createWrapElement() {\r\n this.wrapElement = document.createElement('div');\r\n this.wrapElement.classList.add('wrap-color-picker');\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('overlay');\r\n\r\n this.wrapElement.appendChild(overlay);\r\n }\r\n\r\n private setPosition(coordinate) {\r\n const horizontalCoveringArea = coordinate.x + this.componentElement.clientWidth;\r\n const verticalCoveringArea = coordinate.y + this.componentElement.clientHeight;\r\n const windowWidth = window.innerWidth + document.body.scrollLeft;\r\n const windowHeight = window.innerHeight + document.body.scrollTop;\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (this.componentElement.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = coordinate.y - this.componentElement.clientHeight;\r\n }\r\n\r\n this.componentElement.style.top = (coordinate.y) + 'px';\r\n this.componentElement.style.left = coordinate.x + 'px';\r\n }\r\n\r\n private close() {\r\n if (this.wrapElement) {\r\n this.wrapElement.classList.remove('open');\r\n setTimeout(() => {\r\n if (this.componentRef) {\r\n this.componentRef.instance.colors.forEach(color => color.selected = false);\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n this.componentRef = null;\r\n this.wrapElement.remove();\r\n }\r\n }, 280);\r\n }\r\n\r\n }\r\n}\r\n","import {ElementRef, HostListener, Directive, OnChanges, Input, AfterViewInit, DoCheck} from '@angular/core';\r\n\r\nconst MAX_LOOKUP_RETRIES = 3;\r\n\r\n@Directive({\r\n selector: '[autosize]'\r\n})\r\n\r\nexport class UiInputAutosizeDirective implements OnChanges, AfterViewInit, DoCheck {\r\n private retries = 0;\r\n private textAreaEl: any;\r\n @Input() ngModel;\r\n\r\n @HostListener('input', ['$event.target'])\r\n onInput(textArea: HTMLTextAreaElement): void {\r\n this.adjust();\r\n }\r\n\r\n @HostListener('change', ['$event.target'])\r\n onChange(textArea: HTMLTextAreaElement): void {\r\n this.adjust();\r\n }\r\n\r\n constructor(public element: ElementRef) {\r\n if (this.element.nativeElement.tagName !== 'TEXTAREA') {\r\n this._findNestedTextArea();\r\n } else {\r\n this.textAreaEl = this.element.nativeElement;\r\n }\r\n }\r\n\r\n // Faz com que o autosize execute quando a tela for carregada, para casos em que o campo iniciar preenchido\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.adjust();\r\n });\r\n }\r\n\r\n _findNestedTextArea() {\r\n this.textAreaEl = this.element.nativeElement.getElementsByTagName('textarea')[0];\r\n if (!this.textAreaEl) {\r\n if (this.retries >= MAX_LOOKUP_RETRIES) {\r\n console.error('textarea não encontrado');\r\n\r\n } else {\r\n this.retries++;\r\n setTimeout(() => {\r\n this._findNestedTextArea();\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n // this.adjust();\r\n }\r\n\r\n // setTimeout para aguardar a atualização da model do input\r\n ngOnChanges(changes) {\r\n setTimeout(() => {\r\n this.adjust();\r\n });\r\n }\r\n\r\n adjust(): void {\r\n if (!!this.textAreaEl) {\r\n this.textAreaEl.style.overflow = 'hidden';\r\n this.textAreaEl.style.height = '';\r\n this.textAreaEl.style.height = this.textAreaEl.scrollHeight + 'px';\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ComponentFactoryResolver, ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {Subject} from 'rxjs/index';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {animate, style, transition, trigger} from \"@angular/animations\";\r\n\r\n@Component({\r\n selector: 'ui-clock',\r\n templateUrl: './clock.component.html',\r\n styleUrls: ['./clock.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [trigger(\r\n 'explosion', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'scale(1.3)'\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 1,\r\n transform: 'scale(1)'\r\n }))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n transform: 'scale(1)'\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 0,\r\n transform: 'scale(1.3)'\r\n }))\r\n ])\r\n ],\r\n ), trigger(\r\n 'fade', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 1,\r\n }))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 0,\r\n }))\r\n ])\r\n ],\r\n )]\r\n})\r\nexport class UiClockComponent implements OnInit, AfterViewInit, OnChanges {\r\n @Input() ngModel: any;\r\n @Input('hide-header') hideHeader: boolean;\r\n @Input('confirm-selection') confirmSelection: boolean;\r\n @Output() select: EventEmitter<any> = new EventEmitter();\r\n @Output() cancel: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n chosen: Subject<any> = new Subject();\r\n\r\n hours: number[];\r\n minutes: number[];\r\n hour: number;\r\n minute: number;\r\n focused: boolean;\r\n pointerRotation: number;\r\n activeSelection: string;\r\n\r\n constructor(private element: ElementRef) {\r\n const beforeMidday = Array.apply(null, {length: 12}).map(Number.call, Number);\r\n const afterMidday = Array.apply(null, {length: 12}).map(Number.call, Number).map(val => val + 12);\r\n beforeMidday[0] = 12;\r\n afterMidday[0] = 0;\r\n this.hours = [...afterMidday, ...beforeMidday];\r\n this.minutes = Array.apply(null, {length: 12}).map(Number.call, Number).map(val => val * 5);\r\n this.activeSelection = 'hours';\r\n this.pointerRotation = 0;\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.formatModel();\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.element.nativeElement.tabIndex = 1;\r\n setTimeout(() => {\r\n this.element.nativeElement.focus();\r\n });\r\n\r\n UiElement.on(document, 'keydown', e => {\r\n if (!this.focused) {\r\n return;\r\n }\r\n switch (e.keyCode) {\r\n case 13:\r\n if (this.activeSelection === 'hours') {\r\n this.selectHour(this.hour);\r\n } else {\r\n this.selectMinute(this.minute);\r\n }\r\n break;\r\n case 39:\r\n case 40:\r\n if (this.activeSelection === 'hours') {\r\n this.hour = this.hour + 1 > 23 ? 0 : this.hour + 1;\r\n } else {\r\n this.minute = this.minute + 1 > 59 ? 0 : this.minute + 1;\r\n }\r\n this.getPositionPointer();\r\n e.preventDefault();\r\n break;\r\n case 37:\r\n case 38:\r\n if (this.activeSelection === 'hours') {\r\n this.hour = this.hour - 1 < 0 ? 23 : this.hour - 1;\r\n } else {\r\n this.minute = this.minute - 1 < 0 ? 59 : this.minute - 1;\r\n }\r\n this.getPositionPointer();\r\n e.preventDefault();\r\n break;\r\n }\r\n\r\n });\r\n\r\n UiElement.on(document, 'click', e => {\r\n this.focused = (this.element.nativeElement === e.target || this.element.nativeElement === UiElement.closest(e.target, 'ui-clock')) && (UiElement.is(e.target, 'ui-clock') || UiElement.closest(e.target, 'ui-clock'));\r\n });\r\n }\r\n\r\n public ngOnChanges(value): void {\r\n if (value.ngModel && !value.ngModel.firstChange) {\r\n this.ngModel = value.ngModel.currentValue;\r\n this.formatModel();\r\n }\r\n if (value.confirmSelection) {\r\n this.confirmSelection = value.confirmSelection.currentValue;\r\n }\r\n }\r\n\r\n public formatModel() {\r\n if (this.ngModel) {\r\n const time = this.ngModel.split(':');\r\n this.hour = parseInt(time[0], 10);\r\n this.minute = parseInt(time [1], 10);\r\n this.getPositionPointer();\r\n }\r\n }\r\n\r\n public selectTime(close?: boolean) {\r\n if (this.hasHourAndMinute()) {\r\n this.ngModel = `${this.formatToLpad(this.hour)}:${this.formatToLpad(this.minute)}`;\r\n this.ngModelChange.emit(this.ngModel);\r\n this.select.emit(this.ngModel);\r\n this.chosen.next({value: this.ngModel, close});\r\n }\r\n }\r\n\r\n public cancelTime() {\r\n this.activeSelection = 'hours';\r\n this.hour = null;\r\n this.minute = null;\r\n this.ngModel = null;\r\n this.ngModelChange.emit(this.ngModel);\r\n this.cancel.emit();\r\n }\r\n\r\n public selectHour(hour): void {\r\n this.activeSelection = 'minutes';\r\n this.hour = hour;\r\n this.minute = this.minute || 0;\r\n this.getPositionPointer();\r\n\r\n if (!this.confirmSelection) {\r\n this.selectTime();\r\n }\r\n }\r\n\r\n public selectMinute(minute): void {\r\n this.activeSelection = 'hours';\r\n this.minute = minute;\r\n this.getPositionPointer();\r\n\r\n if (!this.confirmSelection) {\r\n this.selectTime(true);\r\n }\r\n }\r\n\r\n public isEmpty(): boolean {\r\n return !(typeof this.hour === 'number' && typeof this.minute === 'number');\r\n }\r\n\r\n public formatToLpad(value): string {\r\n if (typeof value === 'number' && value.toString().length < 2) {\r\n value = `0${value}`;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n public getPositionPointer(): void {\r\n if (!this.hasHourAndMinute()) {\r\n return;\r\n }\r\n let oldRotation = this.pointerRotation;\r\n oldRotation = oldRotation >= 360 ? oldRotation - (Math.floor(oldRotation / 360) * 360) : (oldRotation <= -360 ? oldRotation + (Math.floor(Math.abs(oldRotation) / 360) * 360) : oldRotation);\r\n let amountRotate;\r\n const actualRotate = this.activeSelection === 'hours' ? (30 * (this.hour >= 12 ? this.hour - 12 : this.hour)) : 6 * this.minute;\r\n\r\n if (actualRotate - oldRotation < -180) {\r\n amountRotate = 360 - oldRotation + actualRotate;\r\n } else if (actualRotate - oldRotation > 180) {\r\n amountRotate = -(360 - actualRotate + oldRotation);\r\n } else {\r\n amountRotate = actualRotate - oldRotation;\r\n }\r\n\r\n if (Math.abs(amountRotate) === 180) {\r\n amountRotate = actualRotate > oldRotation ? Math.abs(amountRotate) : -amountRotate;\r\n }\r\n\r\n this.pointerRotation += amountRotate;\r\n\r\n }\r\n\r\n public getPositionTopPointer(): string {\r\n if (this.activeSelection === 'hours' && this.hour > 0 && this.hour < 13) {\r\n return '40px';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n public hasHourAndMinute(): boolean {\r\n return typeof this.hour === 'number' && typeof this.minute === 'number';\r\n }\r\n\r\n public validate(): boolean {\r\n return (this.hour < 24 && this.minute < 60) || !this.hasHourAndMinute();\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {UiTimePickerDirective} from './time-picker.directive';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\n\r\n@Injectable()\r\nexport class UiTimePickerService {\r\n\r\n timePickers: any = {};\r\n\r\n constructor() {\r\n }\r\n\r\n add(name: string, component: UiTimePickerDirective): void {\r\n if (this.timePickers && this.timePickers[name]) {\r\n return;\r\n }\r\n\r\n this.timePickers[name] = component;\r\n }\r\n\r\n get(name: string): UiTimePickerDirective {\r\n return this.timePickers[name];\r\n }\r\n\r\n remove(name: string) {\r\n delete this.timePickers[name];\r\n }\r\n\r\n closeAll() {\r\n UiElement.trigger(window, 'click');\r\n }\r\n\r\n getAll(): UiTimePickerDirective {\r\n return this.timePickers;\r\n }\r\n\r\n updateModel(name, value) {\r\n this.timePickers[name].ngModel = value;\r\n this.timePickers[name].ngModelChange.emit(value);\r\n }\r\n\r\n}\r\n","import {\r\n Directive, EventEmitter, Input, Output, OnChanges, OnInit, OnDestroy, ElementRef,\r\n AfterViewInit\r\n} from '@angular/core';\r\nimport {UiTimePickerService} from './time-picker.service';\r\nimport {Subject} from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[uiTimePicker]'\r\n})\r\nexport class UiTimePickerDirective implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n @Input() ngModel;\r\n @Input() confirmSelection: boolean;\r\n @Input('theme-class') themeClass: string;\r\n @Input('uiTimePicker') timePicker: string;\r\n @Output() select: EventEmitter<any> = new EventEmitter();\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n chosen: Subject<any> = new Subject();\r\n\r\n constructor(public timePickerService: UiTimePickerService, public element: ElementRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.timePickerService.add(this.timePicker, this);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.element.nativeElement.setAttribute('time-picker-name', this.timePicker);\r\n }\r\n\r\n ngOnChanges(value) {\r\n this.chosen.next(value);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.timePickerService.remove(this.timePicker);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n Directive,\r\n EmbeddedViewRef,\r\n ElementRef,\r\n Injector,\r\n Input\r\n} from '@angular/core';\r\n\r\nimport {UiTimePickerService} from './time-picker.service';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {UiWindowRef} from '../utils/providers/window.provider';\r\nimport {UiClockComponent} from '../clock/clock.component';\r\n\r\n@Directive({\r\n selector: '[uiTimePickerCaller]'\r\n})\r\nexport class UiTimePickerCallerDirective implements AfterViewInit {\r\n timePicker;\r\n componentRef: any;\r\n componentElement: any;\r\n pickerOpen: boolean;\r\n wrapTimePicker: HTMLElement;\r\n inputElement: HTMLElement;\r\n @Input() pickerEvent: string;\r\n @Input('uiTimePickerCaller') timePickerCaller: string;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\r\n private applicationRef: ApplicationRef,\r\n private injector: Injector,\r\n private timePickerService: UiTimePickerService,\r\n private elementRef: ElementRef) {\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this.timePicker = this.timePickerService.get(this.timePickerCaller);\r\n\r\n UiElement.on(this.elementRef.nativeElement, this.pickerEvent || 'click', (e) => {\r\n this.inputElement = <HTMLElement>document.querySelector(`[time-picker-name=\"${this.timePickerCaller}\"]`);\r\n\r\n this.timePickerService.closeAll();\r\n const position = UiElement.position(this.inputElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: this.inputElement.offsetHeight + position.top\r\n };\r\n\r\n if (!this.pickerOpen) {\r\n this.renderTimePicker(this.timePicker, coordinate);\r\n e.stopPropagation(); // Parando propagação do evento para os eventos do window\r\n }\r\n });\r\n\r\n UiElement.on(window, 'click resize scroll', (e) => {\r\n if (this.pickerOpen) {\r\n if ((!(UiElement.is(e.target, '.wrap-time-picker') || UiElement.closest(e.target, '.wrap-time-picker'))\r\n && !(document.body.clientWidth <= 600 && e.type === 'scroll')) || UiElement.is(e.target, '.overlay')) {\r\n this.closePicker();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getComponentAsElement(componentRef): HTMLElement {\r\n return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n }\r\n\r\n public setInstances(component, componentRef): void {\r\n const keysComponent = ['ngModel', 'confirmSelection', 'select'];\r\n keysComponent.map(key => componentRef.instance[key] = component[key]);\r\n componentRef.instance.focused = true;\r\n\r\n component.chosen.subscribe(value => componentRef.instance.ngOnChanges(value));\r\n componentRef.instance.cancel.subscribe(() => this.closePicker());\r\n\r\n componentRef.instance.chosen.subscribe(objectValue => {\r\n this.timePickerService.updateModel(this.timePickerCaller, objectValue.value);\r\n if (this.pickerOpen && objectValue.close) {\r\n this.inputElement.focus();\r\n this.closePicker();\r\n }\r\n });\r\n }\r\n\r\n public renderViewClock(element, coordinate, themeClass): void {\r\n this.wrapTimePicker = document.createElement('div');\r\n this.wrapTimePicker.classList.add('wrap-time-picker');\r\n const overlay = document.createElement('div');\r\n overlay.classList.add('overlay');\r\n if (themeClass) {\r\n this.wrapTimePicker.classList.add(themeClass);\r\n }\r\n\r\n this.wrapTimePicker.style.transform = 'scale(0)';\r\n element.classList.add('portrait-only');\r\n this.wrapTimePicker.appendChild(overlay);\r\n this.wrapTimePicker.appendChild(element);\r\n document.body.appendChild(this.wrapTimePicker);\r\n\r\n setTimeout(() => {\r\n const pickerHorizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const pickerVerticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + (document.body.scrollLeft || window.scrollX || window.pageXOffset);\r\n const windowHeight = window.innerHeight + (document.body.scrollTop || window.scrollY || window.pageYOffset);\r\n\r\n if (pickerHorizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n if (pickerVerticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n this.wrapTimePicker.style.transform = '';\r\n element.style.position = 'absolute';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n\r\n this.wrapTimePicker.classList.add('open');\r\n if (document.body.clientWidth <= 600) {\r\n document.body.style.overflowY = 'hidden';\r\n }\r\n });\r\n }\r\n\r\n public renderTimePicker(component, coordinate): void {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(UiClockComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n this.componentElement = this.getComponentAsElement(this.componentRef);\r\n\r\n this.setInstances(component, this.componentRef);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n this.renderViewClock(this.componentElement, coordinate, component.themeClass);\r\n this.pickerOpen = true;\r\n }\r\n\r\n public closePicker(): void {\r\n this.wrapTimePicker.classList.remove('open');\r\n setTimeout(() => {\r\n this.pickerOpen = false;\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n document.body.style.overflowY = '';\r\n try {\r\n document.body.removeChild(this.wrapTimePicker);\r\n } catch (e) {\r\n }\r\n }, 280);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiTime'\r\n})\r\nexport class UiTimePipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n if (value.length > 2) {\r\n value = value.substring(0, 2) + ':' + value.substring(2);\r\n }\r\n if (value.length > 5) {\r\n value = value.substring(0, 5);\r\n }\r\n return value;\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, AfterViewInit, OnChanges } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiTimePipe } from './time.pipe';\r\nimport { UiElement } from '../../providers/element.provider';\r\n\r\n@Directive({\r\n selector: '[uiMaskTime][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskTimeDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskTimeDirective),\r\n multi: true\r\n }, UiTimePipe]\r\n})\r\nexport class UiMaskTimeDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [2];\r\n @Input() ngModel: any;\r\n @Input() minTime: string;\r\n @Input() maxTime: string;\r\n @Input() customTime: boolean;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public timePipe: UiTimePipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (changes.minTime && !changes.minTime.firstChange) {\r\n this.minTime = changes.minTime.currentValue;\r\n }\r\n if (changes.maxTime && !changes.maxTime.firstChange) {\r\n this.maxTime = changes.maxTime.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.timePipe.transform(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.timePipe.transform(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.timePipe.transform(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 4);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < 4) {\r\n return { parse: true };\r\n }\r\n\r\n if (control.value) {\r\n const time = control.value.split(':');\r\n\r\n if (!this.customTime && time[0] > 23) {\r\n return { hour: true };\r\n }\r\n\r\n if (!this.customTime && time[1] > 59) {\r\n return { minute: true };\r\n }\r\n\r\n if (this.minTime && this.format(this.minTime).length === 4 && this.format(control.value) < this.format(this.minTime)) {\r\n return { minTime: true };\r\n }\r\n\r\n if (this.maxTime && this.format(this.maxTime).length === 4 && this.format(control.value) > this.format(this.maxTime)) {\r\n return { maxTime: true };\r\n }\r\n\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input') onInput(): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\ninterface UiCurrencyPipeArgs {\r\n noNegative?: boolean;\r\n}\r\n\r\n@Pipe({\r\n name: 'uiCurrency'\r\n})\r\nexport class UiCurrencyPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: UiCurrencyPipeArgs): any {\r\n if (!value && typeof value !== 'number') {\r\n return '';\r\n }\r\n if (typeof value === 'number') {\r\n value = value.toFixed(2);\r\n }\r\n\r\n const isNegative = !(value.toString().match(/[+]/) || !value.toString().match(/[-]/));\r\n\r\n // Verifica se há valor no model (permite remover o '0,00')\r\n const noValue = value.length === 3 && value.replace(',', '').split('').every(n => n === '0');\r\n\r\n // Removendo o que não é dígito qualquer zero adicional no começo da string\r\n value = value.toString().replace(/[^0-9]+/g, '').replace(/^0+/g, '');\r\n\r\n // Adiciona os zeros necessários à esquerda devido a formatação de dinheiro, caso haja valor na model\r\n if (!noValue) {\r\n while (value.length < 3) {\r\n value = '0' + value.toString();\r\n }\r\n }\r\n\r\n\r\n let newCurrency = '';\r\n value = value.split('');\r\n for (let i = 0; i < value.length; i++) {\r\n const valueChar = value[value.length - 1 - i];\r\n if (i === 2) {\r\n newCurrency = ',' + newCurrency;\r\n } else if (i > 3 && !((i - 2) % 3)) {\r\n newCurrency = '.' + newCurrency;\r\n }\r\n newCurrency = valueChar + newCurrency;\r\n }\r\n\r\n // ADICIONANDO O SINAL NEGATIVO\r\n if (args && args.noNegative) {\r\n return newCurrency;\r\n }\r\n\r\n return isNegative ? '-' + newCurrency : newCurrency;\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { UiElement } from '../../providers/element.provider';\r\nimport { UiCurrencyPipe } from './currency.pipe';\r\n\r\n@Directive({\r\n selector: '[uiMaskCurrency][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCurrencyDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCurrencyDirective),\r\n multi: true\r\n }, UiCurrencyPipe]\r\n})\r\nexport class UiMaskCurrencyDirective implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeViewValue;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n @Input() ngModel: any;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n @Input() min: number;\r\n @Input() max: number;\r\n @Input() noNegative: boolean;\r\n\r\n constructor(public elementRef: ElementRef, public currencyPipe: UiCurrencyPipe) {\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (typeof changes.max !== 'undefined') {\r\n this.max = changes.max.currentValue;\r\n }\r\n if (typeof changes.min !== 'undefined') {\r\n this.min = changes.min.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.formatViewValue(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.formatViewValue(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = this.currencyPipe.transform(value, { noNegative: this.noNegative });\r\n const removeGroupSep = new RegExp('[^\\\\d\\\\,-]+', 'g');\r\n value = value.toString().replace(removeGroupSep, '');\r\n value = parseFloat(value.replace(',', '.'));\r\n return typeof value === 'number' && !isNaN(value) ? value : null;\r\n }\r\n\r\n formatViewValue(value) {\r\n const isDeletingZero = this.beforeViewValue === ('0,00') && value.length < this.beforeViewValue.length;\r\n value = isDeletingZero ? '' : value;\r\n return this.currencyPipe.transform(value, { noNegative: this.noNegative });\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n\r\n this.control = control;\r\n\r\n // if (control.value && this.format(control.value).length < 11) {\r\n // return {parse: true};\r\n // }\r\n\r\n if (typeof this.min !== 'undefined' && control.value && this.format(control.value) < this.min) {\r\n return { min: true };\r\n }\r\n\r\n if (typeof this.max !== 'undefined' && control.value && this.format(control.value) > this.max) {\r\n return { max: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n // const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.beforeViewValue = rawValue;\r\n this.renderViaInput(rawValue);\r\n // UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n\r\n}\r\n","import {\r\n Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output,\r\n ViewContainerRef, ViewChild, TemplateRef, AfterViewInit, OnChanges\r\n} from '@angular/core';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\r\nimport {UiSelectFilterPipe} from './select-filter.pipe';\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n templateUrl: 'select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: UiSelectComponent,\r\n multi: true,\r\n }],\r\n})\r\n\r\nexport class UiSelectComponent implements OnInit, AfterViewInit, OnChanges {\r\n @Input('dark-class') darkClass;\r\n @Input() input;\r\n @Input() disabled;\r\n @Input() chosen;\r\n @Output() ngModelChange = new EventEmitter();\r\n selected;\r\n viewRef;\r\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\r\n @ViewChild('selectNative', { static: true }) selectNative;\r\n selectedNative;\r\n search;\r\n @Input() value;\r\n @Input() label;\r\n @Input() options;\r\n @Input() ngModel;\r\n optionsExternal;\r\n @ViewChild(NgModel) model: NgModel;\r\n isMobile = UiElement.isMobile;\r\n\r\n constructor(public element: ElementRef, public viewContainerRef: ViewContainerRef) {\r\n this.options = [];\r\n this.optionsExternal = [];\r\n }\r\n\r\n ngOnInit() {\r\n this.element.nativeElement.setAttribute('tabindex', 0);\r\n this.selectOption();\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n ngOnChanges(changes) {\r\n this.element.nativeElement.setAttribute('disabled', this.disabled);\r\n if (changes.options || changes.ngModel) {\r\n this.selectOption();\r\n }\r\n if (changes.ngModel && !changes.ngModel.firstChange) {\r\n this.ngModel = changes.ngModel.currentValue;\r\n\r\n if (changes.ngModel.currentValue) {\r\n this.selectOption();\r\n } else {\r\n this.onChangeSelect(changes.ngModel.currentValue);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n this.close();\r\n\r\n const closestFieldset = UiElement.closest(this.element.nativeElement, 'fieldset:disabled');\r\n\r\n if (!this.disabled && !closestFieldset) {\r\n if (this.isMobile()) {\r\n this.selectNative.nativeElement.focus();\r\n } else {\r\n setTimeout(() => {\r\n const position = UiElement.position(this.element.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top\r\n };\r\n this.render(coordinate);\r\n });\r\n }\r\n } else {\r\n this.element.nativeElement.blur();\r\n }\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n onBlur(event) {\r\n if (!event.relatedTarget || !(UiElement.is(event.relatedTarget, 'ui-select-option') || UiElement.closest(event.relatedTarget, '.wrap-select'))) {\r\n this.close();\r\n }\r\n }\r\n\r\n\r\n render(coordinate) {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (rootNode.clientWidth) {\r\n this.open(rootNode, coordinate);\r\n }\r\n });\r\n }\r\n\r\n open(element, coordinate) {\r\n setTimeout(() => {\r\n const horizontalCoveringArea = coordinate.x + element.clientWidth;\r\n const verticalCoveringArea = coordinate.y + element.clientHeight;\r\n const windowWidth = window.innerWidth + (window.scrollX || window.pageXOffset);\r\n const windowHeight = document.body.clientHeight + (window.scrollY || window.pageYOffset);\r\n\r\n if (horizontalCoveringArea > windowWidth) {\r\n coordinate.x = windowWidth - (element.clientWidth + 8);\r\n }\r\n\r\n if (coordinate.x <= 8) {\r\n coordinate.x = 8;\r\n }\r\n\r\n if (verticalCoveringArea > windowHeight) {\r\n coordinate.y = windowHeight - (element.clientHeight + 8);\r\n }\r\n\r\n if (coordinate.y <= 0) {\r\n coordinate.y = 0;\r\n }\r\n\r\n if (this.darkClass) {\r\n element.classList.add(this.darkClass);\r\n }\r\n\r\n element.style.transform = '';\r\n // element.querySelector('ui-card').style.maxHeight = window.innerHeight + 'px';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n element.style.width = this.element.nativeElement.clientWidth + 'px';\r\n\r\n element.querySelector('.selected').addEventListener('blur', (event) => {\r\n if (!event.relatedTarget || !(UiElement.is(event.relatedTarget, 'ui-select-option') || UiElement.is(event.relatedTarget, '.input-select'))) {\r\n this.close();\r\n }\r\n });\r\n if (this.chosen) {\r\n element.querySelector('.input-select').addEventListener('blur', (event) => {\r\n if (!event.relatedTarget || !(UiElement.is(event.relatedTarget, 'ui-select-option') || UiElement.is(event.relatedTarget, '.selected'))) {\r\n this.close();\r\n }\r\n });\r\n element.querySelector('.input-select').click();\r\n element.scrollTo(0, 0);\r\n } else {\r\n element.querySelector('.selected').focus();\r\n }\r\n\r\n element.classList.add('open');\r\n });\r\n }\r\n\r\n close() {\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(() => this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef)), 280);\r\n }\r\n }\r\n\r\n onChangeSelect(select) {\r\n if (select) {\r\n this.model = select[this.value];\r\n this.selected = select[this.label];\r\n this.ngModelChange.emit(select[this.value]);\r\n } else {\r\n this.search = select;\r\n this.model = select;\r\n this.selected = select;\r\n this.ngModelChange.emit(select);\r\n }\r\n }\r\n\r\n selectOption() {\r\n this.options.forEach(option => {\r\n if (option[this.value] === this.ngModel) {\r\n this.onChangeSelect(option);\r\n }\r\n });\r\n }\r\n\r\n writeValue() {\r\n }\r\n\r\n registerOnChange() {\r\n }\r\n\r\n registerOnTouched() {\r\n }\r\n}\r\n\r\n","import {Component, ElementRef, HostListener, Inject, Input, OnInit} from '@angular/core';\r\nimport {UiSelectComponent} from '../select.component';\r\nimport {UiElement} from '../../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-select-option',\r\n templateUrl: 'option.component.html',\r\n styleUrls: ['./option.component.scss']\r\n})\r\n\r\nexport class UiSelectOptionComponent implements OnInit {\r\n @Input() value;\r\n @Input() label;\r\n @Input() internal;\r\n\r\n constructor(@Inject(UiSelectComponent) private selectComponent: UiSelectComponent, private element: ElementRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.element.nativeElement.setAttribute('tabindex', 0);\r\n if (!this.internal) {\r\n this.selectComponent.optionsExternal.push({\r\n value: this.value,\r\n title: this.label\r\n });\r\n }\r\n }\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.selectComponent.ngModelChange.next(this.value);\r\n this.selectComponent.model = this.value;\r\n this.selectComponent.selected = this.label;\r\n this.element.nativeElement.blur();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onEnter(e) {\r\n if (e.keyCode === 13) {\r\n this.element.nativeElement.click();\r\n }\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n onBlur(event) {\r\n if (!event.relatedTarget || !(UiElement.is(event.relatedTarget, 'ui-select-option') || UiElement.is(event.relatedTarget, '.selected') || UiElement.is(event.relatedTarget, '.input-select'))) {\r\n this.selectComponent.close();\r\n }\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {unaccent} from '../utils/functions/unaccent';\r\n\r\n@Pipe({\r\n name: 'selectFilter',\r\n pure: false\r\n})\r\nexport class UiSelectFilterPipe implements PipeTransform {\r\n transform(value, filterBy, name) {\r\n filterBy = filterBy ? unaccent(filterBy.toLowerCase()) : null;\r\n return filterBy ? value.filter(item =>\r\n unaccent(item[name].toLowerCase()).indexOf(filterBy) !== -1) : value;\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {unaccent} from '../functions/unaccent';\r\n\r\n@Pipe({\r\n name: 'uiFilter',\r\n pure: false\r\n})\r\nexport class UiFilterPipe implements PipeTransform {\r\n transform(value, filterBy, name) {\r\n filterBy = filterBy ? unaccent(filterBy.toLowerCase()) : null;\r\n return filterBy ? value.filter(item =>\r\n unaccent(item[name].toLowerCase()).indexOf(filterBy) !== -1) : value;\r\n }\r\n}\r\n","import {AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, OnInit} from '@angular/core';\r\nimport {UiColor} from '../utils/providers/color.provider';\r\nimport {UiElement} from '../utils/providers/element.provider';\r\nimport {animate, style, transition, trigger} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'ui-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [trigger(\r\n 'image', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 1\r\n }))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n }),\r\n animate('2800ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 0,\r\n }))\r\n ])\r\n ],\r\n ), trigger(\r\n 'letter', [\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n }),\r\n animate('280ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n opacity: 0,\r\n }))\r\n ])\r\n ],\r\n )]\r\n})\r\nexport class UiAvatarComponent implements OnInit, AfterViewInit, OnChanges {\r\n newImage: string;\r\n showImage: boolean;\r\n grayscale: boolean;\r\n\r\n @Input() name: string;\r\n @Input() color: string;\r\n @Input() image: string;\r\n @Input() size: number;\r\n @Input() nameLength: number;\r\n @Input() initials: boolean;\r\n\r\n constructor(private element: ElementRef) {\r\n this.nameLength = 1;\r\n this.initials = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.newImage = this.image;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setSize();\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.name && !changes.name.firstChange) {\r\n this.name = changes.name.currentValue;\r\n }\r\n if (changes.color && !changes.color.firstChange) {\r\n this.color = changes.color.currentValue;\r\n }\r\n if (changes.image && !changes.image.firstChange) {\r\n if (!changes.image.currentValue) {\r\n this.showImage = false;\r\n this.newImage = null;\r\n }\r\n this.image = changes.image.currentValue;\r\n }\r\n if (changes.size && !changes.size.firstChange) {\r\n this.size = changes.size.currentValue;\r\n this.setSize();\r\n }\r\n if (changes.nameLength && !changes.nameLength.firstChange) {\r\n this.nameLength = changes.nameLength.currentValue;\r\n }\r\n }\r\n\r\n isBright(color): boolean {\r\n return UiColor.isBright(color);\r\n }\r\n\r\n loadedImage(): void {\r\n this.showImage = true;\r\n this.animateImage();\r\n }\r\n\r\n animateImage(): void {\r\n this.grayscale = true;\r\n setTimeout(() => {\r\n this.grayscale = false;\r\n this.newImage = this.image;\r\n }, 1120);\r\n }\r\n\r\n setSize() {\r\n if (this.size) {\r\n const wrap = this.element.nativeElement.querySelector('.wrap');\r\n const empty = this.element.nativeElement.querySelector('.empty');\r\n if (empty) {\r\n UiElement.css(empty, 'font-size', `${Math.round(this.size / 100 * 36.36)}px`);\r\n }\r\n UiElement.css(wrap, 'width', `${this.size}px`);\r\n UiElement.css(wrap, 'height', `${this.size}px`);\r\n }\r\n }\r\n\r\n getFontSize() {\r\n return Math.round(this.size / 100 * 36.36);\r\n }\r\n\r\n getName(): string {\r\n if (this.name) {\r\n if (this.initials) {\r\n const ini = this.name.trim().split(' ').map((nome) => { return nome.charAt(0).toUpperCase(); });\r\n return ini[0] + ini[ini.length - 1];\r\n } else {\r\n return this.name.trim().substr(0, this.nameLength).toUpperCase();\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiFloat'\r\n})\r\nexport class UiFloatPipe implements PipeTransform {\r\n\r\n transform(value: any, decimal: number = null, noNegative?: boolean): any {\r\n if (!value && typeof value !== 'number') {\r\n return '';\r\n }\r\n\r\n if (!decimal || isNaN(decimal)) {\r\n const decimals = value.toString().split('.');\r\n decimal = decimals.length > 1 ? decimals[1].length : 0;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n value = value.toFixed(decimal);\r\n }\r\n\r\n const isNegative = !(value.toString().match(/[+]/) || !value.toString().match(/[-]/));\r\n\r\n // Verifica se há valor no model (permite remover o '0,00')\r\n const noValue = decimal && value.length === (decimal + 1) && value.replace(',', '').split('').every(n => n === '0');\r\n\r\n // Removendo o que não é dígito qualquer zero adicional no começo da string\r\n value = value.toString().replace(/[^0-9]+/g, '').replace(/^0+/g, '');\r\n\r\n // Adiciona os zeros necessários à esquerda, caso haja valor na model\r\n if (!noValue) {\r\n while (value.length < (decimal + 1)) {\r\n value = '0' + value.toString();\r\n }\r\n }\r\n\r\n let newValue = '';\r\n value = value.split('');\r\n for (let i = 0; i < value.length; i++) {\r\n const valueChar = value[value.length - 1 - i];\r\n if (decimal && i === decimal) {\r\n newValue = ',' + newValue;\r\n } else if (\r\n i > decimal &&\r\n !((i - decimal) % 3)\r\n ) {\r\n newValue = '.' + newValue;\r\n }\r\n newValue = valueChar + newValue;\r\n }\r\n\r\n // ADICIONANDO O SINAL NEGATIVO\r\n if (noNegative) {\r\n return newValue;\r\n }\r\n\r\n return isNegative ? '-' + newValue : newValue;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input,\r\n Output, OnChanges, OnInit\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { UiElement } from '../../providers/element.provider';\r\nimport { UiFloatPipe } from './float.pipe';\r\n\r\n@Directive({\r\n selector: '[uiMaskFloat][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskFloatDirective),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskFloatDirective),\r\n multi: true\r\n }, UiFloatPipe]\r\n})\r\nexport class UiMaskFloatDirective implements ControlValueAccessor, AfterViewInit, OnChanges {\r\n\r\n loaded: boolean;\r\n input: boolean;\r\n beforeViewValue;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n @Input() uiMaskFloat: number = 2;\r\n @Input() decimal: number;\r\n @Input() max: number;\r\n @Input() min: number;\r\n @Input() ngModel: any;\r\n @Input() noNegative: boolean;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public floatPipe: UiFloatPipe) {\r\n this.decimal = this.uiMaskFloat;\r\n }\r\n\r\n ngOnChanges(changes): void {\r\n if (changes.ngModel && !changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n if (typeof changes.uiMaskFloat !== 'undefined') {\r\n this.uiMaskFloat = changes.uiMaskFloat.currentValue || 2;\r\n this.decimal = this.uiMaskFloat;\r\n }\r\n if (typeof changes.decimal !== 'undefined') {\r\n this.decimal = changes.decimal.currentValue || 2;\r\n this.uiMaskFloat = this.decimal;\r\n }\r\n if (typeof changes.max !== 'undefined') {\r\n this.max = changes.max.currentValue;\r\n }\r\n if (typeof changes.min !== 'undefined') {\r\n this.min = changes.min.currentValue;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.loaded = true;\r\n });\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n if (!this.input) {\r\n this.elementRef.nativeElement.value = this.formatViewValue(this.ngModel);\r\n }\r\n this.input = false;\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value =\r\n this.formatViewValue(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = this.floatPipe.transform(value, +this.decimal, this.noNegative);\r\n const removeGroupSep = new RegExp('[^\\\\d\\\\,-]+', 'g');\r\n value = value.toString().replace(removeGroupSep, '');\r\n value = parseFloat(value.replace(',', '.'));\r\n return typeof value === 'number' && !isNaN(value) ? value : null;\r\n }\r\n\r\n formatViewValue(value) {\r\n let standard = '0,';\r\n standard = standard.padEnd(+this.decimal + 2, '0');\r\n const isDeletingZero = this.beforeViewValue === (standard) && value.length < this.beforeViewValue.length;\r\n value = isDeletingZero ? '' : value;\r\n return this.floatPipe.transform(value, +this.decimal, this.noNegative);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (typeof this.min !== 'undefined' && control.value && this.format(control.value) < this.min) {\r\n return { min: true };\r\n }\r\n\r\n if (typeof this.max !== 'undefined' && control.value && this.format(control.value) > this.max) {\r\n return { max: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.input = true;\r\n this.beforeViewValue = rawValue;\r\n this.renderViaInput(rawValue);\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { UiElement } from '../utils/providers/element.provider';\r\n\r\n/**\r\n * TODO: Persist tooltip.\r\n * */\r\n@Directive({\r\n selector: '[uiTooltip]'\r\n})\r\nexport class TooltipDirective implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() uiTooltip: string;\r\n @Input() top: boolean;\r\n @Input() left: boolean;\r\n @Input() right: boolean;\r\n @Input() bottom: boolean;\r\n\r\n onShow: Function;\r\n onHide: Function;\r\n wrap: HTMLElement;\r\n class: string;\r\n\r\n constructor(private element: ElementRef) {\r\n this.onShow = (event) => {\r\n this.show(event);\r\n };\r\n this.onHide = () => {\r\n this.hide();\r\n };\r\n\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.top && !this.left && !this.right) {\r\n this.bottom = true;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n UiElement.on(this.element.nativeElement, 'mouseenter', this.onShow);\r\n UiElement.on(this.element.nativeElement, 'mouseleave', this.onHide);\r\n }\r\n\r\n ngOnDestroy() {\r\n UiElement.off(this.element.nativeElement, 'mouseenter', this.onShow);\r\n UiElement.off(this.element.nativeElement, 'mouseleave', this.onHide);\r\n this.hide();\r\n }\r\n\r\n setClass() {\r\n if (this.top) {\r\n this.class = 'top';\r\n }\r\n if (this.left) {\r\n this.class = 'left';\r\n }\r\n if (this.right) {\r\n this.class = 'right';\r\n }\r\n if (this.bottom) {\r\n this.class = 'bottom';\r\n }\r\n\r\n }\r\n\r\n show(event) {\r\n if (!this.uiTooltip) {\r\n return;\r\n }\r\n\r\n this.setClass();\r\n\r\n this.wrap = document.createElement('div');\r\n this.wrap.classList.add('wrap-tooltip', this.class);\r\n this.wrap.innerText = this.uiTooltip;\r\n\r\n document.body.appendChild(this.wrap);\r\n const elementPosition = UiElement.position(this.element.nativeElement);\r\n let positionLeft: number;\r\n let positionTop: number;\r\n\r\n if (this.top || this.bottom) {\r\n positionLeft = (elementPosition.left + this.element.nativeElement.clientWidth / 2) - (this.wrap.clientWidth / 2);\r\n\r\n positionLeft = positionLeft > 0 ? positionLeft : 0;\r\n positionTop = elementPosition.top;\r\n\r\n const checkHeight = window.innerHeight - 32 >= this.element.nativeElement.clientHeight + positionTop;\r\n\r\n if (this.bottom && checkHeight) {\r\n positionTop += this.element.nativeElement.clientHeight;\r\n } else {\r\n positionTop -= this.wrap.clientHeight;\r\n }\r\n }\r\n\r\n if (this.left || this.right) {\r\n positionTop = (elementPosition.top + this.element.nativeElement.clientHeight / 2) - (this.wrap.clientHeight / 2);\r\n positionLeft = elementPosition.left;\r\n\r\n if (this.left && positionLeft >= this.wrap.clientWidth) {\r\n positionLeft -= this.wrap.clientWidth;\r\n } else {\r\n positionLeft += this.element.nativeElement.clientWidth;\r\n }\r\n }\r\n\r\n UiElement.css(this.wrap, 'left', `${Math.round(positionLeft)}px`);\r\n UiElement.css(this.wrap, 'top', `${Math.round(positionTop)}px`);\r\n\r\n setTimeout(() => this.wrap && this.wrap.classList.add('show'));\r\n }\r\n\r\n hide() {\r\n if (!this.wrap) {\r\n return;\r\n }\r\n this.wrap.classList.add('hide');\r\n const tooltips = Array.from(document.querySelectorAll('.wrap-tooltip'));\r\n tooltips.forEach(\r\n tooltip => tooltip.remove()\r\n );\r\n }\r\n}\r\n","import {AfterViewInit, Component, forwardRef, Inject, Input, OnChanges, OnInit} from '@angular/core';\r\nimport {UiChosenComponent} from '../chosen.component';\r\n\r\n@Component({\r\n selector: 'ui-chosen-option',\r\n templateUrl: './chosen-option.component.html',\r\n styleUrls: ['./chosen-option.component.scss']\r\n})\r\nexport class UiChosenOptionComponent implements AfterViewInit, OnChanges {\r\n\r\n @Input() label;\r\n @Input() value;\r\n @Input() disabled;\r\n\r\n active: boolean;\r\n hidden: boolean;\r\n\r\n constructor(@Inject(forwardRef(() => UiChosenComponent)) private parent: any) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.parent.loadOption(this);\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (this.active && changes.label && !changes.label.firstChange) {\r\n this.label = changes.label.currentValue;\r\n\r\n this.parent.updateOptionLabel(this.label);\r\n }\r\n }\r\n\r\n onSelect() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.parent.select(this);\r\n }\r\n\r\n setActive(active) {\r\n this.active = active;\r\n }\r\n}\r\n","import {Component, ContentChildren, Input, OnInit, QueryList} from '@angular/core';\r\nimport {UiChosenOptionComponent} from '../chosen-option/chosen-option.component';\r\n\r\n@Component({\r\n selector: 'ui-chosen-group',\r\n templateUrl: './chosen-group.component.html',\r\n styleUrls: ['./chosen-group.component.scss']\r\n})\r\nexport class UiChosenGroupComponent implements OnInit {\r\n\r\n @Input() label: string;\r\n\r\n @ContentChildren(UiChosenOptionComponent) options: QueryList<UiChosenOptionComponent>;\r\n\r\n hidden: boolean;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","// @ts-ignore\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nimport { unaccent } from '../utils/functions/unaccent';\r\nimport { UiElement } from '../utils/providers/element.provider';\r\nimport { UiChosenGroupComponent } from './chosen-group/chosen-group.component';\r\nimport { UiChosenOptionComponent } from './chosen-option/chosen-option.component';\r\n\r\n// TODO: Animation\r\n// TODO: Export render, open, close\r\n\r\n@Component({\r\n selector: 'ui-chosen',\r\n templateUrl: './chosen.component.html',\r\n styleUrls: ['./chosen.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: UiChosenComponent,\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiChosenComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UiChosenComponent\r\n implements OnInit, AfterViewInit, OnChanges, AfterContentInit {\r\n viewRef: any;\r\n value: any;\r\n focused: boolean;\r\n searchText: string;\r\n isMobile: boolean;\r\n control: any;\r\n\r\n @Input() search: any;\r\n @Input() ngModel: any;\r\n @Input() required: boolean;\r\n @Input() disabled: boolean;\r\n @Input() placeholder: string;\r\n @Input() persistPlaceholder: string;\r\n\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @ViewChild('optionTemplate', { static: true }) optionTemplate: TemplateRef<any>;\r\n @ViewChild('inputSearch') inputSearch: ElementRef;\r\n @ViewChild('nativeSelect') nativeSelect: ElementRef;\r\n\r\n /**\r\n * O param 'descendants' fala para o @ContentChildren pegar todos components UiChosenOptionComponent\r\n * mesmo que eles estejam dentro de outros components(UiChosenGroupComponent)\r\n */\r\n @ContentChildren(UiChosenOptionComponent, { descendants: true })\r\n options: QueryList<UiChosenOptionComponent>;\r\n\r\n // Pegando os options que foram colocados sem o group\r\n @ContentChildren(UiChosenOptionComponent) onlyOptions: QueryList<\r\n UiChosenOptionComponent\r\n >;\r\n\r\n @ContentChildren(UiChosenGroupComponent, { descendants: true })\r\n optionsGroup: QueryList<UiChosenGroupComponent>;\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private viewContainerRef: ViewContainerRef,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {\r\n this.element.nativeElement.setAttribute(\r\n 'tabindex',\r\n this.element.nativeElement.getAttribute('tabindex') || '0'\r\n );\r\n\r\n UiElement.on(window, 'resize scroll', () => {\r\n this.close();\r\n });\r\n\r\n if (/Mobi|Android/.test(navigator.userAgent)) {\r\n this.isMobile = true;\r\n\r\n this.element.nativeElement.classList.add('mobile');\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (\r\n !isNullOrUndefined(changes.ngModel) &&\r\n !changes.ngModel.firstChange\r\n ) {\r\n this.setValue(changes.ngModel.currentValue);\r\n }\r\n\r\n if (changes.required && !changes.required.firstChange) {\r\n this.required = changes.required.currentValue;\r\n }\r\n\r\n if (changes.disabled) {\r\n this.disabled = changes.disabled.currentValue;\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n if (!isNullOrUndefined(this.ngModel)) {\r\n setTimeout(() => this.setValue(this.ngModel));\r\n }\r\n }\r\n writeValue() {}\r\n\r\n registerOnChange() {}\r\n\r\n registerOnTouched() {}\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (this.required && !control.value && control.value !== 0) {\r\n return { required: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n if (this.isMobile) {\r\n this.nativeSelect.nativeElement.focus();\r\n return;\r\n }\r\n\r\n if (this.focused) {\r\n return;\r\n }\r\n\r\n if (this.disabled) {\r\n this.element.nativeElement.blur();\r\n return;\r\n }\r\n\r\n this.clearFilter();\r\n\r\n if (this.search) {\r\n setTimeout(() => this.inputSearch.nativeElement.focus(), 100);\r\n }\r\n\r\n this.focused = true;\r\n\r\n const position = UiElement.position(this.element.nativeElement);\r\n const coordinate = {\r\n x: position.left,\r\n y: position.top + this.element.nativeElement.clientHeight\r\n };\r\n\r\n this.render(coordinate);\r\n }\r\n\r\n render(coordinate) {\r\n this.viewRef = this.viewContainerRef.createEmbeddedView(\r\n this.optionTemplate\r\n );\r\n this.viewRef.detectChanges();\r\n\r\n this.viewRef.rootNodes.forEach(rootNode => {\r\n document.body.appendChild(rootNode);\r\n\r\n if (\r\n rootNode.clientWidth &&\r\n !rootNode.classList.contains('wrap-chosen-overlay')\r\n ) {\r\n this.open(rootNode, coordinate);\r\n }\r\n });\r\n }\r\n\r\n open(element, coordinate) {\r\n element.style.top = 0;\r\n\r\n setTimeout(() => {\r\n const verticalCoveringArea =\r\n UiElement.position(this.element.nativeElement, true).top +\r\n element.clientHeight;\r\n const bodyHeight = document.body.clientHeight;\r\n\r\n if (verticalCoveringArea + this.element.nativeElement.clientHeight > bodyHeight) {\r\n coordinate.y -=\r\n verticalCoveringArea -\r\n bodyHeight +\r\n this.element.nativeElement.clientHeight;\r\n }\r\n\r\n if (coordinate.y <= 0) {\r\n coordinate.y = 0;\r\n }\r\n\r\n const content = element.querySelector('ui-card > .content');\r\n const contentHeight = content.clientHeight;\r\n\r\n const search = element.querySelector('ui-card > .search');\r\n const searchHeight = search ? search.clientHeight : 0;\r\n\r\n content.style.maxHeight =\r\n (contentHeight > bodyHeight\r\n ? bodyHeight - searchHeight\r\n : contentHeight) + 'px';\r\n\r\n element.style.transform = '';\r\n element.style.top = coordinate.y + 'px';\r\n element.style.left = coordinate.x + 'px';\r\n\r\n const card = element.querySelector('ui-card');\r\n card.style.maxHeight = window.innerHeight + 'px';\r\n card.style.maxWidth = window.innerWidth - 16 + 'px';\r\n card.style.width = this.element.nativeElement.clientWidth + 'px';\r\n\r\n element.classList.add('open');\r\n });\r\n }\r\n\r\n close() {\r\n this.focused = false;\r\n\r\n if (this.viewContainerRef.length) {\r\n const viewRef = this.viewRef; // Salvando a referência para achar o index deste componente\r\n\r\n viewRef.rootNodes.forEach(rootNode => {\r\n if (rootNode.classList) {\r\n rootNode.classList.remove('open');\r\n }\r\n });\r\n\r\n setTimeout(\r\n () =>\r\n this.viewContainerRef.remove(\r\n this.viewContainerRef.indexOf(viewRef)\r\n ),\r\n 280\r\n );\r\n }\r\n }\r\n\r\n setValue(value) {\r\n let updated = false;\r\n\r\n this.options.map(option => {\r\n if (option.value != value) {\r\n // tslint:disable-line\r\n option.setActive(false);\r\n return;\r\n }\r\n\r\n updated = true;\r\n this.value = option.label;\r\n option.setActive(true);\r\n });\r\n\r\n if (!updated) {\r\n this.value = null;\r\n }\r\n\r\n this.element.nativeElement.value = this.value;\r\n }\r\n\r\n select(option) {\r\n this.control.markAsDirty();\r\n this.control.markAsTouched();\r\n this.ngModelChange.emit(option.value);\r\n this.close();\r\n }\r\n\r\n filterList() {\r\n this.options.map(option => {\r\n option.hidden = this.searchText\r\n ? !unaccent(option.label.toLowerCase()).includes(\r\n unaccent(this.searchText.toLowerCase())\r\n )\r\n : false;\r\n });\r\n\r\n this.optionsGroup.map(\r\n group =>\r\n (group.hidden =\r\n group.options.filter(option => !option.hidden).length === 0)\r\n );\r\n }\r\n\r\n clearFilter() {\r\n this.searchText = null;\r\n this.filterList();\r\n }\r\n\r\n changeNativeSelect() {\r\n setTimeout(() => {\r\n this.control.markAsDirty();\r\n this.control.markAsTouched();\r\n this.ngModelChange.emit(this.ngModel);\r\n });\r\n }\r\n\r\n trackByValue(index, option) {\r\n return option.value;\r\n }\r\n\r\n updateOptionLabel(label) {\r\n this.value = label;\r\n }\r\n\r\n loadOption(option: UiChosenOptionComponent) {\r\n if (!isNullOrUndefined(this.ngModel) && option.value === this.ngModel) {\r\n this.value = option.label;\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'uiCreditCard'\r\n})\r\nexport class UiCreditCardPipe implements PipeTransform {\r\n\r\n transform(value: string, args?: any) {\r\n if (!value) {\r\n return '';\r\n }\r\n\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n\r\n if (value.length > 4) {\r\n value = `${value.substring(0, 4)} ${value.substring(4)}`;\r\n }\r\n\r\n if (value.length > 9) {\r\n value = `${value.substring(0, 9)} ${value.substring(9)}`;\r\n }\r\n\r\n if(value.length > 14) {\r\n value = `${value.substring(0, 14)} ${value.substring(14)}`;\r\n }\r\n\r\n if(value.length > 19) {\r\n value = value.substring(0, 19);\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n","import { Directive, forwardRef, OnChanges, AfterViewInit, Input, EventEmitter, Output, ElementRef, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, Validator, FormControl } from '@angular/forms';\r\nimport { UiCreditCardPipe, UiElement } from '../../../smn-ui.module';\r\n\r\n@Directive({\r\n selector: '[uiMaskCreditCard][ngModel]',\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiMaskCreditCard),\r\n multi: true\r\n }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => UiMaskCreditCard),\r\n multi: true\r\n }, UiCreditCardPipe]\r\n})\r\nexport class UiMaskCreditCard implements ControlValueAccessor, Validator, AfterViewInit, OnChanges {\r\n loaded: boolean;\r\n beforeSelIndex;\r\n onChange: Function;\r\n onTouched: Function;\r\n control: FormControl;\r\n symbolsPositions: number[] = [4, 9, 14];\r\n @Input() ngModel: any;\r\n @Input() UiMaskCreditCard;\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(public elementRef: ElementRef, public creditCardPipe: UiCreditCardPipe, private changeDetector: ChangeDetectorRef) { }\r\n\r\n ngOnChanges(changes): void {\r\n if (!changes.ngModel.firstChange && (changes.ngModel.currentValue === null || changes.ngModel.currentValue === undefined)) {\r\n this.elementRef.nativeElement.value = '';\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.loaded = true;\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n if (this.control && this.loaded && rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n\r\n this.elementRef.nativeElement.value = this.creditCardPipe.transform(this.ngModel);\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n if (rawValue) {\r\n this.control.markAsDirty();\r\n }\r\n this.ngModel = this.format(rawValue);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.elementRef.nativeElement.value = this.creditCardPipe.transform(this.elementRef.nativeElement.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n format(value) {\r\n value = value.toString().replace(/[^0-9]+/g, '');\r\n return value.substring(0, 16);\r\n }\r\n\r\n validate(control: FormControl): { [key: string]: any } {\r\n this.control = control;\r\n\r\n if (control.value && this.format(control.value).length < 16) {\r\n return { parse: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n const method = isDisabled ? 'setAttribute' : 'removeAttribute';\r\n this.elementRef.nativeElement[method]('disabled', 'disabled');\r\n }\r\n\r\n @HostListener('keydown') onKeydown() {\r\n this.beforeSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n }\r\n\r\n @HostListener('input', ['$event']) onInput($event): void {\r\n const afterSelIndex = UiElement.caretPosition.get(this.elementRef.nativeElement);\r\n const rawValue: string = this.elementRef.nativeElement.value;\r\n this.renderViaInput(rawValue);\r\n UiElement.caretPosition.set(this.elementRef.nativeElement, this.beforeSelIndex, afterSelIndex, this.symbolsPositions);\r\n }\r\n}\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"ui-expansion-panel\",\r\n templateUrl: \"./expansion-panel.component.html\",\r\n styleUrls: [\"./expansion-panel.component.scss\"],\r\n animations: [\r\n trigger(\"expandAnimation\", [\r\n transition(\":enter\", [\r\n style({\r\n height: \"0\"\r\n }),\r\n animate(\r\n \"280ms cubic-bezier(0.0, 0.0, 0.2, 1)\",\r\n style({\r\n height: \"*\"\r\n })\r\n )\r\n ]),\r\n transition(\":leave\", [\r\n style({\r\n height: \"*\"\r\n }),\r\n animate(\r\n \"280ms cubic-bezier(0.0, 0.0, 0.2, 1)\",\r\n style({\r\n height: \"0\"\r\n })\r\n )\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class ExpansionPanelComponent implements OnInit {\r\n element: any;\r\n\r\n @Input() disabled: boolean;\r\n @Input() noArrow: boolean;\r\n @Input() label: string;\r\n @Input() description: string;\r\n @Input() color: string = 'primary';\r\n\r\n @Input() open: boolean;\r\n @Output() openChange: EventEmitter<boolean> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n toggle() {\r\n if (!this.disabled) {\r\n this.open = !this.open;\r\n this.openChange.emit(this.open);\r\n }\r\n }\r\n}\r\n","import {ContentChild, Directive, TemplateRef} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[uiTabContent]'\r\n})\r\nexport class UiTabContentDirective {\r\n @ContentChild(TemplateRef) template: TemplateRef<any>;\r\n\r\n constructor() { }\r\n}\r\n","import {ContentChild, Directive, TemplateRef} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[uiTabLabel]'\r\n})\r\nexport class UiTabLabelDirective {\r\n @ContentChild(TemplateRef) template: TemplateRef<any>;\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport {UiTabContentDirective} from './tab-content.directive';\r\nimport {UiTabLabelDirective} from './tab-label.directive';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ui-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrls: ['./tab.component.scss']\r\n})\r\nexport class UiTabComponent implements OnInit, OnDestroy {\r\n @ViewChild('tabContent', { static: true }) tabContent: TemplateRef<any>;\r\n @ContentChild(UiTabContentDirective) templateContent: UiTabContentDirective;\r\n @ContentChild(UiTabLabelDirective) templateLabel: UiTabLabelDirective;\r\n @Input() label: string;\r\n @Input() icon: string;\r\n @Input() disabled: string;\r\n private subscription: Subscription;\r\n isActive: boolean;\r\n index: number;\r\n indexActivatedTab: number;\r\n tabChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n loaded: boolean;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private changeDetectorRef: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.subscription = this.tabChange.subscribe(value => {\r\n if (value) {\r\n this.loaded = true;\r\n }\r\n this.isActive = value;\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n}\r\n","import {AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnInit} from '@angular/core';\r\nimport {UiTabComponent} from '../tab.component';\r\nimport {UiElement} from '../../utils/providers/element.provider';\r\n\r\n@Component({\r\n selector: 'ui-tab-header',\r\n templateUrl: './tab-header.component.html',\r\n styleUrls: ['./tab-header.component.scss']\r\n})\r\nexport class UiTabHeaderComponent implements OnInit, AfterViewInit, AfterViewChecked {\r\n @Input() topIcon: boolean;\r\n\r\n tabsContainer: HTMLElement;\r\n inkBar: HTMLElement;\r\n showInkBar: boolean;\r\n increment: number;\r\n hasRightScroll: boolean;\r\n hasLeftScroll: boolean;\r\n\r\n constructor(private element: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\r\n this.increment = 90;\r\n }\r\n\r\n ngOnInit() {\r\n this.tabsContainer = this.element.nativeElement.querySelector('.tabs-container');\r\n this.inkBar = this.element.nativeElement.querySelector('.ink-bar');\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.inkBar.addEventListener('transitionend', () => {\r\n this.showInkBar = false;\r\n });\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.hasRightScroll = this.checkRightScroll();\r\n this.hasLeftScroll = this.checkLeftScroll();\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Move o ink bar para a tab que está ativa\r\n **/\r\n moveInkBarTo(tabRef: HTMLElement) {\r\n this.showInkBar = true;\r\n this.changeDetectorRef.detectChanges();\r\n\r\n setTimeout(() => {\r\n UiElement.css(this.inkBar, 'left', `${tabRef.offsetLeft}px`);\r\n UiElement.css(this.inkBar, 'width', `${tabRef.clientWidth}px`);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna se o scroll left ja saiu da posição 0\r\n * */\r\n checkLeftScroll() {\r\n return this.tabsContainer.scrollLeft > 0;\r\n }\r\n\r\n /**\r\n * Retorna se deve exibir o control da direita\r\n * */\r\n checkRightScroll() {\r\n const widthWithScroll = this.tabsContainer.scrollLeft + this.tabsContainer.clientWidth;\r\n return widthWithScroll < this.tabsContainer.scrollWidth;\r\n }\r\n\r\n /**\r\n * Altera o valor do scroll\r\n **/\r\n updateScroll(value: number) {\r\n const scrollLeft = this.tabsContainer.scrollLeft;\r\n UiElement.animate(\r\n this.tabsContainer,\r\n 'borderSpacing',\r\n scrollLeft,\r\n scrollLeft + value,\r\n 280,\r\n null,\r\n (tick) => {\r\n this.tabsContainer.scrollLeft = tick;\r\n });\r\n }\r\n}\r\n","import {animate, AnimationTriggerMetadata, state, style, transition, trigger} from '@angular/animations';\r\n\r\nconst timing = 280;\r\nexport const tabFakeAnimation: AnimationTriggerMetadata = trigger('tabFakeAnimation',\r\n [\r\n transition(':enter', animate(`${timing}ms cubic-bezier(0.0, 0.0, 0.2, 1)`)),\r\n transition(':leave', animate(`${timing}ms cubic-bezier(0.0, 0.0, 0.2, 1)`)),\r\n ]\r\n);\r\n\r\nexport const tabTransform: AnimationTriggerMetadata = trigger('tabTransform',\r\n [\r\n state('left', style({\r\n transform: 'translateX(-100%)',\r\n position: 'absolute'\r\n })),\r\n state('right', style({\r\n transform: 'translateX(100%)',\r\n position: 'absolute'\r\n })),\r\n state('active', style({\r\n transform: 'translateX(0)',\r\n position: 'relative'\r\n })),\r\n transition('left <=> right', animate(timing)),\r\n transition('active <=> right', animate(timing)),\r\n transition('left <=> active', animate(timing)),\r\n ]\r\n);\r\n","import {\r\n AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, Input, QueryList, ViewChild\r\n} from '@angular/core';\r\nimport {UiTabComponent} from '../tab.component';\r\nimport {UiTabHeaderComponent} from '../header/tab-header.component';\r\nimport {AnimationEvent} from '@angular/animations';\r\nimport {tabFakeAnimation, tabTransform} from './tab-group.animation';\r\n\r\n@Component({\r\n selector: 'ui-tab-group',\r\n templateUrl: './tab-group.component.html',\r\n styleUrls: ['./tab-group.component.scss'],\r\n animations: [tabFakeAnimation, tabTransform]\r\n})\r\nexport class UiTabGroupComponent implements AfterViewInit {\r\n @ContentChildren(UiTabComponent) tabsQueryList: QueryList<UiTabComponent>;\r\n @ViewChild(UiTabHeaderComponent, { static: true }) tabHeader: UiTabHeaderComponent;\r\n @ViewChild('tabsContentElement', { static: true }) tabsContentElement: ElementRef;\r\n @Input() active: number;\r\n @Input() fillBackground: boolean;\r\n @Input() themeInkBar: boolean;\r\n @Input() accent: boolean;\r\n @Input() topIcon: boolean;\r\n @Input() lazyLoad: boolean;\r\n\r\n tabs: any[];\r\n activatedTab: UiTabComponent;\r\n animation: boolean;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef, private element: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Transformando a QueryList em um array de component(UiTabComponent)\r\n this.tabs = this.tabsQueryList.toArray();\r\n this.changeDetectorRef.detectChanges();\r\n this.generateIndexes();\r\n\r\n // Ativa uma tab através do index passado com Input ou a primeira tab\r\n const tab = this.getFirstTab(this.active);\r\n this.activateTab(tab, this.getTabRef(tab));\r\n this.animation = true;\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.tabsQueryList.changes.subscribe(newTabs => {\r\n this.tabs = newTabs.toArray();\r\n this.generateIndexes();\r\n\r\n // Verificando se a tab selecionada foi removida da lista\r\n if (!this.tabs.includes(this.activatedTab)) {\r\n // Ativando a tab que ficou no mesmo index da última tab ativa\r\n // TODO: Procurar uma tab que não esteja desabilitada\r\n const newTab = this.tabs[this.activatedTab.index] || this.tabs[this.tabs.length - 1];\r\n this.activateTab(newTab, this.getTabRef(newTab));\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Atribuí os index para as tabs\r\n **/\r\n generateIndexes() {\r\n this.tabs.map((tab, index) => tab.index = index);\r\n }\r\n\r\n /**\r\n * Retorna a primeira tab que não está desabilitada\r\n **/\r\n getFirstTab (tabIndex: number) {\r\n if (typeof tabIndex === 'number' && !this.tabs[tabIndex].disabled) {\r\n return this.tabs[tabIndex];\r\n }\r\n\r\n for (let i = 0; i < this.tabs.length; i++) {\r\n const tab = this.tabs[i];\r\n if (!tab.disabled) {\r\n return tab;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retorna a refencia da tab em HTML\r\n **/\r\n getTabRef (tab: UiTabComponent) {\r\n const tabsRef = this.element.nativeElement.querySelectorAll('.tab');\r\n return tabsRef ? tabsRef[tab.index] : null;\r\n }\r\n\r\n /**\r\n * Ativa uma tab\r\n * */\r\n activateTab(tab: UiTabComponent, tabRef: HTMLElement) {\r\n if (tab.disabled || tab === this.activatedTab) {\r\n return;\r\n }\r\n\r\n if (this.activatedTab) {\r\n this.activatedTab.tabChange.emit(false);\r\n }\r\n this.tabsContentElement.nativeElement.style.height = this.tabsContentElement.nativeElement.clientHeight + 'px';\r\n\r\n tab.tabChange.emit(true);\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.activatedTab = tab;\r\n\r\n this.tabHeader.moveInkBarTo(tabRef);\r\n this.updateActivatedTab();\r\n }\r\n\r\n /**\r\n * Altera em todos components(UiTabComponent) o index da nova tab ativada\r\n **/\r\n updateActivatedTab() {\r\n this.tabs.map(tab => tab.indexActivatedTab = this.activatedTab.index);\r\n }\r\n\r\n /**\r\n * Callback para quando a animação do conteúdo da tab iniciar\r\n * */\r\n startTranslateAnimation(event: AnimationEvent) {\r\n if (event.toState === 'active') {\r\n this.tabsContentElement.nativeElement.style.height = event.element.scrollHeight + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Callback para quando a animação do conteúdo da tab terminar\r\n * */\r\n doneTranslateAnimation(event: AnimationEvent) {\r\n this.tabsContentElement.nativeElement.style.height = '';\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-label-content',\r\n templateUrl: './label-content.component.html',\r\n styleUrls: ['./label-content.component.scss']\r\n})\r\nexport class UiLabelContentComponent {\r\n @Input() label: string;\r\n @Input() content: string;\r\n}\r\n","import { EventEmitter, Input, Output, Directive } from '@angular/core';\r\nimport { UiSnackbar } from '../smn-ui.module';\r\n\r\n\r\n@Directive()\r\nexport abstract class Upload {\r\n\r\n @Input() accept: string;\r\n @Input() multiple: boolean;\r\n @Input() disabled: boolean;\r\n @Input() max: number;\r\n\r\n\r\n @Output() ngModelChange: EventEmitter<any>;\r\n @Output() remove: EventEmitter<any>;\r\n\r\n maxLength: number;\r\n ngModel: any;\r\n modelConfig: any;\r\n maxFileSize: string;\r\n\r\n\r\n readFile(file, base64) {\r\n if (!this.multiple) {\r\n this.max = 1;\r\n }\r\n\r\n if (this.max && this.ngModel.length === this.max) {\r\n return;\r\n }\r\n\r\n if (this.maxLength && file.name.length > this.maxLength) {\r\n UiSnackbar.show({\r\n text: `Arquivo \"${file.name}\" não pode ultrapassar ${this.maxLength} caracteres.`\r\n });\r\n return;\r\n }\r\n\r\n const modelFile: any = {};\r\n let isDuplicated: boolean = false;\r\n modelFile[this.modelConfig.name] = file.name;\r\n modelFile[this.modelConfig.base64] = base64;\r\n\r\n this.ngModel.forEach((file) => {\r\n if (modelFile.name === file.name) {\r\n isDuplicated = true;\r\n UiSnackbar.show({\r\n text: `Já existe o arquivo \"${file.name}\".`,\r\n duration: 4000\r\n });\r\n return;\r\n }\r\n });\r\n\r\n if (isDuplicated) {\r\n return;\r\n }\r\n\r\n\r\n this.ngModel.push(modelFile);\r\n this.ngModelChange.emit(this.ngModel);\r\n\r\n\r\n }\r\n\r\n errorFile(file, error) {\r\n if (error.type) {\r\n const accept = this.accept.toUpperCase().split(',');\r\n UiSnackbar.hide();\r\n UiSnackbar.show({\r\n text: 'Você pode selecionar apenas arquivo' + (accept.length == 1\r\n ? ` do tipo ${accept[0]}`\r\n : `s dos tipos ${accept.join(', ')}`) + '.'\r\n });\r\n }\r\n if (error.maxFileSize) {\r\n UiSnackbar.hide();\r\n UiSnackbar.show({\r\n text: `Use arquivos menores que ${this.maxFileSize}.`\r\n });\r\n }\r\n }\r\n\r\n removeFile(file, index) {\r\n this.ngModel.splice(index, 1);\r\n this.ngModelChange.emit(this.ngModel);\r\n this.remove.emit({file, index});\r\n }\r\n\r\n filesChange(files) {\r\n if (this.max && (this.ngModel.length + files.length) > this.max) {\r\n UiSnackbar.hide();\r\n UiSnackbar.show({\r\n text: `Você pode selecionar apenas ${this.max} arquivo${this.max > 1 ? 's' : ''}.`\r\n });\r\n }\r\n }\r\n\r\n getFileName(file) {\r\n return file[this.modelConfig.name];\r\n }\r\n}\r\n","import {animate, style, transition, trigger} from '@angular/animations';\r\n\r\nexport const enterLeaveViewAnimation = trigger(\r\n 'enterLeaveViewAnimation',\r\n // Default é 280ms de transição.\r\n [\r\n transition(\r\n ':enter', [\r\n style({\r\n height: '0',\r\n transform: 'scale(0.8) translateY(-16px)',\r\n opacity: 0\r\n }),\r\n animate('550ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n height: '*',\r\n transform: 'scale(1) translateY(0)',\r\n opacity: 1\r\n }))\r\n ]\r\n ),\r\n transition(\r\n ':leave', [\r\n style({\r\n height: '*',\r\n transform: 'scale(1) translateY(0)',\r\n opacity: 1\r\n }),\r\n animate('550ms cubic-bezier(0.0, 0.0, 0.2, 1)', style({\r\n height: '0',\r\n transform: 'scale(0.8) translateY(-16px)',\r\n opacity: 0\r\n }))\r\n ]\r\n )]\r\n);\r\n","import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n Input,\r\n forwardRef,\r\n Output,\r\n EventEmitter,\r\n HostListener,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Upload } from './upload';\r\nimport { enterLeaveViewAnimation } from '../utils/animations/enter-leave-view.animations';\r\n\r\n\r\n@Component({\r\n selector: 'ui-upload',\r\n templateUrl: './upload.component.html',\r\n styleUrls: ['./upload.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UiUploadComponent),\r\n multi: true\r\n }],\r\n animations: [enterLeaveViewAnimation]\r\n})\r\nexport class UiUploadComponent extends Upload implements OnInit, OnChanges {\r\n\r\n @ViewChild('inputFileRef') inputFileRef;\r\n\r\n @Input() ngModel: any;\r\n @Input() modelConfig: any;\r\n @Input() message: string;\r\n @Input() max: number;\r\n @Input() maxLength: number;\r\n @Input() maxSize: string;\r\n @Input() maxFileSize: string;\r\n @Input() multiple: boolean;\r\n @Input() disabled: boolean;\r\n\r\n @Output() ngModelChange: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() remove: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n model: any;\r\n isDragging: boolean;\r\n\r\n constructor() {\r\n super();\r\n this.readFile = this.readFile.bind(this);\r\n this.errorFile = this.errorFile.bind(this);\r\n }\r\n\r\n ngOnInit() {\r\n this.modelConfig = {\r\n name: 'name',\r\n base64: 'base64',\r\n ...this.modelConfig\r\n };\r\n }\r\n\r\n ngOnChanges(changes) {\r\n if (changes.ngModel) {\r\n this.ngModel = changes.ngModel.currentValue && Array.isArray(changes.ngModel.currentValue) ? changes.ngModel.currentValue : [];\r\n }\r\n\r\n if (changes.modelConfig) {\r\n this.modelConfig = {\r\n name: 'name',\r\n base64: 'base64',\r\n ...changes.modelConfig.currentValue\r\n };\r\n }\r\n }\r\n\r\n writeValue(rawValue: any): void {\r\n }\r\n\r\n renderViaInput(rawValue: any): void {\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n @HostListener('dragenter', ['$event']) onDragEnter(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.isDragging = true;\r\n }\r\n\r\n @HostListener('dragover', ['$event']) onDragOver(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.isDragging = true;\r\n event.dataTransfer.dropEffect = 'copy';\r\n }\r\n\r\n @HostListener('dragleave', ['$event']) onDragLeave(event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.isDragging = false;\r\n }\r\n\r\n @HostListener('drop', ['$event']) onDrop(event) {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragging = false;\r\n\r\n const {files} = event.dataTransfer;\r\n this.inputFileRef.readFiles(files);\r\n }\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport './button/button.service';\r\nimport { debounce } from './utils/functions/debounce';\r\nimport { unaccent } from './utils/functions/unaccent';\r\nimport { UiAddCalendarDirective } from './calendar/add-calendar.directive';\r\nimport { UiCalendarComponent } from './calendar/calendar.component';\r\nimport { UiCalendarContentComponent } from './calendar/calendar-content.component';\r\nimport { UiCapitalizePipe } from './utils/pipes/capitalize.pipe';\r\nimport { UiColor } from './utils/providers/color.provider';\r\nimport { UiCookie } from './utils/providers/cookie.provider';\r\nimport { UiDataTableOrderByDirective } from './data-table/order-by.directive';\r\nimport { UiDatePickerCallerDirective } from './date-picker/date-picker-caller.directive';\r\nimport { UiDatePickerDirective } from './date-picker/date-picker.directive';\r\nimport { UiDatetimeService } from './calendar/datetime.service';\r\nimport { UiDialogComponent } from './dialog/dialog.component';\r\nimport { UiDialogTriggerDirective } from './dialog/dialog-trigger.directive';\r\nimport { UiElement } from './utils/providers/element.provider';\r\nimport { UiElementRef } from './utils/providers/element-ref.provider';\r\nimport { UiInputContainerComponent } from './input/input-container.component';\r\nimport { UiInputDirective } from './input/input.directive';\r\nimport { UiMaxlengthDirective } from './utils/validators/maxlength.directive';\r\nimport { UiMenuComponent } from './menu/menu.component';\r\nimport { UiMenuTriggerDirective } from './menu/menu-trigger.directive';\r\nimport { UiNavDrawerComponent } from './nav-drawer/nav-drawer.component';\r\nimport { UiOptionComponent } from './selection-control/option/option.component';\r\nimport { UiProgressRadialComponent } from './progress/radial/progress-radial.component';\r\nimport { UiReferencesService } from './date-picker/references.service';\r\nimport { UiRippleDirective } from './ripple/ripple.directive';\r\nimport { UiSmartListComponent } from './smart-list/smart-list.component';\r\nimport { UiSmartListItemComponent } from './smart-list/item/item.component';\r\nimport { UiSnackbarComponent } from './snackbar/snackbar.component';\r\nimport { UiSnackbarContainerComponent } from './snackbar/snackbar-container.component';\r\nimport { UiSnackbar } from './snackbar/snackbar.provider';\r\nimport { UiSwitchComponent } from './selection-control/switch/switch.component';\r\nimport { UiToolbarComponent } from './toolbar/toolbar.component';\r\nimport { UiToolbarService } from './toolbar/toolbar.service';\r\nimport { UiWindowRef } from './utils/providers/window.provider';\r\nimport { UiMaskDateDirective } from './utils/masks/date/mask-date.directive';\r\nimport { UiTimeAgoPipe } from './utils/pipes/time-ago.pipe';\r\nimport { UiListItemDirective } from './list/list-item.directive';\r\nimport { UiMaskCpfDirective } from './utils/masks/cpf/mask-cpf.directive';\r\nimport { UiCpfPipe } from './utils/masks/cpf/cpf.pipe';\r\nimport { UiMaskCnpjDirective } from './utils/masks/cnpj/mask-cnpj.directive';\r\nimport { UiCnpjPipe } from './utils/masks/cnpj/cnpj.pipe';\r\nimport { UiMaskCnpjNovoDirective } from './utils/masks/cnpj-novo/mask-cnpj-novo.directive';\r\nimport { UiCnpjNovoPipe } from './utils/masks/cnpj-novo/cnpj-novo.pipe';\r\nimport { UiMaskCepDirective } from './utils/masks/cep/mask-cep.directive';\r\nimport { UiCepPipe } from './utils/masks/cep/cep.pipe';\r\nimport { UiMaskCepNovoDirective } from './utils/masks/cep-novo/mask-cep-novo.directive';\r\nimport { UiCepNovoPipe } from './utils/masks/cep-novo/cep-novo.pipe';\r\nimport { UiPhonePipe } from './utils/masks/phone/phone.pipe';\r\nimport { UiMaskPhoneDirective } from './utils/masks/phone/mask-phone.directive';\r\nimport { UiListComponent } from './list/list.component';\r\nimport { UiListItemsComponent } from './list/items/items.component';\r\nimport { UiListItemComponent } from './list/item/item.component';\r\nimport { UiSliderComponent } from './slider/slider.component';\r\nimport { UiSliderMultiHandleComponent } from './slider/slider-multi-handle.component';\r\nimport { UiInfiniteLoadDirective } from './utils/infinite-load/infinite-load.directive';\r\nimport { UiInfiniteLoadService } from './utils/infinite-load/infinite-load.service';\r\nimport { UiAutocompleteDirective } from './autocomplete/autocomplete.directive';\r\nimport { UiAutocompleteComponent } from './autocomplete/autocomplete.component';\r\nimport { UiMaskIntegerDirective } from './utils/masks/integer/mask-integer.directive';\r\nimport { UiTabsComponent } from './old-tabs/tabs.component';\r\nimport { UiTabsPagesComponent } from './old-tabs/pages/tabs-pages.component';\r\nimport { UiLazyLoadDirective } from './lazy-load/lazy-load.directive';\r\nimport { UiDataTableComponent } from './data-table/data-table.component';\r\nimport { UiBottomSheetComponent } from './bottom-sheet/bottom-sheet.component';\r\nimport { UiBottomSheetTriggerDirective } from './bottom-sheet/bottom-sheet.directive';\r\nimport { UiInputFileDirective } from './input/input-file.directive';\r\nimport { UiEllipsisDirective } from './ellipsis/ellipsis.directive';\r\nimport { UiRequiredDirective } from './utils/validators/required.directive';\r\nimport { UiColorPickerComponent } from './color-picker/color-picker.component';\r\nimport { UiColorPickerDirective } from './color-picker/color-picker.directive';\r\nimport { UiInputAutosizeDirective } from './input/autosize.directive';\r\nimport { UiClockComponent } from './clock/clock.component';\r\nimport { UiTimePickerService } from './time-picker/time-picker.service';\r\nimport { UiTimePickerDirective } from './time-picker/time-picker.directive';\r\nimport { UiTimePickerCallerDirective } from './time-picker/time-picker-caller.directive';\r\nimport { UiTimePipe } from './utils/masks/time/time.pipe';\r\nimport { UiMaskTimeDirective } from './utils/masks/time/mask-time.directive';\r\nimport { UiMaskCurrencyDirective } from './utils/masks/currency/mask-currency.directive';\r\nimport { UiCurrencyPipe } from './utils/masks/currency/currency.pipe';\r\nimport { UiDialog } from './dialog/dialog.service';\r\nimport { UiSelectComponent } from './select/select.component';\r\nimport { UiSelectOptionComponent } from './select/option/option.component';\r\nimport { UiSelectFilterPipe } from './select/select-filter.pipe';\r\nimport { UiFilterPipe } from './utils/pipes/filter.pipe';\r\nimport { UiAvatarComponent } from './avatar/avatar.component';\r\nimport { UiMaskFloatDirective } from './utils/masks/float/mask-float.directive';\r\nimport { TooltipDirective } from './tooltip/tooltip.directive';\r\nimport { UiChosenComponent } from './chosen/chosen.component';\r\nimport { UiChosenOptionComponent } from './chosen/chosen-option/chosen-option.component';\r\nimport { UiChosenGroupComponent } from './chosen/chosen-group/chosen-group.component';\r\nimport { UiCreditCardPipe } from './utils/masks/credit-card/credit-card.pipe';\r\nimport { UiMaskCreditCard } from './utils/masks/credit-card/credit-card-mask.directive';\r\nimport { ExpansionPanelComponent } from './expansion-panel/expansion-panel.component';\r\nimport { UiFloatPipe } from './utils/masks/float/float.pipe';\r\nimport { UiTabComponent } from './tab/tab.component';\r\nimport { UiTabGroupComponent } from './tab/group/tab-group.component';\r\nimport { UiTabContentDirective } from './tab/tab-content.directive';\r\nimport { UiTabLabelDirective } from './tab/tab-label.directive';\r\nimport { UiTabHeaderComponent } from './tab/header/tab-header.component';\r\nimport { UiLabelContentComponent } from './label-content/label-content.component';\r\nimport { UiUploadComponent } from './upload/upload.component';\r\n\r\nexport {\r\n debounce,\r\n unaccent,\r\n UiColor,\r\n UiCookie,\r\n UiElement,\r\n UiElementRef,\r\n UiSnackbar,\r\n UiToolbarService,\r\n UiWindowRef,\r\n UiCpfPipe,\r\n UiCnpjPipe,\r\n UiCnpjNovoPipe,\r\n UiCepPipe,\r\n UiCepNovoPipe,\r\n UiPhonePipe,\r\n UiInfiniteLoadService,\r\n UiDatetimeService,\r\n UiTimePipe,\r\n UiCurrencyPipe,\r\n UiMaskPhoneDirective,\r\n UiDialog,\r\n UiFilterPipe,\r\n UiCreditCardPipe,\r\n UiMaskCreditCard,\r\n UiFloatPipe,\r\n}\r\n\r\nconst lib: any[] = [\r\n UiAddCalendarDirective,\r\n UiCalendarComponent,\r\n UiCalendarContentComponent,\r\n UiCapitalizePipe,\r\n UiDataTableOrderByDirective,\r\n UiDatePickerCallerDirective,\r\n UiDatePickerDirective,\r\n UiDialogComponent,\r\n UiDialogTriggerDirective,\r\n UiInputContainerComponent,\r\n UiInputDirective,\r\n UiMaxlengthDirective,\r\n UiMenuComponent,\r\n UiMenuTriggerDirective,\r\n UiNavDrawerComponent,\r\n UiOptionComponent,\r\n UiProgressRadialComponent,\r\n UiRippleDirective,\r\n UiSmartListComponent,\r\n UiSmartListItemComponent,\r\n UiSnackbarComponent,\r\n UiSnackbarComponent,\r\n UiSnackbarContainerComponent,\r\n UiSwitchComponent,\r\n UiToolbarComponent,\r\n UiMenuComponent,\r\n UiMenuTriggerDirective,\r\n UiProgressRadialComponent,\r\n UiMaskDateDirective,\r\n UiTimeAgoPipe,\r\n UiListItemDirective,\r\n UiMaskCpfDirective,\r\n UiCpfPipe,\r\n UiMaskCnpjDirective,\r\n UiCnpjPipe,\r\n UiMaskCnpjNovoDirective,\r\n UiCnpjNovoPipe,\r\n UiMaskCepDirective,\r\n UiCepPipe,\r\n UiMaskCepNovoDirective,\r\n UiCepNovoPipe,\r\n UiMaskPhoneDirective,\r\n UiPhonePipe,\r\n UiListComponent,\r\n UiListItemsComponent,\r\n UiListItemComponent,\r\n UiPhonePipe,\r\n UiSliderComponent,\r\n UiSliderMultiHandleComponent,\r\n UiInfiniteLoadDirective,\r\n UiAutocompleteDirective,\r\n UiAutocompleteComponent,\r\n UiMaskIntegerDirective,\r\n UiTabsComponent,\r\n UiTabsPagesComponent,\r\n UiLazyLoadDirective,\r\n UiDataTableComponent,\r\n UiLazyLoadDirective,\r\n UiBottomSheetComponent,\r\n UiBottomSheetTriggerDirective,\r\n UiInputFileDirective,\r\n UiEllipsisDirective,\r\n UiRequiredDirective,\r\n UiColorPickerComponent,\r\n UiColorPickerDirective,\r\n UiInputAutosizeDirective,\r\n UiColorPickerDirective,\r\n UiClockComponent,\r\n UiTimePickerDirective,\r\n UiTimePickerCallerDirective,\r\n UiTimePipe,\r\n UiMaskTimeDirective,\r\n UiMaskCurrencyDirective,\r\n UiCurrencyPipe,\r\n UiSelectComponent,\r\n UiSelectOptionComponent,\r\n UiSelectFilterPipe,\r\n UiFilterPipe,\r\n UiAvatarComponent,\r\n UiMaskFloatDirective,\r\n TooltipDirective,\r\n UiChosenComponent,\r\n UiChosenOptionComponent,\r\n UiChosenGroupComponent,\r\n UiCreditCardPipe,\r\n UiMaskCreditCard,\r\n ExpansionPanelComponent,\r\n UiFloatPipe,\r\n UiTabComponent,\r\n UiTabGroupComponent,\r\n UiTabContentDirective,\r\n UiTabLabelDirective,\r\n UiTabHeaderComponent,\r\n UiLabelContentComponent,\r\n UiUploadComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n RouterModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n declarations: [...lib],\r\n exports: [...lib],\r\n providers: [\r\n UiColor,\r\n UiDatetimeService,\r\n UiElement,\r\n UiReferencesService,\r\n UiSnackbar,\r\n UiWindowRef,\r\n UiInfiniteLoadService,\r\n UiTimePickerService,\r\n UiDialog,\r\n ],\r\n entryComponents: [\r\n UiCalendarComponent,\r\n UiCalendarContentComponent,\r\n UiAutocompleteComponent,\r\n UiColorPickerComponent,\r\n UiClockComponent\r\n ]\r\n})\r\nexport class SMNUIModule {\r\n}\r\n"]}
|