@acorex/components 3.0.56 → 3.0.60

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.
Files changed (29) hide show
  1. package/acorex-components.metadata.json +1 -1
  2. package/bundles/acorex-components.umd.js +20 -10
  3. package/bundles/acorex-components.umd.js.map +1 -1
  4. package/bundles/acorex-components.umd.min.js +1 -1
  5. package/bundles/acorex-components.umd.min.js.map +1 -1
  6. package/esm2015/lib/base/element.class.js +10 -1
  7. package/esm2015/lib/date-picker/date-picker.component.js +3 -3
  8. package/esm2015/lib/dropdown/dropdown.component.js +4 -3
  9. package/esm2015/lib/form-group/form-group.component.js +2 -2
  10. package/esm2015/lib/number-box/number-box.component.js +2 -2
  11. package/esm2015/lib/password-box/password-box.component.js +2 -2
  12. package/esm2015/lib/popup/popup.component.js +1 -1
  13. package/esm2015/lib/textarea/textarea.component.js +2 -2
  14. package/esm2015/lib/textbox/textbox.component.js +2 -2
  15. package/esm5/lib/base/element.class.js +10 -1
  16. package/esm5/lib/date-picker/date-picker.component.js +3 -3
  17. package/esm5/lib/dropdown/dropdown.component.js +4 -3
  18. package/esm5/lib/form-group/form-group.component.js +2 -2
  19. package/esm5/lib/number-box/number-box.component.js +2 -2
  20. package/esm5/lib/password-box/password-box.component.js +2 -2
  21. package/esm5/lib/popup/popup.component.js +1 -1
  22. package/esm5/lib/textarea/textarea.component.js +2 -2
  23. package/esm5/lib/textbox/textbox.component.js +2 -2
  24. package/fesm2015/acorex-components.js +20 -10
  25. package/fesm2015/acorex-components.js.map +1 -1
  26. package/fesm5/acorex-components.js +20 -10
  27. package/fesm5/acorex-components.js.map +1 -1
  28. package/lib/base/element.class.d.ts +2 -0
  29. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@acorex/components/lib/validation/validation-rule.widget.ts","ng://@acorex/components/lib/validation/validation.component.ts","ng://@acorex/components/lib/base/events.class.ts","ng://@acorex/components/lib/base/element.class.ts","ng://@acorex/components/lib/popover/custom-cdk-overlay.service.ts","ng://@acorex/components/lib/popover/overlay.service.ts","ng://@acorex/components/lib/loading/loading-indicator.component.ts","ng://@acorex/components/lib/loading/loading.service.ts","ng://@acorex/components/lib/page/page.component.ts","ng://@acorex/components/lib/base/base-page.class.ts","ng://@acorex/components/lib/button/button.component.ts","ng://@acorex/components/lib/button/button.module.ts","ng://@acorex/components/lib/calendar/calendar-box/calendar-box.component.ts","ng://@acorex/components/lib/popover/popover.component.ts","ng://@acorex/components/lib/popover/popover.module.ts","ng://@acorex/components/lib/calendar/calendar-box/calendar-box.module.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler-views.property.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.class.ts","ng://@acorex/components/lib/toolbar/toolbar-item.ts","ng://@acorex/components/lib/menu/menu.component.ts","ng://@acorex/components/lib/toolbar/menu/toolbar-menu.component.ts","ng://@acorex/components/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts","ng://@acorex/components/lib/calendar/scheduler/views/scheduler-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts","ng://@acorex/components/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts","ng://@acorex/components/lib/toolbar/search/toolbar-search.component.ts","ng://@acorex/components/lib/data-source/read-param.ts","ng://@acorex/components/lib/data-source/datasource.component.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.component.ts","ng://@acorex/components/lib/toolbar/toolbar.component.ts","ng://@acorex/components/lib/toolbar/title/toolbar-title.component.ts","ng://@acorex/components/lib/toolbar/group-button/toolbar-group-button.component.ts","ng://@acorex/components/lib/menu/menu2.component.ts","ng://@acorex/components/lib/menu/menu-item.component.ts","ng://@acorex/components/lib/tooltip/tooltip.directive.ts","ng://@acorex/components/lib/tooltip/tooltip.module.ts","ng://@acorex/components/lib/menu/menu.module.ts","ng://@acorex/components/lib/toolbar/toolbar.module.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.module.ts","ng://@acorex/components/lib/checkbox/checkbox.component.ts","ng://@acorex/components/lib/checkbox/checkbox.module.ts","ng://@acorex/components/lib/context-menu/context-menu.component.ts","ng://@acorex/components/lib/context-menu/context-menu.directive.ts","ng://@acorex/components/lib/context-menu/context-menu.module.ts","ng://@acorex/components/lib/data-filter/filter.class.ts","ng://@acorex/components/lib/selection-list/selection-list.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-date.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-number.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-selection.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-string.component.ts","ng://@acorex/components/lib/textbox/textbox.component.ts","ng://@acorex/components/lib/toast/toast-wrapper/toast-wrapper.component.ts","ng://@acorex/components/lib/toast/toast-message/toast-message.component.ts","ng://@acorex/components/lib/toast/toast.service.ts","ng://@acorex/components/lib/data-filter/filter-panel/filter-panel.component.ts","ng://@acorex/components/lib/data-filter/toolbar/filter-toolbar.component.ts","ng://@acorex/components/lib/panel-box/panel-box.component.ts","ng://@acorex/components/lib/panel-box/panel-box.module.ts","ng://@acorex/components/lib/dropdown/dropdown.component.ts","ng://@acorex/components/lib/date-picker/date-picker.component.ts","ng://@acorex/components/lib/form-group/form-group.component.ts","ng://@acorex/components/lib/form-group/form-group.module.ts","ng://@acorex/components/lib/textbox/textbox.module.ts","ng://@acorex/components/lib/dropdown/dropdown.module.ts","ng://@acorex/components/lib/date-picker/date-picker.module.ts","ng://@acorex/components/lib/toast/toast.module.ts","ng://@acorex/components/lib/selection-list/selection-list.module.ts","ng://@acorex/components/lib/validation/validation-form.component.ts","ng://@acorex/components/lib/validation/validation.module.ts","ng://@acorex/components/lib/data-filter/filter.module.ts","ng://@acorex/components/lib/data-list/core/data-list.component.ts","ng://@acorex/components/lib/data-list/list/toolbar-list-view.component.ts","ng://@acorex/components/lib/data-list/list/list.component.ts","ng://@acorex/components/lib/data-source/datasource.module.ts","ng://@acorex/components/lib/data-list/list/list.module.ts","ng://@acorex/components/lib/dialog/dialog.component.ts","ng://@acorex/components/lib/dialog/dialog.module.ts","ng://@acorex/components/lib/popup/popup.component.ts","ng://@acorex/components/lib/popup/popup.service.ts","ng://@acorex/components/lib/dialog/dialog.service.ts","ng://@acorex/components/lib/drawer/drawer.component.ts","ng://@acorex/components/lib/drawer/drawer.module.ts","ng://@acorex/components/lib/fieldset/fieldset.component.ts","ng://@acorex/components/lib/fieldset/fieldset.module.ts","ng://@acorex/components/lib/label/label.component.ts","ng://@acorex/components/lib/label/label.module.ts","ng://@acorex/components/lib/loading/loading-panel.component.ts","ng://@acorex/components/lib/loading/loading.module.ts","ng://@acorex/components/lib/number-box/number-box.component.ts","ng://@acorex/components/lib/number-box/number-box.module.ts","ng://@acorex/components/lib/page/content.component.ts","ng://@acorex/components/lib/page/footer.component.ts","ng://@acorex/components/lib/page/page.module.ts","ng://@acorex/components/lib/password-box/password-box.component.ts","ng://@acorex/components/lib/password-box/password-box.module.ts","ng://@acorex/components/lib/popup/popup.module.ts","ng://@acorex/components/lib/progress-bar/progress-bar.component.ts","ng://@acorex/components/lib/progress-bar/progress-bar.module.ts","ng://@acorex/components/lib/query-builder/query-builder.class.ts","ng://@acorex/components/lib/searchbox/searchbox.component.ts","ng://@acorex/components/lib/selectbox/selectbox.component.ts","ng://@acorex/components/lib/query-builder/query-builder-rule.component.ts","ng://@acorex/components/lib/query-builder/query-builder-popup/query-builder-popup.component.ts","ng://@acorex/components/lib/query-builder/query-builder.service.ts","ng://@acorex/components/lib/query-builder/query-builder-group.component.ts","ng://@acorex/components/lib/query-builder/query-builder.component.ts","ng://@acorex/components/lib/searchbox/searchbox.module.ts","ng://@acorex/components/lib/selectbox/selectbox2.component.ts","ng://@acorex/components/lib/selectbox/selectbox.module.ts","ng://@acorex/components/lib/query-builder/query-builder.module.ts","ng://@acorex/components/lib/switch/switch.component.ts","ng://@acorex/components/lib/switch/switch.module.ts","ng://@acorex/components/lib/tab-page/tab-page.service.ts","ng://@acorex/components/lib/tab-page/tab-page-host.component.ts","ng://@acorex/components/lib/tab-page/tab-page-Renderer.component.ts","ng://@acorex/components/lib/tab-page/tab-page.module.ts","ng://@acorex/components/lib/tab-strip/tab-strip.component.ts","ng://@acorex/components/lib/tab-strip/tab-strip.module.ts","ng://@acorex/components/lib/tab-view/dynamic-tabs.directive.ts","ng://@acorex/components/lib/tab-view/tab.component.ts","ng://@acorex/components/lib/tab-view/tab-view.component.ts","ng://@acorex/components/lib/tab-view/tab-view.module.ts","ng://@acorex/components/lib/textarea/textarea.component.ts","ng://@acorex/components/lib/textarea/textarea.module.ts","ng://@acorex/components/lib/time-picker/time-picker.component.ts","ng://@acorex/components/lib/time-picker/time-picker.module.ts","ng://@acorex/components/lib/tree-side-menu/tree-side-menu.component.ts","ng://@acorex/components/lib/tree-side-menu/tree-side-menu.module.ts","ng://@acorex/components/lib/tree-view/tree-view.component.ts","ng://@acorex/components/lib/tree-view/tree-view.module.ts","ng://@acorex/components/lib/upload-file/upload-file.component.ts","ng://@acorex/components/lib/upload-file/upload-file.module.ts","ng://@acorex/components/lib/accordion/accordion.component.ts","ng://@acorex/components/lib/accordion/accordion.module.ts","ng://@acorex/components/lib/property-editor/property-editor.class.ts","ng://@acorex/components/lib/property-editor/property-editor-renderer.directive.ts","ng://@acorex/components/lib/property-editor/editors/text-editor/text.editor.ts","ng://@acorex/components/lib/property-editor/editors/text-editor/text.module.ts","ng://@acorex/components/lib/property-editor/editors/number-editor/number.editor.ts","ng://@acorex/components/lib/property-editor/editors/number-editor/number.module.ts","ng://@acorex/components/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts","ng://@acorex/components/lib/property-editor/editors/selectbox-editor/selectbox.module.ts","ng://@acorex/components/lib/property-editor/editors/range-editor/range.editor.ts","ng://@acorex/components/lib/color-picker/color-box/color-box.component.ts","ng://@acorex/components/lib/color-picker/color-picker.component.ts","ng://@acorex/components/lib/color-picker/color-picker.module.ts","ng://@acorex/components/lib/property-editor/editors/range-editor/range.module.ts","ng://@acorex/components/lib/property-editor/editors/color-editor/color.editor.ts","ng://@acorex/components/lib/property-editor/editors/color-editor/color.module.ts","ng://@acorex/components/lib/property-editor/editors/column-editor/column.editor.ts","ng://@acorex/components/lib/property-editor/editors/column-editor/column.module.ts","ng://@acorex/components/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts","ng://@acorex/components/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts","ng://@acorex/components/lib/property-editor/editors/switch-editor/number.editor.ts","ng://@acorex/components/lib/property-editor/editors/switch-editor/number.module.ts","ng://@acorex/components/lib/property-editor/editors/date-editor/date.editor.ts","ng://@acorex/components/lib/property-editor/editors/date-editor/date.module.ts","ng://@acorex/components/lib/property-editor/editors/time-editor/time.editor.ts","ng://@acorex/components/lib/property-editor/editors/time-editor/time.module.ts","ng://@acorex/components/lib/property-editor/property-editor.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","__asyncValues","asyncIterator","settle","AXValidationRules","addRule","name","rule","exists","get","registredRules","find","AXValidationRuleComponent","type","enabled","validate","regRule","internalValidate","message","ruleValue","AXTranslator","isArray","ex","RegExp","test","res_1","val","catch","finally","Input","Component","selector","template","AXValidation","rules","validateOn","_this","all","map","AXValidationComponent","_super","rulesChange","EventEmitter","showMessage","_rules","emit","ngAfterContentInit","_a","contentItems","toArray","ContentChildren","QueryList","Output","AXValidationComponent_1","providers","provide","useExisting","AXHtmlEvent","AXBaseEvent","AXValueEvent","AXDataEvent","AXBaseComponent","uid","AXHtmlUtil","getUID","AXBaseInputChangeEvent","AXValidatableComponent","__valueField","tabIndex","initValidation","elementRef","valueField","validation","__nativeElement","nativeElement","__validation","undefined","clearValidationStyle","applyValidationStyle","element","clear","formGroup","closest","formItem","querySelector","parent_1","_b","_c","parentElement","_d","classList","remove","_e","_f","add","removeChild","parent_2","span","document","createElement","innerText","appendChild","AXBaseTextComponent","cdr","ref","disabled","readonly","textAlign","size","userChange","onkey","onBlur","onFocus","onValueChanged","valueChange","icon","allowClear","ngAfterViewInit","input","onkeyup","onkeydown","onkeypress","_validation","_contentValidation","_value","old","component","oldValue","isUserChange","detectChanges","focus","isFocused","activeElement","setTextAlign","handleInputBlur","htmlElement","htmlEvent","handleInputFocus","ViewChild","static","ContentChild","ElementRef","AXBaseButtonComponent","click","AXBaseDropdownComponent","fitParent","showDropDownButton","DynamicOverlayContainer","setContainerElement","containerElement","_containerElement","Injectable","providedIn","OverlayContainer","DynamicOverlay","scrollStrategies","_overlayContainer","_componentFactoryResolver","_positionBuilder","_keyboardDispatcher","_injector","_ngZone","_document","_directionality","rendererFactory","renderer","createRenderer","_dynamicOverlayContainer","setStyle","createOn","config","ScrollStrategyOptions","ComponentFactoryResolver","OverlayPositionBuilder","OverlayKeyboardDispatcher","Injector","NgZone","Inject","args","DOCUMENT","Directionality","RendererFactory2","Overlay","AXOverlayService","overlayService","overlayService2","appRef","show","content","context","configs","hasBackdrop","transparentBackdrop","closeOnClickOutside","portal","positionStrategy","viewRef","components","instance","TemplateRef","TemplatePortal","ComponentPortal","position","targetElement","flexibleConnectedTo","withPositions","withPush","global","centerHorizontally","centerVertically","scrollStrategy","reposition","autoClose","scroll","block","disposeOnNavigation","backdropClass","panelClass","overlayRef","host","attach","setTimeout","changeDetectorRef","merge","backdropClick","detachments","subscribe","dispose","onBackdropClick","bind","ApplicationRef","AXLoadingIndicatorComponent","ngOnInit","AXLoadingService","injection","_stack","location","com","id","Date","getTime","hide","filter","AXRenderService","AXPageComponent","el","loadingService","_isLoading","_loadingId","ChangeDetectorRef","AXPageCloseEvent","cancel","AXPageClosedPromise","executor","close","closeMethod","AXBasePageComponent","onClosed","pageContainer","isLoading","data","onClosing","ngOnDestroy","unsubscribe","AXBasePopupPageComponent","_footerButtons","onFooterButtonsChanged","Subject","configFooterButtons","getFooterButtons","buttons","footerButtons","onFooterButtonClick","AXButtonComponent","submitBehavior","cancelBehavior","loading","selected","focusButton","handleClick","stopPropagation","onKeydownHandler","preventDefault","container","HostListener","KeyboardEvent","encapsulation","ViewEncapsulation","None","COMPONENT","MODULES","CommonModule","AXButtonModule","NgModule","declarations","imports","exports","AXCalendarBoxComponent","weekdays","jalali","locale","AXConfig","dir","number","gregorian","selectableHoliday","dayStyle","dayMinMaxResoan","showTodayButton","matrix","rotated","_view","_depth","holidays","weekends","onClick","getHoliday","getWeekend","navigate","view","date","vv","AXDateTime","convert","unValidDate","max","min","isInMInMaxRange","equal","setFocus","clone","focusedValue","today","viewRange","month","range","findDay","split","toISOString","getStyle","style","getTitle","text","compaireNew","initLayout","getViewCompaire","numRotate","path","getTodayName","prev","rotate","array","len","a","start","end","fd","startOf","startTime","firstDayOfWeek","endOf","endDayOfWeek","AXDateTimeRange","matrixify","applyStyle","enumurate","nextMonth","splice","dates","items","forEach","j","item","focused","unselect","h","holiday","indexDay_1","Math","floor","cc","Number","changeView","arr","cols","ceil","slice","setDayClick","event","setMonthClick","depth","set","year","monthOfYear","setYearClick","setToday","trackByFn","index","changeDetection","ChangeDetectionStrategy","OnPush","AXPopoverComponent","zone","openMode","closeMode","_visible","internalShow","internalHide","toggle","visible","run","open","isOpen","overlay","targetEl","addEventListener","removeEventListener","AXPopoverModule","AXCalendarBoxModule","AXCoreModule","AXSchedulerViewProperty","caption","interval","Attribute","AXSchedulerViewsProperty","AXAsyncEventArgs","onComplete","complete","AXSchedulerEventChangeArgs","canceled","alignment","AXMenuItemClickEvent","AXEvent","AXMenuComponent","onItemClick","selection","mode","direction","_menuTemplate","_contentMenuTemplate","_items","rtl","window","getComputedStyle","getPropertyValue","handleItemClick","disable","AXToolbarMenuComponent","update","AXToolbarMenuComponent_1","AXToolbarItem","AXToolbarSchedulerViewsComponent","onViewChanged","menu","AXToolbarSchedulerViewsComponent_1","AXSchedulerBaseViewComponent","timeSlot","onNavigatorDateChanged","events","slots","onEventChanged","_navigatorDate","getEvents","unit","ngAfterViewChecked","updateSize","onDragDropOnDay","time","previousContainer","opacity","oldSlot","newSlot","er","slotTime","z","durDay","duration","endTime","durTime_1","Directive","AXSchedulerDayTimeViewComponent","elm","times","vScroll","header","firstTr","index_1","querySelectorAll","children","width","offsetWidth","height","clientHeight","arrangeEvents","addDay","slot","display","navigatorDate","height_1","offsetHeight","attributes","getNamedItem","total","abs","hour","findEventIndex","sort","d1","d2","indexOf","AXSchedulerDayTimeViewComponent_1","AXSchedulerMonthViewComponent","weekDays","title","startDayOfWeek","dragHour","deltaY","addMonth","rows","dur","toString","matrixSlots","slotTd","viewMoreDiv","viewMore","visibility","top","getBoundingClientRect","bottom","innerHTML","onDragStarted","runOutsideAngular","dragEnterSlot","source","dropContainer","drageMouseMove","onDragEntered","dragPreview","onDragEnded","diff","round","AXSchedulerMonthViewComponent_1","AXToolbarSchedulerNavigatorComponent","viewDepth","onNavigate","startIcon","tooltip","goto","onDateChange","calDate","sameDay","sameMonth","sameYear","format","cal","toolbar","AXToolbarSchedulerNavigatorComponent_1","AXSchedulerAgendaViewComponent","hideEmptyDays","AXSchedulerAgendaViewComponent_1","AXSchedulerTimelineViewComponent","AXSchedulerTimelineViewComponent_1","AXToolbarSearchComponent","_text","inputSearch","onSearchChanged","searchChangeObserver","Observable","observer","pipe","debounceTime","distinctUntilChanged","AXToolbarSearchComponent_1","AXDataSourceReceivedEvent","AXDataSourceComponent","onDataReceived","onFetchStart","fetch","params","provideData","extra","_data","AXDataSourceReceivedResult","requestId","AXSchedulerComponent","viewItems","_currentView","setView","viewManager","views","createView","startAnim","portalOutlet","detach","compRef","setNavigatorText","refresh","toolbarNavigator","dateRange","groupName","dataSource","searchText","toolbarView","currentView","searchInput","x","CdkPortalOutlet","AXToolbarComponent","AXToolbarTitleComponent","AXToolbarTitleComponent_1","AXToolbarButtonGroupComponent","itemClick","AXToolbarButtonGroupComponent_1","AXMenu2Component","viewContainerRef","subItemsOverlays","level","showSubmenu","originX","originY","overlayX","overlayY","AXMenu2Component_1","onDocumentClick","contains","hideOverlays","ViewContainerRef","AXMenuItemComponent","showSubMenu","showSubItems","AXMenuItem","AXTooltipDirective","placement","delay","offset","onMouseEnter","tooltipTitle","onMouseLeave","setPosition","addClass","removeClass","createText","left","hostPos","tooltipPos","scrollPos","pageYOffset","documentElement","scrollTop","right","Renderer2","AXTooltipModule","AXMenuModule","COMPONENTS","AXToolbarModule","AXSchedulerModule","PortalModule","DragDropModule","entryComponents","AXCheckBoxItemClick","AXCheckBoxComponent","indeterminate","AXCheckBoxModule","FormsModule","AXContextMenuComponent","_left","_top","_rtl","containRec","innerWidth","innerHeight","handleClickItem","class","AXContextMenuItemClickEvent","AXContextMenuDirective","factoryResolver","injector","onContextMenuItemClick","internalItems","onContextMenu","getMenuItems","createContextMenu","contextMenu","wrapper","wrapperClick","wrapperRClick","factory","resolveComponentFactory","componentRef","createComponent","clearComponentSubscriptions","createComponentSubscriptions","elementsFromPoint","clientX","clientY","includes","clickSubscribe","closeSubscribe","dataItem","contextDataItem","menuItem","contextMenuItems","MouseEvent","AXContextMenuModule","AXFilterColumnComponent","operator","field","activeChange","_active","active","setFilter","AXSelectionListComponent","_selectedItems","textField","selectedItemsChange","selectedValuesChange","selectedItems","selectedValues","JSON","stringify","onCheckValueChange","checked","onvalueChanged","AXFilterColumnDateComponent","fromDate","toDate","selectedItem","showCustom","showSpecific","dateChange","onSelectedChanged","condition","dataType","AXFilterColumnDateComponent_1","AXFilterColumnNumberComponent","operators","onOperatorChange","onTextChange","AXFilterColumnNumberComponent_1","AXFilterColumnSelectionComponent","values","onSelectChange","some","AXFilterColumnSelectionComponent_1","AXFilterColumnStringComponent","AXFilterColumnStringComponent_1","AXTextBoxComponent","showMask","maskGuid","maskPlaceholder","maskKeepCharPositions","AXTextBoxComponent_1","AXToastWrapperComponent","AXToastMessageComponent","elRef","timeOut","closeable","toastWidth","interval_1","setInterval","clearInterval","AXToastService","injectionService","info","options","success","warning","opt","appendComponent","toastWrapper","AXFilterPanelComponent","toast","groups","predefinedFilters","saveItems","filterChange","updateMenu","filters","onValueChange","con","load","cancelSaveFilter","col","panel","setFilterByIndex","applySize","setFilterByName","removeFilter","footer","savedList","currentFilter","applySaveFilter","isNew","isInEdit","onMenuItemClick","handleRenameClick","tbxNameOnKey","tbxName","ViewChildren","AXToolbarFilterViewComponent","_uid","menuItems","divider","selectAll","addPredefinedList","filterPanel","root","setCurrent","name_1","prompt","findSelected","onCtxClick","menuId","currentTarget","getAttribute","AXToolbarFilterViewComponent_1","AXPanelBoxComponent","_caption","collapsedChange","_collapsed","allowCollapse","collapsed","animations","trigger","state","padding","transition","animate","AXPanelBoxModule","AXDropdownComponent","dropdownToggle","onButtonClick","dropdownEL","dropdownWidth","endButtons","childNodes","paddingInlineEnd","clientWidth","handleArrowClick","ensureOverlayCreated","templatePortal","setDirection","baseTemplate","hasAttached","updatePosition","AXDataPickerChangeEvent","AXDatePickerComponent","yyyyMMdd","ddMMyyyy","yyyyddMM","placeholder","showToday","openByClick","cursorPosition","model","_renderPicker","typeChange","_type","_setDateType","selectToday","convertMaskToDate","convertStringToGregorian","convertMask","dateType","mask","monnth","day","textChange","console","log","Boolean","dropdown","markForCheck","guide","keepCharPositions","onStartfocus","caretColor","setCaretPosition","handleButtonClick","handleKeyPress","selectionStart","inputChar","String","fromCharCode","charCode","ind1","charAt","ind2","ind3","ind4","ind5","ind6","ind7","ind8","ind9","ind10","setCaret","ctrl","pos","setSelectionRange","AXDatePickerComponent_1","AXFormGroupComponent","required","div","AXFormGroupModule","TextMaskModule","AXTextBoxModule","OverlayModule","AXDropdownModule","AXDatePickerModule","AXToastModule","AXSelectionListModule","AXValidationFormComponent","widgets","onInit","widgetsQuery","w","failed","addWidget","widget","descendants","AXValidationModule","AXFilterModule","AXDataListComponent","configDataList","dataReceived","AXToolbarListViewComponent","vertical","verticalWrap","horizontalWrap","horizontal","onDirectionChanged","_direction","AXToolbarListViewComponent_1","AXListComponent","connectedList","allowMoveItem","_dataSource","_contentDataSource","_itemTemplate","_contentItemTemplate","_emptyTemplate","_contentEmptyTemplate","viewToolbar","dragDrop","AXDataSourceModule","AXListModule","AXDialogComponent","AXDialogModule","AXTranslatorModule","AXPopupComponent","resolver","rendererService","modal","maximizable","closable","headerButtons","findLoadedComponentByRoute","route","loadComponent","createEmbeddedView","$implicit","popupBody","insert","comRef","onFooterButtonsSubscription","onCloseClick","destroy","onFullScreen","handleFooterButtonClick","read","AXPopupService","stack","arg1","arg2","popup","closePopup","promise","closeFunc","reverse","closingFunc","res","AXDialogAlertResult","_executor","closeAction","action","AXDialogConfirmResult","okayAction","cancelAction","finalAction","okay","final","AXDialogResult","thenAction","AXDialogService","popupService","alert","confirm","_i","AXDrawerComponent","drawerState","transform","AXDrawerModule","BrowserAnimationsModule","AXFieldsetComponent","AXFieldsetModule","AXLabelComponent","AXLabelModule","AXLoadingPanelComponent","AXLoadingModule","A11yModule","AXNumberBoxComponent","showSeparator","showCurrency","showCounter","scrollWeel","showDoubleCounter","maxLength","userQuestionUpdate","userEdite","findDots","findMinus","decimalConstant","lastStep","intStep","decimalNumber","customStep","_values","textValue","isNaN","replace","addCommas","search","calcSeparator","num","addCommas2","nStr","x1","x2","rgx","handleWheel","wheelDelta","upStepHandel","delaySearch","downStepHandel","match","keyCode","figureAfterDot","dotIndex","handleKeyUp","handleKeyDown","countAfterDot","defaultStep","pow","dotPosition","tmp","parseFloat","count","toFixed","parseInt","checkMinMax","replaceAll","doGetCaretPosition","createTextRange","collapse","moveEnd","moveStart","select","AXNumberBoxComponent_1","AXNumberBoxModule","AXPageContentComponent","AXPageFooterComponent","AXPageModule","AXPasswordBoxComponent","eyeIcon","handleShowPassword","AXPasswordBoxComponent_1","AXPasswordBoxModule","AXPopupModule","AXProgressBarComponent","progress","AXProgressBarModule","AXQueryBuilderRuleEvent","AXQueryBuilderGroupEvent","AXSearchBoxComponent","textChanged","handleKeyEvent","AXSelectBoxSelectionChangedEvent","AXSelectBoxComponent","showCheckBox","allowNull","bufferSize","remoteOperation","currentfocusedIndex","showLoading","skip","totalCount","allowSearch","disabledField","itemRemove","itemsChange","hasSelectedValue","itemsFiltered","dropDownDisabled","selectionChanged","itemsStatusObserver","setSelectedItemsChange","differenceBy","Set","waitForData","rowTemplate","rowInputTemplate","scrolled","listContainer","scrollHeight","take","textbox","setSelectedItems","isUserInput","changed","setSelectedIndex","emitSelectionChangedEvent","isItemDisabled","disabledCallback","sign","toLowerCase","itemDiv","scrollIntoView","behavior","compareSelectedValues","addId_1","vId","newId","vv_1","rc","newValue","currentValue","setSelectedValues","dropdownToggleSelecBox","serchBox","handleItemRemoveClick","onFocusTextBox","onTextBoxClick","handleKeyEventSearch","textBoxSelectBox","getItems","selectedItemByIndex","stopImmediatePropagation","isChar","str","code","ctrlKey","isItemSelected","callbackfn","AXSelectBoxComponent_1","AXQueryBuilderRuleComponent","isEditing","fields","onRuleDelete","ruleChanged","showValue","isOnDemandLabel","showSelectBox","showOperatorSelectBox","provideDataBoolean","provideDataOperator","control","getProvideData","optionsData","onDemandLabel","saveRule","form","handleEditClick","handleCommitClick","handleRemoveClick","captionChange","dataField","AXQueryBuilderControl","dataFieldItem","selectBox","valueItem","selectBoxValue","selectBoxBoolean","operatorChange","onDemandLabelChange","valueBooleanChange","getOnDemandName","getOption","join","THAT_1","AXQueryBuilderRule","AXQueryBuilderGroup","AXQueryBuilderPopupComponent","complateValue","makeJsonString","groupString","group","groupCopy","parse","getNoValueRule","getValue","gr","textValueChange","findNullValue","AXQueryBuilderService","canOpen","canRun","runQuery","getQueryStringSimple","query","codeOperator","getQueryString","queryString","queryStringElastic","AXQueryBuilderGroupComponent","qs","groupRuleChanged","showGroupCondition","ruleDelete","parent","addGroup","addGroupOR","makeGroup","addGroupAND","_condition","changeDetailMode","handleChangeClick","AXQueryBuilderComponent","rootGroup","onRuleChanged","saved","getQueryBuilder","AXSearchBoxModule","AXSelectBoxValueChangedEvent","AXSelectBox2Component","selectionMode","selectionDataMode","AXObjectUtil","deepJSONClone","selectedKeys","renderSelection","orgRes","ii","fake","func","focusOnSearchBox","focusOnCurrentFocusedIndex","selectItems","internalGetItemValue","unselectItems","internalGetItemByDataMode","isLetter","selectItemByNav","focusedItem","toggleSelect","inputedVal","searchBox","AXSelectBox2Component_1","AXScrollModule","AXSelectBoxModule","MODUELS","AXQueryBuilderModule","AXSwitchComponent","AXSwitchModule","AXTabPageService","tabs","opened","activated","closed","arg3","newTab","pinned","existTab","findExistTab","tab","doCloseAction","currentTab","sender","tab_1","AXTabPageHostComponent","tabService","Error","hostView","AXTabPageRendererComponent","childs","subscriptions","hidden","reattach","componentRef_1","hostref","AXTabPageModule","AXTabStripChangedEvent","AXTabStripComponent","onTabChanged","seledtedTab","AXTabStripModule","DynamicTabsDirective","viewContainer","AXTabComponent","isCloseable","AXTabViewComponent","fullWidth","dynamicTabs","onActiveTab","first","selectTab","openTab","componentFactory","dynamicTabPlaceholder","dataContext","closeTab","closeActiveTab","activeTabs","AXTabViewModule","AXTextAreaComponent","AXTextAreaComponent_1","AXTextAreaModule","AXTimePickerChangedEvent","AXTimePickerComponent","showCurentTime","clearDisabled","HHmmss","HHmm","HH","hhmmss","hhmm","hh","hhmmssam","hhmmam","hham","valueHam","valueMam","valueSam","timeType","minute","second","indOld4","indOld7","indOld10","clearValue","placeholderChar","getHours","amHour","getMinutes","sec","getSeconds","firstChar","secondChar","ind11","hourind","afterHourind","beforeHourind","secondind","typeind","typeind2","afterHourIndex","minuteind","afterMinuteIndex","secondIndex","aftersecondIndex","AXTimePickerComponent_1","AXTimePickerModule","itemData","AXTreeSideMenuItemData","AXTreeSideMenuSelectionChangedEvent","AXTreeSideMenuItemClick","AXTreeSideMenuComponent","cssClass","selectionLevel","selectedFieldName","selectNodesRecursive","seletedKeyFields","keyField","hasChildField","bordered","lazyLoading","allowDrag","iconStart","closeIconName","openIconName","onItemOpening","onItemClosing","onItemDrag","onItemMoved","list","selectedParents","loadAllChildren","listLoad","validDrop","lockedDrag","childField","showContextMenu","handleOnContextMenuItem","internalSelectItem","parentNode","changeParentSelect","changeChildSelect","makeNode","addChildren","node","AXTreeSideMenuNode","k","hasChild","allselect","alldeselect","oneselect","isindeterminate","toggleNode","flag","itemdbClick","handleOnNodeClick","loaded","itemRow","random","hideLoading","disabledCheckBox","selectItem","result_1","onDragStart","itemDrag","onDragEnd","itemDrop","drop","sameChilde","movedEvent","AXTreeSideMenuItemMovedEvent","dragDropItem","child","itemChild","itemParent","listChange","changeChiled","openAll","loadAll","scrolIntoView","closeAll","unSelectAll","getSelectedNodes","selectItemsNode","getSelectedParents","selectItemsParent","getParentsId","keyFields","getSelectedKeyFields","Ids","AXTreeSideMenuModule","AXTreeViewItemData","AXTreeViewselectionChangedEvent","AXTreeViewseletedKeyFieldsChangedEvent","AXTreeViewItemClick","AXTreeViewComponent","checkParents","checkChilds","seletedKeyFieldsChanged","selectableField","isSelectedItem","loced","AXTreeViewNode","selectParent","unSelectParent","selectChilds","childeren","unSelectChilds","nodeClick","AXTreeViewItemMovedEvent","unSelectItem","AXTreeViewModule","AXUploadFileComponent","rendrer","onLoad","onProgress","files","fileName","onDeleteClick","onFileChange","addFile","fileInput","dropRef","progressRef","overlayDiv","handleOverlayDragOver","handleDragOver","handleDragLeave","handleDrop","dataTransfer","file","progressDiv","progressLabel","reader","FileReader","pv","uploaded","intv","readAsDataURL","HTMLElement","AXUploadFileModule","AXAccordionComponent","multiple","panels","handleCollapsedChanged","AXAccordionModule","AXProperyEditorComponent","_initiated","_valueBound","validatableComponentRegistered","onRenderCompleted","registerForValidationForm","handleValueChange","cls","property","AXPropertyDecorators","register","REGISTRY","AXPropertyDecorator","has","isValid","getProperties","superClass","getPrototypeOf","AXPropertyEditorRendererDirective","componentFactoryResolver","renderService","eventService","_context","editorClass","cmpRef","subscription","broadcast","groupId","watchChanges","assignProps","validationForm","varsRegx","varNameRegx","editorOptions","opt_1","vars_1","on","execCode","p2","deepCopy","Function","keys","prop","setPropByPath","vars","val_1","this_1","AXEventService","AXTextPropertyEditorComponent","clearButton","textBox","AXTextPropertyEditorModule","AXNumberBoxPropertyEditorComponent","minValue","maxValue","AXNumberBoxPropertyEditorModule","AXSelectBoxPropertyEditorComponent","intVal","initiated","_filter","AXSelectBoxPropertyEditorModule","AXRangePropertyEditorComponent","ranges","onFormInit","editRow","tplEdit","handleAddClick","color","AXColorBoxComponent","inputFormat","onColorSelect","rColor","gColor","bColor","colors","selectColor","rgb","AXColorUtil","hex2Rgb","onColorClick","handleColorChange","rgb2Hex","AXColorBoxComponent_1","AXColorPickerComponent","showClear","findTextColor","contrastToWhite","AXColorPickerComponent_1","AXColorPickerModule","AXRangePropertyEditorModule","AXColorPropertyEditorComponent","AXColorPropertyEditorModule","ColumnPropertyEditorComponent","columns","columnTypeData","handleDataReceived","moveItemInArray","previousIndex","currentIndex","handleAddColumn","fieldName","fieldType","displayType","fillByUser","rowHeader","AXColumnPropertyEditorModule","AXConditionalColorPropertyEditorComponent","booleanItems","updateOperations","dataTypes","getDefaultValue","opr","oprItem","getIcon","AXConditionalColorPropertyEditorModule","conditional-color-property-editor","replaced-color","replaced-title","AXSwitchPropertyEditorComponent","AXSwitchPropertyEditorModule","AXDatePropertyEditorComponent","AXDatePropertyEditorModule","AXTimePropertyEditorComponent","AXTimePropertyEditorModule","WDIGET_MODULES","AXProppertyEditorModule","RouterModule","forChild"],"mappings":"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","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 { Component, Input } from '@angular/core';\r\nimport { AXValidationRuleResult, AXValidationRule, AXValidationRuleTypes } from './validation.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\n\r\n// @dynamic\r\nexport class AXValidationRules {\r\n private static registredRules: { name: string, rule: AXValidationRule }[] = [];\r\n\r\n public static addRule(name: string, rule: AXValidationRule) {\r\n const exists = AXValidationRules.get(name);\r\n if (exists) {\r\n exists.rule = rule;\r\n }\r\n else {\r\n AXValidationRules.registredRules.push({\r\n name,\r\n rule\r\n });\r\n }\r\n }\r\n\r\n public static get(name: string) {\r\n return this.registredRules.find(c => c.name === name);\r\n }\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ax-validation-rule',\r\n template: ''\r\n})\r\nexport class AXValidationRuleComponent implements AXValidationRule {\r\n @Input()\r\n type: AXValidationRuleTypes = 'required';\r\n @Input()\r\n message: string;\r\n @Input()\r\n value: any;\r\n\r\n @Input()\r\n enabled: boolean = true;\r\n\r\n validate(value: any): Promise<AXValidationRuleResult> {\r\n if (this.enabled === false) {\r\n return Promise.resolve({ result: true });\r\n }\r\n const regRule = AXValidationRules.get(this.type);\r\n if (regRule) {\r\n return this.internalValidate(regRule.rule.type, value, this.message || regRule.rule.message, regRule.rule.value);\r\n }\r\n else {\r\n return this.internalValidate(this.type, value, this.message, this.value);\r\n }\r\n }\r\n\r\n\r\n private internalValidate(type: string, value?: any, message?: string, ruleValue?: any): Promise<AXValidationRuleResult> {\r\n return new Promise<AXValidationRuleResult>(resolve => {\r\n switch (type) {\r\n case 'required':\r\n resolve({\r\n message: message || AXTranslator.get('validation.messages.required'),\r\n result: value != null && value != '' && (!Array.isArray(value) || (Array.isArray(value) && value.length > 0))\r\n });\r\n break;\r\n case 'regex':\r\n const ex = new RegExp(ruleValue);\r\n resolve({\r\n message: message || AXTranslator.get('validation.messages.regex'),\r\n result: ex.test(value)\r\n });\r\n break;\r\n case 'custom':\r\n case 'callback':\r\n if (typeof ruleValue === 'function') {\r\n const res: any = {};\r\n res.message = message;\r\n const val = ruleValue({ value, message });\r\n if (val instanceof Promise) {\r\n val.then(c => {\r\n res.result = c;\r\n }).catch(c => {\r\n res.result = false;\r\n }).finally(() => {\r\n resolve(res);\r\n });\r\n }\r\n else {\r\n res.result = val;\r\n resolve(res);\r\n }\r\n }\r\n else {\r\n resolve({ result: true });\r\n }\r\n break;\r\n default:\r\n resolve({ result: true });\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, ContentChildren, QueryList, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXValidationRuleComponent } from './validation-rule.widget';\r\nimport { AXValidationRule, AXValidationRuleResult } from './validation.class';\r\n\r\n\r\n\r\nexport class AXValidation {\r\n\r\n rules: AXValidationRule[] = [];\r\n validateOn: 'blur' | 'change' | 'submit' = 'submit';\r\n showMessage: boolean;\r\n\r\n validate(value: any): Promise<AXValidationRuleResult> {\r\n if (!this.rules || this.rules.length === 0) {\r\n return Promise.resolve({ result: true });\r\n }\r\n return new Promise<AXValidationRuleResult>(resolve => {\r\n Promise.all(\r\n this.rules.map(c => {\r\n if (c instanceof AXValidationRuleComponent) {\r\n return c.validate(value);\r\n }\r\n else {\r\n const v = new AXValidationRuleComponent();\r\n Object.assign(v, c);\r\n return v.validate(value);\r\n }\r\n })\r\n ).then(d => {\r\n const error = d.find(c => c.result === false);\r\n if (error) {\r\n resolve(error);\r\n } else {\r\n resolve({ result: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ax-validation',\r\n template: '<ng-content></ng-content>',\r\n providers: [{ provide: AXValidation, useExisting: AXValidationComponent }]\r\n})\r\nexport class AXValidationComponent extends AXValidation {\r\n\r\n @ContentChildren(AXValidationRuleComponent)\r\n private contentItems: QueryList<AXValidationRuleComponent>;\r\n\r\n\r\n @Output()\r\n rulesChange: EventEmitter<AXValidationRule[]> = new EventEmitter<AXValidationRule[]>();\r\n\r\n @Output()\r\n showMessage: boolean = true;\r\n\r\n private _rules: AXValidationRule[];\r\n\r\n @Input()\r\n public get rules(): AXValidationRule[] {\r\n return this._rules;\r\n }\r\n public set rules(v: AXValidationRule[]) {\r\n this._rules = v;\r\n if (this.rulesChange) {\r\n this.rulesChange.emit(v);\r\n }\r\n }\r\n\r\n @Input()\r\n validateOn: 'blur' | 'change' | 'submit' = null;\r\n\r\n\r\n ngAfterContentInit() {\r\n if (this.rules && this.rules.length === 0) {\r\n this.rules.push(...this.contentItems.toArray());\r\n }\r\n }\r\n}\r\n","export class AXBaseEvent {\r\n component: any;\r\n htmlElement?: HTMLElement;\r\n}\r\n\r\nexport class AXHtmlEvent<E extends Event> extends AXBaseEvent {\r\n\r\n htmlEvent?: E;\r\n}\r\n\r\nexport class AXValueEvent<T> extends AXBaseEvent {\r\n value?: T;\r\n oldValue?: T;\r\n}\r\n\r\nexport class AXDataEvent<T> extends AXBaseEvent {\r\n data?: T;\r\n}\r\n\r\nexport class AXEvent<T, E extends Event>\r\n{\r\n\r\n}\r\nexport interface AXEvent<T, E extends Event> extends AXDataEvent<T>, AXHtmlEvent<E> {\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Input, Output, EventEmitter, ChangeDetectorRef, ViewChild, ElementRef, ContentChild } from '@angular/core';\r\nimport { AXValidationComponent, AXValidation } from '../validation/validation.component';\r\nimport { AXValidationRuleResult } from '../validation/validation.class';\r\nimport { AXHtmlUtil } from '@acorex/core';\r\nimport { AXEvent, AXHtmlEvent, AXValueEvent } from './events.class';\r\n\r\nexport type AXElementSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport abstract class AXBaseComponent {\r\n @Input() cssClass: string;\r\n uid: string = AXHtmlUtil.getUID();\r\n constructor() {\r\n }\r\n}\r\n\r\n\r\nexport class AXBaseInputChangeEvent extends AXValueEvent<any> {\r\n isUserChange?: boolean;\r\n}\r\n\r\nexport interface AXBaseSizableComponent {\r\n size: AXElementSize;\r\n}\r\n\r\nexport interface AXBaseInteractiveComponent {\r\n disabled: boolean;\r\n tabIndex: number;\r\n}\r\n\r\nexport interface AXBaseInputComponent extends AXBaseInteractiveComponent {\r\n readonly: boolean;\r\n focus(): void;\r\n}\r\n\r\n\r\nexport interface AXBaseValueComponent<T> extends AXBaseInputComponent {\r\n onValueChanged?: EventEmitter<AXValueEvent<T>>;\r\n valueChange?: EventEmitter<T>;\r\n value: T;\r\n}\r\n\r\nexport interface AXBaseClickableComponent extends AXBaseInteractiveComponent {\r\n click: EventEmitter<AXHtmlEvent<MouseEvent>>;\r\n}\r\n\r\nexport abstract class AXValidatableComponent extends AXBaseComponent {\r\n\r\n private __valueField: string = 'value';\r\n private __nativeElement: HTMLElement;\r\n private __validation: AXValidation;\r\n\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n protected initValidation(\r\n elementRef: ElementRef,\r\n valueField: string,\r\n validation: AXValidation\r\n ) {\r\n this.__nativeElement = elementRef.nativeElement;\r\n this.__valueField = valueField;\r\n this.__validation = validation;\r\n const value = this[this.__valueField]\r\n if ((!Array.isArray(value) && value) || (Array.isArray(value) && value.length > 0))\r\n this.validate();\r\n }\r\n\r\n get validation() {\r\n return this.__validation;\r\n }\r\n\r\n validate(): Promise<AXValidationRuleResult> {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const result = this.__validation.validate(this[this.__valueField]);\r\n result.then(c => {\r\n if (c.result) {\r\n this.clearValidationStyle(this.__nativeElement);\r\n }\r\n else {\r\n this.applyValidationStyle(this.__nativeElement, c);\r\n }\r\n });\r\n return result;\r\n }\r\n else {\r\n return Promise.resolve({ result: true });\r\n }\r\n }\r\n\r\n\r\n protected clearValidationStyle(element: HTMLElement, clear: boolean = false) {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const formGroup = element.closest('.form-group');\r\n const formItem = formGroup?.querySelector('.form-item') || element.closest('.form-item') || element.querySelector('.form-item');;\r\n const label = formGroup?.querySelector('.form-group-label');\r\n const parent = formItem?.parentElement || element.parentElement;\r\n\r\n formItem?.classList.remove('success-state');\r\n formItem?.classList.remove('error-state');\r\n //formItem?.classList.remove('required-state');\r\n if (!clear) {\r\n formItem?.classList.add('success-state');\r\n }\r\n // label?.classList.remove('error-text');\r\n if (parent.querySelector('span.error-text')) {\r\n parent.removeChild(parent.querySelector('span.error-text'));\r\n }\r\n }\r\n }\r\n\r\n protected applyValidationStyle(element: HTMLElement, v: AXValidationRuleResult): void {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const formGroup = element.closest('.form-group');\r\n const formItem = formGroup?.querySelector('.form-item') || element.closest('.form-item') || element.querySelector('.form-item');\r\n const label = formGroup?.querySelector('.form-group-label');\r\n const parent = formItem?.parentElement || element.parentElement;\r\n formItem?.classList.add('error-state');\r\n formItem?.classList.remove('success-state');\r\n if (parent.querySelector('span.error-text')) {\r\n parent.removeChild(parent.querySelector('span.error-text'));\r\n }\r\n if (this.__validation.showMessage) {\r\n const span = document.createElement('span');\r\n span.innerText = v.message;\r\n span.classList.add('ax', 'error-text');\r\n parent.appendChild(span);\r\n }\r\n // label?.classList.add('error-text');\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport abstract class AXBaseTextComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseValueComponent<string> {\r\n\r\n ngAfterViewInit() {\r\n if (this.input) {\r\n this.input.nativeElement.onkeyup = (e) => {\r\n this.userChange = true;\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n this.input.nativeElement.onkeydown = (e) => {\r\n this.userChange = true;\r\n\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n this.input.nativeElement.onkeypress = (e) => {\r\n this.userChange = true;\r\n\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit(): void {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @ViewChild('input', { static: true })\r\n @ContentChild('input', { static: true })\r\n input: ElementRef<HTMLInputElement>;\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n this.initValidation(this.ref, 'value', v);\r\n }\r\n\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input()\r\n size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n\r\n @Input()\r\n placeholder: string;\r\n\r\n userChange: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, protected ref: ElementRef) {\r\n super();\r\n }\r\n\r\n @Output()\r\n public onkey: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\r\n\r\n @Output()\r\n public onBlur: EventEmitter<AXHtmlEvent<Event>> = new EventEmitter<AXHtmlEvent<Event>>();\r\n\r\n @Output()\r\n public onFocus: EventEmitter<AXHtmlEvent<Event>> = new EventEmitter<AXHtmlEvent<Event>>();\r\n\r\n @Output()\r\n public onValueChanged: EventEmitter<AXBaseInputChangeEvent> = new EventEmitter<AXBaseInputChangeEvent>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n @Input()\r\n icon: string = '';\r\n\r\n @Input()\r\n allowClear: boolean = false;\r\n\r\n private _value: string;\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n if (v !== this._value) {\r\n const old = this._value;\r\n this._value = v;\r\n\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old,\r\n isUserChange: this.userChange\r\n });\r\n this.userChange = false;\r\n this.clearValidationStyle(this.input.nativeElement, v ? false : true);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n focus() {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n clear() {\r\n this.userChange = true;\r\n\r\n this.value = null;\r\n this.input.nativeElement.value = null;\r\n }\r\n\r\n isFocused(): boolean {\r\n return this.input.nativeElement === document.activeElement;\r\n }\r\n\r\n setTextAlign() {\r\n if (this.textAlign === 'left') {\r\n return 'text-left';\r\n }\r\n if (this.textAlign === 'right') {\r\n return 'text-right';\r\n }\r\n }\r\n\r\n handleInputBlur(e: Event) {\r\n this.onBlur.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n\r\n handleInputFocus(e: Event) {\r\n this.onFocus.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n}\r\n\r\nexport abstract class AXBaseButtonComponent extends AXBaseComponent implements AXBaseClickableComponent, AXBaseSizableComponent {\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Output()\r\n click: EventEmitter<AXHtmlEvent<MouseEvent>> = new EventEmitter<AXHtmlEvent<MouseEvent>>();\r\n\r\n @Input()\r\n size: AXElementSize;\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n}\r\n\r\nexport abstract class AXBaseDropdownComponent extends AXBaseComponent implements AXBaseInteractiveComponent, AXBaseSizableComponent {\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize;\r\n\r\n @Input()\r\n fitParent: boolean = true;\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @Input()\r\n showDropDownButton: boolean = true;\r\n\r\n abstract close();\r\n abstract open();\r\n}\r\n","import {\r\n Overlay,\r\n OverlayKeyboardDispatcher,\r\n OverlayPositionBuilder,\r\n ScrollStrategyOptions,\r\n OverlayContainer,\r\n OverlayRef,\r\n OverlayConfig\r\n} from '@angular/cdk/overlay';\r\nimport {\r\n ComponentFactoryResolver,\r\n Inject,\r\n Injector,\r\n NgZone,\r\n Renderer2,\r\n RendererFactory2,\r\n Injectable\r\n} from '@angular/core';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicOverlayContainer extends OverlayContainer {\r\n public setContainerElement(containerElement: HTMLElement): void {\r\n this._containerElement = containerElement;\r\n }\r\n}\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicOverlay extends Overlay {\r\n private readonly _dynamicOverlayContainer: DynamicOverlayContainer;\r\n private renderer: Renderer2;\r\n\r\n constructor(\r\n scrollStrategies: ScrollStrategyOptions,\r\n _overlayContainer: DynamicOverlayContainer,\r\n _componentFactoryResolver: ComponentFactoryResolver,\r\n _positionBuilder: OverlayPositionBuilder,\r\n _keyboardDispatcher: OverlayKeyboardDispatcher,\r\n _injector: Injector,\r\n _ngZone: NgZone,\r\n @Inject(DOCUMENT) _document: any,\r\n _directionality: Directionality,\r\n rendererFactory: RendererFactory2\r\n ) {\r\n super(\r\n scrollStrategies,\r\n _overlayContainer,\r\n _componentFactoryResolver,\r\n _positionBuilder,\r\n _keyboardDispatcher,\r\n _injector,\r\n _ngZone,\r\n _document,\r\n _directionality\r\n );\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n\r\n this._dynamicOverlayContainer = _overlayContainer;\r\n }\r\n\r\n private setContainerElement(containerElement: HTMLElement): void {\r\n this.renderer.setStyle(containerElement, 'transform', 'translateZ(0)');\r\n this._dynamicOverlayContainer.setContainerElement(containerElement);\r\n }\r\n\r\n public createOn(containerElement: HTMLElement, config?: OverlayConfig): OverlayRef {\r\n this.setContainerElement(containerElement);\r\n return super.create(config);\r\n }\r\n}","import { Injectable, ApplicationRef, ViewContainerRef, TemplateRef, EventEmitter } from '@angular/core';\r\nimport { Overlay, PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, Portal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AXConnectedPosition } from '@acorex/core';\r\nimport { merge } from 'rxjs';\r\nimport { DynamicOverlay } from './custom-cdk-overlay.service';\r\n\r\nexport interface AXOverlayViewRef {\r\n instance: any;\r\n dispose: () => void;\r\n}\r\n\r\nexport interface AXOverlayConfigs {\r\n position?: AXConnectedPosition | AXConnectedPosition[];\r\n hasBackdrop?: boolean;\r\n transparentBackdrop?: boolean;\r\n closeOnClickOutside?: boolean;\r\n targetElement?: HTMLElement;\r\n containerElement?: HTMLElement;\r\n onBackdropClick?: () => void;\r\n panelClass?: string[] | string;\r\n backdropClass?: string[] | string;\r\n scroll?: 'auto' | 'block';\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXOverlayService {\r\n constructor(\r\n private overlayService: DynamicOverlay,\r\n private overlayService2: Overlay,\r\n private appRef: ApplicationRef) {\r\n\r\n }\r\n\r\n show(content: any, context?: any, configs?: AXOverlayConfigs): AXOverlayViewRef {\r\n configs = Object.assign({\r\n hasBackdrop: true,\r\n transparentBackdrop: true,\r\n closeOnClickOutside: true\r\n }, configs || {});\r\n // get root viewref\r\n const viewRef: ViewContainerRef = this.appRef.components[0].instance.viewRef;\r\n\r\n let portal: Portal<any>;\r\n // get component by route\r\n if (typeof content === 'string') {\r\n // TODO\r\n }\r\n // create portal from component\r\n else if (content instanceof TemplateRef) {\r\n portal = new TemplatePortal(content, viewRef, context);\r\n }\r\n else if (typeof content === 'function') {\r\n portal = new ComponentPortal(content, viewRef);\r\n }\r\n let positionStrategy: PositionStrategy;\r\n if (configs.position && configs.targetElement) {\r\n positionStrategy = this.overlayService.position()\r\n .flexibleConnectedTo(configs.targetElement)\r\n .withPositions(\r\n Array.isArray(configs.position) ? configs.position : [configs.position]\r\n )\r\n .withPush(true);\r\n }\r\n else {\r\n positionStrategy = this.overlayService.position().global().centerHorizontally().centerVertically();\r\n }\r\n let scrollStrategy: ScrollStrategy = this.overlayService.scrollStrategies.reposition({ autoClose: true });\r\n if (configs.scroll === 'block') {\r\n scrollStrategy = this.overlayService.scrollStrategies.block();\r\n }\r\n\r\n const config = {\r\n positionStrategy,\r\n scrollStrategy,\r\n hasBackdrop: configs.hasBackdrop,\r\n disposeOnNavigation: true,\r\n backdropClass: configs.backdropClass ? configs.backdropClass : (configs.transparentBackdrop ? 'cdk-overlay-transparent-backdrop' : undefined),\r\n panelClass: configs.panelClass ? configs.panelClass : ['animate__animated', 'animate__fadeIn']\r\n };\r\n // joon nanat dorost sho\r\n let overlayRef = configs.containerElement ? this.overlayService.createOn(configs.containerElement, config) : this.overlayService2.create(config);\r\n\r\n const host = overlayRef.attach(portal);\r\n if (host.instance) {\r\n Object.assign(host.instance, context);\r\n setTimeout(() => {\r\n host.changeDetectorRef.detectChanges();\r\n }, 0);\r\n }\r\n if (configs.closeOnClickOutside) {\r\n merge(\r\n overlayRef.backdropClick(),\r\n overlayRef.detachments(),\r\n ).subscribe(() => {\r\n overlayRef.dispose();\r\n overlayRef = undefined;\r\n if (configs.onBackdropClick) {\r\n configs.onBackdropClick();\r\n }\r\n });\r\n\r\n }\r\n return {\r\n instance: host.instance,\r\n dispose: overlayRef.dispose.bind(overlayRef)\r\n };\r\n }\r\n\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-loading-indicator',\r\n templateUrl: './loading-indicator.component.html'\r\n})\r\nexport class AXLoadingIndicatorComponent implements OnInit {\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.size = 80;\r\n }\r\n\r\n @Input()\r\n size: number;\r\n}\r\n","import { Injectable, ComponentRef, EventEmitter } from '@angular/core';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXLoadingPanelComponent } from './loading-panel.component';\r\nimport { AXOverlayService, AXOverlayViewRef } from '../popover/overlay.service';\r\nimport { AXLoadingIndicatorComponent } from './loading-indicator.component';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXLoadingService {\r\n\r\n private _stack: { id: number, component: AXOverlayViewRef }[] = [];\r\n\r\n\r\n constructor(private injection: AXRenderService, private overlayService: AXOverlayService) {\r\n\r\n }\r\n\r\n show(location?: Element): number {\r\n let host: Element;\r\n if (location) {\r\n host = location.closest('.ax-loading-host');\r\n }\r\n const containerElement = (host || location) as HTMLDivElement;\r\n const com = this.overlayService.show(AXLoadingIndicatorComponent, {},\r\n {\r\n closeOnClickOutside: false,\r\n containerElement,\r\n hasBackdrop: true,\r\n backdropClass: ['ax-loading-overlay'],\r\n scroll: 'block'\r\n });\r\n const id = new Date().getTime();\r\n this._stack.push({ id, component: com });\r\n return id;\r\n }\r\n\r\n hide(id): void {\r\n const f = this._stack.find(c => c.id === id);\r\n if (f) {\r\n f.component.dispose();\r\n this._stack = this._stack.filter(c => c.id !== id);\r\n }\r\n }\r\n}","import { Component, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\n\r\n@Component({\r\n selector: 'ax-page',\r\n template: `\r\n <div class=\"page-content-wrap\">\r\n <div class=\"ax-page-toolbar\">\r\n <ng-content select=\"ax-toolbar\"></ng-content>\r\n </div>\r\n <ng-content select=\"ax-page-content\"></ng-content>\r\n <ng-content select=\"ax-page-footer\"></ng-content>\r\n </div>\r\n`\r\n})\r\nexport class AXPageComponent {\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) { }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n private _loadingId: number;\r\n\r\n private _isLoading: boolean = false;\r\n public get isLoading(): boolean {\r\n return this._isLoading;\r\n }\r\n public set isLoading(v: boolean) {\r\n this._isLoading = v;\r\n if (this._loadingId && !v) {\r\n this.loadingService.hide(this._loadingId);\r\n this._loadingId = null;\r\n }\r\n if (v) {\r\n this._loadingId = this.loadingService.show(this.el.nativeElement);\r\n }\r\n }\r\n}\r\n","import { EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXDataEvent } from './events.class';\r\nimport { AXMenuItemClickEvent } from '../menu/menu.component';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { AXPageComponent } from '../page/page.component';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport const TAB_META_KEY = '__meta__';\r\n\r\nexport class AXPageCloseEvent extends AXDataEvent<any> {\r\n}\r\nexport class AXPageClosing {\r\n cancel: boolean = false;\r\n data?: any;\r\n}\r\n\r\nexport class AXPageResult {\r\n sender: any;\r\n data?: any;\r\n}\r\n\r\nexport class AXPageClosedPromise extends Promise<AXPageResult> {\r\n\r\n private closeMethod: () => void;\r\n constructor(\r\n executor: (resolve: (value?: AXPageResult | PromiseLike<AXPageResult>) => void,\r\n reject: (reason?: any) => void) => void\r\n ) {\r\n super(executor);\r\n }\r\n\r\n public close() {\r\n if (this.closeMethod) {\r\n this.closeMethod();\r\n }\r\n }\r\n}\r\n\r\nexport abstract class AXBasePageComponent {\r\n\r\n @ViewChild(AXPageComponent, { static: true })\r\n private pageContainer: AXPageComponent;\r\n\r\n private _isLoading: boolean = false;\r\n public get isLoading(): boolean {\r\n return this._isLoading;\r\n }\r\n public set isLoading(v: boolean) {\r\n this._isLoading = v;\r\n if (this.pageContainer) {\r\n this.pageContainer.isLoading = this.isLoading;\r\n }\r\n }\r\n\r\n\r\n onClosed: EventEmitter<AXPageCloseEvent> = new EventEmitter<AXPageCloseEvent>();\r\n\r\n close(data?: any) {\r\n this.onClosed.emit({\r\n component: this,\r\n data: data\r\n });\r\n }\r\n\r\n onClosing(e: AXPageClosing): void | Promise<void> {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onClosed.unsubscribe();\r\n }\r\n}\r\n\r\nexport abstract class AXBasePopupPageComponent extends AXBasePageComponent {\r\n\r\n\r\n\r\n\r\n\r\n\r\n constructor() {\r\n super();\r\n setTimeout(() => {\r\n this.configFooterButtons(this.getFooterButtons());\r\n });\r\n }\r\n\r\n\r\n private _footerButtons: AXButtonItem[] = [];\r\n onFooterButtonsChanged = new Subject<AXButtonItem[]>();\r\n\r\n protected get footerButtons(): AXButtonItem[] {\r\n return this._footerButtons || [];\r\n }\r\n\r\n protected configFooterButtons(buttons?: AXButtonItem[]) {\r\n if (buttons) {\r\n this._footerButtons = buttons;\r\n this.onFooterButtonsChanged.next(buttons);\r\n }\r\n else {\r\n this.onFooterButtonsChanged.next(this.footerButtons);\r\n }\r\n }\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return [];\r\n }\r\n}\r\n\r\n\r\n","import { Component, Input, ViewEncapsulation, ElementRef, ViewChild, HostListener } from '@angular/core';\r\nimport { AXBaseButtonComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-button',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './button.component.html'\r\n})\r\nexport class AXButtonComponent extends AXBaseButtonComponent {\r\n\r\n constructor(private el: ElementRef) {\r\n super();\r\n }\r\n\r\n @ViewChild('container', { static: true }) container: ElementRef<HTMLButtonElement>;\r\n\r\n @Input()\r\n type: string = 'primary';\r\n\r\n @Input()\r\n icon: string;\r\n\r\n @Input()\r\n submitBehavior: boolean = false;\r\n\r\n @Input()\r\n cancelBehavior: boolean = false;\r\n\r\n @Input()\r\n block: boolean = false;\r\n\r\n @Input()\r\n loading: boolean = false;\r\n\r\n @Input()\r\n selected: boolean = false;\r\n\r\n ngAfterViewInit(): void {\r\n if (this.submitBehavior) {\r\n setTimeout(() => {\r\n this.focusButton();\r\n }, 10);\r\n }\r\n }\r\n\r\n\r\n\r\n handleClick(e: MouseEvent) {\r\n if (this.disabled === true) {\r\n this.click.emit({\r\n component: this,\r\n htmlElement: this.el.nativeElement,\r\n htmlEvent: e,\r\n });\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(e: KeyboardEvent) {\r\n if (this.cancelBehavior) {\r\n this.handleClick(null);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n focusButton() {\r\n this.container.nativeElement.focus();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXButtonComponent } from './button.component';\r\n\r\nconst COMPONENT = [AXButtonComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXButtonModule { }\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, ElementRef } from '@angular/core';\r\nimport { AXDateTime, AXDateTimeRange, AXCalendarType, AXTranslator } from '@acorex/core';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../../base/element.class';\r\nimport { AXValueEvent } from '../../base/events.class';\r\nimport { AXConfig } from '@acorex/core';\r\n\r\nexport type AXCalendarViewType = 'year' | 'month' | 'day';\r\n\r\nexport type AXCalendarHolidays = AXCalendarHoliday[];\r\nexport type AXCalendarHolidaysFunc = (start: Date, end: Date, type: AXCalendarType) => AXCalendarHoliday[];\r\nexport interface AXCalendarHoliday {\r\n date: Date;\r\n title: string;\r\n description?: string;\r\n}\r\n\r\nexport type AXCalendarWeekends = AXCalendarWeekend[];\r\nexport type AXCalendarWeekendsFunc = (start: Date, end: Date, type: AXCalendarType) => AXCalendarWeekend[];\r\n\r\nexport interface AXCalendarWeekend {\r\n indexDay: number;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-calendar-box',\r\n templateUrl: './calendar-box.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXCalendarBoxComponent implements AXBaseSizableComponent {\r\n weekdays: string[] = [];\r\n\r\n private d = {\r\n jalali: {\r\n locale: AXConfig.get('dateTime.jalali.locale') || 'fa',\r\n dir: 'rtl',\r\n number: 1\r\n },\r\n gregorian: {\r\n locale: AXConfig.get('dateTime.gregorian.locale') || 'en',\r\n dir: 'ltr',\r\n number: 0\r\n }\r\n };\r\n\r\n numRotate: number;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n type: AXCalendarType;\r\n\r\n @Input()\r\n locale: string;\r\n\r\n @Input()\r\n dir: string;\r\n\r\n @Input()\r\n min: Date;\r\n\r\n @Input()\r\n max: Date;\r\n\r\n @Input()\r\n selectableHoliday: boolean = true;\r\n\r\n @Input()\r\n dayStyle = [];\r\n\r\n @Input()\r\n dayMinMaxResoan = '';\r\n\r\n private getHoliday: AXCalendarHolidays | AXCalendarHolidaysFunc;\r\n\r\n private getWeekend: AXCalendarWeekends | AXCalendarWeekendsFunc;\r\n\r\n @Input('showTodayButton')\r\n public showTodayButton: boolean = false;\r\n\r\n matrix: any[] = [];\r\n rotated: boolean = false;\r\n private _view: AXCalendarViewType = 'day';\r\n @Input()\r\n public get view(): AXCalendarViewType {\r\n return this._view;\r\n }\r\n public set view(v: AXCalendarViewType) {\r\n this._view = v;\r\n this.navigate(0);\r\n }\r\n\r\n private _depth: AXCalendarViewType = 'day';\r\n\r\n @Input()\r\n public get depth(): AXCalendarViewType {\r\n return this._depth;\r\n }\r\n public set depth(v: AXCalendarViewType) {\r\n this._depth = v;\r\n this.view = v;\r\n }\r\n\r\n viewRange: AXDateTimeRange;\r\n private holidays: AXCalendarHoliday[] = [];\r\n private weekends: AXCalendarWeekend[] = [];\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<Date>> = new EventEmitter<AXValueEvent<Date>>();\r\n\r\n @Output()\r\n onClick: EventEmitter<AXValueEvent<Date>> = new EventEmitter<AXValueEvent<Date>>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n private _value: AXDateTime;\r\n @Input()\r\n public get value(): Date {\r\n return this._value?.date;\r\n }\r\n public set value(v: Date) {\r\n let vv: AXDateTime;\r\n if (v) {\r\n vv = AXDateTime.convert(v);\r\n }\r\n let unValidDate = false;\r\n if (this.max || this.min) {\r\n unValidDate = this.isInMInMaxRange(vv);\r\n }\r\n if (!unValidDate) {\r\n if (vv && !vv.equal(this._value)) {\r\n this._value = vv;\r\n this._value.type = this.type;\r\n this.setFocus(this._value.clone());\r\n this.valueChange.emit(vv.date);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: this._value?.date,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n if (v == undefined) {\r\n this._value = null;\r\n this.focusedValue = this.today;\r\n this.viewRange = this.today.month.range;\r\n this.navigate(0);\r\n }\r\n this.onClick.emit({\r\n component: this,\r\n value: this._value?.date,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n focusedValue: AXDateTime;\r\n get today(): AXDateTime {\r\n return new AXDateTime(new Date(), this.type);\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef) {\r\n // set defaults\r\n this.getHoliday = AXConfig.get('dateTime.holidays');\r\n this.getWeekend = AXConfig.get('dateTime.weekends');\r\n }\r\n findDay(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n getStyle(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {\r\n return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).style;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n getTitle(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {\r\n return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).text;\r\n } else {\r\n if (\r\n (this.min && this.max && date.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1) ||\r\n date.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1\r\n ) {\r\n return this.dayMinMaxResoan;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.focusedValue = new AXDateTime(new Date(), this.type);\r\n //\r\n this.initLayout();\r\n //\r\n this.viewRange = this.today.month.range;\r\n if (this.value) {\r\n this.setFocus(new AXDateTime(this.value, this.type));\r\n } else {\r\n this.setFocus(this.today);\r\n }\r\n\r\n this.view = 'day';\r\n }\r\n\r\n getViewCompaire(view: AXCalendarViewType) {\r\n switch (view) {\r\n case 'day':\r\n return 'YMD';\r\n case 'month':\r\n return 'YM';\r\n case 'year':\r\n return 'Y';\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.navigate(0);\r\n }\r\n\r\n private initLayout() {\r\n if (!this.type) {\r\n this.type = AXConfig.get('dateTime.type') || 'gregorian';\r\n }\r\n if (!this.locale) {\r\n this.locale = this.d[this.type]?.locale || this.locale;\r\n }\r\n if (!this.dir) {\r\n this.dir = this.d[this.type]?.dir || 'ltr';\r\n }\r\n this.numRotate = this.d[this.type]?.number || 0;\r\n const path = 'dateTime.weekdaysShort';\r\n this.weekdays = [\r\n AXTranslator.get(`${path}.sun`, this.locale),\r\n AXTranslator.get(`${path}.mon`, this.locale),\r\n AXTranslator.get(`${path}.tue`, this.locale),\r\n AXTranslator.get(`${path}.wed`, this.locale),\r\n AXTranslator.get(`${path}.thu`, this.locale),\r\n AXTranslator.get(`${path}.fri`, this.locale),\r\n AXTranslator.get(`${path}.sat`, this.locale)\r\n ];\r\n }\r\n\r\n getTodayName() {\r\n return AXTranslator.get('dateTime.today', this.locale);\r\n }\r\n\r\n prev() {\r\n this.navigate(-1);\r\n }\r\n\r\n next() {\r\n this.navigate(1);\r\n }\r\n\r\n rotate(array, n) {\r\n const len = array.length;\r\n return !(n % len) ? array : n > 0 ? array.map((e, i, a) => a[(i + n) % len]) : array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);\r\n }\r\n\r\n navigate(value: number | AXDateTime) {\r\n let start: AXDateTime;\r\n let end: AXDateTime;\r\n if (this.view === 'day') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('month');\r\n } else {\r\n fd = this.viewRange.startTime.add('day', 15).add('month', value).startOf('month');\r\n }\r\n\r\n start = fd.firstDayOfWeek;\r\n end = fd.endOf('month').endDayOfWeek;\r\n\r\n start = start.add('day', -this.numRotate);\r\n end = end.add('day', 7).add('day', -this.numRotate);\r\n\r\n // TODO: apply start of week\r\n if (!this.rotated && this.weekdays.length > 0) {\r\n if (this.type === 'jalali') {\r\n this.weekdays = this.rotate(this.weekdays, -this.numRotate);\r\n } else {\r\n this.weekdays = this.rotate(this.weekdays, this.numRotate);\r\n }\r\n\r\n this.rotated = true;\r\n }\r\n } else if (this.view === 'month') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('year');\r\n } else {\r\n fd = this.viewRange.startTime.add('day', 15).add('year', value).startOf('year');\r\n }\r\n start = fd;\r\n end = fd.endOf('year');\r\n } else if (this.view === 'year') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('year');\r\n } else {\r\n fd = this.viewRange.startTime\r\n .add('day', 15)\r\n .add('year', value * 10)\r\n .startOf('year');\r\n }\r\n start = fd.add('year', -4);\r\n end = start.add('year', 8).endOf('year');\r\n }\r\n this.viewRange = new AXDateTimeRange(start, end);\r\n //\r\n if (this.getHoliday && typeof this.getHoliday === 'function') {\r\n this.holidays = this.getHoliday(start.date, end.date, this.type);\r\n }\r\n\r\n if (this.getWeekend && typeof this.getWeekend === 'function') {\r\n this.weekends = this.getWeekend(start.date, end.date, this.type);\r\n }\r\n\r\n //\r\n if (this.view === 'day') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('day', this.type)), 7);\r\n if (this.matrix.length > 0 && this.matrix[0].find((c) => c.nextMonth === false) === undefined) {\r\n this.matrix.splice(0, 1);\r\n }\r\n if (this.matrix[this.matrix.length - 1].find((c) => c.nextMonth === false) === undefined) {\r\n this.matrix.splice(this.matrix.length - 1, 1);\r\n }\r\n } else if (this.view === 'month') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('month', this.type)), 3);\r\n } else if (this.view === 'year') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('year', this.type)), 3);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private applyStyle(dates: AXDateTime[]): any[] {\r\n const items: any[] = [];\r\n dates.forEach((d, i, j) => {\r\n const item: any = {};\r\n item.date = d;\r\n\r\n item.selected = d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;\r\n item.focused = d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;\r\n item.today = this.today && d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;\r\n if (this.view === 'day') {\r\n // item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM') !== 0;\r\n item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;\r\n\r\n item.unselect = this.isInMInMaxRange(d);\r\n this.holidays.forEach((h) => {\r\n const comp = d.compaireNew(new AXDateTime(h.date, this.type), 'YMD', this.type);\r\n if (comp === 0) {\r\n item.holiday = true;\r\n if (this.selectableHoliday === false) {\r\n item.unselect = true;\r\n }\r\n }\r\n });\r\n\r\n const indexDay = i - Math.floor(i / 7) * 7;\r\n this.weekends.forEach((cc) => {\r\n if (Number(cc) === indexDay) {\r\n item.holiday = true;\r\n if (this.selectableHoliday === false) {\r\n item.unselect = true;\r\n }\r\n }\r\n });\r\n }\r\n items.push(item);\r\n });\r\n return items;\r\n }\r\n\r\n changeView() {\r\n if (this.view === 'day') {\r\n this.view = 'month';\r\n } else if (this.view === 'month') {\r\n this.view = 'year';\r\n }\r\n }\r\n\r\n matrixify(arr: any[], cols) {\r\n const rows = Math.ceil(arr.length / cols);\r\n const matrix = [];\r\n if (rows * cols === arr.length) {\r\n for (let i = 0; i < arr.length; i += cols) {\r\n matrix.push(arr.slice(i, cols + i));\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n setDayClick(event: MouseEvent, item) {\r\n if (item.unselect !== true) {\r\n this.value = item.date.date;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n isInMInMaxRange(d) {\r\n let r = false;\r\n if (d !== undefined) {\r\n if (this.min && !this.max) {\r\n r = d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1;\r\n }\r\n if (this.max && !this.min) {\r\n r = d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;\r\n }\r\n if (this.min && this.max) {\r\n r =\r\n d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||\r\n d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n setMonthClick(event: MouseEvent, date: AXDateTime) {\r\n if (this.depth === 'month') {\r\n this.value = date.date;\r\n } else {\r\n this.view = 'day';\r\n this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year).set('month', date.monthOfYear));\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n setYearClick(event: MouseEvent, date: AXDateTime) {\r\n if (this.depth === 'year') {\r\n this.value = date.date;\r\n } else {\r\n this.view = 'month';\r\n this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year));\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n setFocus(date: AXDateTime) {\r\n this.focusedValue = date;\r\n this.navigate(this.focusedValue);\r\n }\r\n\r\n setToday() {\r\n this.value = this.today.date;\r\n this.view = 'day';\r\n }\r\n\r\n trackByFn(index, item: any) {\r\n return item.date.date.getTime();\r\n }\r\n}\r\n","import { Component, Input, NgZone, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, TemplateRef } from '@angular/core';\r\nimport { ElementRef } from '@angular/core';\r\nimport { AXOverlayService, AXOverlayViewRef } from './overlay.service';\r\nimport { AXConnectedPosition } from '@acorex/core';\r\n\r\n\r\n@Component({\r\n selector: 'ax-popover',\r\n templateUrl: './popover.component.html',\r\n styleUrls: ['./popover.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AXPopoverComponent {\r\n constructor(\r\n private overlayService: AXOverlayService,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef) {\r\n\r\n }\r\n //\r\n private targetEl: HTMLElement;\r\n private overlay: AXOverlayViewRef;\r\n @ViewChild('tpl')\r\n private template: TemplateRef<any>;\r\n //\r\n @Input('target') target: string | HTMLElement;\r\n //\r\n @Input('position') position: AXConnectedPosition;\r\n //\r\n @Input('openMode') openMode: 'manual' | 'click' | 'hover' = 'manual';\r\n //\r\n @Input('closeMode') closeMode: 'manual' | 'clickout' | 'mouseout' = 'clickout';\r\n //\r\n private _visible: boolean = false;\r\n @Input()\r\n public get visible(): boolean {\r\n return this._visible;\r\n }\r\n public set visible(v: boolean) {\r\n if (v !== this._visible) {\r\n if (v) {\r\n this.internalShow();\r\n } else {\r\n this.internalHide();\r\n }\r\n this._visible = v;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n //\r\n toggle() {\r\n this.visible = !this.visible;\r\n }\r\n\r\n close() {\r\n this.zone.run(() => {\r\n this.visible = false;\r\n });\r\n }\r\n\r\n open() {\r\n this.zone.run(() => {\r\n this.visible = true;\r\n });\r\n }\r\n\r\n private internalShow() {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.overlay = this.overlayService.show(this.template, {}, {\r\n closeOnClickOutside: this.closeMode === 'clickout',\r\n targetElement: this.targetEl,\r\n hasBackdrop: this.closeMode === 'clickout',\r\n position: this.position,\r\n onBackdropClick: () => {\r\n this._visible = false;\r\n }\r\n });\r\n }\r\n\r\n private internalHide() {\r\n if (this.overlay) {\r\n this.overlay.dispose();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.targetEl = typeof this.target === 'string' ? document.querySelector<HTMLElement>(this.target) : this.target;\r\n //\r\n if (this.closeMode === 'mouseout') {\r\n this.targetEl.addEventListener('mouseout', this.close.bind(this));\r\n }\r\n if (this.openMode === 'hover' && this.targetEl) {\r\n this.targetEl.addEventListener('mouseover', this.open.bind(this));\r\n }\r\n //\r\n if (this.openMode === 'click' && this.targetEl) {\r\n this.targetEl.addEventListener('click', this.open.bind(this));\r\n }\r\n }, 100);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.openMode === 'click' && this.targetEl) {\r\n this.targetEl.removeEventListener('mouseover', this.open.bind(this));\r\n this.targetEl.removeEventListener('click', this.open.bind(this));\r\n this.targetEl.removeEventListener('mouseout', this.open.bind(this));\r\n }\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.visible;\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXPopoverComponent } from \"./popover.component\";\r\n\r\n@NgModule({\r\n declarations: [AXPopoverComponent],\r\n imports: [CommonModule],\r\n exports: [AXPopoverComponent],\r\n providers: []\r\n})\r\nexport class AXPopoverModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXCalendarBoxComponent } from './calendar-box.component';\r\nimport { AXCoreModule } from '@acorex/core';\r\nimport { AXPopoverModule } from '../../popover/popover.module';\r\nimport { AXButtonModule } from '../../button/button.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXCalendarBoxComponent],\r\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXCoreModule],\r\n exports: [AXCalendarBoxComponent],\r\n providers: []\r\n})\r\nexport class AXCalendarBoxModule {\r\n}\r\n","import { Component, ContentChildren, QueryList, Input, Attribute } from '@angular/core';\r\nimport { AXSchedulerViewType } from './scheduler.class';\r\n\r\n@Component({\r\n selector: 'ax-scheduler-view',\r\n template: ``\r\n})\r\nexport class AXSchedulerViewProperty {\r\n\r\n constructor(\r\n @Attribute('type') public type: AXSchedulerViewType,\r\n @Attribute('caption') public caption: string,\r\n @Attribute('name') public name: string,\r\n ) {\r\n\r\n }\r\n\r\n @Input()\r\n public interval: number;\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.interval) {\r\n this.interval = 1;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ax-scheduler-views',\r\n template: `\r\n <ng-content>\r\n </ng-content>`,\r\n})\r\nexport class AXSchedulerViewsProperty {\r\n @ContentChildren(AXSchedulerViewProperty) views: QueryList<AXSchedulerViewProperty>;\r\n constructor() { }\r\n}\r\n","import { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { EventEmitter } from '@angular/core';\r\n\r\n\r\n\r\n\r\nexport type AXSchedulerViewType = 'day' | 'week' | 'month' | 'timeline' | 'agenda';\r\n\r\nexport interface AXSchedulerRequestDataArge {\r\n startTime: AXDateTime;\r\n endTime: AXDateTime;\r\n events: AXSchedulerEvent[];\r\n}\r\n\r\nexport abstract class AXAsyncEventArgs {\r\n onComplete: EventEmitter<any> = new EventEmitter<any>(true);\r\n complete(): void {\r\n if (this.onComplete) {\r\n this.onComplete.emit(this);\r\n }\r\n }\r\n}\r\n\r\nexport class AXSchedulerEventChangeArgs extends AXAsyncEventArgs {\r\n canceled: boolean = false;\r\n event: AXSchedulerEvent;\r\n oldSlot: AXSchedulerSlot;\r\n newSlot: AXSchedulerSlot;\r\n}\r\n\r\nexport interface AXSchedulerSlot {\r\n range: AXDateTimeRange;\r\n events?: AXSchedulerEvent[];\r\n uid?: string;\r\n}\r\n\r\nexport interface AXSchedulerEvent {\r\n range: AXDateTimeRange;\r\n title: string;\r\n description?: string;\r\n uid: string;\r\n color: string;\r\n}\r\n\r\nexport interface AXSchedulerOccasion {\r\n range: AXDateTimeRange;\r\n title: string;\r\n description?: string;\r\n blocked?: boolean;\r\n}\r\n","export abstract class AXToolbarItem\r\n{\r\n alignment:\"start\"|\"end\"|\"center\"=\"center\";\r\n}","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ElementRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n NgZone,\r\n ChangeDetectorRef,\r\n TemplateRef,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { AXPlacement, AXMenuItem } from '@acorex/core';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\nimport { AXEvent } from '../base/events.class';\r\n\r\nexport class AXMenuItemClickEvent extends AXEvent<AXMenuItem, MouseEvent> {\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-menu',\r\n templateUrl: './menu.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenuComponent implements AXBaseSizableComponent {\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {\r\n }\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n _contentMenuTemplate: TemplateRef<any>;\r\n\r\n private _menuTemplate: TemplateRef<any>;\r\n @Input()\r\n public get menuTemplate(): TemplateRef<any> {\r\n return this._menuTemplate ? this._menuTemplate : this._contentMenuTemplate;\r\n }\r\n public set menuTemplate(v: TemplateRef<any>) {\r\n this._menuTemplate = v;\r\n }\r\n\r\n resizeChangeObserver: any;\r\n\r\n @Input()\r\n rtl: boolean;\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXMenuItemClickEvent> = new EventEmitter<AXMenuItemClickEvent>();\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n public selection: 'none' | 'single' | 'multiple' = 'none';\r\n\r\n @Input()\r\n public mode: 'click' | 'context' | 'visible' | 'manual' = 'visible';\r\n\r\n @Input()\r\n public target: string;\r\n\r\n @Input()\r\n public floatAlignment: AXPlacement;\r\n\r\n @Input()\r\n public floatPlacemnet: AXPlacement;\r\n\r\n public currentTarget: HTMLElement;\r\n\r\n @Input()\r\n public direction: 'vertical' | 'horizontal' = 'horizontal';\r\n\r\n private _items: AXMenuItem[];\r\n @Input()\r\n public get items(): AXMenuItem[] {\r\n return this._items;\r\n }\r\n public set items(v: AXMenuItem[]) {\r\n this._items = v;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n\r\n handleItemClick(e: MouseEvent, item?: AXMenuItem) {\r\n e.stopPropagation();\r\n if (item && (!item.items || !item.items.filter((c) => c.visible !== false).length) && !item.disable) {\r\n const m = {\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e,\r\n data: item,\r\n name: item?.name\r\n };\r\n if (item.onClick) {\r\n item.onClick();\r\n }\r\n else {\r\n this.onItemClick.emit(m);\r\n }\r\n\r\n return;\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ElementRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n NgZone,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\nimport { AXMenuComponent, AXMenuItemClickEvent } from '../../menu/menu.component';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-toolbar-menu',\r\n templateUrl: './toolbar-menu.component.html',\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarMenuComponent }],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXToolbarMenuComponent extends AXToolbarItem {\r\n \r\n constructor(\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n @ViewChild('menu', { static: true }) menu: AXMenuComponent\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXMenuItemClickEvent> = new EventEmitter<AXMenuItemClickEvent>();\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n _contentMenuTemplate: TemplateRef<any>;\r\n\r\n\r\n private _menuTemplate: TemplateRef<any>;\r\n @Input()\r\n public get menuTemplate(): TemplateRef<any> {\r\n return this._menuTemplate ? this._menuTemplate : this._contentMenuTemplate;\r\n }\r\n public set menuTemplate(v: TemplateRef<any>) {\r\n this._menuTemplate = v;\r\n }\r\n\r\n\r\n @Input()\r\n public selection: 'none' | 'single' | 'multiple' = 'none';\r\n\r\n private _items: AXMenuItem[];\r\n @Input()\r\n public get items(): AXMenuItem[] {\r\n return this._items;\r\n }\r\n public set items(v: AXMenuItem[]) {\r\n this._items = v;\r\n this.update();\r\n }\r\n\r\n\r\n handleItemClick(item?: AXMenuItemClickEvent) {\r\n this.onItemClick.emit(item);\r\n }\r\n\r\n\r\n public close(): void {\r\n // this.menu.close();\r\n }\r\n\r\n update() {\r\n //this.menu.update();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n}\r\n","import { Component, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXToolbarItem } from '../../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../../toolbar/menu/toolbar-menu.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-scheduler-view',\r\n template: `\r\n <ax-toolbar-menu [items]=\"items\" selection=\"single\" (onItemClick)=\"onItemClick($event)\"></ax-toolbar-menu>\r\n `,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSchedulerViewsComponent }]\r\n})\r\nexport class AXToolbarSchedulerViewsComponent {\r\n constructor() { }\r\n\r\n @ViewChild(AXToolbarMenuComponent, { static: true }) menu: AXToolbarMenuComponent;\r\n items: AXMenuItem[] = [];\r\n\r\n update(): void {\r\n this.menu.update();\r\n }\r\n\r\n @Output()\r\n onViewChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n onItemClick(e: AXMenuItem) {\r\n this.onViewChanged.emit(e.name);\r\n }\r\n\r\n}\r\n","import { Input, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { AXDateTime, AXDateTimeRange, TimeUnit } from '@acorex/core';\r\nimport { Output, Directive } from '@angular/core';\r\nimport { AXSchedulerSlot, AXSchedulerEventChangeArgs, AXSchedulerEvent, AXSchedulerViewType } from '../scheduler.class';\r\n\r\n\r\n\r\n\r\n\r\n@Directive()\r\nexport abstract class AXSchedulerBaseViewComponent implements OnDestroy {\r\n\r\n type: AXSchedulerViewType;\r\n timeSlot: number = 1;\r\n\r\n interval: number = 1;\r\n\r\n abstract updateSize(): void;\r\n\r\n abstract next(): void;\r\n\r\n abstract prev(): void;\r\n\r\n abstract navigate(date: AXDateTime): void;\r\n\r\n get dateRange(): AXDateTimeRange {\r\n if (this.slots && this.slots.length) {\r\n return new AXDateTimeRange(this.slots[0].range.startTime, this.slots[this.slots.length - 1].range.startTime);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n today: AXDateTime = new AXDateTime();\r\n\r\n\r\n\r\n @Output()\r\n onNavigatorDateChanged: EventEmitter<AXDateTime> = new EventEmitter<AXDateTime>();\r\n\r\n private _navigatorDate: AXDateTime;\r\n public get navigatorDate(): AXDateTime {\r\n return this._navigatorDate;\r\n }\r\n public set navigatorDate(v: AXDateTime) {\r\n this._navigatorDate = v;\r\n this.onNavigatorDateChanged.emit(v);\r\n }\r\n\r\n events: AXSchedulerEvent[] = [];\r\n\r\n slots: AXSchedulerSlot[] = [];\r\n\r\n getEvents(range: AXDateTimeRange, unit: TimeUnit) {\r\n return this.events.filter(c => c.range.startTime.equal(range.startTime, unit))\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.updateSize();\r\n }\r\n\r\n @Output()\r\n onEventChanged: EventEmitter<AXSchedulerEventChangeArgs> = new EventEmitter<AXSchedulerEventChangeArgs>(true);\r\n\r\n\r\n ngOnDestroy(): void {\r\n if (this.onEventChanged) {\r\n this.onEventChanged.unsubscribe();\r\n }\r\n if (this.onNavigatorDateChanged) {\r\n this.onEventChanged.unsubscribe();\r\n }\r\n if (this.slots) {\r\n this.slots = null;\r\n }\r\n if (this.events) {\r\n this.events = null;\r\n }\r\n }\r\n\r\n\r\n onDragDropOnDay(e, time?: number) {\r\n const el = e.item.element.nativeElement as HTMLElement;\r\n if (e.previousContainer !== e.container) {\r\n el.style.opacity = '0';\r\n const r: AXSchedulerEventChangeArgs = new AXSchedulerEventChangeArgs();\r\n r.event = e.item.data;\r\n r.oldSlot = e.previousContainer.data;\r\n r.newSlot = e.container.data;\r\n //\r\n r.onComplete.subscribe((er: AXSchedulerEventChangeArgs) => {\r\n el.style.opacity = '1';\r\n if (!er.canceled) {\r\n const slotTime = er.newSlot.range.startTime.startOf();\r\n const z = er.event.range.startTime.clone();\r\n const durDay = slotTime.duration(z.startOf(), 'days');\r\n const durTime = slotTime.duration(z, 'hours');\r\n const eventRange = er.event.range;\r\n //\r\n // if (time && slotTime.add('hour', time).hour + eventRange.duration('hours') > 24) {\r\n // return;\r\n // }\r\n if (time) {\r\n return;\r\n }\r\n er.event.range.startTime = er.event.range.startTime.add('day', durDay);\r\n er.event.range.endTime = er.event.range.endTime.add('day', durDay);\r\n er.oldSlot.events = er.oldSlot.events.filter(c => c.uid !== er.event.uid);\r\n if (time) {\r\n er.event.range.startTime = er.event.range.startTime.set('hour', time);\r\n let durTime = er.event.range.startTime.duration(z, 'hours') % 24;\r\n er.event.range.endTime = er.event.range.endTime.add('hour', durTime);\r\n }\r\n er.newSlot.events.push(er.event);\r\n\r\n }\r\n });\r\n this.onEventChanged.emit(r);\r\n }\r\n }\r\n\r\n}","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerSlot, AXSchedulerEvent } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-daytime-view.component.html',\r\n styleUrls: ['./scheduler-daytime-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerDayTimeViewComponent }]\r\n})\r\nexport class AXSchedulerDayTimeViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(private elm: ElementRef<HTMLDivElement>, private cdr: ChangeDetectorRef) { super(); }\r\n times: any[] = [];\r\n private vScroll: HTMLElement;\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.vScroll = this.elm.nativeElement.querySelector<HTMLElement>('.v-scroll');\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>('.header');\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>('.body');\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>('.view');\r\n this.container = this.elm.nativeElement.closest('.view-container') as HTMLElement;\r\n }\r\n\r\n updateSize(): void {\r\n const firstTr = this.body.querySelector('tr');\r\n if (firstTr) {\r\n let index = 0;\r\n this.header.querySelectorAll('th').forEach(c => {\r\n const td = firstTr.children.item(index++) as HTMLElement;\r\n td.style.width = `${c.offsetWidth}px`;\r\n });\r\n this.vScroll.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n if (this.container) {\r\n this.view.style.height = `${this.container.clientHeight}px`;\r\n }\r\n }\r\n this.arrangeEvents();\r\n }\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.times = [];\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n const d = date.addDay(i);\r\n const range = new AXDateTimeRange(d, d);\r\n const slot: AXSchedulerSlot = {\r\n range,\r\n events: this.getEvents(range, 'day')\r\n };\r\n this.slots.push(slot);\r\n }\r\n for (let i = 0; i < 24; i++) {\r\n this.times.push({\r\n display: ('0' + i).slice(-2) + ':00',\r\n value: i\r\n });\r\n }\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n\r\n arrangeEvents() {\r\n const events = this.elm.nativeElement.querySelectorAll<HTMLElement>('.event');\r\n if (events.length) {\r\n const height = events[0].closest('td').offsetHeight;\r\n events.forEach(e => {\r\n const uid = e.attributes.getNamedItem('data-uid').value;\r\n const event = this.events.find(c => c.uid === uid);\r\n const dur = Math.ceil(Math.abs(event.range.duration('hours')));\r\n let total = dur + 1;\r\n if (event.range.startTime.hour + total > 23) {\r\n total = 24 - event.range.startTime.hour;\r\n }\r\n e.style.height = (total * height) + 'px';\r\n });\r\n }\r\n }\r\n\r\n findEventIndex(event: AXSchedulerEvent): number {\r\n const a = this.events.filter(c =>\r\n c.range.startTime.equal(event.range.startTime, 'day')\r\n ).sort((d1, d2) => {\r\n return d1.range.startTime.compaireNew(d2.range.startTime);\r\n });\r\n\r\n return a.indexOf(event);\r\n }\r\n}\r\n","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation, HostListener, NgZone } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerEvent, AXSchedulerEventChangeArgs } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-month-view.component.html',\r\n styleUrls: ['./scheduler-month-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerMonthViewComponent }]\r\n})\r\nexport class AXSchedulerMonthViewComponent extends AXSchedulerBaseViewComponent {\r\n\r\n\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n @HostListener('wheel', ['$event'])\r\n onKeydownHandler(e: MouseWheelEvent) {\r\n if (e.deltaY > 0) {\r\n this.navigate(this.navigatorDate.addMonth(1))\r\n }\r\n else if (e.deltaY < 0) {\r\n this.navigate(this.navigatorDate.addMonth(-1))\r\n }\r\n }\r\n\r\n weekDays: any[] = [\r\n {\r\n index: 0, title: 'Sunday'\r\n },\r\n {\r\n index: 1, title: 'Moday'\r\n },\r\n {\r\n index: 2, title: 'Tuesday'\r\n },\r\n {\r\n index: 3, title: 'Wednesday'\r\n },\r\n {\r\n index: 4, title: 'Thursday'\r\n },\r\n {\r\n index: 5, title: 'Friday'\r\n },\r\n {\r\n index: 6, title: 'Saturday'\r\n }];\r\n startDayOfWeek = 'Moday';\r\n\r\n\r\n\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>('.header');\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>('.body');\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>('.view');\r\n this.container = this.elm.nativeElement.closest('.view-container') as HTMLElement;\r\n\r\n }\r\n\r\n\r\n updateSize(): void {\r\n const firstTr = this.body.querySelector('tr');\r\n if (firstTr) {\r\n let index = 0;\r\n this.header.querySelectorAll('th').forEach(c => {\r\n const td = firstTr.children.item(index++) as HTMLElement;\r\n td.style.width = `${c.offsetWidth}px`;\r\n });\r\n this.body.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n if (this.container) {\r\n this.view.style.height = `${this.container.clientHeight}px`;\r\n }\r\n }\r\n this.arrangeEvents();\r\n }\r\n\r\n matrixify(arr, rows, cols) {\r\n const matrix = [];\r\n if (rows * cols === arr.length) {\r\n for (let i = 0; i < arr.length; i += cols) {\r\n matrix.push(arr.slice(i, cols + i));\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n matrixSlots: any;\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n\r\n const start = date.month.range.startTime.firstDayOfWeek;\r\n const end = date.month.range.startTime.endDayOfWeek;\r\n const dur = end.duration(start);\r\n this.slots = [];\r\n for (let i = 0; i < dur; i++) {\r\n const d = start.addDay(i);\r\n const range: AXDateTimeRange = new AXDateTimeRange(d, d);\r\n this.slots.push({\r\n range,\r\n events: this.getEvents(range, 'day'),\r\n uid: range.startTime.date.getTime().toString()\r\n });\r\n }\r\n const dayInWeek = 7;\r\n const rows = Math.floor(dur / dayInWeek);\r\n this.matrixSlots = this.matrixify(this.slots, rows, dayInWeek);\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addMonth(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addMonth(-this.interval));\r\n }\r\n\r\n arrangeEvents() {\r\n this.slots.forEach(slot => {\r\n const slotTd = this.elm.nativeElement.querySelector<HTMLElement>(`[data-uid='` + slot.uid + `']`);\r\n const viewMoreDiv = slotTd.querySelector<HTMLElement>('.view-more');\r\n let viewMore = 0;\r\n viewMoreDiv.style.display = 'none';\r\n const width = slotTd.offsetWidth;\r\n slot.events.forEach(event => {\r\n const e = slotTd.querySelector<HTMLElement>(`[data-uid='` + event.uid + `']`);\r\n if (e) {\r\n const dur = Math.ceil(Math.abs(event.range.duration()));\r\n e.style.visibility = 'unset';\r\n e.style.width = (dur * width) + 'px';\r\n e.style.top = ((this.findEventIndex(event)) * 25) + 'px';\r\n if (e.getBoundingClientRect().bottom >= slotTd.getBoundingClientRect().bottom) {\r\n viewMore++;\r\n e.style.visibility = 'hidden';\r\n viewMoreDiv.style.display = 'unset';\r\n viewMoreDiv.innerHTML = `+${viewMore} more`;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n findEventIndex(event: AXSchedulerEvent): number {\r\n const a = this.events.filter(c =>\r\n c.range.startTime.equal(event.range.startTime, 'days')\r\n ).sort((d1, d2) => {\r\n const v = d1.range.startTime.compaireNew(d2.range.startTime, 'YMDhm');\r\n return v;\r\n });\r\n return a.indexOf(event);\r\n }\r\n\r\n private dragEnterSlot: HTMLElement;\r\n private dragPreview: HTMLElement;\r\n private dragHour: number = null;\r\n onDragStarted(event) {\r\n this.zone.runOutsideAngular(() => {\r\n this.dragEnterSlot = event.source.dropContainer.element.nativeElement;\r\n this.elm.nativeElement.addEventListener('mousemove', this.drageMouseMove.bind(this));\r\n });\r\n }\r\n onDragEntered(event) {\r\n this.dragPreview = document.querySelector<HTMLElement>('.cdk-drag-preview');\r\n this.dragEnterSlot = event.container.element.nativeElement;\r\n }\r\n onDragEnded(event) {\r\n this.dragEnterSlot = null;\r\n this.dragPreview = null;\r\n this.zone.runOutsideAngular(() => {\r\n this.elm.nativeElement.removeEventListener('mousemove', this.drageMouseMove.bind(this));\r\n });\r\n }\r\n\r\n private drageMouseMove(e: MouseEvent) {\r\n this.zone.runOutsideAngular(() => {\r\n if (!this.dragPreview) {\r\n this.dragPreview = document.querySelector<HTMLElement>('.cdk-drag-preview');\r\n }\r\n if (this.dragEnterSlot && this.dragPreview) {\r\n const diff = this.dragPreview.getBoundingClientRect().top - this.dragEnterSlot.getBoundingClientRect().top;\r\n const hour = Math.round((diff / this.dragEnterSlot.getBoundingClientRect().height) * 24);\r\n this.dragPreview.querySelector('.ax-sch-str').innerHTML = `${hour > 0 ? hour : 0}:00`;\r\n this.dragHour = hour;\r\n }\r\n });\r\n }\r\n\r\n onDragDropOnDay(e) {\r\n const el = e.item.element.nativeElement as HTMLElement;\r\n if (e.previousContainer !== e.container) {\r\n el.style.opacity = '0';\r\n const r: AXSchedulerEventChangeArgs = new AXSchedulerEventChangeArgs();\r\n r.event = e.item.data;\r\n r.oldSlot = e.previousContainer.data;\r\n r.newSlot = e.container.data;\r\n //\r\n r.onComplete.subscribe((er: AXSchedulerEventChangeArgs) => {\r\n el.style.opacity = '1';\r\n if (!er.canceled) {\r\n const slotTime = er.newSlot.range.startTime.startOf();\r\n const z = er.event.range.startTime.clone();\r\n const durDay = slotTime.duration(z.startOf(), 'days');\r\n er.event.range.startTime = er.event.range.startTime.add('day', durDay);\r\n if (this.dragHour != null) {\r\n er.event.range.startTime = er.event.range.startTime.set('hour', this.dragHour);\r\n er.event.range.startTime = er.event.range.startTime.set('minute', 0);\r\n }\r\n er.event.range.endTime = er.event.range.endTime.add('day', durDay);\r\n er.oldSlot.events = er.oldSlot.events.filter(c => c.uid !== er.event.uid);\r\n er.newSlot.events.push(er.event);\r\n }\r\n });\r\n this.onEventChanged.emit(r);\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\nimport { Component, OnInit, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core';\r\n\r\nimport { AXSchedulerViewType } from '../scheduler.class';\r\nimport { AXCalendarBoxComponent } from '../../calendar-box/calendar-box.component';\r\n\r\nimport { AXMenuItem, AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { AXToolbarItem } from '../../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../../toolbar/menu/toolbar-menu.component';\r\nimport { AXPopoverComponent } from '../../../popover/popover.component';\r\nimport { AXValueEvent } from '../../../base/events.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-scheduler-navigator',\r\n template: `\r\n <div id=\"nav\">\r\n <ax-toolbar-menu [items]=\"items\" (onItemClick)=\"onItemClick($event)\"></ax-toolbar-menu>\r\n <ax-popover target=\"#nav\" placement=\"bottom-end\" alignment=\"top-end\" #pop>\r\n <ax-calendar-box (onValueChanged)=\"onDateChange($event)\" [depth]=\"viewDepth\" #cal></ax-calendar-box>\r\n </ax-popover>\r\n</div>`,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSchedulerNavigatorComponent }],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXToolbarSchedulerNavigatorComponent {\r\n constructor(private cdr: ChangeDetectorRef) { }\r\n\r\n @ViewChild(AXToolbarMenuComponent, { static: true })\r\n toolbar: AXToolbarMenuComponent;\r\n\r\n @ViewChild('pop', { static: true })\r\n pop: AXPopoverComponent;\r\n\r\n @ViewChild('cal', { static: true })\r\n cal: AXCalendarBoxComponent;\r\n\r\n viewDepth: string = 'day';\r\n\r\n\r\n items: AXMenuItem[] = [];\r\n\r\n ngAfterViewInit(): void {\r\n this.items = [\r\n {\r\n name: 'prev',\r\n startIcon: 'fas fa-angle-left',\r\n tooltip: 'Prev'\r\n },\r\n {\r\n name: 'today',\r\n text: 'Today',\r\n tooltip: 'Today'\r\n },\r\n {\r\n name: 'next',\r\n startIcon: 'fas fa-angle-right',\r\n tooltip: 'Next'\r\n },\r\n {\r\n name: 'current',\r\n\r\n }];\r\n }\r\n\r\n\r\n @Output()\r\n onNavigate: EventEmitter<'next' | 'back' | AXDateTime> = new EventEmitter<'next' | 'back' | AXDateTime>();\r\n\r\n onItemClick(e: AXMenuItem) {\r\n if (e.name === 'current') {\r\n this.pop.toggle();\r\n }\r\n else if (e.name === 'today') {\r\n this.goto(new AXDateTime());\r\n }\r\n else {\r\n this.onNavigate.emit(e.name as any);\r\n this.pop.close();\r\n }\r\n }\r\n\r\n\r\n onDateChange(e: AXValueEvent<AXDateTime>) {\r\n this.goto(e.value);\r\n }\r\n\r\n goto(date: AXDateTime) {\r\n this.onNavigate.emit(date);\r\n this.pop.close();\r\n }\r\n\r\n\r\n set(range: AXDateTimeRange, type: AXSchedulerViewType) {\r\n if (range) {\r\n let text: string = '';\r\n const calDate: AXDateTime = range.startTime;\r\n const sameDay = range.startTime.compaireNew(range.endTime, 'YMD') === 0;\r\n const sameMonth = range.startTime.compaireNew(range.endTime, 'YM') === 0;\r\n const sameYear = range.startTime.compaireNew(range.endTime, 'Y') === 0;\r\n if (type !== 'month' && sameDay) {\r\n text = range.startTime.format('MMMM DD, YYYY');\r\n }\r\n //\r\n else if (type !== 'month' && sameMonth && sameYear) {\r\n text = `${range.startTime.format('MMMM DD')} - ${range.endTime.format('DD, YYYY')}`;\r\n }\r\n else if (type !== 'month' && sameYear) {\r\n text = `${range.startTime.format('MMM DD')} - ${range.endTime.format('MMM DD, YYYY')}`;\r\n }\r\n else if (type !== 'month') {\r\n text = `${range.startTime.format('MMM DD, YYYY')} - ${range.endTime.format('MMM DD, YYYY')}`;\r\n }\r\n else if (type === 'month') {\r\n text = range.startTime.add('day', 15).format('MMMM YYYY');\r\n }\r\n this.items[3].text = text;\r\n if (type === 'month') {\r\n this.viewDepth = 'month';\r\n }\r\n else {\r\n this.viewDepth = 'day';\r\n }\r\n //\r\n this.cal.focusedValue = calDate;\r\n this.cal.navigate(calDate);\r\n this.pop.close();\r\n //\r\n this.toolbar.update();\r\n }\r\n }\r\n\r\n}\r\n","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerSlot } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-agenda-view.component.html',\r\n styleUrls: ['./scheduler-agenda-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerAgendaViewComponent }]\r\n})\r\nexport class AXSchedulerAgendaViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n hideEmptyDays: boolean = true;\r\n\r\n updateSize() {\r\n }\r\n\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n let d = date.addDay(i);\r\n const range = new AXDateTimeRange(d, d);\r\n const slot: AXSchedulerSlot = {\r\n range,\r\n events: this.getEvents(range, 'day')\r\n }\r\n if (this.hideEmptyDays && slot.events.length === 0) {\r\n continue;\r\n }\r\n this.slots.push(slot);\r\n }\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n}\r\n","import { Component, OnInit, Input, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { AXSchedulerSlot } from '../../scheduler.class';\r\n\r\n@Component({\r\n templateUrl: './scheduler-timeline-view.component.html',\r\n styleUrls:['./scheduler-timeline-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerTimelineViewComponent }]\r\n})\r\nexport class AXSchedulerTimelineViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(private elm: ElementRef<HTMLDivElement>, private cdr: ChangeDetectorRef) { super(); }\r\n\r\n\r\n\r\n\r\n times: any[] = []\r\n\r\n //private hScroll: HTMLElement;\r\n private vScroll: HTMLElement;\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.vScroll = this.elm.nativeElement.querySelector<HTMLElement>(\".v-scroll\");\r\n //this.hScroll = this.elm.nativeElement.querySelector<HTMLElement>(\".h-scroll\");\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>(\".header\");\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>(\".body\");\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>(\".view\");\r\n\r\n this.container = this.elm.nativeElement.closest(\".view-container\") as HTMLElement;\r\n // this.hScroll.addEventListener(\"scroll\", () => {\r\n // this.updateSize();\r\n // });\r\n }\r\n\r\n\r\n updateSize(): void {\r\n // let firstTr = this.body.querySelector('tr');\r\n // if (firstTr) {\r\n // let index = 0;\r\n // this.header.querySelectorAll('th').forEach(c => {\r\n // let td = firstTr.children.item(index++) as HTMLElement;\r\n // td.style.width = `${c.offsetWidth}px`;\r\n // })\r\n // this.vScroll.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n // //this.vScroll.style.width = `${this.hScroll.clientWidth + this.hScroll.scrollLeft}px`;\r\n // if (this.container)\r\n // this.view.style.height = `${this.container.clientHeight}px`;\r\n // }\r\n }\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.navigatorDate = date;\r\n this.times=[];\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n let d = date.addDay(i);\r\n let range = new AXDateTimeRange(d, d);\r\n let slot: AXSchedulerSlot = {\r\n range: range,\r\n events: this.getEvents(range, \"day\")\r\n }\r\n this.slots.push(slot);\r\n }\r\n for (let i = 0; i < 24; i++) {\r\n this.times.push({\r\n display:('0' + i).slice(-2) + \":00\",\r\n value:i\r\n });\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n\r\n arrangeEvents()\r\n {\r\n \r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\nimport { AXValueEvent } from '../../base/events.class';\r\nimport { AXBaseInputComponent } from '../../base/element.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-search',\r\n templateUrl: './toolbar-search.component.html',\r\n styleUrls: ['./toolbar-search.component.scss'],\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSearchComponent }]\r\n})\r\n\r\nexport class AXToolbarSearchComponent {\r\n constructor() { }\r\n\r\n private searchChangeObserver: any;\r\n\r\n @ViewChild('input', { static: true }) inputSearch: ElementRef;\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<string>> = new EventEmitter<AXValueEvent<string>>();\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n const old = this._text;\r\n this._text = v;\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n public focus() {\r\n this.inputSearch.nativeElement.focus();\r\n }\r\n\r\n onSearchChanged(text: string) {\r\n if (!this.searchChangeObserver) {\r\n Observable.create(observer => {\r\n\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.text = c;\r\n });\r\n }\r\n this.searchChangeObserver.next(text);\r\n }\r\n}\r\n","import { EventEmitter } from '@angular/core';\r\n\r\n\r\n\r\nexport interface AXSortParams {\r\n field?: string;\r\n sort?: 'asc' | 'desc';\r\n}\r\nexport interface AXGroups {\r\n field?: string;\r\n}\r\n\r\nexport interface AXFilterParams {\r\n field?: string;\r\n filters?: AXFilterConditionParams[];\r\n}\r\n\r\nexport interface AXFilterConditionParams {\r\n dataType?: 'text' | 'number' | 'date';\r\n type?: 'contains' | 'equal' | 'notEqual';\r\n value?: any;\r\n}\r\n\r\nexport interface AXDataSourceReadParams {\r\n skip?: number;\r\n take?: number;\r\n sort?: AXSortParams;\r\n filter?: AXFilterParams[];\r\n searchText?: string;\r\n group?: AXDataSourceGroupParams;\r\n requestId?: any;\r\n extra?: any;\r\n}\r\n\r\nexport class AXDataSourceReceivedResult {\r\n result?: any;\r\n requestId?: any;\r\n}\r\n\r\nexport interface AXDataSourceGroupParams {\r\n parentData: any;\r\n keys: string[];\r\n fields: string[];\r\n}\r\n\r\n\r\nexport abstract class AXDataSourceRead {\r\n abstract fetch(params: AXDataSourceReadParams): void;\r\n abstract dataReceived: EventEmitter<any>;\r\n}","import { Component, ContentChild, EventEmitter, Input } from \"@angular/core\";\r\nimport { AXDataSourceReadParams, AXDataSourceRead, AXDataSourceReceivedResult } from './read-param';\r\nimport { AXBaseEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXDataEvent } from '../base/events.class';\r\n\r\n\r\nexport class AXDataSourceReceivedEvent extends AXDataEvent<AXDataSourceReceivedResult>\r\n{\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: \"ax-data-source\",\r\n template: \"<ng-content></ng-content>\"\r\n})\r\nexport class AXDataSourceComponent {\r\n\r\n onDataReceived: EventEmitter<AXDataSourceReceivedEvent> = new EventEmitter<AXDataSourceReceivedEvent>();\r\n onFetchStart: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n @Input()\r\n provideData: (params: AXDataSourceReadParams) => Promise<any>;\r\n\r\n @Input()\r\n params: any;\r\n\r\n fetch(params: AXDataSourceReadParams) {\r\n this.onFetchStart.emit({ component: this });\r\n if (this.provideData) {\r\n if (params === null) {\r\n params = this.params === undefined ? null : this.params;\r\n } else {\r\n params.extra = this.params;\r\n }\r\n\r\n //\r\n this.provideData(params).then(_data => {\r\n const data: AXDataSourceReceivedResult = new AXDataSourceReceivedResult();\r\n data.result = _data;\r\n data.requestId = params == null ? null : params.requestId;\r\n this.onDataReceived.emit({\r\n component: this,\r\n data: data\r\n });\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ContentChild,\r\n Input,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ViewChild,\r\n ComponentRef,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n NgZone,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { AXSchedulerViewsProperty, AXSchedulerViewProperty } from './scheduler-views.property';\r\nimport { AXToolbarSchedulerViewsComponent } from './toolbars/scheduler-toolbar-views';\r\nimport { AXSchedulerDayTimeViewComponent } from './views/daytime/scheduler-daytime-view.component';\r\nimport { ComponentPortal, CdkPortalOutlet } from '@angular/cdk/portal';\r\nimport { AXSchedulerBaseViewComponent } from './views/scheduler-view.component';\r\nimport { AXSchedulerMonthViewComponent } from './views/month/scheduler-month-view.component';\r\nimport { AXToolbarSchedulerNavigatorComponent } from './toolbars/scheduler-toolbar-navigator';\r\nimport { AXSchedulerAgendaViewComponent } from './views/agenda/scheduler-agenda-view.component';\r\nimport { AXSchedulerTimelineViewComponent } from './views/timeline/scheduler-timeline-view.component';\r\nimport { AXSchedulerEventChangeArgs, AXSchedulerEvent } from './scheduler.class';\r\nimport { AXMenuItem, AXDateTime } from '@acorex/core';\r\nimport { AXToolbarSearchComponent } from '../../toolbar/search/toolbar-search.component';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-scheduler',\r\n templateUrl: './scheduler.component.html',\r\n styleUrls: ['./scheduler.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXSchedulerComponent {\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n @ViewChild(CdkPortalOutlet, { static: true })\r\n private portalOutlet: CdkPortalOutlet\r\n\r\n\r\n @ViewChild('container', { static: true })\r\n private container: ElementRef<HTMLElement>;\r\n\r\n @ContentChild(AXSchedulerViewsProperty, { static: true })\r\n private viewManager: AXSchedulerViewsProperty;\r\n\r\n @ContentChild(AXToolbarSchedulerViewsComponent, { static: true })\r\n private toolbarView: AXToolbarSchedulerViewsComponent;\r\n @ContentChild(AXToolbarSchedulerNavigatorComponent, { static: true })\r\n private toolbarNavigator: AXToolbarSchedulerNavigatorComponent;\r\n\r\n @ContentChild(AXToolbarSearchComponent, { static: true })\r\n searchInput: AXToolbarSearchComponent;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private dataSource: AXDataSourceComponent;\r\n\r\n view: AXSchedulerBaseViewComponent;\r\n\r\n\r\n private _currentView: string;\r\n @Input()\r\n public get currentView(): string {\r\n return this._currentView;\r\n }\r\n public set currentView(v: string) {\r\n this.setView(v);\r\n }\r\n\r\n private viewItems: AXMenuItem[] = [];\r\n private today = new AXDateTime();\r\n private navigatorDate = new AXDateTime();\r\n searchText: string;\r\n\r\n @Input()\r\n events: AXSchedulerEvent[] = [];\r\n\r\n @Output()\r\n onEventChanged: EventEmitter<AXSchedulerEventChangeArgs> = new EventEmitter<AXSchedulerEventChangeArgs>();\r\n\r\n setView(name: string) {\r\n this._currentView = name;\r\n if (this.viewManager.views) {\r\n this.viewItems.forEach(c => {\r\n c.selected = false;\r\n });\r\n this.viewItems.find(c => c.name == name).selected = true;\r\n const selected = this.viewManager.views.find(c => c.name == name);\r\n this.createView(selected);\r\n }\r\n }\r\n\r\n\r\n private createView(selected: AXSchedulerViewProperty) {\r\n this.startAnim();\r\n if (this.view) {\r\n this.view.ngOnDestroy();\r\n }\r\n let portal: ComponentPortal<AXSchedulerBaseViewComponent>;\r\n this.portalOutlet.detach();\r\n let interval = selected.interval;\r\n if (selected.type === 'day') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerDayTimeViewComponent);\r\n }\r\n if (selected.type === 'week') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerDayTimeViewComponent);\r\n interval = selected.interval * 7;\r\n }\r\n if (selected.type === 'month') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerMonthViewComponent);\r\n }\r\n if (selected.type === 'agenda') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerAgendaViewComponent);\r\n }\r\n if (selected.type === 'timeline') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerTimelineViewComponent);\r\n }\r\n const compRef: ComponentRef<AXSchedulerBaseViewComponent> = this.portalOutlet.attach(portal);\r\n this.view = compRef.instance;\r\n this.view.type = selected.type;\r\n this.view.interval = interval;\r\n //\r\n this.view.onEventChanged.subscribe(e => {\r\n this.onEventChanged.emit(e);\r\n });\r\n this.view.onNavigatorDateChanged.subscribe((e) => {\r\n this.navigatorDate = e;\r\n this.setNavigatorText();\r\n this.startAnim();\r\n });\r\n this.refresh();\r\n }\r\n\r\n private setNavigatorText() {\r\n if (this.toolbarNavigator) {\r\n this.toolbarNavigator.set(this.view.dateRange, this.view.type);\r\n }\r\n }\r\n\r\n private startAnim() {\r\n this.container.nativeElement.classList.remove('ax-anim-fade-in-fwd');\r\n this.container.nativeElement.style.opacity = '0';\r\n setTimeout(() => {\r\n this.container.nativeElement.classList.add('ax-anim-fade-in-fwd');\r\n }, 250);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(_ => {\r\n this.viewManager.views.forEach(v => {\r\n this.viewItems.push({\r\n groupName: 'view',\r\n name: v.name,\r\n text: v.caption\r\n });\r\n });\r\n //\r\n this.dataSource.onDataReceived.subscribe(e => {\r\n this.events = e;\r\n this.view.events = this.events;\r\n if (this.searchText && this.view.events && this.view.events.length) {\r\n this.navigatorDate = this.view.events[0].range.startTime;\r\n }\r\n if (this.navigatorDate) {\r\n this.view.navigate(this.navigatorDate);\r\n }\r\n else {\r\n this.view.navigate(this.today);\r\n }\r\n });\r\n //\r\n if (this.toolbarView) {\r\n this.toolbarView.onViewChanged.subscribe(c => {\r\n this.currentView = c;\r\n });\r\n this.toolbarView.items = this.viewItems;\r\n }\r\n //\r\n if (this.toolbarNavigator) {\r\n this.toolbarNavigator.onNavigate.subscribe(c => {\r\n if (c === 'next') {\r\n this.view.next();\r\n }\r\n else if (c === 'prev') {\r\n this.view.prev();\r\n }\r\n else {\r\n this.view.navigate(c);\r\n }\r\n });\r\n }\r\n if (this.searchInput) {\r\n this.searchInput.onValueChanged.subscribe(c => {\r\n this.searchText = c;\r\n if (c) {\r\n this.viewItems.forEach(c => { c.visible = false; });\r\n const x: AXSchedulerViewProperty = new AXSchedulerViewProperty('agenda', 'Search', 'VIEW_SEARCH');\r\n x.interval = 100;\r\n this.createView(x);\r\n this.refresh();\r\n }\r\n else {\r\n this.viewItems.forEach(c => { c.visible = true; });\r\n this.setView(this._currentView);\r\n }\r\n this.toolbarView.update();\r\n });\r\n }\r\n //\r\n this.setView(this.currentView);\r\n this.refresh();\r\n });\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.updateSize();\r\n }\r\n\r\n private updateSize() {\r\n this.zone.runOutsideAngular(() => {\r\n const toolbar = this.elm.nativeElement.querySelector<HTMLElement>(\r\n '.ax-scheduler-toolbar'\r\n );\r\n if (toolbar) {\r\n this.container.nativeElement.style.height = `calc(100% - ${toolbar.clientHeight}px)`;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.portalOutlet.detach();\r\n }\r\n\r\n refresh() {\r\n this.dataSource.fetch({\r\n searchText: this.searchText,\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrls: ['./toolbar.component.scss'],\r\n encapsulation:ViewEncapsulation.None\r\n})\r\nexport class AXToolbarComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n \r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\n\r\n@Component({\r\n selector: 'ax-toolbar-title',\r\n template: `\r\n <ng-container *ngIf=\"text; else elseTemplate\">\r\n <div class=\"title\">{{text}}</div>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <ng-content></ng-content>\r\n </ng-template>`,\r\n styles: [`\r\n .title{\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n }\r\n `],\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarTitleComponent }]\r\n})\r\nexport class AXToolbarTitleComponent {\r\n constructor() { }\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n this._text = v;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { AXToolbarItem } from \"../toolbar-item\";\r\nimport { AXBaseMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: \"ax-toolbar-group-button\",\r\n template: `\r\n <div class=\"btn-group\" role=\"group\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let item of items\"\r\n class=\"btn btn-sm {{ item.style }}\"\r\n [class.active]=\"item.selected\"\r\n (click)=\"onClick(item)\"\r\n [title]=\"item.tooltip\"\r\n >\r\n <i class=\"{{ item.icon }}\"></i>\r\n {{ item.text }}\r\n </button>\r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXToolbarItem, useExisting: AXToolbarButtonGroupComponent }\r\n ]\r\n})\r\nexport class AXToolbarButtonGroupComponent {\r\n constructor() { }\r\n\r\n @Input()\r\n items: AXBaseMenuItem[] = [];\r\n\r\n @Output()\r\n itemClick: EventEmitter<AXBaseMenuItem> = new EventEmitter<AXBaseMenuItem>();\r\n\r\n @Input()\r\n mode: \"single\" | \"multiple\" = \"single\";\r\n\r\n onClick(item: AXBaseMenuItem) {\r\n if (this.mode == \"single\") {\r\n this.items.forEach(c => {\r\n c.selected = false;\r\n });\r\n item.selected = true;\r\n this.itemClick.emit(item);\r\n } else {\r\n if (item.selected) {\r\n item.selected = false;\r\n } else {\r\n item.selected = true;\r\n this.itemClick.emit(item);\r\n }\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SubItemsEvent } from './menu-item.component';\r\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-menu2',\r\n template: `\r\n <div class=\"ax ax-menu ax-menu-vertical\" [attr.data-level]=\"level\">\r\n <ax-menu-item\r\n *ngFor=\"let item of items\"\r\n [level]=\"level\"\r\n [item]=\"item\"\r\n (showSubMenu)=\"showSubmenu($event)\">\r\n </ax-menu-item>\r\n </div>\r\n `,\r\n styleUrls: ['./menu2.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenu2Component implements OnDestroy {\r\n subItemsOverlays = new Array<OverlayRef>();\r\n level: number = 0;\r\n\r\n @Input() items: AXMenuItem[];\r\n @Output() selected = new EventEmitter<AXMenuItem>();\r\n //@ViewChild(TemplateRef) template;\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef\r\n ) { }\r\n\r\n showSubmenu(event: SubItemsEvent) {\r\n const position: ConnectedPosition[] = [];\r\n if (event.level === 0) {\r\n position.push({\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n });\r\n } else {\r\n position.push({\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n });\r\n }\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(event.element)\r\n .withPositions(position);\r\n const overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: false,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n this.subItemsOverlays.push(overlayRef);\r\n const portal = new ComponentPortal(AXMenu2Component, this.viewContainerRef);\r\n\r\n const com = overlayRef.attach(portal);\r\n com.instance.level = event.level + 1;\r\n com.instance.items = event.item.items;\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onDocumentClick(target) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.hideOverlays();\r\n }\r\n }\r\n\r\n hideOverlays() {\r\n this.subItemsOverlays.forEach((o) => o.dispose());\r\n this.subItemsOverlays.length = 0;\r\n }\r\n ngOnDestroy() {\r\n this.hideOverlays();\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-menu-item',\r\n template: `\r\n <div class=\"ax-menu-item {{item.style}}\" [attr.data-level]=\"level\" (click)=\"showSubItems($event)\" [ngClass]=\"{'disabled': item.disable}\" >\r\n <i *ngIf=\"item.startIcon\" class=\"icon {{item.startIcon}}\"></i>\r\n <span class=\"text\">{{ item.text }}</span>\r\n <i *ngIf=\"item.endIcon\" class=\"icon {{item.endIcon}}\"></i>\r\n <i class=\"far fa-angle-down icon drop-icon\" *ngIf=\"item?.items?.length && item.text\"></i>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenuItemComponent {\r\n @Input() item: AXMenuItem;\r\n @Input() level: number;\r\n @Output() showSubMenu = new EventEmitter<SubItemsEvent>();\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n showSubItems(event: Event) {\r\n event.stopPropagation();\r\n if (this.item?.items?.length) {\r\n this.showSubMenu.emit({ item: this.item, element: this.element, level: this.level });\r\n }\r\n }\r\n}\r\nexport interface SubItemsEvent {\r\n element: ElementRef;\r\n item: AXMenuItem;\r\n level: number;\r\n}\r\n","import { Directive, Input, ElementRef, HostListener, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[axTooltip]'\r\n})\r\nexport class AXTooltipDirective {\r\n @Input('tooltip') tooltipTitle: string;\r\n @Input() placement: string = 'top';\r\n @Input() delay: number = 500;\r\n tooltip: HTMLElement;\r\n offset = 17;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n \r\n }\r\n\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n if (!this.tooltip && this.tooltipTitle) {\r\n this.show();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.tooltip && this.tooltipTitle) {\r\n this.hide();\r\n }\r\n }\r\n\r\n show() {\r\n this.create();\r\n this.setPosition();\r\n this.renderer.addClass(this.tooltip, 'ax-tooltip-show');\r\n }\r\n\r\n hide() {\r\n if (this.tooltip) {\r\n try {\r\n this.renderer.removeClass(this.tooltip, 'ax-tooltip-show');\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n } catch (error) {}\r\n }\r\n }\r\n\r\n create() {\r\n if(this.tooltipTitle){\r\n this.tooltip = this.renderer.createElement('span');\r\n\r\n this.renderer.appendChild(\r\n this.tooltip,\r\n this.renderer.createText(this.tooltipTitle) // textNode\r\n );\r\n\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n\r\n this.renderer.addClass(this.tooltip, 'ax-tooltip');\r\n this.renderer.addClass(this.tooltip, `ax-tooltip-${this.placement}`);\r\n this.renderer.setStyle(this.tooltip, '-webkit-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-moz-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-o-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, 'transition', `opacity ${this.delay}ms`);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n }\r\n\r\n setPosition() {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n const tooltipPos = this.tooltip.getBoundingClientRect();\r\n const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n\r\n let top;\r\n let left;\r\n\r\n if (this.placement === 'top') {\r\n top = hostPos.top - tooltipPos.height - this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'bottom') {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'left') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.left - tooltipPos.width - this.offset;\r\n }\r\n\r\n if (this.placement === 'right') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.right + this.offset;\r\n }\r\n\r\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTooltipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n declarations: [AXTooltipDirective],\r\n imports: [ CommonModule ],\r\n exports: [AXTooltipDirective],\r\n providers: [],\r\n})\r\nexport class AXTooltipModule {}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXMenuComponent } from './menu.component';\r\nimport { AXMenu2Component } from './menu2.component';\r\nimport { AXMenuItemComponent } from './menu-item.component';\r\nimport { AXTooltipModule } from '../tooltip/tooltip.module';\r\n@NgModule({\r\n declarations: [AXMenuComponent, AXMenu2Component, AXMenuItemComponent],\r\n imports: [CommonModule,AXTooltipModule],\r\n exports: [AXMenuComponent, AXMenu2Component, AXMenuItemComponent],\r\n providers: []\r\n})\r\nexport class AXMenuModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarComponent } from './toolbar.component';\r\nimport { AXToolbarMenuComponent } from './menu/toolbar-menu.component';\r\nimport { AXToolbarSearchComponent } from './search/toolbar-search.component';\r\nimport { AXToolbarTitleComponent } from './title/toolbar-title.component';\r\nimport { AXToolbarButtonGroupComponent } from './group-button/toolbar-group-button.component';\r\nimport { AXPopoverModule } from '../popover/popover.module';\r\nimport { AXMenuModule } from '../menu/menu.module';\r\n\r\nconst COMPONENTS = [\r\n AXToolbarComponent,\r\n AXToolbarMenuComponent,\r\n AXToolbarSearchComponent,\r\n AXToolbarTitleComponent,\r\n AXToolbarButtonGroupComponent\r\n]\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n imports: [CommonModule, AXPopoverModule, AXMenuModule],\r\n exports: [COMPONENTS],\r\n providers: [],\r\n})\r\nexport class AXToolbarModule { }","import { NgModule } from '@angular/core';\r\nimport { AXSchedulerComponent } from './scheduler.component';\r\nimport { AXSchedulerViewsProperty, AXSchedulerViewProperty } from './scheduler-views.property';\r\nimport { AXSchedulerDayTimeViewComponent } from './views/daytime/scheduler-daytime-view.component';\r\nimport { AXToolbarSchedulerViewsComponent } from './toolbars/scheduler-toolbar-views';\r\nimport { AXCoreModule } from '@acorex/core';\r\nimport { AXSchedulerMonthViewComponent } from './views/month/scheduler-month-view.component';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { AXToolbarSchedulerNavigatorComponent } from './toolbars/scheduler-toolbar-navigator';\r\nimport { AXSchedulerAgendaViewComponent } from './views/agenda/scheduler-agenda-view.component';\r\nimport { AXSchedulerTimelineViewComponent } from './views/timeline/scheduler-timeline-view.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AXCalendarBoxModule } from '../calendar-box/calendar-box.module';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarModule } from '../../toolbar/toolbar.module';\r\nimport { AXPopoverModule } from '../../popover/popover.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n AXSchedulerComponent,\r\n AXSchedulerViewsProperty,\r\n AXSchedulerViewProperty,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent,\r\n AXToolbarSchedulerViewsComponent,\r\n AXToolbarSchedulerNavigatorComponent\r\n ],\r\n imports: [CommonModule,AXCoreModule, AXCalendarBoxModule, AXToolbarModule, AXPopoverModule, PortalModule, DragDropModule],\r\n exports: [\r\n AXSchedulerComponent,\r\n AXSchedulerViewsProperty,\r\n AXSchedulerViewProperty,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent,\r\n AXToolbarSchedulerViewsComponent,\r\n AXToolbarSchedulerNavigatorComponent\r\n ],\r\n entryComponents: [\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class AXSchedulerModule { }","import {\r\n Component,\r\n ViewEncapsulation,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ViewChild,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\nimport { AXValueEvent, AXHtmlEvent } from '../base/events.class';\r\n\r\nexport class AXCheckBoxItemClick extends AXHtmlEvent<MouseEvent> {\r\n value?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-check-box',\r\n templateUrl: './checkbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXCheckBoxComponent extends AXBaseComponent implements AXBaseSizableComponent, AXBaseValueComponent<boolean> {\r\n @ViewChild('input', { static: true }) input: ElementRef<HTMLInputElement>;\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n label: string = '';\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @Input()\r\n indeterminate: boolean = false;\r\n\r\n focus(): void {}\r\n constructor(protected cdr: ChangeDetectorRef, private ref: ElementRef) {\r\n super();\r\n }\r\n // Value\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\r\n @Output()\r\n valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n //\r\n @Output()\r\n onClick: EventEmitter<AXCheckBoxItemClick> = new EventEmitter<AXCheckBoxItemClick>();\r\n\r\n private _value?: boolean = false;\r\n public get value(): boolean {\r\n return this._value;\r\n }\r\n\r\n @Input()\r\n public set value(v: boolean) {\r\n if (v != this._value && v !== undefined) {\r\n const old = this._value;\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n // handelChange(e) {\r\n // const val = e.target.checked;\r\n // this.value = val;\r\n // }\r\n\r\n ngOnInit(): void {\r\n if (!this.indeterminate && this.value == null) {\r\n this.value = false;\r\n }\r\n }\r\n\r\n handleClick(e: MouseEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n // setTimeout(() => {\r\n if (!this.disabled && !this.readonly) {\r\n //TODO: check intermddiate;\r\n this.value = !this.value;\r\n this.onClick.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e,\r\n value: this.value\r\n });\r\n }\r\n // }, 100);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXCheckBoxComponent } from './checkbox.component';\r\n@NgModule({\r\n declarations: [AXCheckBoxComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [AXCheckBoxComponent],\r\n providers: []\r\n})\r\nexport class AXCheckBoxModule { }\r\n","import { Component, Input, ElementRef, HostListener, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXElementSize } from '../base/element.class';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-context-menu',\r\n templateUrl: './context-menu.component.html',\r\n host: { class: 'ax context-menu-container' }\r\n})\r\nexport class AXContextMenuComponent {\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n width: number;\r\n\r\n @Input()\r\n items: AXMenuItem[] = [];\r\n\r\n @Output()\r\n onItemClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClosed: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n @ViewChild('contex')\r\n contex: ElementRef<HTMLUListElement>;\r\n\r\n\r\n\r\n show: boolean = false;\r\n\r\n constructor(private container: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n close() {\r\n this.show = false;\r\n this.onClosed.emit({\r\n component: this\r\n });\r\n }\r\n\r\n\r\n\r\n open(_left, _top, _rtl = false) {\r\n this.show = true;\r\n setTimeout(() => {\r\n const containRec = this.container.nativeElement.getBoundingClientRect();\r\n let left = _rtl === false ? _left : _left - containRec.width;\r\n let top = _top;\r\n if (_rtl === false && _left + containRec.width > window.innerWidth) {\r\n left = window.innerWidth - containRec.width;\r\n } else if (_rtl === true && _left - containRec.width < 0) {\r\n left = 0;\r\n }\r\n if (top + containRec.height > window.innerHeight) {\r\n top = _top - containRec.height;\r\n }\r\n this.container.nativeElement.style.left = left + 'px';\r\n this.container.nativeElement.style.top = top + 'px';\r\n\r\n }, 5);\r\n\r\n\r\n }\r\n\r\n\r\n\r\n handleClickItem(item: AXMenuItem) {\r\n if (!item.disable || item.disable === undefined) {\r\n this.onItemClick.emit(item);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, Output, EventEmitter, ComponentFactoryResolver, Injector, ViewContainerRef } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXBaseEvent } from '../base/events.class';\r\nimport { AXContextMenuComponent } from './context-menu.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport type AXContextMenuPromiseFunction = (item: any) => Promise<AXMenuItem[]>;\r\nexport type AXContextMenuFunction = (item: any) => AXMenuItem[];\r\nexport class AXContextMenuItemClickEvent extends AXBaseEvent {\r\n dataItem?: any;\r\n menuItem: AXMenuItem;\r\n}\r\n\r\n@Directive({\r\n selector: '[axContextMenu]'\r\n})\r\nexport class AXContextMenuDirective {\r\n @Input()\r\n contextMenu: AXContextMenuComponent;\r\n\r\n @Input()\r\n contextDataItem: any;\r\n\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n @Input()\r\n rtl: boolean = false;\r\n\r\n internalItems: AXMenuItem[] = [];\r\n\r\n private clickSubscribe: Subscription;\r\n private closeSubscribe: Subscription;\r\n\r\n @HostListener('contextmenu', ['$event'])\r\n onContextMenu(e: MouseEvent) {\r\n this.getMenuItems().then(items => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.createContextMenu();\r\n this.contextMenu.items = items;\r\n\r\n\r\n this.contextMenu.open(e.x, e.y, this.rtl);\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n constructor(\r\n private ref: ElementRef,\r\n private factoryResolver: ComponentFactoryResolver,\r\n private viewContainerRef: ViewContainerRef,\r\n private injector: Injector\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n createContextMenu(): void {\r\n const wrapper = document.createElement('div');\r\n wrapper.classList.add('ax-overlay-wrapper');\r\n wrapper.addEventListener('click', this.wrapperClick.bind(this));\r\n wrapper.addEventListener('contextmenu', this.wrapperRClick.bind(this));\r\n //\r\n document.body.appendChild(wrapper);\r\n const factory = this.factoryResolver.resolveComponentFactory(AXContextMenuComponent);\r\n const componentRef = this.viewContainerRef.createComponent(factory);\r\n this.contextMenu = componentRef.instance;\r\n wrapper.appendChild(componentRef.location.nativeElement);\r\n //\r\n this.clearComponentSubscriptions();\r\n this.createComponentSubscriptions();\r\n }\r\n\r\n wrapperClick(e: MouseEvent) {\r\n this.remove();\r\n }\r\n\r\n wrapperRClick(e: MouseEvent) {\r\n if (document.elementsFromPoint(e.clientX, e.clientY).includes(this.ref.nativeElement)) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n this.contextMenu.open(e.x, e.y, this.rtl);\r\n }\r\n else {\r\n e.preventDefault();\r\n this.remove();\r\n }\r\n }\r\n\r\n\r\n\r\n private clearComponentSubscriptions() {\r\n if (this.clickSubscribe) {\r\n this.clickSubscribe.unsubscribe();\r\n this.clickSubscribe = undefined;\r\n }\r\n if (this.closeSubscribe) {\r\n this.closeSubscribe.unsubscribe();\r\n this.closeSubscribe = undefined;\r\n }\r\n }\r\n\r\n private createComponentSubscriptions() {\r\n this.clickSubscribe = this.contextMenu.onItemClick.subscribe(c => {\r\n this.remove();\r\n this.onContextMenuItemClick.emit({\r\n component: this,\r\n dataItem: this.contextDataItem,\r\n htmlElement: this.ref.nativeElement,\r\n menuItem: c\r\n });\r\n });\r\n this.closeSubscribe = this.contextMenu.onClosed.subscribe(c => {\r\n this.clearComponentSubscriptions();\r\n });\r\n }\r\n\r\n private remove() {\r\n this.viewContainerRef.clear();\r\n this.clearComponentSubscriptions();\r\n document.querySelector('.ax-overlay-wrapper')?.remove();\r\n }\r\n\r\n private getMenuItems(): Promise<AXMenuItem[]> {\r\n return new Promise<AXMenuItem[]>((resolve, reject) => {\r\n if (typeof (this.contextMenuItems) === 'function') {\r\n const val = this.contextMenuItems(this.contextDataItem);\r\n if (val instanceof Promise) {\r\n val.then(_data => {\r\n resolve(_data);\r\n });\r\n } else {\r\n resolve(val);\r\n }\r\n } else if (Array.isArray(this.contextMenuItems)) {\r\n resolve(this.contextMenuItems);\r\n }\r\n else {\r\n resolve([]);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.clearComponentSubscriptions();\r\n }\r\n}\r\n","import { NgModule, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXContextMenuComponent } from './context-menu.component';\r\nimport { AXContextMenuDirective } from './context-menu.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXContextMenuComponent, AXContextMenuDirective],\r\n imports: [CommonModule],\r\n exports: [AXContextMenuComponent, AXContextMenuDirective],\r\n providers: [],\r\n})\r\nexport class AXContextMenuModule {\r\n\r\n}","import { Input, ChangeDetectorRef, EventEmitter, Output, Directive } from '@angular/core';\r\n\r\nexport interface AXFilterColumn {\r\n field: string;\r\n caption: string;\r\n type?: 'text' | 'selection' | 'date' | 'number';\r\n options?: any;\r\n}\r\n\r\nexport interface AXFilterColumnGroup {\r\n caption?: string;\r\n columns: AXFilterColumn[];\r\n}\r\n\r\nexport interface AXFilterCondition {\r\n field: string;\r\n condition: string;\r\n dataType: 'string' | 'date' | 'datetime' | 'time' | 'number';\r\n value: any;\r\n}\r\n\r\nexport interface AXFilterPredefined {\r\n name: string;\r\n title: string;\r\n value: AXFilterCondition[];\r\n}\r\n\r\n@Directive()\r\nexport abstract class AXFilterColumnComponent {\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n\r\n }\r\n operator: string = 'equal';\r\n value: any = null;\r\n @Input()\r\n field: string = null;\r\n\r\n @Output()\r\n valueChange: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\r\n @Output()\r\n activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n private _active: boolean;\r\n @Input()\r\n public get active(): boolean {\r\n return this._active;\r\n }\r\n public set active(v: boolean) {\r\n this._active = v;\r\n this.activeChange.emit(v);\r\n }\r\n\r\n\r\n abstract get condition(): AXFilterCondition;\r\n\r\n clear() {\r\n this.active = false;\r\n this.value = null;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setFilter(value: any, operator: string) {\r\n this.active = true;\r\n this.operator = operator;\r\n this.value = value;\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n\r\n\r\n","import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, EventEmitter } from '@angular/core';\r\nimport { Output } from '@angular/core';\r\nimport { AXSelectionList } from '@acorex/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-selection-list',\r\n templateUrl: './selection-list.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXSelectionListComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n private _selectedItems: any[] = [];\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n value: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n direction: string = 'horizontal';\r\n\r\n @Input()\r\n items: Array<AXSelectionList> = [];\r\n\r\n @Input()\r\n mode: string = 'single';\r\n\r\n @Input()\r\n textField: string = 'text';\r\n\r\n @Input()\r\n valueField: string = 'value';\r\n\r\n @Output()\r\n selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Input()\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n public set selectedItems(v: any[]) {\r\n this._selectedItems = v;\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n @Output()\r\n selectedValuesChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Input()\r\n public get selectedValues(): any[] {\r\n return this._selectedItems.map((c) => c[this.valueField]) || [];\r\n }\r\n public set selectedValues(v: any[]) {\r\n const old = this.selectedValues;\r\n if (v == null) {\r\n v = [];\r\n }\r\n if (JSON.stringify(old) != JSON.stringify(v)) {\r\n this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n onCheckValueChange(value: any, checked: boolean) {\r\n if (!this.disabled) {\r\n if (this.mode === 'single') {\r\n this.selectedValues = [value];\r\n } else {\r\n if (checked) {\r\n if (!this.selectedValues.includes(value)) {\r\n this.selectedValues = [...this.selectedValues, ...[value]];\r\n }\r\n } else {\r\n this.selectedValues = this.selectedValues.filter((c) => c !== value);\r\n }\r\n }\r\n }\r\n }\r\n focus(): void {}\r\n\r\n onvalueChanged(e) {\r\n if (!this.disabled) {\r\n this.selectedItemsChange.emit([e]);\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, EventEmitter, Output } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { AXDateTime } from '@acorex/core';\r\nimport { AXSelectionListComponent } from '../../selection-list/selection-list.component';\r\n\r\n@Component({\r\n selector: 'ax-filter-column-date',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <ax-selection-list [items]=\"items\" mode=\"single\" direction=\"vertical\" (selectedItemsChange)=\"onSelectedChanged($event)\">\r\n </ax-selection-list>\r\n </div>\r\n <div class=\"ax-filter-section-value\" [hidden]=\"!showCustom\">\r\n <ax-date-picker label=\"From\" [(value)]=\"fromDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker>\r\n <ax-date-picker label=\"To\" [(value)]=\"toDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker>\r\n </div>\r\n <div class=\"ax-filter-section-value\" [hidden]=\"!showSpecific\">\r\n <ax-date-picker label=\"Date\" [(value)]=\"fromDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker> \r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnDateComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterColumnDateComponent extends AXFilterColumnComponent {\r\n @ViewChild(AXSelectionListComponent, { static: true }) selection: AXSelectionListComponent;\r\n\r\n items: any = [\r\n {\r\n text: 'Today',\r\n value: 'today'\r\n },\r\n {\r\n text: 'This Week',\r\n value: 'this-week'\r\n },\r\n {\r\n text: 'This Month',\r\n value: 'this-month'\r\n },\r\n {\r\n text: 'This Year',\r\n value: 'this-year'\r\n },\r\n {\r\n text: 'Specific',\r\n value: 'specific'\r\n },\r\n {\r\n text: 'Range',\r\n value: 'range'\r\n }\r\n ];\r\n\r\n fromDate: AXDateTime = new AXDateTime();\r\n toDate: AXDateTime = new AXDateTime();\r\n\r\n selectedItem: any = null;\r\n\r\n showCustom: boolean = false;\r\n showSpecific: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.selection.selectedItems = [this.items[0]];\r\n }\r\n dateChange(e) {\r\n this.valueChange.emit();\r\n }\r\n onSelectedChanged(items: any[]) {\r\n\r\n this.selectedItem = items[0];\r\n this.showCustom = this.selectedItem && this.selectedItem.value == 'range';\r\n this.showSpecific = this.selectedItem && this.selectedItem.value == 'specific';\r\n this.cdr.detectChanges();\r\n this.valueChange.emit();\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n let today = new AXDateTime();\r\n switch (this.selectedItem.value) {\r\n case 'today':\r\n this.fromDate = this.toDate = today;\r\n\r\n return {\r\n condition: 'equal',\r\n field: this.field,\r\n dataType: 'date',\r\n value: this.fromDate.toISOString()\r\n }\r\n case 'specific':\r\n return {\r\n condition: 'equal',\r\n field: this.field,\r\n dataType: 'date',\r\n value: this.fromDate.toISOString()\r\n }\r\n case 'this-week':\r\n this.toDate = today.endOf('week');\r\n this.fromDate = today.startOf('week');\r\n break;\r\n case 'this-month':\r\n this.toDate = today.endOf('month')\r\n this.fromDate = today.startOf('month');\r\n break;\r\n case 'this-year':\r\n this.toDate = today.endOf('year')\r\n this.fromDate = today.startOf('year');\r\n break;\r\n }\r\n\r\n return {\r\n condition: 'between',\r\n field: this.field,\r\n dataType: 'date',\r\n value: [this.fromDate.toISOString(), this.toDate.toISOString()]\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ax-filter-column-number',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <div>\r\n <select (ngModelChange)=\"onOperatorChange($event)\" class=\"form-control form-control-sm\" [(ngModel)]=\"operator\">\r\n <option *ngFor=\"let o of operators\" value=\"{{o.value}}\">\r\n {{o.title}}\r\n </option>\r\n </select>\r\n </div>\r\n <div>\r\n <ax-text-box placeholder=\"Type here\" (textChange)=\"onTextChange($event)\" [(value)]=\"value\" *ngIf=\"operator!='is-not-empty' && operator!='is-empty'\">\r\n </ax-text-box>\r\n </div>\r\n</div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnNumberComponent }\r\n ]\r\n})\r\nexport class AXFilterColumnNumberComponent extends AXFilterColumnComponent {\r\n\r\n operator: string = 'equal';\r\n\r\n operators: any[] = [\r\n {\r\n title: 'is',\r\n value: 'equal'\r\n },\r\n {\r\n title: `isn't`,\r\n value: 'not-equal'\r\n },\r\n {\r\n title: 'less than',\r\n value: 'less-than'\r\n },\r\n {\r\n title: 'less than or equal',\r\n value: 'less-than-equal'\r\n },\r\n {\r\n title: 'greater than',\r\n value: 'greater-than'\r\n },\r\n {\r\n title: 'greater than or equal',\r\n value: 'greater-than-equal'\r\n },\r\n {\r\n title: 'is empty',\r\n value: 'is-empty'\r\n },\r\n {\r\n title: `isn't empty`,\r\n value: 'is-not-empty'\r\n }\r\n ];\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n private searchChangeObserver: any;\r\n onOperatorChange(e) {\r\n\r\n this.valueChange.emit();\r\n\r\n }\r\n onTextChange(e) {\r\n // TODO: Check this method work correctly\r\n if (!this.searchChangeObserver) {\r\n return new Observable(observer => {\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.valueChange.emit();\r\n });\r\n }\r\n this.searchChangeObserver.next(e);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n return {\r\n condition: this.operator,\r\n field: this.field,\r\n dataType: 'number',\r\n value: this.value\r\n };\r\n }\r\n\r\n}\r\n","import { Component, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { AXCheckItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-filter-column-selection',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <ax-selection-list [items]=\"items\" (selectedItemsChange)=\"onSelectChange($event)\" [mode]=\"mode\" direction=\"vertical\" [(selectedItems)]=\"selectedItems\">\r\n </ax-selection-list>\r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnSelectionComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterColumnSelectionComponent extends AXFilterColumnComponent {\r\n\r\n\r\n selectedItems: any[] = [];\r\n\r\n @Input()\r\n items: AXCheckItem[] = [];\r\n\r\n @Input()\r\n mode = 'single';\r\n\r\n @Input()\r\n dataType: any = 'number';\r\n\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n const values = this.selectedItems.map(c => c.value);\r\n if (values.length === 0) {\r\n return null;\r\n\r\n }\r\n return {\r\n condition: this.mode === 'single' ? 'equal' : 'contains',\r\n field: this.field,\r\n dataType: this.dataType,\r\n value: this.mode === 'single' ? values[0] : values\r\n }\r\n }\r\n clear() {\r\n this.selectedItems = [];\r\n super.clear();\r\n }\r\n onSelectChange(e) {\r\n this.valueChange.emit();\r\n\r\n }\r\n\r\n setFilter(value: any, operator: string) {\r\n if (value instanceof Array) {\r\n this.selectedItems = this.items.filter(c => value.some(z => z === c.value));\r\n }\r\n else {\r\n this.selectedItems = [this.items.find(c => c.value === value)];\r\n }\r\n super.setFilter(value, operator);\r\n }\r\n}\r\n","import { Component,ChangeDetectorRef } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n@Component({\r\n selector: 'ax-filter-column-string',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <div>\r\n <select (ngModelChange)=\"onOperatorChange($event)\" class=\"form-control form-control-sm\" [(ngModel)]=\"operator\">\r\n <option *ngFor=\"let o of operators\" value=\"{{o.value}}\">\r\n {{o.title}}\r\n </option>\r\n </select>\r\n </div>\r\n <div>\r\n <ax-text-box placeholder=\"Type here\" (textChange)=\"onTextChange($event)\" [(value)]=\"value\" *ngIf=\"operator!='is-not-empty' && operator!='is-empty'\">\r\n </ax-text-box>\r\n </div>\r\n</div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnStringComponent }\r\n ]\r\n})\r\nexport class AXFilterColumnStringComponent extends AXFilterColumnComponent {\r\n\r\n\r\n operator: string = 'contains';\r\n operators: any[] = [\r\n {\r\n title: 'is',\r\n value: 'equal'\r\n },\r\n {\r\n title: `isn't`,\r\n value: 'not-equal'\r\n },\r\n {\r\n title: 'contains',\r\n value: 'contains'\r\n },\r\n {\r\n title: 'not contains',\r\n value: 'not-contains'\r\n },\r\n {\r\n title: 'start with',\r\n value: 'start-with'\r\n },\r\n {\r\n title: 'end with',\r\n value: 'end-with'\r\n },\r\n {\r\n title: 'is empty',\r\n value: 'is-empty'\r\n },\r\n {\r\n title: `isn't empty`,\r\n value: 'is-not-empty'\r\n }\r\n ];\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n private searchChangeObserver: any;\r\n\r\n onOperatorChange(e) {\r\n\r\n this.valueChange.emit();\r\n\r\n }\r\n\r\n // TODO: Check this method work correctly\r\n onTextChange(e) {\r\n if (!this.searchChangeObserver) {\r\n return new Observable(observer => {\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.valueChange.emit();\r\n });\r\n }\r\n this.searchChangeObserver.next(e);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n return {\r\n condition: this.operator,\r\n field: this.field,\r\n dataType: 'string',\r\n value: this.value\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-text-box',\r\n templateUrl: './textbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTextBoxComponent }]\r\n})\r\nexport class AXTextBoxComponent extends AXBaseTextComponent {\r\n\r\n @Input()\r\n mask: any;\r\n\r\n @Input()\r\n type: 'text' | 'number' | 'tel' | 'url' | 'password' | 'search' = 'text';\r\n\r\n @Input()\r\n showMask: boolean = true;\r\n\r\n @Input()\r\n maxLength: number;\r\n\r\n @Input()\r\n maskGuid: boolean = false;\r\n\r\n @Input()\r\n maskPlaceholder: string = '_';\r\n\r\n @Input()\r\n maskKeepCharPositions: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-toast-wrapper',\r\n template: '',\r\n styleUrls: ['./toast-wrapper.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXToastWrapperComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, OnInit, Input, ElementRef, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './toast-message.component.html',\r\n styleUrls: ['./toast-message.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXToastMessageComponent implements OnInit {\r\n constructor(private elRef: ElementRef) { }\r\n\r\n @Input() title: string = '';\r\n @Input() message: string;\r\n @Input() timeOut: number = 6000;\r\n @Input() closeable: boolean = false;\r\n\r\n @Input() type: 'info' | 'success' | 'warning' | 'error' = 'info';\r\n\r\n style: string = 'info';\r\n icon: string = '';\r\n toastWidth: number = 100;\r\n\r\n ngOnInit(): void {\r\n if (this.timeOut) {\r\n const interval = setInterval(() => {\r\n --this.toastWidth;\r\n if (this.toastWidth === 0) {\r\n clearInterval(interval);\r\n this.close();\r\n }\r\n }, this.timeOut / 100);\r\n }\r\n switch (this.type) {\r\n case 'success':\r\n this.style = 'success';\r\n break;\r\n case 'warning':\r\n this.style = 'warning';\r\n break;\r\n case 'error':\r\n this.style = 'error';\r\n break;\r\n default:\r\n this.style = 'info';\r\n break;\r\n }\r\n switch (this.type) {\r\n case 'success':\r\n this.icon = 'fas fa-check-circle';\r\n break;\r\n case 'warning':\r\n this.icon = 'fas fa-exclamation-triangle';\r\n break;\r\n case 'error':\r\n this.icon = 'fas fa-exclamation-circle';\r\n break;\r\n default:\r\n this.icon = 'fas fa-info-circle';\r\n break;\r\n }\r\n }\r\n close() {\r\n this.elRef.nativeElement.parentElement.removeChild(this.elRef.nativeElement);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXToastWrapperComponent } from './toast-wrapper/toast-wrapper.component';\r\nimport { AXToastMessageComponent } from './toast-message/toast-message.component';\r\n\r\nexport interface IToastOptions {\r\n timeOut?: number;\r\n title?: string;\r\n closeable?: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXToastService {\r\n\r\n constructor(private injectionService: AXRenderService) { }\r\n\r\n info(message: string, options?: IToastOptions) {\r\n this.show(message, 'info', options);\r\n }\r\n\r\n success(message: string, options?: IToastOptions) {\r\n this.show(message, 'success', options);\r\n }\r\n\r\n warning(message: string, options?: IToastOptions) {\r\n this.show(message, 'warning', options);\r\n }\r\n\r\n error(message: string, options?: IToastOptions) {\r\n this.show(message, 'error', options);\r\n }\r\n\r\n private show(\r\n message: string,\r\n type: 'success' | 'info' | 'error' | 'warning',\r\n options?: IToastOptions\r\n ) {\r\n const opt = Object.assign(\r\n {\r\n message,\r\n type\r\n },\r\n options\r\n );\r\n\r\n const wrapper = document.querySelector('ax-toast-wrapper');\r\n if (!wrapper) {\r\n const toastWrapper = this.injectionService.appendComponent(\r\n AXToastWrapperComponent\r\n );\r\n this.injectionService.appendComponent(\r\n AXToastMessageComponent,\r\n opt,\r\n toastWrapper.location.nativeElement\r\n );\r\n } else {\r\n this.injectionService.appendComponent(\r\n AXToastMessageComponent,\r\n opt,\r\n wrapper\r\n );\r\n }\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ViewChildren, QueryList, ViewEncapsulation, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewContainerRef } from '@angular/core';\r\nimport { AXFilterColumnGroup, AXFilterColumnComponent, AXFilterCondition, AXFilterPredefined } from '../filter.class';\r\nimport { AXMenuItem, AXHtmlUtil, AXKeyboardEvent } from '@acorex/core';\r\nimport { AXMenuComponent } from '../../menu/menu.component';\r\nimport { AXTextBoxComponent } from '../../textbox/textbox.component';\r\nimport { AXToastService } from '../../toast/toast.service';\r\nimport { AXValueEvent } from '../../base/events.class';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-filter-panel',\r\n templateUrl: './filter-panel.component.html',\r\n styleUrls: ['./filter-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterPanelComponent {\r\n\r\n @ViewChild('panel', { static: true }) panel: ElementRef<HTMLDivElement>;\r\n @ViewChild('footer', { static: true }) footer: ElementRef<HTMLDivElement>;\r\n @ViewChild('savedList', { static: true }) savedList: ElementRef<HTMLDivElement>;\r\n @ViewChild('body', { static: true }) body: ElementRef<HTMLDivElement>;\r\n @ViewChild('menu', { static: false }) menu: AXMenuComponent;\r\n @ViewChild('tbxName', { static: true }) tbxName: AXTextBoxComponent;\r\n\r\n @ViewChildren(AXFilterColumnComponent) filters: QueryList<AXFilterColumnComponent>;\r\n\r\n @Input()\r\n groups: AXFilterColumnGroup[] = [];\r\n\r\n @Input()\r\n predefinedFilters: AXFilterPredefined[] = [];\r\n\r\n @Input()\r\n mode: 'click' | 'immediate' = 'click';\r\n\r\n saveItems: AXMenuItem[] = [\r\n {\r\n name: 'saveAs',\r\n text: 'Save',\r\n startIcon: 'fas fa-save',\r\n items: [\r\n {\r\n name: 'save',\r\n text: 'Save current'\r\n },\r\n {\r\n name: 'saveAs',\r\n text: 'Save as New'\r\n }\r\n ]\r\n },\r\n\r\n ];\r\n\r\n @Output()\r\n filterChange: EventEmitter<AXFilterCondition[]> = new EventEmitter<AXFilterCondition[]>();\r\n\r\n constructor(private cdr: ChangeDetectorRef, private toast: AXToastService) { }\r\n\r\n apply() {\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n public clear() {\r\n this.filters.forEach(e => {\r\n e.clear();\r\n });\r\n this.predefinedFilters.forEach(c => {\r\n (c as any).selected = false;\r\n });\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n onValueChange(e) {\r\n if (this.mode === 'immediate') {\r\n setTimeout(() => {\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }, 50);\r\n\r\n }\r\n }\r\n\r\n onCheckValueChange(v, e: AXValueEvent<boolean>) {\r\n\r\n\r\n if (!e.value && this.mode === 'immediate') {\r\n this.filters.forEach(c => {\r\n if (c.field === v.field) {\r\n c.clear();\r\n }\r\n })\r\n setTimeout(() => {\r\n this.filterChange.emit(this.value.filter(c => c.field !== v.field));\r\n this.updateMenu();\r\n }, 50);\r\n\r\n }\r\n }\r\n\r\n get value(): AXFilterCondition[] {\r\n const con: AXFilterCondition[] = [];\r\n if (this.filters) {\r\n this.filters.forEach(e => {\r\n\r\n if (e.active && e.condition && ((e.condition.value != null) || (e.condition.value == null && (e.condition.condition === 'is-empty' || e.condition.condition === 'is-not-empty')))) {\r\n con.push(e.condition);\r\n }\r\n });\r\n }\r\n return con;\r\n }\r\n\r\n\r\n\r\n public load(filters: AXFilterCondition[]): void {\r\n this.filters.forEach(e => {\r\n e.clear();\r\n });\r\n this.cancelSaveFilter();\r\n filters.forEach(f => {\r\n const col = this.filters.find(c => c.field === f.field);\r\n if (col) {\r\n col.setFilter(f.value, f.condition);\r\n }\r\n\r\n });\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const footer = this.panel.nativeElement.querySelector('.footer');\r\n if (!footer) {\r\n this.body.nativeElement.style.height = 'calc(100% - 110px)';\r\n }\r\n setTimeout(() => {\r\n if (this.predefinedFilters) {\r\n this.setFilterByIndex(0);\r\n }\r\n else {\r\n this.clear();\r\n }\r\n }, 100);\r\n this.applySize();\r\n }\r\n\r\n setFilterByIndex(index: number) {\r\n const f = this.predefinedFilters[index];\r\n if (f) {\r\n this.setFilterByName(f.name);\r\n }\r\n }\r\n\r\n setFilterByName(name: string) {\r\n const f = this.predefinedFilters.find(c => c.name === name);\r\n if (f) {\r\n this.load(f.value);\r\n this.predefinedFilters.forEach(c => {\r\n (c as any).selected = false;\r\n });\r\n (f as any).selected = true;\r\n }\r\n }\r\n\r\n\r\n\r\n removeFilter(f: AXFilterPredefined) {\r\n this.predefinedFilters = this.predefinedFilters.filter(c => c.name != f.name);\r\n this.updateMenu();\r\n }\r\n\r\n private get\r\n currentFilter(): AXFilterPredefined {\r\n return this.predefinedFilters.find(c => (c as any).selected);\r\n }\r\n\r\n\r\n private applySize() {\r\n let h = 0;\r\n h += this.footer.nativeElement.getBoundingClientRect().height;\r\n h += this.savedList.nativeElement.getBoundingClientRect().height;\r\n h += 10;\r\n this.body.nativeElement.style.height = `calc(100% - ${h}px)`;\r\n }\r\n\r\n // SAVE FILTERS\r\n\r\n private updateMenu(): void {\r\n setTimeout(() => {\r\n this.saveItems[0].items[0].visible = this.currentFilter != null;\r\n this.saveItems[0].items[1].visible = this.currentFilter != null;\r\n // this.menu.update();\r\n }, 100);\r\n }\r\n\r\n applySaveFilter() {\r\n const f = this.currentFilter;\r\n if (f) {\r\n // TODO\r\n // this.tbxName.validate().then(c => {\r\n // if (c.result) {\r\n // f.value = this.value;\r\n // (f as any).isInEdit = false;\r\n // (f as any).isNew = false;\r\n // f.title = this.tbxName.value;\r\n // this.toast.success('Filter saved successfully.');\r\n // this.updateMenu();\r\n // }\r\n // });\r\n }\r\n }\r\n\r\n cancelSaveFilter() {\r\n const f = this.currentFilter;\r\n if (f) {\r\n if ((f as any).isNew) {\r\n this.removeFilter(f);\r\n }\r\n else {\r\n (f as any).isInEdit = false;\r\n }\r\n }\r\n this.updateMenu();\r\n }\r\n\r\n onMenuItemClick(e: AXMenuItem) {\r\n if (e.name === 'save') {\r\n this.applySaveFilter();\r\n }\r\n if (e.name === 'saveAs') {\r\n const f = {\r\n name: AXHtmlUtil.getUID(),\r\n title: '',\r\n value: this.value\r\n };\r\n this.predefinedFilters.push(f);\r\n (f as any).isNew = true;\r\n this.setFilterByName(f.name);\r\n this.handleRenameClick(f)\r\n }\r\n }\r\n\r\n tbxNameOnKey(e: AXKeyboardEvent) {\r\n if (e.type === 'keyup' && e.key === 'Enter') {\r\n this.applySaveFilter();\r\n }\r\n if (e.type === 'keyup' && e.key === 'Escape') {\r\n this.cancelSaveFilter();\r\n }\r\n }\r\n\r\n handleRenameClick(f: AXFilterPredefined) {\r\n (f as any).isInEdit = true;\r\n this.cdr.detectChanges();\r\n setTimeout(() => {\r\n this.tbxName.value = f.title;\r\n this.tbxName.focus();\r\n }, 50);\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { AXHtmlUtil, AXMenuItem } from '@acorex/core';\r\nimport { AXFilterPanelComponent } from '../filter-panel/filter-panel.component';\r\nimport { AXToolbarItem } from '../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../toolbar/menu/toolbar-menu.component';\r\nimport { AXMenuComponent } from '../../menu/menu.component';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-filter-view',\r\n templateUrl: './filter-toolbar.component.html',\r\n styleUrls: ['./filter-toolbar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarFilterViewComponent }]\r\n})\r\nexport class AXToolbarFilterViewComponent {\r\n constructor() { }\r\n _uid: string = AXHtmlUtil.getUID();\r\n\r\n @ViewChild('menu', { static: true }) menu: AXToolbarMenuComponent;\r\n @ViewChild('contextMenu', { static: true }) contextMenu: AXMenuComponent;\r\n\r\n @Input()\r\n filterPanel: AXFilterPanelComponent;\r\n\r\n contextMenuItems: AXMenuItem[] = [\r\n // {\r\n // name: 'addFolder',\r\n // startIcon: 'fas fa-folder',\r\n // text: 'New Folder',\r\n // },\r\n {\r\n name: 'remove',\r\n startIcon: 'fas fa-trash',\r\n text: 'Delete',\r\n },\r\n ];\r\n\r\n\r\n\r\n menuItems: AXMenuItem[] = [\r\n {\r\n name: 'root',\r\n startIcon: 'fas fa-filter',\r\n text: 'Select All',\r\n items: [\r\n {\r\n name: 'selectAll',\r\n style: 'f',\r\n text: 'Select All',\r\n },\r\n // {\r\n // split: true,\r\n // name: 'addFolder',\r\n // startIcon: 'fas fa-folder',\r\n // text: 'New Folder',\r\n // },\r\n {\r\n divider: true,\r\n name: 'save',\r\n startIcon: 'fas fa-save',\r\n text: 'Save'\r\n },\r\n {\r\n divider: true,\r\n name: 'saveAs',\r\n startIcon: 'fas fa-save',\r\n text: 'Save As...'\r\n }\r\n ]\r\n }\r\n\r\n ];\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.selectAll();\r\n this.addPredefinedList();\r\n }, 100);\r\n }\r\n\r\n addPredefinedList() {\r\n this.filterPanel.predefinedFilters.forEach(c => {\r\n const item = {\r\n name: c.name,\r\n text: c.title,\r\n type: 'f',\r\n startIcon: 'fas',\r\n data: c.value,\r\n style: this._uid,\r\n uid: AXHtmlUtil.getUID()\r\n };\r\n this.root.items.splice(1, 0, item);\r\n });\r\n this.update();\r\n }\r\n\r\n public selectAll(): void {\r\n this.setCurrent(this.root.items[0]);\r\n this.filterPanel.clear();\r\n this.update();\r\n this.menu.close();\r\n // this.contextMenu.close();\r\n }\r\n\r\n itemClick(e: AXMenuItem) {\r\n\r\n if (e.style === 'f') {\r\n if (e.name === 'selectAll') {\r\n this.selectAll();\r\n }\r\n else {\r\n this.setCurrent(e);\r\n this.filterPanel.load(e.data);\r\n }\r\n }\r\n else {\r\n if (e.name === 'saveAs') {\r\n const name = prompt('Please enter the name;');\r\n if (name) {\r\n const item = {\r\n text: name,\r\n type: 'f',\r\n style: this._uid,\r\n startIcon: 'fas',\r\n data: this.filterPanel.value,\r\n uid: AXHtmlUtil.getUID()\r\n };\r\n this.root.items.splice(1, 0, item);\r\n this.setCurrent(item);\r\n }\r\n\r\n }\r\n if (e.name === 'save') {\r\n const selected = this.findSelected();\r\n if (selected) {\r\n selected.data = this.filterPanel.value;\r\n }\r\n }\r\n }\r\n this.update();\r\n }\r\n\r\n private findSelected(): AXMenuItem {\r\n return this.root.items.find(c => c.selected);\r\n }\r\n\r\n private get root(): AXMenuItem {\r\n return this.menuItems[0];\r\n }\r\n\r\n public update(): void {\r\n this.menu.update();\r\n setTimeout(() => {\r\n // this.contextMenu.update();\r\n }, 100);\r\n\r\n }\r\n\r\n private setCurrent(e: AXMenuItem) {\r\n this.root.text = e.text;\r\n this.root.items.filter(c => c.style === 'f').forEach(c => {\r\n c.selected = false;\r\n c.startIcon = 'fas';\r\n });\r\n e.selected = true;\r\n e.startIcon = 'fas fa-check';\r\n this.root.items.find(c => c.name === 'save').visible = e.name !== 'selectAll';\r\n }\r\n\r\n onCtxClick(e: AXMenuItem) {\r\n const target = this.contextMenu.currentTarget as HTMLElement;\r\n const menuId = target.getAttribute('data-uid');\r\n if (e.name === 'remove' && menuId) {\r\n this.root.items = this.root.items.filter(c => c.uid !== menuId);\r\n this.selectAll();\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ContentChild,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n animate,\r\n transition,\r\n} from \"@angular/animations\";\r\nimport { AXBaseSizableComponent, AXElementSize } from \"../base/element.class\";\r\n\r\n@Component({\r\n selector: \"ax-panel-box\",\r\n templateUrl: \"./panel-box.component.html\",\r\n styleUrls: [\"./panel-box.component.scss\"],\r\n animations: [\r\n trigger(\"visibilityChanged\", [\r\n state(\r\n \"shown\",\r\n style({\r\n height: \"*\",\r\n opacity: 1,\r\n })\r\n ),\r\n state(\r\n \"hidden\",\r\n style({\r\n height: \"0px\",\r\n opacity: 0,\r\n padding: 0,\r\n })\r\n ),\r\n transition(\"Void => *\", animate(\"0ms\")),\r\n transition(\"shown => hidden\", animate(\"200ms\")),\r\n transition(\"hidden => shown\", animate(\"200ms\")),\r\n ]),\r\n ],\r\n})\r\nexport class AXPanelBoxComponent implements AXBaseSizableComponent {\r\n @ContentChild(\"header\", { static: true })\r\n headerTemplate: TemplateRef<any>;\r\n\r\n @Input() size: AXElementSize = \"md\";\r\n\r\n @Input() type: string = \"\";\r\n\r\n // @Input()\r\n // caption: string = 'Caption';\r\n\r\n private _caption: string = \"caption\";\r\n @Input()\r\n get caption(): string {\r\n return this._caption;\r\n }\r\n set caption(val: string) {\r\n this._caption = val === \"\" ? \"caption\" : val;\r\n }\r\n\r\n @Output()\r\n collapsedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n private _collapsed: boolean = false;\r\n\r\n @Input()\r\n get collapsed(): boolean {\r\n return this._collapsed;\r\n }\r\n set collapsed(val: boolean) {\r\n if (val !== this._collapsed) {\r\n this._collapsed = val;\r\n this.collapsedChange.emit(this._collapsed);\r\n }\r\n }\r\n\r\n @Input() allowCollapse: boolean = true;\r\n\r\n toggle() {\r\n if (this.allowCollapse) {\r\n this.collapsed = !this.collapsed;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPanelBoxComponent } from './panel-box.component';\r\n@NgModule({\r\n declarations: [AXPanelBoxComponent],\r\n imports: [CommonModule],\r\n exports: [AXPanelBoxComponent],\r\n providers: []\r\n})\r\nexport class AXPanelBoxModule {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n AfterViewInit,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n ViewContainerRef,\r\n TemplateRef,\r\n OnDestroy,\r\n DebugElement\r\n} from '@angular/core';\r\nimport { AXBaseDropdownComponent } from '../base/element.class';\r\nimport { AXHtmlEvent } from '../base/events.class';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { AXConfig } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-drop-down',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display:contents;' }\r\n})\r\nexport class AXDropdownComponent extends AXBaseDropdownComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild('baseTemplate') baseTemplate: TemplateRef<any>;\r\n @ViewChild('content', { static: false }) content: ElementRef<HTMLDivElement>;\r\n @ViewChild('endButtons', { static: false }) endButtons: ElementRef<HTMLDivElement>;\r\n @ViewChild('el', { static: true }) dropdownEL: ElementRef<HTMLDivElement>;\r\n\r\n @Input()\r\n rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n loading: boolean = false;\r\n\r\n @Output()\r\n dropdownToggle: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onButtonClick: EventEmitter<AXHtmlEvent<MouseEvent>> = new EventEmitter<AXHtmlEvent<MouseEvent>>();\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydownHandler(e: KeyboardEvent) {\r\n if (!this.disabled && e.key === 'Enter' && e.type === 'keydown') {\r\n if (!this.readonly) {\r\n this.toggle();\r\n // this.dropdownToggle.emit({ mode: 'enter' });\r\n }\r\n }\r\n if (e.key === 'Escape') {\r\n if (this.isOpen) {\r\n this.close();\r\n e.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n dropdownWidth: number;\r\n\r\n private overlayRef: OverlayRef;\r\n private templatePortal: TemplatePortal;\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private overlay: Overlay,\r\n private viewContainerRef: ViewContainerRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n setTimeout(() => {\r\n this.ref.nativeElement.classList.add(this.rtl ? 'rtl' : 'ltr');\r\n this.dropdownEL.nativeElement.classList.add(this.rtl ? 'rtl' : 'ltr');\r\n }, 5);\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.fitParent === true) {\r\n this.dropdownWidth = this.dropdownEL.nativeElement.offsetWidth;\r\n } else {\r\n this.dropdownWidth = null;\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.endButtons && this.endButtons.nativeElement.childNodes.length !== 0) {\r\n this.content.nativeElement.style.paddingInlineEnd = this.endButtons.nativeElement.clientWidth + 'px';\r\n }\r\n }, 5);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n }\r\n\r\n handleArrowClick(e: AXHtmlEvent<MouseEvent>) {\r\n setTimeout(() => {\r\n this.toggle();\r\n }, 0);\r\n }\r\n\r\n toggle() {\r\n if (this.disabled !== true) {\r\n this.isOpen ? this.close() : this.open();\r\n }\r\n }\r\n\r\n close() {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n this.overlayRef?.detach();\r\n this.dropdownToggle.emit({ mode: 'close' });\r\n }\r\n\r\n open() {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.ensureOverlayCreated();\r\n this.overlayRef.attach(this.templatePortal);\r\n this.dropdownToggle.emit({ mode: 'open' });\r\n }\r\n\r\n private ensureOverlayCreated() {\r\n if (!this.overlayRef) {\r\n const targetEl = document.querySelector<HTMLElement>('#' + this.uid);\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(targetEl)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ])\r\n .withPush(false);\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n\r\n //width: this.dropdownEL.nativeElement.clientWidth,\r\n scrollStrategy: this.overlay.scrollStrategies.reposition({\r\n autoClose: true\r\n }),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n this.overlayRef.setDirection(this.rtl ? 'rtl' : 'ltr');\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n if (!this.templatePortal) {\r\n this.templatePortal = new TemplatePortal(this.baseTemplate, this.viewContainerRef);\r\n }\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.overlayRef ? this.overlayRef.hasAttached() : false;\r\n }\r\n\r\n updatePosition(): void {\r\n this.overlayRef?.updatePosition();\r\n }\r\n focus() {}\r\n}\r\n","import {\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n Component,\r\n ElementRef,\r\n ContentChild,\r\n AfterViewInit,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXValidatableComponent, AXBaseSizableComponent, AXElementSize, AXBaseValueComponent } from '../base/element.class';\r\nimport { AXCalendarType, AXDateTime, AXConfig } from '@acorex/core';\r\nimport { AXValueEvent } from '../base/events.class';\r\nimport { AXValidation } from '../validation/validation.component';\r\n\r\nexport class AXDataPickerChangeEvent extends AXValueEvent<Date> {\r\n isUserChange: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }],\r\n host: { style: 'width: 100%' }\r\n})\r\nexport class AXDatePickerComponent extends AXValidatableComponent implements AXBaseSizableComponent {\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n @ViewChild('input', { static: true })\r\n input: AXTextBoxComponent;\r\n\r\n @Input()\r\n dayStyle = [];\r\n\r\n @Input()\r\n dayMinMaxResoan = '';\r\n\r\n // mmddyyyy: any = [/[0-1]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n yyyyMMdd: any = [/[1-2]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-3]/, /[0-9]/];\r\n ddMMyyyy: any = [/[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n yyyyddMM: any = [/[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/];\r\n // yyyyMMdd1: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/];\r\n // ddMMyyyy2: any = [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n // yyyyddMM3: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/];\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input()\r\n min: Date;\r\n\r\n @Input()\r\n max: Date;\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n allowClear: boolean = false;\r\n\r\n @Input()\r\n textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input()\r\n showToday: boolean = false;\r\n\r\n @Input()\r\n selectableHoliday: boolean = true;\r\n\r\n @Input()\r\n dateType: any;\r\n\r\n @Input()\r\n showTodayButton: boolean = true;\r\n\r\n @Input()\r\n openByClick: boolean = false;\r\n\r\n cursorPosition: number = 0;\r\n\r\n model: any = null;\r\n text: string;\r\n\r\n _renderPicker: boolean = false;\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {\r\n super();\r\n // set defaults\r\n if (AXConfig.get('dateTime.type')) {\r\n this.type = AXConfig.get('dateTime.type');\r\n }\r\n }\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Output()\r\n typeChange: EventEmitter<AXCalendarType> = new EventEmitter<AXCalendarType>();\r\n\r\n private _type: AXCalendarType = 'gregorian';\r\n\r\n @Input()\r\n public get type(): AXCalendarType {\r\n return this._type;\r\n }\r\n\r\n public set type(v: AXCalendarType) {\r\n if (v != this._type) {\r\n this._type = v;\r\n if (this._value) {\r\n this.value = this._value.date;\r\n }\r\n this._setDateType();\r\n this.typeChange.emit(v);\r\n }\r\n }\r\n\r\n selectToday() {\r\n this.value = new Date();\r\n }\r\n\r\n focus(): void {\r\n // this.dropdown.focus();\r\n this.input.focus();\r\n }\r\n\r\n convertMaskToDate(text: string) {\r\n if (this.type == 'jalali') {\r\n var d = new AXDateTime().convertStringToGregorian(text, 'YYYY/M/D');\r\n } else {\r\n }\r\n\r\n return d;\r\n }\r\n\r\n convertMask(date: string) {\r\n let y;\r\n let m;\r\n let d;\r\n switch (this.dateType.mask) {\r\n case this.yyyyMMdd:\r\n y = date.slice(0, 4);\r\n m = date.slice(5, 7);\r\n d = date.slice(8, 10);\r\n break;\r\n case this.ddMMyyyy:\r\n y = date.slice(6, 10);\r\n m = date.slice(3, 5);\r\n d = date.slice(0, 2);\r\n break;\r\n case this.yyyyddMM:\r\n y = date.slice(0, 4);\r\n m = date.slice(8, 10);\r\n d = date.slice(5, 7);\r\n break;\r\n }\r\n\r\n return { year: y, monnth: m, day: d };\r\n }\r\n\r\n textChange(e) {\r\n debugger;\r\n this.text = e.value;\r\n if (this.text && this.text.indexOf('_') === -1 && this.text.length == 10) {\r\n this.userChange = e.isUserChange;\r\n const date = this.convertMask(this.text);\r\n this.value = this.convertMaskToDate(date.year + '-' + date.monnth + '-' + date.day);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this._setDateType();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.text = this._value?.toString();\r\n if (this.showToday && !this.value) {\r\n this.selectToday();\r\n }\r\n\r\n console.log(Boolean(this.dropdown.dropdownWidth > 200));\r\n\r\n if (this.dropdown.dropdownWidth > 200) {\r\n this.dropdown.dropdownWidth = 250;\r\n }\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n clear() {\r\n this.userChange = true;\r\n this.value = null;\r\n }\r\n\r\n userChange: boolean = false;\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXDataPickerChangeEvent> = new EventEmitter<AXDataPickerChangeEvent>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n private _value: AXDateTime;\r\n @Input()\r\n public get value(): Date {\r\n return this._value?.date;\r\n }\r\n public set value(v: Date) {\r\n this.validate();\r\n const oldValue = this._value;\r\n const old = this.value;\r\n\r\n if (v) {\r\n this._value = new AXDateTime(v, this.type);\r\n } else {\r\n this._value = null;\r\n }\r\n let unValidDate = false;\r\n if (this.max || this.min) {\r\n unValidDate = this.isInMInMaxRange(AXDateTime.convert(v));\r\n }\r\n\r\n if (!unValidDate) {\r\n if ((!v && oldValue) || (this._value && !this._value.equal(oldValue, 'day'))) {\r\n this.text = this._value?.toString();\r\n setTimeout(() => {\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n oldValue: old,\r\n value: v,\r\n isUserChange: this.userChange\r\n });\r\n }, 100);\r\n }\r\n } else {\r\n this.text = '';\r\n }\r\n this.userChange = false;\r\n }\r\n\r\n private _setDateType() {\r\n switch (this.dateType) {\r\n case 'yyyyMMdd':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyMMdd,\r\n keepCharPositions: true\r\n };\r\n break;\r\n case 'ddMMyyyy':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.ddMMyyyy,\r\n keepCharPositions: true\r\n };\r\n break;\r\n case 'yyyyddMM':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyddMM,\r\n keepCharPositions: true\r\n };\r\n break;\r\n\r\n default:\r\n if (this.type == 'gregorian') {\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.ddMMyyyy,\r\n keepCharPositions: true\r\n };\r\n } else if (this.type == 'jalali') {\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyMMdd,\r\n keepCharPositions: true\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n\r\n isInMInMaxRange(d) {\r\n let r = false;\r\n if (d !== undefined) {\r\n if (this.min && !this.max) {\r\n r = d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1;\r\n }\r\n if (this.max && !this.min) {\r\n r = d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;\r\n }\r\n if (this.min && this.max) {\r\n r =\r\n d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1 ||\r\n d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n onDateChange(e) {\r\n this.userChange = true;\r\n this.dropdown.close();\r\n\r\n //this.clearValidationStyle(this.ref.nativeElement);\r\n }\r\n\r\n onClick(e) {\r\n this.userChange = true;\r\n this.dropdown.close();\r\n }\r\n\r\n onStartfocus() {\r\n if (this.text == undefined || this.text == null || this.text == '') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n }\r\n\r\n handleInputFocus() {\r\n if (this.openByClick) {\r\n this._renderPicker = true;\r\n this.dropdown.open();\r\n } else {\r\n this.onStartfocus();\r\n }\r\n\r\n // this.input.input.nativeElement.focus();\r\n }\r\n handleInputBlur() {\r\n if (this.text && this.text.indexOf('_') != -1) {\r\n this.text = '';\r\n this.value = null;\r\n }\r\n }\r\n\r\n handleButtonClick() {\r\n this._renderPicker = true;\r\n setTimeout(() => {\r\n this.dropdown.toggle();\r\n });\r\n }\r\n\r\n handleKeyPress(e: KeyboardEvent) {\r\n if (e.type == 'keydown' || e.type == 'keypress' || e.type == 'keyup') {\r\n if (e.key === 'Delete') {\r\n e.preventDefault();\r\n }\r\n if (e.key === 'Backspace') {\r\n }\r\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\r\n if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.input.nativeElement.selectionStart;\r\n }\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n const inputChar = String.fromCharCode(e.charCode);\r\n if (this.text != undefined) {\r\n const ind1 = this.text.charAt(0);\r\n const ind2 = this.text.charAt(1);\r\n const ind3 = this.text.charAt(2);\r\n const ind4 = this.text.charAt(3);\r\n const ind5 = this.text.charAt(4);\r\n const ind6 = this.text.charAt(5);\r\n const ind7 = this.text.charAt(6);\r\n const ind8 = this.text.charAt(7);\r\n const ind9 = this.text.charAt(8);\r\n const ind10 = this.text.charAt(9);\r\n switch (this.dateType.mask) {\r\n case this.yyyyMMdd:\r\n if (e.type == 'keypress') {\r\n this.handleClick();\r\n if (\r\n (ind6 == '1' && ind7 == '_' && inputChar >= '3') ||\r\n (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10 == '_')) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else if (ind9 == '3' && ind10 == '_') {\r\n if (ind6 + ind7 <= '06' && inputChar >= '2') {\r\n e.preventDefault();\r\n } else if (ind6 + ind7 > '06' && inputChar >= '1') {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n if (this.cursorPosition >= 5 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) < 12) {\r\n if (Number(ind6 + ind7) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) < 31) {\r\n if (Number(ind9 + ind10) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // e.preventDefault();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n // e.preventDefault();\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) > 1) {\r\n if (Number(ind6 + ind7) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '12' + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) > 1) {\r\n if (Number(ind9 + ind10) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '31';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n case this.ddMMyyyy:\r\n if (e.type === 'keypress') {\r\n this.handleClick();\r\n if (\r\n (ind4 == '1' && ind5 == '_' && inputChar >= '3') ||\r\n (((ind1 == '0' && ind2 == '_') || (ind4 == '0' && ind5 == '_')) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else {\r\n if (ind1 == '3' && ind2 == '_' && inputChar >= '2') {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition >= 6) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) + 1);\r\n }\r\n if (this.cursorPosition > 2 && this.cursorPosition <= 5) {\r\n if (Number(ind4 + ind5) < 12) {\r\n if (Number(ind4 + ind5) < 9) {\r\n this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + '01' + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition <= 2) {\r\n if (Number(ind1 + ind2) < 31) {\r\n if (Number(ind1 + ind2) < 9) {\r\n this.text = '0' + String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = '01' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition >= 6) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) - 1);\r\n } else if (this.cursorPosition > 2 && this.cursorPosition <= 5) {\r\n if (Number(ind4 + ind5) > 1) {\r\n if (Number(ind4 + ind5) < 11) {\r\n this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + '12' + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition <= 2) {\r\n if (Number(ind1 + ind2) > 1) {\r\n if (Number(ind1 + ind2) < 11) {\r\n this.text = '0' + String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = '31' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n\r\n case this.yyyyddMM:\r\n if (e.type === 'keypress') {\r\n if (\r\n (ind9 === '1' && ind10 == '_' && inputChar >= '3') ||\r\n (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10)) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else if (ind6 == '3' && ind7 == '_' && inputChar >= '2') {\r\n e.preventDefault();\r\n }\r\n setTimeout(() => {\r\n this.handleClick();\r\n }, 0);\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) < 31) {\r\n if (Number(ind6 + ind7) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) < 12) {\r\n if (Number(ind9 + ind10) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) > 1) {\r\n if (Number(ind6 + ind7) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '31' + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) > 1) {\r\n if (Number(ind9 + ind10) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '12';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n handleClick() {\r\n if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.input.nativeElement, this.cursorPosition);\r\n }\r\n}\r\n","import {\r\n Component, Input, ChangeDetectorRef, ChangeDetectionStrategy,\r\n ViewEncapsulation, ContentChild, ViewChild, ElementRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-form-group',\r\n templateUrl: './form-group.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' }\r\n})\r\nexport class AXFormGroupComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @ViewChild('div')\r\n div: ElementRef\r\n\r\n @ContentChild(AXValidatableComponent)\r\n private component: AXValidatableComponent;\r\n\r\n required: boolean = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.required = this.component?.validation?.rules?.some(c => c.type === 'required');\r\n if (this.required) {\r\n this.div.nativeElement.classList.add('required-state')\r\n\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFormGroupComponent } from './form-group.component';\r\n\r\nconst COMPONENT = [AXFormGroupComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXFormGroupModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextBoxComponent } from './textbox.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { FormsModule } from '@angular/forms';\r\nconst COMPONENT = [AXTextBoxComponent];\r\nconst MODULES = [CommonModule, AXButtonModule, TextMaskModule, FormsModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXTextBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDropdownComponent } from './dropdown.component';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXPopoverModule } from '../popover/popover.module';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nconst COMPONENT = [AXDropdownComponent];\r\nconst MODULES = [CommonModule, AXFormGroupModule, AXTextBoxModule, AXButtonModule, AXPopoverModule, OverlayModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXDropdownModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXDatePickerComponent } from './date-picker.component';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXCalendarBoxModule } from '../calendar/calendar-box/calendar-box.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n@NgModule({\r\n declarations: [AXDatePickerComponent],\r\n imports: [CommonModule, FormsModule, AXDropdownModule, AXCalendarBoxModule, AXButtonModule, AXTextBoxModule, TextMaskModule, FormsModule],\r\n exports: [AXDatePickerComponent],\r\n providers: []\r\n})\r\nexport class AXDatePickerModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToastService } from './toast.service';\r\nimport { AXToastWrapperComponent } from './toast-wrapper/toast-wrapper.component';\r\nimport { AXToastMessageComponent } from './toast-message/toast-message.component';\r\n@NgModule({\r\n declarations: [AXToastWrapperComponent, AXToastMessageComponent],\r\n imports: [CommonModule],\r\n exports: [AXToastWrapperComponent],\r\n entryComponents: [AXToastWrapperComponent, AXToastMessageComponent],\r\n providers: [AXToastService]\r\n})\r\nexport class AXToastModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSelectionListComponent } from './selection-list.component';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXSelectionListComponent],\r\n imports: [CommonModule, FormsModule, AXCheckBoxModule],\r\n exports: [AXSelectionListComponent],\r\n providers: []\r\n})\r\nexport class AXSelectionListModule { }\r\n","import {\r\n Component,\r\n OnInit,\r\n QueryList,\r\n ContentChildren,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ElementRef,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXValidationResult } from './validation.class';\r\nimport { AXValidatableComponent } from '../base/element.class';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n@Component({\r\n selector: 'ax-validation-form',\r\n template: '<ng-content></ng-content>'\r\n})\r\nexport class AXValidationFormComponent {\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) { }\r\n\r\n\r\n private widgets: AXValidatableComponent[] = [];\r\n\r\n\r\n @ContentChildren(AXValidatableComponent, { descendants: true })\r\n private widgetsQuery: QueryList<AXValidatableComponent>;\r\n\r\n @Input()\r\n validateOn: 'blur' | 'change' | 'submit' = 'submit';\r\n\r\n @Output()\r\n onInit: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n\r\n ngAfterViewInit() {\r\n\r\n this.onInit.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n\r\n validate(): Promise<AXValidationResult> {\r\n this.widgets.push(...this.widgetsQuery.toArray().filter(c => !this.widgets.includes(c)));\r\n //\r\n this.widgets.forEach(w => {\r\n if (w.validation && w.validation.validateOn == null) {\r\n w.validation.validateOn = this.validateOn;\r\n }\r\n });\r\n\r\n return new Promise<AXValidationResult>(resolve => {\r\n if (!this.widgets || this.widgets.length === 0) {\r\n return Promise.resolve({ result: true });\r\n }\r\n Promise.all(this.widgets.map((c) => c.validate())).then((rules: any) => {\r\n const failed = rules.filter((c: any) => !c.result);\r\n if (failed.length) {\r\n resolve({\r\n result: false,\r\n items: failed\r\n });\r\n }\r\n else {\r\n resolve({ result: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n addWidget(widget: AXValidatableComponent) {\r\n this.widgets.push(widget);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXValidationFormComponent } from './validation-form.component';\r\nimport { AXValidationComponent } from './validation.component';\r\nimport { AXValidationRuleComponent, AXValidationRules } from './validation-rule.widget';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXValidationFormComponent, AXValidationComponent, AXValidationRuleComponent],\r\n imports: [CommonModule],\r\n exports: [AXValidationFormComponent, AXValidationComponent, AXValidationRuleComponent],\r\n providers: []\r\n})\r\nexport class AXValidationModule {\r\n constructor() {\r\n AXValidationRules.addRule('email', {\r\n message: AXTranslator.get('validation.messages.email'),\r\n type: 'regex',\r\n value: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\r\n })\r\n AXValidationRules.addRule('phone', {\r\n message: AXTranslator.get('validation.messages.phone'),\r\n type: 'regex',\r\n value: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFilterPanelComponent } from './filter-panel/filter-panel.component';\r\nimport { AXFilterColumnStringComponent } from './columns/filter-column-string.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXFilterColumnSelectionComponent } from './columns/filter-column-selection.component';\r\nimport { AXFilterColumnDateComponent } from './columns/filter-column-date.component';\r\nimport { AXFilterColumnNumberComponent } from './columns/filter-column-number.component';\r\nimport { AXToolbarFilterViewComponent } from './toolbar/filter-toolbar.component';\r\nimport { AXPanelBoxModule } from '../panel-box/panel-box.module';\r\nimport { AXDatePickerModule } from '../date-picker/date-picker.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXToastModule } from '../toast/toast.module';\r\nimport { AXToolbarModule } from '../toolbar/toolbar.module';\r\nimport { AXMenuModule } from '../menu/menu.module';\r\nimport { AXSelectionListModule } from '../selection-list/selection-list.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\n\r\n\r\n\r\n\r\nconst COMPONENTS = [\r\n AXFilterPanelComponent,\r\n AXFilterColumnStringComponent,\r\n AXFilterColumnSelectionComponent,\r\n AXFilterColumnDateComponent,\r\n AXFilterColumnNumberComponent,\r\n AXToolbarFilterViewComponent,\r\n]\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXPanelBoxModule,\r\n AXDatePickerModule,\r\n AXCheckBoxModule,\r\n AXTextBoxModule,\r\n AXValidationModule,\r\n AXToastModule,\r\n AXToolbarModule,\r\n AXMenuModule,\r\n AXSelectionListModule,\r\n AXButtonModule\r\n ],\r\n exports: [COMPONENTS],\r\n providers: [],\r\n})\r\nexport class AXFilterModule { }","import { ContentChild, Input, Directive } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\nimport { AXDataSourceReadParams } from '../../data-source/read-param';\r\nimport { AXBaseComponent } from '../../base/element.class';\r\n\r\n\r\nexport abstract class AXDataListComponent extends AXBaseComponent {\r\n\r\n\r\n\r\n @Input()\r\n items: any[] = [];\r\n\r\n // @ContentChild(AXDataSourceComponent, { static: true })\r\n // private _contentDataSource: AXDataSourceComponent;\r\n\r\n // private _dataSource: AXDataSourceComponent;\r\n\r\n // @Input()\r\n // public get dataSource(): AXDataSourceComponent {\r\n // return this._dataSource ? this._dataSource : this._contentDataSource;\r\n // }\r\n\r\n // public set dataSource(v: AXDataSourceComponent) {\r\n // this._dataSource = v;\r\n // }\r\n\r\n\r\n abstract dataSource: AXDataSourceComponent;\r\n\r\n\r\n // ngAfterContentInit(): void {\r\n // this.configDataList();\r\n // }\r\n\r\n\r\n protected configDataList() {\r\n if (this.dataSource) {\r\n this.dataSource.onDataReceived.subscribe(c => {\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n }\r\n\r\n private dataReceived(data: any) {\r\n this.items = data;\r\n }\r\n\r\n private params: AXDataSourceReadParams = {};\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n this.params = params;\r\n if (this.dataSource) {\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n this.fetch(this.params);\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXToolbarItem } from '../../toolbar/toolbar-item';\r\nimport { AXValueEvent } from '../../base/events.class';\r\n\r\nexport type AXListViewDirection = \"vertical\" | \"vertical-wrap\" | \"horizontal-wrap\" | \"horizontal\";\r\n\r\n@Component({\r\n selector: 'ax-toolbar-list-view',\r\n template: `\r\n <div class=\"btn-group\" role=\"group\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"vertical\" [class.active]=\"direction=='vertical'\" (click)=\"direction='vertical'\" title=\"vertical\">\r\n <i class=\"far fa-bars\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"verticalWrap\" [class.active]=\"direction=='vertical-wrap'\" (click)=\"direction='vertical-wrap'\" title=\"vertical-wrap\">\r\n <i class=\"far fa-grip-horizontal\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"horizontalWrap\" [class.active]=\"direction=='horizontal-wrap'\" title=\"horizontal-wrap'\" (click)=\"direction='horizontal-wrap'\" title=\"horizontal-wrap\">\r\n <i class=\"far fa-bars fa-rotate-90\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"horizontal\" [class.active]=\"direction=='horizontal'\" (click)=\"direction='horizontal'\" title=\"horizontal\">\r\n <i class=\"far fa-grip-horizontal fa-rotate-90\"></i>\r\n </button>\r\n </div>\r\n `,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarListViewComponent }]\r\n})\r\nexport class AXToolbarListViewComponent {\r\n constructor() { }\r\n\r\n @Input('vertical')\r\n vertical: boolean = true;\r\n\r\n @Input('vertical-wrap')\r\n verticalWrap: boolean = true;\r\n\r\n @Input('horizontal-wrap')\r\n horizontalWrap: boolean = true;\r\n\r\n @Input('horizontal')\r\n horizontal: boolean = true;\r\n\r\n\r\n @Output()\r\n onDirectionChanged: EventEmitter<AXValueEvent<AXListViewDirection>> = new EventEmitter<AXValueEvent<AXListViewDirection>>();\r\n\r\n private _direction: AXListViewDirection = \"vertical\";\r\n @Input()\r\n public get direction(): AXListViewDirection {\r\n return this._direction;\r\n }\r\n public set direction(v: AXListViewDirection) {\r\n if (v != this._direction) {\r\n const old = this._direction;\r\n this._direction = v;\r\n this.onDirectionChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n Input,\r\n Output,\r\n EventEmitter\r\n} from \"@angular/core\";\r\nimport { AXDataListComponent } from \"../core/data-list.component\";\r\nimport {\r\n AXToolbarListViewComponent,\r\n AXListViewDirection\r\n} from \"./toolbar-list-view.component\";\r\nimport { ViewEncapsulation } from \"@angular/core\";\r\nimport { AXToolbarSearchComponent } from '../../toolbar/search/toolbar-search.component';\r\nimport { AXToolbarComponent } from '../../toolbar/toolbar.component';\r\nimport { AXEvent, AXValueEvent } from '../../base/events.class';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\n\r\n\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: \"ax-list\",\r\n templateUrl: \"./list.component.html\",\r\n styleUrls: [\"./list.component.scss\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXListComponent extends AXDataListComponent {\r\n constructor() {\r\n super();\r\n }\r\n @Input() width: string = \"\";\r\n @Input() height: string = \"auto\";\r\n\r\n @Input(\"dropId\") public dropId: string;\r\n @Input(\"connectedList\") public connectedList: string[] = [];\r\n\r\n @Input() public allowMoveItem: boolean = false;\r\n\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n\r\n @ContentChild('itemTemplate', { static: true })\r\n _contentItemTemplate: TemplateRef<any>;\r\n\r\n\r\n private _itemTemplate: TemplateRef<any>;\r\n @Input()\r\n public get itemTemplate(): TemplateRef<any> {\r\n return this._itemTemplate ? this._itemTemplate : this._contentItemTemplate;\r\n }\r\n public set itemTemplate(v: TemplateRef<any>) {\r\n this._itemTemplate = v;\r\n }\r\n\r\n\r\n\r\n\r\n @ContentChild('emptyTemplate', { static: true })\r\n _contentEmptyTemplate: TemplateRef<any>;\r\n\r\n private _emptyTemplate: TemplateRef<any>;\r\n @Input()\r\n public get emptyTemplate(): TemplateRef<any> {\r\n return this._emptyTemplate ? this._emptyTemplate : this._contentEmptyTemplate;\r\n }\r\n public set emptyTemplate(v: TemplateRef<any>) {\r\n this._emptyTemplate = v;\r\n }\r\n\r\n\r\n @ContentChild(AXToolbarSearchComponent, { static: true })\r\n searchToolbar: AXToolbarSearchComponent;\r\n\r\n @ContentChild(AXToolbarListViewComponent, { static: true })\r\n viewToolbar: AXToolbarListViewComponent;\r\n\r\n @ContentChild(AXToolbarComponent, { static: true })\r\n toolbar: AXToolbarComponent;\r\n\r\n\r\n\r\n @Output()\r\n onDirectionChanged: EventEmitter<AXValueEvent<AXListViewDirection>> = new EventEmitter<AXValueEvent<AXListViewDirection>>();\r\n\r\n private _direction: AXListViewDirection = \"vertical\";\r\n @Input()\r\n public get direction(): AXListViewDirection {\r\n return this._direction;\r\n }\r\n public set direction(v: AXListViewDirection) {\r\n if (this._direction != v) {\r\n const old = this._direction;\r\n this._direction = v;\r\n this.setDirection(v);\r\n this.onDirectionChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.fetch();\r\n if (this.viewToolbar) {\r\n this.viewToolbar.onDirectionChanged.subscribe(c => {\r\n this.direction = c.value;\r\n });\r\n }\r\n }\r\n\r\n private setDirection(e: AXListViewDirection) {\r\n this.direction = e;\r\n }\r\n\r\n\r\n\r\n // dragDrop(event: CdkDragDrop<any[]>) {\r\n // if (event.previousContainer === event.container) {\r\n // moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n // } else {\r\n // transferArrayItem(event.previousContainer.data,\r\n // event.container.data,\r\n // event.previousIndex,\r\n // event.currentIndex);\r\n // }\r\n // }\r\n dragDrop(event: any) {\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXDataSourceComponent } from './datasource.component';\r\nimport { AXHttpModule } from '@acorex/core';\r\n\r\n@NgModule({\r\n declarations: [AXDataSourceComponent],\r\n imports: [],\r\n exports: [AXDataSourceComponent],\r\n providers: [],\r\n})\r\nexport class AXDataSourceModule { }","import { NgModule } from '@angular/core';\r\nimport { AXListComponent } from './list.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarListViewComponent } from './toolbar-list-view.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AXDataSourceModule } from '../../data-source/datasource.module';\r\n\r\n@NgModule({\r\n declarations: [AXListComponent, AXToolbarListViewComponent],\r\n imports: [CommonModule, AXDataSourceModule, DragDropModule],\r\n exports: [AXListComponent, AXToolbarListViewComponent],\r\n providers: [],\r\n})\r\nexport class AXListModule { }","import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { AXMenuItemClickEvent } from '../menu/menu.component';\r\nimport { AXBasePopupPageComponent } from '../base/base-page.class';\r\n\r\n@Component({\r\n selector: 'ax-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXDialogComponent extends AXBasePopupPageComponent {\r\n message: any;\r\n\r\n buttons: AXButtonItem[] = [];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n onClick: Function;\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n if (this.onClick) {\r\n this.onClick(e.data);\r\n }\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return this.buttons;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDialogComponent } from './dialog.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\n\r\n@NgModule({\r\n declarations: [AXDialogComponent],\r\n imports: [CommonModule, AXButtonModule,AXTranslatorModule],\r\n exports: [AXDialogComponent],\r\n providers: [],\r\n})\r\nexport class AXDialogModule { }","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n ViewChild,\r\n ViewContainerRef,\r\n OnInit,\r\n ComponentFactoryResolver,\r\n ViewEncapsulation,\r\n HostListener,\r\n ElementRef,\r\n ComponentRef,\r\n OnDestroy,\r\n Output,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXPageCloseEvent, TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXButtonItem, AXRenderService } from '@acorex/core';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n templateUrl: './popup.component.html',\r\n styleUrls: ['./popup.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXPopupComponent extends AXBaseComponent implements OnDestroy {\r\n\r\n isLoading: boolean = true;\r\n _loadingId: number;\r\n private onFooterButtonsSubscription: Subscription;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private rendererService: AXRenderService,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit() {\r\n console.log('popup');\r\n this._loadingId = this.loadingService.show(this.ref.nativeElement.querySelector('.ax-popup-body-container'));\r\n if (typeof this.content === 'string') {\r\n this.rendererService.findLoadedComponentByRoute(this.content, 20).then(route => {\r\n setTimeout(() => {\r\n this.loadComponent(route?.component);\r\n }, 300);\r\n });\r\n }\r\n else if (this.content instanceof TemplateRef) {\r\n const view = this.content.createEmbeddedView({ $implicit: this.data });\r\n this.popupBody.insert(view);\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n else if (typeof this.content === 'function') {\r\n setTimeout(() => {\r\n this.loadComponent(this.content);\r\n });\r\n }\r\n }\r\n\r\n\r\n private loadComponent(component: any) {\r\n\r\n if (component == null) {\r\n //TODO: 404 page component\r\n console.error(`Invalid page Component! ${this.content}`);\r\n return;\r\n }\r\n ///\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n this.comRef = this.popupBody.createComponent(factory);\r\n const com = this.comRef.instance as any;\r\n if (com.onClosed) {\r\n com.onClosed.subscribe((e: AXPageCloseEvent) => {\r\n this.onClosed.emit(e);\r\n });\r\n }\r\n this[TAB_META_KEY].component = com;\r\n Object.assign(this[TAB_META_KEY].component, this.data);\r\n //\r\n if (com.getFooterButtons) {\r\n this.footerButtons = com.getFooterButtons();\r\n }\r\n if (com.onFooterButtonsChanged) {\r\n this.onFooterButtonsSubscription = (com.onFooterButtonsChanged as EventEmitter<AXButtonItem[]>).subscribe(c => {\r\n this.footerButtons = c;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n //\r\n this.focus();\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n setTimeout(() => {\r\n this.comRef.changeDetectorRef.detectChanges();\r\n }, 100);\r\n this.cdr.detectChanges();\r\n } catch (error) {\r\n //TODO: 404 page component\r\n console.error(error);\r\n }\r\n }\r\n\r\n @ViewChild('popupBody', { read: ViewContainerRef, static: true })\r\n private popupBody: ViewContainerRef;\r\n\r\n @HostListener('keydown.escape', ['$event'])\r\n onKeydownHandler(event: KeyboardEvent) {\r\n if (this.closable) {\r\n this.onCloseClick();\r\n }\r\n }\r\n\r\n private comRef: ComponentRef<any>;\r\n\r\n title: string;\r\n\r\n onClosed: EventEmitter<AXPageCloseEvent> = new EventEmitter<AXPageCloseEvent>();\r\n\r\n size: 'sm' | 'md' | 'lg' | 'full' = 'sm';\r\n modal: boolean = true;\r\n\r\n data: any = {};\r\n\r\n maximizable: boolean = false;\r\n\r\n closable: boolean = true;\r\n\r\n content: any;\r\n\r\n headerButtons: AXButtonItem[] = [];\r\n\r\n footerButtons: AXButtonItem[] = [];\r\n\r\n onCloseClick() {\r\n this.onClosed.emit({\r\n component: this[TAB_META_KEY].component,\r\n htmlElement: this.ref.nativeElement,\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.comRef) {\r\n this.comRef.destroy();\r\n }\r\n if (this.onFooterButtonsSubscription) {\r\n this.onFooterButtonsSubscription.unsubscribe();\r\n }\r\n this.cdr.detectChanges();\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n\r\n focus() {\r\n setTimeout(() => this.ref.nativeElement.focus());\r\n }\r\n\r\n onFullScreen() { }\r\n\r\n handleFooterButtonClick(e: AXButtonItem) {\r\n if (e.onClick) {\r\n e.onClick();\r\n }\r\n else if (this[TAB_META_KEY].component.onFooterButtonClick) {\r\n this[TAB_META_KEY].component.onFooterButtonClick({\r\n component: this[TAB_META_KEY].component,\r\n name: e.name,\r\n data: e,\r\n htmlElement: this.ref.nativeElement,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXPopupComponent } from './popup.component';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { TAB_META_KEY, AXPageClosedPromise, AXPageCloseEvent } from '../base/base-page.class';\r\nimport { AXOverlayService, AXOverlayViewRef } from '../popover/overlay.service';\r\nimport { options } from '@amcharts/amcharts4/core';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPopupService {\r\n private stack: Array<AXPopupComponent> = [];\r\n\r\n constructor(private overlayService: AXOverlayService) { }\r\n\r\n\r\n open(content: any, title: string): AXPageClosedPromise;\r\n open(\r\n content: any,\r\n options?: {\r\n title: string;\r\n closable?: boolean;\r\n maximizable?: boolean;\r\n size?: 'sm' | 'md' | 'lg' | 'full';\r\n data?: any;\r\n footerButtons?: AXButtonItem[],\r\n modal?: boolean\r\n }\r\n ): AXPageClosedPromise;\r\n\r\n open(arg1, arg2): AXPageClosedPromise {\r\n const options: any = {\r\n closable: true,\r\n size: 'md',\r\n maximizable: false,\r\n footerButtons: [],\r\n modal: true,\r\n };\r\n\r\n if (typeof arg2 === 'string') {\r\n options.title = arg2;\r\n } else {\r\n Object.assign(options, arg2);\r\n }\r\n const com = this.overlayService.show(AXPopupComponent, options, {\r\n transparentBackdrop: false,\r\n hasBackdrop: options.modal,\r\n closeOnClickOutside: false,\r\n scroll: 'block'\r\n });\r\n const popup = com.instance as AXPopupComponent;\r\n popup.content = arg1;\r\n popup[TAB_META_KEY] = {};\r\n if (options.size) {\r\n popup.size = options.size;\r\n }\r\n if (options.footerButtons) {\r\n popup.footerButtons = options.footerButtons;\r\n }\r\n this.stack.push(popup);\r\n popup.onClosed.subscribe(c => {\r\n this.closePopup(popup, com, c);\r\n });\r\n const promise = new AXPageClosedPromise((resolve) => {\r\n popup[TAB_META_KEY].close = (e) => {\r\n if (resolve) {\r\n resolve(e);\r\n }\r\n };\r\n });\r\n promise['closeMethod'] = () => { popup.onCloseClick(); };\r\n return promise;\r\n }\r\n\r\n\r\n private closePopup(popup: AXPopupComponent, com: AXOverlayViewRef, result: AXPageCloseEvent) {\r\n const closeFunc = (e) => {\r\n com.dispose();\r\n this.stack.pop();\r\n delete e.cancel;\r\n popup[TAB_META_KEY].close(e);\r\n if (this.stack.length) { this.stack.reverse()[0].focus(); }\r\n };\r\n const e = { cancel: false };\r\n const closingFunc = popup[TAB_META_KEY]?.component?.onClosing;\r\n if (closingFunc) {\r\n const res = closingFunc(e);\r\n if (res instanceof Promise) {\r\n res.then(() => {\r\n if (e == null || e.cancel !== true) {\r\n closeFunc(result);\r\n }\r\n });\r\n }\r\n else {\r\n if (e == null || e.cancel !== true) {\r\n closeFunc(result);\r\n }\r\n }\r\n } else {\r\n closeFunc(result);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXDialogComponent } from './dialog.component';\r\nimport { AXPopupService } from '../popup/popup.service';\r\nimport { AXButtonItem, AXTranslator } from '@acorex/core';\r\n\r\nexport class AXDialogAlertResult {\r\n private _executor: (close: (e?: any) => void) => void;\r\n constructor(\r\n executor: (close: (e?: any) => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.closeAction);\r\n }, 50);\r\n }\r\n\r\n private closeAction: (e?: any) => void;\r\n\r\n close(action: (e?: any) => void): AXDialogAlertResult {\r\n this.closeAction = action;\r\n return this;\r\n }\r\n\r\n}\r\n\r\nexport class AXDialogConfirmResult {\r\n private _executor: (okay: () => void, cancel: () => void, final: () => void) => void;\r\n constructor(\r\n executor: (okay: () => void, cancel: () => void, final: () => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.okayAction, this.cancelAction, this.finalAction);\r\n }, 50);\r\n }\r\n\r\n private okayAction: () => void;\r\n private cancelAction: () => void;\r\n private finalAction: () => void;\r\n\r\n okay(action: () => void): AXDialogConfirmResult {\r\n this.okayAction = action;\r\n return this;\r\n }\r\n cancel(action: () => void): AXDialogConfirmResult {\r\n this.cancelAction = action;\r\n\r\n return this;\r\n }\r\n final(action: () => void) {\r\n this.finalAction = action;\r\n }\r\n}\r\n\r\n\r\nexport class AXDialogResult {\r\n private _executor: (then: (name: string) => void, final: () => void) => void;\r\n constructor(\r\n executor: (then: (name: string) => void, final: () => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.thenAction, this.finalAction);\r\n }, 50);\r\n }\r\n\r\n private thenAction: (name: string) => void;\r\n private finalAction: () => void;\r\n\r\n then(action: (name: string) => void): AXDialogResult {\r\n this.thenAction = action;\r\n return this;\r\n }\r\n\r\n final(action: () => void) {\r\n this.finalAction = action;\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXDialogService {\r\n\r\n constructor(private popupService: AXPopupService) {\r\n\r\n }\r\n\r\n alert(title: string, message: string): AXDialogAlertResult {\r\n return new AXDialogAlertResult((close) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable: false,\r\n\r\n data: {\r\n message,\r\n buttons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n }\r\n ],\r\n onClick: (e) => {\r\n popup.close()\r\n close();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n confirm(title: string, message: string): AXDialogConfirmResult {\r\n return new AXDialogConfirmResult((okay, cancel, final) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable: false,\r\n\r\n data: {\r\n buttons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n }\r\n ],\r\n message,\r\n onClick: (e) => {\r\n popup.close()\r\n if (e.name === 'confirm' && okay) {\r\n okay();\r\n }\r\n if (e.name === 'cancel' && cancel) {\r\n cancel();\r\n }\r\n if (final) {\r\n final();\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n\r\n show(title: string, message: string, closable: boolean = false, ...buttons: AXButtonItem[]): AXDialogResult {\r\n return new AXDialogResult((then, final) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable,\r\n data: {\r\n message,\r\n buttons,\r\n onClick: (e) => {\r\n popup.close();\r\n if (then) {\r\n then(e.name);\r\n }\r\n if (final) {\r\n final();\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\n@Component({\r\n selector: 'ax-drawer',\r\n templateUrl: './drawer.component.html',\r\n animations: [\r\n trigger('slideInOut', [\r\n state(\r\n 'in',\r\n style({\r\n transform: 'translate3d(0,0,0)',\r\n })\r\n ),\r\n state(\r\n 'out',\r\n style({\r\n transform: 'translate3d(100%, 0, 0)',\r\n })\r\n ),\r\n transition('in => out', animate('200ms ease-in-out')),\r\n transition('out => in', animate('200ms ease-in-out')),\r\n ]),\r\n ],\r\n})\r\nexport class AXDrawerComponent {\r\n constructor() {}\r\n\r\n @Input()\r\n width: number = 300;\r\n\r\n drawerState: string = 'out';\r\n\r\n ngOnDestroy(): void {\r\n document.querySelector('body').classList.remove('ax-drawer-underlay');\r\n }\r\n toggle() {\r\n const body = document.querySelector('body');\r\n\r\n if (this.drawerState === 'out') {\r\n this.drawerState = 'in';\r\n body.classList.add('ax-drawer-underlay');\r\n } else {\r\n this.drawerState = 'out';\r\n body.classList.remove('ax-drawer-underlay');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDrawerComponent } from './drawer.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n@NgModule({\r\n declarations: [AXDrawerComponent],\r\n imports: [CommonModule, BrowserAnimationsModule],\r\n exports: [AXDrawerComponent],\r\n providers: []\r\n})\r\nexport class AXDrawerModule {}\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { trigger, state, style, transition, animate } from '@angular/animations';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-fieldset',\r\n templateUrl: './fieldset.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('visibilityChanged', [\r\n state(\r\n 'shown',\r\n style({\r\n height: '*',\r\n opacity: 1\r\n })\r\n ),\r\n state(\r\n 'hidden',\r\n style({\r\n height: '0px',\r\n opacity: 0,\r\n padding: 0\r\n })\r\n ),\r\n transition('Void => *', animate('0ms')),\r\n transition('shown => hidden', animate('200ms')),\r\n transition('hidden => shown', animate('200ms'))\r\n ])\r\n ]\r\n})\r\nexport class AXFieldsetComponent implements AXBaseSizableComponent {\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @Input()\r\n caption: string = '';\r\n\r\n @Input()\r\n allowCollapse: boolean = false;\r\n\r\n collapsed: boolean = false;\r\n toggle() {\r\n if (this.allowCollapse) {\r\n this.collapsed = !this.collapsed;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFieldsetComponent } from './fieldset.component';\r\n\r\n@NgModule({\r\n declarations: [AXFieldsetComponent],\r\n imports: [ CommonModule ],\r\n exports: [AXFieldsetComponent],\r\n providers: [],\r\n})\r\nexport class AXFieldsetModule {}","import { Component, OnInit, ViewEncapsulation, Input } from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-label',\r\n templateUrl: './label.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXLabelComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n constructor() {\r\n super();\r\n }\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXLabelComponent } from './label.component';\r\n\r\nconst COMPONENT = [AXLabelComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXLabelModule { }","import { Component, OnInit, Input, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-loading-panel',\r\n template: `\r\n <div onclick=\"return false;\" class=\"ax ax-loading-panel ax-overlay-wrapper ax-overlay-modal ax-loading-overlay\" *ngIf=\"visible\" >\r\n <ax-loading-indicator tabindex=\"0\" cdkTrapFocus>\r\n </ax-loading-indicator>\r\n </div>\r\n `\r\n})\r\nexport class AXLoadingPanelComponent implements OnInit {\r\n\r\n constructor(private ref: ElementRef<HTMLDivElement>) {\r\n\r\n }\r\n\r\n @Input()\r\n visible: boolean = false;\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n const host = this.ref.nativeElement.closest('.ax-loading-host');\r\n }\r\n\r\n show() {\r\n this.visible = true;\r\n }\r\n\r\n hide() {\r\n this.visible = false;\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXLoadingIndicatorComponent } from './loading-indicator.component';\r\nimport { AXLoadingPanelComponent } from './loading-panel.component';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n@NgModule({\r\n declarations: [AXLoadingIndicatorComponent, AXLoadingPanelComponent],\r\n imports: [CommonModule, A11yModule],\r\n exports: [AXLoadingIndicatorComponent, AXLoadingPanelComponent],\r\n providers: [],\r\n})\r\nexport class AXLoadingModule { }","import { Component, Input, ElementRef, HostListener, ChangeDetectorRef, ChangeDetectionStrategy, AfterViewInit, OnInit } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n@Component({\r\n selector: 'ax-number-box',\r\n templateUrl: './number-box.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXNumberBoxComponent }]\r\n})\r\nexport class AXNumberBoxComponent extends AXBaseTextComponent implements OnInit {\r\n @Input() min: number = null;\r\n @Input() max: number = null;\r\n\r\n @Input()\r\n showSeparator: boolean = false;\r\n @Input()\r\n showCurrency: boolean = false;\r\n\r\n @Input()\r\n showCounter: boolean = true;\r\n\r\n @Input()\r\n scrollWeel: boolean = true;\r\n\r\n @Input()\r\n showDoubleCounter: boolean = false;\r\n\r\n @Input()\r\n maxLength: number = 18;\r\n\r\n userQuestionUpdate = new Subject<string>();\r\n\r\n userEdite: boolean = false;\r\n\r\n tmp: any;\r\n count: number;\r\n findDots: boolean = false;\r\n findMinus: boolean = false;\r\n cursorPosition: number = 0;\r\n dotPosition: number;\r\n textValue: string;\r\n decimalConstant: number = 0.1;\r\n lastStep: number = null;\r\n\r\n @Input() intStep: number = 1;\r\n @Input() decimalNumber: number = null;\r\n @Input() customStep: number = null;\r\n\r\n private _values: string;\r\n public get value(): string {\r\n return this._values;\r\n }\r\n public set value(v: string) {\r\n if (v === '-') {\r\n this.textValue = '-';\r\n this._values = '-';\r\n } else {\r\n if (v === '' || v == null || v === undefined ? true : isNaN(Number(v.toString().replace(/,/g, ''))) === false) {\r\n if (v === '' || v == null || v === undefined) {\r\n this.textValue = '';\r\n const old = this._values;\r\n this._values = null;\r\n\r\n if (this._values !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: null,\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n } else {\r\n v = v.toString();\r\n\r\n // this.addCommas(v.toString());\r\n this.textValue = this.showSeparator && v ? this.addCommas(v.toString()) : v;\r\n\r\n // if (this.textValue.indexOf('.') !== -1) {\r\n // // const dottt= (this.textValue.length-1) - this.textValue.indexOf('.')\r\n // if (this.textValue.length - 1 - this.textValue.indexOf('.') < this.decimalNumber) {\r\n // const a = this.decimalNumber - (this.textValue.length - 1 - this.textValue.indexOf('.'));\r\n // const z = '0';\r\n // this.textValue = this.textValue + '0';\r\n // }\r\n // }\r\n\r\n if (this._values) {\r\n const old = this._values;\r\n if (old.toString().search(/\\./g) !== v.toString().search(/\\./g)) {\r\n if (this.cursorPosition <= old.search(/\\./g)) {\r\n this.cursorPosition = v.search(/\\./g);\r\n } else {\r\n this.cursorPosition = v.length;\r\n }\r\n }\r\n }\r\n if (v !== this._values) {\r\n const old = this._values;\r\n this._values = v;\r\n this.valueChange.emit(this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v));\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v),\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n } else {\r\n this.textValue = '';\r\n v = null;\r\n const old = this._values;\r\n this._values = null;\r\n\r\n if (this._values !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: null,\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n }\r\n }\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n this.textAlign = 'left';\r\n }\r\n\r\n calcSeparator(num: number) {\r\n if (this.showSeparator) {\r\n return num + +(num / 3);\r\n } else {\r\n return num;\r\n }\r\n }\r\n\r\n addCommas2(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n addCommas(nStr) {\r\n nStr += '';\r\n const x = nStr.split('.');\r\n let x1 = x[0];\r\n const x2 = x.length > 1 ? '.' + x[1] : '';\r\n const rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.disabled === false) {\r\n if (this.scrollWeel === true) {\r\n setTimeout(() => {\r\n if (this.readonly === false) {\r\n this.input.nativeElement.addEventListener('wheel', (e) => {\r\n this.handleWheel(e);\r\n });\r\n }\r\n }, 500);\r\n }\r\n }\r\n\r\n // this.value = this.min.toString();\r\n }\r\n\r\n handleWheel(event) {\r\n if ((event as any).wheelDelta > 0) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n this.upStepHandel();\r\n this.delaySearch();\r\n\r\n setTimeout(() => {\r\n this.setCaret();\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if ((event as any).wheelDelta < 0) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n this.downStepHandel();\r\n this.delaySearch();\r\n\r\n setTimeout(() => {\r\n this.setCaret();\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n handleKeyPress(event: any) {\r\n this.userEdite = true;\r\n const NumberDotpattern = /[0-9\\.]/g;\r\n const NumberMinusPattern = /[0-9\\-]/g;\r\n\r\n const inputChar = String.fromCharCode(event.charCode);\r\n\r\n if (this.value && this.value.toString().match(/\\./g) === null) {\r\n this.findDots = false;\r\n }\r\n if (this.value && this.value.toString().search('-') === null) {\r\n this.findMinus = false;\r\n }\r\n\r\n // get cursur position when key press\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n this.cursorPosition += 1;\r\n }\r\n\r\n // control cursor when in first Index\r\n if (this.cursorPosition <= 1) {\r\n if (!NumberMinusPattern.test(inputChar)) {\r\n event.preventDefault();\r\n }\r\n if (this.value && this.value.match(/\\-/g)) {\r\n event.preventDefault();\r\n }\r\n }\r\n // control cursor when in another index\r\n if (this.cursorPosition !== 1) {\r\n if (event.keyCode !== 8 && !NumberDotpattern.test(inputChar)) {\r\n event.preventDefault();\r\n } else {\r\n // for contor decimal figur = 0 or null\r\n if (this.decimalNumber === null || this.decimalNumber === 0) {\r\n if (inputChar === '.') {\r\n event.preventDefault();\r\n }\r\n }\r\n // control decimal number (figur of decimal)\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n const figureAfterDot = this.value.length - this.value.indexOf('.');\r\n const dotIndex = this.value.indexOf('.');\r\n if (dotIndex - 1 + dotIndex + figureAfterDot > dotIndex - 1 + dotIndex + this.decimalNumber && this.cursorPosition - 1 > dotIndex) {\r\n event.preventDefault();\r\n }\r\n }\r\n // control '.' input\r\n if (inputChar === '.') {\r\n const lastChar = this.value.toString().charAt(this.value.length - 1);\r\n // control . when last char is -\r\n if (lastChar.toString().match(/\\-/g)) {\r\n event.preventDefault();\r\n }\r\n // control . when find first dot\r\n if (this.findDots) {\r\n event.preventDefault();\r\n }\r\n this.findDots = true;\r\n this.findMinus = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent) {\r\n this.userEdite = true;\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.setCaret();\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n this.setCaret();\r\n }\r\n\r\n // left & right Button\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n // home button\r\n if (event.key === 'Home') {\r\n this.cursorPosition = 0;\r\n }\r\n\r\n // end button\r\n if (event.key === 'End') {\r\n this.cursorPosition = this.value.length;\r\n }\r\n\r\n // set delay with rxjs\r\n this.delaySearch();\r\n\r\n // backspace Control\r\n if (event.key === 'Backspace') {\r\n if (this.value === null || this.value.length <= 0) {\r\n this.cursorPosition = 0;\r\n } else {\r\n this.cursorPosition -= 1;\r\n }\r\n }\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n this.userEdite = true;\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n // step and +- with up key and down key\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n this.dotPosition = this.value.indexOf('.');\r\n if (this.dotPosition >= this.cursorPosition) {\r\n if (event.key === 'ArrowDown') {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp - +this.intStep;\r\n if (this.min === null || Number(this.count) >= Number(this.min)) {\r\n // this.value = this.count.toFixed(this.decimalNumber);\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp + +this.intStep;\r\n if (this.max === null || Number(this.count) <= Number(this.max)) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n } else {\r\n if (event.key === 'ArrowDown') {\r\n if (this.min === null || Number(this.value) > Number(this.min)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) - this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) - defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n if (this.max === null || Number(this.value) < Number(this.max)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) + this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) + defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (event.key === 'ArrowDown') {\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n this.tmp = +this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp - +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n if (event.key === 'ArrowUp') {\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n this.tmp = this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp + +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // stop when keydown\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n }\r\n\r\n handleClick() {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n delaySearch() {\r\n Observable.create((observer) => {\r\n this.userQuestionUpdate = observer;\r\n });\r\n this.userQuestionUpdate.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((text: string) => this.checkMinMax(text));\r\n // this.userQuestionUpdate.next((e.target as any).value);\r\n setTimeout(() => {\r\n this.userQuestionUpdate.next(this.input.nativeElement.value);\r\n }, 50);\r\n }\r\n\r\n checkMinMax(text) {\r\n let number: number;\r\n if (text.indexOf(',') > 0) {\r\n number = Number(text.replaceAll(',', ''));\r\n } else {\r\n number = Number(text);\r\n }\r\n\r\n if (!!this.min) {\r\n if (number < this.min) {\r\n this.value = '';\r\n }\r\n }\r\n if (!!this.max) {\r\n if (number > this.max) {\r\n this.value = '';\r\n }\r\n }\r\n }\r\n\r\n doGetCaretPosition(ctrl) {\r\n let CaretPos = 0;\r\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\r\n CaretPos = ctrl.selectionStart;\r\n return CaretPos;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else if (ctrl.createTextRange) {\r\n const range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n }\r\n\r\n upStepHandel() {\r\n this.userEdite = true;\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n this.dotPosition = this.value.toString().indexOf('.') + 1;\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n if (this.dotPosition > this.cursorPosition) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp + +this.intStep;\r\n if (this.max === null || Number(this.count) <= this.max) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n } else {\r\n if (this.max === null || Number(this.value) < Number(this.max)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) + this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) + defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {\r\n this.tmp = this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp + +this.intStep;\r\n\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n downStepHandel() {\r\n this.userEdite = true;\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n this.dotPosition = this.value.toString().indexOf('.') + 1;\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n if (this.dotPosition > this.cursorPosition) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.value.replace(/,/g, '')) - +this.intStep;\r\n if (this.min === null || Number(this.count) >= this.min) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n }\r\n } else {\r\n if (this.min === null || Number(this.value) > Number(this.min)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) - this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) - defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {\r\n this.tmp = +this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp - +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleInputBlur(e: Event) {\r\n this.checkMinMax(this.textValue);\r\n this.onBlur.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXNumberBoxComponent } from './number-box.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXNumberBoxComponent],\r\n imports: [CommonModule, AXButtonModule, FormsModule],\r\n exports: [AXNumberBoxComponent],\r\n providers: []\r\n})\r\nexport class AXNumberBoxModule {}\r\n","import { Component, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-page-content',\r\n template: `\r\n <div class='ax-page-content'>\r\n <div class='inner-content'>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n ':host { height:100% }'\r\n ]\r\n})\r\nexport class AXPageContentComponent {\r\n constructor(private el: ElementRef) { }\r\n}\r\n","import {\r\n Component\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-page-footer',\r\n template:\r\n `<div class='ax-page-footer' >\r\n <ng-content></ng-content>\r\n </div>`\r\n})\r\n\r\nexport class AXPageFooterComponent { };","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPageContentComponent } from './content.component';\r\nimport { AXPageFooterComponent } from './footer.component';\r\nimport { AXPageComponent } from './page.component';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\n\r\n@NgModule({\r\n declarations: [AXPageContentComponent, AXPageFooterComponent, AXPageComponent],\r\n imports: [CommonModule, AXLoadingModule],\r\n exports: [AXPageContentComponent, AXPageFooterComponent, AXPageComponent],\r\n providers: [],\r\n})\r\nexport class AXPageModule { }","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-password-box',\r\n templateUrl: './password-box.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXPasswordBoxComponent }]\r\n})\r\nexport class AXPasswordBoxComponent extends AXBaseTextComponent {\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n type: 'text' | 'password' = 'password';\r\n eyeIcon: string = 'far fa-eye';\r\n\r\n handleShowPassword() {\r\n this.eyeIcon = 'far fa-eye-slash';\r\n if (this.type === 'password') {\r\n this.type = 'text';\r\n this.eyeIcon = 'far fa-eye-slash';\r\n } else {\r\n this.type = 'password';\r\n this.eyeIcon = 'far fa-eye';\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPasswordBoxComponent } from './password-box.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\n\r\nconst COMPONENT = [AXPasswordBoxComponent];\r\nconst MODULES = [CommonModule, AXButtonModule,AXFormGroupModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXPasswordBoxModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPopupComponent } from './popup.component';\r\nimport { AXPopupService } from './popup.service';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\n@NgModule({\r\n declarations: [AXPopupComponent],\r\n imports: [CommonModule, DragDropModule, A11yModule, AXButtonModule, AXTranslatorModule, AXLoadingModule],\r\n exports: [AXPopupComponent],\r\n entryComponents: [AXPopupComponent],\r\n providers: [AXPopupService]\r\n})\r\nexport class AXPopupModule { }\r\n","import { Component, Input } from '@angular/core';\r\nimport { AXBaseComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-progress-bar',\r\n templateUrl: './progress-bar.component.html'\r\n})\r\nexport class AXProgressBarComponent extends AXBaseComponent {\r\n @Input() progress: number = 0;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXProgressBarComponent } from './progress-bar.component';\r\n\r\n@NgModule({\r\n declarations: [AXProgressBarComponent],\r\n imports: [CommonModule],\r\n exports: [AXProgressBarComponent],\r\n entryComponents: [AXProgressBarComponent],\r\n providers: []\r\n})\r\nexport class AXProgressBarModule {}\r\n","import { AXDataEvent } from '../base/events.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\nexport type AXQueryBuilderDataType = 'string' | 'number' | 'date' | 'time' | 'datetime' | 'boolean';\r\nexport type AXQueryBuilderGroupItem = AXQueryBuilderGroup | AXQueryBuilderRule;\r\nexport type AXQueryBuilderControlType = 'textBox' | 'selectBox' | 'numberBox' | 'dataPicker' | 'lov' | 'boolean';\r\nexport type AXQueryBuilderStringType = 'simple' | 'sql' | 'sodoco' | 'elastic';\r\n\r\nexport class AXQueryBuilderControl {\r\n type: AXQueryBuilderControlType = 'textBox';\r\n options: any = {};\r\n}\r\n\r\nexport class AXQueryBuilderRule {\r\n dataField: string;\r\n caption: string;\r\n dataType: AXQueryBuilderDataType;\r\n control: AXQueryBuilderControl;\r\n operator: string;\r\n value?: any;\r\n text?: string;\r\n dataFieldItem: any;\r\n valueItem?: any;\r\n onDemandLabel?: string;\r\n}\r\n\r\nexport class AXQueryBuilderGroup {\r\n items: AXQueryBuilderGroupItem[];\r\n condition: string;\r\n queryString: string;\r\n queryStringElastic:string\r\n}\r\nexport class AXQueryBuilderField {\r\n caption: string;\r\n dataField: string;\r\n dataType: AXQueryBuilderDataType;\r\n default?: any;\r\n options?: any;\r\n}\r\n\r\nexport class AXQueryBuilderRuleEvent extends AXDataEvent<AXQueryBuilderRuleEvent> {\r\n items: AXQueryBuilderRule;\r\n}\r\n\r\nexport class AXQueryBuilderGroupEvent extends AXDataEvent<AXQueryBuilderGroupEvent> {\r\n items?: AXQueryBuilderRule;\r\n groups: AXQueryBuilderGroup;\r\n}\r\n\r\nexport class AXQueryBuilderPopup {\r\n name: string;\r\n type: string;\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXBaseTextComponent } from '../base/element.class';\r\nimport { AXBaseEvent, AXValueEvent } from '../base/events.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-search-box',\r\n templateUrl: './searchbox.component.html',\r\n host: { style:'width: 100%' },\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXSearchBoxComponent extends AXBaseTextComponent {\r\n\r\n @Output()\r\n public textChanged: EventEmitter<AXValueEvent<any>> = new EventEmitter<AXValueEvent<any>>();\r\n @Output()\r\n onButtonClick: EventEmitter<AXValueEvent<any>> = new EventEmitter<AXValueEvent<any>>();\r\n\r\n @Input()\r\n placeholder: string = 'جستجو ...';\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n const old = this._text;\r\n this._text = v;\r\n this.textChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.value = '';\r\n this.text = '';\r\n }\r\n\r\n onSearchChanged(text: string) {\r\n if (!this.searchChangeObserver) {\r\n Observable.create(observer => {\r\n\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(this.delay))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.text = c;\r\n this.value = c;\r\n });\r\n }\r\n\r\n this.searchChangeObserver.next(text);\r\n }\r\n\r\n @Input()\r\n delay: number = 500;\r\n\r\n private searchChangeObserver: any;\r\n\r\n handleKeyEvent(e: KeyboardEvent) {\r\n // this.searchChangeObserver.next(this.text);\r\n this.onkey.emit(e);\r\n }\r\n\r\n click(e: MouseEvent) {\r\n this.onButtonClick.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n value: this.text\r\n });\r\n // this.searchChangeObserver.next(this.text);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n NgZone,\r\n QueryList,\r\n ContentChildren,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\nimport { AXDataSourceReadParams } from '../data-source/read-param';\r\nimport { AXBaseEvent } from '../base/events.class';\r\nimport { AXSearchBoxComponent } from '../searchbox/searchbox.component';\r\nimport { AXConfig } from '@acorex/core';\r\nimport { differenceBy } from 'lodash';\r\nexport class AXSelectBoxSelectionChangedEvent extends AXBaseEvent {\r\n constructor(component: any, public selectedItems: any[], public selectedValues: any[] | any) {\r\n super();\r\n this.component = component;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ax-select-box',\r\n templateUrl: './selectbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBoxComponent }]\r\n})\r\nexport class AXSelectBoxComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent {\r\n @Input() showDropDownButton: boolean = true;\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n rowTemplate: TemplateRef<any>;\r\n\r\n @Input()\r\n rowInputTemplate: TemplateRef<any>;\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n span: ElementRef<HTMLElement>;\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n textbox: AXTextBoxComponent;\r\n\r\n @ViewChild('listContainer', { static: true })\r\n listContainer: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('serchBox', { static: false })\r\n serchBox: AXSearchBoxComponent;\r\n\r\n @ViewChild('textBoxSelectBox', { static: true })\r\n textBoxSelectBox: AXTextBoxComponent;\r\n\r\n @Input() showCheckBox: boolean = true;\r\n\r\n @Input() readonly: boolean = false;\r\n\r\n @Input() rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() placeholder: string;\r\n\r\n @Input() size: AXElementSize = 'md';\r\n\r\n @Input() allowNull: boolean = true;\r\n\r\n @Input() textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input() bufferSize: number = 20;\r\n\r\n @Input() remoteOperation: boolean = false;\r\n\r\n @Output()\r\n dropdownToggle: EventEmitter<any> = new EventEmitter<any>();\r\n // this input is Private and only use in LOV\r\n\r\n currentfocusedIndex: number = -1;\r\n showLoading: boolean = false;\r\n\r\n skip: number = -1;\r\n searchText: string = '';\r\n // @Input()\r\n // chipsWidth: string = '';\r\n\r\n text: string = '';\r\n totalCount: number = 0;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {\r\n super();\r\n }\r\n\r\n @ViewChild('d', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n @Input() disabledCallback: (e: { item: any; index: number }) => boolean;\r\n\r\n @Input() allowSearch: boolean = true;\r\n @Input() textField: string = 'text';\r\n @Input() valueField: string = 'value';\r\n @Input() disabledField: string = 'disabled';\r\n @Input() mode: 'single' | 'multiple' = 'single';\r\n itemRemove: boolean = false;\r\n @Output() itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Output() onBlur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output() onFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n private _items: any[] = [];\r\n @Input()\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n public set items(v: any[]) {\r\n this._items = v;\r\n if (this.itemsChange) {\r\n this.itemsChange.emit(v);\r\n }\r\n if (this.itemsStatusObserver) {\r\n this.itemsStatusObserver.next(this.items.length);\r\n }\r\n }\r\n\r\n hasSelectedValue: boolean = false;\r\n itemsFiltered: any[] = [];\r\n\r\n // #endregion\r\n\r\n dropDownDisabled: boolean = false;\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXSelectBoxSelectionChangedEvent> = new EventEmitter<AXSelectBoxSelectionChangedEvent>();\r\n\r\n @Output()\r\n selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n private _selectedItems: any[] = [];\r\n @Input()\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n public set selectedItems(v: any[]) {\r\n this.setSelectedItemsChange(v);\r\n // if (!v) {\r\n // v = [];\r\n // }\r\n\r\n // const old = this.selectedItems;\r\n // if (JSON.stringify(old) !== JSON.stringify(v)) {\r\n // this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];\r\n // this._selectedItems.forEach((c) => (c.selected = true));\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.selectedValuesChange.emit(this.selectedValues);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n // this.waitForData(() => {\r\n // if (this._selectedItems) {\r\n // this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n setSelectedItemsChange(v: any[], old: any[] = this.selectedItems) {\r\n if (!v) {\r\n v = [];\r\n }\r\n // const old = this.selectedItems;\r\n var f = differenceBy(old, v, this.valueField);\r\n var s = differenceBy(v, old, this.valueField);\r\n // if (JSON.stringify(old) !== JSON.stringify(v)) {\r\n if (f.length != 0 || s.length != 0) {\r\n this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];\r\n this._selectedItems.forEach((c) => (c.selected = true));\r\n this.selectedItemsChange.emit(this._selectedItems);\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.clearValidationStyle(this.ref.nativeElement);\r\n this.waitForData(() => {\r\n if (this._selectedItems) {\r\n this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.rowTemplate === undefined && this.rowInputTemplate != undefined) {\r\n this.rowTemplate = this.rowInputTemplate;\r\n }\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n scrolled(e) {\r\n if (\r\n this.remoteOperation &&\r\n this.totalCount > this.items.length &&\r\n this.listContainer.nativeElement.scrollHeight != 0 &&\r\n this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50\r\n ) {\r\n if (this.skip !== this.items.length) {\r\n this.showLoading = true;\r\n this.skip = this.items.length;\r\n const params: AXDataSourceReadParams = {};\r\n params.skip = this.items.length;\r\n params.take = this.bufferSize; //* (Math.floor(this.items.length / this.bufferSize) + 1);\r\n if (this.textbox) {\r\n params.searchText = this.text;\r\n } else {\r\n params.searchText = null;\r\n }\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n private setSelectedItems(v: any[], isUserInput: boolean) {\r\n let changed = false;\r\n if (isUserInput) {\r\n changed = JSON.stringify(v) !== JSON.stringify(this.selectedItems);\r\n }\r\n this.selectedItems = v;\r\n this.setSelectedIndex();\r\n if (isUserInput && changed) {\r\n this.emitSelectionChangedEvent();\r\n }\r\n }\r\n\r\n private searchChangeObserver: any;\r\n\r\n delay: number = 500;\r\n\r\n textChanged(e) {\r\n if ((e.value === null || e.value === undefined || e.value === '') && (e.oldValue === null || e.oldValue === undefined || e.oldValue === '')) {\r\n } else {\r\n this.currentfocusedIndex = -1;\r\n if (this.remoteOperation) {\r\n this.searchText = this.text;\r\n // this.searchText = e.value;\r\n // this.text = e.value;\r\n // this.items = [];\r\n if (this.items) {\r\n let t = this.items.length;\r\n for (let i = 0; i < t; i++) {\r\n this.items.pop();\r\n }\r\n }\r\n\r\n // this.items.forEach((element) => {\r\n // this.items.pop();\r\n // });\r\n const params: AXDataSourceReadParams = {};\r\n params.searchText = this.text;\r\n // params.searchText = e.value;\r\n params.skip = 0;\r\n params.take = this.bufferSize;\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n\r\n isItemDisabled(item: any): boolean {\r\n if (item[this.disabledField] == true) {\r\n return true;\r\n } else if (this.disabledCallback) {\r\n return this.disabledCallback({ item, index: -1 });\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n onButtonClick(e) {\r\n console.log('onButtonClick', e);\r\n }\r\n\r\n private setSelectedIndex(sign: -1 | 1 | null = null): void {\r\n if (sign == null) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.currentfocusedIndex = this.items\r\n .filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n .indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n } else {\r\n this.currentfocusedIndex = this.items.indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n } else {\r\n sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;\r\n }\r\n\r\n if (this.remoteOperation) {\r\n this.itemsFiltered = this.items;\r\n } else {\r\n this.itemsFiltered = this.text\r\n ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n : this.items;\r\n }\r\n\r\n this.currentfocusedIndex =\r\n this.currentfocusedIndex < 0\r\n ? 0\r\n : this.currentfocusedIndex >= this.itemsFiltered.length\r\n ? this.itemsFiltered.length - 1\r\n : this.currentfocusedIndex;\r\n //\r\n // set scroll\r\n if (this.listContainer) {\r\n this.zone.runOutsideAngular(() => {\r\n const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);\r\n if (itemDiv) {\r\n itemDiv.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n @Output()\r\n selectedValuesChange: EventEmitter<any[] | any> = new EventEmitter<any[] | any>();\r\n\r\n @Input()\r\n public get selectedValues(): any[] | any {\r\n debugger;\r\n if (this.mode === 'single') {\r\n return this._selectedItems.map((c) => c[this.valueField])[0];\r\n } else {\r\n return this._selectedItems.map((c) => c[this.valueField]) || [];\r\n }\r\n }\r\n\r\n public set selectedValues(v: any[] | any) {\r\n if (this.compareSelectedValues(v)) {\r\n return;\r\n }\r\n if (v == null) {\r\n this.selectedItems = [];\r\n } else {\r\n if (v !== undefined) {\r\n if (v != [] && v != '' && v != null) {\r\n this.hasSelectedValue = true;\r\n }\r\n\r\n this.waitForData(() => {\r\n if (this.mode === 'single') {\r\n if (this.items.filter((c) => v == c[this.valueField])) {\r\n this.selectedItems = this.items.filter((c) => v == c[this.valueField]);\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n } else {\r\n if (Array.isArray(v)) {\r\n if (this.selectedItems.length > v.length) {\r\n this.selectedItems = this.selectedItems.filter((c) => v.includes(c[this.valueField]));\r\n } else {\r\n let addId = [];\r\n v.forEach((vId) => {\r\n addId.push({\r\n [this.valueField]: vId\r\n });\r\n });\r\n\r\n let newId = differenceBy(addId, this.selectedItems, this.valueField);\r\n let vv = [];\r\n newId.forEach((rc) => {\r\n vv.push(rc[this.valueField]);\r\n });\r\n this.items\r\n .filter((c) => vv.includes(c[this.valueField]))\r\n .forEach((res) => {\r\n this.selectedItems.push(res);\r\n });\r\n // this.selectedItems.push(this.items.filter((c) => vv.includes(c[this.valueField])));\r\n this.setSelectedItemsChange(this.selectedItems, vv.length > 0 ? [1] : this.selectedItems);\r\n }\r\n\r\n // this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));\r\n } else if (v) {\r\n this.selectedItems = this.items.filter((c) => v === c[this.valueField]);\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n }\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n\r\n private compareSelectedValues(newValue: any[] | any) {\r\n const currentValue = this.selectedValues;\r\n return (currentValue == null && newValue == null) || JSON.stringify(currentValue) === JSON.stringify(newValue);\r\n }\r\n\r\n private setSelectedValues(v: any[] | any, isUserInput: boolean) {\r\n const changed = isUserInput ? !this.compareSelectedValues(v) : false;\r\n this.selectedValues = v;\r\n if (isUserInput && changed) {\r\n this.emitSelectionChangedEvent();\r\n }\r\n }\r\n\r\n private emitSelectionChangedEvent() {\r\n debugger;\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.selectionChanged.emit(new AXSelectBoxSelectionChangedEvent(this, this.selectedItems, this.selectedValues));\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.bufferSize < 10) {\r\n this.bufferSize = 10;\r\n }\r\n if (this.mode == 'single') {\r\n this.showCheckBox = false;\r\n } else {\r\n this.showCheckBox = true;\r\n }\r\n if (!this.remoteOperation || (this.remoteOperation && this.hasSelectedValue)) {\r\n this.refresh();\r\n }\r\n }\r\n dropdownToggleSelecBox(e) {\r\n this.text = '';\r\n if (this.dropdown.isOpen) {\r\n this.refresh();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 1);\r\n } else {\r\n // this.refresh();\r\n }\r\n this.dropdownToggle.emit(e);\r\n }\r\n\r\n ngAfterContentInit() {\r\n // if (!this.allowSearch) {\r\n // if (this.readonly == false) {\r\n // this.itemRemove = true;\r\n // this.readonly = true;\r\n // }\r\n // }\r\n this.initValidation(this.ref, 'selectedItems', this.validation);\r\n if (this.dataSource) {\r\n // if (this.allowSearch == false) {\r\n // this.fetch();\r\n // }\r\n this.dataSource.onDataReceived.subscribe((c) => {\r\n this.showLoading = false;\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private dataReceived(data: any) {\r\n if (this.remoteOperation) {\r\n if (this.searchText && this.searchText != null && this.searchText !== '') {\r\n if (data.totalCount) {\r\n if (this.items.length == 0) {\r\n //this.items = data.items;\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n } else {\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n }\r\n\r\n this.totalCount = data.totalCount;\r\n } else {\r\n if (this.items.length == 0) {\r\n this.items = data.items;\r\n } else {\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n }\r\n this.totalCount = data.items == undefined ? 0 : data.items.length;\r\n }\r\n } else if (data.items && data.items.length === data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.items.length;\r\n } else if (data.totalCount) {\r\n data.items.forEach((elm) => {\r\n this.items.push(elm);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n this.totalCount = data.totalCount;\r\n } else {\r\n data.forEach((elm) => {\r\n this.items.push(elm);\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n });\r\n this.totalCount = data.length;\r\n }\r\n } else {\r\n this.items = data;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n\r\n this.dropdown.updatePosition();\r\n }\r\n\r\n // private params: AXDataSourceReadParams = {};\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n // this.params = params;\r\n if (this.dataSource) {\r\n this.showLoading = true;\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n const params: AXDataSourceReadParams = {};\r\n if (this.remoteOperation) {\r\n params.skip = 0;\r\n this.skip = 0;\r\n params.take = this.bufferSize;\r\n }\r\n if (this.dataSource != undefined) {\r\n // this.items = [];\r\n // this.items.forEach((element) => {\r\n // this.items.pop();\r\n // });\r\n\r\n if (this.items) {\r\n let t = this.items.length;\r\n for (let i = 0; i < t; i++) {\r\n this.items.pop();\r\n }\r\n }\r\n\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n handleItemRemoveClick(item) {\r\n if (this.mode === 'single') {\r\n // this.selectedItems = null;\r\n this.setSelectedValues(null, true);\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n } else {\r\n // this.selectedItems = this.selectedItems.filter((c) => c !== item);\r\n this.setSelectedItems(\r\n this.selectedItems.filter((c) => c[this.valueField] !== item[this.valueField]),\r\n true\r\n );\r\n // this._selectedItems = this._selectedItems.filter(c => c !== item);\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n }\r\n // this.text = '';\r\n this.validate();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onFocusTextBox(e) {}\r\n\r\n onTextBoxClick(e) {\r\n if (this.disabled == false && this.readonly == false) {\r\n this.dropdown.open();\r\n }\r\n }\r\n\r\n handleItemClick(e: MouseEvent, item: any) {\r\n if (this.isItemDisabled(item) == false) {\r\n const value = item[this.valueField];\r\n\r\n if (this.mode === 'single') {\r\n // this.selectedValues = value;\r\n this.setSelectedValues(value, true);\r\n } else {\r\n const exists = this.selectedValues.slice(0);\r\n if (exists.includes(value)) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n this.handleItemRemoveClick(item);\r\n }\r\n } else {\r\n exists.push(value);\r\n // this.selectedValues = exists;\r\n this.setSelectedValues(exists, true);\r\n }\r\n }\r\n\r\n if (this.mode == 'single') {\r\n this.text = '';\r\n this.dropdown.close();\r\n this.cdr.markForCheck();\r\n }\r\n // if (e.stopPropagation() == undefined) {\r\n // e.stopPropagation();\r\n // }\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n\r\n e.stopPropagation();\r\n }\r\n\r\n handleKeyEventSearch(e: KeyboardEvent) {\r\n if (this.disabled || this.readonly) {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n return false;\r\n }\r\n if (e.key === 'Escape') {\r\n this.text = null;\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {\r\n if (this.mode === 'single') {\r\n this.currentfocusedIndex = this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1);\r\n this.selectedItemByIndex(this.currentfocusedIndex);\r\n } else {\r\n if (this.dropdown.isOpen) {\r\n this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);\r\n } else {\r\n this.dropdown.open();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n // if (e.key == 'Enter' && this.dropdown.isOpen && this.mode == 'single') {\r\n // this.dropdown.close();\r\n // setTimeout(() => {\r\n // this.dropdown.focus();\r\n // }, 0);\r\n // }\r\n //e.stopPropagation();\r\n //e.preventDefault();\r\n e.stopImmediatePropagation();\r\n if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));\r\n if (this.itemsFiltered.length === 1) {\r\n this.currentfocusedIndex = 0;\r\n }\r\n } else {\r\n this.itemsFiltered = this.items;\r\n }\r\n\r\n if (\r\n this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&\r\n this.mode == 'multiple'\r\n ) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.selectedItems = this.selectedItems.filter(\r\n (c) =>\r\n c !==\r\n this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]\r\n );\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.mode == 'multiple') {\r\n if (this.currentfocusedIndex != -1) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n if (this.itemsFiltered.length === 1) {\r\n this.selectedItems.push(this.itemsFiltered[0]);\r\n } else {\r\n this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);\r\n }\r\n } else {\r\n this.selectedItems.push(this.items[this.currentfocusedIndex]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.text && this.itemsFiltered?.length === 1) {\r\n this.setSelectedItems(this.itemsFiltered, true);\r\n }\r\n if (this.mode == 'single') {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n isChar(str: string) {\r\n if (\r\n str.includes('Shift') ||\r\n str.includes('Tab') ||\r\n str.includes('Control') ||\r\n str.includes('Alt') ||\r\n str.includes('CapsLock') ||\r\n str.includes('Meta') ||\r\n str.includes('ContextMenu') ||\r\n str.includes('Enter') ||\r\n str.includes('Backspace') ||\r\n str.includes('PrintScreen') ||\r\n str.includes('ScrollLock') ||\r\n str.includes('Pause') ||\r\n str.includes('Home') ||\r\n str.includes('End') ||\r\n str.includes('Insert') ||\r\n str.includes('PageUp') ||\r\n str.includes('Delete') ||\r\n str.includes('PageDown') ||\r\n str.includes('NumLock') ||\r\n str.includes('Escape') ||\r\n str.includes('Arrow') ||\r\n str.includes('ّF1') ||\r\n str.includes('F2') ||\r\n str.includes('F3') ||\r\n str.includes('F4') ||\r\n str.includes('F5') ||\r\n str.includes('F6') ||\r\n str.includes('F7') ||\r\n str.includes('F8') ||\r\n str.includes('F9') ||\r\n str.includes('F10') ||\r\n str.includes('F11') ||\r\n str.includes('F12')\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n handleKeyEvent(e: any) {\r\n // const NumberMinusPattern = /[a-zA-Z0-9\\-]/g;\r\n // const Farsi = /[پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ\\s]+$/;\r\n // const inputChar = String.fromCharCode(e.charCode);\r\n // const patternEn = /^[a-zA-Z0-9]*$/;\r\n // const pattern = /^[\\u0600-\\u06FF\\s]+$/;\r\n const inputChar = e.key;\r\n if (\r\n (inputChar != 'Backspace' &&\r\n inputChar != 'Backspace' &&\r\n inputChar != 'Tab' &&\r\n inputChar != 'Enter' &&\r\n inputChar != 'Escape' &&\r\n inputChar != 'ArrowDown' &&\r\n inputChar != 'ArrowUp') ||\r\n e.code === 'Space' ||\r\n e.ctrlKey == true\r\n ) {\r\n e.preventDefault();\r\n }\r\n if (\r\n e.key === 'Backspace' &&\r\n e.type === 'keydown' &&\r\n ((this.allowNull === true && this.selectedItems.length > 0) || (this.allowNull === false && this.selectedItems.length > 1))\r\n ) {\r\n debugger;\r\n\r\n this.selectedItems.pop();\r\n this.emitSelectionChangedEvent();\r\n }\r\n if (this.disabled || this.readonly) {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n return false;\r\n }\r\n const INPUT = String.fromCharCode(e.keyCode);\r\n if (this.isChar(e.key) && this.allowSearch && e.ctrlKey == false) {\r\n this.dropdown.open();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n this.text = e.key;\r\n }\r\n\r\n if (e.key === 'Escape') {\r\n this.text = null;\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {\r\n if (this.mode === 'single') {\r\n this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));\r\n } else {\r\n if (this.dropdown.isOpen) {\r\n // this.setSelectedIndex((e.key === 'ArrowDown' ? 1 : -1));\r\n if (this.allowSearch == false) {\r\n this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);\r\n } else {\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n } else {\r\n this.dropdown.open();\r\n if (this.allowSearch == true) {\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.allowSearch === false) {\r\n if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {\r\n e.stopImmediatePropagation();\r\n if (\r\n this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&\r\n this.mode == 'multiple'\r\n ) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.selectedItems = this.selectedItems.filter(\r\n (c) =>\r\n c !==\r\n this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]\r\n );\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.mode == 'multiple') {\r\n if (this.currentfocusedIndex != -1) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n if (this.itemsFiltered.length === 1) {\r\n this.selectedItems.push(this.itemsFiltered[0]);\r\n } else {\r\n this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);\r\n }\r\n } else {\r\n this.selectedItems.push(this.items[this.currentfocusedIndex]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.text && this.itemsFiltered.length === 1) {\r\n this.setSelectedItems(this.itemsFiltered, true);\r\n }\r\n if (this.mode == 'single') {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.cdr.markForCheck();\r\n }\r\n\r\n focus(): void {\r\n this.textbox.focus();\r\n }\r\n\r\n selectedItemByIndex(index: number) {\r\n let item = [];\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));\r\n\r\n item = this.itemsFiltered[index];\r\n } else {\r\n item = this.items[index];\r\n }\r\n //\r\n // const item = this.text ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[index] : this.items[index];\r\n if (item) {\r\n this.setSelectedItems([item], true);\r\n }\r\n\r\n this.setSelectedIndex();\r\n }\r\n\r\n getItems(): any[] {\r\n if (this.items == null) {\r\n return [];\r\n }\r\n return !this.remoteOperation && this.text && this.text !== ''\r\n ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n : this.items;\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems && this.selectedItems.filter((c) => c[this.valueField] === item[this.valueField]).length > 0;\r\n }\r\n\r\n private itemsStatusObserver: any;\r\n private waitForData(callbackfn: () => void) {\r\n if (this.items && this.items.length) {\r\n callbackfn();\r\n } else if (!this.itemsStatusObserver) {\r\n Observable.create((observer) => {\r\n this.itemsStatusObserver = observer;\r\n })\r\n .pipe(debounceTime(100))\r\n .pipe(distinctUntilChanged())\r\n .subscribe((c) => {\r\n callbackfn();\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewEncapsulation, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXQueryBuilderRule, AXQueryBuilderGroup, AXQueryBuilderRuleEvent, AXQueryBuilderControl } from './query-builder.class';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { AXSelectBoxComponent } from '../selectbox/selectbox.component';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\n\r\n@Component({\r\n selector: 'ax-query-rule',\r\n templateUrl: 'query-builder-rule.component.html',\r\n host: { class: 'ax ax-query-rule' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderRuleComponent implements OnInit {\r\n @ViewChild('selectBox') selectBox: AXSelectBoxComponent;\r\n @ViewChild('selectBoxValue') selectBoxValue: AXSelectBoxComponent;\r\n\r\n @ViewChild('selectBoxBoolean') selectBoxBoolean: AXSelectBoxComponent;\r\n\r\n @ViewChild('textBoxNameValue') textBoxNameValue: AXTextBoxComponent;\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n @Input()\r\n isEditing: boolean = true;\r\n\r\n @Input()\r\n rule: AXQueryBuilderRule;\r\n\r\n @Input()\r\n parent: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n mode: 'new' | 'edit' = 'new';\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n @Output()\r\n onRuleDelete: EventEmitter<AXQueryBuilderRuleEvent> = new EventEmitter<AXQueryBuilderRuleEvent>();\r\n\r\n @Output()\r\n ruleChanged: EventEmitter<AXQueryBuilderRuleEvent> = new EventEmitter<AXQueryBuilderRuleEvent>();\r\n\r\n showValue: boolean = false;\r\n\r\n isOnDemandLabel: boolean = false;\r\n\r\n showSelectBox: boolean = true;\r\n showOperatorSelectBox: boolean = true;\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit(): void {\r\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\r\n //Add 'implements AfterViewInit' to the class.\r\n if (this.rule.onDemandLabel) {\r\n this.isOnDemandLabel = true;\r\n }\r\n }\r\n provideDataBoolean = (e) => {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n value: 'true',\r\n text: AXTranslator.get('queryBuilder.true')\r\n },\r\n {\r\n value: 'false',\r\n text: AXTranslator.get('queryBuilder.false')\r\n }\r\n ]);\r\n });\r\n };\r\n\r\n saveRule() {\r\n this.form.validate().then((c) => {});\r\n }\r\n\r\n provideDataOperator = (e) => {\r\n return new Promise((resolve) => {\r\n if (this.rule.dataType === 'string') {\r\n if (this.rule && this.rule.control && this.rule.control.type && this.rule.control.type == 'selectBox') {\r\n if (this.rule.control.options.mode == 'multiple') {\r\n resolve([\r\n {\r\n value: 'contains',\r\n text: AXTranslator.get('queryBuilder.contains')\r\n },\r\n {\r\n value: 'not-contains',\r\n text: AXTranslator.get('queryBuilder.not-contains')\r\n },\r\n {\r\n value: 'contains-all',\r\n text: AXTranslator.get('queryBuilder.contains-all')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n } else {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n } else {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'contains',\r\n text: AXTranslator.get('queryBuilder.contains')\r\n },\r\n {\r\n value: 'start-with',\r\n text: AXTranslator.get('queryBuilder.start-with')\r\n },\r\n {\r\n value: 'end-with',\r\n text: AXTranslator.get('queryBuilder.end-with')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n }\r\n if (this.rule.dataType === 'number') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'gt',\r\n text: AXTranslator.get('queryBuilder.greater-than')\r\n },\r\n {\r\n value: 'gte',\r\n text: AXTranslator.get('queryBuilder.greater-than-equal')\r\n },\r\n {\r\n value: 'lt',\r\n text: AXTranslator.get('queryBuilder.less-than')\r\n },\r\n {\r\n value: 'lte',\r\n text: AXTranslator.get('queryBuilder.less-than-equal')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n if (this.rule.dataType === 'boolean') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n resolve([]);\r\n });\r\n };\r\n\r\n handleEditClick() {\r\n this.isEditing = true;\r\n }\r\n\r\n handleCommitClick() {\r\n this.isEditing = false;\r\n this.ruleChanged.emit({ items: this.rule, component: this });\r\n }\r\n handleRemoveClick() {\r\n this.onRuleDelete.emit({ items: this.rule, component: this });\r\n }\r\n captionChange(e) {\r\n if (e.selectedItems[0]) {\r\n this.rule.caption = e.selectedItems[0].caption;\r\n this.rule.dataField = e.selectedItems[0].dataField;\r\n this.rule.dataType = e.selectedItems[0].dataType;\r\n this.rule.control = e.selectedItems[0].control || new AXQueryBuilderControl();\r\n this.rule.dataFieldItem[0] = e.selectedItems[0];\r\n }\r\n\r\n if (this.selectBox) {\r\n if (this.rule.control.type === 'selectBox' && this.rule.control.options.mode == 'multiple') {\r\n this.rule.operator = 'contains';\r\n } else {\r\n this.rule.operator = 'equal';\r\n }\r\n this.selectBox.refresh();\r\n }\r\n\r\n this.showOperatorSelectBox = false;\r\n setTimeout(() => {\r\n this.showOperatorSelectBox = true;\r\n }, 20);\r\n\r\n this.rule.value = null;\r\n this.rule.valueItem = [];\r\n this.rule.text = '';\r\n\r\n if (this.rule.control.type === 'selectBox' && this.selectBoxValue) {\r\n this.showSelectBox = false;\r\n setTimeout(() => {\r\n this.showSelectBox = true;\r\n this.selectBoxValue.refresh();\r\n }, 20);\r\n }\r\n if (this.rule.control.type == 'boolean') {\r\n this.selectBoxBoolean.refresh();\r\n }\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n\r\n operatorChange(e) {\r\n this.rule.operator = e[0].value;\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n\r\n if (e[0].value !== 'null' && e[0].value !== 'not-null') {\r\n this.showValue = true;\r\n } else {\r\n this.showValue = false;\r\n this.rule.value = '';\r\n this.rule.text = '';\r\n this.rule.valueItem = [];\r\n this.rule.onDemandLabel = '';\r\n }\r\n }\r\n valueChange(e) {\r\n // this.rule.text = e.value == undefined ? e[0].value : (e.value == null ? '' : e.value);\r\n\r\n this.rule.text = e[0] ? (e[0].value == null ? '' : e[0].value) : e.value == null ? '' : e.value;\r\n this.rule.onDemandLabel = '';\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n onDemandLabelChange(e) {\r\n // this.rule.onDemandLabel = e.value == undefined ? '????|' + e[0].value : '????|' + e.value;\r\n this.rule.onDemandLabel = e[0] ? '????|' + (e[0].value == null ? '' : e[0].value) : '????|' + (e.value == null ? '' : e.value);\r\n this.rule.value = '';\r\n this.rule.text = '';\r\n this.rule.valueItem = [];\r\n\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n valueBooleanChange(e) {\r\n // this.rule.text = e.value == undefined ? e[0].value : (e.value == null ? '' : e.value);\r\n this.rule.text = e[0] ? (e[0].value == null ? '' : e[0].value) : e.value == null ? '' : e.value;\r\n this.rule.value = e.value == undefined ? e[0].value : e.value;\r\n this.rule.onDemandLabel = '';\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n getOnDemandName(v) {\r\n return v ? v.split('|')[1] : '';\r\n }\r\n selectedItemsChange(e) {\r\n let n = this.getOption('textField');\r\n\r\n if (this.rule.control.options.mode === 'single') {\r\n this.rule.text = e[0][n];\r\n if (this.rule && this.rule.control.options.valueField) {\r\n this.rule.value = e[0][this.rule.control.options.valueField];\r\n } else {\r\n this.rule.value = e[0].value;\r\n }\r\n this.rule.valueItem[0] = e[0];\r\n } else {\r\n this.rule.text = e.map((x) => x[n]).join('- ');\r\n const THAT = this;\r\n if (THAT.rule && THAT.rule.control.options.valueField) {\r\n THAT.rule.value = e.map(function (item) {\r\n return item[THAT.rule.control.options.valueField];\r\n });\r\n } else {\r\n this.rule.value = e.map(function (item) {\r\n return item.value;\r\n });\r\n }\r\n this.rule.valueItem = e;\r\n }\r\n\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n this.rule.onDemandLabel = '';\r\n }\r\n onDemandLabel(e) {\r\n // if (e.value && (this.rule.onDemandLabel == '????|' || this.rule.onDemandLabel === undefined || this.rule.onDemandLabel === null || this.rule.onDemandLabel === '')) {\r\n // this.textBoxNameValue.focus();\r\n // }\r\n if (e.value == false) {\r\n this.rule.onDemandLabel = '';\r\n }\r\n this.isOnDemandLabel = e.value;\r\n }\r\n getProvideData = (e) => {\r\n if (this.rule && this.rule.control.options && this.rule.control.options.dataSource) {\r\n return this.rule.control.options.dataSource({ ...e, optionsData: { ...this.rule.control.options } });\r\n }\r\n };\r\n\r\n getOption(name: string) {\r\n return this.rule.control.options ? this.rule.control.options[name] : null;\r\n }\r\n}\r\n","import { AXButtonItem, AXTranslator } from '@acorex/core';\r\nimport { ChangeDetectorRef, Component, ViewChild } from '@angular/core';\r\nimport { AXBasePopupPageComponent } from '../../base/base-page.class';\r\nimport { AXMenuItemClickEvent } from '../../menu/menu.component';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderPopup, AXQueryBuilderRule } from '../query-builder.class';\r\n\r\nimport { AXDataSourceReadParams } from '../../data-source/read-param'\r\nimport { AXToastService } from '../../toast/toast.service';\r\nimport { AXValidationFormComponent } from '../../validation/validation-form.component';\r\n@Component({\r\n templateUrl: './query-builder-popup.component.html'\r\n})\r\n\r\nexport class AXQueryBuilderPopupComponent extends AXBasePopupPageComponent {\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n constructor(private toast: AXToastService) {\r\n super();\r\n }\r\n group: AXQueryBuilderGroup;\r\n items: AXQueryBuilderRule[] = [];\r\n groupCopy: AXQueryBuilderGroup;\r\n complateValue: boolean = true;\r\n provideData: any;\r\n makeJsonString(items: any[]) {\r\n return new Promise((resolve, reject) => {\r\n items.forEach((element, index, array) => {\r\n if (element.items) {\r\n this.makeJsonString(element.items);\r\n } else {\r\n if (element.control && element.control.options && (element.control.options.dataSource === '' || element.control.options.dataSource === undefined)) {\r\n element.control.options.dataSource = this.provideData;\r\n }\r\n }\r\n if (index === array.length - 1) {\r\n resolve(array[0]);\r\n }\r\n });\r\n });\r\n }\r\n ngAfterViewInit() {\r\n var groupString = JSON.stringify(this.group);\r\n this.groupCopy = JSON.parse(groupString);\r\n this.makeJsonString(this.groupCopy.items);\r\n for (let i = 0; i < this.groupCopy.items.length; i++) {\r\n this.getNoValueRule(this.groupCopy.items[i]);\r\n }\r\n if (this.items.length < 1) {\r\n this.close(this.group);\r\n }\r\n\r\n }\r\n getValue(v) {\r\n return v.indexOf('????') == 0 ? v.split('|')[1] : v;\r\n }\r\n getNoValueRule(gr) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.getNoValueRule(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel?.indexOf('????') == 0) {\r\n this.items.push(gr);\r\n }\r\n }\r\n\r\n // }\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n textValueChange(e, rule) {\r\n rule.value = e.value;\r\n rule.text = e.value;\r\n\r\n }\r\n selectedItemsChange(e, rule) {\r\n let n = this.getOption('textField', rule);\r\n rule.text = e[0][n];\r\n if (rule && rule.control.options.valueField) {\r\n rule.value = e[0][rule.control.options.valueField];\r\n } else {\r\n rule.value = e[0].value;\r\n }\r\n rule.valueItem[0] = e[0];\r\n\r\n }\r\n valueChange(e, rule) {\r\n rule.value = e.value;\r\n rule.text = e.value;\r\n\r\n }\r\n valueBooleanChange(e, rule) {\r\n rule.text = e.value == undefined ? e[0].value : e.value;\r\n rule.value = e.value == undefined ? e[0].value : e.value;\r\n\r\n }\r\n getOption(name: string, rule) {\r\n return rule.control.options ? rule.control.options[name] : null;\r\n }\r\n getProvideData = (e: AXDataSourceReadParams) => {\r\n if (e.extra && e.extra.control.options && e.extra.control.options.dataSource) {\r\n return e.extra.control.options.dataSource({ ...e, optionsData: { ...e.extra.control.options } });\r\n }\r\n };\r\n\r\n provideDataBoolean = (e) => {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n value: 'true',\r\n text: AXTranslator.get('queryBuilder.true')\r\n },\r\n {\r\n value: 'false',\r\n text: AXTranslator.get('queryBuilder.false')\r\n }\r\n\r\n ])\r\n })\r\n }\r\n\r\n findNullValue(gr) {\r\n for (let i = 0; i < gr.length; i++) {\r\n if (gr[i].value === null || gr[i].value === undefined || gr[i].value === '') {\r\n this.complateValue = false;\r\n }\r\n }\r\n\r\n\r\n // if (gr.condition) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n // this.findNullValue(gr.items[i]);\r\n // }\r\n\r\n // } else {\r\n // if (gr.onDemandLabel?.indexOf('????') == 0 || gr.value === null || gr.value === undefined || gr.value === '') {\r\n // this.complateValue = false;\r\n // }\r\n // }\r\n\r\n }\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n if (e.name === 'confirm') {\r\n this.form.validate().then(c => {\r\n if (c.result === true) {\r\n this.close(this.groupCopy);\r\n }\r\n });\r\n }\r\n if (e.name === 'cancel') {\r\n this.close();\r\n }\r\n\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return [\r\n {\r\n text: AXTranslator.get('common.confirm'),\r\n name: 'confirm',\r\n style: 'ax primary',\r\n icon: 'far fa-check-circle'\r\n },\r\n {\r\n text: AXTranslator.get('common.cancel'),\r\n name: 'cancel',\r\n style: 'ax light',\r\n icon: 'far fa-times-circle'\r\n }\r\n ]\r\n }\r\n}","import { AXQueryBuilderGroup, AXQueryBuilderStringType } from './query-builder.class';\r\nimport { Injectable } from '@angular/core';\r\nimport { AXPopupService } from '../popup/popup.service';\r\nimport { AXQueryBuilderPopupComponent } from './query-builder-popup/query-builder-popup.component';\r\nimport { AXToastService } from '../toast/toast.service';\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXQueryBuilderService {\r\n constructor(private popup: AXPopupService, private toast: AXToastService) {}\r\n canOpen: boolean = false;\r\n canRun: boolean = false;\r\n public runQuery(group: AXQueryBuilderGroup, provideData) {\r\n return new Promise((resolve) => {\r\n this.canOpen = false;\r\n for (let i = 0; i < group.items.length; i++) {\r\n this.getNoValueRule(group.items[i]);\r\n }\r\n if (this.canOpen) {\r\n this.canRun = true;\r\n for (let i = 0; i < group.items.length; i++) {\r\n if (this.canRun == true) {\r\n this.findNullValue(group.items[i]);\r\n }\r\n }\r\n if (this.canRun) {\r\n this.popup.open(AXQueryBuilderPopupComponent, { data: { group: group, provideData: provideData }, title: 'دریافت مقادیر' }).then((c) => {\r\n resolve(c);\r\n });\r\n }\r\n } else {\r\n resolve(group);\r\n }\r\n });\r\n }\r\n\r\n findNullValue(gr) {\r\n if (this.canRun == true) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.findNullValue(gr.items[i]);\r\n }\r\n } else {\r\n if (gr.onDemandLabel == '????|') {\r\n this.canRun = false;\r\n this.toast.error('لطفا نام متغیر های مورد نیاز را کامل کنید');\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getNoValueRule(gr) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.getNoValueRule(gr.items[i]);\r\n }\r\n } else {\r\n if (gr.onDemandLabel?.indexOf('????') == 0) {\r\n this.canOpen = true;\r\n }\r\n }\r\n\r\n // }\r\n }\r\n\r\n async getQueryStringSimple(group: AXQueryBuilderGroup) {\r\n return new Promise<string>(async (resolve, reject) => {\r\n var query: string;\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n var id = 0;\r\n for await (const iterator of group.items) {\r\n const item: any = group.items[id];\r\n if (item.condition) {\r\n await this.getQueryStringSimple(item).then((c) => {\r\n query = query + c;\r\n });\r\n } else {\r\n let codeOperator: string = null;\r\n switch (item.operator) {\r\n case 'equal':\r\n codeOperator = '==';\r\n break;\r\n case 'not-equal':\r\n codeOperator = '!=';\r\n break;\r\n case 'not-null':\r\n codeOperator = '!= null';\r\n break;\r\n case 'null':\r\n codeOperator = '== null';\r\n break;\r\n case 'gt':\r\n codeOperator = '>';\r\n break;\r\n case 'gte':\r\n codeOperator = '>=';\r\n break;\r\n case 'lt':\r\n codeOperator = '<';\r\n break;\r\n case 'lte':\r\n codeOperator = '<=';\r\n break;\r\n case 'contains':\r\n codeOperator = item.operator;\r\n break;\r\n case 'start-with':\r\n codeOperator = item.operator;\r\n break;\r\n case 'end-with':\r\n codeOperator = item.operator;\r\n break;\r\n default:\r\n codeOperator = item.operator;\r\n break;\r\n }\r\n query = query + ' ' + item.caption + ' ' + codeOperator + ' ' + item.text;\r\n }\r\n if (id !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n id += 1;\r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n }\r\n resolve(query);\r\n });\r\n }\r\n\r\n public getQueryString(group: AXQueryBuilderGroup, type: AXQueryBuilderStringType): string {\r\n let query = '';\r\n switch (type) {\r\n case 'simple':\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n for (let i = 0; i < group.items.length; i++) {\r\n const item = group.items[i];\r\n if (item instanceof AXQueryBuilderGroup) {\r\n query = query + item.queryString;\r\n } else {\r\n query = query + ' ' + item.caption + ' ' + item.operator + ' ' + item.value;\r\n }\r\n if (i !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n }\r\n break;\r\n\r\n case 'elastic':\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n for (let i = 0; i < group.items.length; i++) {\r\n const item = group.items[i];\r\n if (item instanceof AXQueryBuilderGroup) {\r\n query = query + item.queryStringElastic;\r\n } else {\r\n query = query + ' ' + item.dataField + ' ' + item.operator + ' ' + item.value;\r\n }\r\n if (i !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n }\r\n\r\n break;\r\n case 'sql':\r\n break;\r\n }\r\n\r\n return query;\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewEncapsulation, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\nimport { AXQueryBuilderRuleComponent } from './query-builder-rule.component';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderGroupEvent, AXQueryBuilderRuleEvent, AXQueryBuilderRule } from './query-builder.class';\r\nimport { AXQueryBuilderService } from './query-builder.service';\r\n@Component({\r\n selector: 'ax-query-group',\r\n templateUrl: 'query-builder-group.component.html',\r\n host: { class: 'ax ax-query-group' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderGroupComponent implements OnInit {\r\n @ViewChild('queryRule') queryRule: AXQueryBuilderRuleComponent;\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n @Input()\r\n group: AXQueryBuilderGroup;\r\n\r\n collapsed: boolean = false;\r\n\r\n @Input()\r\n parent: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n @Input()\r\n mode: 'new' | 'edit' = 'new';\r\n\r\n //ruleIsEditing: boolean = true;\r\n\r\n @Output()\r\n groupRuleChanged: EventEmitter<AXQueryBuilderGroupEvent> = new EventEmitter<AXQueryBuilderGroupEvent>();\r\n\r\n showGroupCondition: boolean = false;\r\n\r\n constructor(private qs: AXQueryBuilderService) {}\r\n\r\n ngOnInit() {}\r\n\r\n ruleDelete(e: AXQueryBuilderRuleEvent) {\r\n this.group.items = this.group.items.filter((c) => c !== e.items);\r\n this.ruleChanged(null);\r\n }\r\n handleRemoveClick() {\r\n this.parent.items = this.parent.items.filter((c) => c !== this.group);\r\n this.groupRuleChanged.emit({ groups: this.group, component: this });\r\n }\r\n saveRule() {\r\n // this.form.validate().then(c => {\r\n // });\r\n // return this.queryRule.saveRule();\r\n }\r\n addRule() {\r\n const item: AXQueryBuilderRule = new AXQueryBuilderRule();\r\n if (this.fields.length > 0) {\r\n // item.caption = this.fields[0].caption;\r\n // item.dataType = this.fields[0].dataType;\r\n // item.dataField = this.fields[0].dataField;\r\n } else {\r\n }\r\n item.operator = 'equal';\r\n\r\n if (item.dataType === 'string') {\r\n item.value = '';\r\n }\r\n if (item.dataType === 'number') {\r\n item.value = 0;\r\n }\r\n\r\n if (this.group.items == undefined) {\r\n this.group.items = [];\r\n }\r\n this.group.items.push(item);\r\n this.ruleChanged(null);\r\n }\r\n addGroup() {\r\n this.showGroupCondition = true;\r\n }\r\n addGroupOR() {\r\n this.makeGroup('OR');\r\n }\r\n addGroupAND() {\r\n this.makeGroup('AND');\r\n }\r\n makeGroup(_condition) {\r\n let r: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n r.condition = _condition;\r\n r.items = [];\r\n r.queryString = '';\r\n if (this.group.items == undefined) {\r\n this.group.items = [];\r\n }\r\n this.group.items.push(r);\r\n this.showGroupCondition = false;\r\n this.ruleChanged(null);\r\n }\r\n changeDetailMode() {\r\n //if (this.parent) {\r\n this.collapsed = !this.collapsed;\r\n // this.ruleIsEditing = false;\r\n //}\r\n }\r\n\r\n handleChangeClick() {\r\n if (this.group.condition == 'OR') {\r\n this.group.condition = 'AND';\r\n } else {\r\n this.group.condition = 'OR';\r\n }\r\n this.ruleChanged(null);\r\n }\r\n\r\n ruleChanged(e) {\r\n ;\r\n // this.group.queryString = this.qs.getQueryString(this.group, 'simple');\r\n this.qs.getQueryStringSimple(this.group).then((c) => {\r\n this.group.queryString = c;\r\n this.group.queryStringElastic = this.qs.getQueryString(this.group, 'elastic');\r\n this.groupRuleChanged.emit({ groups: this.group, component: this });\r\n });\r\n }\r\n}\r\n","import { AXBaseComponent } from '../base/element.class';\r\nimport { Component, Input, Output, EventEmitter, ElementRef, ViewEncapsulation, ViewChild } from '@angular/core';\r\nimport { AXTranslator, AXHtmlUtil } from '@acorex/core';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderGroupEvent, AXQueryBuilderGroupItem } from './query-builder.class';\r\nimport { AXQueryBuilderGroupComponent } from './query-builder-group.component';\r\nimport { AXToastService } from '../toast/toast.service';\r\n\r\n@Component({\r\n selector: 'ax-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderComponent extends AXBaseComponent {\r\n @ViewChild('queryGroup') queryGroup: AXQueryBuilderGroupComponent;\r\n\r\n @Input()\r\n query: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n mode: 'new' | 'edit' = 'new';\r\n\r\n rootGroup: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n\r\n ngOnInit(): void {\r\n this.rootGroup.condition = this.query.condition ? this.query.condition : 'AND';\r\n this.rootGroup.items = this.query.items ? this.query.items : [];\r\n }\r\n\r\n constructor(private ref: ElementRef, private toast: AXToastService) {\r\n super();\r\n }\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n // @Input()\r\n // mode: 'immediate' | 'click' = 'click';\r\n\r\n @Output()\r\n onRuleChanged: EventEmitter<AXQueryBuilderGroupEvent> = new EventEmitter<AXQueryBuilderGroupEvent>();\r\n\r\n saved: boolean = false;\r\n\r\n public getQueryBuilder() {\r\n return { groups: this.rootGroup };\r\n }\r\n\r\n ruleChanged(e) {\r\n this.onRuleChanged.emit({ component: this, groups: this.rootGroup });\r\n }\r\n\r\n public saveRule() {\r\n /// return this.queryGroup.saveRule();\r\n return new Promise((resolve, reject) => {\r\n this.saved = true;\r\n for (let i = 0; i < this.rootGroup.items.length; i++) {\r\n if (this.saved == true) {\r\n this.findNullValue(this.rootGroup.items[i]);\r\n }\r\n }\r\n if (this.saved == true) {\r\n resolve(this.rootGroup);\r\n } else {\r\n reject();\r\n }\r\n });\r\n }\r\n\r\n findNullValue(gr) {\r\n if (this.saved == true) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.findNullValue(gr.items[i]);\r\n }\r\n } else {\r\n if (gr.onDemandLabel == '????|') {\r\n this.saved = false;\r\n this.toast.error('لطفا نام متغیر های مورد نیاز را کامل کنید');\r\n }\r\n }\r\n }\r\n }\r\n\r\n // selectionFieldsChanged(e, rules: AXQueryBuilderRule) {\r\n //\r\n // rules.dataField = e.selectedItems[0].dataField;\r\n // rules.caption = e.selectedItems[0].caption;\r\n // rules.dataType = e.selectedItems[0].dataType;\r\n\r\n // // TO DO chack dataType For Def operator and Value\r\n // if (rules.dataType == 'string') {\r\n // rules.operator = this.operatorStringItem[0].id;\r\n // rules.value = 'null';\r\n // }\r\n // if (rules.dataType == 'number') {\r\n // rules.operator = this.operatorNumberItem[0].id;\r\n // rules.value = '0';\r\n // }\r\n\r\n // this.onRuleChanged.emit({ groups: this.rootGroup, queryString: this.getQueryDisplay(), component: this, htmlElement: this.ref.nativeElement })\r\n // }\r\n\r\n // selectionOparatorChanged(e, rules: AXQueryBuilderRule) {\r\n // rules.operator = e.selectedItems[0].id;\r\n // }\r\n\r\n // provideDataFields = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.fields);\r\n // });\r\n // }\r\n\r\n // provideDataOperatorString = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.operatorStringItem);\r\n // });\r\n // }\r\n // provideDataOperatorNumber = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.operatorNumberItem);\r\n // });\r\n // }\r\n\r\n // private getQueryDisplay(gr = this.list, _condition = this.list[0].condition) {\r\n // var cap: string = '(';\r\n\r\n // for (let j = 0; j < gr.length; j++) {\r\n // if (j > 0) {\r\n // cap = cap + _condition;\r\n // }\r\n // cap = cap + \" ( \";\r\n // for (let i = 0; i < gr[j].items.length; i++) {\r\n // if (gr[j].items[i].value && gr[j].items[i].operator && gr[j].items[i].caption || ((gr[j].items[i].operator == \"is-empty\" || gr[j].items[i].operator == \"is-not-empty\") && gr[j].items[i].caption)) {\r\n // var opr: string;\r\n // if (gr[j].items[i].dataType == \"number\" || gr[j].items[i].dataType == \"date\" || gr[j].items[i].dataType == \"dateTime\") {\r\n // let d = this.operatorNumberItem.filter(c => c.id == gr[j].items[i].operator);\r\n // opr = d[0].text;\r\n // } else {\r\n // let d = this.operatorStringItem.filter(c => c.id == gr[j].items[i].operator);\r\n // opr = d[0].text;\r\n // }\r\n // if ((gr[j].items[i].operator == \"is-empty\" || gr[j].items[i].operator == \"is-not-empty\")) {\r\n\r\n // if (i === gr[j].items.length - 1) {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\";\r\n // } else {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + gr[j].condition;\r\n // }\r\n // } else {\r\n // var val: string;\r\n\r\n // if (gr[j].items[i].dataType == 'date') {\r\n // // val = moment(item.value).locale('fa').format('YYYY/MM/DD');\r\n // } else if (gr[j].items[i].dataType == 'dateTime') {\r\n // // val = moment(item.value).locale('fa').format('HH:mm YYYY/MM/DD');\r\n // } else {\r\n // val = gr[j].items[i].value;\r\n // }\r\n // if (i === gr[j].items.length - 1) {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + val\r\n // } else {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + val + \" \" + gr[j].condition\r\n // }\r\n\r\n // }\r\n // }\r\n // }\r\n\r\n // if (gr[j].groups && gr[j].groups.length > 0) {\r\n // let c = this.getQueryDisplay(gr[j].groups, gr[j].condition);\r\n // if (c != \"( ) \") {\r\n // if (gr[j].items.length > 0 || j > 0) {\r\n // cap = cap + \" \" + gr[j].condition + \" \" + c + \" \";\r\n // } else {\r\n // cap = cap + \" \" + c + \" \";\r\n // }\r\n\r\n // }\r\n // }\r\n\r\n // cap = cap + \" ) \";\r\n // };\r\n\r\n // cap = cap + \" ) \";\r\n // return cap;\r\n // }\r\n\r\n // deleteGroup(groupOut: AXQueryBuilderGroup, groupIn: AXQueryBuilderGroup) {\r\n // groupOut.items = groupOut.items.filter(c => c.id != groupIn.id);\r\n // }\r\n\r\n // deleteRule1(group: AXQueryBuilderGroup, rule: AXQueryBuilderRule) {\r\n // group.items = group.items.filter(c => c.id != rule.id);\r\n // }\r\n\r\n // addRule(group: AXQueryBuilderGroup) {\r\n // const item: AXQueryBuilderRule = new AXQueryBuilderRule();\r\n // group.items.push(item);\r\n // }\r\n\r\n // addGroupAND(group: AXQueryBuilderGroup) {\r\n // this.addGroupOnClick(group);\r\n // group.condition = \"AND\";\r\n // }\r\n // addGroupOR(group: AXQueryBuilderGroup) {\r\n // this.addGroupOnClick(group);\r\n // group.condition = \"OR\";\r\n // }\r\n\r\n // addGroupOnClick(groups: AXQueryBuilderGroup) {\r\n // let r: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n // r.condition = \"\";\r\n // r.items = [];\r\n // if (groups.items == undefined) {\r\n // groups.items = [];\r\n // }\r\n // groups.items.push(r);\r\n // }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSearchBoxComponent } from './searchbox.component';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSearchBoxComponent],\r\n imports: [CommonModule, AXTextBoxModule, AXButtonModule, AXFormGroupModule, AXTranslatorModule, FormsModule],\r\n exports: [AXSearchBoxComponent],\r\n providers: []\r\n})\r\nexport class AXSearchBoxModule { }\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n NgZone,\r\n HostListener\r\n} from '@angular/core';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent, AXBaseValueComponent } from '../base/element.class';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\nimport { AXDataSourceReadParams } from '../data-source/read-param';\r\nimport { AXSearchBoxComponent } from '../searchbox/searchbox.component';\r\nimport { AXConfig, AXObjectUtil, AXTranslator } from '@acorex/core';\r\nimport { AXValueEvent } from '../base/events.class';\r\n\r\n\r\nexport class AXSelectBoxValueChangedEvent extends AXValueEvent<any | any[]> {\r\n value?: any;\r\n oldValue?: any;\r\n isUserInput: boolean = false;\r\n selectedKeys?: any[];\r\n selectedItems?: any[];\r\n}\r\n\r\n@Component({\r\n selector: 'ax-select-box2',\r\n templateUrl: './selectbox2.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBox2Component }]\r\n})\r\nexport class AXSelectBox2Component extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent, AXBaseValueComponent<any>{\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n span: ElementRef<HTMLElement>;\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n textbox: AXTextBoxComponent;\r\n\r\n @ViewChild('listContainer', { static: true })\r\n listContainer: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('searchBox', { static: false })\r\n searchBox: AXSearchBoxComponent;\r\n\r\n @ViewChild('textBoxSelectBox', { static: true })\r\n textBoxSelectBox: AXTextBoxComponent;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n @ViewChild('d', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n\r\n @Input() showDropDownButton: boolean = true;\r\n @Input() readonly: boolean = false;\r\n @Input() rtl: boolean = AXConfig.get('layout.rtl');\r\n @Input() disabled: boolean;\r\n @Input() placeholder: string;\r\n @Input() size: AXElementSize = 'md';\r\n @Input() allowNull: boolean = true;\r\n @Input() textAlign: 'right' | 'left' | null = null;\r\n @Input() bufferSize: number = 10;\r\n @Input() remoteOperation: boolean = false;\r\n @Input() allowSearch: boolean = true;\r\n @Input() textField: string = 'text';\r\n @Input() valueField: string = 'value';\r\n @Input() selectionMode: 'single' | 'multiple' = 'single';\r\n @Input() selectionDataMode: 'value' | 'item' = 'value';\r\n\r\n currentfocusedIndex: number = -1;\r\n showLoading: boolean = false;\r\n skip: number = -1;\r\n searchText: string = '';\r\n text: string = '';\r\n totalCount: number = 0;\r\n itemsFiltered: any[] = [];\r\n\r\n private isUserInput: boolean = false;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n private _validation: AXValidation;\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {\r\n super();\r\n }\r\n\r\n\r\n private _value: any | any[];\r\n @Input()\r\n public get value(): any | any[] {\r\n return this._value;\r\n }\r\n public set value(v: any | any[]) {\r\n if (v !== this._value) {\r\n const oldValue = AXObjectUtil.deepJSONClone(this._value);\r\n if (this.selectionMode === 'multiple') {\r\n this._value = Array.isArray(v) ? v : (v ? [v] : []);\r\n } else {\r\n this._value = Array.isArray(v) ? v[0] : v;\r\n }\r\n this.valueChange.emit(this._value);\r\n this.onValueChanged.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n isUserInput: this.isUserInput,\r\n oldValue,\r\n value: this._value,\r\n selectedKeys: this.selectedItems.map(c => c[this.valueField]),\r\n selectedItems: this.selectedItems.slice()\r\n });\r\n this.isUserInput = false;\r\n this.renderSelection();\r\n }\r\n }\r\n\r\n\r\n private _selectedItems: any[];\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n\r\n private _items: any[] = [];\r\n @Input()\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n public set items(v: any[]) {\r\n this._items = v;\r\n if (this.itemsChange) {\r\n this.itemsChange.emit(v);\r\n }\r\n this.renderSelection();\r\n }\r\n\r\n @Output()\r\n itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Output()\r\n onBlur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n public valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n public onValueChanged: EventEmitter<AXSelectBoxValueChangedEvent> = new EventEmitter<AXSelectBoxValueChangedEvent>();\r\n\r\n\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n scrolled(e) {\r\n if (this.remoteOperation && this.totalCount > this.items.length && this.listContainer.nativeElement.scrollHeight != 0\r\n && this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50) {\r\n this.showLoading = true;\r\n\r\n if (this.skip !== this.items.length) {\r\n this.skip = this.items.length;\r\n\r\n const params: AXDataSourceReadParams = {};\r\n params.skip = this.items.length;\r\n params.take = this.bufferSize * (Math.floor(this.items.length / this.bufferSize) + 1);\r\n if (this.textbox) {\r\n params.searchText = this.text;\r\n } else {\r\n params.searchText = null;\r\n }\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n\r\n textChanged(e) {\r\n this.currentfocusedIndex = -1;\r\n if (this.remoteOperation) {\r\n this.searchText = this.text;\r\n this.items = [];\r\n const params: AXDataSourceReadParams = {};\r\n params.searchText = this.text;\r\n params.skip = 0;\r\n params.take = this.bufferSize;\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n private renderSelection() {\r\n const func = () => {\r\n if (!this.value) {\r\n return [];\r\n }\r\n if ((this.items?.length > 0) && this.selectionDataMode == 'value') {\r\n const orgRes = this.items.filter(i => {\r\n if (Array.isArray(this.value)) {\r\n return this.value.some(ii => {\r\n if (typeof ii === 'object') {\r\n return i[this.valueField] === ii[this.valueField];\r\n }\r\n else {\r\n return i[this.valueField] === ii;\r\n }\r\n });\r\n }\r\n else {\r\n if (typeof this.value === 'object') {\r\n return i[this.valueField] === this.value[this.valueField];\r\n }\r\n else {\r\n return i[this.valueField] === this.value;\r\n }\r\n }\r\n });\r\n if (orgRes.length > 0) {\r\n return orgRes;\r\n }\r\n }\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(ii => {\r\n if (typeof ii === 'object' && ii[this.textField]) {\r\n return ii;\r\n }\r\n else {\r\n const fake: any = {};\r\n fake[this.valueField] = this.value;\r\n fake[this.textField] = AXTranslator.get('common.loading');\r\n return fake;\r\n }\r\n });\r\n }\r\n else {\r\n if (typeof this.value === 'object' && this.value[this.textField]) {\r\n return [this.value];\r\n }\r\n else {\r\n const fake: any = {};\r\n fake[this.valueField] = this.value;\r\n fake[this.textField] = AXTranslator.get('common.loading');\r\n return [fake];\r\n }\r\n }\r\n };\r\n this._selectedItems = func();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.bufferSize < 10) {\r\n this.bufferSize = 10;\r\n }\r\n if (!this.remoteOperation) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n dropdownToggle(e) {\r\n if (this.dropdown.isOpen) {\r\n this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n this.focusOnSearchBox();\r\n this.focusOnCurrentFocusedIndex();\r\n }\r\n else {\r\n this.focus();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n if (this.dataSource) {\r\n if (this.allowSearch === false) {\r\n this.fetch();\r\n }\r\n this.dataSource.onDataReceived.subscribe((c) => {\r\n this.showLoading = false;\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private dataReceived(data: any) {\r\n if (this.remoteOperation) {\r\n if (this.searchText && this.searchText != null && this.searchText !== '') {\r\n if (data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.totalCount;\r\n } else {\r\n this.items = data.items;\r\n this.totalCount = data.items == undefined ? 0 : data.items.length;\r\n }\r\n\r\n }\r\n else if (data.items && data.items.length === data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.items.length;\r\n }\r\n else if (data.totalCount) {\r\n data.items.forEach(elm => {\r\n this.items.push(elm);\r\n });\r\n this.totalCount = data.totalCount;\r\n } else {\r\n data.forEach(elm => {\r\n this.items.push(elm);\r\n });\r\n this.totalCount = data.length;\r\n }\r\n } else {\r\n this.items = data;\r\n }\r\n this.renderSelection();\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n if (this.dataSource) {\r\n this.showLoading = true;\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n const params: AXDataSourceReadParams = {};\r\n if (this.remoteOperation) {\r\n params.skip = 0;\r\n this.skip = 0;\r\n params.take = this.bufferSize;\r\n }\r\n if (this.dataSource !== undefined) {\r\n this.items = [];\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n handleItemRemoveClick(item) {\r\n this.text = '';\r\n this.isUserInput = true;\r\n if (Array.isArray(this.value)) {\r\n this.value = this.value.filter(c => (typeof c === 'object') ? c[this.valueField] !== item[this.valueField] : c !== item[this.valueField]);\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n\r\n\r\n onTextBoxClick(e) {\r\n if (this.disabled === false && this.readonly === false) {\r\n this.open();\r\n }\r\n }\r\n\r\n handleItemClick(e: MouseEvent, item: any) {\r\n this.isUserInput = true;\r\n if (this.selectionMode === 'single') {\r\n this.selectItems(item);\r\n this.close();\r\n }\r\n else {\r\n if (Array.isArray(this.value) && this.value.length > 0) {\r\n if (this.value.some(c => this.internalGetItemValue(c) === this.internalGetItemValue(item))) {\r\n this.unselectItems(item);\r\n }\r\n else {\r\n this.selectItems(item);\r\n }\r\n }\r\n else {\r\n this.selectItems(item);\r\n }\r\n }\r\n this.cdr.markForCheck();\r\n this.focusOnSearchBox();\r\n }\r\n\r\n private internalGetItemByDataMode(item: any) {\r\n return this.selectionDataMode === 'item' ? item : item[this.valueField];\r\n }\r\n\r\n private internalGetItemValue(item: any) {\r\n return typeof item === 'object' ? item[this.valueField] : item;\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyDown(e: KeyboardEvent) {\r\n if (e.key === 'Escape' || this.disabled || this.readonly) {\r\n this.close();\r\n e.preventDefault();\r\n return;\r\n }\r\n const isLetter = new RegExp(/[a-zA-Z0-9\\-]/).test(String.fromCharCode(e.keyCode));\r\n if (this.textbox.isFocused()) {\r\n if (e.key === 'Backspace' && e.type === 'keydown' &&\r\n ((this.allowNull === true && this.selectedItems.length > 0) ||\r\n (this.allowNull === false && this.selectedItems.length > 1))) {\r\n this.isUserInput = true;\r\n this.unselectItems(this.selectedItems.pop());\r\n e.preventDefault();\r\n return;\r\n }\r\n else if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && !this.dropdown.isOpen && e.type === 'keydown') {\r\n if (this.selectionMode === 'single') {\r\n this.isUserInput = true;\r\n this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));\r\n if (e.ctrlKey) {\r\n this.open();\r\n }\r\n }\r\n else {\r\n this.open();\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n else if (isLetter) {\r\n this.text = e.key;\r\n this.open();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n if (this.dropdown.isOpen) {\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0) {\r\n this.isUserInput = true;\r\n this.selectItemByNav((e.key === 'ArrowDown' ? 1 : -1));\r\n e.preventDefault();\r\n return;\r\n }\r\n if ((e.key === 'Enter' || e.code === 'Space')) {\r\n const focusedItem = this.getItems()[this.currentfocusedIndex];\r\n if (focusedItem) {\r\n\r\n if (this.selectionMode === 'single') {\r\n this.isUserInput = true;\r\n this.selectItems(focusedItem);\r\n this.close();\r\n }\r\n else {\r\n this.isUserInput = true;\r\n this.toggleSelect(focusedItem);\r\n }\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n unselectItems(...items: any[]) {\r\n if (!items || items.length === 0) {\r\n this.value = null;\r\n }\r\n else if (Array.isArray(this.value)) {\r\n this.value = this.value.filter(c => !items.some(d =>\r\n this.internalGetItemValue(c) === this.internalGetItemValue(d))\r\n );\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n selectItems(...items: any[]) {\r\n if (items && items.length) {\r\n if (this.selectionMode === 'single') {\r\n this.value = this.internalGetItemByDataMode(items[0]);\r\n }\r\n else {\r\n this.value = (this.value || []).concat(items.map(c => this.internalGetItemByDataMode(c)));\r\n }\r\n }\r\n }\r\n\r\n\r\n toggleSelect(...items: any[]) {\r\n if (items && items.length) {\r\n items.forEach(item => {\r\n this.selectedItems.includes(item) ? this.unselectItems(item) : this.selectItems(item);\r\n });\r\n }\r\n }\r\n\r\n\r\n close() {\r\n this.dropdown.close();\r\n }\r\n\r\n open() {\r\n this.dropdown.open();\r\n }\r\n\r\n focus(): void {\r\n this.text = null;\r\n this.textbox.focus();\r\n }\r\n\r\n private focusOnSearchBox() {\r\n const inputedVal = this.text;\r\n if (this.allowSearch === true) {\r\n setTimeout(() => {\r\n if (this.searchBox) {\r\n this.searchBox.value = inputedVal;\r\n this.searchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n else {\r\n this.textbox.focus();\r\n }\r\n }\r\n\r\n getItems(): any[] {\r\n if (this.items == null) {\r\n return [];\r\n }\r\n return (!this.remoteOperation && this.text && this.text !== '') ? this.items.filter((c) =>\r\n (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase())) : this.items;\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems.some(c => c[this.valueField] === item[this.valueField]);\r\n }\r\n\r\n private selectItemByNav(sign: -1 | 1 | null = null): void {\r\n if (sign == null) {\r\n this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n else {\r\n sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;\r\n }\r\n if (this.currentfocusedIndex < 0) {\r\n this.currentfocusedIndex = 0;\r\n }\r\n if (this.currentfocusedIndex > this.getItems().length - 1) {\r\n this.currentfocusedIndex = this.getItems().length - 1;\r\n }\r\n\r\n // set scroll\r\n this.focusOnCurrentFocusedIndex();\r\n }\r\n\r\n private focusOnCurrentFocusedIndex() {\r\n if (this.listContainer) {\r\n this.zone.runOutsideAngular(() => {\r\n const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);\r\n if (itemDiv) {\r\n itemDiv.scrollIntoView({ behavior: 'auto' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n selectedItemByIndex(index: number) {\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n if (index > this.getItems().length - 1) {\r\n index = this.getItems().length - 1;\r\n }\r\n this.selectItems(this.getItems()[index]);\r\n this.currentfocusedIndex = index;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSelectBoxComponent } from './selectbox.component';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXTranslatorModule, AXScrollModule } from '@acorex/core';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\nimport { AXSearchBoxModule } from '../searchbox/searchbox.module';\r\nimport { AXSelectBox2Component } from './selectbox2.component';\r\n\r\n\r\nconst COMPONENT = [AXSelectBoxComponent, AXSelectBox2Component];\r\nconst MODULES = [\r\n CommonModule,\r\n AXDropdownModule,\r\n AXTextBoxModule,\r\n AXTranslatorModule,\r\n AXScrollModule,\r\n AXCheckBoxModule,\r\n AXLoadingModule,\r\n AXSearchBoxModule\r\n];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXSelectBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { AXQueryBuilderComponent } from './query-builder.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPanelBoxModule } from '../panel-box/panel-box.module';\r\nimport { AXSelectBoxModule } from '../selectbox/selectbox.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXQueryBuilderRuleComponent } from './query-builder-rule.component';\r\nimport { AXQueryBuilderGroupComponent } from './query-builder-group.component';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXNumberBoxModule } from '../number-box/number-box.module';\r\nimport { AXDataSourceModule } from '../data-source/datasource.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXQueryBuilderPopupComponent } from './query-builder-popup/query-builder-popup.component';\r\nimport { AXLabelModule } from '../label/label.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\nimport { AXQueryBuilderService } from './query-builder.service';\r\n\r\nconst MODUELS = [\r\n CommonModule,\r\n AXButtonModule,\r\n AXPanelBoxModule,\r\n AXSelectBoxModule,\r\n AXDataSourceModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXFormGroupModule,\r\n AXTranslatorModule,\r\n AXLabelModule,\r\n AXCheckBoxModule,\r\n AXValidationModule\r\n]\r\n\r\n@NgModule({\r\n declarations: [AXQueryBuilderComponent, AXQueryBuilderGroupComponent, AXQueryBuilderRuleComponent, AXQueryBuilderPopupComponent],\r\n imports: [MODUELS],\r\n exports: [AXQueryBuilderComponent],\r\n providers: [AXQueryBuilderService],\r\n entryComponents: [AXQueryBuilderPopupComponent]\r\n})\r\n\r\nexport class AXQueryBuilderModule { }","import { Component, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, Output, Input, EventEmitter } from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\nimport { AXValueEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-switch',\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AXSwitchComponent extends AXBaseComponent implements AXBaseSizableComponent, AXBaseValueComponent<boolean> {\r\n\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n private _value: boolean;\r\n @Input()\r\n public get value(): boolean {\r\n return this._value;\r\n }\r\n public set value(v: boolean) {\r\n if (this._value !== v) {\r\n const oldValue = this._value;\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n oldValue,\r\n value: v\r\n });\r\n }\r\n }\r\n\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n focus(): void { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXSwitchComponent } from './switch.component';\r\n\r\n@NgModule({\r\n declarations: [AXSwitchComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [AXSwitchComponent],\r\n entryComponents: [AXSwitchComponent],\r\n providers: [],\r\n})\r\nexport class AXSwitchModule {\r\n\r\n}","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AXHtmlUtil } from '@acorex/core';\r\nimport { AXPageClosing, AXPageResult, TAB_META_KEY, AXPageClosedPromise } from '../base/base-page.class';\r\n\r\nexport interface AXTabPage {\r\n title: string;\r\n content: any;\r\n closable?: boolean;\r\n data?: any;\r\n pinned?: boolean;\r\n}\r\n\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXTabPageService {\r\n\r\n\r\n\r\n tabs: AXTabPage[] = new Array<AXTabPage>();\r\n opened = new Subject<AXTabPage>();\r\n activated = new Subject<AXTabPage>();\r\n closed = new Subject<AXTabPage>();\r\n changed = new Subject();\r\n\r\n\r\n\r\n constructor() { }\r\n\r\n open(content: any, title: string): AXPageClosedPromise;\r\n open(content: any, title: string, data?: any): AXPageClosedPromise;\r\n open(options: AXTabPage): AXPageClosedPromise;\r\n\r\n open(arg1, arg2?, arg3?) {\r\n let newTab: AXTabPage;\r\n if (typeof arg1 === 'object') {\r\n const options = Object.assign({ closable: true }, arg1);\r\n newTab = {\r\n title: options.title,\r\n closable: options.closable,\r\n content: options.content,\r\n data: options.data,\r\n pinned: options.pinned\r\n };\r\n } else {\r\n newTab = {\r\n title: arg2,\r\n closable: true,\r\n content: arg1,\r\n data: arg3,\r\n };\r\n }\r\n newTab[TAB_META_KEY] = {};\r\n newTab[TAB_META_KEY].uid = AXHtmlUtil.getUID();\r\n //\r\n const existTab = this.tabs.find((c) => newTab[TAB_META_KEY].uid && c[TAB_META_KEY].uid === newTab[TAB_META_KEY].uid) ||\r\n this.findExistTab(newTab.content, newTab.data);\r\n //\r\n if (existTab) {\r\n return Promise.resolve(this.active(existTab));\r\n }\r\n this.tabs.push(newTab);\r\n this.tabs\r\n .filter((c) => c[TAB_META_KEY].uid !== newTab[TAB_META_KEY].uid)\r\n .forEach((t) => {\r\n t[TAB_META_KEY].active = false;\r\n });\r\n this.opened.next(newTab);\r\n this.active(newTab);\r\n const promise = new AXPageClosedPromise((resolve) => {\r\n newTab[TAB_META_KEY].close = (e) => {\r\n if (resolve) {\r\n delete e.cancel;\r\n resolve(e);\r\n }\r\n };\r\n });\r\n promise['closeMethod'] = () => { this.close(newTab); };\r\n return promise;\r\n }\r\n\r\n close(tab: AXTabPage) {\r\n const e = { cancel: false };\r\n const closingFunc = tab[TAB_META_KEY].component?.onClosing;\r\n if (closingFunc) {\r\n const res = closingFunc(e);\r\n if (res instanceof Promise) {\r\n res.then(() => {\r\n if (e == null || e.cancel !== true) {\r\n this.doCloseAction(tab, e);\r\n }\r\n });\r\n }\r\n else {\r\n if (e == null || e.cancel !== true) {\r\n this.doCloseAction(tab, e);\r\n }\r\n }\r\n } else {\r\n this.doCloseAction(tab, e);\r\n }\r\n }\r\n\r\n private doCloseAction(tab: AXTabPage, e: AXPageClosing): void {\r\n const currentTab = this.tabs.find((c) => c[TAB_META_KEY].uid == tab[TAB_META_KEY].uid);\r\n if (!currentTab) {\r\n return;\r\n }\r\n const index = this.tabs.indexOf(currentTab);\r\n this.tabs = this.tabs.filter(c => c != currentTab);\r\n const prev = index > 0 ? this.tabs[index - 1] : this.tabs[0];\r\n if (prev) {\r\n this.active(prev);\r\n }\r\n this.closed.next(currentTab);\r\n this.changed.next();\r\n if (currentTab[TAB_META_KEY].close) {\r\n currentTab[TAB_META_KEY].close(e);\r\n }\r\n }\r\n\r\n active(tab: AXTabPage): AXPageResult;\r\n active(uid: string): AXPageResult;\r\n active(): AXPageResult;\r\n active(arg1?): AXPageResult {\r\n if (!arg1) {\r\n return {\r\n sender: this.tabs.find((c) => c[TAB_META_KEY].active === true)\r\n }\r\n }\r\n if (typeof arg1 === 'object') {\r\n const tab = <AXTabPage>arg1;\r\n tab[TAB_META_KEY].active = true;\r\n this.tabs\r\n .filter((c) => c[TAB_META_KEY].uid !== tab[TAB_META_KEY].uid)\r\n .forEach((t) => {\r\n t[TAB_META_KEY].active = false;\r\n });\r\n this.activated.next(tab);\r\n this.changed.next();\r\n return {\r\n sender: tab\r\n }\r\n } else if (typeof arg1 === 'string') {\r\n const tab = this.tabs.find((c) => c[TAB_META_KEY].uid === arg1);\r\n if (tab) {\r\n return this.active(tab);\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.tabs.forEach((c) => {\r\n this.close(c);\r\n });\r\n this.tabs = [];\r\n }\r\n\r\n private findExistTab(component: any, data: any): AXTabPage {\r\n try {\r\n if (!data) {\r\n data = {};\r\n }\r\n const result = this.tabs.find((c: any) =>\r\n c.content === component &&\r\n ((!c.data) ||\r\n JSON.stringify(data) === JSON.stringify(c.data))\r\n );\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ViewContainerRef, ComponentFactoryResolver, ElementRef, ComponentRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXTabPage, AXTabPageService } from './tab-page.service';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXBasePageComponent, AXPageCloseEvent, TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\n\r\n@Component({\r\n selector: 'ax-tab-page-host',\r\n template: `\r\n <div class='ax-loading-host'>\r\n <div class='ax-tab-page-host' >\r\n <div [hidden]=\"isLoading\" style=\"height:100%\" class='ax-tab-page-host-container'>\r\n <ng-template #container></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n `\r\n})\r\n\r\nexport class AXTabPageHostComponent implements OnInit {\r\n\r\n tab: AXTabPage;\r\n component: AXBasePageComponent;\r\n private componentRef: ComponentRef<any>;\r\n isLoading: boolean;\r\n _loadingId: number;\r\n\r\n @ViewChild('container', { read: ViewContainerRef, static: true })\r\n private container: ViewContainerRef;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private rendererService: AXRenderService,\r\n private tabService: AXTabPageService,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n }\r\n\r\n async ngAfterViewInit() {\r\n this._loadingId = this.loadingService.show(this.ref.nativeElement.querySelector('.ax-tab-page-host-container'));\r\n //\r\n let data: any = {};\r\n //\r\n let component: any;\r\n if (typeof this.tab.content === 'string') {\r\n const route = await this.rendererService.findLoadedComponentByRoute(this.tab.content, 20);\r\n component = route?.component;\r\n data = Object.assign(data, route.data);\r\n }\r\n else if (typeof this.tab.content === 'function') {\r\n component = this.tab.content;\r\n }\r\n if (component == null) {\r\n // TODO: 404 page component\r\n this.isLoading = false;\r\n console.error(`Invalid page Component! ${this.tab.content}`);\r\n return;\r\n }\r\n //\r\n data = Object.assign(data, this.tab.data);\r\n //\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n this.componentRef = this.container.createComponent(factory);\r\n if (!this.componentRef.instance.onClosed) {\r\n throw Error('The Component must be inherited from AXBasePageComponent!');\r\n }\r\n this.componentRef.instance.onClosed.subscribe((e: AXPageCloseEvent) => {\r\n this.tabService.close(this.tab);\r\n });\r\n //\r\n const com = this.componentRef.instance as any;\r\n //\r\n Object.assign(com, data);\r\n //\r\n this.tab[TAB_META_KEY].component = com;\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n } catch (error) {\r\n // TODO: 404 page component\r\n console.error(error);\r\n } finally {\r\n //this.isLoading = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.hostView.destroy();\r\n this.componentRef.destroy();\r\n this.container.clear();\r\n }\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n}","import { Component, ViewChild, ViewContainerRef, ComponentFactoryResolver, ComponentRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXTabPageService } from './tab-page.service';\r\nimport { TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXTabPageHostComponent } from './tab-page-host.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ax-tab-page-renderer',\r\n template: `<template #container></template>`,\r\n host: { 'class': 'ax tab-page-renderer' }\r\n})\r\nexport class AXTabPageRendererComponent {\r\n\r\n childs: ComponentRef<AXTabPageHostComponent>[] = [];\r\n\r\n @ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private tabService: AXTabPageService,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.subscriptions.push(tabService.activated.subscribe(tab => {\r\n this.childs.forEach((v: ComponentRef<AXTabPageHostComponent>) => {\r\n v.changeDetectorRef.detach();\r\n v.location.nativeElement.hidden = true;\r\n });\r\n const v = this.childs.find(t => (t as any).uid === tab[TAB_META_KEY].uid) as ComponentRef<AXTabPageHostComponent>;\r\n if (v) {\r\n v.location.nativeElement.hidden = false;\r\n v.changeDetectorRef.reattach();\r\n }\r\n else {\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(AXTabPageHostComponent);\r\n const componentRef = this.container.createComponent(factory);\r\n (componentRef as any).uid = tab[TAB_META_KEY].uid;\r\n const host = componentRef.instance as AXTabPageHostComponent;\r\n host.tab = tab;\r\n this.childs.push(componentRef);\r\n setTimeout(() => {\r\n componentRef.changeDetectorRef.detectChanges();\r\n }, 10);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(tabService.closed.subscribe(tab => {\r\n const hostref = this.childs.find(c => (c as any).uid === tab[TAB_META_KEY].uid);\r\n if (hostref) {\r\n hostref.destroy();\r\n }\r\n this.childs = this.childs.filter(c => (c as any).uid !== tab[TAB_META_KEY].uid);\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabService.clear();\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabPageRendererComponent } from './tab-page-Renderer.component';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\nimport { AXTabPageHostComponent } from './tab-page-host.component';\r\n\r\n@NgModule({\r\n declarations: [AXTabPageRendererComponent, AXTabPageHostComponent],\r\n imports: [CommonModule, AXLoadingModule],\r\n exports: [AXTabPageRendererComponent],\r\n entryComponents: [AXTabPageRendererComponent, AXTabPageHostComponent],\r\n providers: [],\r\n})\r\nexport class AXTabPageModule { }","import { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n\r\nexport declare class AXTabStripItem {\r\n id: string;\r\n name?: string;\r\n text?: string;\r\n tooltip?: string;\r\n icon?: string;\r\n visible?: boolean;\r\n disable?: boolean;\r\n data?: any;\r\n style?: string;\r\n active?: boolean;\r\n}\r\n\r\nexport class AXTabStripChangedEvent extends AXBaseEvent {\r\n seledtedTab: AXTabStripItem;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tab-strip',\r\n templateUrl: './tab-strip.component.html'\r\n})\r\nexport class AXTabStripComponent implements OnInit {\r\n constructor(private ref: ElementRef) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n @Input()\r\n items: AXTabStripItem[] = [];\r\n\r\n @Output()\r\n onTabChanged: EventEmitter<AXTabStripChangedEvent> = new EventEmitter<AXTabStripChangedEvent>();\r\n\r\n handleClick(i: AXTabStripItem) {\r\n if (!i.disable) {\r\n this.items.forEach((c) => (c.active = false));\r\n i.active = true;\r\n this.onTabChanged.emit({\r\n component: this,\r\n seledtedTab: i,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabStripComponent } from './tab-strip.component';\r\n\r\n@NgModule({\r\n declarations: [AXTabStripComponent],\r\n imports: [CommonModule],\r\n exports: [AXTabStripComponent],\r\n providers: []\r\n})\r\nexport class AXTabStripModule {}\r\n","/**\r\n * This directive is used as an anchor to get access\r\n * to the ViewContainerRef which here is exposed via\r\n * the public member `viewContainer`\r\n *\r\n * Theres an ALTERNATIVE to explicitly using the anchor directive.\r\n * Read in the blog post\r\n */\r\n\r\nimport { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[dynamic-tabs]'\r\n})\r\nexport class DynamicTabsDirective {\r\n constructor(public viewContainer: ViewContainerRef) {}\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\n@Component({\r\n selector: 'ax-tab',\r\n templateUrl: './tab.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTabComponent {\r\n @Input() caption: string;\r\n @Input() name: string;\r\n @Input() active = false;\r\n @Input() isCloseable = false;\r\n @Input() template: any;\r\n @Input() dataContext: any;\r\n @Input() icon: string;\r\n}\r\n","/**\r\n * The main component that renders single TabComponent\r\n * instances.\r\n */\r\n\r\nimport {\r\n Component,\r\n ContentChildren,\r\n QueryList,\r\n AfterContentInit,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n ViewEncapsulation,\r\n Attribute,\r\n Output,\r\n EventEmitter,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\nimport { AXTabComponent } from './tab.component';\r\nimport { DynamicTabsDirective } from './dynamic-tabs.directive';\r\nimport { AXDataEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-tab-view',\r\n templateUrl: './tab-view.component.html',\r\n styleUrls: ['./tab-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTabViewComponent implements AfterContentInit {\r\n dynamicTabs: AXTabComponent[] = [];\r\n\r\n @ContentChildren(AXTabComponent) tabs: QueryList<AXTabComponent>;\r\n\r\n @ViewChild(DynamicTabsDirective) dynamicTabPlaceholder: DynamicTabsDirective;\r\n\r\n @Output()\r\n onActiveTab: EventEmitter<AXDataEvent<any>> = new EventEmitter<AXDataEvent<any>>();\r\n /*\r\n Alternative approach of using an anchor directive\r\n would be to simply get hold of a template variable\r\n as follows\r\n */\r\n // @ViewChild('container', {read: ViewContainerRef}) dynamicTabPlaceholder;\r\n\r\n constructor(\r\n private ref: ElementRef,\r\n private _componentFactoryResolver: ComponentFactoryResolver,\r\n @Attribute('fullWidth') public fullWidth: boolean = false\r\n ) {}\r\n\r\n // contentChildren are set\r\n ngAfterContentInit() {\r\n // get all active tabs\r\n const activeTabs = this.tabs.filter((tab) => tab.active);\r\n\r\n // if there is no active tab set, activate the first\r\n if (activeTabs.length === 0 && this.tabs.first) {\r\n this.selectTab(this.tabs.first);\r\n }\r\n }\r\n\r\n openTab(title: string, template, isCloseable = false, icon = null, data = null) {\r\n // get a component factory for our AXTabComponent\r\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(AXTabComponent);\r\n\r\n // fetch the view container reference from our anchor directive\r\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\r\n\r\n // alternatively...\r\n // let viewContainerRef = this.dynamicTabPlaceholder;\r\n\r\n // create a component instance\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n // set the according properties on our component instance\r\n const instance: AXTabComponent = componentRef.instance as AXTabComponent;\r\n instance.caption = title;\r\n instance.template = template;\r\n instance.dataContext = data;\r\n instance.isCloseable = isCloseable;\r\n instance.icon = icon;\r\n\r\n // remember the dynamic component for rendering the\r\n // tab navigation headers\r\n this.dynamicTabs.push(componentRef.instance as AXTabComponent);\r\n\r\n //componentRef.changeDetectorRef.detectChanges();\r\n\r\n // set it active\r\n this.selectTab(this.dynamicTabs[this.dynamicTabs.length - 1]);\r\n }\r\n\r\n selectTab(tab: AXTabComponent) {\r\n // deactivate all tabs\r\n this.tabs.toArray().forEach((tab) => (tab.active = false));\r\n this.dynamicTabs.forEach((tab) => (tab.active = false));\r\n\r\n // activate the tab the user has clicked on.\r\n tab.active = true;\r\n this.onActiveTab.emit({ component: this, data: tab, htmlElement: this.ref.nativeElement });\r\n }\r\n\r\n closeTab(tab: AXTabComponent) {\r\n for (let i = 0; i < this.dynamicTabs.length; i++) {\r\n if (this.dynamicTabs[i] === tab) {\r\n // remove the tab from our array\r\n this.dynamicTabs.splice(i, 1);\r\n\r\n // destroy our dynamically created component again\r\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\r\n // let viewContainerRef = this.dynamicTabPlaceholder;\r\n viewContainerRef.remove(i);\r\n\r\n // set tab index to 1st one\r\n this.selectTab(this.tabs.first);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n closeActiveTab() {\r\n const activeTabs = this.dynamicTabs.filter((tab) => tab.active);\r\n if (activeTabs.length > 0) {\r\n // close the 1st active tab (should only be one at a time)\r\n this.closeTab(activeTabs[0]);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabComponent } from './tab.component';\r\nimport { AXTabViewComponent } from './tab-view.component';\r\nimport { DynamicTabsDirective } from './dynamic-tabs.directive';\r\n@NgModule({\r\n declarations: [AXTabComponent, AXTabViewComponent, DynamicTabsDirective],\r\n imports: [CommonModule],\r\n exports: [AXTabComponent, AXTabViewComponent, DynamicTabsDirective],\r\n providers: []\r\n})\r\nexport class AXTabViewModule {}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-text-area',\r\n templateUrl: './textarea.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTextAreaComponent }]\r\n})\r\nexport class AXTextAreaComponent extends AXBaseTextComponent {\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n @Input()\r\n rows: number = 0;\r\n @Input()\r\n cols: number = 0;\r\n\r\n @Input()\r\n maxLength: number = null;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextAreaComponent } from './textarea.component';\r\n\r\nconst COMPONENT = [AXTextAreaComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXTextAreaModule { }","import {\r\n Component,\r\n OnInit,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n Input,\r\n ViewChild,\r\n ChangeDetectionStrategy,\r\n EventEmitter,\r\n Output,\r\n ContentChild\r\n\r\n} from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\nimport { _ } from 'ag-grid-community';\r\nimport { AXValueEvent } from '../base/events.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\nexport class AXTimePickerItemChangedEvent {\r\n minute?: number;\r\n second?: number;\r\n hour?: number;\r\n time: string;\r\n\r\n}\r\nexport class AXTimePickerChangedEvent extends AXValueEvent<AXTimePickerItemChangedEvent> { }\r\n\r\n@Component({\r\n selector: 'ax-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTimePickerComponent }]\r\n})\r\nexport class AXTimePickerComponent extends AXBaseTextComponent implements OnInit {\r\n @Output()\r\n onValueChanged: EventEmitter<AXTimePickerChangedEvent> = new EventEmitter<AXTimePickerChangedEvent>();\r\n\r\n // @ViewChild('input', { static: true })\r\n // @ContentChild('input', { static: true })\r\n // input: ElementRef<HTMLInputElement>;\r\n\r\n @Input()\r\n timeType: any;\r\n\r\n type: string = 'HHmm';\r\n @Input()\r\n showCurentTime: boolean = false;\r\n\r\n clearDisabled: boolean = true;\r\n HHmmss: any = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n HHmm: any = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n HH: any = [/[0-2]/, /[0-9]/];\r\n hhmmss: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n hhmm: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n hh: any = [/[0-1]/, /[0-9]/];\r\n // TODO: apply am pm from locale\r\n hhmmssam: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n hhmmam: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n hham: any = [/[0-1]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n textValue: string = '';\r\n\r\n valueHam: string = '-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n valueMam: string = '--:-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n valueSam: string = '--:--:-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n\r\n\r\n private _values: string;\r\n public get value(): string {\r\n return this._values;\r\n }\r\n public set value(v: string) {\r\n if (v === '' || v == null || v === '--:--:--' || v === '--:--' || v === '--' || v === this.valueSam || v === this.valueMam || v === this.valueHam) {\r\n this.clearDisabled = false;\r\n\r\n const old = this._values;\r\n switch (this.type) {\r\n case 'HHmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'HH':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'hh':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmssam':\r\n this.textValue = this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.textValue = this.valueMam;\r\n break;\r\n case 'hham':\r\n this.textValue = this.valueHam;\r\n break;\r\n }\r\n\r\n this._values = null;\r\n if (v !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: { hour: null, minute: null, second: null, time: null },\r\n oldValue: { time: old },\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n } else {\r\n this.clearDisabled = true;\r\n if (this._values && v) {\r\n const old = this._values;\r\n const ind1 = v.charAt(0);\r\n const ind2 = v.charAt(1);\r\n const ind3 = v.charAt(2);\r\n const ind4 = v.charAt(3);\r\n const ind5 = v.charAt(4);\r\n const ind6 = v.charAt(5);\r\n const ind7 = v.charAt(6);\r\n const ind8 = v.charAt(7);\r\n const ind9 = v.charAt(8);\r\n const ind10 = v.charAt(9);\r\n\r\n const indOld4 = old.charAt(9);\r\n const indOld7 = old.charAt(9);\r\n const indOld10 = old.charAt(9);\r\n\r\n // handle hhmmssAm\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n if (ind7 === '-' && ind8 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + '0' + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 8);\r\n this.cursorPosition = 8;\r\n }, 0);\r\n }\r\n if (indOld10 === '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n if (indOld7 === '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hham) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (indOld4 === '-' && this.timeType.mask === this.hham) {\r\n this.textValue = ind1 + ind2 + ind3 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 6);\r\n this.cursorPosition = 6;\r\n }, 0);\r\n }\r\n if (ind7 === '-' && ind8 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + '0' + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 9);\r\n this.cursorPosition = 9;\r\n }, 0);\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hhmm || this.timeType.mask === this.HHmm)) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && (this.timeType.mask === this.hhmm || this.timeType.mask === this.HHmm)) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hh || this.timeType.mask === this.HH)) {\r\n this.textValue = '0' + ind2;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n }\r\n if (v !== this._values) {\r\n const old = this._values;\r\n this.textValue = v;\r\n this._values = (v && v.indexOf('-') === -1) ? v : null;\r\n if (v.indexOf('-') === -1) {\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: {\r\n time: v,\r\n hour: Number(v[0] + v[1]),\r\n minute: v[3] && v[3] !== AXTranslator.get('dateTime.dayTime.a') && v[3] !== AXTranslator.get('dateTime.dayTime.p') ? Number(v[3] + v[4]) : null,\r\n second: v[6] && v[6] !== AXTranslator.get('dateTime.dayTime.a') && v[6] !== AXTranslator.get('dateTime.dayTime.p') ? Number(v[6] + v[7]) : null\r\n },\r\n oldValue: { time: old },\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n cursorPosition: number = 0;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n \r\n this.timeType = 'HHmm';\r\n }\r\n clearValue() {\r\n this.clear();\r\n this.handleInputFocus();\r\n }\r\n\r\n ngOnInit(): void {\r\n switch (this.timeType) {\r\n case 'HHmmss':\r\n this.type = 'HHmmss';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmmss,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.type = 'HHmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n case 'HH':\r\n this.type = 'HH';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HH,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--';\r\n break;\r\n case 'hhmmss':\r\n this.type = 'hhmmss';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmss,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.type = 'hhmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n case 'hh':\r\n this.type = 'hh';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hh,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--';\r\n break;\r\n case 'hhmmssam':\r\n this.type = 'hhmmssam';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmssam,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.type = 'hhmmam';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmam,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueMam;\r\n\r\n break;\r\n case 'hham':\r\n this.type = 'hham';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hham,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueHam;\r\n break;\r\n default:\r\n this.type = 'HHmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n\r\n }\r\n if (this.showCurentTime === true) {\r\n const hour = new Date().getHours() > 10 ? new Date().getHours() : '0' + new Date().getHours();\r\n let amHour: any;\r\n\r\n if (new Date().getHours() > 10) {\r\n if (new Date().getHours() > 12) {\r\n if (new Date().getHours() - 12 < 10) {\r\n amHour = '0' + (new Date().getHours() - 12);\r\n } else {\r\n amHour = new Date().getHours();\r\n }\r\n } else {\r\n amHour = new Date().getHours();\r\n }\r\n } else {\r\n amHour = '0' + new Date().getHours();\r\n }\r\n\r\n const min = new Date().getMinutes() > 9 ? new Date().getMinutes() : '0' + new Date().getMinutes();\r\n const sec = new Date().getSeconds() > 9 ? new Date().getSeconds() : '0' + new Date().getSeconds();\r\n if (this.type === 'hh' || this.type === 'hhmm' || this.type === 'hhmmss' || this.type === 'hhmmssam') {\r\n if (hour >= 12) {\r\n this.value = amHour + ':' + min + ':' + sec + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ':' + min + ':' + sec + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else if (this.type === 'hham') {\r\n if (hour >= 12) {\r\n this.value = amHour + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else if (this.type === 'hhmmam') {\r\n if (hour >= 12) {\r\n this.value = amHour + ':' + min + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ':' + min + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else {\r\n this.value = hour + ':' + min + ':' + sec;\r\n }\r\n }\r\n }\r\n\r\n onStartfocus() {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n\r\n handleInputFocus() {\r\n this.onStartfocus();\r\n this.input.nativeElement.focus();\r\n }\r\n handleInputBlur(e) {\r\n if (this.textValue.indexOf('-') !== -1) {\r\n switch (this.type) {\r\n case 'HHmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'HH':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'hh':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmssam':\r\n this.textValue = this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.textValue = this.valueMam;\r\n break;\r\n case 'hham':\r\n this.textValue = this.valueHam;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n handleKeyPress(event: any) {\r\n const inputChar = String.fromCharCode(event.charCode);\r\n const firstChar = this.textValue.charAt(0);\r\n const secondChar = this.textValue.charAt(1);\r\n\r\n setTimeout(() => {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n // this.cursorPosition += 1 ;\r\n }\r\n }, 0);\r\n\r\n if (firstChar === '2') {\r\n if (secondChar === '' || this.textValue.charAt(1) >= '4' || this.cursorPosition < 3) {\r\n if (inputChar >= '4') {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (firstChar === '1') {\r\n if (secondChar === '' || this.textValue.charAt(1) >= '3' || this.cursorPosition < 3) {\r\n if (inputChar >= '3') {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n if (inputChar === '-') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent) {\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n // up & down button\r\n if (event.key === 'ArrowUp') {\r\n this.setCaret();\r\n }\r\n if (event.key === 'ArrowDown') {\r\n this.setCaret();\r\n }\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n return false;\r\n }\r\n\r\n // left & right Button\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n // home button\r\n if (event.key === 'Home') {\r\n this.cursorPosition = 0;\r\n }\r\n\r\n // end button\r\n if (event.key === 'End') {\r\n if (this.timeType.mask === this.hhmmssam || this.timeType.mask === this.hhmmam || this.timeType.mask === this.hham) {\r\n if (this.timeType.mask === this.hhmmssam) {\r\n this.cursorPosition = 9;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n this.cursorPosition = 6;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n this.cursorPosition = 3;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n } else {\r\n this.cursorPosition = this.textValue.length;\r\n }\r\n }\r\n\r\n // backspace Control\r\n if (event.key === 'Backspace') {\r\n const ind1 = this.textValue.charAt(0);\r\n const ind2 = this.textValue.charAt(1);\r\n const ind3 = this.textValue.charAt(2);\r\n const ind4 = this.textValue.charAt(3);\r\n const ind5 = this.textValue.charAt(4);\r\n const ind6 = this.textValue.charAt(5);\r\n const ind7 = this.textValue.charAt(6);\r\n const ind8 = this.textValue.charAt(7);\r\n const ind9 = this.textValue.charAt(8);\r\n const ind10 = this.textValue.charAt(9);\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (ind10 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (ind7 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (ind4 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n\r\n if (this.textValue.length <= 0) {\r\n this.cursorPosition = 0;\r\n } else {\r\n this.cursorPosition -= 1;\r\n }\r\n }\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'End') {\r\n if (this.timeType.mask === this.hhmmssam || this.timeType.mask === this.hhmmam || this.timeType.mask === this.hham) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n } else {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }\r\n }\r\n\r\n let newValue = this.textValue;\r\n\r\n const ind1 = newValue.charAt(0);\r\n const ind2 = newValue.charAt(1);\r\n const ind3 = this.textValue.charAt(2);\r\n const ind4 = this.textValue.charAt(3);\r\n const ind5 = this.textValue.charAt(4);\r\n const ind6 = this.textValue.charAt(5);\r\n const ind7 = this.textValue.charAt(6);\r\n const ind8 = this.textValue.charAt(7);\r\n const ind9 = this.textValue.charAt(8);\r\n const ind10 = this.textValue.charAt(9);\r\n const ind11 = this.textValue.charAt(10);\r\n\r\n // up key\r\n if (event.key === 'ArrowUp') {\r\n // hour\r\n if (this.cursorPosition <= 2) {\r\n const hourind = ind1 + ind2;\r\n const newHour = +hourind + 1;\r\n newValue = newHour.toString();\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 12) {\r\n newValue = '01';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n } else {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 23) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n }\r\n const afterHourind = ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const hour = newValue.toString() + afterHourind;\r\n this.textValue = hour;\r\n }\r\n // minute\r\n if (this.cursorPosition >= 3 && this.cursorPosition <= 5) {\r\n const hourind = ind4 + ind5;\r\n const newHour = +hourind + 1;\r\n\r\n newValue = newHour.toString();\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind4 !== '-' && hourind === ind4 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind5 !== '-' && hourind === '-' + ind5) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 59) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const minute = beforeHourind + newValue.toString() + afterHourind;\r\n this.textValue = minute;\r\n }\r\n\r\n // second\r\n if (this.cursorPosition >= 6 && this.cursorPosition <= 8) {\r\n const secondind = ind7 + ind8;\r\n const newSecond = +secondind + 1;\r\n\r\n newValue = newSecond.toString();\r\n if (secondind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind7 !== '-' && secondind === ind7 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind8 !== '-' && secondind === '-' + ind8) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 59) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind9 + ind10 + ind11;\r\n const second = beforeHourind + newValue.toString() + afterHourind;\r\n this.textValue = second;\r\n }\r\n\r\n // type am/PM\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (this.cursorPosition > 8) {\r\n let typeind = ind10.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9;\r\n const afterHourind = ind11;\r\n\r\n if (ind10 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind10 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (this.cursorPosition >= 6) {\r\n let typeind = ind7.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind8;\r\n\r\n if (ind7 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind7 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (this.cursorPosition >= 3) {\r\n let typeind2 = ind4.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind5;\r\n\r\n if (ind4 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind4 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind2 + afterHourind;\r\n }\r\n }\r\n }\r\n\r\n // key down\r\n if (event.key === 'ArrowDown') {\r\n // hour\r\n if (this.cursorPosition <= 2) {\r\n const hourind = ind1 + ind2;\r\n const newHour = +hourind - 1;\r\n\r\n newValue = newHour.toString();\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue < 1) {\r\n newValue = '12';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n } else {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '23';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n }\r\n const afterHourIndex = ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const hour = newValue.toString() + afterHourIndex;\r\n this.textValue = hour;\r\n }\r\n // minute\r\n if (this.cursorPosition >= 3 && this.cursorPosition <= 5) {\r\n const minuteind = ind4 + ind5;\r\n const newMinute = +minuteind - 1;\r\n\r\n newValue = newMinute.toString();\r\n if (minuteind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind4 !== '-' && minuteind === ind4 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind5 !== '-' && minuteind === '-' + ind5) {\r\n newValue = '0';\r\n }\r\n if (minuteind === '--') {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '59';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeMinuteIndex = ind1 + ind2 + ind3;\r\n const afterMinuteIndex = ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const minute = beforeMinuteIndex + newValue.toString() + afterMinuteIndex;\r\n this.textValue = minute;\r\n }\r\n\r\n // second\r\n if (this.cursorPosition >= 6 && this.cursorPosition <= 8) {\r\n const secondIndex = ind7 + ind8;\r\n const newSecond = +secondIndex - 1;\r\n\r\n newValue = newSecond.toString();\r\n if (secondIndex === '--') {\r\n newValue = '0';\r\n }\r\n if (ind7 !== '-' && secondIndex === ind7 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind8 !== '-' && secondIndex === '-' + ind8) {\r\n newValue = '0';\r\n }\r\n if (secondIndex === '--') {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '59';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforesecondIndex = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const aftersecondIndex = ind9 + ind10 + ind11;\r\n const second = beforesecondIndex + newValue.toString() + aftersecondIndex;\r\n this.textValue = second;\r\n }\r\n\r\n // type\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (this.cursorPosition > 8) {\r\n let typeind = ind10.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9;\r\n const afterHourind = ind11;\r\n\r\n if (ind10 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind10 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (this.cursorPosition >= 6) {\r\n let typeind = ind7.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind8;\r\n\r\n if (ind7 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind7 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (this.cursorPosition >= 3) {\r\n let typeind2 = ind4.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind5;\r\n //TO DO this is wrong check index\r\n if (ind4 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind4 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind2 + afterHourind;\r\n }\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n if (event.key === 'Delete') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleClick(event: KeyboardEvent) {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n doGetCaretPosition(ctrl) {\r\n let CaretPos = 0;\r\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\r\n CaretPos = ctrl.selectionStart;\r\n return CaretPos;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else if (ctrl.createTextRange) {\r\n const range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTimePickerComponent } from './time-picker.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTimePickerComponent],\r\n imports: [ CommonModule, FormsModule, AXButtonModule, TextMaskModule ],\r\n exports: [AXTimePickerComponent],\r\n providers: [],\r\n})\r\nexport class AXTimePickerModule {}","import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXDataEvent, AXHtmlEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXContextMenuItemClickEvent, AXContextMenuPromiseFunction, AXContextMenuFunction } from '../context-menu/context-menu.directive';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\nexport class AXTreeSideMenuNode {\r\n children: AXTreeSideMenuNode[];\r\n itemData: AXTreeSideMenuItemData = new AXTreeSideMenuItemData();\r\n parent: AXTreeSideMenuNode;\r\n}\r\n\r\nexport class AXTreeSideMenuItemData {\r\n selected: boolean;\r\n key: string;\r\n disabled: boolean;\r\n open: boolean;\r\n hasChild: boolean;\r\n item: any;\r\n}\r\n\r\nexport class AXTreeSideMenuItemMovedEvent {\r\n source: AXTreeSideMenuNode;\r\n target: AXTreeSideMenuNode;\r\n resolve: (value: boolean) => void;\r\n}\r\n\r\nexport class AXTreeSideMenuSelectionChangedEvent extends AXValueEvent<AXTreeSideMenuNode> {\r\n component: AXTreeSideMenuComponent;\r\n}\r\n\r\nexport class AXTreeSideMenuItemClick extends AXHtmlEvent<MouseEvent> {\r\n component: AXTreeSideMenuComponent;\r\n item: any;\r\n flag: boolean;\r\n cancel?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tree-side-menu',\r\n templateUrl: './tree-side-menu.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTreeSideMenuComponent extends AXBaseComponent {\r\n @ContentChild(TemplateRef, { static: true })\r\n nodeTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n cssClass: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionLevel: 'all' | 'nodes' | 'parents' = 'all';\r\n\r\n @Input()\r\n selectedFieldName: string = null;\r\n\r\n @Input()\r\n selectNodesRecursive: boolean = true;\r\n\r\n @Input()\r\n seletedKeyFields: any[] = [];\r\n\r\n @Input()\r\n keyField: string = 'id';\r\n\r\n @Input()\r\n textField: string = 'title';\r\n\r\n @Input()\r\n hasChildField: string = 'child';\r\n\r\n @Input()\r\n bordered: boolean = false;\r\n\r\n @Input()\r\n lazyLoading: boolean = true;\r\n\r\n @Input()\r\n allowDrag: boolean = false;\r\n\r\n @Input()\r\n size: 'md' | 'sm' = 'md';\r\n\r\n @Input()\r\n iconStart: boolean = true;\r\n\r\n @Input()\r\n closeIconName: string = 'fal fa-plus';\r\n\r\n @Input()\r\n openIconName: string = 'fal fa-minus';\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXTreeSideMenuSelectionChangedEvent> = new EventEmitter<AXTreeSideMenuSelectionChangedEvent>();\r\n\r\n @Output()\r\n onItemOpening: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXTreeSideMenuItemClick> = new EventEmitter<AXTreeSideMenuItemClick>();\r\n\r\n @Output()\r\n onItemClosing: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemMoved: EventEmitter<AXTreeSideMenuItemMovedEvent> = new EventEmitter<AXTreeSideMenuItemMovedEvent>();\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n showSelectBox: boolean = false;\r\n loading: boolean = false;\r\n list: any[] = [];\r\n itemRow: any;\r\n selectedItems: any[] = [];\r\n selectedParents: any[] = [];\r\n loadAllChildren: boolean = false;\r\n listLoad: any[] = [];\r\n itemDrop: any;\r\n itemDrag: any;\r\n validDrop: boolean = true;\r\n lockedDrag: boolean = false;\r\n childField: string = 'childeren';\r\n showContextMenu: boolean = false;\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n handleOnContextMenuItem(e: AXContextMenuItemClickEvent) {\r\n this.onContextMenuItemClick.emit(e);\r\n }\r\n\r\n refresh() {\r\n this.list = [];\r\n this._contentDataSource.fetch(null);\r\n }\r\n\r\n internalSelectItem(item, userChange: boolean = true) {\r\n if (item[this.hasChildField] === false || this.selectionMode === 'single') {\r\n item.select = !item.select;\r\n if (item.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (item.select === true) {\r\n if (this.selectionMode === 'single') {\r\n this.selectedItems.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n } else {\r\n item.select = !item.select;\r\n\r\n if (item.parentNode && this.selectionMode === 'multiple') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (this.selectionMode === 'multiple') {\r\n this.changeChildSelect(item, item.select);\r\n }\r\n\r\n if (item.select == true) {\r\n if (this.selectionMode === 'multiple') {\r\n this.selectedParents.push(item);\r\n } else {\r\n this.selectedParents.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedParents = [];\r\n this.selectedParents.push(item);\r\n }\r\n } else {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n }\r\n if (userChange) {\r\n this.selectionChanged.emit({\r\n component: this,\r\n value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n private makeNode(item, addChildren: boolean = true) {\r\n const node: AXTreeSideMenuNode = new AXTreeSideMenuNode();\r\n if (addChildren) {\r\n node.children = item[this.childField] === undefined ? [] : item[this.childField]?.map((m) => this.makeNode(m));\r\n }\r\n node.itemData.disabled = item.disabled === true ? item.disabled : false;\r\n node.itemData.open = item.open === true ? item.open : false;\r\n node.itemData.key = item[this.keyField];\r\n\r\n const c = [];\r\n let i = 0;\r\n for (var k in item) {\r\n i = i + 1;\r\n if (\r\n k != 'select' &&\r\n k != 'hasChild' &&\r\n k != 'loading' &&\r\n k != 'requestId' &&\r\n k != 'disabled' &&\r\n k != 'open' &&\r\n k != 'parentNode' &&\r\n k != 'toggle' &&\r\n k != 'loaded' &&\r\n k != 'indeterminate' &&\r\n k != this.childField\r\n ) {\r\n //c.push({ k: item[k] });\r\n c[k] = item[k];\r\n }\r\n }\r\n node.itemData.item = c; //TO DO\r\n node.itemData.selected = item.select === true ? item.select : false;\r\n node.itemData.hasChild = item[this.hasChildField];\r\n node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);\r\n return node;\r\n }\r\n\r\n private changeChildSelect(item, s) {\r\n if (this.selectNodesRecursive) {\r\n item.select = s;\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((elm) => {\r\n if (elm[this.hasChildField] === true) {\r\n elm.select = s;\r\n\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedParents.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n\r\n this.changeChildSelect(elm, s);\r\n } else {\r\n elm.select = s;\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedItems.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n }\r\n });\r\n } else {\r\n item.select = s;\r\n }\r\n }\r\n }\r\n\r\n private changeParentSelect(item) {\r\n if (this.selectNodesRecursive) {\r\n let allselect = true;\r\n let alldeselect = true;\r\n let oneselect = false;\r\n let isindeterminate = false;\r\n\r\n if (item[this.childField]) {\r\n for (let index = 0; index < item[this.childField].length; index++) {\r\n if (item[this.childField][index].select === true) {\r\n alldeselect = false;\r\n oneselect = true;\r\n }\r\n if (item[this.childField][index].select === false || item[this.childField][index].select === undefined) {\r\n allselect = false;\r\n }\r\n if (item[this.childField][index].select === null) {\r\n isindeterminate = true;\r\n alldeselect = false;\r\n oneselect = true;\r\n allselect = false;\r\n }\r\n }\r\n }\r\n\r\n if (oneselect || (isindeterminate && !allselect)) {\r\n item.select = null;\r\n }\r\n if (allselect === true) {\r\n item.select = true;\r\n }\r\n if (alldeselect === true) {\r\n item.select = false;\r\n }\r\n if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onItemClick.subscribe((data: AXTreeSideMenuItemClick) => {\r\n if (!data.cancel) {\r\n this.toggleNode(data.item, data.flag);\r\n }\r\n });\r\n }\r\n\r\n itemdbClick(e: MouseEvent, item) {\r\n if (this.selectionMode == 'single') {\r\n this.handleOnNodeClick(e, item, true);\r\n }\r\n }\r\n\r\n handleOnNodeClick(e: MouseEvent, item, flag = false) {\r\n this.onItemClick.emit({\r\n component: this,\r\n htmlEvent: e,\r\n item,\r\n flag\r\n });\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n toggleNode(item, flag = false) {\r\n //item[this.hasChildField] === false &&\r\n if (this.selectionMode === 'single' && !flag) {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n } else {\r\n if (item[this.hasChildField] == true) {\r\n item.toggle = !item.toggle;\r\n }\r\n\r\n if (this.selectionMode === 'single') {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n }\r\n\r\n if (item[this.hasChildField] === true && item.loaded !== true && this.lazyLoading) {\r\n this.itemRow = item;\r\n const uid = Math.floor(Math.random() * 100000000);\r\n item.requestId = uid;\r\n this.listLoad.push(item);\r\n this._contentDataSource.fetch(item);\r\n this.showLoading(this.itemRow);\r\n }\r\n if (item.toggle && item[this.hasChildField] === true) {\r\n item.open = true;\r\n this.onItemOpening.emit(this.makeNode(item));\r\n } else if (!item.toggle && item[this.hasChildField] === true) {\r\n item.open = false;\r\n this.onItemClosing.emit(this.makeNode(item));\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._contentDataSource.fetch(null);\r\n this._contentDataSource.onDataReceived.subscribe((_data) => {\r\n if (this.list.length === 0) {\r\n this.hideLoading(null);\r\n this.list = _data.data.result;\r\n\r\n this.list.forEach((el) => {\r\n el.select = false;\r\n\r\n if (this.selectionLevel == 'nodes' && el[this.hasChildField] == true) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && el[this.hasChildField] == false) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(el[this.keyField])) {\r\n if (el[this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n } else {\r\n this.selectItem(el);\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (el[this.hasChildField] == true && el[this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n } else if (el[this.selectedFieldName] == true) {\r\n this.selectItem(el);\r\n }\r\n }\r\n });\r\n } else {\r\n this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];\r\n this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);\r\n if (this.itemRow !== undefined) {\r\n this.hideLoading(this.itemRow);\r\n const result = _data.data.result;\r\n\r\n if (this.list.length !== 0) {\r\n if (this.itemRow[this.childField] && this.itemRow[this.childField].length > 0) {\r\n result.forEach((el) => {\r\n this.itemRow[this.childField][this.itemRow[this.childField].length] = el;\r\n });\r\n } else {\r\n this.itemRow[this.childField] = result;\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n if (this.selectionLevel == 'nodes' && result[i][this.hasChildField] == true) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && result[i][this.hasChildField] == false) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n if (this.selectionMode !== 'single' && this.selectNodesRecursive) {\r\n result[i].select = this.itemRow.select === (undefined || null) ? false : this.itemRow.select;\r\n\r\n if (this.itemRow.select === true && this.selectionMode == 'multiple' && result[i][this.hasChildField] === false) {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);\r\n this.selectedItems.push(result[i]);\r\n }\r\n } else {\r\n result[i].select = false;\r\n }\r\n result[i].parentNode = this.itemRow;\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(result[i][this.keyField])) {\r\n if (result[i][this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n } else {\r\n this.selectItem(result[i]);\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (result[i][this.hasChildField] == true && result[i][this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n } else if (result[i][this.selectedFieldName] == true) {\r\n this.selectItem(result[i]);\r\n }\r\n }\r\n }\r\n\r\n this.itemRow.loaded = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectionMode !== 'single') {\r\n this.showSelectBox = true;\r\n }\r\n this.showContextMenu = true;\r\n }\r\n\r\n // onItemClick(e, v) {\r\n\r\n // }\r\n\r\n onDragStart(e: Event, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrag = v;\r\n this.onItemDrag.emit(v);\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n onDragEnd(e, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrop = v;\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n drop(e) {\r\n // this.onItemDrop.emit(this.itemDrop);\r\n if (!this.lockedDrag) {\r\n this.validDrop = true;\r\n this.sameChilde(this.itemDrag, this.itemDrop);\r\n if (this.validDrop && this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] && this.itemDrag.parentNode !== this.itemDrop) {\r\n const movedEvent: AXTreeSideMenuItemMovedEvent = new AXTreeSideMenuItemMovedEvent();\r\n movedEvent.source = this.makeNode(this.itemDrag);\r\n movedEvent.target = this.makeNode(this.itemDrop);\r\n this.lockedDrag = true;\r\n this.showLoading(this.itemDrag);\r\n this.showLoading(this.itemDrop);\r\n movedEvent.resolve = (value: boolean) => {\r\n this.hideLoading(this.itemDrag);\r\n this.hideLoading(this.itemDrop);\r\n if (value) {\r\n this.dragDropItem(this.itemDrag, this.itemDrop);\r\n } else {\r\n this.lockedDrag = false;\r\n }\r\n };\r\n this.onItemMoved.emit(movedEvent);\r\n }\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n sameChilde(parent, child) {\r\n if (parent[this.childField] && parent[this.childField].length > 0) {\r\n for (let index = 0; index < parent[this.childField].length; index++) {\r\n if (parent[this.childField][index][this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n if (parent[this.childField][index][this.childField] && parent[this.childField][index][this.childField].length > 0) {\r\n this.sameChilde(parent[this.childField][index], child);\r\n }\r\n }\r\n } else if (parent[this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n }\r\n\r\n dragDropItem(itemChild, itemParent) {\r\n if (this.selectionLevel == 'nodes') {\r\n itemParent.disabledCheckBox = true;\r\n }\r\n\r\n if (itemChild.parentNode) {\r\n itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n } else {\r\n this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n }\r\n itemChild.parentNode = itemParent;\r\n if (itemParent[this.childField] && itemParent[this.childField].length > 0) {\r\n itemParent[this.childField][itemParent[this.childField].length] = itemChild;\r\n } else {\r\n itemParent[this.childField] = [];\r\n itemParent[this.childField][0] = itemChild;\r\n if (itemParent[this.hasChildField] === true) {\r\n this.toggleNode(itemParent);\r\n } else {\r\n itemParent.toggle = !itemParent.toggle;\r\n itemParent.loaded = true;\r\n }\r\n itemParent[this.hasChildField] = true;\r\n }\r\n if (itemChild.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(itemChild.parentNode);\r\n }\r\n this.lockedDrag = false;\r\n }\r\n\r\n private listChange(field, value) {\r\n for (let index = 0; index < this.list.length; index++) {\r\n this.changeChiled(this.list[index], field, value);\r\n }\r\n this.loadAllChildren = false;\r\n }\r\n\r\n private changeChiled(item, field, value) {\r\n if (field === 'toggle' && (item.loaded === false || item.loaded === undefined)) {\r\n if (this.loadAllChildren === true) {\r\n this.toggleNode(item);\r\n item[field] = value;\r\n }\r\n } else {\r\n item[field] = value;\r\n if (field === 'select' && item[this.hasChildField] === false && value === true) {\r\n this.selectedItems.push(item);\r\n }\r\n }\r\n if (field === 'select') {\r\n item.indeterminate = false;\r\n }\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((element) => {\r\n this.changeChiled(element, field, value);\r\n });\r\n }\r\n }\r\n\r\n private showLoading(item): void {\r\n item.loading = true;\r\n }\r\n\r\n private hideLoading(item): void {\r\n if (item != null) {\r\n item.loading = false;\r\n }\r\n }\r\n\r\n public openAll(loadAll: boolean = false) {\r\n // if (loadAll) {\r\n // this.loadAllChildren = true;\r\n // this.listChange('toggle', true);\r\n //} else {\r\n this.listChange('toggle', true);\r\n // }\r\n }\r\n\r\n public selectItem(item) {\r\n if (item['select'] != true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n public open(item) {\r\n if (item['toggle'] !== true) {\r\n this.toggleNode(item, true);\r\n }\r\n }\r\n\r\n public scrolIntoView(item) {\r\n let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);\r\n element.scrollIntoView();\r\n }\r\n\r\n public closeAll() {\r\n this.listChange('toggle', false);\r\n }\r\n\r\n public selectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', true);\r\n }\r\n }\r\n\r\n public unSelectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', false);\r\n }\r\n this.selectedItems = [];\r\n }\r\n\r\n public getSelectedNodes(): AXTreeSideMenuNode[] {\r\n const selectItemsNode = [];\r\n this.selectedItems.forEach((e) => {\r\n selectItemsNode.push(this.makeNode(e));\r\n });\r\n return selectItemsNode;\r\n }\r\n\r\n public getSelectedParents(): AXTreeSideMenuNode[] {\r\n const selectItemsParent = [];\r\n this.selectedParents.forEach((e) => {\r\n selectItemsParent.push(this.makeNode(e));\r\n });\r\n return selectItemsParent;\r\n }\r\n\r\n getParentsId(item) {\r\n let keyFields = [];\r\n keyFields.push(item[this.keyField]);\r\n if (item.parentNode) {\r\n keyFields.push(...this.getParentsId(item.parentNode));\r\n }\r\n return keyFields;\r\n }\r\n\r\n public getSelectedKeyFields() {\r\n let keyFields = [];\r\n this.selectedItems.forEach((elm) => {\r\n var Ids = this.getParentsId(elm);\r\n if (Ids) {\r\n keyFields.push(Ids);\r\n }\r\n });\r\n return keyFields;\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AXTreeSideMenuComponent } from \"./tree-side-menu.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXDataSourceModule } from \"../data-source/datasource.module\";\r\nimport { AXCheckBoxModule } from \"../checkbox/checkbox.module\";\r\nimport { AXContextMenuModule } from \"../context-menu/context-menu.module\";\r\n\r\n@NgModule({\r\n declarations: [AXTreeSideMenuComponent],\r\n imports: [\r\n AXDataSourceModule,\r\n CommonModule,\r\n AXCheckBoxModule,\r\n AXContextMenuModule,\r\n ],\r\n exports: [AXTreeSideMenuComponent],\r\n providers: [],\r\n})\r\nexport class AXTreeSideMenuModule {}\r\n","import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXDataEvent, AXHtmlEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXContextMenuItemClickEvent, AXContextMenuPromiseFunction, AXContextMenuFunction } from '../context-menu/context-menu.directive';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\nexport class AXTreeViewNode {\r\n children: AXTreeViewNode[];\r\n itemData: AXTreeViewItemData = new AXTreeViewItemData();\r\n parent: AXTreeViewNode;\r\n}\r\n\r\nexport class AXTreeViewItemData {\r\n selected: boolean;\r\n indeterminate: boolean;\r\n key: string;\r\n disabled: boolean;\r\n open: boolean;\r\n hasChild: boolean;\r\n item: any;\r\n}\r\n\r\nexport class AXTreeViewItemMovedEvent {\r\n source: AXTreeViewNode;\r\n target: AXTreeViewNode;\r\n resolve: (value: boolean) => void;\r\n}\r\n\r\nexport class AXTreeViewselectionChangedEvent extends AXValueEvent<AXTreeViewNode> {\r\n component: AXTreeViewComponent;\r\n}\r\n\r\nexport class AXTreeViewseletedKeyFieldsChangedEvent extends AXValueEvent<AXTreeViewNode> {\r\n component: AXTreeViewComponent;\r\n}\r\n\r\nexport class AXTreeViewItemClick extends AXHtmlEvent<MouseEvent> {\r\n component: AXTreeViewComponent;\r\n item: any;\r\n flag: boolean;\r\n cancel?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tree-view',\r\n templateUrl: './tree-view.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTreeViewComponent extends AXBaseComponent {\r\n @ContentChild(TemplateRef, { static: true })\r\n nodeTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionLevel: 'all' | 'nodes' | 'parents' = 'all';\r\n\r\n // user can set only one of this /selectedFieldName or /seletedKeyFields\r\n //seletedKeyFields set id of nodes and parents\r\n //selectedFieldName set name of fields that set selectes\r\n @Input()\r\n selectedFieldName: string = null;\r\n\r\n // @Input()\r\n // selectNodesRecursive: 'all' | 'parents' | 'childs' | 'none' = 'all'; //leaf\r\n\r\n @Input()\r\n checkParents: boolean = true;\r\n\r\n @Input()\r\n checkChilds: boolean = true;\r\n\r\n @Input()\r\n seletedKeyFields: any[] = [];\r\n\r\n @Input()\r\n keyField: string = 'id';\r\n\r\n @Input()\r\n hasChildField: string = 'child';\r\n\r\n @Input()\r\n bordered: boolean = false;\r\n\r\n @Input()\r\n lazyLoading: boolean = true;\r\n\r\n @Input()\r\n allowDrag: boolean = false;\r\n\r\n @Input()\r\n size: 'md' | 'sm' = 'md';\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXTreeViewselectionChangedEvent> = new EventEmitter<AXTreeViewselectionChangedEvent>();\r\n\r\n @Output()\r\n seletedKeyFieldsChanged: EventEmitter<AXTreeViewseletedKeyFieldsChangedEvent> = new EventEmitter<AXTreeViewselectionChangedEvent>();\r\n\r\n @Output()\r\n onItemOpening: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXTreeViewItemClick> = new EventEmitter<AXTreeViewItemClick>();\r\n\r\n @Output()\r\n onItemClosing: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemMoved: EventEmitter<AXTreeViewItemMovedEvent> = new EventEmitter<AXTreeViewItemMovedEvent>();\r\n\r\n @Input()\r\n selectableField: string = '';\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n showSelectBox: boolean = false;\r\n loading: boolean = false;\r\n list: any[] = [];\r\n itemRow: any;\r\n selectedItems: any[] = [];\r\n selectedParents: any[] = [];\r\n loadAllChildren: boolean = false;\r\n listLoad: any[] = [];\r\n itemDrop: any;\r\n itemDrag: any;\r\n validDrop: boolean = true;\r\n lockedDrag: boolean = false;\r\n childField: string = 'childeren';\r\n showContextMenu: boolean = false;\r\n isSelectedItem: boolean = false;\r\n loced: boolean = false;\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n handleOnContextMenuItem(e: AXContextMenuItemClickEvent) {\r\n this.onContextMenuItemClick.emit(e);\r\n }\r\n\r\n refresh() {\r\n this.list = [];\r\n this._contentDataSource.fetch(null);\r\n }\r\n\r\n internalSelectItem(item, userChange: boolean = true) {\r\n if (item[this.hasChildField] === false || this.selectionMode === 'single') {\r\n item.select = !item.select;\r\n if (item.parentNode && this.selectionMode !== 'single' && this.checkParents == true) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (item.select === true) {\r\n if (this.selectionMode === 'single') {\r\n this.selectedItems.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n } else {\r\n item.select = !item.select;\r\n\r\n if (item.parentNode && this.selectionMode === 'multiple' && this.checkParents == true) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (this.selectionMode === 'multiple' && this.checkChilds == true) {\r\n this.changeChildSelect(item, item.select);\r\n }\r\n\r\n if (item.select == true) {\r\n if (this.selectionMode === 'multiple') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n this.selectedParents.push(item);\r\n } else {\r\n this.selectedParents.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedParents = [];\r\n this.selectedParents.push(item);\r\n }\r\n } else {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n }\r\n if (userChange) {\r\n this.selectionChanged.emit({\r\n component: this,\r\n value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n private makeNode(item, addChildren: boolean = true) {\r\n const node: AXTreeViewNode = new AXTreeViewNode();\r\n if (addChildren) {\r\n node.children = item[this.childField] === undefined ? [] : item[this.childField]?.map((m) => this.makeNode(m));\r\n }\r\n node.itemData.disabled = item.disabled === true ? item.disabled : false;\r\n node.itemData.open = item.open === true ? item.open : false;\r\n node.itemData.key = item[this.keyField];\r\n\r\n const c = [];\r\n let i = 0;\r\n for (var k in item) {\r\n i = i + 1;\r\n if (\r\n k != 'select' &&\r\n k != 'hasChild' &&\r\n k != 'loading' &&\r\n k != 'requestId' &&\r\n k != 'disabled' &&\r\n k != 'open' &&\r\n k != 'parentNode' &&\r\n k != 'toggle' &&\r\n k != 'loaded' &&\r\n k != 'indeterminate' &&\r\n k != this.childField\r\n ) {\r\n //c.push({ k: item[k] });\r\n c[k] = item[k];\r\n }\r\n }\r\n\r\n node.itemData.item = c; //TO DO\r\n node.itemData.selected = item.select === true ? item.select : false;\r\n node.itemData.indeterminate = item.select === null ? true : false;\r\n node.itemData.hasChild = item[this.hasChildField];\r\n node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);\r\n if (node.parent != null) {\r\n (node.parent as any).selectParent = () => {\r\n if (item.parentNode['select'] != true) {\r\n this.internalSelectItem(item.parentNode, true);\r\n }\r\n };\r\n (node.parent as any).unSelectParent = () => {\r\n if (item.parentNode['select'] == true) {\r\n this.internalSelectItem(item.parentNode, true);\r\n }\r\n };\r\n }\r\n if (node.children != null && node.children.length > 0) {\r\n (node.children as any).selectChilds = () => {\r\n item.childeren.forEach((element) => {\r\n if (element['select'] != true) {\r\n this.internalSelectItem(element, true);\r\n }\r\n });\r\n };\r\n (node.children as any).unSelectChilds = () => {\r\n item.childeren.forEach((element) => {\r\n if (element['select'] == true) {\r\n this.internalSelectItem(element, true);\r\n }\r\n });\r\n };\r\n }\r\n return node;\r\n }\r\n\r\n private changeChildSelect(item, s) {\r\n // if (this.selectNodesRecursive == 'all' || this.selectNodesRecursive == 'childs') {\r\n if (this.checkChilds == true) {\r\n item.select = s;\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((elm) => {\r\n if (elm[this.hasChildField] === true) {\r\n elm.select = s;\r\n\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedParents.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n this.changeChildSelect(elm, s);\r\n } else {\r\n elm.select = s;\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedItems.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n }\r\n });\r\n } else {\r\n item.select = s;\r\n }\r\n }\r\n }\r\n\r\n private changeParentSelect(item) {\r\n //if (this.selectNodesRecursive == 'all' || this.selectNodesRecursive == 'parents') {\r\n if (this.checkParents) {\r\n let allselect = true;\r\n let alldeselect = true;\r\n let oneselect = false;\r\n let isindeterminate = false;\r\n\r\n if (item[this.childField]) {\r\n for (let index = 0; index < item[this.childField].length; index++) {\r\n if (item[this.childField][index].select === true) {\r\n alldeselect = false;\r\n oneselect = true;\r\n }\r\n if (item[this.childField][index].select === false || item[this.childField][index].select === undefined) {\r\n allselect = false;\r\n }\r\n if (item[this.childField][index].select === null) {\r\n isindeterminate = true;\r\n alldeselect = false;\r\n oneselect = true;\r\n allselect = false;\r\n }\r\n }\r\n }\r\n\r\n if (oneselect || (isindeterminate && !allselect)) {\r\n item.select = null;\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n this.selectedParents.push(item);\r\n }\r\n if (allselect === true) {\r\n item.select = true;\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n this.selectedParents.push(item);\r\n }\r\n if (alldeselect === true) {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n item.select = false;\r\n }\r\n if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onItemClick.subscribe((data: AXTreeViewItemClick) => {\r\n if (!data.cancel) {\r\n this.toggleNode(data.item, data.flag);\r\n }\r\n });\r\n }\r\n\r\n itemdbClick(e: MouseEvent, item) {\r\n if (this.selectionMode == 'single') {\r\n this.handleOnNodeClick(e, item, true);\r\n }\r\n }\r\n\r\n handleOnNodeClick(e: MouseEvent, item, flag = false) {\r\n // this.internalSelectItem(item);\r\n this.onItemClick.emit({\r\n component: this,\r\n htmlEvent: e,\r\n item,\r\n flag\r\n });\r\n }\r\n\r\n nodeClick(item) {\r\n if (item[this.hasChildField] == true) {\r\n this.toggleNode(item, true);\r\n } else {\r\n this.internalSelectItem(item, true);\r\n }\r\n }\r\n\r\n toggleNode(item, flag = false) {\r\n //item[this.hasChildField] === false &&\r\n if (this.selectionMode === 'single' && !flag) {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n } else {\r\n item.toggle = !item.toggle;\r\n if (this.selectionMode === 'single') {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n }\r\n\r\n if (item[this.hasChildField] === true && item.loaded !== true && this.lazyLoading) {\r\n this.itemRow = item;\r\n const uid = Math.floor(Math.random() * 100000000);\r\n item.requestId = uid;\r\n this.listLoad.push(item);\r\n this._contentDataSource.fetch(item);\r\n this.showLoading(this.itemRow);\r\n }\r\n if (item.toggle && item[this.hasChildField] === true) {\r\n item.open = true;\r\n this.onItemOpening.emit(this.makeNode(item));\r\n } else if (!item.toggle && item[this.hasChildField] === true) {\r\n item.open = false;\r\n this.onItemClosing.emit(this.makeNode(item));\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._contentDataSource.fetch(null);\r\n this._contentDataSource.onDataReceived.subscribe((_data) => {\r\n if (this.list.length === 0) {\r\n this.hideLoading(null);\r\n this.list = _data.data.result;\r\n\r\n this.list.forEach((el) => {\r\n el.disabledCheckBox = this.selectableField != '' ? (el[this.selectableField] ? el[this.selectableField] : false) : false;\r\n el.select = false;\r\n\r\n if (this.selectionLevel == 'nodes' && el[this.hasChildField] == true) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && el[this.hasChildField] == false) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(el[this.keyField])) {\r\n if (el[this.hasChildField] == true) {\r\n if ((this.checkParents == false && this.checkChilds == false) || this.checkChilds == false) {\r\n //select parent when check child and check parent is false TODO check this Action\r\n this.selectItem(el);\r\n }\r\n\r\n this.open(el);\r\n } else {\r\n this.selectItem(el);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (el[this.hasChildField] == true && el[this.selectedFieldName] == true) {\r\n if ((this.checkParents == false && this.checkChilds == false) || this.checkChilds == false) {\r\n //select parent when check child and check parent is false TODO check this Action\r\n this.selectItem(el);\r\n }\r\n this.open(el);\r\n } else if (el[this.selectedFieldName] == true) {\r\n this.selectItem(el);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else {\r\n this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];\r\n this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);\r\n this.itemRow.loaded = true;\r\n if (this.itemRow !== undefined) {\r\n this.hideLoading(this.itemRow);\r\n const result = _data.data.result;\r\n\r\n if (this.list.length !== 0) {\r\n if (this.itemRow[this.childField] && this.itemRow[this.childField].length > 0) {\r\n result.forEach((el) => {\r\n el.disabledCheckBox = this.selectableField != '' ? (el[this.selectableField] ? el[this.selectableField] : false) : false;\r\n // el.disabledCheckBox = this.selectableField != '' ? el[this.selectableField] : false;\r\n this.itemRow[this.childField][this.itemRow[this.childField].length] = el;\r\n });\r\n } else {\r\n this.itemRow[this.childField] = result;\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n result[i].disabledCheckBox =\r\n this.selectableField != '' ? (result[i][this.selectableField] ? result[i][this.selectableField] : false) : false;\r\n\r\n if (this.selectionLevel == 'nodes' && result[i][this.hasChildField] == true) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n if (this.selectionLevel == 'parents' && result[i][this.hasChildField] == false) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n // if (this.selectionMode !== 'single' && (this.selectNodesRecursive == 'all' || this.selectNodesRecursive == 'childs')) {\r\n if (this.selectionMode !== 'single' && this.checkChilds == true) {\r\n result[i].select = this.itemRow.select === (undefined || null) ? false : this.itemRow.select;\r\n\r\n if (this.itemRow.select === true && this.selectionMode == 'multiple' && result[i][this.hasChildField] === false) {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);\r\n this.selectedItems.push(result[i]);\r\n }\r\n } else {\r\n result[i].select = false;\r\n }\r\n result[i].parentNode = this.itemRow;\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(result[i][this.keyField])) {\r\n if (result[i][this.hasChildField] == true) {\r\n if (this.checkParents == false && this.checkChilds == false) {\r\n //select parent when check child and check parent is false TODO check this Action\r\n this.selectItem(result[i]);\r\n }\r\n\r\n this.open(result[i]);\r\n } else {\r\n this.selectItem(result[i]);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (result[i][this.hasChildField] == true && result[i][this.selectedFieldName] == true) {\r\n if (this.checkParents == false && this.checkChilds == false) {\r\n //select parent when check child and check parent is false TODO check this Action\r\n this.selectItem(result[i]);\r\n }\r\n this.open(result[i]);\r\n } else if (result[i][this.selectedFieldName] == true) {\r\n this.selectItem(result[i]);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n }\r\n this.itemRow.loaded = true;\r\n }\r\n }\r\n }\r\n\r\n if (this.isSelectedItem == true && !this.loced) {\r\n this.loced = true;\r\n this.seletedKeyFieldsChanged.emit({\r\n component: this,\r\n // value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectionMode !== 'single') {\r\n this.showSelectBox = true;\r\n }\r\n this.showContextMenu = true;\r\n }\r\n\r\n // onItemClick(e, v) {\r\n\r\n // }\r\n\r\n onDragStart(e: Event, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrag = v;\r\n this.onItemDrag.emit(v);\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n onDragEnd(e, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrop = v;\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n drop(e) {\r\n // this.onItemDrop.emit(this.itemDrop);\r\n if (!this.lockedDrag) {\r\n this.validDrop = true;\r\n this.sameChilde(this.itemDrag, this.itemDrop);\r\n if (this.validDrop && this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] && this.itemDrag.parentNode !== this.itemDrop) {\r\n const movedEvent: AXTreeViewItemMovedEvent = new AXTreeViewItemMovedEvent();\r\n movedEvent.source = this.makeNode(this.itemDrag);\r\n movedEvent.target = this.makeNode(this.itemDrop);\r\n this.lockedDrag = true;\r\n this.showLoading(this.itemDrag);\r\n this.showLoading(this.itemDrop);\r\n movedEvent.resolve = (value: boolean) => {\r\n this.hideLoading(this.itemDrag);\r\n this.hideLoading(this.itemDrop);\r\n if (value) {\r\n this.dragDropItem(this.itemDrag, this.itemDrop);\r\n } else {\r\n this.lockedDrag = false;\r\n }\r\n };\r\n this.onItemMoved.emit(movedEvent);\r\n }\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n sameChilde(parent, child) {\r\n if (parent[this.childField] && parent[this.childField].length > 0) {\r\n for (let index = 0; index < parent[this.childField].length; index++) {\r\n if (parent[this.childField][index][this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n if (parent[this.childField][index][this.childField] && parent[this.childField][index][this.childField].length > 0) {\r\n this.sameChilde(parent[this.childField][index], child);\r\n }\r\n }\r\n } else if (parent[this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n }\r\n\r\n dragDropItem(itemChild, itemParent) {\r\n if (this.selectionLevel == 'nodes') {\r\n itemParent.disabledCheckBox = true;\r\n }\r\n\r\n if (itemChild.parentNode) {\r\n itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n } else {\r\n this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n }\r\n itemChild.parentNode = itemParent;\r\n if (itemParent[this.childField] && itemParent[this.childField].length > 0) {\r\n itemParent[this.childField][itemParent[this.childField].length] = itemChild;\r\n } else {\r\n itemParent[this.childField] = [];\r\n itemParent[this.childField][0] = itemChild;\r\n if (itemParent[this.hasChildField] === true) {\r\n this.toggleNode(itemParent);\r\n } else {\r\n itemParent.toggle = !itemParent.toggle;\r\n itemParent.loaded = true;\r\n }\r\n itemParent[this.hasChildField] = true;\r\n }\r\n if (itemChild.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(itemChild.parentNode);\r\n }\r\n this.lockedDrag = false;\r\n }\r\n\r\n private listChange(field, value) {\r\n for (let index = 0; index < this.list.length; index++) {\r\n this.changeChiled(this.list[index], field, value);\r\n }\r\n this.loadAllChildren = false;\r\n }\r\n\r\n private changeChiled(item, field, value) {\r\n if (field === 'toggle' && (item.loaded === false || item.loaded === undefined)) {\r\n if (this.loadAllChildren === true) {\r\n this.toggleNode(item);\r\n item[field] = value;\r\n }\r\n } else {\r\n item[field] = value;\r\n if (field === 'select' && item[this.hasChildField] === false && value === true) {\r\n this.selectedItems.push(item);\r\n }\r\n }\r\n if (field === 'select') {\r\n item.indeterminate = false;\r\n }\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((element) => {\r\n this.changeChiled(element, field, value);\r\n });\r\n }\r\n }\r\n\r\n private showLoading(item): void {\r\n item.loading = true;\r\n }\r\n\r\n private hideLoading(item): void {\r\n if (item != null) {\r\n item.loading = false;\r\n }\r\n }\r\n\r\n public openAll(loadAll: boolean = false) {\r\n // if (loadAll) {\r\n // this.loadAllChildren = true;\r\n // this.listChange('toggle', true);\r\n //} else {\r\n this.listChange('toggle', true);\r\n // }\r\n }\r\n\r\n public selectItem(item) {\r\n if (item['select'] != true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n public unSelectItem(item) {\r\n if (item['select'] == true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n public open(item) {\r\n if (item['toggle'] !== true) {\r\n this.toggleNode(item, true);\r\n }\r\n }\r\n\r\n public scrolIntoView(item) {\r\n let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);\r\n element.scrollIntoView();\r\n }\r\n\r\n public closeAll() {\r\n this.listChange('toggle', false);\r\n }\r\n\r\n public selectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', true);\r\n }\r\n }\r\n\r\n public unSelectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', false);\r\n }\r\n this.selectedItems = [];\r\n }\r\n\r\n public getSelectedNodes(): AXTreeViewNode[] {\r\n const selectItemsNode = [];\r\n this.selectedItems.forEach((e) => {\r\n selectItemsNode.push(this.makeNode(e));\r\n });\r\n return selectItemsNode;\r\n }\r\n\r\n public getSelectedParents(): AXTreeViewNode[] {\r\n const selectItemsParent = [];\r\n this.selectedParents.forEach((e) => {\r\n selectItemsParent.push(this.makeNode(e));\r\n });\r\n return selectItemsParent;\r\n }\r\n\r\n getParentsId(item) {\r\n let keyFields = [];\r\n keyFields.push(item[this.keyField]);\r\n if (item.parentNode) {\r\n keyFields.push(...this.getParentsId(item.parentNode));\r\n }\r\n return keyFields;\r\n }\r\n\r\n public getSelectedKeyFields() {\r\n let keyFields = [];\r\n this.selectedItems.forEach((elm) => {\r\n var Ids = this.getParentsId(elm);\r\n if (Ids) {\r\n keyFields.push(Ids);\r\n }\r\n });\r\n return keyFields;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXTreeViewComponent } from './tree-view.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDataSourceModule } from '../data-source/datasource.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXContextMenuModule } from '../context-menu/context-menu.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTreeViewComponent],\r\n imports: [AXDataSourceModule, CommonModule, AXCheckBoxModule, AXContextMenuModule],\r\n exports: [AXTreeViewComponent],\r\n providers: []\r\n})\r\n\r\nexport class AXTreeViewModule { }","import {\r\n Component,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n ViewEncapsulation,\r\n TemplateRef,\r\n Renderer2,\r\n EventEmitter,\r\n Output,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXUploadFileLoadEvent, AXUploadFileProgressEvent } from './upload-file.events';\r\nimport { AXProgressBarComponent } from '../progress-bar/progress-bar.component';\r\nimport { AXBaseTextComponent, AXElementSize, AXBaseSizableComponent, AXBaseComponent } from '../base/element.class';\r\nimport { AXRenderService } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-upload-file',\r\n templateUrl: './upload-file.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n host: { style: 'display: block; width:100%; position: relative' }\r\n})\r\nexport class AXUploadFileComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n private overlayDiv: HTMLElement;\r\n\r\n @Input()\r\n dropRef: HTMLElement;\r\n\r\n @Input()\r\n progressRef: HTMLElement;\r\n\r\n @Input()\r\n label: string;\r\n\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @ViewChild('fileInput') fileInput: ElementRef;\r\n\r\n @Input()\r\n type: 'box' | 'inline' | 'hidden' = 'inline';\r\n\r\n @Input()\r\n public template: TemplateRef<any>;\r\n\r\n @Input() disabled: boolean = false;\r\n @Output()\r\n onLoad: EventEmitter<AXUploadFileLoadEvent> = new EventEmitter<AXUploadFileLoadEvent>();\r\n\r\n @Output()\r\n onProgress: EventEmitter<AXUploadFileProgressEvent> = new EventEmitter<AXUploadFileProgressEvent>();\r\n\r\n files: File[] = [];\r\n focus() { }\r\n\r\n fileName: string = '';\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private injectionService: AXRenderService,\r\n private rendrer: Renderer2,\r\n protected cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n\r\n onDeleteClick(e) {\r\n e.stopPropagation();\r\n }\r\n\r\n onFileChange(e) {\r\n const files = e.target.files;\r\n this.addFile(files[0]);\r\n (this.fileInput.nativeElement as HTMLInputElement).value = null;\r\n }\r\n\r\n open() {\r\n this.fileInput.nativeElement.click();\r\n }\r\n remove() {\r\n this.files = [];\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.dropRef != null) {\r\n } else {\r\n this.dropRef = this.el.nativeElement;\r\n }\r\n //\r\n if (this.progressRef != null) {\r\n } else {\r\n this.progressRef = this.el.nativeElement;\r\n }\r\n //\r\n if (this.type === 'hidden' || this.type === 'box') {\r\n this.overlayDiv = this.rendrer.createElement('div') as HTMLElement;\r\n this.overlayDiv.classList.add('overlay');\r\n this.overlayDiv.innerHTML = `\r\n <div class=\"icon-wrapper\">\r\n <i class=\"far fa-cloud-upload-alt fa-3x\"></i>\r\n <span>Drop File(s) Here</span>\r\n </div>\r\n `;\r\n this.overlayDiv.addEventListener('drag', this.handleOverlayDragOver);\r\n this.overlayDiv.addEventListener('dragover', this.handleOverlayDragOver);\r\n this.overlayDiv.addEventListener('dragleave', this.handleOverlayDragOver);\r\n this.rendrer.appendChild(this.dropRef, this.overlayDiv);\r\n }\r\n //\r\n this.dropRef.classList.add('ax-upload-drop-over');\r\n this.dropRef.addEventListener('dragover', this.handleDragOver.bind(this));\r\n this.dropRef.addEventListener('dragleave', this.handleDragLeave.bind(this));\r\n this.dropRef.addEventListener('drop', this.handleDrop.bind(this));\r\n }\r\n\r\n private handleOverlayDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n private handleDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.overlayDiv.classList.add('show');\r\n return false;\r\n }\r\n\r\n private handleDragLeave(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.overlayDiv.classList.remove('show');\r\n return false;\r\n }\r\n\r\n handleDrop(e: DragEvent) {\r\n this.handleDragLeave(e);\r\n for (let i = 0; i < e.dataTransfer.files.length; i++) {\r\n const file = e.dataTransfer.files[i];\r\n this.addFile(file);\r\n }\r\n }\r\n\r\n private addFile(file: File) {\r\n const progressDiv = this.rendrer.createElement('div') as HTMLElement;\r\n progressDiv.classList.add('ax-upload-progress-panel');\r\n const progressLabel = this.rendrer.createElement('small') as HTMLElement;\r\n progressLabel.innerText = file.name;\r\n this.fileName = file.name;\r\n this.rendrer.appendChild(this.progressRef, progressDiv);\r\n const com = this.injectionService.appendComponent(AXProgressBarComponent, { progress: 0 }, progressDiv).instance as AXProgressBarComponent;\r\n this.rendrer.appendChild(progressDiv, progressLabel);\r\n\r\n const reader = new FileReader();\r\n reader.addEventListener('load', (e) => {\r\n this.onLoad.emit({\r\n file,\r\n data: (e as any).target.result\r\n });\r\n //\r\n // Fake Upload\r\n let pv = 0;\r\n let uploaded = 0;\r\n const intv = setInterval(() => {\r\n uploaded += 1024 * 1000;\r\n if (uploaded > e.total) {\r\n uploaded = e.total;\r\n }\r\n pv = Math.ceil((uploaded / e.total) * 100);\r\n com.progress = pv;\r\n this.onProgress.emit({\r\n file,\r\n total: e.total,\r\n uploaded,\r\n value: pv\r\n });\r\n //\r\n if (com.progress >= 100) {\r\n clearInterval(intv);\r\n setTimeout(() => {\r\n this.rendrer.removeChild(this.progressRef, progressDiv);\r\n }, 1000);\r\n }\r\n }, 100);\r\n });\r\n reader.readAsDataURL(file);\r\n this.files.push(file);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXUploadFileComponent } from './upload-file.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXProgressBarModule } from '../progress-bar/progress-bar.module';\r\nimport { AXLabelModule } from '../label/label.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\n\r\n@NgModule({\r\n declarations: [AXUploadFileComponent],\r\n imports: [CommonModule, AXButtonModule, AXTextBoxModule, AXProgressBarModule, AXLabelModule, AXFormGroupModule],\r\n exports: [AXUploadFileComponent],\r\n providers: []\r\n})\r\nexport class AXUploadFileModule {}\r\n","import { Component, Input, Output, EventEmitter, ContentChild, TemplateRef, ContentChildren, QueryList } from \"@angular/core\";\r\nimport { AXPanelBoxComponent } from \"../panel-box/panel-box.component\";\r\nimport { AXBaseComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: \"ax-accordion\",\r\n template: \"<ng-content></ng-content>\",\r\n})\r\nexport class AXAccordionComponent extends AXBaseComponent {\r\n\r\n @ContentChildren(AXPanelBoxComponent)\r\n panels: QueryList<AXPanelBoxComponent>;\r\n\r\n @Input()\r\n multiple: boolean = false;\r\n\r\n constructor() {\r\n super()\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.panels.forEach(p => {\r\n if (this.multiple == false)\r\n p.collapsed = true;\r\n p.collapsedChange.subscribe((v: boolean) => {\r\n this.handleCollapsedChanged(p, v);\r\n });\r\n });\r\n if (this.multiple == false)\r\n this.panels.first.collapsed = false;\r\n }\r\n\r\n private handleCollapsedChanged(panel: AXPanelBoxComponent, value: boolean) {\r\n if (value == false && this.multiple == false) {\r\n this.panels.forEach(p => {\r\n if (p != panel)\r\n p.collapsed = true;\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXAccordionComponent } from \"./accordion.component\";\r\nimport { AXPanelBoxModule } from \"../panel-box/panel-box.module\";\r\n@NgModule({\r\n declarations: [AXAccordionComponent],\r\n imports: [CommonModule, AXPanelBoxModule],\r\n exports: [AXAccordionComponent],\r\n providers: []\r\n})\r\nexport class AXAccordionModule { }\r\n","import { Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AXValidatableComponent } from '../base/element.class';\r\n\r\nexport type AXDataType = 'string' | 'number' | 'date' | 'boolean' | 'object';\r\nexport type AXControlType = 'textbox' | 'numberbox' | 'datePicker' | 'switch' | 'custom';\r\n\r\n\r\n\r\nexport interface AXPropertyDef {\r\n name: string;\r\n title: string;\r\n hint?: string;\r\n defaultValue?: any;\r\n editorClass: any;\r\n editorOptions?: any;\r\n visible?: boolean | (() => boolean);\r\n order?: number;\r\n}\r\n\r\nexport interface AXPropertyEditorDef {\r\n title: string;\r\n hint?: string;\r\n defaultValue?: any;\r\n editorClass: any;\r\n editorOptions?: any;\r\n visible?: boolean | (() => boolean);\r\n order?: number;\r\n}\r\n\r\n\r\n\r\n\r\nexport interface AXPropertyConfig {\r\n property: AXPropertyDef;\r\n value: any;\r\n}\r\n\r\n\r\nexport interface AXProperyEditorValueChangeEvent {\r\n property: AXPropertyDef;\r\n value: any;\r\n}\r\n\r\n\r\n\r\nexport abstract class AXProperyEditorComponent<T>{\r\n\r\n\r\n readonly: boolean = false;\r\n\r\n\r\n private _initiated: boolean = false;\r\n private _valueBound: boolean = false;\r\n\r\n public get initiated(): boolean {\r\n return this._initiated && this._valueBound;\r\n }\r\n\r\n\r\n validatableComponentRegistered: Subject<AXValidatableComponent> = new Subject<AXValidatableComponent>();\r\n\r\n\r\n registerForValidationForm(component?: AXValidatableComponent) {\r\n this.validatableComponentRegistered.next(component);\r\n }\r\n\r\n\r\n @Output()\r\n valueChange: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n\r\n @Output()\r\n onRenderCompleted: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n private _value: T;\r\n @Input()\r\n public get value(): T {\r\n return this._value;\r\n }\r\n\r\n public set value(v: T) {\r\n if (v !== this._value) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.cdr.detectChanges();\r\n //TODO: find better solution\r\n setTimeout(() => {\r\n this._valueBound = true;\r\n }, 100);\r\n }\r\n }\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n this.onRenderCompleted.subscribe(() => {\r\n this._initiated = true;\r\n });\r\n }\r\n\r\n uid: string;\r\n\r\n handleValueChange(v: T) {\r\n this.value = v;\r\n }\r\n}\r\n\r\n\r\n\r\nexport class AXPropertyDecorator {\r\n cls: any;\r\n property: string;\r\n options: any;\r\n\r\n constructor(\r\n cls: any,\r\n property: string,\r\n options: any) {\r\n this.cls = cls;\r\n this.property = property;\r\n this.options = options;\r\n }\r\n}\r\n\r\n\r\n// @dynamic\r\nexport class AXPropertyDecorators {\r\n private static REGISTRY = new Array<AXPropertyDecorator>();\r\n\r\n static register(cls: string, property: string, options?: any) {\r\n const item = AXPropertyDecorators.REGISTRY.find(c => c.cls === cls && c.property === property);\r\n if (item) {\r\n item.options = options;\r\n }\r\n else {\r\n AXPropertyDecorators.REGISTRY.push(new AXPropertyDecorator(cls, property, options));\r\n }\r\n }\r\n\r\n\r\n\r\n static has(cls: string, property: string): boolean {\r\n return AXPropertyDecorators.REGISTRY.some(c => c.cls === cls && c.property === property);\r\n }\r\n\r\n static get(cls: string, property: string): AXPropertyDecorator {\r\n return AXPropertyDecorators.REGISTRY.find(c => c.cls === cls && c.property === property);\r\n }\r\n\r\n static isValid(property: string): boolean {\r\n if (property) {\r\n return AXPropertyDecorators.REGISTRY.some(c => c.property === property);\r\n }\r\n return false;\r\n }\r\n\r\n static getProperties(target: any): AXPropertyDecorator[] {\r\n const list: AXPropertyDecorator[] = [];\r\n const p: any[] = Array<any>();\r\n let superClass = Object.getPrototypeOf(target);\r\n while (superClass.constructor.name !== 'Object') {\r\n p.push(superClass.constructor);\r\n superClass = Object.getPrototypeOf(superClass);\r\n }\r\n list.push(...AXPropertyDecorators.REGISTRY.filter(c => p.includes(c.cls.constructor)));\r\n return list;\r\n }\r\n}\r\n\r\n\r\n\r\nexport function propertyEditor(options: AXPropertyEditorDef) {\r\n return (target: any, key: string) => {\r\n (options as any).name = key;\r\n AXPropertyDecorators.register(target, key, options);\r\n };\r\n}\r\n\r\n","import { Directive, ViewContainerRef, ComponentFactoryResolver, Input, Output, EventEmitter, KeyValueDiffer, KeyValueDiffers } from '@angular/core';\r\nimport { AXProperyEditorComponent, AXProperyEditorValueChangeEvent, AXPropertyConfig } from './property-editor.class';\r\nimport { AXEventService, AXObjectUtil, AXRenderService, getPropByPath, setPropByPath } from '@acorex/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\n\r\n@Directive({\r\n selector: '[ax-property-editor-renderer]',\r\n})\r\nexport class AXPropertyEditorRendererDirective {\r\n\r\n private instance: AXProperyEditorComponent<any>;\r\n\r\n @Input()\r\n property: AXPropertyConfig;\r\n\r\n\r\n @Input()\r\n validationForm: AXValidationFormComponent;\r\n\r\n\r\n\r\n private _context: any = {};\r\n @Input()\r\n public get context(): any {\r\n return this._context;\r\n }\r\n public set context(v: any) {\r\n this._context = v;\r\n }\r\n\r\n @Input()\r\n host: any;\r\n\r\n @Input()\r\n groupId: any;\r\n\r\n\r\n @Output()\r\n onValueChange: EventEmitter<AXProperyEditorValueChangeEvent> = new EventEmitter<AXProperyEditorValueChangeEvent>();\r\n\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private target: ViewContainerRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private renderService: AXRenderService,\r\n private eventService: AXEventService\r\n ) {\r\n\r\n }\r\n\r\n\r\n clear() {\r\n this.instance.value = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createComponent();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n createComponent() {\r\n this.renderService.findLoadedComponentByRoute(this.property.property.editorClass).then(c => {\r\n if (c) {\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(c.component);\r\n const cmpRef = this.target.createComponent(factory);\r\n this.instance = cmpRef.instance as AXProperyEditorComponent<any>;\r\n this.subscription = this.instance.valueChange.subscribe(value => {\r\n this.property.value = value;\r\n this.onValueChange.emit(this.property);\r\n if (this.property?.property?.name) {\r\n setTimeout(() => {\r\n this.eventService.broadcast(`props-${this.groupId}-${this.property.property.name}`, this.property);\r\n }, 0);\r\n }\r\n });\r\n this.watchChanges();\r\n this.assignProps();\r\n this.instance.value = this.property.value;\r\n\r\n // this.instance.onRenderCompleted.subscribe(() => {\r\n \r\n \r\n // });\r\n \r\n if (this.validationForm) {\r\n this.instance.validatableComponentRegistered.subscribe(v => {\r\n this.validationForm.addWidget(v);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n private watchChanges() {\r\n const varsRegx = /((\\$\\{[a-zA-Z_0-9]+\\})+)/gm;\r\n const varNameRegx = /[a-zA-Z_0-9]+/gm;\r\n const options = this.property.property.editorOptions;\r\n if (!options) {\r\n return;\r\n }\r\n for (const p in options) {\r\n if (options.hasOwnProperty(p)) {\r\n const opt = options[p];\r\n const vars = typeof opt === 'string' ? opt?.match(varsRegx) : [];\r\n // bind the props\r\n if (vars?.length) {\r\n vars.forEach(v => {\r\n const path = v.match(varNameRegx)?.length ? v.match(varNameRegx)[0] : null;\r\n if (path) {\r\n this.eventService.on(`props-${this.groupId}-${path}`, (e: AXPropertyConfig) => {\r\n let execCode = opt.slice();\r\n const params = {};\r\n vars.forEach(vv => {\r\n const p2 = vv.match(varNameRegx)?.length ? vv.match(varNameRegx)[0] : null;\r\n params[p2] = AXObjectUtil.deepCopy(this.context[p2]) || null;\r\n execCode = execCode.replace(vv, `__params__.${p2}`);\r\n });\r\n\r\n const func = new Function('__params__', `try { return ${execCode}} catch(e){ console.log(e); return null; }`);\r\n const val = func(params);\r\n\r\n const keys = p.split('.');\r\n const prop = Object.assign({}, this.instance[keys[0]]);\r\n if (keys.length > 1) {\r\n this.instance[keys[0]] = setPropByPath(prop, p, val);\r\n }\r\n else {\r\n setPropByPath(this.instance, p, val)\r\n }\r\n });\r\n }\r\n });\r\n }\r\n // else {\r\n // this.assignProps();\r\n // }\r\n }\r\n }\r\n }\r\n\r\n\r\n private assignProps() {\r\n const options = this.property.property.editorOptions;\r\n if (!options) {\r\n return;\r\n }\r\n const varsRegx = /((\\$\\{[a-zA-Z_0-9]+\\})+)/gm;\r\n for (const p in options) {\r\n if (options.hasOwnProperty(p)) {\r\n const opt = options[p];\r\n const vars = typeof opt === 'string' ? opt?.match(varsRegx) : [];\r\n if (vars?.length) {\r\n continue;\r\n }\r\n else {\r\n const val = typeof opt === 'function' ? opt({ data: this.context, host: this.host }, this.property) : opt;\r\n if (val instanceof Promise) {\r\n val.then(v => {\r\n setPropByPath(this.instance, p, val);\r\n });\r\n }\r\n else {\r\n setPropByPath(this.instance, p, val);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}","import { Component, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXTextBoxComponent } from '../../../textbox/textbox.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n templateUrl: './text.editor.html',\r\n})\r\nexport class AXTextPropertyEditorComponent extends AXProperyEditorComponent<string> {\r\n\r\n\r\n @ViewChild(AXTextBoxComponent)\r\n private textBox: AXTextBoxComponent;\r\n\r\n\r\n validation: AXValidation;\r\n clearButton: boolean = false;\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextPropertyEditorComponent } from './text.editor';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTextPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTextBoxModule, AXValidationModule],\r\n exports: [AXTextPropertyEditorComponent],\r\n entryComponents: [AXTextPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXTextPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXNumberBoxComponent } from '../../../number-box/number-box.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-number-box (onValueChanged)=\"handleValueChange($event)\"\r\n [value]=\"value\"\r\n [showSeparator]=\"showSeparator\"\r\n [decimalNumber]=\"decimalNumber\"\r\n [min]=\"minValue\"\r\n [max]=\"maxValue\"\r\n [allowClear]=\"clearButton\"\r\n >\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-number-box>\r\n `,\r\n})\r\nexport class AXNumberBoxPropertyEditorComponent extends AXProperyEditorComponent<number> {\r\n\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n minValue?: number = null;\r\n maxValue?: number = null;\r\n validation: AXValidation;\r\n clearButton: boolean = false;\r\n\r\n @ViewChild(AXNumberBoxComponent)\r\n private textBox: AXNumberBoxComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXNumberBoxPropertyEditorComponent } from './number.editor';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXNumberBoxPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXNumberBoxModule,AXValidationModule],\r\n exports: [AXNumberBoxPropertyEditorComponent],\r\n entryComponents: [AXNumberBoxPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXNumberBoxPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXSelectBoxComponent } from '../../../selectbox/selectbox.component';\r\n\r\n@Component({\r\n templateUrl: './selectbox.editor.html',\r\n})\r\nexport class AXSelectBoxPropertyEditorComponent extends AXProperyEditorComponent<any> {\r\n\r\n\r\n valueField: string = 'id';\r\n textField: string = 'text';\r\n selectionMode: string = 'single';\r\n selectionDataMode: string = 'value';\r\n allowSearch: boolean = true;\r\n allowNull: boolean = false;\r\n disabled: boolean = false;\r\n items: any = [];\r\n remoteOperation = false;\r\n\r\n validation: AXValidation;\r\n\r\n @ViewChild(AXSelectBoxComponent, { static: true })\r\n selectBox: AXSelectBoxComponent;\r\n\r\n\r\n\r\n private _filter: any;\r\n public get filter(): any {\r\n return this._filter;\r\n }\r\n public set filter(v: any) {\r\n this._filter = v;\r\n if (this.value && this.initiated) {\r\n this.value = null;\r\n this.selectBox?.refresh();\r\n }\r\n }\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.selectedValues);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.selectBox);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n provideData = (e): Promise<any> => {\r\n return new Promise((resolve) => {\r\n const func = () => {\r\n if (Array.isArray(this.items)) {\r\n resolve(this.items.slice());\r\n }\r\n else if (typeof this.items === 'function') {\r\n const a = Object.assign(e, { sender: this })\r\n resolve(this.items(a));\r\n }\r\n else {\r\n resolve([]);\r\n }\r\n };\r\n const intVal = setInterval(() => {\r\n if (this.initiated) {\r\n func();\r\n clearInterval(intVal);\r\n }\r\n },50);\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXSelectBoxPropertyEditorComponent } from './selectbox.editor';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\nimport { AXDataSourceModule } from '../../../data-source/datasource.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSelectBoxPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXSelectBoxModule, AXDataSourceModule, AXValidationModule],\r\n exports: [AXSelectBoxPropertyEditorComponent],\r\n entryComponents: [AXSelectBoxPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXSelectBoxPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, ChangeDetectorRef, ViewChild, TemplateRef, ChangeDetectionStrategy, ElementRef } from '@angular/core';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXValidationFormComponent } from '../../../validation/validation-form.component';\r\n\r\n\r\nexport interface AXRangeModel {\r\n title: string;\r\n color?: string;\r\n minValue: number;\r\n maxValue: number;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n templateUrl: './range.editor.html',\r\n styleUrls: ['./range.editor.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXRangePropertyEditorComponent extends AXProperyEditorComponent<AXRangeModel[]> {\r\n\r\n\r\n private form: AXValidationFormComponent;\r\n\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n ranges: AXRangeModel[] = [];\r\n\r\n editRow: AXRangeModel;\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.ranges = this.value ? JSON.parse(JSON.stringify(this.value)) : [];\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n // getRanges() {\r\n // return this.ranges.sort((a, b) => a.minValue - b.minValue);\r\n // }\r\n\r\n onFormInit(e) {\r\n this.form = e.component;\r\n }\r\n\r\n\r\n handleEditClick(item: AXRangeModel) {\r\n this.editRow = Object.assign({}, item);\r\n const popup = this.popupService.open(this.tplEdit, {\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n Object.assign(item, this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n title: AXTranslator.get('common.edit')\r\n });\r\n }\r\n\r\n handleAddClick() {\r\n const min = this.ranges?.length ? Math.max(...this.ranges.map(c => c.maxValue)) : 0;\r\n this.editRow = {\r\n title: '',\r\n minValue: min,\r\n maxValue: min + 1,\r\n color: null\r\n };\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: AXTranslator.get('common.add-item'),\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n this.ranges.push(this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleRemoveClick(item: AXRangeModel) {\r\n this.ranges = this.ranges.filter(c => c.minValue !== item.minValue);\r\n super.handleValueChange(this.ranges);\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXValidatableComponent } from '../../base/element.class';\r\nimport { AXColorUtil, AXColor } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-color-box',\r\n templateUrl: './color-box.component.html',\r\n styleUrls: ['./color-box.component.scss'],\r\n providers: [\r\n { provide: AXValidatableComponent, useExisting: AXColorBoxComponent },\r\n ]\r\n})\r\nexport class AXColorBoxComponent extends AXValidatableComponent {\r\n\r\n inputFormat: 'hex' | 'rgb' = 'hex';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n @Output()\r\n onColorSelect: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n private _value: string;\r\n\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n if (v != this._value) {\r\n this._value = v;\r\n if (v) {\r\n const selected = this.colors.find(c => c.code === v);\r\n if (selected) {\r\n this.selectColor(selected);\r\n }\r\n else {\r\n this.colors.forEach((i) => {\r\n i.active = false\r\n });\r\n }\r\n const rgb = AXColorUtil.hex2Rgb(v);\r\n\r\n if (rgb) {\r\n this.rColor = rgb.r;\r\n this.gColor = rgb.g;\r\n this.bColor = rgb.b;\r\n }\r\n }\r\n else {\r\n this.rColor = null;\r\n this.gColor = null;\r\n this.bColor = null;\r\n }\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n\r\n rColor: number = 0;\r\n gColor: number = 0;\r\n bColor: number = 0;\r\n\r\n\r\n colors: AXColor[] = [\r\n // Pink ***************************\r\n {\r\n code: '#FFC0CB',\r\n },\r\n {\r\n code: '#FF69B4',\r\n },\r\n {\r\n code: '#DB7093',\r\n },\r\n {\r\n code: '#C71585',\r\n },\r\n // Purple ***************************\r\n {\r\n code: '#E6E6FA',\r\n },\r\n {\r\n code: '#D8BFD8',\r\n },\r\n {\r\n code: '#DDA0DD',\r\n },\r\n {\r\n code: '#DA70D6',\r\n },\r\n {\r\n code: '#FF00FF',\r\n },\r\n {\r\n code: '#BA55D3',\r\n },\r\n {\r\n code: '#9932CC',\r\n },\r\n {\r\n code: '#8A2BE2',\r\n\r\n },\r\n {\r\n code: '#8B008B',\r\n },\r\n {\r\n code: '#9370DB',\r\n },\r\n {\r\n code: '#7B68EE',\r\n },\r\n {\r\n code: '#6A5ACD',\r\n },\r\n {\r\n code: '#483D8B',\r\n },\r\n {\r\n code: '#663399',\r\n },\r\n {\r\n code: '#4B0082',\r\n },\r\n // Red ***************************\r\n {\r\n code: '#FFA07A',\r\n },\r\n {\r\n code: '#FA8072',\r\n },\r\n {\r\n code: '#F08080',\r\n },\r\n {\r\n code: '#CD5C5C',\r\n },\r\n {\r\n code: '#DC143C',\r\n },\r\n {\r\n code: '#FF0000',\r\n },\r\n {\r\n code: '#B22222',\r\n },\r\n {\r\n code: '#8B0000',\r\n },\r\n // Orange ***************************\r\n {\r\n code: '#FFA500',\r\n },\r\n {\r\n code: '#FF8C00',\r\n },\r\n {\r\n code: '#FF7F50',\r\n },\r\n {\r\n code: '#FF6347',\r\n },\r\n {\r\n code: '#FF4500',\r\n },\r\n {\r\n code: '#FFD700',\r\n },\r\n // Yellow ***************************\r\n {\r\n code: '#FFFF00',\r\n },\r\n {\r\n code: '#FFFFE0',\r\n },\r\n {\r\n code: '#FFFACD',\r\n },\r\n {\r\n code: '#FFEFD5',\r\n },\r\n {\r\n code: '#FFE4B5',\r\n },\r\n {\r\n code: '#FFDAB9',\r\n },\r\n {\r\n code: '#EEE8AA',\r\n },\r\n {\r\n code: '#F0E68C',\r\n },\r\n {\r\n code: '#BDB76B',\r\n },\r\n // Brown ***************************\r\n // {\r\n // code: '#FFF8DC'\r\n // },\r\n // {\r\n // code: '#FFEBCD'\r\n // },\r\n // {\r\n // code: '#FFE4C4'\r\n // },\r\n {\r\n code: '#FFDEAD'\r\n },\r\n {\r\n code: '#DEB887'\r\n },\r\n {\r\n code: '#D2B48C'\r\n },\r\n {\r\n code: '#DAA520'\r\n },\r\n {\r\n code: '#B8860B'\r\n },\r\n {\r\n code: '#CD853F'\r\n },\r\n {\r\n code: '#D2691E'\r\n },\r\n {\r\n code: '#8B4513'\r\n },\r\n {\r\n code: '#A0522D'\r\n },\r\n // Green ***************************\r\n {\r\n code: '#ADFF2F',\r\n },\r\n {\r\n code: '#7FFF00',\r\n },\r\n {\r\n code: '#00FF00',\r\n },\r\n {\r\n code: '#32CD32',\r\n },\r\n {\r\n code: '#98FB98',\r\n },\r\n {\r\n code: '#90EE90',\r\n },\r\n {\r\n code: '#00FA9A',\r\n },\r\n {\r\n code: '#00FF7F',\r\n },\r\n {\r\n code: '#3CB371',\r\n },\r\n {\r\n code: '#2E8B57',\r\n },\r\n {\r\n code: '#228B22',\r\n },\r\n {\r\n code: '#008000',\r\n },\r\n {\r\n code: '#006400',\r\n },\r\n {\r\n code: '#9ACD32',\r\n },\r\n {\r\n code: '#6B8E23',\r\n },\r\n {\r\n code: '#556B2F',\r\n },\r\n {\r\n code: '#66CDAA',\r\n },\r\n {\r\n code: '#8FBC8F',\r\n },\r\n {\r\n code: '#20B2AA',\r\n },\r\n {\r\n code: '#008B8B',\r\n },\r\n // Cyan ***************************\r\n\r\n {\r\n code: '#E0FFFF',\r\n },\r\n {\r\n code: '#AFEEEE',\r\n },\r\n {\r\n code: '#7FFFD4',\r\n },\r\n {\r\n code: '#40E0D0',\r\n },\r\n {\r\n code: '#48D1CC',\r\n },\r\n {\r\n code: '#00CED1',\r\n },\r\n // Blue ***************************\r\n {\r\n code: '#5F9EA0'\r\n },\r\n {\r\n code: '#4682B4'\r\n },\r\n {\r\n code: '#B0C4DE'\r\n },\r\n {\r\n code: '#ADD8E6'\r\n },\r\n {\r\n code: '#B0E0E6'\r\n },\r\n {\r\n code: '#87CEFA'\r\n },\r\n {\r\n code: '#87CEEB'\r\n },\r\n {\r\n code: '#6495ED'\r\n },\r\n {\r\n code: '#00BFFF'\r\n },\r\n {\r\n code: '#00FFFF',\r\n },\r\n {\r\n code: '#1E90FF'\r\n },\r\n {\r\n code: '#4169E1'\r\n },\r\n {\r\n code: '#0000FF'\r\n },\r\n {\r\n code: '#0000CD'\r\n },\r\n {\r\n code: '#00008B'\r\n },\r\n {\r\n code: '#191970'\r\n },\r\n // Gray\r\n {\r\n code: '#FFFFFF'\r\n },\r\n {\r\n code: '#DCDCDC'\r\n },\r\n {\r\n code: '#808080'\r\n },\r\n {\r\n code: '#708090'\r\n },\r\n {\r\n code: '#000000'\r\n },\r\n ];\r\n\r\n\r\n // validate(): Promise<IValidationRuleResult> {\r\n\r\n // return new Promise<IValidationRuleResult>(resolve => {\r\n // if (!this.validator) {\r\n // resolve({ result: true });\r\n // } else {\r\n // // this.validator.validate(this.model).then(r => {\r\n // // r.target = this;\r\n // // if (r.result) {\r\n // // this.errorText = null;\r\n // // } else {\r\n // // this.errorText = r.message;\r\n // // }\r\n // // resolve(r);\r\n // // });\r\n\r\n // resolve()\r\n // }\r\n // });\r\n // }\r\n\r\n focus() {\r\n }\r\n\r\n clear(): void {\r\n this.value = null;\r\n }\r\n\r\n onColorClick(item: AXColor) {\r\n this.value = item ? item.code : null;\r\n this.selectColor(item);\r\n this.onColorSelect.emit(this.value);\r\n }\r\n\r\n handleColorChange() {\r\n this.value = AXColorUtil.rgb2Hex(this.rColor, this.gColor, this.bColor);\r\n\r\n }\r\n\r\n private selectColor(item: AXColor) {\r\n this.colors.forEach((i) => {\r\n i.active = false;\r\n });\r\n item.active = true\r\n }\r\n\r\n handleKeyEvent(e: KeyboardEvent) {\r\n if (e.code == 'Enter' || e.code == 'NumpadEnter') {\r\n this.onColorSelect.emit(this.value);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Input, Output, EventEmitter, ContentChild, ElementRef } from '@angular/core';\r\nimport { AXValidatableComponent, AXBaseSizableComponent, AXBaseInputComponent, AXElementSize } from '../base/element.class';\r\nimport { AXColorBoxComponent } from './color-box/color-box.component';\r\nimport { AXColorUtil, AXConfig } from '@acorex/core';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\n\r\n\r\n@Component({\r\n selector: 'ax-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n providers: [\r\n { provide: AXValidatableComponent, useExisting: AXColorPickerComponent },\r\n ],\r\n host: { style:'width: 100%' }\r\n})\r\nexport class AXColorPickerComponent extends AXColorBoxComponent implements AXBaseSizableComponent, AXBaseInputComponent {\r\n\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: AXDropdownComponent;\r\n @Input() placeholder: string = '';\r\n @Input() showClear: boolean = false;\r\n\r\n @Input() label: string;\r\n\r\n _text: string = '';\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n @Input()\r\n readonly: boolean;\r\n @Input()\r\n disabled: boolean;\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit() {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n focus(): void {\r\n this.dropdown.focus();\r\n }\r\n\r\n // handleValueChange(c: string) {\r\n\r\n // }\r\n\r\n findTextColor(color: string) {\r\n if (!color) {\r\n return '#000';\r\n }\r\n return !(AXColorUtil.contrastToWhite(color) > 2.0) ? '#000' : '#fff';\r\n }\r\n\r\n handleItemClick(e) {\r\n this.dropdown.close();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXColorPickerComponent } from './color-picker.component';\r\nimport { AXColorBoxComponent } from './color-box/color-box.component';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXColorPickerComponent, AXColorBoxComponent],\r\n imports: [CommonModule, FormsModule, AXDropdownModule, AXValidationModule, AXTextBoxModule],\r\n exports: [AXColorPickerComponent, AXColorBoxComponent],\r\n providers: []\r\n})\r\nexport class AXColorPickerModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXRangePropertyEditorComponent } from './range.editor';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXRangePropertyEditorComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXTranslatorModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXColorPickerModule,\r\n AXLabelModule,\r\n AXPageModule,\r\n AXValidationModule,\r\n AXButtonModule\r\n ],\r\n exports: [AXRangePropertyEditorComponent],\r\n entryComponents: [AXRangePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXRangePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXColorPickerComponent } from '../../../color-picker/color-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-color-picker [(value)]=\"value\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-color-picker>\r\n `,\r\n})\r\nexport class AXColorPropertyEditorComponent extends AXProperyEditorComponent<string> {\r\n\r\n validation: AXValidation;\r\n\r\n @ViewChild(AXColorPickerComponent)\r\n private textBox: AXColorPickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXColorPropertyEditorComponent } from './color.editor';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXColorPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXColorPickerModule, AXValidationModule],\r\n exports: [AXColorPropertyEditorComponent],\r\n entryComponents: [AXColorPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXColorPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ViewChild, TemplateRef, ChangeDetectorRef } from '@angular/core';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXDataSourceReadParams } from '../../../data-source/read-param';\r\n\r\n\r\nexport interface AXTableColumnModel {\r\n id: number;\r\n index: number;\r\n fieldName: string;\r\n caption?: string;\r\n fieldType?: string;\r\n displayType?: string;\r\n fillByUser?: boolean;\r\n rowHeader?: boolean;\r\n}\r\n\r\n@Component({\r\n templateUrl: './column.editor.html',\r\n styleUrls: ['./column.editor.scss']\r\n})\r\nexport class ColumnPropertyEditorComponent extends AXProperyEditorComponent<AXTableColumnModel[]> implements OnInit {\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n columns: AXTableColumnModel[] = [];\r\n\r\n index: number = 2;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n columnTypeData: any[] = [\r\n { id: 1, title: 'String' },\r\n { id: 2, title: 'Number' },\r\n { id: 3, title: 'Boolean' },\r\n { id: 4, title: 'Data' },\r\n { id: 5, title: 'Time' }\r\n ];\r\n\r\n ngOnInit(): void {\r\n this.columns = this.value ? JSON.parse(JSON.stringify(this.value)) : [];\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n handleAddColumn() {\r\n this.columns.push({\r\n id: Math.floor(1000*Math.random()*9000),\r\n index: this.index,\r\n fieldName: 'ستون' + this.index,\r\n caption: 'ستون' + this.index,\r\n fieldType: '',\r\n displayType: '',\r\n fillByUser: false,\r\n rowHeader: false\r\n });\r\n this.index++;\r\n }\r\n\r\n handleAddClick() {\r\n if (this.columns.length === 0) {\r\n this.columns.push({\r\n id: Math.floor(1000*Math.random()*9000),\r\n index: 1,\r\n fieldName: 'ستون 1',\r\n caption: 'ستون 1',\r\n fieldType: '',\r\n displayType: '',\r\n fillByUser: false,\r\n rowHeader: false\r\n });\r\n }\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: 'ستون',\r\n size: 'lg',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n super.handleValueChange(this.columns);\r\n this.cdr.detectChanges();\r\n this.index++;\r\n popup.close();\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n this.cdr.detectChanges();\r\n popup.close();\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n\r\n handleRemoveClick(item: AXTableColumnModel) {\r\n this.columns = this.columns.filter((c) => c.id !== item.id);\r\n super.handleValueChange(this.columns);\r\n }\r\n\r\n handleDataReceived = (e: AXDataSourceReadParams) => {\r\n return Promise.resolve(this.columnTypeData);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXCheckBoxModule } from './../../../checkbox/checkbox.module';\r\nimport { ColumnPropertyEditorComponent } from './column.editor';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\nimport { AXDataSourceModule } from '../../../data-source/datasource.module';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ColumnPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTextBoxModule, AXNumberBoxModule, AXColorPickerModule, AXLabelModule, AXPageModule, AXButtonModule, AXCheckBoxModule, AXSelectBoxModule, AXDataSourceModule, DragDropModule],\r\n exports: [ColumnPropertyEditorComponent],\r\n entryComponents: [ColumnPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXColumnPropertyEditorModule {\r\n constructor() {\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef, ViewChild, TemplateRef, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { AXObjectUtil, AXTranslator } from '@acorex/core';\r\nimport { AXDataType, AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXValidationFormComponent } from '../../../validation/validation-form.component';\r\n\r\n\r\n\r\n\r\nexport interface AXConditionalColorModel {\r\n color: string;\r\n operator: string;\r\n value: any;\r\n display?: string;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n templateUrl: './conditional-color.editor.html',\r\n styleUrls: ['./conditional-color.editor.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXConditionalColorPropertyEditorComponent extends AXProperyEditorComponent<AXConditionalColorModel[]> {\r\n\r\n\r\n form: AXValidationFormComponent;\r\n\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n @Input()\r\n dataType: AXDataType = 'number';\r\n\r\n // @Input()\r\n // mode: string[] = ['color', 'title'];\r\n\r\n operators: { value: string, text: string, dataTypes?: AXDataType[] }[] = [];\r\n\r\n ranges: AXConditionalColorModel[] = [];\r\n\r\n editRow: AXConditionalColorModel;\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n\r\n booleanItems = [{ value: true, text: AXTranslator.get('queryBuilder.true') }, { value: false, text: AXTranslator.get('queryBuilder.false') }];\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n\r\n onFormInit(e) {\r\n this.form = e.component;\r\n }\r\n\r\n ngOnInit() {\r\n this.ranges = this.value ? AXObjectUtil.deepCopy(this.value) : [];\r\n this.updateOperations();\r\n }\r\n\r\n\r\n\r\n updateOperations() {\r\n this.operators = [\r\n {\r\n value: '<',\r\n text: AXTranslator.get('queryBuilder.lt'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '<=',\r\n text: AXTranslator.get('queryBuilder.lte'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '>',\r\n text: AXTranslator.get('queryBuilder.gt'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '>=',\r\n text: AXTranslator.get('queryBuilder.gte'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '==',\r\n text: AXTranslator.get('queryBuilder.equal'),\r\n dataTypes: ['string', 'boolean', 'number', 'date']\r\n },\r\n {\r\n value: '<>',\r\n text: AXTranslator.get('queryBuilder.not-equal'),\r\n dataTypes: ['string', 'boolean', 'number', 'date']\r\n }\r\n ].filter(c => c.dataTypes == null || c.dataTypes.includes(this.dataType)) as any;\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n handleEditClick(item: AXConditionalColorModel) {\r\n this.updateOperations();\r\n this.editRow = Object.assign({}, item);\r\n const popup = this.popupService.open(this.tplEdit, {\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n Object.assign(item, this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n title: AXTranslator.get('common.edit')\r\n });\r\n }\r\n\r\n handleAddClick() {\r\n this.updateOperations();\r\n this.editRow = {\r\n value: this.getDefaultValue(),\r\n color: null,\r\n operator: '=='\r\n };\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: AXTranslator.get('common.add-item'),\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n this.ranges.push(this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n });\r\n }\r\n getDefaultValue(): any {\r\n switch (this.dataType) {\r\n case 'boolean':\r\n return true;\r\n case 'number':\r\n return 0;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n handleRemoveClick(item: AXConditionalColorModel) {\r\n this.ranges = this.ranges.filter(c => !(c.value === item.value && c.operator === item.operator));\r\n super.handleValueChange(this.ranges);\r\n }\r\n\r\n\r\n getTitle(opr: string) {\r\n const oprItem = this.operators.find(c => c.value === opr);\r\n return oprItem ? AXTranslator.get(oprItem.text) : '';\r\n }\r\n\r\n getIcon(opr: string) {\r\n switch (opr) {\r\n case '==':\r\n return 'fa-equals';\r\n case '<>':\r\n return 'fa-not-equal';\r\n case '<':\r\n return 'fa-less-than';\r\n case '<=':\r\n return 'fa-less-than-equal';\r\n case '>':\r\n return 'fa-greater-than';\r\n case '>=':\r\n return 'fa-greater-than-equal';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXTranslator, AXTranslatorModule } from '@acorex/core';\r\nimport { AXConditionalColorPropertyEditorComponent } from './conditional-color.editor';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXConditionalColorPropertyEditorComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXTranslatorModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXColorPickerModule,\r\n AXLabelModule,\r\n AXPageModule,\r\n AXButtonModule,\r\n AXSelectBoxModule,\r\n AXValidationModule,\r\n ],\r\n exports: [AXConditionalColorPropertyEditorComponent],\r\n entryComponents: [AXConditionalColorPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXConditionalColorPropertyEditorModule {\r\n constructor() {\r\n AXTranslator.load('en', {\r\n 'conditional-color-property-editor': {\r\n 'replaced-color': 'Replaced Color',\r\n 'replaced-title': 'Replaced Title',\r\n }\r\n });\r\n //\r\n AXTranslator.load('fa', {\r\n 'conditional-color-property-editor': {\r\n 'replaced-color': 'رنگ جایگزین',\r\n 'replaced-title': 'متن جایگزین',\r\n }\r\n });\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-switch (onValueChanged)=\"handleValueChange($event)\" [value]=\"value\"></ax-switch>\r\n `,\r\n})\r\nexport class AXSwitchPropertyEditorComponent extends AXProperyEditorComponent<boolean> {\r\n\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXSwitchPropertyEditorComponent } from './number.editor';\r\nimport { AXSwitchModule } from '../../../switch/switch.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSwitchPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXNumberBoxModule, AXValidationModule, AXSwitchModule],\r\n exports: [AXSwitchPropertyEditorComponent],\r\n entryComponents: [AXSwitchPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXSwitchPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXDatePickerComponent } from '../../../date-picker/date-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXCalendarType } from '@acorex/core'\r\n\r\n@Component({\r\n template: `\r\n <ax-date-picker [size]=\"size\" [dateType]=\"dateType\" [showToday]=\"showToday\" [disabled]=\"disabled\" [allowClear]=\"clearButton\" [readonly]=\"readonly\" [max]=\"max\" [min]=\"min\" [placeholder]=\"placeholder\" [showTodayButton]=\"showTodayButton\" [selectableHoliday]=\"selectableHoliday\" (onValueChanged)=\"handleValueChange($event)\"\r\n [type]=\"type\" [textAlign]=\"textAlign\" [(value)]=\"value\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-date-picker>\r\n `,\r\n})\r\nexport class AXDatePropertyEditorComponent extends AXProperyEditorComponent<Date> {\r\n\r\n showTodayButton: boolean = true;\r\n selectableHoliday: boolean = true;\r\n type: AXCalendarType = 'gregorian';\r\n textAlign: 'right' | 'left' | null = null;\r\n validation: AXValidation;\r\n placeholder: string = ''\r\n min: Date;\r\n max: Date;\r\n readonly: boolean;\r\n disabled: boolean;\r\n clearButton: boolean = false;\r\n showToday: boolean = false;\r\n dateType: any;\r\n size: string = 'md';\r\n\r\n @ViewChild(AXDatePickerComponent)\r\n private date: AXDatePickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.date);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXDatePickerModule } from '../../../date-picker/date-picker.module';\r\nimport { AXDatePropertyEditorComponent } from './date.editor';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXDatePropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXDatePickerModule, AXValidationModule],\r\n exports: [AXDatePropertyEditorComponent],\r\n entryComponents: [AXDatePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXDatePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXDatePickerComponent } from '../../../date-picker/date-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-time-picker [showCurentTime]=\"showCurentTime\" [timeType]=\"timeType\" [allowClear]=\"clearButton\" (onValueChanged)=\"handleValueChange($event)\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-time-picker>\r\n `,\r\n})\r\nexport class AXTimePropertyEditorComponent extends AXProperyEditorComponent<String> {\r\n\r\n\r\n timeType: any;\r\n validation: AXValidation;\r\n showCurentTime: boolean = false;\r\n clearButton: boolean = false;\r\n\r\n @ViewChild(AXDatePickerComponent)\r\n private time: AXDatePickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value?.time);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.time);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXTimePickerModule } from '../../../time-picker/time-picker.module';\r\nimport { AXTimePropertyEditorComponent } from './time.editor';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTimePropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTimePickerModule, AXValidationModule],\r\n exports: [AXTimePropertyEditorComponent],\r\n entryComponents: [AXTimePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXTimePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXTextPropertyEditorModule } from './editors/text-editor/text.module';\r\nimport { AXPropertyEditorRendererDirective } from './property-editor-renderer.directive';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AXTextPropertyEditorComponent } from './editors/text-editor/text.editor';\r\nimport { AXNumberBoxPropertyEditorComponent } from './editors/number-editor/number.editor';\r\nimport { AXNumberBoxPropertyEditorModule } from './editors/number-editor/number.module';\r\nimport { AXSelectBoxPropertyEditorComponent } from './editors/selectbox-editor/selectbox.editor';\r\nimport { AXSelectBoxPropertyEditorModule } from './editors/selectbox-editor/selectbox.module';\r\nimport { AXRangePropertyEditorModule } from './editors/range-editor/range.module';\r\nimport { AXRangePropertyEditorComponent } from './editors/range-editor/range.editor';\r\nimport { AXColorPropertyEditorComponent } from './editors/color-editor/color.editor';\r\nimport { AXColorPropertyEditorModule } from './editors/color-editor/color.module';\r\nimport { ColumnPropertyEditorComponent } from './editors/column-editor/column.editor';\r\nimport { AXColumnPropertyEditorModule } from './editors/column-editor/column.module';\r\nimport { AXConditionalColorPropertyEditorComponent } from './editors/conditional-color-editor/conditional-color.editor';\r\nimport { AXConditionalColorPropertyEditorModule } from './editors/conditional-color-editor/conditional-color.module';\r\nimport { AXSwitchPropertyEditorModule } from './editors/switch-editor/number.module';\r\nimport { AXSwitchPropertyEditorComponent } from './editors/switch-editor/number.editor';\r\nimport { AXDatePropertyEditorModule } from './editors/date-editor/date.module';\r\nimport { AXDatePropertyEditorComponent } from './editors/date-editor/date.editor';\r\nimport { AXTimePropertyEditorModule } from './editors/time-editor/time.module';\r\nimport { AXTimePropertyEditorComponent } from './editors/time-editor/time.editor';\r\n\r\n\r\nconst WDIGET_MODULES = [\r\n AXNumberBoxPropertyEditorModule,\r\n AXTextPropertyEditorModule,\r\n AXSelectBoxPropertyEditorModule,\r\n AXRangePropertyEditorModule,\r\n AXColorPropertyEditorModule,\r\n AXConditionalColorPropertyEditorModule,\r\n AXColumnPropertyEditorModule,\r\n AXSwitchPropertyEditorModule,\r\n AXDatePropertyEditorModule,\r\n AXTimePropertyEditorModule\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n WDIGET_MODULES,\r\n RouterModule.forChild([\r\n {\r\n component: AXTextPropertyEditorComponent,\r\n path: 'ax/editors/text'\r\n },\r\n {\r\n component: AXSelectBoxPropertyEditorComponent,\r\n path: 'ax/editors/select'\r\n },\r\n {\r\n component: AXNumberBoxPropertyEditorComponent,\r\n path: 'ax/editors/number'\r\n },\r\n {\r\n component: AXRangePropertyEditorComponent,\r\n path: 'ax/editors/range'\r\n },\r\n {\r\n component: AXConditionalColorPropertyEditorComponent,\r\n path: 'ax/editors/conditional-color'\r\n },\r\n {\r\n component: AXColorPropertyEditorComponent,\r\n path: 'ax/editors/color'\r\n },\r\n {\r\n component: AXSwitchPropertyEditorComponent,\r\n path: 'ax/editors/switch'\r\n },\r\n {\r\n component: ColumnPropertyEditorComponent,\r\n path: 'ax/editors/column'\r\n }, {\r\n component: AXDatePropertyEditorComponent,\r\n path: 'ax/editors/date'\r\n },\r\n {\r\n component: AXTimePropertyEditorComponent,\r\n path: 'ax/editors/time'\r\n },\r\n ])\r\n ],\r\n exports: [AXPropertyEditorRendererDirective],\r\n declarations: [AXPropertyEditorRendererDirective],\r\n providers: [],\r\n})\r\nexport class AXProppertyEditorModule { }\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@acorex/components/lib/validation/validation-rule.widget.ts","ng://@acorex/components/lib/validation/validation.component.ts","ng://@acorex/components/lib/base/events.class.ts","ng://@acorex/components/lib/base/element.class.ts","ng://@acorex/components/lib/popover/custom-cdk-overlay.service.ts","ng://@acorex/components/lib/popover/overlay.service.ts","ng://@acorex/components/lib/loading/loading-indicator.component.ts","ng://@acorex/components/lib/loading/loading.service.ts","ng://@acorex/components/lib/page/page.component.ts","ng://@acorex/components/lib/base/base-page.class.ts","ng://@acorex/components/lib/button/button.component.ts","ng://@acorex/components/lib/button/button.module.ts","ng://@acorex/components/lib/calendar/calendar-box/calendar-box.component.ts","ng://@acorex/components/lib/popover/popover.component.ts","ng://@acorex/components/lib/popover/popover.module.ts","ng://@acorex/components/lib/calendar/calendar-box/calendar-box.module.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler-views.property.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.class.ts","ng://@acorex/components/lib/toolbar/toolbar-item.ts","ng://@acorex/components/lib/menu/menu.component.ts","ng://@acorex/components/lib/toolbar/menu/toolbar-menu.component.ts","ng://@acorex/components/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts","ng://@acorex/components/lib/calendar/scheduler/views/scheduler-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts","ng://@acorex/components/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts","ng://@acorex/components/lib/toolbar/search/toolbar-search.component.ts","ng://@acorex/components/lib/data-source/read-param.ts","ng://@acorex/components/lib/data-source/datasource.component.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.component.ts","ng://@acorex/components/lib/toolbar/toolbar.component.ts","ng://@acorex/components/lib/toolbar/title/toolbar-title.component.ts","ng://@acorex/components/lib/toolbar/group-button/toolbar-group-button.component.ts","ng://@acorex/components/lib/menu/menu2.component.ts","ng://@acorex/components/lib/menu/menu-item.component.ts","ng://@acorex/components/lib/tooltip/tooltip.directive.ts","ng://@acorex/components/lib/tooltip/tooltip.module.ts","ng://@acorex/components/lib/menu/menu.module.ts","ng://@acorex/components/lib/toolbar/toolbar.module.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.module.ts","ng://@acorex/components/lib/checkbox/checkbox.component.ts","ng://@acorex/components/lib/checkbox/checkbox.module.ts","ng://@acorex/components/lib/context-menu/context-menu.component.ts","ng://@acorex/components/lib/context-menu/context-menu.directive.ts","ng://@acorex/components/lib/context-menu/context-menu.module.ts","ng://@acorex/components/lib/data-filter/filter.class.ts","ng://@acorex/components/lib/selection-list/selection-list.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-date.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-number.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-selection.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-string.component.ts","ng://@acorex/components/lib/textbox/textbox.component.ts","ng://@acorex/components/lib/toast/toast-wrapper/toast-wrapper.component.ts","ng://@acorex/components/lib/toast/toast-message/toast-message.component.ts","ng://@acorex/components/lib/toast/toast.service.ts","ng://@acorex/components/lib/data-filter/filter-panel/filter-panel.component.ts","ng://@acorex/components/lib/data-filter/toolbar/filter-toolbar.component.ts","ng://@acorex/components/lib/panel-box/panel-box.component.ts","ng://@acorex/components/lib/panel-box/panel-box.module.ts","ng://@acorex/components/lib/dropdown/dropdown.component.ts","ng://@acorex/components/lib/date-picker/date-picker.component.ts","ng://@acorex/components/lib/form-group/form-group.component.ts","ng://@acorex/components/lib/form-group/form-group.module.ts","ng://@acorex/components/lib/textbox/textbox.module.ts","ng://@acorex/components/lib/dropdown/dropdown.module.ts","ng://@acorex/components/lib/date-picker/date-picker.module.ts","ng://@acorex/components/lib/toast/toast.module.ts","ng://@acorex/components/lib/selection-list/selection-list.module.ts","ng://@acorex/components/lib/validation/validation-form.component.ts","ng://@acorex/components/lib/validation/validation.module.ts","ng://@acorex/components/lib/data-filter/filter.module.ts","ng://@acorex/components/lib/data-list/core/data-list.component.ts","ng://@acorex/components/lib/data-list/list/toolbar-list-view.component.ts","ng://@acorex/components/lib/data-list/list/list.component.ts","ng://@acorex/components/lib/data-source/datasource.module.ts","ng://@acorex/components/lib/data-list/list/list.module.ts","ng://@acorex/components/lib/dialog/dialog.component.ts","ng://@acorex/components/lib/dialog/dialog.module.ts","ng://@acorex/components/lib/popup/popup.component.ts","ng://@acorex/components/lib/popup/popup.service.ts","ng://@acorex/components/lib/dialog/dialog.service.ts","ng://@acorex/components/lib/drawer/drawer.component.ts","ng://@acorex/components/lib/drawer/drawer.module.ts","ng://@acorex/components/lib/fieldset/fieldset.component.ts","ng://@acorex/components/lib/fieldset/fieldset.module.ts","ng://@acorex/components/lib/label/label.component.ts","ng://@acorex/components/lib/label/label.module.ts","ng://@acorex/components/lib/loading/loading-panel.component.ts","ng://@acorex/components/lib/loading/loading.module.ts","ng://@acorex/components/lib/number-box/number-box.component.ts","ng://@acorex/components/lib/number-box/number-box.module.ts","ng://@acorex/components/lib/page/content.component.ts","ng://@acorex/components/lib/page/footer.component.ts","ng://@acorex/components/lib/page/page.module.ts","ng://@acorex/components/lib/password-box/password-box.component.ts","ng://@acorex/components/lib/password-box/password-box.module.ts","ng://@acorex/components/lib/popup/popup.module.ts","ng://@acorex/components/lib/progress-bar/progress-bar.component.ts","ng://@acorex/components/lib/progress-bar/progress-bar.module.ts","ng://@acorex/components/lib/query-builder/query-builder.class.ts","ng://@acorex/components/lib/searchbox/searchbox.component.ts","ng://@acorex/components/lib/selectbox/selectbox.component.ts","ng://@acorex/components/lib/query-builder/query-builder-rule.component.ts","ng://@acorex/components/lib/query-builder/query-builder-popup/query-builder-popup.component.ts","ng://@acorex/components/lib/query-builder/query-builder.service.ts","ng://@acorex/components/lib/query-builder/query-builder-group.component.ts","ng://@acorex/components/lib/query-builder/query-builder.component.ts","ng://@acorex/components/lib/searchbox/searchbox.module.ts","ng://@acorex/components/lib/selectbox/selectbox2.component.ts","ng://@acorex/components/lib/selectbox/selectbox.module.ts","ng://@acorex/components/lib/query-builder/query-builder.module.ts","ng://@acorex/components/lib/switch/switch.component.ts","ng://@acorex/components/lib/switch/switch.module.ts","ng://@acorex/components/lib/tab-page/tab-page.service.ts","ng://@acorex/components/lib/tab-page/tab-page-host.component.ts","ng://@acorex/components/lib/tab-page/tab-page-Renderer.component.ts","ng://@acorex/components/lib/tab-page/tab-page.module.ts","ng://@acorex/components/lib/tab-strip/tab-strip.component.ts","ng://@acorex/components/lib/tab-strip/tab-strip.module.ts","ng://@acorex/components/lib/tab-view/dynamic-tabs.directive.ts","ng://@acorex/components/lib/tab-view/tab.component.ts","ng://@acorex/components/lib/tab-view/tab-view.component.ts","ng://@acorex/components/lib/tab-view/tab-view.module.ts","ng://@acorex/components/lib/textarea/textarea.component.ts","ng://@acorex/components/lib/textarea/textarea.module.ts","ng://@acorex/components/lib/time-picker/time-picker.component.ts","ng://@acorex/components/lib/time-picker/time-picker.module.ts","ng://@acorex/components/lib/tree-side-menu/tree-side-menu.component.ts","ng://@acorex/components/lib/tree-side-menu/tree-side-menu.module.ts","ng://@acorex/components/lib/tree-view/tree-view.component.ts","ng://@acorex/components/lib/tree-view/tree-view.module.ts","ng://@acorex/components/lib/upload-file/upload-file.component.ts","ng://@acorex/components/lib/upload-file/upload-file.module.ts","ng://@acorex/components/lib/accordion/accordion.component.ts","ng://@acorex/components/lib/accordion/accordion.module.ts","ng://@acorex/components/lib/property-editor/property-editor.class.ts","ng://@acorex/components/lib/property-editor/property-editor-renderer.directive.ts","ng://@acorex/components/lib/property-editor/editors/text-editor/text.editor.ts","ng://@acorex/components/lib/property-editor/editors/text-editor/text.module.ts","ng://@acorex/components/lib/property-editor/editors/number-editor/number.editor.ts","ng://@acorex/components/lib/property-editor/editors/number-editor/number.module.ts","ng://@acorex/components/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts","ng://@acorex/components/lib/property-editor/editors/selectbox-editor/selectbox.module.ts","ng://@acorex/components/lib/property-editor/editors/range-editor/range.editor.ts","ng://@acorex/components/lib/color-picker/color-box/color-box.component.ts","ng://@acorex/components/lib/color-picker/color-picker.component.ts","ng://@acorex/components/lib/color-picker/color-picker.module.ts","ng://@acorex/components/lib/property-editor/editors/range-editor/range.module.ts","ng://@acorex/components/lib/property-editor/editors/color-editor/color.editor.ts","ng://@acorex/components/lib/property-editor/editors/color-editor/color.module.ts","ng://@acorex/components/lib/property-editor/editors/column-editor/column.editor.ts","ng://@acorex/components/lib/property-editor/editors/column-editor/column.module.ts","ng://@acorex/components/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts","ng://@acorex/components/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts","ng://@acorex/components/lib/property-editor/editors/switch-editor/number.editor.ts","ng://@acorex/components/lib/property-editor/editors/switch-editor/number.module.ts","ng://@acorex/components/lib/property-editor/editors/date-editor/date.editor.ts","ng://@acorex/components/lib/property-editor/editors/date-editor/date.module.ts","ng://@acorex/components/lib/property-editor/editors/time-editor/time.editor.ts","ng://@acorex/components/lib/property-editor/editors/time-editor/time.module.ts","ng://@acorex/components/lib/property-editor/property-editor.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","__asyncValues","asyncIterator","settle","AXValidationRules","addRule","name","rule","exists","get","registredRules","find","AXValidationRuleComponent","type","enabled","validate","regRule","internalValidate","message","ruleValue","AXTranslator","isArray","ex","RegExp","test","res_1","val","catch","finally","Input","Component","selector","template","AXValidation","rules","validateOn","_this","all","map","AXValidationComponent","_super","rulesChange","EventEmitter","showMessage","_rules","emit","ngAfterContentInit","_a","contentItems","toArray","ContentChildren","QueryList","Output","AXValidationComponent_1","providers","provide","useExisting","AXHtmlEvent","AXBaseEvent","AXValueEvent","AXDataEvent","AXBaseComponent","uid","AXHtmlUtil","getUID","AXBaseInputChangeEvent","AXValidatableComponent","__valueField","tabIndex","initValidation","elementRef","valueField","validation","__nativeElement","nativeElement","__validation","undefined","clearValidationStyle","applyValidationStyle","element","clear","formGroup","closest","formItem","querySelector","parent_1","_b","_c","parentElement","_d","classList","remove","_e","_f","add","removeChild","parent_2","span","document","createElement","innerText","appendChild","AXBaseTextComponent","cdr","ref","disabled","readonly","textAlign","size","userChange","onkey","onBlur","onFocus","onValueChanged","valueChange","icon","allowClear","ngAfterViewInit","input","onkeyup","onkeydown","onkeypress","_validation","_contentValidation","_value","old","component","oldValue","isUserChange","detectChanges","focus","isFocused","activeElement","setTextAlign","handleInputBlur","htmlElement","htmlEvent","handleInputFocus","ViewChild","static","ContentChild","ElementRef","AXBaseButtonComponent","click","AXBaseDropdownComponent","fitParent","showDropDownButton","DynamicOverlayContainer","setContainerElement","containerElement","_containerElement","Injectable","providedIn","OverlayContainer","DynamicOverlay","scrollStrategies","_overlayContainer","_componentFactoryResolver","_positionBuilder","_keyboardDispatcher","_injector","_ngZone","_document","_directionality","rendererFactory","renderer","createRenderer","_dynamicOverlayContainer","setStyle","createOn","config","ScrollStrategyOptions","ComponentFactoryResolver","OverlayPositionBuilder","OverlayKeyboardDispatcher","Injector","NgZone","Inject","args","DOCUMENT","Directionality","RendererFactory2","Overlay","AXOverlayService","overlayService","overlayService2","appRef","show","content","context","configs","hasBackdrop","transparentBackdrop","closeOnClickOutside","portal","positionStrategy","viewRef","components","instance","TemplateRef","TemplatePortal","ComponentPortal","position","targetElement","flexibleConnectedTo","withPositions","withPush","global","centerHorizontally","centerVertically","scrollStrategy","reposition","autoClose","scroll","block","disposeOnNavigation","backdropClass","panelClass","overlayRef","host","attach","setTimeout","changeDetectorRef","merge","backdropClick","detachments","subscribe","dispose","onBackdropClick","bind","ApplicationRef","AXLoadingIndicatorComponent","ngOnInit","AXLoadingService","injection","_stack","location","com","id","Date","getTime","hide","filter","AXRenderService","AXPageComponent","el","loadingService","_isLoading","_loadingId","ChangeDetectorRef","AXPageCloseEvent","cancel","AXPageClosedPromise","executor","close","closeMethod","AXBasePageComponent","onClosed","pageContainer","isLoading","data","onClosing","ngOnDestroy","unsubscribe","AXBasePopupPageComponent","_footerButtons","onFooterButtonsChanged","Subject","configFooterButtons","getFooterButtons","buttons","footerButtons","onFooterButtonClick","AXButtonComponent","submitBehavior","cancelBehavior","loading","selected","focusButton","handleClick","stopPropagation","onKeydownHandler","preventDefault","container","HostListener","KeyboardEvent","encapsulation","ViewEncapsulation","None","COMPONENT","MODULES","CommonModule","AXButtonModule","NgModule","declarations","imports","exports","AXCalendarBoxComponent","weekdays","jalali","locale","AXConfig","dir","number","gregorian","selectableHoliday","dayStyle","dayMinMaxResoan","showTodayButton","matrix","rotated","_view","_depth","holidays","weekends","onClick","getHoliday","getWeekend","navigate","view","date","vv","AXDateTime","convert","unValidDate","max","min","isInMInMaxRange","equal","setFocus","clone","focusedValue","today","viewRange","month","range","findDay","split","toISOString","getStyle","style","getTitle","text","compaireNew","initLayout","getViewCompaire","numRotate","path","getTodayName","prev","rotate","array","len","a","start","end","fd","startOf","startTime","firstDayOfWeek","endOf","endDayOfWeek","AXDateTimeRange","matrixify","applyStyle","enumurate","nextMonth","splice","dates","items","forEach","j","item","focused","unselect","h","holiday","indexDay_1","Math","floor","cc","Number","changeView","arr","cols","ceil","slice","setDayClick","event","setMonthClick","depth","set","year","monthOfYear","setYearClick","setToday","trackByFn","index","changeDetection","ChangeDetectionStrategy","OnPush","AXPopoverComponent","zone","openMode","closeMode","_visible","internalShow","internalHide","toggle","visible","run","open","isOpen","overlay","targetEl","addEventListener","removeEventListener","AXPopoverModule","AXCalendarBoxModule","AXCoreModule","AXSchedulerViewProperty","caption","interval","Attribute","AXSchedulerViewsProperty","AXAsyncEventArgs","onComplete","complete","AXSchedulerEventChangeArgs","canceled","alignment","AXMenuItemClickEvent","AXEvent","AXMenuComponent","onItemClick","selection","mode","direction","_menuTemplate","_contentMenuTemplate","_items","rtl","window","getComputedStyle","getPropertyValue","handleItemClick","disable","AXToolbarMenuComponent","update","AXToolbarMenuComponent_1","AXToolbarItem","AXToolbarSchedulerViewsComponent","onViewChanged","menu","AXToolbarSchedulerViewsComponent_1","AXSchedulerBaseViewComponent","timeSlot","onNavigatorDateChanged","events","slots","onEventChanged","_navigatorDate","getEvents","unit","ngAfterViewChecked","updateSize","onDragDropOnDay","time","previousContainer","opacity","oldSlot","newSlot","er","slotTime","z","durDay","duration","endTime","durTime_1","Directive","AXSchedulerDayTimeViewComponent","elm","times","vScroll","header","firstTr","index_1","querySelectorAll","children","width","offsetWidth","height","clientHeight","arrangeEvents","addDay","slot","display","navigatorDate","height_1","offsetHeight","attributes","getNamedItem","total","abs","hour","findEventIndex","sort","d1","d2","indexOf","AXSchedulerDayTimeViewComponent_1","AXSchedulerMonthViewComponent","weekDays","title","startDayOfWeek","dragHour","deltaY","addMonth","rows","dur","toString","matrixSlots","slotTd","viewMoreDiv","viewMore","visibility","top","getBoundingClientRect","bottom","innerHTML","onDragStarted","runOutsideAngular","dragEnterSlot","source","dropContainer","drageMouseMove","onDragEntered","dragPreview","onDragEnded","diff","round","AXSchedulerMonthViewComponent_1","AXToolbarSchedulerNavigatorComponent","viewDepth","onNavigate","startIcon","tooltip","goto","onDateChange","calDate","sameDay","sameMonth","sameYear","format","cal","toolbar","AXToolbarSchedulerNavigatorComponent_1","AXSchedulerAgendaViewComponent","hideEmptyDays","AXSchedulerAgendaViewComponent_1","AXSchedulerTimelineViewComponent","AXSchedulerTimelineViewComponent_1","AXToolbarSearchComponent","_text","inputSearch","onSearchChanged","searchChangeObserver","Observable","observer","pipe","debounceTime","distinctUntilChanged","AXToolbarSearchComponent_1","AXDataSourceReceivedEvent","AXDataSourceComponent","onDataReceived","onFetchStart","fetch","params","provideData","extra","_data","AXDataSourceReceivedResult","requestId","AXSchedulerComponent","viewItems","_currentView","setView","viewManager","views","createView","startAnim","portalOutlet","detach","compRef","setNavigatorText","refresh","toolbarNavigator","dateRange","groupName","dataSource","searchText","toolbarView","currentView","searchInput","x","CdkPortalOutlet","AXToolbarComponent","AXToolbarTitleComponent","AXToolbarTitleComponent_1","AXToolbarButtonGroupComponent","itemClick","AXToolbarButtonGroupComponent_1","AXMenu2Component","viewContainerRef","subItemsOverlays","level","showSubmenu","originX","originY","overlayX","overlayY","AXMenu2Component_1","onDocumentClick","contains","hideOverlays","ViewContainerRef","AXMenuItemComponent","showSubMenu","showSubItems","AXMenuItem","AXTooltipDirective","placement","delay","offset","onMouseEnter","tooltipTitle","onMouseLeave","setPosition","addClass","removeClass","createText","left","hostPos","tooltipPos","scrollPos","pageYOffset","documentElement","scrollTop","right","Renderer2","AXTooltipModule","AXMenuModule","COMPONENTS","AXToolbarModule","AXSchedulerModule","PortalModule","DragDropModule","entryComponents","AXCheckBoxItemClick","AXCheckBoxComponent","indeterminate","AXCheckBoxModule","FormsModule","AXContextMenuComponent","_left","_top","_rtl","containRec","innerWidth","innerHeight","handleClickItem","class","AXContextMenuItemClickEvent","AXContextMenuDirective","factoryResolver","injector","onContextMenuItemClick","internalItems","onContextMenu","getMenuItems","createContextMenu","contextMenu","wrapper","wrapperClick","wrapperRClick","factory","resolveComponentFactory","componentRef","createComponent","clearComponentSubscriptions","createComponentSubscriptions","elementsFromPoint","clientX","clientY","includes","clickSubscribe","closeSubscribe","dataItem","contextDataItem","menuItem","contextMenuItems","MouseEvent","AXContextMenuModule","AXFilterColumnComponent","operator","field","activeChange","_active","active","setFilter","AXSelectionListComponent","_selectedItems","textField","selectedItemsChange","selectedValuesChange","selectedItems","selectedValues","JSON","stringify","onCheckValueChange","checked","onvalueChanged","AXFilterColumnDateComponent","fromDate","toDate","selectedItem","showCustom","showSpecific","dateChange","onSelectedChanged","condition","dataType","AXFilterColumnDateComponent_1","AXFilterColumnNumberComponent","operators","onOperatorChange","onTextChange","AXFilterColumnNumberComponent_1","AXFilterColumnSelectionComponent","values","onSelectChange","some","AXFilterColumnSelectionComponent_1","AXFilterColumnStringComponent","AXFilterColumnStringComponent_1","AXTextBoxComponent","showMask","maskGuid","maskPlaceholder","maskKeepCharPositions","AXTextBoxComponent_1","AXToastWrapperComponent","AXToastMessageComponent","elRef","timeOut","closeable","toastWidth","interval_1","setInterval","clearInterval","AXToastService","injectionService","info","options","success","warning","opt","appendComponent","toastWrapper","AXFilterPanelComponent","toast","groups","predefinedFilters","saveItems","filterChange","updateMenu","filters","onValueChange","con","load","cancelSaveFilter","col","panel","setFilterByIndex","applySize","setFilterByName","removeFilter","footer","savedList","currentFilter","applySaveFilter","isNew","isInEdit","onMenuItemClick","handleRenameClick","tbxNameOnKey","tbxName","ViewChildren","AXToolbarFilterViewComponent","_uid","menuItems","divider","selectAll","addPredefinedList","filterPanel","root","setCurrent","name_1","prompt","findSelected","onCtxClick","menuId","currentTarget","getAttribute","AXToolbarFilterViewComponent_1","AXPanelBoxComponent","_caption","collapsedChange","_collapsed","allowCollapse","collapsed","animations","trigger","state","padding","transition","animate","AXPanelBoxModule","AXDropdownComponent","dropdownToggle","onButtonClick","dropdownEL","dropdownWidth","endButtons","childNodes","paddingInlineEnd","clientWidth","handleArrowClick","ensureOverlayCreated","templatePortal","setDirection","baseTemplate","hasAttached","updatePosition","AXDataPickerChangeEvent","AXDatePickerComponent","yyyyMMdd","ddMMyyyy","yyyyddMM","placeholder","showToday","openByClick","cursorPosition","model","_renderPicker","typeChange","_type","_setDateType","selectToday","convertMaskToDate","convertStringToGregorian","convertMask","dateType","mask","monnth","day","textChange","dropdown","markForCheck","guide","keepCharPositions","onStartfocus","caretColor","setCaretPosition","handleButtonClick","handleKeyPress","selectionStart","inputChar","String","fromCharCode","charCode","ind1","charAt","ind2","ind3","ind4","ind5","ind6","ind7","ind8","ind9","ind10","setCaret","ctrl","pos","setSelectionRange","AXDatePickerComponent_1","AXFormGroupComponent","required","div","AXFormGroupModule","TextMaskModule","AXTextBoxModule","OverlayModule","AXDropdownModule","AXDatePickerModule","AXToastModule","AXSelectionListModule","AXValidationFormComponent","widgets","onInit","widgetsQuery","w","failed","addWidget","widget","descendants","AXValidationModule","AXFilterModule","AXDataListComponent","configDataList","dataReceived","AXToolbarListViewComponent","vertical","verticalWrap","horizontalWrap","horizontal","onDirectionChanged","_direction","AXToolbarListViewComponent_1","AXListComponent","connectedList","allowMoveItem","_dataSource","_contentDataSource","_itemTemplate","_contentItemTemplate","_emptyTemplate","_contentEmptyTemplate","viewToolbar","dragDrop","AXDataSourceModule","AXListModule","AXDialogComponent","AXDialogModule","AXTranslatorModule","AXPopupComponent","resolver","rendererService","modal","maximizable","closable","headerButtons","console","log","findLoadedComponentByRoute","route","loadComponent","createEmbeddedView","$implicit","popupBody","insert","comRef","onFooterButtonsSubscription","onCloseClick","destroy","onFullScreen","handleFooterButtonClick","read","AXPopupService","stack","arg1","arg2","popup","closePopup","promise","closeFunc","reverse","closingFunc","res","AXDialogAlertResult","_executor","closeAction","action","AXDialogConfirmResult","okayAction","cancelAction","finalAction","okay","final","AXDialogResult","thenAction","AXDialogService","popupService","alert","confirm","_i","AXDrawerComponent","drawerState","transform","AXDrawerModule","BrowserAnimationsModule","AXFieldsetComponent","AXFieldsetModule","AXLabelComponent","AXLabelModule","AXLoadingPanelComponent","AXLoadingModule","A11yModule","AXNumberBoxComponent","showSeparator","showCurrency","showCounter","scrollWeel","showDoubleCounter","maxLength","userQuestionUpdate","userEdite","findDots","findMinus","decimalConstant","lastStep","intStep","decimalNumber","customStep","_values","textValue","isNaN","replace","addCommas","search","calcSeparator","num","addCommas2","nStr","x1","x2","rgx","handleWheel","wheelDelta","upStepHandel","delaySearch","downStepHandel","match","keyCode","figureAfterDot","dotIndex","handleKeyUp","handleKeyDown","countAfterDot","defaultStep","pow","dotPosition","tmp","parseFloat","count","toFixed","parseInt","checkMinMax","replaceAll","doGetCaretPosition","createTextRange","collapse","moveEnd","moveStart","select","AXNumberBoxComponent_1","AXNumberBoxModule","AXPageContentComponent","AXPageFooterComponent","AXPageModule","AXPasswordBoxComponent","eyeIcon","handleShowPassword","AXPasswordBoxComponent_1","AXPasswordBoxModule","AXPopupModule","AXProgressBarComponent","progress","AXProgressBarModule","AXQueryBuilderRuleEvent","AXQueryBuilderGroupEvent","AXSearchBoxComponent","textChanged","handleKeyEvent","AXSelectBoxSelectionChangedEvent","AXSelectBoxComponent","showCheckBox","allowNull","bufferSize","remoteOperation","currentfocusedIndex","showLoading","skip","totalCount","allowSearch","disabledField","itemRemove","itemsChange","hasSelectedValue","itemsFiltered","dropDownDisabled","selectionChanged","itemsStatusObserver","setSelectedItemsChange","differenceBy","Set","waitForData","rowTemplate","rowInputTemplate","scrolled","listContainer","scrollHeight","take","textbox","setSelectedItems","isUserInput","changed","setSelectedIndex","emitSelectionChangedEvent","isItemDisabled","disabledCallback","sign","toLowerCase","itemDiv","scrollIntoView","behavior","compareSelectedValues","addId_1","vId","newId","vv_1","rc","newValue","currentValue","setSelectedValues","dropdownToggleSelecBox","serchBox","handleItemRemoveClick","onFocusTextBox","onTextBoxClick","handleKeyEventSearch","textBoxSelectBox","getItems","selectedItemByIndex","stopImmediatePropagation","isChar","str","code","ctrlKey","isItemSelected","callbackfn","AXSelectBoxComponent_1","AXQueryBuilderRuleComponent","isEditing","fields","onRuleDelete","ruleChanged","showValue","isOnDemandLabel","showSelectBox","showOperatorSelectBox","provideDataBoolean","provideDataOperator","control","getProvideData","optionsData","onDemandLabel","saveRule","form","handleEditClick","handleCommitClick","handleRemoveClick","captionChange","dataField","AXQueryBuilderControl","dataFieldItem","selectBox","valueItem","selectBoxValue","selectBoxBoolean","operatorChange","onDemandLabelChange","valueBooleanChange","getOnDemandName","getOption","join","THAT_1","AXQueryBuilderRule","AXQueryBuilderGroup","AXQueryBuilderPopupComponent","complateValue","makeJsonString","groupString","group","groupCopy","parse","getNoValueRule","getValue","gr","textValueChange","findNullValue","AXQueryBuilderService","canOpen","canRun","runQuery","getQueryStringSimple","query","codeOperator","getQueryString","queryString","queryStringElastic","AXQueryBuilderGroupComponent","qs","groupRuleChanged","showGroupCondition","ruleDelete","parent","addGroup","addGroupOR","makeGroup","addGroupAND","_condition","changeDetailMode","handleChangeClick","AXQueryBuilderComponent","rootGroup","onRuleChanged","saved","getQueryBuilder","AXSearchBoxModule","AXSelectBoxValueChangedEvent","AXSelectBox2Component","selectionMode","selectionDataMode","AXObjectUtil","deepJSONClone","selectedKeys","renderSelection","orgRes","ii","fake","func","focusOnSearchBox","focusOnCurrentFocusedIndex","selectItems","internalGetItemValue","unselectItems","internalGetItemByDataMode","isLetter","selectItemByNav","focusedItem","toggleSelect","inputedVal","searchBox","AXSelectBox2Component_1","AXScrollModule","AXSelectBoxModule","MODUELS","AXQueryBuilderModule","AXSwitchComponent","AXSwitchModule","AXTabPageService","tabs","opened","activated","closed","arg3","newTab","pinned","existTab","findExistTab","tab","doCloseAction","currentTab","sender","tab_1","AXTabPageHostComponent","tabService","Error","hostView","AXTabPageRendererComponent","childs","subscriptions","hidden","reattach","componentRef_1","hostref","AXTabPageModule","AXTabStripChangedEvent","AXTabStripComponent","onTabChanged","seledtedTab","AXTabStripModule","DynamicTabsDirective","viewContainer","AXTabComponent","isCloseable","AXTabViewComponent","fullWidth","dynamicTabs","onActiveTab","first","selectTab","openTab","componentFactory","dynamicTabPlaceholder","dataContext","closeTab","closeActiveTab","activeTabs","Boolean","AXTabViewModule","AXTextAreaComponent","AXTextAreaComponent_1","AXTextAreaModule","AXTimePickerChangedEvent","AXTimePickerComponent","showCurentTime","clearDisabled","HHmmss","HHmm","HH","hhmmss","hhmm","hh","hhmmssam","hhmmam","hham","valueHam","valueMam","valueSam","timeType","minute","second","indOld4","indOld7","indOld10","clearValue","placeholderChar","getHours","amHour","getMinutes","sec","getSeconds","firstChar","secondChar","ind11","hourind","afterHourind","beforeHourind","secondind","typeind","typeind2","afterHourIndex","minuteind","afterMinuteIndex","secondIndex","aftersecondIndex","AXTimePickerComponent_1","AXTimePickerModule","itemData","AXTreeSideMenuItemData","AXTreeSideMenuSelectionChangedEvent","AXTreeSideMenuItemClick","AXTreeSideMenuComponent","cssClass","selectionLevel","selectedFieldName","selectNodesRecursive","seletedKeyFields","keyField","hasChildField","bordered","lazyLoading","allowDrag","iconStart","closeIconName","openIconName","onItemOpening","onItemClosing","onItemDrag","onItemMoved","list","selectedParents","loadAllChildren","listLoad","validDrop","lockedDrag","childField","showContextMenu","handleOnContextMenuItem","internalSelectItem","parentNode","changeParentSelect","changeChildSelect","makeNode","addChildren","node","AXTreeSideMenuNode","k","hasChild","allselect","alldeselect","oneselect","isindeterminate","toggleNode","flag","itemdbClick","handleOnNodeClick","loaded","itemRow","random","hideLoading","disabledCheckBox","selectItem","result_1","onDragStart","itemDrag","onDragEnd","itemDrop","drop","sameChilde","movedEvent","AXTreeSideMenuItemMovedEvent","dragDropItem","child","itemChild","itemParent","listChange","changeChiled","openAll","loadAll","scrolIntoView","closeAll","unSelectAll","getSelectedNodes","selectItemsNode","getSelectedParents","selectItemsParent","getParentsId","keyFields","getSelectedKeyFields","Ids","AXTreeSideMenuModule","AXTreeViewItemData","AXTreeViewselectionChangedEvent","AXTreeViewseletedKeyFieldsChangedEvent","AXTreeViewItemClick","AXTreeViewComponent","checkParents","checkChilds","seletedKeyFieldsChanged","selectableField","isSelectedItem","loced","AXTreeViewNode","selectParent","unSelectParent","selectChilds","childeren","unSelectChilds","nodeClick","AXTreeViewItemMovedEvent","unSelectItem","AXTreeViewModule","AXUploadFileComponent","rendrer","onLoad","onProgress","files","fileName","onDeleteClick","onFileChange","addFile","fileInput","dropRef","progressRef","overlayDiv","handleOverlayDragOver","handleDragOver","handleDragLeave","handleDrop","dataTransfer","file","progressDiv","progressLabel","reader","FileReader","pv","uploaded","intv","readAsDataURL","HTMLElement","AXUploadFileModule","AXAccordionComponent","multiple","panels","handleCollapsedChanged","AXAccordionModule","AXProperyEditorComponent","_initiated","_valueBound","validatableComponentRegistered","onRenderCompleted","registerForValidationForm","handleValueChange","cls","property","AXPropertyDecorators","register","REGISTRY","AXPropertyDecorator","has","isValid","getProperties","superClass","getPrototypeOf","AXPropertyEditorRendererDirective","componentFactoryResolver","renderService","eventService","_context","editorClass","cmpRef","subscription","broadcast","groupId","watchChanges","assignProps","validationForm","varsRegx","varNameRegx","editorOptions","opt_1","vars_1","on","execCode","p2","deepCopy","Function","keys","prop","setPropByPath","vars","val_1","this_1","AXEventService","AXTextPropertyEditorComponent","clearButton","textBox","AXTextPropertyEditorModule","AXNumberBoxPropertyEditorComponent","minValue","maxValue","AXNumberBoxPropertyEditorModule","AXSelectBoxPropertyEditorComponent","intVal","initiated","_filter","AXSelectBoxPropertyEditorModule","AXRangePropertyEditorComponent","ranges","onFormInit","editRow","tplEdit","handleAddClick","color","AXColorBoxComponent","inputFormat","onColorSelect","rColor","gColor","bColor","colors","selectColor","rgb","AXColorUtil","hex2Rgb","onColorClick","handleColorChange","rgb2Hex","AXColorBoxComponent_1","AXColorPickerComponent","showClear","findTextColor","contrastToWhite","AXColorPickerComponent_1","AXColorPickerModule","AXRangePropertyEditorModule","AXColorPropertyEditorComponent","AXColorPropertyEditorModule","ColumnPropertyEditorComponent","columns","columnTypeData","handleDataReceived","moveItemInArray","previousIndex","currentIndex","handleAddColumn","fieldName","fieldType","displayType","fillByUser","rowHeader","AXColumnPropertyEditorModule","AXConditionalColorPropertyEditorComponent","booleanItems","updateOperations","dataTypes","getDefaultValue","opr","oprItem","getIcon","AXConditionalColorPropertyEditorModule","conditional-color-property-editor","replaced-color","replaced-title","AXSwitchPropertyEditorComponent","AXSwitchPropertyEditorModule","AXDatePropertyEditorComponent","AXDatePropertyEditorModule","AXTimePropertyEditorComponent","AXTimePropertyEditorModule","WDIGET_MODULES","AXProppertyEditorModule","RouterModule","forChild"],"mappings":"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","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 { Component, Input } from '@angular/core';\r\nimport { AXValidationRuleResult, AXValidationRule, AXValidationRuleTypes } from './validation.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\n\r\n// @dynamic\r\nexport class AXValidationRules {\r\n private static registredRules: { name: string, rule: AXValidationRule }[] = [];\r\n\r\n public static addRule(name: string, rule: AXValidationRule) {\r\n const exists = AXValidationRules.get(name);\r\n if (exists) {\r\n exists.rule = rule;\r\n }\r\n else {\r\n AXValidationRules.registredRules.push({\r\n name,\r\n rule\r\n });\r\n }\r\n }\r\n\r\n public static get(name: string) {\r\n return this.registredRules.find(c => c.name === name);\r\n }\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ax-validation-rule',\r\n template: ''\r\n})\r\nexport class AXValidationRuleComponent implements AXValidationRule {\r\n @Input()\r\n type: AXValidationRuleTypes = 'required';\r\n @Input()\r\n message: string;\r\n @Input()\r\n value: any;\r\n\r\n @Input()\r\n enabled: boolean = true;\r\n\r\n validate(value: any): Promise<AXValidationRuleResult> {\r\n if (this.enabled === false) {\r\n return Promise.resolve({ result: true });\r\n }\r\n const regRule = AXValidationRules.get(this.type);\r\n if (regRule) {\r\n return this.internalValidate(regRule.rule.type, value, this.message || regRule.rule.message, regRule.rule.value);\r\n }\r\n else {\r\n return this.internalValidate(this.type, value, this.message, this.value);\r\n }\r\n }\r\n\r\n\r\n private internalValidate(type: string, value?: any, message?: string, ruleValue?: any): Promise<AXValidationRuleResult> {\r\n return new Promise<AXValidationRuleResult>(resolve => {\r\n switch (type) {\r\n case 'required':\r\n resolve({\r\n message: message || AXTranslator.get('validation.messages.required'),\r\n result: value != null && value != '' && (!Array.isArray(value) || (Array.isArray(value) && value.length > 0))\r\n });\r\n break;\r\n case 'regex':\r\n const ex = new RegExp(ruleValue);\r\n resolve({\r\n message: message || AXTranslator.get('validation.messages.regex'),\r\n result: ex.test(value)\r\n });\r\n break;\r\n case 'custom':\r\n case 'callback':\r\n if (typeof ruleValue === 'function') {\r\n const res: any = {};\r\n res.message = message;\r\n const val = ruleValue({ value, message });\r\n if (val instanceof Promise) {\r\n val.then(c => {\r\n res.result = c;\r\n }).catch(c => {\r\n res.result = false;\r\n }).finally(() => {\r\n resolve(res);\r\n });\r\n }\r\n else {\r\n res.result = val;\r\n resolve(res);\r\n }\r\n }\r\n else {\r\n resolve({ result: true });\r\n }\r\n break;\r\n default:\r\n resolve({ result: true });\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, ContentChildren, QueryList, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXValidationRuleComponent } from './validation-rule.widget';\r\nimport { AXValidationRule, AXValidationRuleResult } from './validation.class';\r\n\r\n\r\n\r\nexport class AXValidation {\r\n\r\n rules: AXValidationRule[] = [];\r\n validateOn: 'blur' | 'change' | 'submit' = 'submit';\r\n showMessage: boolean;\r\n\r\n validate(value: any): Promise<AXValidationRuleResult> {\r\n if (!this.rules || this.rules.length === 0) {\r\n return Promise.resolve({ result: true });\r\n }\r\n return new Promise<AXValidationRuleResult>(resolve => {\r\n Promise.all(\r\n this.rules.map(c => {\r\n if (c instanceof AXValidationRuleComponent) {\r\n return c.validate(value);\r\n }\r\n else {\r\n const v = new AXValidationRuleComponent();\r\n Object.assign(v, c);\r\n return v.validate(value);\r\n }\r\n })\r\n ).then(d => {\r\n const error = d.find(c => c.result === false);\r\n if (error) {\r\n resolve(error);\r\n } else {\r\n resolve({ result: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ax-validation',\r\n template: '<ng-content></ng-content>',\r\n providers: [{ provide: AXValidation, useExisting: AXValidationComponent }]\r\n})\r\nexport class AXValidationComponent extends AXValidation {\r\n\r\n @ContentChildren(AXValidationRuleComponent)\r\n private contentItems: QueryList<AXValidationRuleComponent>;\r\n\r\n\r\n @Output()\r\n rulesChange: EventEmitter<AXValidationRule[]> = new EventEmitter<AXValidationRule[]>();\r\n\r\n @Output()\r\n showMessage: boolean = true;\r\n\r\n private _rules: AXValidationRule[];\r\n\r\n @Input()\r\n public get rules(): AXValidationRule[] {\r\n return this._rules;\r\n }\r\n public set rules(v: AXValidationRule[]) {\r\n this._rules = v;\r\n if (this.rulesChange) {\r\n this.rulesChange.emit(v);\r\n }\r\n }\r\n\r\n @Input()\r\n validateOn: 'blur' | 'change' | 'submit' = null;\r\n\r\n\r\n ngAfterContentInit() {\r\n if (this.rules && this.rules.length === 0) {\r\n this.rules.push(...this.contentItems.toArray());\r\n }\r\n }\r\n}\r\n","export class AXBaseEvent {\r\n component: any;\r\n htmlElement?: HTMLElement;\r\n}\r\n\r\nexport class AXHtmlEvent<E extends Event> extends AXBaseEvent {\r\n\r\n htmlEvent?: E;\r\n}\r\n\r\nexport class AXValueEvent<T> extends AXBaseEvent {\r\n value?: T;\r\n oldValue?: T;\r\n}\r\n\r\nexport class AXDataEvent<T> extends AXBaseEvent {\r\n data?: T;\r\n}\r\n\r\nexport class AXEvent<T, E extends Event>\r\n{\r\n\r\n}\r\nexport interface AXEvent<T, E extends Event> extends AXDataEvent<T>, AXHtmlEvent<E> {\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Input, Output, EventEmitter, ChangeDetectorRef, ViewChild, ElementRef, ContentChild } from '@angular/core';\r\nimport { AXValidationComponent, AXValidation } from '../validation/validation.component';\r\nimport { AXValidationRuleResult } from '../validation/validation.class';\r\nimport { AXHtmlUtil } from '@acorex/core';\r\nimport { AXEvent, AXHtmlEvent, AXValueEvent } from './events.class';\r\n\r\nexport type AXElementSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport abstract class AXBaseComponent {\r\n @Input() cssClass: string;\r\n uid: string = AXHtmlUtil.getUID();\r\n constructor() {\r\n }\r\n}\r\n\r\n\r\nexport class AXBaseInputChangeEvent extends AXValueEvent<any> {\r\n isUserChange?: boolean;\r\n}\r\n\r\nexport interface AXBaseSizableComponent {\r\n size: AXElementSize;\r\n}\r\n\r\nexport interface AXBaseInteractiveComponent {\r\n disabled: boolean;\r\n tabIndex: number;\r\n}\r\n\r\nexport interface AXBaseInputComponent extends AXBaseInteractiveComponent {\r\n readonly: boolean;\r\n focus(): void;\r\n}\r\n\r\n\r\nexport interface AXBaseValueComponent<T> extends AXBaseInputComponent {\r\n onValueChanged?: EventEmitter<AXValueEvent<T>>;\r\n valueChange?: EventEmitter<T>;\r\n value: T;\r\n}\r\n\r\nexport interface AXBaseClickableComponent extends AXBaseInteractiveComponent {\r\n click: EventEmitter<AXHtmlEvent<MouseEvent>>;\r\n}\r\n\r\nexport abstract class AXValidatableComponent extends AXBaseComponent {\r\n\r\n private __valueField: string = 'value';\r\n private __nativeElement: HTMLElement;\r\n private __validation: AXValidation;\r\n\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n protected initValidation(\r\n elementRef: ElementRef,\r\n valueField: string,\r\n validation: AXValidation\r\n ) {\r\n this.__nativeElement = elementRef.nativeElement;\r\n this.__valueField = valueField;\r\n this.__validation = validation;\r\n const value = this[this.__valueField]\r\n if ((!Array.isArray(value) && value) || (Array.isArray(value) && value.length > 0))\r\n this.validate();\r\n }\r\n\r\n get validation() {\r\n return this.__validation;\r\n }\r\n\r\n validate(): Promise<AXValidationRuleResult> {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const result = this.__validation.validate(this[this.__valueField]);\r\n result.then(c => {\r\n if (c.result) {\r\n this.clearValidationStyle(this.__nativeElement);\r\n }\r\n else {\r\n this.applyValidationStyle(this.__nativeElement, c);\r\n }\r\n });\r\n return result;\r\n }\r\n else {\r\n return Promise.resolve({ result: true });\r\n }\r\n }\r\n\r\n\r\n protected clearValidationStyle(element: HTMLElement, clear: boolean = false) {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const formGroup = element.closest('.form-group');\r\n const formItem = formGroup?.querySelector('.form-item') || element.closest('.form-item') || element.querySelector('.form-item');;\r\n const label = formGroup?.querySelector('.form-group-label');\r\n const parent = formItem?.parentElement || element.parentElement;\r\n\r\n formItem?.classList.remove('success-state');\r\n formItem?.classList.remove('error-state');\r\n //formItem?.classList.remove('required-state');\r\n if (!clear) {\r\n formItem?.classList.add('success-state');\r\n }\r\n // label?.classList.remove('error-text');\r\n if (parent.querySelector('span.error-text')) {\r\n parent.removeChild(parent.querySelector('span.error-text'));\r\n }\r\n }\r\n }\r\n\r\n protected applyValidationStyle(element: HTMLElement, v: AXValidationRuleResult): void {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const formGroup = element.closest('.form-group');\r\n const formItem = formGroup?.querySelector('.form-item') || element.closest('.form-item') || element.querySelector('.form-item');\r\n const label = formGroup?.querySelector('.form-group-label');\r\n const parent = formItem?.parentElement || element.parentElement;\r\n formItem?.classList.add('error-state');\r\n formItem?.classList.remove('success-state');\r\n if (parent.querySelector('span.error-text')) {\r\n parent.removeChild(parent.querySelector('span.error-text'));\r\n }\r\n if (this.__validation.showMessage) {\r\n const span = document.createElement('span');\r\n span.innerText = v.message;\r\n span.classList.add('ax', 'error-text');\r\n parent.appendChild(span);\r\n }\r\n // label?.classList.add('error-text');\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport abstract class AXBaseTextComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseValueComponent<string> {\r\n\r\n ngAfterViewInit() {\r\n if (this.input) {\r\n this.input.nativeElement.onkeyup = (e) => {\r\n this.userChange = true;\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n this.input.nativeElement.onkeydown = (e) => {\r\n this.userChange = true;\r\n\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n this.input.nativeElement.onkeypress = (e) => {\r\n this.userChange = true;\r\n\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit(): void {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @ViewChild('input', { static: true })\r\n @ContentChild('input', { static: true })\r\n input: ElementRef<HTMLInputElement>;\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n this.initValidation(this.ref, 'value', v);\r\n }\r\n\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input()\r\n size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n\r\n @Input()\r\n placeholder: string;\r\n\r\n\r\n @Input()\r\n autocomplete: \"on\" | \"off\";\r\n\r\n @Input()\r\n name: string;\r\n\r\n userChange: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, protected ref: ElementRef) {\r\n super();\r\n }\r\n\r\n @Output()\r\n public onkey: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\r\n\r\n @Output()\r\n public onBlur: EventEmitter<AXHtmlEvent<Event>> = new EventEmitter<AXHtmlEvent<Event>>();\r\n\r\n @Output()\r\n public onFocus: EventEmitter<AXHtmlEvent<Event>> = new EventEmitter<AXHtmlEvent<Event>>();\r\n\r\n @Output()\r\n public onValueChanged: EventEmitter<AXBaseInputChangeEvent> = new EventEmitter<AXBaseInputChangeEvent>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n @Input()\r\n icon: string = '';\r\n\r\n @Input()\r\n allowClear: boolean = false;\r\n\r\n private _value: string;\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n if (v !== this._value) {\r\n const old = this._value;\r\n this._value = v;\r\n\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old,\r\n isUserChange: this.userChange\r\n });\r\n this.userChange = false;\r\n this.clearValidationStyle(this.input.nativeElement, v ? false : true);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n focus() {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n clear() {\r\n this.userChange = true;\r\n\r\n this.value = null;\r\n this.input.nativeElement.value = null;\r\n }\r\n\r\n isFocused(): boolean {\r\n return this.input.nativeElement === document.activeElement;\r\n }\r\n\r\n setTextAlign() {\r\n if (this.textAlign === 'left') {\r\n return 'text-left';\r\n }\r\n if (this.textAlign === 'right') {\r\n return 'text-right';\r\n }\r\n }\r\n\r\n handleInputBlur(e: Event) {\r\n this.onBlur.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n\r\n handleInputFocus(e: Event) {\r\n this.onFocus.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n}\r\n\r\nexport abstract class AXBaseButtonComponent extends AXBaseComponent implements AXBaseClickableComponent, AXBaseSizableComponent {\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Output()\r\n click: EventEmitter<AXHtmlEvent<MouseEvent>> = new EventEmitter<AXHtmlEvent<MouseEvent>>();\r\n\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n}\r\n\r\nexport abstract class AXBaseDropdownComponent extends AXBaseComponent implements AXBaseInteractiveComponent, AXBaseSizableComponent {\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize;\r\n\r\n @Input()\r\n fitParent: boolean = true;\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @Input()\r\n showDropDownButton: boolean = true;\r\n\r\n abstract close();\r\n abstract open();\r\n}\r\n","import {\r\n Overlay,\r\n OverlayKeyboardDispatcher,\r\n OverlayPositionBuilder,\r\n ScrollStrategyOptions,\r\n OverlayContainer,\r\n OverlayRef,\r\n OverlayConfig\r\n} from '@angular/cdk/overlay';\r\nimport {\r\n ComponentFactoryResolver,\r\n Inject,\r\n Injector,\r\n NgZone,\r\n Renderer2,\r\n RendererFactory2,\r\n Injectable\r\n} from '@angular/core';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicOverlayContainer extends OverlayContainer {\r\n public setContainerElement(containerElement: HTMLElement): void {\r\n this._containerElement = containerElement;\r\n }\r\n}\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicOverlay extends Overlay {\r\n private readonly _dynamicOverlayContainer: DynamicOverlayContainer;\r\n private renderer: Renderer2;\r\n\r\n constructor(\r\n scrollStrategies: ScrollStrategyOptions,\r\n _overlayContainer: DynamicOverlayContainer,\r\n _componentFactoryResolver: ComponentFactoryResolver,\r\n _positionBuilder: OverlayPositionBuilder,\r\n _keyboardDispatcher: OverlayKeyboardDispatcher,\r\n _injector: Injector,\r\n _ngZone: NgZone,\r\n @Inject(DOCUMENT) _document: any,\r\n _directionality: Directionality,\r\n rendererFactory: RendererFactory2\r\n ) {\r\n super(\r\n scrollStrategies,\r\n _overlayContainer,\r\n _componentFactoryResolver,\r\n _positionBuilder,\r\n _keyboardDispatcher,\r\n _injector,\r\n _ngZone,\r\n _document,\r\n _directionality\r\n );\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n\r\n this._dynamicOverlayContainer = _overlayContainer;\r\n }\r\n\r\n private setContainerElement(containerElement: HTMLElement): void {\r\n this.renderer.setStyle(containerElement, 'transform', 'translateZ(0)');\r\n this._dynamicOverlayContainer.setContainerElement(containerElement);\r\n }\r\n\r\n public createOn(containerElement: HTMLElement, config?: OverlayConfig): OverlayRef {\r\n this.setContainerElement(containerElement);\r\n return super.create(config);\r\n }\r\n}","import { Injectable, ApplicationRef, ViewContainerRef, TemplateRef, EventEmitter } from '@angular/core';\r\nimport { Overlay, PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, Portal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AXConnectedPosition } from '@acorex/core';\r\nimport { merge } from 'rxjs';\r\nimport { DynamicOverlay } from './custom-cdk-overlay.service';\r\n\r\nexport interface AXOverlayViewRef {\r\n instance: any;\r\n dispose: () => void;\r\n}\r\n\r\nexport interface AXOverlayConfigs {\r\n position?: AXConnectedPosition | AXConnectedPosition[];\r\n hasBackdrop?: boolean;\r\n transparentBackdrop?: boolean;\r\n closeOnClickOutside?: boolean;\r\n targetElement?: HTMLElement;\r\n containerElement?: HTMLElement;\r\n onBackdropClick?: () => void;\r\n panelClass?: string[] | string;\r\n backdropClass?: string[] | string;\r\n scroll?: 'auto' | 'block';\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXOverlayService {\r\n constructor(\r\n private overlayService: DynamicOverlay,\r\n private overlayService2: Overlay,\r\n private appRef: ApplicationRef) {\r\n\r\n }\r\n\r\n show(content: any, context?: any, configs?: AXOverlayConfigs): AXOverlayViewRef {\r\n configs = Object.assign({\r\n hasBackdrop: true,\r\n transparentBackdrop: true,\r\n closeOnClickOutside: true\r\n }, configs || {});\r\n // get root viewref\r\n const viewRef: ViewContainerRef = this.appRef.components[0].instance.viewRef;\r\n\r\n let portal: Portal<any>;\r\n // get component by route\r\n if (typeof content === 'string') {\r\n // TODO\r\n }\r\n // create portal from component\r\n else if (content instanceof TemplateRef) {\r\n portal = new TemplatePortal(content, viewRef, context);\r\n }\r\n else if (typeof content === 'function') {\r\n portal = new ComponentPortal(content, viewRef);\r\n }\r\n let positionStrategy: PositionStrategy;\r\n if (configs.position && configs.targetElement) {\r\n positionStrategy = this.overlayService.position()\r\n .flexibleConnectedTo(configs.targetElement)\r\n .withPositions(\r\n Array.isArray(configs.position) ? configs.position : [configs.position]\r\n )\r\n .withPush(true);\r\n }\r\n else {\r\n positionStrategy = this.overlayService.position().global().centerHorizontally().centerVertically();\r\n }\r\n let scrollStrategy: ScrollStrategy = this.overlayService.scrollStrategies.reposition({ autoClose: true });\r\n if (configs.scroll === 'block') {\r\n scrollStrategy = this.overlayService.scrollStrategies.block();\r\n }\r\n\r\n const config = {\r\n positionStrategy,\r\n scrollStrategy,\r\n hasBackdrop: configs.hasBackdrop,\r\n disposeOnNavigation: true,\r\n backdropClass: configs.backdropClass ? configs.backdropClass : (configs.transparentBackdrop ? 'cdk-overlay-transparent-backdrop' : undefined),\r\n panelClass: configs.panelClass ? configs.panelClass : ['animate__animated', 'animate__fadeIn']\r\n };\r\n // joon nanat dorost sho\r\n let overlayRef = configs.containerElement ? this.overlayService.createOn(configs.containerElement, config) : this.overlayService2.create(config);\r\n\r\n const host = overlayRef.attach(portal);\r\n if (host.instance) {\r\n Object.assign(host.instance, context);\r\n setTimeout(() => {\r\n host.changeDetectorRef.detectChanges();\r\n }, 0);\r\n }\r\n if (configs.closeOnClickOutside) {\r\n merge(\r\n overlayRef.backdropClick(),\r\n overlayRef.detachments(),\r\n ).subscribe(() => {\r\n overlayRef.dispose();\r\n overlayRef = undefined;\r\n if (configs.onBackdropClick) {\r\n configs.onBackdropClick();\r\n }\r\n });\r\n\r\n }\r\n return {\r\n instance: host.instance,\r\n dispose: overlayRef.dispose.bind(overlayRef)\r\n };\r\n }\r\n\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-loading-indicator',\r\n templateUrl: './loading-indicator.component.html'\r\n})\r\nexport class AXLoadingIndicatorComponent implements OnInit {\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.size = 80;\r\n }\r\n\r\n @Input()\r\n size: number;\r\n}\r\n","import { Injectable, ComponentRef, EventEmitter } from '@angular/core';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXLoadingPanelComponent } from './loading-panel.component';\r\nimport { AXOverlayService, AXOverlayViewRef } from '../popover/overlay.service';\r\nimport { AXLoadingIndicatorComponent } from './loading-indicator.component';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXLoadingService {\r\n\r\n private _stack: { id: number, component: AXOverlayViewRef }[] = [];\r\n\r\n\r\n constructor(private injection: AXRenderService, private overlayService: AXOverlayService) {\r\n\r\n }\r\n\r\n show(location?: Element): number {\r\n let host: Element;\r\n if (location) {\r\n host = location.closest('.ax-loading-host');\r\n }\r\n const containerElement = (host || location) as HTMLDivElement;\r\n const com = this.overlayService.show(AXLoadingIndicatorComponent, {},\r\n {\r\n closeOnClickOutside: false,\r\n containerElement,\r\n hasBackdrop: true,\r\n backdropClass: ['ax-loading-overlay'],\r\n scroll: 'block'\r\n });\r\n const id = new Date().getTime();\r\n this._stack.push({ id, component: com });\r\n return id;\r\n }\r\n\r\n hide(id): void {\r\n const f = this._stack.find(c => c.id === id);\r\n if (f) {\r\n f.component.dispose();\r\n this._stack = this._stack.filter(c => c.id !== id);\r\n }\r\n }\r\n}","import { Component, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\n\r\n@Component({\r\n selector: 'ax-page',\r\n template: `\r\n <div class=\"page-content-wrap\">\r\n <div class=\"ax-page-toolbar\">\r\n <ng-content select=\"ax-toolbar\"></ng-content>\r\n </div>\r\n <ng-content select=\"ax-page-content\"></ng-content>\r\n <ng-content select=\"ax-page-footer\"></ng-content>\r\n </div>\r\n`\r\n})\r\nexport class AXPageComponent {\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) { }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n private _loadingId: number;\r\n\r\n private _isLoading: boolean = false;\r\n public get isLoading(): boolean {\r\n return this._isLoading;\r\n }\r\n public set isLoading(v: boolean) {\r\n this._isLoading = v;\r\n if (this._loadingId && !v) {\r\n this.loadingService.hide(this._loadingId);\r\n this._loadingId = null;\r\n }\r\n if (v) {\r\n this._loadingId = this.loadingService.show(this.el.nativeElement);\r\n }\r\n }\r\n}\r\n","import { EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXDataEvent } from './events.class';\r\nimport { AXMenuItemClickEvent } from '../menu/menu.component';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { AXPageComponent } from '../page/page.component';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport const TAB_META_KEY = '__meta__';\r\n\r\nexport class AXPageCloseEvent extends AXDataEvent<any> {\r\n}\r\nexport class AXPageClosing {\r\n cancel: boolean = false;\r\n data?: any;\r\n}\r\n\r\nexport class AXPageResult {\r\n sender: any;\r\n data?: any;\r\n}\r\n\r\nexport class AXPageClosedPromise extends Promise<AXPageResult> {\r\n\r\n private closeMethod: () => void;\r\n constructor(\r\n executor: (resolve: (value?: AXPageResult | PromiseLike<AXPageResult>) => void,\r\n reject: (reason?: any) => void) => void\r\n ) {\r\n super(executor);\r\n }\r\n\r\n public close() {\r\n if (this.closeMethod) {\r\n this.closeMethod();\r\n }\r\n }\r\n}\r\n\r\nexport abstract class AXBasePageComponent {\r\n\r\n @ViewChild(AXPageComponent, { static: true })\r\n private pageContainer: AXPageComponent;\r\n\r\n private _isLoading: boolean = false;\r\n public get isLoading(): boolean {\r\n return this._isLoading;\r\n }\r\n public set isLoading(v: boolean) {\r\n this._isLoading = v;\r\n if (this.pageContainer) {\r\n this.pageContainer.isLoading = this.isLoading;\r\n }\r\n }\r\n\r\n\r\n onClosed: EventEmitter<AXPageCloseEvent> = new EventEmitter<AXPageCloseEvent>();\r\n\r\n close(data?: any) {\r\n this.onClosed.emit({\r\n component: this,\r\n data: data\r\n });\r\n }\r\n\r\n onClosing(e: AXPageClosing): void | Promise<void> {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onClosed.unsubscribe();\r\n }\r\n}\r\n\r\nexport abstract class AXBasePopupPageComponent extends AXBasePageComponent {\r\n\r\n\r\n\r\n\r\n\r\n\r\n constructor() {\r\n super();\r\n setTimeout(() => {\r\n this.configFooterButtons(this.getFooterButtons());\r\n });\r\n }\r\n\r\n\r\n private _footerButtons: AXButtonItem[] = [];\r\n onFooterButtonsChanged = new Subject<AXButtonItem[]>();\r\n\r\n protected get footerButtons(): AXButtonItem[] {\r\n return this._footerButtons || [];\r\n }\r\n\r\n protected configFooterButtons(buttons?: AXButtonItem[]) {\r\n if (buttons) {\r\n this._footerButtons = buttons;\r\n this.onFooterButtonsChanged.next(buttons);\r\n }\r\n else {\r\n this.onFooterButtonsChanged.next(this.footerButtons);\r\n }\r\n }\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return [];\r\n }\r\n}\r\n\r\n\r\n","import { Component, Input, ViewEncapsulation, ElementRef, ViewChild, HostListener } from '@angular/core';\r\nimport { AXBaseButtonComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-button',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './button.component.html'\r\n})\r\nexport class AXButtonComponent extends AXBaseButtonComponent {\r\n\r\n constructor(private el: ElementRef) {\r\n super();\r\n }\r\n\r\n @ViewChild('container', { static: true }) container: ElementRef<HTMLButtonElement>;\r\n\r\n @Input()\r\n type: string = 'primary';\r\n\r\n @Input()\r\n icon: string;\r\n\r\n @Input()\r\n submitBehavior: boolean = false;\r\n\r\n @Input()\r\n cancelBehavior: boolean = false;\r\n\r\n @Input()\r\n block: boolean = false;\r\n\r\n @Input()\r\n loading: boolean = false;\r\n\r\n @Input()\r\n selected: boolean = false;\r\n\r\n ngAfterViewInit(): void {\r\n if (this.submitBehavior) {\r\n setTimeout(() => {\r\n this.focusButton();\r\n }, 10);\r\n }\r\n }\r\n\r\n\r\n\r\n handleClick(e: MouseEvent) {\r\n if (this.disabled === true) {\r\n this.click.emit({\r\n component: this,\r\n htmlElement: this.el.nativeElement,\r\n htmlEvent: e,\r\n });\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(e: KeyboardEvent) {\r\n if (this.cancelBehavior) {\r\n this.handleClick(null);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n focusButton() {\r\n this.container.nativeElement.focus();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXButtonComponent } from './button.component';\r\n\r\nconst COMPONENT = [AXButtonComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXButtonModule { }\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, ElementRef } from '@angular/core';\r\nimport { AXDateTime, AXDateTimeRange, AXCalendarType, AXTranslator } from '@acorex/core';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../../base/element.class';\r\nimport { AXValueEvent } from '../../base/events.class';\r\nimport { AXConfig } from '@acorex/core';\r\n\r\nexport type AXCalendarViewType = 'year' | 'month' | 'day';\r\n\r\nexport type AXCalendarHolidays = AXCalendarHoliday[];\r\nexport type AXCalendarHolidaysFunc = (start: Date, end: Date, type: AXCalendarType) => AXCalendarHoliday[];\r\nexport interface AXCalendarHoliday {\r\n date: Date;\r\n title: string;\r\n description?: string;\r\n}\r\n\r\nexport type AXCalendarWeekends = AXCalendarWeekend[];\r\nexport type AXCalendarWeekendsFunc = (start: Date, end: Date, type: AXCalendarType) => AXCalendarWeekend[];\r\n\r\nexport interface AXCalendarWeekend {\r\n indexDay: number;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-calendar-box',\r\n templateUrl: './calendar-box.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXCalendarBoxComponent implements AXBaseSizableComponent {\r\n weekdays: string[] = [];\r\n\r\n private d = {\r\n jalali: {\r\n locale: AXConfig.get('dateTime.jalali.locale') || 'fa',\r\n dir: 'rtl',\r\n number: 1\r\n },\r\n gregorian: {\r\n locale: AXConfig.get('dateTime.gregorian.locale') || 'en',\r\n dir: 'ltr',\r\n number: 0\r\n }\r\n };\r\n\r\n numRotate: number;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n type: AXCalendarType;\r\n\r\n @Input()\r\n locale: string;\r\n\r\n @Input()\r\n dir: string;\r\n\r\n @Input()\r\n min: Date;\r\n\r\n @Input()\r\n max: Date;\r\n\r\n @Input()\r\n selectableHoliday: boolean = true;\r\n\r\n @Input()\r\n dayStyle = [];\r\n\r\n @Input()\r\n dayMinMaxResoan = '';\r\n\r\n private getHoliday: AXCalendarHolidays | AXCalendarHolidaysFunc;\r\n\r\n private getWeekend: AXCalendarWeekends | AXCalendarWeekendsFunc;\r\n\r\n @Input('showTodayButton')\r\n public showTodayButton: boolean = false;\r\n\r\n matrix: any[] = [];\r\n rotated: boolean = false;\r\n private _view: AXCalendarViewType = 'day';\r\n @Input()\r\n public get view(): AXCalendarViewType {\r\n return this._view;\r\n }\r\n public set view(v: AXCalendarViewType) {\r\n this._view = v;\r\n this.navigate(0);\r\n }\r\n\r\n private _depth: AXCalendarViewType = 'day';\r\n\r\n @Input()\r\n public get depth(): AXCalendarViewType {\r\n return this._depth;\r\n }\r\n public set depth(v: AXCalendarViewType) {\r\n this._depth = v;\r\n this.view = v;\r\n }\r\n\r\n viewRange: AXDateTimeRange;\r\n private holidays: AXCalendarHoliday[] = [];\r\n private weekends: AXCalendarWeekend[] = [];\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<Date>> = new EventEmitter<AXValueEvent<Date>>();\r\n\r\n @Output()\r\n onClick: EventEmitter<AXValueEvent<Date>> = new EventEmitter<AXValueEvent<Date>>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n private _value: AXDateTime;\r\n @Input()\r\n public get value(): Date {\r\n return this._value?.date;\r\n }\r\n public set value(v: Date) {\r\n let vv: AXDateTime;\r\n if (v) {\r\n vv = AXDateTime.convert(v);\r\n }\r\n let unValidDate = false;\r\n if (this.max || this.min) {\r\n unValidDate = this.isInMInMaxRange(vv);\r\n }\r\n if (!unValidDate) {\r\n if (vv && !vv.equal(this._value)) {\r\n this._value = vv;\r\n this._value.type = this.type;\r\n this.setFocus(this._value.clone());\r\n this.valueChange.emit(vv.date);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: this._value?.date,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n if (v == undefined) {\r\n this._value = null;\r\n this.focusedValue = this.today;\r\n this.viewRange = this.today.month.range;\r\n this.navigate(0);\r\n }\r\n this.onClick.emit({\r\n component: this,\r\n value: this._value?.date,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n focusedValue: AXDateTime;\r\n get today(): AXDateTime {\r\n return new AXDateTime(new Date(), this.type);\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef) {\r\n // set defaults\r\n this.getHoliday = AXConfig.get('dateTime.holidays');\r\n this.getWeekend = AXConfig.get('dateTime.weekends');\r\n }\r\n findDay(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n getStyle(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {\r\n return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).style;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n getTitle(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {\r\n return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).text;\r\n } else {\r\n if (\r\n (this.min && this.max && date.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1) ||\r\n date.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1\r\n ) {\r\n return this.dayMinMaxResoan;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.focusedValue = new AXDateTime(new Date(), this.type);\r\n //\r\n this.initLayout();\r\n //\r\n this.viewRange = this.today.month.range;\r\n if (this.value) {\r\n this.setFocus(new AXDateTime(this.value, this.type));\r\n } else {\r\n this.setFocus(this.today);\r\n }\r\n\r\n this.view = 'day';\r\n }\r\n\r\n getViewCompaire(view: AXCalendarViewType) {\r\n switch (view) {\r\n case 'day':\r\n return 'YMD';\r\n case 'month':\r\n return 'YM';\r\n case 'year':\r\n return 'Y';\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.navigate(0);\r\n }\r\n\r\n private initLayout() {\r\n if (!this.type) {\r\n this.type = AXConfig.get('dateTime.type') || 'gregorian';\r\n }\r\n if (!this.locale) {\r\n this.locale = this.d[this.type]?.locale || this.locale;\r\n }\r\n if (!this.dir) {\r\n this.dir = this.d[this.type]?.dir || 'ltr';\r\n }\r\n this.numRotate = this.d[this.type]?.number || 0;\r\n const path = 'dateTime.weekdaysShort';\r\n this.weekdays = [\r\n AXTranslator.get(`${path}.sun`, this.locale),\r\n AXTranslator.get(`${path}.mon`, this.locale),\r\n AXTranslator.get(`${path}.tue`, this.locale),\r\n AXTranslator.get(`${path}.wed`, this.locale),\r\n AXTranslator.get(`${path}.thu`, this.locale),\r\n AXTranslator.get(`${path}.fri`, this.locale),\r\n AXTranslator.get(`${path}.sat`, this.locale)\r\n ];\r\n }\r\n\r\n getTodayName() {\r\n return AXTranslator.get('dateTime.today', this.locale);\r\n }\r\n\r\n prev() {\r\n this.navigate(-1);\r\n }\r\n\r\n next() {\r\n this.navigate(1);\r\n }\r\n\r\n rotate(array, n) {\r\n const len = array.length;\r\n return !(n % len) ? array : n > 0 ? array.map((e, i, a) => a[(i + n) % len]) : array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);\r\n }\r\n\r\n navigate(value: number | AXDateTime) {\r\n let start: AXDateTime;\r\n let end: AXDateTime;\r\n if (this.view === 'day') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('month');\r\n } else {\r\n fd = this.viewRange.startTime.add('day', 15).add('month', value).startOf('month');\r\n }\r\n\r\n start = fd.firstDayOfWeek;\r\n end = fd.endOf('month').endDayOfWeek;\r\n\r\n start = start.add('day', -this.numRotate);\r\n end = end.add('day', 7).add('day', -this.numRotate);\r\n\r\n // TODO: apply start of week\r\n if (!this.rotated && this.weekdays.length > 0) {\r\n if (this.type === 'jalali') {\r\n this.weekdays = this.rotate(this.weekdays, -this.numRotate);\r\n } else {\r\n this.weekdays = this.rotate(this.weekdays, this.numRotate);\r\n }\r\n\r\n this.rotated = true;\r\n }\r\n } else if (this.view === 'month') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('year');\r\n } else {\r\n fd = this.viewRange.startTime.add('day', 15).add('year', value).startOf('year');\r\n }\r\n start = fd;\r\n end = fd.endOf('year');\r\n } else if (this.view === 'year') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('year');\r\n } else {\r\n fd = this.viewRange.startTime\r\n .add('day', 15)\r\n .add('year', value * 10)\r\n .startOf('year');\r\n }\r\n start = fd.add('year', -4);\r\n end = start.add('year', 8).endOf('year');\r\n }\r\n this.viewRange = new AXDateTimeRange(start, end);\r\n //\r\n if (this.getHoliday && typeof this.getHoliday === 'function') {\r\n this.holidays = this.getHoliday(start.date, end.date, this.type);\r\n }\r\n\r\n if (this.getWeekend && typeof this.getWeekend === 'function') {\r\n this.weekends = this.getWeekend(start.date, end.date, this.type);\r\n }\r\n\r\n //\r\n if (this.view === 'day') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('day', this.type)), 7);\r\n if (this.matrix.length > 0 && this.matrix[0].find((c) => c.nextMonth === false) === undefined) {\r\n this.matrix.splice(0, 1);\r\n }\r\n if (this.matrix[this.matrix.length - 1].find((c) => c.nextMonth === false) === undefined) {\r\n this.matrix.splice(this.matrix.length - 1, 1);\r\n }\r\n } else if (this.view === 'month') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('month', this.type)), 3);\r\n } else if (this.view === 'year') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('year', this.type)), 3);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private applyStyle(dates: AXDateTime[]): any[] {\r\n const items: any[] = [];\r\n dates.forEach((d, i, j) => {\r\n const item: any = {};\r\n item.date = d;\r\n\r\n item.selected = d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;\r\n item.focused = d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;\r\n item.today = this.today && d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;\r\n if (this.view === 'day') {\r\n // item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM') !== 0;\r\n item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;\r\n\r\n item.unselect = this.isInMInMaxRange(d);\r\n this.holidays.forEach((h) => {\r\n const comp = d.compaireNew(new AXDateTime(h.date, this.type), 'YMD', this.type);\r\n if (comp === 0) {\r\n item.holiday = true;\r\n if (this.selectableHoliday === false) {\r\n item.unselect = true;\r\n }\r\n }\r\n });\r\n\r\n const indexDay = i - Math.floor(i / 7) * 7;\r\n this.weekends.forEach((cc) => {\r\n if (Number(cc) === indexDay) {\r\n item.holiday = true;\r\n if (this.selectableHoliday === false) {\r\n item.unselect = true;\r\n }\r\n }\r\n });\r\n }\r\n items.push(item);\r\n });\r\n return items;\r\n }\r\n\r\n changeView() {\r\n if (this.view === 'day') {\r\n this.view = 'month';\r\n } else if (this.view === 'month') {\r\n this.view = 'year';\r\n }\r\n }\r\n\r\n matrixify(arr: any[], cols) {\r\n const rows = Math.ceil(arr.length / cols);\r\n const matrix = [];\r\n if (rows * cols === arr.length) {\r\n for (let i = 0; i < arr.length; i += cols) {\r\n matrix.push(arr.slice(i, cols + i));\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n setDayClick(event: MouseEvent, item) {\r\n if (item.unselect !== true) {\r\n this.value = item.date.date;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n isInMInMaxRange(d) {\r\n let r = false;\r\n if (d !== undefined) {\r\n if (this.min && !this.max) {\r\n r = d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1;\r\n }\r\n if (this.max && !this.min) {\r\n r = d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;\r\n }\r\n if (this.min && this.max) {\r\n r =\r\n d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||\r\n d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n setMonthClick(event: MouseEvent, date: AXDateTime) {\r\n if (this.depth === 'month') {\r\n this.value = date.date;\r\n } else {\r\n this.view = 'day';\r\n this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year).set('month', date.monthOfYear));\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n setYearClick(event: MouseEvent, date: AXDateTime) {\r\n if (this.depth === 'year') {\r\n this.value = date.date;\r\n } else {\r\n this.view = 'month';\r\n this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year));\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n setFocus(date: AXDateTime) {\r\n this.focusedValue = date;\r\n this.navigate(this.focusedValue);\r\n }\r\n\r\n setToday() {\r\n this.value = this.today.date;\r\n this.view = 'day';\r\n }\r\n\r\n trackByFn(index, item: any) {\r\n return item.date.date.getTime();\r\n }\r\n}\r\n","import { Component, Input, NgZone, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, TemplateRef } from '@angular/core';\r\nimport { ElementRef } from '@angular/core';\r\nimport { AXOverlayService, AXOverlayViewRef } from './overlay.service';\r\nimport { AXConnectedPosition } from '@acorex/core';\r\n\r\n\r\n@Component({\r\n selector: 'ax-popover',\r\n templateUrl: './popover.component.html',\r\n styleUrls: ['./popover.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AXPopoverComponent {\r\n constructor(\r\n private overlayService: AXOverlayService,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef) {\r\n\r\n }\r\n //\r\n private targetEl: HTMLElement;\r\n private overlay: AXOverlayViewRef;\r\n @ViewChild('tpl')\r\n private template: TemplateRef<any>;\r\n //\r\n @Input('target') target: string | HTMLElement;\r\n //\r\n @Input('position') position: AXConnectedPosition;\r\n //\r\n @Input('openMode') openMode: 'manual' | 'click' | 'hover' = 'manual';\r\n //\r\n @Input('closeMode') closeMode: 'manual' | 'clickout' | 'mouseout' = 'clickout';\r\n //\r\n private _visible: boolean = false;\r\n @Input()\r\n public get visible(): boolean {\r\n return this._visible;\r\n }\r\n public set visible(v: boolean) {\r\n if (v !== this._visible) {\r\n if (v) {\r\n this.internalShow();\r\n } else {\r\n this.internalHide();\r\n }\r\n this._visible = v;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n //\r\n toggle() {\r\n this.visible = !this.visible;\r\n }\r\n\r\n close() {\r\n this.zone.run(() => {\r\n this.visible = false;\r\n });\r\n }\r\n\r\n open() {\r\n this.zone.run(() => {\r\n this.visible = true;\r\n });\r\n }\r\n\r\n private internalShow() {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.overlay = this.overlayService.show(this.template, {}, {\r\n closeOnClickOutside: this.closeMode === 'clickout',\r\n targetElement: this.targetEl,\r\n hasBackdrop: this.closeMode === 'clickout',\r\n position: this.position,\r\n onBackdropClick: () => {\r\n this._visible = false;\r\n }\r\n });\r\n }\r\n\r\n private internalHide() {\r\n if (this.overlay) {\r\n this.overlay.dispose();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.targetEl = typeof this.target === 'string' ? document.querySelector<HTMLElement>(this.target) : this.target;\r\n //\r\n if (this.closeMode === 'mouseout') {\r\n this.targetEl.addEventListener('mouseout', this.close.bind(this));\r\n }\r\n if (this.openMode === 'hover' && this.targetEl) {\r\n this.targetEl.addEventListener('mouseover', this.open.bind(this));\r\n }\r\n //\r\n if (this.openMode === 'click' && this.targetEl) {\r\n this.targetEl.addEventListener('click', this.open.bind(this));\r\n }\r\n }, 100);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.openMode === 'click' && this.targetEl) {\r\n this.targetEl.removeEventListener('mouseover', this.open.bind(this));\r\n this.targetEl.removeEventListener('click', this.open.bind(this));\r\n this.targetEl.removeEventListener('mouseout', this.open.bind(this));\r\n }\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.visible;\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXPopoverComponent } from \"./popover.component\";\r\n\r\n@NgModule({\r\n declarations: [AXPopoverComponent],\r\n imports: [CommonModule],\r\n exports: [AXPopoverComponent],\r\n providers: []\r\n})\r\nexport class AXPopoverModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXCalendarBoxComponent } from './calendar-box.component';\r\nimport { AXCoreModule } from '@acorex/core';\r\nimport { AXPopoverModule } from '../../popover/popover.module';\r\nimport { AXButtonModule } from '../../button/button.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXCalendarBoxComponent],\r\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXCoreModule],\r\n exports: [AXCalendarBoxComponent],\r\n providers: []\r\n})\r\nexport class AXCalendarBoxModule {\r\n}\r\n","import { Component, ContentChildren, QueryList, Input, Attribute } from '@angular/core';\r\nimport { AXSchedulerViewType } from './scheduler.class';\r\n\r\n@Component({\r\n selector: 'ax-scheduler-view',\r\n template: ``\r\n})\r\nexport class AXSchedulerViewProperty {\r\n\r\n constructor(\r\n @Attribute('type') public type: AXSchedulerViewType,\r\n @Attribute('caption') public caption: string,\r\n @Attribute('name') public name: string,\r\n ) {\r\n\r\n }\r\n\r\n @Input()\r\n public interval: number;\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.interval) {\r\n this.interval = 1;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ax-scheduler-views',\r\n template: `\r\n <ng-content>\r\n </ng-content>`,\r\n})\r\nexport class AXSchedulerViewsProperty {\r\n @ContentChildren(AXSchedulerViewProperty) views: QueryList<AXSchedulerViewProperty>;\r\n constructor() { }\r\n}\r\n","import { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { EventEmitter } from '@angular/core';\r\n\r\n\r\n\r\n\r\nexport type AXSchedulerViewType = 'day' | 'week' | 'month' | 'timeline' | 'agenda';\r\n\r\nexport interface AXSchedulerRequestDataArge {\r\n startTime: AXDateTime;\r\n endTime: AXDateTime;\r\n events: AXSchedulerEvent[];\r\n}\r\n\r\nexport abstract class AXAsyncEventArgs {\r\n onComplete: EventEmitter<any> = new EventEmitter<any>(true);\r\n complete(): void {\r\n if (this.onComplete) {\r\n this.onComplete.emit(this);\r\n }\r\n }\r\n}\r\n\r\nexport class AXSchedulerEventChangeArgs extends AXAsyncEventArgs {\r\n canceled: boolean = false;\r\n event: AXSchedulerEvent;\r\n oldSlot: AXSchedulerSlot;\r\n newSlot: AXSchedulerSlot;\r\n}\r\n\r\nexport interface AXSchedulerSlot {\r\n range: AXDateTimeRange;\r\n events?: AXSchedulerEvent[];\r\n uid?: string;\r\n}\r\n\r\nexport interface AXSchedulerEvent {\r\n range: AXDateTimeRange;\r\n title: string;\r\n description?: string;\r\n uid: string;\r\n color: string;\r\n}\r\n\r\nexport interface AXSchedulerOccasion {\r\n range: AXDateTimeRange;\r\n title: string;\r\n description?: string;\r\n blocked?: boolean;\r\n}\r\n","export abstract class AXToolbarItem\r\n{\r\n alignment:\"start\"|\"end\"|\"center\"=\"center\";\r\n}","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ElementRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n NgZone,\r\n ChangeDetectorRef,\r\n TemplateRef,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { AXPlacement, AXMenuItem } from '@acorex/core';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\nimport { AXEvent } from '../base/events.class';\r\n\r\nexport class AXMenuItemClickEvent extends AXEvent<AXMenuItem, MouseEvent> {\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-menu',\r\n templateUrl: './menu.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenuComponent implements AXBaseSizableComponent {\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {\r\n }\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n _contentMenuTemplate: TemplateRef<any>;\r\n\r\n private _menuTemplate: TemplateRef<any>;\r\n @Input()\r\n public get menuTemplate(): TemplateRef<any> {\r\n return this._menuTemplate ? this._menuTemplate : this._contentMenuTemplate;\r\n }\r\n public set menuTemplate(v: TemplateRef<any>) {\r\n this._menuTemplate = v;\r\n }\r\n\r\n resizeChangeObserver: any;\r\n\r\n @Input()\r\n rtl: boolean;\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXMenuItemClickEvent> = new EventEmitter<AXMenuItemClickEvent>();\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n public selection: 'none' | 'single' | 'multiple' = 'none';\r\n\r\n @Input()\r\n public mode: 'click' | 'context' | 'visible' | 'manual' = 'visible';\r\n\r\n @Input()\r\n public target: string;\r\n\r\n @Input()\r\n public floatAlignment: AXPlacement;\r\n\r\n @Input()\r\n public floatPlacemnet: AXPlacement;\r\n\r\n public currentTarget: HTMLElement;\r\n\r\n @Input()\r\n public direction: 'vertical' | 'horizontal' = 'horizontal';\r\n\r\n private _items: AXMenuItem[];\r\n @Input()\r\n public get items(): AXMenuItem[] {\r\n return this._items;\r\n }\r\n public set items(v: AXMenuItem[]) {\r\n this._items = v;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n\r\n handleItemClick(e: MouseEvent, item?: AXMenuItem) {\r\n e.stopPropagation();\r\n if (item && (!item.items || !item.items.filter((c) => c.visible !== false).length) && !item.disable) {\r\n const m = {\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e,\r\n data: item,\r\n name: item?.name\r\n };\r\n if (item.onClick) {\r\n item.onClick();\r\n }\r\n else {\r\n this.onItemClick.emit(m);\r\n }\r\n\r\n return;\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ElementRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n NgZone,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\nimport { AXMenuComponent, AXMenuItemClickEvent } from '../../menu/menu.component';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-toolbar-menu',\r\n templateUrl: './toolbar-menu.component.html',\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarMenuComponent }],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXToolbarMenuComponent extends AXToolbarItem {\r\n \r\n constructor(\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n @ViewChild('menu', { static: true }) menu: AXMenuComponent\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXMenuItemClickEvent> = new EventEmitter<AXMenuItemClickEvent>();\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n _contentMenuTemplate: TemplateRef<any>;\r\n\r\n\r\n private _menuTemplate: TemplateRef<any>;\r\n @Input()\r\n public get menuTemplate(): TemplateRef<any> {\r\n return this._menuTemplate ? this._menuTemplate : this._contentMenuTemplate;\r\n }\r\n public set menuTemplate(v: TemplateRef<any>) {\r\n this._menuTemplate = v;\r\n }\r\n\r\n\r\n @Input()\r\n public selection: 'none' | 'single' | 'multiple' = 'none';\r\n\r\n private _items: AXMenuItem[];\r\n @Input()\r\n public get items(): AXMenuItem[] {\r\n return this._items;\r\n }\r\n public set items(v: AXMenuItem[]) {\r\n this._items = v;\r\n this.update();\r\n }\r\n\r\n\r\n handleItemClick(item?: AXMenuItemClickEvent) {\r\n this.onItemClick.emit(item);\r\n }\r\n\r\n\r\n public close(): void {\r\n // this.menu.close();\r\n }\r\n\r\n update() {\r\n //this.menu.update();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n}\r\n","import { Component, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXToolbarItem } from '../../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../../toolbar/menu/toolbar-menu.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-scheduler-view',\r\n template: `\r\n <ax-toolbar-menu [items]=\"items\" selection=\"single\" (onItemClick)=\"onItemClick($event)\"></ax-toolbar-menu>\r\n `,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSchedulerViewsComponent }]\r\n})\r\nexport class AXToolbarSchedulerViewsComponent {\r\n constructor() { }\r\n\r\n @ViewChild(AXToolbarMenuComponent, { static: true }) menu: AXToolbarMenuComponent;\r\n items: AXMenuItem[] = [];\r\n\r\n update(): void {\r\n this.menu.update();\r\n }\r\n\r\n @Output()\r\n onViewChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n onItemClick(e: AXMenuItem) {\r\n this.onViewChanged.emit(e.name);\r\n }\r\n\r\n}\r\n","import { Input, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { AXDateTime, AXDateTimeRange, TimeUnit } from '@acorex/core';\r\nimport { Output, Directive } from '@angular/core';\r\nimport { AXSchedulerSlot, AXSchedulerEventChangeArgs, AXSchedulerEvent, AXSchedulerViewType } from '../scheduler.class';\r\n\r\n\r\n\r\n\r\n\r\n@Directive()\r\nexport abstract class AXSchedulerBaseViewComponent implements OnDestroy {\r\n\r\n type: AXSchedulerViewType;\r\n timeSlot: number = 1;\r\n\r\n interval: number = 1;\r\n\r\n abstract updateSize(): void;\r\n\r\n abstract next(): void;\r\n\r\n abstract prev(): void;\r\n\r\n abstract navigate(date: AXDateTime): void;\r\n\r\n get dateRange(): AXDateTimeRange {\r\n if (this.slots && this.slots.length) {\r\n return new AXDateTimeRange(this.slots[0].range.startTime, this.slots[this.slots.length - 1].range.startTime);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n today: AXDateTime = new AXDateTime();\r\n\r\n\r\n\r\n @Output()\r\n onNavigatorDateChanged: EventEmitter<AXDateTime> = new EventEmitter<AXDateTime>();\r\n\r\n private _navigatorDate: AXDateTime;\r\n public get navigatorDate(): AXDateTime {\r\n return this._navigatorDate;\r\n }\r\n public set navigatorDate(v: AXDateTime) {\r\n this._navigatorDate = v;\r\n this.onNavigatorDateChanged.emit(v);\r\n }\r\n\r\n events: AXSchedulerEvent[] = [];\r\n\r\n slots: AXSchedulerSlot[] = [];\r\n\r\n getEvents(range: AXDateTimeRange, unit: TimeUnit) {\r\n return this.events.filter(c => c.range.startTime.equal(range.startTime, unit))\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.updateSize();\r\n }\r\n\r\n @Output()\r\n onEventChanged: EventEmitter<AXSchedulerEventChangeArgs> = new EventEmitter<AXSchedulerEventChangeArgs>(true);\r\n\r\n\r\n ngOnDestroy(): void {\r\n if (this.onEventChanged) {\r\n this.onEventChanged.unsubscribe();\r\n }\r\n if (this.onNavigatorDateChanged) {\r\n this.onEventChanged.unsubscribe();\r\n }\r\n if (this.slots) {\r\n this.slots = null;\r\n }\r\n if (this.events) {\r\n this.events = null;\r\n }\r\n }\r\n\r\n\r\n onDragDropOnDay(e, time?: number) {\r\n const el = e.item.element.nativeElement as HTMLElement;\r\n if (e.previousContainer !== e.container) {\r\n el.style.opacity = '0';\r\n const r: AXSchedulerEventChangeArgs = new AXSchedulerEventChangeArgs();\r\n r.event = e.item.data;\r\n r.oldSlot = e.previousContainer.data;\r\n r.newSlot = e.container.data;\r\n //\r\n r.onComplete.subscribe((er: AXSchedulerEventChangeArgs) => {\r\n el.style.opacity = '1';\r\n if (!er.canceled) {\r\n const slotTime = er.newSlot.range.startTime.startOf();\r\n const z = er.event.range.startTime.clone();\r\n const durDay = slotTime.duration(z.startOf(), 'days');\r\n const durTime = slotTime.duration(z, 'hours');\r\n const eventRange = er.event.range;\r\n //\r\n // if (time && slotTime.add('hour', time).hour + eventRange.duration('hours') > 24) {\r\n // return;\r\n // }\r\n if (time) {\r\n return;\r\n }\r\n er.event.range.startTime = er.event.range.startTime.add('day', durDay);\r\n er.event.range.endTime = er.event.range.endTime.add('day', durDay);\r\n er.oldSlot.events = er.oldSlot.events.filter(c => c.uid !== er.event.uid);\r\n if (time) {\r\n er.event.range.startTime = er.event.range.startTime.set('hour', time);\r\n let durTime = er.event.range.startTime.duration(z, 'hours') % 24;\r\n er.event.range.endTime = er.event.range.endTime.add('hour', durTime);\r\n }\r\n er.newSlot.events.push(er.event);\r\n\r\n }\r\n });\r\n this.onEventChanged.emit(r);\r\n }\r\n }\r\n\r\n}","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerSlot, AXSchedulerEvent } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-daytime-view.component.html',\r\n styleUrls: ['./scheduler-daytime-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerDayTimeViewComponent }]\r\n})\r\nexport class AXSchedulerDayTimeViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(private elm: ElementRef<HTMLDivElement>, private cdr: ChangeDetectorRef) { super(); }\r\n times: any[] = [];\r\n private vScroll: HTMLElement;\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.vScroll = this.elm.nativeElement.querySelector<HTMLElement>('.v-scroll');\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>('.header');\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>('.body');\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>('.view');\r\n this.container = this.elm.nativeElement.closest('.view-container') as HTMLElement;\r\n }\r\n\r\n updateSize(): void {\r\n const firstTr = this.body.querySelector('tr');\r\n if (firstTr) {\r\n let index = 0;\r\n this.header.querySelectorAll('th').forEach(c => {\r\n const td = firstTr.children.item(index++) as HTMLElement;\r\n td.style.width = `${c.offsetWidth}px`;\r\n });\r\n this.vScroll.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n if (this.container) {\r\n this.view.style.height = `${this.container.clientHeight}px`;\r\n }\r\n }\r\n this.arrangeEvents();\r\n }\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.times = [];\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n const d = date.addDay(i);\r\n const range = new AXDateTimeRange(d, d);\r\n const slot: AXSchedulerSlot = {\r\n range,\r\n events: this.getEvents(range, 'day')\r\n };\r\n this.slots.push(slot);\r\n }\r\n for (let i = 0; i < 24; i++) {\r\n this.times.push({\r\n display: ('0' + i).slice(-2) + ':00',\r\n value: i\r\n });\r\n }\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n\r\n arrangeEvents() {\r\n const events = this.elm.nativeElement.querySelectorAll<HTMLElement>('.event');\r\n if (events.length) {\r\n const height = events[0].closest('td').offsetHeight;\r\n events.forEach(e => {\r\n const uid = e.attributes.getNamedItem('data-uid').value;\r\n const event = this.events.find(c => c.uid === uid);\r\n const dur = Math.ceil(Math.abs(event.range.duration('hours')));\r\n let total = dur + 1;\r\n if (event.range.startTime.hour + total > 23) {\r\n total = 24 - event.range.startTime.hour;\r\n }\r\n e.style.height = (total * height) + 'px';\r\n });\r\n }\r\n }\r\n\r\n findEventIndex(event: AXSchedulerEvent): number {\r\n const a = this.events.filter(c =>\r\n c.range.startTime.equal(event.range.startTime, 'day')\r\n ).sort((d1, d2) => {\r\n return d1.range.startTime.compaireNew(d2.range.startTime);\r\n });\r\n\r\n return a.indexOf(event);\r\n }\r\n}\r\n","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation, HostListener, NgZone } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerEvent, AXSchedulerEventChangeArgs } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-month-view.component.html',\r\n styleUrls: ['./scheduler-month-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerMonthViewComponent }]\r\n})\r\nexport class AXSchedulerMonthViewComponent extends AXSchedulerBaseViewComponent {\r\n\r\n\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n @HostListener('wheel', ['$event'])\r\n onKeydownHandler(e: MouseWheelEvent) {\r\n if (e.deltaY > 0) {\r\n this.navigate(this.navigatorDate.addMonth(1))\r\n }\r\n else if (e.deltaY < 0) {\r\n this.navigate(this.navigatorDate.addMonth(-1))\r\n }\r\n }\r\n\r\n weekDays: any[] = [\r\n {\r\n index: 0, title: 'Sunday'\r\n },\r\n {\r\n index: 1, title: 'Moday'\r\n },\r\n {\r\n index: 2, title: 'Tuesday'\r\n },\r\n {\r\n index: 3, title: 'Wednesday'\r\n },\r\n {\r\n index: 4, title: 'Thursday'\r\n },\r\n {\r\n index: 5, title: 'Friday'\r\n },\r\n {\r\n index: 6, title: 'Saturday'\r\n }];\r\n startDayOfWeek = 'Moday';\r\n\r\n\r\n\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>('.header');\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>('.body');\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>('.view');\r\n this.container = this.elm.nativeElement.closest('.view-container') as HTMLElement;\r\n\r\n }\r\n\r\n\r\n updateSize(): void {\r\n const firstTr = this.body.querySelector('tr');\r\n if (firstTr) {\r\n let index = 0;\r\n this.header.querySelectorAll('th').forEach(c => {\r\n const td = firstTr.children.item(index++) as HTMLElement;\r\n td.style.width = `${c.offsetWidth}px`;\r\n });\r\n this.body.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n if (this.container) {\r\n this.view.style.height = `${this.container.clientHeight}px`;\r\n }\r\n }\r\n this.arrangeEvents();\r\n }\r\n\r\n matrixify(arr, rows, cols) {\r\n const matrix = [];\r\n if (rows * cols === arr.length) {\r\n for (let i = 0; i < arr.length; i += cols) {\r\n matrix.push(arr.slice(i, cols + i));\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n matrixSlots: any;\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n\r\n const start = date.month.range.startTime.firstDayOfWeek;\r\n const end = date.month.range.startTime.endDayOfWeek;\r\n const dur = end.duration(start);\r\n this.slots = [];\r\n for (let i = 0; i < dur; i++) {\r\n const d = start.addDay(i);\r\n const range: AXDateTimeRange = new AXDateTimeRange(d, d);\r\n this.slots.push({\r\n range,\r\n events: this.getEvents(range, 'day'),\r\n uid: range.startTime.date.getTime().toString()\r\n });\r\n }\r\n const dayInWeek = 7;\r\n const rows = Math.floor(dur / dayInWeek);\r\n this.matrixSlots = this.matrixify(this.slots, rows, dayInWeek);\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addMonth(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addMonth(-this.interval));\r\n }\r\n\r\n arrangeEvents() {\r\n this.slots.forEach(slot => {\r\n const slotTd = this.elm.nativeElement.querySelector<HTMLElement>(`[data-uid='` + slot.uid + `']`);\r\n const viewMoreDiv = slotTd.querySelector<HTMLElement>('.view-more');\r\n let viewMore = 0;\r\n viewMoreDiv.style.display = 'none';\r\n const width = slotTd.offsetWidth;\r\n slot.events.forEach(event => {\r\n const e = slotTd.querySelector<HTMLElement>(`[data-uid='` + event.uid + `']`);\r\n if (e) {\r\n const dur = Math.ceil(Math.abs(event.range.duration()));\r\n e.style.visibility = 'unset';\r\n e.style.width = (dur * width) + 'px';\r\n e.style.top = ((this.findEventIndex(event)) * 25) + 'px';\r\n if (e.getBoundingClientRect().bottom >= slotTd.getBoundingClientRect().bottom) {\r\n viewMore++;\r\n e.style.visibility = 'hidden';\r\n viewMoreDiv.style.display = 'unset';\r\n viewMoreDiv.innerHTML = `+${viewMore} more`;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n findEventIndex(event: AXSchedulerEvent): number {\r\n const a = this.events.filter(c =>\r\n c.range.startTime.equal(event.range.startTime, 'days')\r\n ).sort((d1, d2) => {\r\n const v = d1.range.startTime.compaireNew(d2.range.startTime, 'YMDhm');\r\n return v;\r\n });\r\n return a.indexOf(event);\r\n }\r\n\r\n private dragEnterSlot: HTMLElement;\r\n private dragPreview: HTMLElement;\r\n private dragHour: number = null;\r\n onDragStarted(event) {\r\n this.zone.runOutsideAngular(() => {\r\n this.dragEnterSlot = event.source.dropContainer.element.nativeElement;\r\n this.elm.nativeElement.addEventListener('mousemove', this.drageMouseMove.bind(this));\r\n });\r\n }\r\n onDragEntered(event) {\r\n this.dragPreview = document.querySelector<HTMLElement>('.cdk-drag-preview');\r\n this.dragEnterSlot = event.container.element.nativeElement;\r\n }\r\n onDragEnded(event) {\r\n this.dragEnterSlot = null;\r\n this.dragPreview = null;\r\n this.zone.runOutsideAngular(() => {\r\n this.elm.nativeElement.removeEventListener('mousemove', this.drageMouseMove.bind(this));\r\n });\r\n }\r\n\r\n private drageMouseMove(e: MouseEvent) {\r\n this.zone.runOutsideAngular(() => {\r\n if (!this.dragPreview) {\r\n this.dragPreview = document.querySelector<HTMLElement>('.cdk-drag-preview');\r\n }\r\n if (this.dragEnterSlot && this.dragPreview) {\r\n const diff = this.dragPreview.getBoundingClientRect().top - this.dragEnterSlot.getBoundingClientRect().top;\r\n const hour = Math.round((diff / this.dragEnterSlot.getBoundingClientRect().height) * 24);\r\n this.dragPreview.querySelector('.ax-sch-str').innerHTML = `${hour > 0 ? hour : 0}:00`;\r\n this.dragHour = hour;\r\n }\r\n });\r\n }\r\n\r\n onDragDropOnDay(e) {\r\n const el = e.item.element.nativeElement as HTMLElement;\r\n if (e.previousContainer !== e.container) {\r\n el.style.opacity = '0';\r\n const r: AXSchedulerEventChangeArgs = new AXSchedulerEventChangeArgs();\r\n r.event = e.item.data;\r\n r.oldSlot = e.previousContainer.data;\r\n r.newSlot = e.container.data;\r\n //\r\n r.onComplete.subscribe((er: AXSchedulerEventChangeArgs) => {\r\n el.style.opacity = '1';\r\n if (!er.canceled) {\r\n const slotTime = er.newSlot.range.startTime.startOf();\r\n const z = er.event.range.startTime.clone();\r\n const durDay = slotTime.duration(z.startOf(), 'days');\r\n er.event.range.startTime = er.event.range.startTime.add('day', durDay);\r\n if (this.dragHour != null) {\r\n er.event.range.startTime = er.event.range.startTime.set('hour', this.dragHour);\r\n er.event.range.startTime = er.event.range.startTime.set('minute', 0);\r\n }\r\n er.event.range.endTime = er.event.range.endTime.add('day', durDay);\r\n er.oldSlot.events = er.oldSlot.events.filter(c => c.uid !== er.event.uid);\r\n er.newSlot.events.push(er.event);\r\n }\r\n });\r\n this.onEventChanged.emit(r);\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\nimport { Component, OnInit, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core';\r\n\r\nimport { AXSchedulerViewType } from '../scheduler.class';\r\nimport { AXCalendarBoxComponent } from '../../calendar-box/calendar-box.component';\r\n\r\nimport { AXMenuItem, AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { AXToolbarItem } from '../../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../../toolbar/menu/toolbar-menu.component';\r\nimport { AXPopoverComponent } from '../../../popover/popover.component';\r\nimport { AXValueEvent } from '../../../base/events.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-scheduler-navigator',\r\n template: `\r\n <div id=\"nav\">\r\n <ax-toolbar-menu [items]=\"items\" (onItemClick)=\"onItemClick($event)\"></ax-toolbar-menu>\r\n <ax-popover target=\"#nav\" placement=\"bottom-end\" alignment=\"top-end\" #pop>\r\n <ax-calendar-box (onValueChanged)=\"onDateChange($event)\" [depth]=\"viewDepth\" #cal></ax-calendar-box>\r\n </ax-popover>\r\n</div>`,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSchedulerNavigatorComponent }],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXToolbarSchedulerNavigatorComponent {\r\n constructor(private cdr: ChangeDetectorRef) { }\r\n\r\n @ViewChild(AXToolbarMenuComponent, { static: true })\r\n toolbar: AXToolbarMenuComponent;\r\n\r\n @ViewChild('pop', { static: true })\r\n pop: AXPopoverComponent;\r\n\r\n @ViewChild('cal', { static: true })\r\n cal: AXCalendarBoxComponent;\r\n\r\n viewDepth: string = 'day';\r\n\r\n\r\n items: AXMenuItem[] = [];\r\n\r\n ngAfterViewInit(): void {\r\n this.items = [\r\n {\r\n name: 'prev',\r\n startIcon: 'fas fa-angle-left',\r\n tooltip: 'Prev'\r\n },\r\n {\r\n name: 'today',\r\n text: 'Today',\r\n tooltip: 'Today'\r\n },\r\n {\r\n name: 'next',\r\n startIcon: 'fas fa-angle-right',\r\n tooltip: 'Next'\r\n },\r\n {\r\n name: 'current',\r\n\r\n }];\r\n }\r\n\r\n\r\n @Output()\r\n onNavigate: EventEmitter<'next' | 'back' | AXDateTime> = new EventEmitter<'next' | 'back' | AXDateTime>();\r\n\r\n onItemClick(e: AXMenuItem) {\r\n if (e.name === 'current') {\r\n this.pop.toggle();\r\n }\r\n else if (e.name === 'today') {\r\n this.goto(new AXDateTime());\r\n }\r\n else {\r\n this.onNavigate.emit(e.name as any);\r\n this.pop.close();\r\n }\r\n }\r\n\r\n\r\n onDateChange(e: AXValueEvent<AXDateTime>) {\r\n this.goto(e.value);\r\n }\r\n\r\n goto(date: AXDateTime) {\r\n this.onNavigate.emit(date);\r\n this.pop.close();\r\n }\r\n\r\n\r\n set(range: AXDateTimeRange, type: AXSchedulerViewType) {\r\n if (range) {\r\n let text: string = '';\r\n const calDate: AXDateTime = range.startTime;\r\n const sameDay = range.startTime.compaireNew(range.endTime, 'YMD') === 0;\r\n const sameMonth = range.startTime.compaireNew(range.endTime, 'YM') === 0;\r\n const sameYear = range.startTime.compaireNew(range.endTime, 'Y') === 0;\r\n if (type !== 'month' && sameDay) {\r\n text = range.startTime.format('MMMM DD, YYYY');\r\n }\r\n //\r\n else if (type !== 'month' && sameMonth && sameYear) {\r\n text = `${range.startTime.format('MMMM DD')} - ${range.endTime.format('DD, YYYY')}`;\r\n }\r\n else if (type !== 'month' && sameYear) {\r\n text = `${range.startTime.format('MMM DD')} - ${range.endTime.format('MMM DD, YYYY')}`;\r\n }\r\n else if (type !== 'month') {\r\n text = `${range.startTime.format('MMM DD, YYYY')} - ${range.endTime.format('MMM DD, YYYY')}`;\r\n }\r\n else if (type === 'month') {\r\n text = range.startTime.add('day', 15).format('MMMM YYYY');\r\n }\r\n this.items[3].text = text;\r\n if (type === 'month') {\r\n this.viewDepth = 'month';\r\n }\r\n else {\r\n this.viewDepth = 'day';\r\n }\r\n //\r\n this.cal.focusedValue = calDate;\r\n this.cal.navigate(calDate);\r\n this.pop.close();\r\n //\r\n this.toolbar.update();\r\n }\r\n }\r\n\r\n}\r\n","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerSlot } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-agenda-view.component.html',\r\n styleUrls: ['./scheduler-agenda-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerAgendaViewComponent }]\r\n})\r\nexport class AXSchedulerAgendaViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n hideEmptyDays: boolean = true;\r\n\r\n updateSize() {\r\n }\r\n\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n let d = date.addDay(i);\r\n const range = new AXDateTimeRange(d, d);\r\n const slot: AXSchedulerSlot = {\r\n range,\r\n events: this.getEvents(range, 'day')\r\n }\r\n if (this.hideEmptyDays && slot.events.length === 0) {\r\n continue;\r\n }\r\n this.slots.push(slot);\r\n }\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n}\r\n","import { Component, OnInit, Input, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { AXSchedulerSlot } from '../../scheduler.class';\r\n\r\n@Component({\r\n templateUrl: './scheduler-timeline-view.component.html',\r\n styleUrls:['./scheduler-timeline-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerTimelineViewComponent }]\r\n})\r\nexport class AXSchedulerTimelineViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(private elm: ElementRef<HTMLDivElement>, private cdr: ChangeDetectorRef) { super(); }\r\n\r\n\r\n\r\n\r\n times: any[] = []\r\n\r\n //private hScroll: HTMLElement;\r\n private vScroll: HTMLElement;\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.vScroll = this.elm.nativeElement.querySelector<HTMLElement>(\".v-scroll\");\r\n //this.hScroll = this.elm.nativeElement.querySelector<HTMLElement>(\".h-scroll\");\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>(\".header\");\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>(\".body\");\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>(\".view\");\r\n\r\n this.container = this.elm.nativeElement.closest(\".view-container\") as HTMLElement;\r\n // this.hScroll.addEventListener(\"scroll\", () => {\r\n // this.updateSize();\r\n // });\r\n }\r\n\r\n\r\n updateSize(): void {\r\n // let firstTr = this.body.querySelector('tr');\r\n // if (firstTr) {\r\n // let index = 0;\r\n // this.header.querySelectorAll('th').forEach(c => {\r\n // let td = firstTr.children.item(index++) as HTMLElement;\r\n // td.style.width = `${c.offsetWidth}px`;\r\n // })\r\n // this.vScroll.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n // //this.vScroll.style.width = `${this.hScroll.clientWidth + this.hScroll.scrollLeft}px`;\r\n // if (this.container)\r\n // this.view.style.height = `${this.container.clientHeight}px`;\r\n // }\r\n }\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.navigatorDate = date;\r\n this.times=[];\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n let d = date.addDay(i);\r\n let range = new AXDateTimeRange(d, d);\r\n let slot: AXSchedulerSlot = {\r\n range: range,\r\n events: this.getEvents(range, \"day\")\r\n }\r\n this.slots.push(slot);\r\n }\r\n for (let i = 0; i < 24; i++) {\r\n this.times.push({\r\n display:('0' + i).slice(-2) + \":00\",\r\n value:i\r\n });\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n\r\n arrangeEvents()\r\n {\r\n \r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\nimport { AXValueEvent } from '../../base/events.class';\r\nimport { AXBaseInputComponent } from '../../base/element.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-search',\r\n templateUrl: './toolbar-search.component.html',\r\n styleUrls: ['./toolbar-search.component.scss'],\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSearchComponent }]\r\n})\r\n\r\nexport class AXToolbarSearchComponent {\r\n constructor() { }\r\n\r\n private searchChangeObserver: any;\r\n\r\n @ViewChild('input', { static: true }) inputSearch: ElementRef;\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<string>> = new EventEmitter<AXValueEvent<string>>();\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n const old = this._text;\r\n this._text = v;\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n public focus() {\r\n this.inputSearch.nativeElement.focus();\r\n }\r\n\r\n onSearchChanged(text: string) {\r\n if (!this.searchChangeObserver) {\r\n Observable.create(observer => {\r\n\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.text = c;\r\n });\r\n }\r\n this.searchChangeObserver.next(text);\r\n }\r\n}\r\n","import { EventEmitter } from '@angular/core';\r\n\r\n\r\n\r\nexport interface AXSortParams {\r\n field?: string;\r\n sort?: 'asc' | 'desc';\r\n}\r\nexport interface AXGroups {\r\n field?: string;\r\n}\r\n\r\nexport interface AXFilterParams {\r\n field?: string;\r\n filters?: AXFilterConditionParams[];\r\n}\r\n\r\nexport interface AXFilterConditionParams {\r\n dataType?: 'text' | 'number' | 'date';\r\n type?: 'contains' | 'equal' | 'notEqual';\r\n value?: any;\r\n}\r\n\r\nexport interface AXDataSourceReadParams {\r\n skip?: number;\r\n take?: number;\r\n sort?: AXSortParams;\r\n filter?: AXFilterParams[];\r\n searchText?: string;\r\n group?: AXDataSourceGroupParams;\r\n requestId?: any;\r\n extra?: any;\r\n}\r\n\r\nexport class AXDataSourceReceivedResult {\r\n result?: any;\r\n requestId?: any;\r\n}\r\n\r\nexport interface AXDataSourceGroupParams {\r\n parentData: any;\r\n keys: string[];\r\n fields: string[];\r\n}\r\n\r\n\r\nexport abstract class AXDataSourceRead {\r\n abstract fetch(params: AXDataSourceReadParams): void;\r\n abstract dataReceived: EventEmitter<any>;\r\n}","import { Component, ContentChild, EventEmitter, Input } from \"@angular/core\";\r\nimport { AXDataSourceReadParams, AXDataSourceRead, AXDataSourceReceivedResult } from './read-param';\r\nimport { AXBaseEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXDataEvent } from '../base/events.class';\r\n\r\n\r\nexport class AXDataSourceReceivedEvent extends AXDataEvent<AXDataSourceReceivedResult>\r\n{\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: \"ax-data-source\",\r\n template: \"<ng-content></ng-content>\"\r\n})\r\nexport class AXDataSourceComponent {\r\n\r\n onDataReceived: EventEmitter<AXDataSourceReceivedEvent> = new EventEmitter<AXDataSourceReceivedEvent>();\r\n onFetchStart: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n @Input()\r\n provideData: (params: AXDataSourceReadParams) => Promise<any>;\r\n\r\n @Input()\r\n params: any;\r\n\r\n fetch(params: AXDataSourceReadParams) {\r\n this.onFetchStart.emit({ component: this });\r\n if (this.provideData) {\r\n if (params === null) {\r\n params = this.params === undefined ? null : this.params;\r\n } else {\r\n params.extra = this.params;\r\n }\r\n\r\n //\r\n this.provideData(params).then(_data => {\r\n const data: AXDataSourceReceivedResult = new AXDataSourceReceivedResult();\r\n data.result = _data;\r\n data.requestId = params == null ? null : params.requestId;\r\n this.onDataReceived.emit({\r\n component: this,\r\n data: data\r\n });\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ContentChild,\r\n Input,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ViewChild,\r\n ComponentRef,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n NgZone,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { AXSchedulerViewsProperty, AXSchedulerViewProperty } from './scheduler-views.property';\r\nimport { AXToolbarSchedulerViewsComponent } from './toolbars/scheduler-toolbar-views';\r\nimport { AXSchedulerDayTimeViewComponent } from './views/daytime/scheduler-daytime-view.component';\r\nimport { ComponentPortal, CdkPortalOutlet } from '@angular/cdk/portal';\r\nimport { AXSchedulerBaseViewComponent } from './views/scheduler-view.component';\r\nimport { AXSchedulerMonthViewComponent } from './views/month/scheduler-month-view.component';\r\nimport { AXToolbarSchedulerNavigatorComponent } from './toolbars/scheduler-toolbar-navigator';\r\nimport { AXSchedulerAgendaViewComponent } from './views/agenda/scheduler-agenda-view.component';\r\nimport { AXSchedulerTimelineViewComponent } from './views/timeline/scheduler-timeline-view.component';\r\nimport { AXSchedulerEventChangeArgs, AXSchedulerEvent } from './scheduler.class';\r\nimport { AXMenuItem, AXDateTime } from '@acorex/core';\r\nimport { AXToolbarSearchComponent } from '../../toolbar/search/toolbar-search.component';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-scheduler',\r\n templateUrl: './scheduler.component.html',\r\n styleUrls: ['./scheduler.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXSchedulerComponent {\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n @ViewChild(CdkPortalOutlet, { static: true })\r\n private portalOutlet: CdkPortalOutlet\r\n\r\n\r\n @ViewChild('container', { static: true })\r\n private container: ElementRef<HTMLElement>;\r\n\r\n @ContentChild(AXSchedulerViewsProperty, { static: true })\r\n private viewManager: AXSchedulerViewsProperty;\r\n\r\n @ContentChild(AXToolbarSchedulerViewsComponent, { static: true })\r\n private toolbarView: AXToolbarSchedulerViewsComponent;\r\n @ContentChild(AXToolbarSchedulerNavigatorComponent, { static: true })\r\n private toolbarNavigator: AXToolbarSchedulerNavigatorComponent;\r\n\r\n @ContentChild(AXToolbarSearchComponent, { static: true })\r\n searchInput: AXToolbarSearchComponent;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private dataSource: AXDataSourceComponent;\r\n\r\n view: AXSchedulerBaseViewComponent;\r\n\r\n\r\n private _currentView: string;\r\n @Input()\r\n public get currentView(): string {\r\n return this._currentView;\r\n }\r\n public set currentView(v: string) {\r\n this.setView(v);\r\n }\r\n\r\n private viewItems: AXMenuItem[] = [];\r\n private today = new AXDateTime();\r\n private navigatorDate = new AXDateTime();\r\n searchText: string;\r\n\r\n @Input()\r\n events: AXSchedulerEvent[] = [];\r\n\r\n @Output()\r\n onEventChanged: EventEmitter<AXSchedulerEventChangeArgs> = new EventEmitter<AXSchedulerEventChangeArgs>();\r\n\r\n setView(name: string) {\r\n this._currentView = name;\r\n if (this.viewManager.views) {\r\n this.viewItems.forEach(c => {\r\n c.selected = false;\r\n });\r\n this.viewItems.find(c => c.name == name).selected = true;\r\n const selected = this.viewManager.views.find(c => c.name == name);\r\n this.createView(selected);\r\n }\r\n }\r\n\r\n\r\n private createView(selected: AXSchedulerViewProperty) {\r\n this.startAnim();\r\n if (this.view) {\r\n this.view.ngOnDestroy();\r\n }\r\n let portal: ComponentPortal<AXSchedulerBaseViewComponent>;\r\n this.portalOutlet.detach();\r\n let interval = selected.interval;\r\n if (selected.type === 'day') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerDayTimeViewComponent);\r\n }\r\n if (selected.type === 'week') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerDayTimeViewComponent);\r\n interval = selected.interval * 7;\r\n }\r\n if (selected.type === 'month') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerMonthViewComponent);\r\n }\r\n if (selected.type === 'agenda') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerAgendaViewComponent);\r\n }\r\n if (selected.type === 'timeline') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerTimelineViewComponent);\r\n }\r\n const compRef: ComponentRef<AXSchedulerBaseViewComponent> = this.portalOutlet.attach(portal);\r\n this.view = compRef.instance;\r\n this.view.type = selected.type;\r\n this.view.interval = interval;\r\n //\r\n this.view.onEventChanged.subscribe(e => {\r\n this.onEventChanged.emit(e);\r\n });\r\n this.view.onNavigatorDateChanged.subscribe((e) => {\r\n this.navigatorDate = e;\r\n this.setNavigatorText();\r\n this.startAnim();\r\n });\r\n this.refresh();\r\n }\r\n\r\n private setNavigatorText() {\r\n if (this.toolbarNavigator) {\r\n this.toolbarNavigator.set(this.view.dateRange, this.view.type);\r\n }\r\n }\r\n\r\n private startAnim() {\r\n this.container.nativeElement.classList.remove('ax-anim-fade-in-fwd');\r\n this.container.nativeElement.style.opacity = '0';\r\n setTimeout(() => {\r\n this.container.nativeElement.classList.add('ax-anim-fade-in-fwd');\r\n }, 250);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(_ => {\r\n this.viewManager.views.forEach(v => {\r\n this.viewItems.push({\r\n groupName: 'view',\r\n name: v.name,\r\n text: v.caption\r\n });\r\n });\r\n //\r\n this.dataSource.onDataReceived.subscribe(e => {\r\n this.events = e;\r\n this.view.events = this.events;\r\n if (this.searchText && this.view.events && this.view.events.length) {\r\n this.navigatorDate = this.view.events[0].range.startTime;\r\n }\r\n if (this.navigatorDate) {\r\n this.view.navigate(this.navigatorDate);\r\n }\r\n else {\r\n this.view.navigate(this.today);\r\n }\r\n });\r\n //\r\n if (this.toolbarView) {\r\n this.toolbarView.onViewChanged.subscribe(c => {\r\n this.currentView = c;\r\n });\r\n this.toolbarView.items = this.viewItems;\r\n }\r\n //\r\n if (this.toolbarNavigator) {\r\n this.toolbarNavigator.onNavigate.subscribe(c => {\r\n if (c === 'next') {\r\n this.view.next();\r\n }\r\n else if (c === 'prev') {\r\n this.view.prev();\r\n }\r\n else {\r\n this.view.navigate(c);\r\n }\r\n });\r\n }\r\n if (this.searchInput) {\r\n this.searchInput.onValueChanged.subscribe(c => {\r\n this.searchText = c;\r\n if (c) {\r\n this.viewItems.forEach(c => { c.visible = false; });\r\n const x: AXSchedulerViewProperty = new AXSchedulerViewProperty('agenda', 'Search', 'VIEW_SEARCH');\r\n x.interval = 100;\r\n this.createView(x);\r\n this.refresh();\r\n }\r\n else {\r\n this.viewItems.forEach(c => { c.visible = true; });\r\n this.setView(this._currentView);\r\n }\r\n this.toolbarView.update();\r\n });\r\n }\r\n //\r\n this.setView(this.currentView);\r\n this.refresh();\r\n });\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.updateSize();\r\n }\r\n\r\n private updateSize() {\r\n this.zone.runOutsideAngular(() => {\r\n const toolbar = this.elm.nativeElement.querySelector<HTMLElement>(\r\n '.ax-scheduler-toolbar'\r\n );\r\n if (toolbar) {\r\n this.container.nativeElement.style.height = `calc(100% - ${toolbar.clientHeight}px)`;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.portalOutlet.detach();\r\n }\r\n\r\n refresh() {\r\n this.dataSource.fetch({\r\n searchText: this.searchText,\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrls: ['./toolbar.component.scss'],\r\n encapsulation:ViewEncapsulation.None\r\n})\r\nexport class AXToolbarComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n \r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\n\r\n@Component({\r\n selector: 'ax-toolbar-title',\r\n template: `\r\n <ng-container *ngIf=\"text; else elseTemplate\">\r\n <div class=\"title\">{{text}}</div>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <ng-content></ng-content>\r\n </ng-template>`,\r\n styles: [`\r\n .title{\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n }\r\n `],\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarTitleComponent }]\r\n})\r\nexport class AXToolbarTitleComponent {\r\n constructor() { }\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n this._text = v;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { AXToolbarItem } from \"../toolbar-item\";\r\nimport { AXBaseMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: \"ax-toolbar-group-button\",\r\n template: `\r\n <div class=\"btn-group\" role=\"group\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let item of items\"\r\n class=\"btn btn-sm {{ item.style }}\"\r\n [class.active]=\"item.selected\"\r\n (click)=\"onClick(item)\"\r\n [title]=\"item.tooltip\"\r\n >\r\n <i class=\"{{ item.icon }}\"></i>\r\n {{ item.text }}\r\n </button>\r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXToolbarItem, useExisting: AXToolbarButtonGroupComponent }\r\n ]\r\n})\r\nexport class AXToolbarButtonGroupComponent {\r\n constructor() { }\r\n\r\n @Input()\r\n items: AXBaseMenuItem[] = [];\r\n\r\n @Output()\r\n itemClick: EventEmitter<AXBaseMenuItem> = new EventEmitter<AXBaseMenuItem>();\r\n\r\n @Input()\r\n mode: \"single\" | \"multiple\" = \"single\";\r\n\r\n onClick(item: AXBaseMenuItem) {\r\n if (this.mode == \"single\") {\r\n this.items.forEach(c => {\r\n c.selected = false;\r\n });\r\n item.selected = true;\r\n this.itemClick.emit(item);\r\n } else {\r\n if (item.selected) {\r\n item.selected = false;\r\n } else {\r\n item.selected = true;\r\n this.itemClick.emit(item);\r\n }\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SubItemsEvent } from './menu-item.component';\r\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-menu2',\r\n template: `\r\n <div class=\"ax ax-menu ax-menu-vertical\" [attr.data-level]=\"level\">\r\n <ax-menu-item\r\n *ngFor=\"let item of items\"\r\n [level]=\"level\"\r\n [item]=\"item\"\r\n (showSubMenu)=\"showSubmenu($event)\">\r\n </ax-menu-item>\r\n </div>\r\n `,\r\n styleUrls: ['./menu2.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenu2Component implements OnDestroy {\r\n subItemsOverlays = new Array<OverlayRef>();\r\n level: number = 0;\r\n\r\n @Input() items: AXMenuItem[];\r\n @Output() selected = new EventEmitter<AXMenuItem>();\r\n //@ViewChild(TemplateRef) template;\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef\r\n ) { }\r\n\r\n showSubmenu(event: SubItemsEvent) {\r\n const position: ConnectedPosition[] = [];\r\n if (event.level === 0) {\r\n position.push({\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n });\r\n } else {\r\n position.push({\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n });\r\n }\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(event.element)\r\n .withPositions(position);\r\n const overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: false,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n this.subItemsOverlays.push(overlayRef);\r\n const portal = new ComponentPortal(AXMenu2Component, this.viewContainerRef);\r\n\r\n const com = overlayRef.attach(portal);\r\n com.instance.level = event.level + 1;\r\n com.instance.items = event.item.items;\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onDocumentClick(target) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.hideOverlays();\r\n }\r\n }\r\n\r\n hideOverlays() {\r\n this.subItemsOverlays.forEach((o) => o.dispose());\r\n this.subItemsOverlays.length = 0;\r\n }\r\n ngOnDestroy() {\r\n this.hideOverlays();\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-menu-item',\r\n template: `\r\n <div class=\"ax-menu-item {{item.style}}\" [attr.data-level]=\"level\" (click)=\"showSubItems($event)\" [ngClass]=\"{'disabled': item.disable}\" >\r\n <i *ngIf=\"item.startIcon\" class=\"icon {{item.startIcon}}\"></i>\r\n <span class=\"text\">{{ item.text }}</span>\r\n <i *ngIf=\"item.endIcon\" class=\"icon {{item.endIcon}}\"></i>\r\n <i class=\"far fa-angle-down icon drop-icon\" *ngIf=\"item?.items?.length && item.text\"></i>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenuItemComponent {\r\n @Input() item: AXMenuItem;\r\n @Input() level: number;\r\n @Output() showSubMenu = new EventEmitter<SubItemsEvent>();\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n showSubItems(event: Event) {\r\n event.stopPropagation();\r\n if (this.item?.items?.length) {\r\n this.showSubMenu.emit({ item: this.item, element: this.element, level: this.level });\r\n }\r\n }\r\n}\r\nexport interface SubItemsEvent {\r\n element: ElementRef;\r\n item: AXMenuItem;\r\n level: number;\r\n}\r\n","import { Directive, Input, ElementRef, HostListener, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[axTooltip]'\r\n})\r\nexport class AXTooltipDirective {\r\n @Input('tooltip') tooltipTitle: string;\r\n @Input() placement: string = 'top';\r\n @Input() delay: number = 500;\r\n tooltip: HTMLElement;\r\n offset = 17;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n \r\n }\r\n\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n if (!this.tooltip && this.tooltipTitle) {\r\n this.show();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.tooltip && this.tooltipTitle) {\r\n this.hide();\r\n }\r\n }\r\n\r\n show() {\r\n this.create();\r\n this.setPosition();\r\n this.renderer.addClass(this.tooltip, 'ax-tooltip-show');\r\n }\r\n\r\n hide() {\r\n if (this.tooltip) {\r\n try {\r\n this.renderer.removeClass(this.tooltip, 'ax-tooltip-show');\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n } catch (error) {}\r\n }\r\n }\r\n\r\n create() {\r\n if(this.tooltipTitle){\r\n this.tooltip = this.renderer.createElement('span');\r\n\r\n this.renderer.appendChild(\r\n this.tooltip,\r\n this.renderer.createText(this.tooltipTitle) // textNode\r\n );\r\n\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n\r\n this.renderer.addClass(this.tooltip, 'ax-tooltip');\r\n this.renderer.addClass(this.tooltip, `ax-tooltip-${this.placement}`);\r\n this.renderer.setStyle(this.tooltip, '-webkit-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-moz-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-o-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, 'transition', `opacity ${this.delay}ms`);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n }\r\n\r\n setPosition() {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n const tooltipPos = this.tooltip.getBoundingClientRect();\r\n const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n\r\n let top;\r\n let left;\r\n\r\n if (this.placement === 'top') {\r\n top = hostPos.top - tooltipPos.height - this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'bottom') {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'left') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.left - tooltipPos.width - this.offset;\r\n }\r\n\r\n if (this.placement === 'right') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.right + this.offset;\r\n }\r\n\r\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTooltipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n declarations: [AXTooltipDirective],\r\n imports: [ CommonModule ],\r\n exports: [AXTooltipDirective],\r\n providers: [],\r\n})\r\nexport class AXTooltipModule {}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXMenuComponent } from './menu.component';\r\nimport { AXMenu2Component } from './menu2.component';\r\nimport { AXMenuItemComponent } from './menu-item.component';\r\nimport { AXTooltipModule } from '../tooltip/tooltip.module';\r\n@NgModule({\r\n declarations: [AXMenuComponent, AXMenu2Component, AXMenuItemComponent],\r\n imports: [CommonModule,AXTooltipModule],\r\n exports: [AXMenuComponent, AXMenu2Component, AXMenuItemComponent],\r\n providers: []\r\n})\r\nexport class AXMenuModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarComponent } from './toolbar.component';\r\nimport { AXToolbarMenuComponent } from './menu/toolbar-menu.component';\r\nimport { AXToolbarSearchComponent } from './search/toolbar-search.component';\r\nimport { AXToolbarTitleComponent } from './title/toolbar-title.component';\r\nimport { AXToolbarButtonGroupComponent } from './group-button/toolbar-group-button.component';\r\nimport { AXPopoverModule } from '../popover/popover.module';\r\nimport { AXMenuModule } from '../menu/menu.module';\r\n\r\nconst COMPONENTS = [\r\n AXToolbarComponent,\r\n AXToolbarMenuComponent,\r\n AXToolbarSearchComponent,\r\n AXToolbarTitleComponent,\r\n AXToolbarButtonGroupComponent\r\n]\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n imports: [CommonModule, AXPopoverModule, AXMenuModule],\r\n exports: [COMPONENTS],\r\n providers: [],\r\n})\r\nexport class AXToolbarModule { }","import { NgModule } from '@angular/core';\r\nimport { AXSchedulerComponent } from './scheduler.component';\r\nimport { AXSchedulerViewsProperty, AXSchedulerViewProperty } from './scheduler-views.property';\r\nimport { AXSchedulerDayTimeViewComponent } from './views/daytime/scheduler-daytime-view.component';\r\nimport { AXToolbarSchedulerViewsComponent } from './toolbars/scheduler-toolbar-views';\r\nimport { AXCoreModule } from '@acorex/core';\r\nimport { AXSchedulerMonthViewComponent } from './views/month/scheduler-month-view.component';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { AXToolbarSchedulerNavigatorComponent } from './toolbars/scheduler-toolbar-navigator';\r\nimport { AXSchedulerAgendaViewComponent } from './views/agenda/scheduler-agenda-view.component';\r\nimport { AXSchedulerTimelineViewComponent } from './views/timeline/scheduler-timeline-view.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AXCalendarBoxModule } from '../calendar-box/calendar-box.module';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarModule } from '../../toolbar/toolbar.module';\r\nimport { AXPopoverModule } from '../../popover/popover.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n AXSchedulerComponent,\r\n AXSchedulerViewsProperty,\r\n AXSchedulerViewProperty,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent,\r\n AXToolbarSchedulerViewsComponent,\r\n AXToolbarSchedulerNavigatorComponent\r\n ],\r\n imports: [CommonModule,AXCoreModule, AXCalendarBoxModule, AXToolbarModule, AXPopoverModule, PortalModule, DragDropModule],\r\n exports: [\r\n AXSchedulerComponent,\r\n AXSchedulerViewsProperty,\r\n AXSchedulerViewProperty,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent,\r\n AXToolbarSchedulerViewsComponent,\r\n AXToolbarSchedulerNavigatorComponent\r\n ],\r\n entryComponents: [\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class AXSchedulerModule { }","import {\r\n Component,\r\n ViewEncapsulation,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ViewChild,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\nimport { AXValueEvent, AXHtmlEvent } from '../base/events.class';\r\n\r\nexport class AXCheckBoxItemClick extends AXHtmlEvent<MouseEvent> {\r\n value?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-check-box',\r\n templateUrl: './checkbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXCheckBoxComponent extends AXBaseComponent implements AXBaseSizableComponent, AXBaseValueComponent<boolean> {\r\n @ViewChild('input', { static: true }) input: ElementRef<HTMLInputElement>;\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n label: string = '';\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @Input()\r\n indeterminate: boolean = false;\r\n\r\n focus(): void {}\r\n constructor(protected cdr: ChangeDetectorRef, private ref: ElementRef) {\r\n super();\r\n }\r\n // Value\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\r\n @Output()\r\n valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n //\r\n @Output()\r\n onClick: EventEmitter<AXCheckBoxItemClick> = new EventEmitter<AXCheckBoxItemClick>();\r\n\r\n private _value?: boolean = false;\r\n public get value(): boolean {\r\n return this._value;\r\n }\r\n\r\n @Input()\r\n public set value(v: boolean) {\r\n if (v != this._value && v !== undefined) {\r\n const old = this._value;\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n // handelChange(e) {\r\n // const val = e.target.checked;\r\n // this.value = val;\r\n // }\r\n\r\n ngOnInit(): void {\r\n if (!this.indeterminate && this.value == null) {\r\n this.value = false;\r\n }\r\n }\r\n\r\n handleClick(e: MouseEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n // setTimeout(() => {\r\n if (!this.disabled && !this.readonly) {\r\n //TODO: check intermddiate;\r\n this.value = !this.value;\r\n this.onClick.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e,\r\n value: this.value\r\n });\r\n }\r\n // }, 100);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXCheckBoxComponent } from './checkbox.component';\r\n@NgModule({\r\n declarations: [AXCheckBoxComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [AXCheckBoxComponent],\r\n providers: []\r\n})\r\nexport class AXCheckBoxModule { }\r\n","import { Component, Input, ElementRef, HostListener, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXElementSize } from '../base/element.class';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-context-menu',\r\n templateUrl: './context-menu.component.html',\r\n host: { class: 'ax context-menu-container' }\r\n})\r\nexport class AXContextMenuComponent {\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n width: number;\r\n\r\n @Input()\r\n items: AXMenuItem[] = [];\r\n\r\n @Output()\r\n onItemClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClosed: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n @ViewChild('contex')\r\n contex: ElementRef<HTMLUListElement>;\r\n\r\n\r\n\r\n show: boolean = false;\r\n\r\n constructor(private container: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n close() {\r\n this.show = false;\r\n this.onClosed.emit({\r\n component: this\r\n });\r\n }\r\n\r\n\r\n\r\n open(_left, _top, _rtl = false) {\r\n this.show = true;\r\n setTimeout(() => {\r\n const containRec = this.container.nativeElement.getBoundingClientRect();\r\n let left = _rtl === false ? _left : _left - containRec.width;\r\n let top = _top;\r\n if (_rtl === false && _left + containRec.width > window.innerWidth) {\r\n left = window.innerWidth - containRec.width;\r\n } else if (_rtl === true && _left - containRec.width < 0) {\r\n left = 0;\r\n }\r\n if (top + containRec.height > window.innerHeight) {\r\n top = _top - containRec.height;\r\n }\r\n this.container.nativeElement.style.left = left + 'px';\r\n this.container.nativeElement.style.top = top + 'px';\r\n\r\n }, 5);\r\n\r\n\r\n }\r\n\r\n\r\n\r\n handleClickItem(item: AXMenuItem) {\r\n if (!item.disable || item.disable === undefined) {\r\n this.onItemClick.emit(item);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, Output, EventEmitter, ComponentFactoryResolver, Injector, ViewContainerRef } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXBaseEvent } from '../base/events.class';\r\nimport { AXContextMenuComponent } from './context-menu.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport type AXContextMenuPromiseFunction = (item: any) => Promise<AXMenuItem[]>;\r\nexport type AXContextMenuFunction = (item: any) => AXMenuItem[];\r\nexport class AXContextMenuItemClickEvent extends AXBaseEvent {\r\n dataItem?: any;\r\n menuItem: AXMenuItem;\r\n}\r\n\r\n@Directive({\r\n selector: '[axContextMenu]'\r\n})\r\nexport class AXContextMenuDirective {\r\n @Input()\r\n contextMenu: AXContextMenuComponent;\r\n\r\n @Input()\r\n contextDataItem: any;\r\n\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n @Input()\r\n rtl: boolean = false;\r\n\r\n internalItems: AXMenuItem[] = [];\r\n\r\n private clickSubscribe: Subscription;\r\n private closeSubscribe: Subscription;\r\n\r\n @HostListener('contextmenu', ['$event'])\r\n onContextMenu(e: MouseEvent) {\r\n this.getMenuItems().then(items => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.createContextMenu();\r\n this.contextMenu.items = items;\r\n\r\n\r\n this.contextMenu.open(e.x, e.y, this.rtl);\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n constructor(\r\n private ref: ElementRef,\r\n private factoryResolver: ComponentFactoryResolver,\r\n private viewContainerRef: ViewContainerRef,\r\n private injector: Injector\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n createContextMenu(): void {\r\n const wrapper = document.createElement('div');\r\n wrapper.classList.add('ax-overlay-wrapper');\r\n wrapper.addEventListener('click', this.wrapperClick.bind(this));\r\n wrapper.addEventListener('contextmenu', this.wrapperRClick.bind(this));\r\n //\r\n document.body.appendChild(wrapper);\r\n const factory = this.factoryResolver.resolveComponentFactory(AXContextMenuComponent);\r\n const componentRef = this.viewContainerRef.createComponent(factory);\r\n this.contextMenu = componentRef.instance;\r\n wrapper.appendChild(componentRef.location.nativeElement);\r\n //\r\n this.clearComponentSubscriptions();\r\n this.createComponentSubscriptions();\r\n }\r\n\r\n wrapperClick(e: MouseEvent) {\r\n this.remove();\r\n }\r\n\r\n wrapperRClick(e: MouseEvent) {\r\n if (document.elementsFromPoint(e.clientX, e.clientY).includes(this.ref.nativeElement)) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n this.contextMenu.open(e.x, e.y, this.rtl);\r\n }\r\n else {\r\n e.preventDefault();\r\n this.remove();\r\n }\r\n }\r\n\r\n\r\n\r\n private clearComponentSubscriptions() {\r\n if (this.clickSubscribe) {\r\n this.clickSubscribe.unsubscribe();\r\n this.clickSubscribe = undefined;\r\n }\r\n if (this.closeSubscribe) {\r\n this.closeSubscribe.unsubscribe();\r\n this.closeSubscribe = undefined;\r\n }\r\n }\r\n\r\n private createComponentSubscriptions() {\r\n this.clickSubscribe = this.contextMenu.onItemClick.subscribe(c => {\r\n this.remove();\r\n this.onContextMenuItemClick.emit({\r\n component: this,\r\n dataItem: this.contextDataItem,\r\n htmlElement: this.ref.nativeElement,\r\n menuItem: c\r\n });\r\n });\r\n this.closeSubscribe = this.contextMenu.onClosed.subscribe(c => {\r\n this.clearComponentSubscriptions();\r\n });\r\n }\r\n\r\n private remove() {\r\n this.viewContainerRef.clear();\r\n this.clearComponentSubscriptions();\r\n document.querySelector('.ax-overlay-wrapper')?.remove();\r\n }\r\n\r\n private getMenuItems(): Promise<AXMenuItem[]> {\r\n return new Promise<AXMenuItem[]>((resolve, reject) => {\r\n if (typeof (this.contextMenuItems) === 'function') {\r\n const val = this.contextMenuItems(this.contextDataItem);\r\n if (val instanceof Promise) {\r\n val.then(_data => {\r\n resolve(_data);\r\n });\r\n } else {\r\n resolve(val);\r\n }\r\n } else if (Array.isArray(this.contextMenuItems)) {\r\n resolve(this.contextMenuItems);\r\n }\r\n else {\r\n resolve([]);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.clearComponentSubscriptions();\r\n }\r\n}\r\n","import { NgModule, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXContextMenuComponent } from './context-menu.component';\r\nimport { AXContextMenuDirective } from './context-menu.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXContextMenuComponent, AXContextMenuDirective],\r\n imports: [CommonModule],\r\n exports: [AXContextMenuComponent, AXContextMenuDirective],\r\n providers: [],\r\n})\r\nexport class AXContextMenuModule {\r\n\r\n}","import { Input, ChangeDetectorRef, EventEmitter, Output, Directive } from '@angular/core';\r\n\r\nexport interface AXFilterColumn {\r\n field: string;\r\n caption: string;\r\n type?: 'text' | 'selection' | 'date' | 'number';\r\n options?: any;\r\n}\r\n\r\nexport interface AXFilterColumnGroup {\r\n caption?: string;\r\n columns: AXFilterColumn[];\r\n}\r\n\r\nexport interface AXFilterCondition {\r\n field: string;\r\n condition: string;\r\n dataType: 'string' | 'date' | 'datetime' | 'time' | 'number';\r\n value: any;\r\n}\r\n\r\nexport interface AXFilterPredefined {\r\n name: string;\r\n title: string;\r\n value: AXFilterCondition[];\r\n}\r\n\r\n@Directive()\r\nexport abstract class AXFilterColumnComponent {\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n\r\n }\r\n operator: string = 'equal';\r\n value: any = null;\r\n @Input()\r\n field: string = null;\r\n\r\n @Output()\r\n valueChange: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\r\n @Output()\r\n activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n private _active: boolean;\r\n @Input()\r\n public get active(): boolean {\r\n return this._active;\r\n }\r\n public set active(v: boolean) {\r\n this._active = v;\r\n this.activeChange.emit(v);\r\n }\r\n\r\n\r\n abstract get condition(): AXFilterCondition;\r\n\r\n clear() {\r\n this.active = false;\r\n this.value = null;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setFilter(value: any, operator: string) {\r\n this.active = true;\r\n this.operator = operator;\r\n this.value = value;\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n\r\n\r\n","import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, EventEmitter } from '@angular/core';\r\nimport { Output } from '@angular/core';\r\nimport { AXSelectionList } from '@acorex/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-selection-list',\r\n templateUrl: './selection-list.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXSelectionListComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n private _selectedItems: any[] = [];\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n value: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n direction: string = 'horizontal';\r\n\r\n @Input()\r\n items: Array<AXSelectionList> = [];\r\n\r\n @Input()\r\n mode: string = 'single';\r\n\r\n @Input()\r\n textField: string = 'text';\r\n\r\n @Input()\r\n valueField: string = 'value';\r\n\r\n @Output()\r\n selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Input()\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n public set selectedItems(v: any[]) {\r\n this._selectedItems = v;\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n @Output()\r\n selectedValuesChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Input()\r\n public get selectedValues(): any[] {\r\n return this._selectedItems.map((c) => c[this.valueField]) || [];\r\n }\r\n public set selectedValues(v: any[]) {\r\n const old = this.selectedValues;\r\n if (v == null) {\r\n v = [];\r\n }\r\n if (JSON.stringify(old) != JSON.stringify(v)) {\r\n this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n onCheckValueChange(value: any, checked: boolean) {\r\n if (!this.disabled) {\r\n if (this.mode === 'single') {\r\n this.selectedValues = [value];\r\n } else {\r\n if (checked) {\r\n if (!this.selectedValues.includes(value)) {\r\n this.selectedValues = [...this.selectedValues, ...[value]];\r\n }\r\n } else {\r\n this.selectedValues = this.selectedValues.filter((c) => c !== value);\r\n }\r\n }\r\n }\r\n }\r\n focus(): void {}\r\n\r\n onvalueChanged(e) {\r\n if (!this.disabled) {\r\n this.selectedItemsChange.emit([e]);\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, EventEmitter, Output } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { AXDateTime } from '@acorex/core';\r\nimport { AXSelectionListComponent } from '../../selection-list/selection-list.component';\r\n\r\n@Component({\r\n selector: 'ax-filter-column-date',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <ax-selection-list [items]=\"items\" mode=\"single\" direction=\"vertical\" (selectedItemsChange)=\"onSelectedChanged($event)\">\r\n </ax-selection-list>\r\n </div>\r\n <div class=\"ax-filter-section-value\" [hidden]=\"!showCustom\">\r\n <ax-date-picker label=\"From\" [(value)]=\"fromDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker>\r\n <ax-date-picker label=\"To\" [(value)]=\"toDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker>\r\n </div>\r\n <div class=\"ax-filter-section-value\" [hidden]=\"!showSpecific\">\r\n <ax-date-picker label=\"Date\" [(value)]=\"fromDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker> \r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnDateComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterColumnDateComponent extends AXFilterColumnComponent {\r\n @ViewChild(AXSelectionListComponent, { static: true }) selection: AXSelectionListComponent;\r\n\r\n items: any = [\r\n {\r\n text: 'Today',\r\n value: 'today'\r\n },\r\n {\r\n text: 'This Week',\r\n value: 'this-week'\r\n },\r\n {\r\n text: 'This Month',\r\n value: 'this-month'\r\n },\r\n {\r\n text: 'This Year',\r\n value: 'this-year'\r\n },\r\n {\r\n text: 'Specific',\r\n value: 'specific'\r\n },\r\n {\r\n text: 'Range',\r\n value: 'range'\r\n }\r\n ];\r\n\r\n fromDate: AXDateTime = new AXDateTime();\r\n toDate: AXDateTime = new AXDateTime();\r\n\r\n selectedItem: any = null;\r\n\r\n showCustom: boolean = false;\r\n showSpecific: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.selection.selectedItems = [this.items[0]];\r\n }\r\n dateChange(e) {\r\n this.valueChange.emit();\r\n }\r\n onSelectedChanged(items: any[]) {\r\n\r\n this.selectedItem = items[0];\r\n this.showCustom = this.selectedItem && this.selectedItem.value == 'range';\r\n this.showSpecific = this.selectedItem && this.selectedItem.value == 'specific';\r\n this.cdr.detectChanges();\r\n this.valueChange.emit();\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n let today = new AXDateTime();\r\n switch (this.selectedItem.value) {\r\n case 'today':\r\n this.fromDate = this.toDate = today;\r\n\r\n return {\r\n condition: 'equal',\r\n field: this.field,\r\n dataType: 'date',\r\n value: this.fromDate.toISOString()\r\n }\r\n case 'specific':\r\n return {\r\n condition: 'equal',\r\n field: this.field,\r\n dataType: 'date',\r\n value: this.fromDate.toISOString()\r\n }\r\n case 'this-week':\r\n this.toDate = today.endOf('week');\r\n this.fromDate = today.startOf('week');\r\n break;\r\n case 'this-month':\r\n this.toDate = today.endOf('month')\r\n this.fromDate = today.startOf('month');\r\n break;\r\n case 'this-year':\r\n this.toDate = today.endOf('year')\r\n this.fromDate = today.startOf('year');\r\n break;\r\n }\r\n\r\n return {\r\n condition: 'between',\r\n field: this.field,\r\n dataType: 'date',\r\n value: [this.fromDate.toISOString(), this.toDate.toISOString()]\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ax-filter-column-number',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <div>\r\n <select (ngModelChange)=\"onOperatorChange($event)\" class=\"form-control form-control-sm\" [(ngModel)]=\"operator\">\r\n <option *ngFor=\"let o of operators\" value=\"{{o.value}}\">\r\n {{o.title}}\r\n </option>\r\n </select>\r\n </div>\r\n <div>\r\n <ax-text-box placeholder=\"Type here\" (textChange)=\"onTextChange($event)\" [(value)]=\"value\" *ngIf=\"operator!='is-not-empty' && operator!='is-empty'\">\r\n </ax-text-box>\r\n </div>\r\n</div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnNumberComponent }\r\n ]\r\n})\r\nexport class AXFilterColumnNumberComponent extends AXFilterColumnComponent {\r\n\r\n operator: string = 'equal';\r\n\r\n operators: any[] = [\r\n {\r\n title: 'is',\r\n value: 'equal'\r\n },\r\n {\r\n title: `isn't`,\r\n value: 'not-equal'\r\n },\r\n {\r\n title: 'less than',\r\n value: 'less-than'\r\n },\r\n {\r\n title: 'less than or equal',\r\n value: 'less-than-equal'\r\n },\r\n {\r\n title: 'greater than',\r\n value: 'greater-than'\r\n },\r\n {\r\n title: 'greater than or equal',\r\n value: 'greater-than-equal'\r\n },\r\n {\r\n title: 'is empty',\r\n value: 'is-empty'\r\n },\r\n {\r\n title: `isn't empty`,\r\n value: 'is-not-empty'\r\n }\r\n ];\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n private searchChangeObserver: any;\r\n onOperatorChange(e) {\r\n\r\n this.valueChange.emit();\r\n\r\n }\r\n onTextChange(e) {\r\n // TODO: Check this method work correctly\r\n if (!this.searchChangeObserver) {\r\n return new Observable(observer => {\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.valueChange.emit();\r\n });\r\n }\r\n this.searchChangeObserver.next(e);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n return {\r\n condition: this.operator,\r\n field: this.field,\r\n dataType: 'number',\r\n value: this.value\r\n };\r\n }\r\n\r\n}\r\n","import { Component, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { AXCheckItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-filter-column-selection',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <ax-selection-list [items]=\"items\" (selectedItemsChange)=\"onSelectChange($event)\" [mode]=\"mode\" direction=\"vertical\" [(selectedItems)]=\"selectedItems\">\r\n </ax-selection-list>\r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnSelectionComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterColumnSelectionComponent extends AXFilterColumnComponent {\r\n\r\n\r\n selectedItems: any[] = [];\r\n\r\n @Input()\r\n items: AXCheckItem[] = [];\r\n\r\n @Input()\r\n mode = 'single';\r\n\r\n @Input()\r\n dataType: any = 'number';\r\n\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n const values = this.selectedItems.map(c => c.value);\r\n if (values.length === 0) {\r\n return null;\r\n\r\n }\r\n return {\r\n condition: this.mode === 'single' ? 'equal' : 'contains',\r\n field: this.field,\r\n dataType: this.dataType,\r\n value: this.mode === 'single' ? values[0] : values\r\n }\r\n }\r\n clear() {\r\n this.selectedItems = [];\r\n super.clear();\r\n }\r\n onSelectChange(e) {\r\n this.valueChange.emit();\r\n\r\n }\r\n\r\n setFilter(value: any, operator: string) {\r\n if (value instanceof Array) {\r\n this.selectedItems = this.items.filter(c => value.some(z => z === c.value));\r\n }\r\n else {\r\n this.selectedItems = [this.items.find(c => c.value === value)];\r\n }\r\n super.setFilter(value, operator);\r\n }\r\n}\r\n","import { Component,ChangeDetectorRef } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n@Component({\r\n selector: 'ax-filter-column-string',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <div>\r\n <select (ngModelChange)=\"onOperatorChange($event)\" class=\"form-control form-control-sm\" [(ngModel)]=\"operator\">\r\n <option *ngFor=\"let o of operators\" value=\"{{o.value}}\">\r\n {{o.title}}\r\n </option>\r\n </select>\r\n </div>\r\n <div>\r\n <ax-text-box placeholder=\"Type here\" (textChange)=\"onTextChange($event)\" [(value)]=\"value\" *ngIf=\"operator!='is-not-empty' && operator!='is-empty'\">\r\n </ax-text-box>\r\n </div>\r\n</div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnStringComponent }\r\n ]\r\n})\r\nexport class AXFilterColumnStringComponent extends AXFilterColumnComponent {\r\n\r\n\r\n operator: string = 'contains';\r\n operators: any[] = [\r\n {\r\n title: 'is',\r\n value: 'equal'\r\n },\r\n {\r\n title: `isn't`,\r\n value: 'not-equal'\r\n },\r\n {\r\n title: 'contains',\r\n value: 'contains'\r\n },\r\n {\r\n title: 'not contains',\r\n value: 'not-contains'\r\n },\r\n {\r\n title: 'start with',\r\n value: 'start-with'\r\n },\r\n {\r\n title: 'end with',\r\n value: 'end-with'\r\n },\r\n {\r\n title: 'is empty',\r\n value: 'is-empty'\r\n },\r\n {\r\n title: `isn't empty`,\r\n value: 'is-not-empty'\r\n }\r\n ];\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n private searchChangeObserver: any;\r\n\r\n onOperatorChange(e) {\r\n\r\n this.valueChange.emit();\r\n\r\n }\r\n\r\n // TODO: Check this method work correctly\r\n onTextChange(e) {\r\n if (!this.searchChangeObserver) {\r\n return new Observable(observer => {\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.valueChange.emit();\r\n });\r\n }\r\n this.searchChangeObserver.next(e);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n return {\r\n condition: this.operator,\r\n field: this.field,\r\n dataType: 'string',\r\n value: this.value\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-text-box',\r\n templateUrl: './textbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTextBoxComponent }]\r\n})\r\nexport class AXTextBoxComponent extends AXBaseTextComponent {\r\n\r\n @Input()\r\n mask: any;\r\n\r\n @Input()\r\n type: 'text' | 'number' | 'tel' | 'url' | 'password' | 'search' = 'text';\r\n\r\n @Input()\r\n showMask: boolean = true;\r\n\r\n @Input()\r\n maxLength: number;\r\n\r\n @Input()\r\n maskGuid: boolean = false;\r\n\r\n @Input()\r\n maskPlaceholder: string = '_';\r\n\r\n @Input()\r\n maskKeepCharPositions: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-toast-wrapper',\r\n template: '',\r\n styleUrls: ['./toast-wrapper.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXToastWrapperComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, OnInit, Input, ElementRef, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './toast-message.component.html',\r\n styleUrls: ['./toast-message.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXToastMessageComponent implements OnInit {\r\n constructor(private elRef: ElementRef) { }\r\n\r\n @Input() title: string = '';\r\n @Input() message: string;\r\n @Input() timeOut: number = 6000;\r\n @Input() closeable: boolean = false;\r\n\r\n @Input() type: 'info' | 'success' | 'warning' | 'error' = 'info';\r\n\r\n style: string = 'info';\r\n icon: string = '';\r\n toastWidth: number = 100;\r\n\r\n ngOnInit(): void {\r\n if (this.timeOut) {\r\n const interval = setInterval(() => {\r\n --this.toastWidth;\r\n if (this.toastWidth === 0) {\r\n clearInterval(interval);\r\n this.close();\r\n }\r\n }, this.timeOut / 100);\r\n }\r\n switch (this.type) {\r\n case 'success':\r\n this.style = 'success';\r\n break;\r\n case 'warning':\r\n this.style = 'warning';\r\n break;\r\n case 'error':\r\n this.style = 'error';\r\n break;\r\n default:\r\n this.style = 'info';\r\n break;\r\n }\r\n switch (this.type) {\r\n case 'success':\r\n this.icon = 'fas fa-check-circle';\r\n break;\r\n case 'warning':\r\n this.icon = 'fas fa-exclamation-triangle';\r\n break;\r\n case 'error':\r\n this.icon = 'fas fa-exclamation-circle';\r\n break;\r\n default:\r\n this.icon = 'fas fa-info-circle';\r\n break;\r\n }\r\n }\r\n close() {\r\n this.elRef.nativeElement.parentElement.removeChild(this.elRef.nativeElement);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXToastWrapperComponent } from './toast-wrapper/toast-wrapper.component';\r\nimport { AXToastMessageComponent } from './toast-message/toast-message.component';\r\n\r\nexport interface IToastOptions {\r\n timeOut?: number;\r\n title?: string;\r\n closeable?: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXToastService {\r\n\r\n constructor(private injectionService: AXRenderService) { }\r\n\r\n info(message: string, options?: IToastOptions) {\r\n this.show(message, 'info', options);\r\n }\r\n\r\n success(message: string, options?: IToastOptions) {\r\n this.show(message, 'success', options);\r\n }\r\n\r\n warning(message: string, options?: IToastOptions) {\r\n this.show(message, 'warning', options);\r\n }\r\n\r\n error(message: string, options?: IToastOptions) {\r\n this.show(message, 'error', options);\r\n }\r\n\r\n private show(\r\n message: string,\r\n type: 'success' | 'info' | 'error' | 'warning',\r\n options?: IToastOptions\r\n ) {\r\n const opt = Object.assign(\r\n {\r\n message,\r\n type\r\n },\r\n options\r\n );\r\n\r\n const wrapper = document.querySelector('ax-toast-wrapper');\r\n if (!wrapper) {\r\n const toastWrapper = this.injectionService.appendComponent(\r\n AXToastWrapperComponent\r\n );\r\n this.injectionService.appendComponent(\r\n AXToastMessageComponent,\r\n opt,\r\n toastWrapper.location.nativeElement\r\n );\r\n } else {\r\n this.injectionService.appendComponent(\r\n AXToastMessageComponent,\r\n opt,\r\n wrapper\r\n );\r\n }\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ViewChildren, QueryList, ViewEncapsulation, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewContainerRef } from '@angular/core';\r\nimport { AXFilterColumnGroup, AXFilterColumnComponent, AXFilterCondition, AXFilterPredefined } from '../filter.class';\r\nimport { AXMenuItem, AXHtmlUtil, AXKeyboardEvent } from '@acorex/core';\r\nimport { AXMenuComponent } from '../../menu/menu.component';\r\nimport { AXTextBoxComponent } from '../../textbox/textbox.component';\r\nimport { AXToastService } from '../../toast/toast.service';\r\nimport { AXValueEvent } from '../../base/events.class';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-filter-panel',\r\n templateUrl: './filter-panel.component.html',\r\n styleUrls: ['./filter-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterPanelComponent {\r\n\r\n @ViewChild('panel', { static: true }) panel: ElementRef<HTMLDivElement>;\r\n @ViewChild('footer', { static: true }) footer: ElementRef<HTMLDivElement>;\r\n @ViewChild('savedList', { static: true }) savedList: ElementRef<HTMLDivElement>;\r\n @ViewChild('body', { static: true }) body: ElementRef<HTMLDivElement>;\r\n @ViewChild('menu', { static: false }) menu: AXMenuComponent;\r\n @ViewChild('tbxName', { static: true }) tbxName: AXTextBoxComponent;\r\n\r\n @ViewChildren(AXFilterColumnComponent) filters: QueryList<AXFilterColumnComponent>;\r\n\r\n @Input()\r\n groups: AXFilterColumnGroup[] = [];\r\n\r\n @Input()\r\n predefinedFilters: AXFilterPredefined[] = [];\r\n\r\n @Input()\r\n mode: 'click' | 'immediate' = 'click';\r\n\r\n saveItems: AXMenuItem[] = [\r\n {\r\n name: 'saveAs',\r\n text: 'Save',\r\n startIcon: 'fas fa-save',\r\n items: [\r\n {\r\n name: 'save',\r\n text: 'Save current'\r\n },\r\n {\r\n name: 'saveAs',\r\n text: 'Save as New'\r\n }\r\n ]\r\n },\r\n\r\n ];\r\n\r\n @Output()\r\n filterChange: EventEmitter<AXFilterCondition[]> = new EventEmitter<AXFilterCondition[]>();\r\n\r\n constructor(private cdr: ChangeDetectorRef, private toast: AXToastService) { }\r\n\r\n apply() {\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n public clear() {\r\n this.filters.forEach(e => {\r\n e.clear();\r\n });\r\n this.predefinedFilters.forEach(c => {\r\n (c as any).selected = false;\r\n });\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n onValueChange(e) {\r\n if (this.mode === 'immediate') {\r\n setTimeout(() => {\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }, 50);\r\n\r\n }\r\n }\r\n\r\n onCheckValueChange(v, e: AXValueEvent<boolean>) {\r\n\r\n\r\n if (!e.value && this.mode === 'immediate') {\r\n this.filters.forEach(c => {\r\n if (c.field === v.field) {\r\n c.clear();\r\n }\r\n })\r\n setTimeout(() => {\r\n this.filterChange.emit(this.value.filter(c => c.field !== v.field));\r\n this.updateMenu();\r\n }, 50);\r\n\r\n }\r\n }\r\n\r\n get value(): AXFilterCondition[] {\r\n const con: AXFilterCondition[] = [];\r\n if (this.filters) {\r\n this.filters.forEach(e => {\r\n\r\n if (e.active && e.condition && ((e.condition.value != null) || (e.condition.value == null && (e.condition.condition === 'is-empty' || e.condition.condition === 'is-not-empty')))) {\r\n con.push(e.condition);\r\n }\r\n });\r\n }\r\n return con;\r\n }\r\n\r\n\r\n\r\n public load(filters: AXFilterCondition[]): void {\r\n this.filters.forEach(e => {\r\n e.clear();\r\n });\r\n this.cancelSaveFilter();\r\n filters.forEach(f => {\r\n const col = this.filters.find(c => c.field === f.field);\r\n if (col) {\r\n col.setFilter(f.value, f.condition);\r\n }\r\n\r\n });\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const footer = this.panel.nativeElement.querySelector('.footer');\r\n if (!footer) {\r\n this.body.nativeElement.style.height = 'calc(100% - 110px)';\r\n }\r\n setTimeout(() => {\r\n if (this.predefinedFilters) {\r\n this.setFilterByIndex(0);\r\n }\r\n else {\r\n this.clear();\r\n }\r\n }, 100);\r\n this.applySize();\r\n }\r\n\r\n setFilterByIndex(index: number) {\r\n const f = this.predefinedFilters[index];\r\n if (f) {\r\n this.setFilterByName(f.name);\r\n }\r\n }\r\n\r\n setFilterByName(name: string) {\r\n const f = this.predefinedFilters.find(c => c.name === name);\r\n if (f) {\r\n this.load(f.value);\r\n this.predefinedFilters.forEach(c => {\r\n (c as any).selected = false;\r\n });\r\n (f as any).selected = true;\r\n }\r\n }\r\n\r\n\r\n\r\n removeFilter(f: AXFilterPredefined) {\r\n this.predefinedFilters = this.predefinedFilters.filter(c => c.name != f.name);\r\n this.updateMenu();\r\n }\r\n\r\n private get\r\n currentFilter(): AXFilterPredefined {\r\n return this.predefinedFilters.find(c => (c as any).selected);\r\n }\r\n\r\n\r\n private applySize() {\r\n let h = 0;\r\n h += this.footer.nativeElement.getBoundingClientRect().height;\r\n h += this.savedList.nativeElement.getBoundingClientRect().height;\r\n h += 10;\r\n this.body.nativeElement.style.height = `calc(100% - ${h}px)`;\r\n }\r\n\r\n // SAVE FILTERS\r\n\r\n private updateMenu(): void {\r\n setTimeout(() => {\r\n this.saveItems[0].items[0].visible = this.currentFilter != null;\r\n this.saveItems[0].items[1].visible = this.currentFilter != null;\r\n // this.menu.update();\r\n }, 100);\r\n }\r\n\r\n applySaveFilter() {\r\n const f = this.currentFilter;\r\n if (f) {\r\n // TODO\r\n // this.tbxName.validate().then(c => {\r\n // if (c.result) {\r\n // f.value = this.value;\r\n // (f as any).isInEdit = false;\r\n // (f as any).isNew = false;\r\n // f.title = this.tbxName.value;\r\n // this.toast.success('Filter saved successfully.');\r\n // this.updateMenu();\r\n // }\r\n // });\r\n }\r\n }\r\n\r\n cancelSaveFilter() {\r\n const f = this.currentFilter;\r\n if (f) {\r\n if ((f as any).isNew) {\r\n this.removeFilter(f);\r\n }\r\n else {\r\n (f as any).isInEdit = false;\r\n }\r\n }\r\n this.updateMenu();\r\n }\r\n\r\n onMenuItemClick(e: AXMenuItem) {\r\n if (e.name === 'save') {\r\n this.applySaveFilter();\r\n }\r\n if (e.name === 'saveAs') {\r\n const f = {\r\n name: AXHtmlUtil.getUID(),\r\n title: '',\r\n value: this.value\r\n };\r\n this.predefinedFilters.push(f);\r\n (f as any).isNew = true;\r\n this.setFilterByName(f.name);\r\n this.handleRenameClick(f)\r\n }\r\n }\r\n\r\n tbxNameOnKey(e: AXKeyboardEvent) {\r\n if (e.type === 'keyup' && e.key === 'Enter') {\r\n this.applySaveFilter();\r\n }\r\n if (e.type === 'keyup' && e.key === 'Escape') {\r\n this.cancelSaveFilter();\r\n }\r\n }\r\n\r\n handleRenameClick(f: AXFilterPredefined) {\r\n (f as any).isInEdit = true;\r\n this.cdr.detectChanges();\r\n setTimeout(() => {\r\n this.tbxName.value = f.title;\r\n this.tbxName.focus();\r\n }, 50);\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { AXHtmlUtil, AXMenuItem } from '@acorex/core';\r\nimport { AXFilterPanelComponent } from '../filter-panel/filter-panel.component';\r\nimport { AXToolbarItem } from '../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../toolbar/menu/toolbar-menu.component';\r\nimport { AXMenuComponent } from '../../menu/menu.component';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-filter-view',\r\n templateUrl: './filter-toolbar.component.html',\r\n styleUrls: ['./filter-toolbar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarFilterViewComponent }]\r\n})\r\nexport class AXToolbarFilterViewComponent {\r\n constructor() { }\r\n _uid: string = AXHtmlUtil.getUID();\r\n\r\n @ViewChild('menu', { static: true }) menu: AXToolbarMenuComponent;\r\n @ViewChild('contextMenu', { static: true }) contextMenu: AXMenuComponent;\r\n\r\n @Input()\r\n filterPanel: AXFilterPanelComponent;\r\n\r\n contextMenuItems: AXMenuItem[] = [\r\n // {\r\n // name: 'addFolder',\r\n // startIcon: 'fas fa-folder',\r\n // text: 'New Folder',\r\n // },\r\n {\r\n name: 'remove',\r\n startIcon: 'fas fa-trash',\r\n text: 'Delete',\r\n },\r\n ];\r\n\r\n\r\n\r\n menuItems: AXMenuItem[] = [\r\n {\r\n name: 'root',\r\n startIcon: 'fas fa-filter',\r\n text: 'Select All',\r\n items: [\r\n {\r\n name: 'selectAll',\r\n style: 'f',\r\n text: 'Select All',\r\n },\r\n // {\r\n // split: true,\r\n // name: 'addFolder',\r\n // startIcon: 'fas fa-folder',\r\n // text: 'New Folder',\r\n // },\r\n {\r\n divider: true,\r\n name: 'save',\r\n startIcon: 'fas fa-save',\r\n text: 'Save'\r\n },\r\n {\r\n divider: true,\r\n name: 'saveAs',\r\n startIcon: 'fas fa-save',\r\n text: 'Save As...'\r\n }\r\n ]\r\n }\r\n\r\n ];\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.selectAll();\r\n this.addPredefinedList();\r\n }, 100);\r\n }\r\n\r\n addPredefinedList() {\r\n this.filterPanel.predefinedFilters.forEach(c => {\r\n const item = {\r\n name: c.name,\r\n text: c.title,\r\n type: 'f',\r\n startIcon: 'fas',\r\n data: c.value,\r\n style: this._uid,\r\n uid: AXHtmlUtil.getUID()\r\n };\r\n this.root.items.splice(1, 0, item);\r\n });\r\n this.update();\r\n }\r\n\r\n public selectAll(): void {\r\n this.setCurrent(this.root.items[0]);\r\n this.filterPanel.clear();\r\n this.update();\r\n this.menu.close();\r\n // this.contextMenu.close();\r\n }\r\n\r\n itemClick(e: AXMenuItem) {\r\n\r\n if (e.style === 'f') {\r\n if (e.name === 'selectAll') {\r\n this.selectAll();\r\n }\r\n else {\r\n this.setCurrent(e);\r\n this.filterPanel.load(e.data);\r\n }\r\n }\r\n else {\r\n if (e.name === 'saveAs') {\r\n const name = prompt('Please enter the name;');\r\n if (name) {\r\n const item = {\r\n text: name,\r\n type: 'f',\r\n style: this._uid,\r\n startIcon: 'fas',\r\n data: this.filterPanel.value,\r\n uid: AXHtmlUtil.getUID()\r\n };\r\n this.root.items.splice(1, 0, item);\r\n this.setCurrent(item);\r\n }\r\n\r\n }\r\n if (e.name === 'save') {\r\n const selected = this.findSelected();\r\n if (selected) {\r\n selected.data = this.filterPanel.value;\r\n }\r\n }\r\n }\r\n this.update();\r\n }\r\n\r\n private findSelected(): AXMenuItem {\r\n return this.root.items.find(c => c.selected);\r\n }\r\n\r\n private get root(): AXMenuItem {\r\n return this.menuItems[0];\r\n }\r\n\r\n public update(): void {\r\n this.menu.update();\r\n setTimeout(() => {\r\n // this.contextMenu.update();\r\n }, 100);\r\n\r\n }\r\n\r\n private setCurrent(e: AXMenuItem) {\r\n this.root.text = e.text;\r\n this.root.items.filter(c => c.style === 'f').forEach(c => {\r\n c.selected = false;\r\n c.startIcon = 'fas';\r\n });\r\n e.selected = true;\r\n e.startIcon = 'fas fa-check';\r\n this.root.items.find(c => c.name === 'save').visible = e.name !== 'selectAll';\r\n }\r\n\r\n onCtxClick(e: AXMenuItem) {\r\n const target = this.contextMenu.currentTarget as HTMLElement;\r\n const menuId = target.getAttribute('data-uid');\r\n if (e.name === 'remove' && menuId) {\r\n this.root.items = this.root.items.filter(c => c.uid !== menuId);\r\n this.selectAll();\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ContentChild,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n animate,\r\n transition,\r\n} from \"@angular/animations\";\r\nimport { AXBaseSizableComponent, AXElementSize } from \"../base/element.class\";\r\n\r\n@Component({\r\n selector: \"ax-panel-box\",\r\n templateUrl: \"./panel-box.component.html\",\r\n styleUrls: [\"./panel-box.component.scss\"],\r\n animations: [\r\n trigger(\"visibilityChanged\", [\r\n state(\r\n \"shown\",\r\n style({\r\n height: \"*\",\r\n opacity: 1,\r\n })\r\n ),\r\n state(\r\n \"hidden\",\r\n style({\r\n height: \"0px\",\r\n opacity: 0,\r\n padding: 0,\r\n })\r\n ),\r\n transition(\"Void => *\", animate(\"0ms\")),\r\n transition(\"shown => hidden\", animate(\"200ms\")),\r\n transition(\"hidden => shown\", animate(\"200ms\")),\r\n ]),\r\n ],\r\n})\r\nexport class AXPanelBoxComponent implements AXBaseSizableComponent {\r\n @ContentChild(\"header\", { static: true })\r\n headerTemplate: TemplateRef<any>;\r\n\r\n @Input() size: AXElementSize = \"md\";\r\n\r\n @Input() type: string = \"\";\r\n\r\n // @Input()\r\n // caption: string = 'Caption';\r\n\r\n private _caption: string = \"caption\";\r\n @Input()\r\n get caption(): string {\r\n return this._caption;\r\n }\r\n set caption(val: string) {\r\n this._caption = val === \"\" ? \"caption\" : val;\r\n }\r\n\r\n @Output()\r\n collapsedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n private _collapsed: boolean = false;\r\n\r\n @Input()\r\n get collapsed(): boolean {\r\n return this._collapsed;\r\n }\r\n set collapsed(val: boolean) {\r\n if (val !== this._collapsed) {\r\n this._collapsed = val;\r\n this.collapsedChange.emit(this._collapsed);\r\n }\r\n }\r\n\r\n @Input() allowCollapse: boolean = true;\r\n\r\n toggle() {\r\n if (this.allowCollapse) {\r\n this.collapsed = !this.collapsed;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPanelBoxComponent } from './panel-box.component';\r\n@NgModule({\r\n declarations: [AXPanelBoxComponent],\r\n imports: [CommonModule],\r\n exports: [AXPanelBoxComponent],\r\n providers: []\r\n})\r\nexport class AXPanelBoxModule {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n AfterViewInit,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n ViewContainerRef,\r\n TemplateRef,\r\n OnDestroy,\r\n DebugElement\r\n} from '@angular/core';\r\nimport { AXBaseDropdownComponent } from '../base/element.class';\r\nimport { AXHtmlEvent } from '../base/events.class';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { AXConfig } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-drop-down',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display:contents;' }\r\n})\r\nexport class AXDropdownComponent extends AXBaseDropdownComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild('baseTemplate') baseTemplate: TemplateRef<any>;\r\n @ViewChild('content', { static: false }) content: ElementRef<HTMLDivElement>;\r\n @ViewChild('endButtons', { static: false }) endButtons: ElementRef<HTMLDivElement>;\r\n @ViewChild('el', { static: true }) dropdownEL: ElementRef<HTMLDivElement>;\r\n\r\n @Input()\r\n rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n loading: boolean = false;\r\n\r\n @Output()\r\n dropdownToggle: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onButtonClick: EventEmitter<AXHtmlEvent<MouseEvent>> = new EventEmitter<AXHtmlEvent<MouseEvent>>();\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydownHandler(e: KeyboardEvent) {\r\n if (!this.disabled && e.key === 'Enter' && e.type === 'keydown') {\r\n if (!this.readonly) {\r\n this.toggle();\r\n // this.dropdownToggle.emit({ mode: 'enter' });\r\n }\r\n }\r\n if (e.key === 'Escape') {\r\n if (this.isOpen) {\r\n this.close();\r\n e.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n dropdownWidth: number;\r\n\r\n private overlayRef: OverlayRef;\r\n private templatePortal: TemplatePortal;\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private overlay: Overlay,\r\n private viewContainerRef: ViewContainerRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n setTimeout(() => {\r\n this.ref.nativeElement.classList.add(this.rtl ? 'rtl' : 'ltr');\r\n this.dropdownEL.nativeElement.classList.add(this.rtl ? 'rtl' : 'ltr');\r\n }, 5);\r\n }\r\n ngAfterViewInit(): void {\r\n // Todo: chech fitparent\r\n if (this.fitParent === true) {\r\n this.dropdownWidth = this.dropdownEL.nativeElement.offsetWidth;\r\n } else {\r\n this.dropdownWidth = 260;\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.endButtons && this.endButtons.nativeElement.childNodes.length !== 0) {\r\n this.content.nativeElement.style.paddingInlineEnd = this.endButtons.nativeElement.clientWidth + 'px';\r\n }\r\n }, 5);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n }\r\n\r\n handleArrowClick(e: AXHtmlEvent<MouseEvent>) {\r\n setTimeout(() => {\r\n this.toggle();\r\n }, 0);\r\n }\r\n\r\n toggle() {\r\n if (this.disabled !== true) {\r\n this.isOpen ? this.close() : this.open();\r\n }\r\n }\r\n\r\n close() {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n this.overlayRef?.detach();\r\n this.dropdownToggle.emit({ mode: 'close' });\r\n }\r\n\r\n open() {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.ensureOverlayCreated();\r\n this.overlayRef.attach(this.templatePortal);\r\n this.dropdownToggle.emit({ mode: 'open' });\r\n }\r\n\r\n private ensureOverlayCreated() {\r\n if (!this.overlayRef) {\r\n const targetEl = document.querySelector<HTMLElement>('#' + this.uid);\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(targetEl)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ])\r\n .withPush(false);\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n\r\n //width: this.dropdownEL.nativeElement.clientWidth,\r\n scrollStrategy: this.overlay.scrollStrategies.reposition({\r\n autoClose: true\r\n }),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n this.overlayRef.setDirection(this.rtl ? 'rtl' : 'ltr');\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n if (!this.templatePortal) {\r\n this.templatePortal = new TemplatePortal(this.baseTemplate, this.viewContainerRef);\r\n }\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.overlayRef ? this.overlayRef.hasAttached() : false;\r\n }\r\n\r\n updatePosition(): void {\r\n this.overlayRef?.updatePosition();\r\n }\r\n focus() {}\r\n}\r\n","import {\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n Component,\r\n ElementRef,\r\n ContentChild,\r\n AfterViewInit,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXValidatableComponent, AXBaseSizableComponent, AXElementSize, AXBaseValueComponent } from '../base/element.class';\r\nimport { AXCalendarType, AXDateTime, AXConfig } from '@acorex/core';\r\nimport { AXValueEvent } from '../base/events.class';\r\nimport { AXValidation } from '../validation/validation.component';\r\n\r\nexport class AXDataPickerChangeEvent extends AXValueEvent<Date> {\r\n isUserChange: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }],\r\n host: { style: 'width: 100%' }\r\n})\r\nexport class AXDatePickerComponent extends AXValidatableComponent implements AXBaseSizableComponent {\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n @ViewChild('input', { static: true })\r\n input: AXTextBoxComponent;\r\n\r\n @Input()\r\n dayStyle = [];\r\n\r\n @Input()\r\n dayMinMaxResoan = '';\r\n\r\n // mmddyyyy: any = [/[0-1]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n yyyyMMdd: any = [/[1-2]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-3]/, /[0-9]/];\r\n ddMMyyyy: any = [/[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n yyyyddMM: any = [/[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/];\r\n // yyyyMMdd1: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/];\r\n // ddMMyyyy2: any = [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n // yyyyddMM3: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/];\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input()\r\n min: Date;\r\n\r\n @Input()\r\n max: Date;\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n allowClear: boolean = false;\r\n\r\n @Input()\r\n textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input()\r\n showToday: boolean = false;\r\n\r\n @Input()\r\n selectableHoliday: boolean = true;\r\n\r\n @Input()\r\n dateType: any;\r\n\r\n @Input()\r\n showTodayButton: boolean = true;\r\n\r\n @Input()\r\n openByClick: boolean = false;\r\n\r\n cursorPosition: number = 0;\r\n\r\n model: any = null;\r\n text: string;\r\n\r\n _renderPicker: boolean = false;\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {\r\n super();\r\n // set defaults\r\n if (AXConfig.get('dateTime.type')) {\r\n this.type = AXConfig.get('dateTime.type');\r\n }\r\n }\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Output()\r\n typeChange: EventEmitter<AXCalendarType> = new EventEmitter<AXCalendarType>();\r\n\r\n private _type: AXCalendarType = 'gregorian';\r\n\r\n @Input()\r\n public get type(): AXCalendarType {\r\n return this._type;\r\n }\r\n\r\n public set type(v: AXCalendarType) {\r\n if (v != this._type) {\r\n this._type = v;\r\n if (this._value) {\r\n this.value = this._value.date;\r\n }\r\n this._setDateType();\r\n this.typeChange.emit(v);\r\n }\r\n }\r\n\r\n selectToday() {\r\n this.value = new Date();\r\n }\r\n\r\n focus(): void {\r\n // this.dropdown.focus();\r\n this.input.focus();\r\n }\r\n\r\n convertMaskToDate(text: string) {\r\n if (this.type == 'jalali') {\r\n var d = new AXDateTime().convertStringToGregorian(text, 'YYYY/M/D');\r\n } else {\r\n }\r\n\r\n return d;\r\n }\r\n\r\n convertMask(date: string) {\r\n let y;\r\n let m;\r\n let d;\r\n switch (this.dateType.mask) {\r\n case this.yyyyMMdd:\r\n y = date.slice(0, 4);\r\n m = date.slice(5, 7);\r\n d = date.slice(8, 10);\r\n break;\r\n case this.ddMMyyyy:\r\n y = date.slice(6, 10);\r\n m = date.slice(3, 5);\r\n d = date.slice(0, 2);\r\n break;\r\n case this.yyyyddMM:\r\n y = date.slice(0, 4);\r\n m = date.slice(8, 10);\r\n d = date.slice(5, 7);\r\n break;\r\n }\r\n\r\n return { year: y, monnth: m, day: d };\r\n }\r\n\r\n textChange(e) {\r\n debugger;\r\n this.text = e.value;\r\n if (this.text && this.text.indexOf('_') === -1 && this.text.length == 10) {\r\n this.userChange = e.isUserChange;\r\n const date = this.convertMask(this.text);\r\n this.value = this.convertMaskToDate(date.year + '-' + date.monnth + '-' + date.day);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this._setDateType();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.text = this._value?.toString();\r\n if (this.showToday && !this.value) {\r\n this.selectToday();\r\n }\r\n debugger\r\n if (this.dropdown.dropdownWidth > 200 || this.dropdown.dropdownWidth < 200) {\r\n this.dropdown.dropdownWidth = 250;\r\n }\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n clear() {\r\n this.userChange = true;\r\n this.value = null;\r\n }\r\n\r\n userChange: boolean = false;\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXDataPickerChangeEvent> = new EventEmitter<AXDataPickerChangeEvent>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n private _value: AXDateTime;\r\n @Input()\r\n public get value(): Date {\r\n return this._value?.date;\r\n }\r\n public set value(v: Date) {\r\n this.validate();\r\n const oldValue = this._value;\r\n const old = this.value;\r\n\r\n if (v) {\r\n this._value = new AXDateTime(v, this.type);\r\n } else {\r\n this._value = null;\r\n }\r\n let unValidDate = false;\r\n if (this.max || this.min) {\r\n unValidDate = this.isInMInMaxRange(AXDateTime.convert(v));\r\n }\r\n\r\n if (!unValidDate) {\r\n if ((!v && oldValue) || (this._value && !this._value.equal(oldValue, 'day'))) {\r\n this.text = this._value?.toString();\r\n setTimeout(() => {\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n oldValue: old,\r\n value: v,\r\n isUserChange: this.userChange\r\n });\r\n }, 100);\r\n }\r\n } else {\r\n this.text = '';\r\n }\r\n this.userChange = false;\r\n }\r\n\r\n private _setDateType() {\r\n switch (this.dateType) {\r\n case 'yyyyMMdd':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyMMdd,\r\n keepCharPositions: true\r\n };\r\n break;\r\n case 'ddMMyyyy':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.ddMMyyyy,\r\n keepCharPositions: true\r\n };\r\n break;\r\n case 'yyyyddMM':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyddMM,\r\n keepCharPositions: true\r\n };\r\n break;\r\n\r\n default:\r\n if (this.type == 'gregorian') {\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.ddMMyyyy,\r\n keepCharPositions: true\r\n };\r\n } else if (this.type == 'jalali') {\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyMMdd,\r\n keepCharPositions: true\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n\r\n isInMInMaxRange(d) {\r\n let r = false;\r\n if (d !== undefined) {\r\n if (this.min && !this.max) {\r\n r = d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1;\r\n }\r\n if (this.max && !this.min) {\r\n r = d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;\r\n }\r\n if (this.min && this.max) {\r\n r =\r\n d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1 ||\r\n d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n onDateChange(e) {\r\n this.userChange = true;\r\n this.dropdown.close();\r\n\r\n //this.clearValidationStyle(this.ref.nativeElement);\r\n }\r\n\r\n onClick(e) {\r\n this.userChange = true;\r\n this.dropdown.close();\r\n }\r\n\r\n onStartfocus() {\r\n if (this.text == undefined || this.text == null || this.text == '') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n }\r\n\r\n handleInputFocus() {\r\n if (this.openByClick) {\r\n this._renderPicker = true;\r\n this.dropdown.open();\r\n } else {\r\n this.onStartfocus();\r\n }\r\n\r\n // this.input.input.nativeElement.focus();\r\n }\r\n handleInputBlur() {\r\n if (this.text && this.text.indexOf('_') != -1) {\r\n this.text = '';\r\n this.value = null;\r\n }\r\n }\r\n\r\n handleButtonClick() {\r\n this._renderPicker = true;\r\n setTimeout(() => {\r\n this.dropdown.toggle();\r\n });\r\n }\r\n\r\n handleKeyPress(e: KeyboardEvent) {\r\n if (e.type == 'keydown' || e.type == 'keypress' || e.type == 'keyup') {\r\n if (e.key === 'Delete') {\r\n e.preventDefault();\r\n }\r\n if (e.key === 'Backspace') {\r\n }\r\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\r\n if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.input.nativeElement.selectionStart;\r\n }\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n const inputChar = String.fromCharCode(e.charCode);\r\n if (this.text != undefined) {\r\n const ind1 = this.text.charAt(0);\r\n const ind2 = this.text.charAt(1);\r\n const ind3 = this.text.charAt(2);\r\n const ind4 = this.text.charAt(3);\r\n const ind5 = this.text.charAt(4);\r\n const ind6 = this.text.charAt(5);\r\n const ind7 = this.text.charAt(6);\r\n const ind8 = this.text.charAt(7);\r\n const ind9 = this.text.charAt(8);\r\n const ind10 = this.text.charAt(9);\r\n switch (this.dateType.mask) {\r\n case this.yyyyMMdd:\r\n if (e.type == 'keypress') {\r\n this.handleClick();\r\n if (\r\n (ind6 == '1' && ind7 == '_' && inputChar >= '3') ||\r\n (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10 == '_')) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else if (ind9 == '3' && ind10 == '_') {\r\n if (ind6 + ind7 <= '06' && inputChar >= '2') {\r\n e.preventDefault();\r\n } else if (ind6 + ind7 > '06' && inputChar >= '1') {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n if (this.cursorPosition >= 5 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) < 12) {\r\n if (Number(ind6 + ind7) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) < 31) {\r\n if (Number(ind9 + ind10) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // e.preventDefault();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n // e.preventDefault();\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) > 1) {\r\n if (Number(ind6 + ind7) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '12' + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) > 1) {\r\n if (Number(ind9 + ind10) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '31';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n case this.ddMMyyyy:\r\n if (e.type === 'keypress') {\r\n this.handleClick();\r\n if (\r\n (ind4 == '1' && ind5 == '_' && inputChar >= '3') ||\r\n (((ind1 == '0' && ind2 == '_') || (ind4 == '0' && ind5 == '_')) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else {\r\n if (ind1 == '3' && ind2 == '_' && inputChar >= '2') {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition >= 6) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) + 1);\r\n }\r\n if (this.cursorPosition > 2 && this.cursorPosition <= 5) {\r\n if (Number(ind4 + ind5) < 12) {\r\n if (Number(ind4 + ind5) < 9) {\r\n this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + '01' + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition <= 2) {\r\n if (Number(ind1 + ind2) < 31) {\r\n if (Number(ind1 + ind2) < 9) {\r\n this.text = '0' + String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = '01' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition >= 6) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) - 1);\r\n } else if (this.cursorPosition > 2 && this.cursorPosition <= 5) {\r\n if (Number(ind4 + ind5) > 1) {\r\n if (Number(ind4 + ind5) < 11) {\r\n this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + '12' + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition <= 2) {\r\n if (Number(ind1 + ind2) > 1) {\r\n if (Number(ind1 + ind2) < 11) {\r\n this.text = '0' + String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = '31' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n\r\n case this.yyyyddMM:\r\n if (e.type === 'keypress') {\r\n if (\r\n (ind9 === '1' && ind10 == '_' && inputChar >= '3') ||\r\n (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10)) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else if (ind6 == '3' && ind7 == '_' && inputChar >= '2') {\r\n e.preventDefault();\r\n }\r\n setTimeout(() => {\r\n this.handleClick();\r\n }, 0);\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) < 31) {\r\n if (Number(ind6 + ind7) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) < 12) {\r\n if (Number(ind9 + ind10) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) > 1) {\r\n if (Number(ind6 + ind7) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '31' + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) > 1) {\r\n if (Number(ind9 + ind10) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '12';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n handleClick() {\r\n if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.input.nativeElement, this.cursorPosition);\r\n }\r\n}\r\n","import {\r\n Component, Input, ChangeDetectorRef, ChangeDetectionStrategy,\r\n ViewEncapsulation, ContentChild, ViewChild, ElementRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-form-group',\r\n templateUrl: './form-group.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%; display:contents;' }\r\n})\r\nexport class AXFormGroupComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @ViewChild('div')\r\n div: ElementRef\r\n\r\n @ContentChild(AXValidatableComponent)\r\n private component: AXValidatableComponent;\r\n\r\n required: boolean = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.required = this.component?.validation?.rules?.some(c => c.type === 'required');\r\n if (this.required) {\r\n this.div.nativeElement.classList.add('required-state')\r\n\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFormGroupComponent } from './form-group.component';\r\n\r\nconst COMPONENT = [AXFormGroupComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXFormGroupModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextBoxComponent } from './textbox.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { FormsModule } from '@angular/forms';\r\nconst COMPONENT = [AXTextBoxComponent];\r\nconst MODULES = [CommonModule, AXButtonModule, TextMaskModule, FormsModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXTextBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDropdownComponent } from './dropdown.component';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXPopoverModule } from '../popover/popover.module';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nconst COMPONENT = [AXDropdownComponent];\r\nconst MODULES = [CommonModule, AXFormGroupModule, AXTextBoxModule, AXButtonModule, AXPopoverModule, OverlayModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXDropdownModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXDatePickerComponent } from './date-picker.component';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXCalendarBoxModule } from '../calendar/calendar-box/calendar-box.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n@NgModule({\r\n declarations: [AXDatePickerComponent],\r\n imports: [CommonModule, FormsModule, AXDropdownModule, AXCalendarBoxModule, AXButtonModule, AXTextBoxModule, TextMaskModule, FormsModule],\r\n exports: [AXDatePickerComponent],\r\n providers: []\r\n})\r\nexport class AXDatePickerModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToastService } from './toast.service';\r\nimport { AXToastWrapperComponent } from './toast-wrapper/toast-wrapper.component';\r\nimport { AXToastMessageComponent } from './toast-message/toast-message.component';\r\n@NgModule({\r\n declarations: [AXToastWrapperComponent, AXToastMessageComponent],\r\n imports: [CommonModule],\r\n exports: [AXToastWrapperComponent],\r\n entryComponents: [AXToastWrapperComponent, AXToastMessageComponent],\r\n providers: [AXToastService]\r\n})\r\nexport class AXToastModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSelectionListComponent } from './selection-list.component';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXSelectionListComponent],\r\n imports: [CommonModule, FormsModule, AXCheckBoxModule],\r\n exports: [AXSelectionListComponent],\r\n providers: []\r\n})\r\nexport class AXSelectionListModule { }\r\n","import {\r\n Component,\r\n OnInit,\r\n QueryList,\r\n ContentChildren,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ElementRef,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXValidationResult } from './validation.class';\r\nimport { AXValidatableComponent } from '../base/element.class';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n@Component({\r\n selector: 'ax-validation-form',\r\n template: '<ng-content></ng-content>'\r\n})\r\nexport class AXValidationFormComponent {\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) { }\r\n\r\n\r\n private widgets: AXValidatableComponent[] = [];\r\n\r\n\r\n @ContentChildren(AXValidatableComponent, { descendants: true })\r\n private widgetsQuery: QueryList<AXValidatableComponent>;\r\n\r\n @Input()\r\n validateOn: 'blur' | 'change' | 'submit' = 'submit';\r\n\r\n @Output()\r\n onInit: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n\r\n ngAfterViewInit() {\r\n\r\n this.onInit.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n\r\n validate(): Promise<AXValidationResult> {\r\n this.widgets.push(...this.widgetsQuery.toArray().filter(c => !this.widgets.includes(c)));\r\n //\r\n this.widgets.forEach(w => {\r\n if (w.validation && w.validation.validateOn == null) {\r\n w.validation.validateOn = this.validateOn;\r\n }\r\n });\r\n\r\n return new Promise<AXValidationResult>(resolve => {\r\n if (!this.widgets || this.widgets.length === 0) {\r\n return Promise.resolve({ result: true });\r\n }\r\n Promise.all(this.widgets.map((c) => c.validate())).then((rules: any) => {\r\n const failed = rules.filter((c: any) => !c.result);\r\n if (failed.length) {\r\n resolve({\r\n result: false,\r\n items: failed\r\n });\r\n }\r\n else {\r\n resolve({ result: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n addWidget(widget: AXValidatableComponent) {\r\n this.widgets.push(widget);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXValidationFormComponent } from './validation-form.component';\r\nimport { AXValidationComponent } from './validation.component';\r\nimport { AXValidationRuleComponent, AXValidationRules } from './validation-rule.widget';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXValidationFormComponent, AXValidationComponent, AXValidationRuleComponent],\r\n imports: [CommonModule],\r\n exports: [AXValidationFormComponent, AXValidationComponent, AXValidationRuleComponent],\r\n providers: []\r\n})\r\nexport class AXValidationModule {\r\n constructor() {\r\n AXValidationRules.addRule('email', {\r\n message: AXTranslator.get('validation.messages.email'),\r\n type: 'regex',\r\n value: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\r\n })\r\n AXValidationRules.addRule('phone', {\r\n message: AXTranslator.get('validation.messages.phone'),\r\n type: 'regex',\r\n value: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFilterPanelComponent } from './filter-panel/filter-panel.component';\r\nimport { AXFilterColumnStringComponent } from './columns/filter-column-string.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXFilterColumnSelectionComponent } from './columns/filter-column-selection.component';\r\nimport { AXFilterColumnDateComponent } from './columns/filter-column-date.component';\r\nimport { AXFilterColumnNumberComponent } from './columns/filter-column-number.component';\r\nimport { AXToolbarFilterViewComponent } from './toolbar/filter-toolbar.component';\r\nimport { AXPanelBoxModule } from '../panel-box/panel-box.module';\r\nimport { AXDatePickerModule } from '../date-picker/date-picker.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXToastModule } from '../toast/toast.module';\r\nimport { AXToolbarModule } from '../toolbar/toolbar.module';\r\nimport { AXMenuModule } from '../menu/menu.module';\r\nimport { AXSelectionListModule } from '../selection-list/selection-list.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\n\r\n\r\n\r\n\r\nconst COMPONENTS = [\r\n AXFilterPanelComponent,\r\n AXFilterColumnStringComponent,\r\n AXFilterColumnSelectionComponent,\r\n AXFilterColumnDateComponent,\r\n AXFilterColumnNumberComponent,\r\n AXToolbarFilterViewComponent,\r\n]\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXPanelBoxModule,\r\n AXDatePickerModule,\r\n AXCheckBoxModule,\r\n AXTextBoxModule,\r\n AXValidationModule,\r\n AXToastModule,\r\n AXToolbarModule,\r\n AXMenuModule,\r\n AXSelectionListModule,\r\n AXButtonModule\r\n ],\r\n exports: [COMPONENTS],\r\n providers: [],\r\n})\r\nexport class AXFilterModule { }","import { ContentChild, Input, Directive } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\nimport { AXDataSourceReadParams } from '../../data-source/read-param';\r\nimport { AXBaseComponent } from '../../base/element.class';\r\n\r\n\r\nexport abstract class AXDataListComponent extends AXBaseComponent {\r\n\r\n\r\n\r\n @Input()\r\n items: any[] = [];\r\n\r\n // @ContentChild(AXDataSourceComponent, { static: true })\r\n // private _contentDataSource: AXDataSourceComponent;\r\n\r\n // private _dataSource: AXDataSourceComponent;\r\n\r\n // @Input()\r\n // public get dataSource(): AXDataSourceComponent {\r\n // return this._dataSource ? this._dataSource : this._contentDataSource;\r\n // }\r\n\r\n // public set dataSource(v: AXDataSourceComponent) {\r\n // this._dataSource = v;\r\n // }\r\n\r\n\r\n abstract dataSource: AXDataSourceComponent;\r\n\r\n\r\n // ngAfterContentInit(): void {\r\n // this.configDataList();\r\n // }\r\n\r\n\r\n protected configDataList() {\r\n if (this.dataSource) {\r\n this.dataSource.onDataReceived.subscribe(c => {\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n }\r\n\r\n private dataReceived(data: any) {\r\n this.items = data;\r\n }\r\n\r\n private params: AXDataSourceReadParams = {};\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n this.params = params;\r\n if (this.dataSource) {\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n this.fetch(this.params);\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXToolbarItem } from '../../toolbar/toolbar-item';\r\nimport { AXValueEvent } from '../../base/events.class';\r\n\r\nexport type AXListViewDirection = \"vertical\" | \"vertical-wrap\" | \"horizontal-wrap\" | \"horizontal\";\r\n\r\n@Component({\r\n selector: 'ax-toolbar-list-view',\r\n template: `\r\n <div class=\"btn-group\" role=\"group\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"vertical\" [class.active]=\"direction=='vertical'\" (click)=\"direction='vertical'\" title=\"vertical\">\r\n <i class=\"far fa-bars\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"verticalWrap\" [class.active]=\"direction=='vertical-wrap'\" (click)=\"direction='vertical-wrap'\" title=\"vertical-wrap\">\r\n <i class=\"far fa-grip-horizontal\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"horizontalWrap\" [class.active]=\"direction=='horizontal-wrap'\" title=\"horizontal-wrap'\" (click)=\"direction='horizontal-wrap'\" title=\"horizontal-wrap\">\r\n <i class=\"far fa-bars fa-rotate-90\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"horizontal\" [class.active]=\"direction=='horizontal'\" (click)=\"direction='horizontal'\" title=\"horizontal\">\r\n <i class=\"far fa-grip-horizontal fa-rotate-90\"></i>\r\n </button>\r\n </div>\r\n `,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarListViewComponent }]\r\n})\r\nexport class AXToolbarListViewComponent {\r\n constructor() { }\r\n\r\n @Input('vertical')\r\n vertical: boolean = true;\r\n\r\n @Input('vertical-wrap')\r\n verticalWrap: boolean = true;\r\n\r\n @Input('horizontal-wrap')\r\n horizontalWrap: boolean = true;\r\n\r\n @Input('horizontal')\r\n horizontal: boolean = true;\r\n\r\n\r\n @Output()\r\n onDirectionChanged: EventEmitter<AXValueEvent<AXListViewDirection>> = new EventEmitter<AXValueEvent<AXListViewDirection>>();\r\n\r\n private _direction: AXListViewDirection = \"vertical\";\r\n @Input()\r\n public get direction(): AXListViewDirection {\r\n return this._direction;\r\n }\r\n public set direction(v: AXListViewDirection) {\r\n if (v != this._direction) {\r\n const old = this._direction;\r\n this._direction = v;\r\n this.onDirectionChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n Input,\r\n Output,\r\n EventEmitter\r\n} from \"@angular/core\";\r\nimport { AXDataListComponent } from \"../core/data-list.component\";\r\nimport {\r\n AXToolbarListViewComponent,\r\n AXListViewDirection\r\n} from \"./toolbar-list-view.component\";\r\nimport { ViewEncapsulation } from \"@angular/core\";\r\nimport { AXToolbarSearchComponent } from '../../toolbar/search/toolbar-search.component';\r\nimport { AXToolbarComponent } from '../../toolbar/toolbar.component';\r\nimport { AXEvent, AXValueEvent } from '../../base/events.class';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\n\r\n\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: \"ax-list\",\r\n templateUrl: \"./list.component.html\",\r\n styleUrls: [\"./list.component.scss\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXListComponent extends AXDataListComponent {\r\n constructor() {\r\n super();\r\n }\r\n @Input() width: string = \"\";\r\n @Input() height: string = \"auto\";\r\n\r\n @Input(\"dropId\") public dropId: string;\r\n @Input(\"connectedList\") public connectedList: string[] = [];\r\n\r\n @Input() public allowMoveItem: boolean = false;\r\n\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n\r\n @ContentChild('itemTemplate', { static: true })\r\n _contentItemTemplate: TemplateRef<any>;\r\n\r\n\r\n private _itemTemplate: TemplateRef<any>;\r\n @Input()\r\n public get itemTemplate(): TemplateRef<any> {\r\n return this._itemTemplate ? this._itemTemplate : this._contentItemTemplate;\r\n }\r\n public set itemTemplate(v: TemplateRef<any>) {\r\n this._itemTemplate = v;\r\n }\r\n\r\n\r\n\r\n\r\n @ContentChild('emptyTemplate', { static: true })\r\n _contentEmptyTemplate: TemplateRef<any>;\r\n\r\n private _emptyTemplate: TemplateRef<any>;\r\n @Input()\r\n public get emptyTemplate(): TemplateRef<any> {\r\n return this._emptyTemplate ? this._emptyTemplate : this._contentEmptyTemplate;\r\n }\r\n public set emptyTemplate(v: TemplateRef<any>) {\r\n this._emptyTemplate = v;\r\n }\r\n\r\n\r\n @ContentChild(AXToolbarSearchComponent, { static: true })\r\n searchToolbar: AXToolbarSearchComponent;\r\n\r\n @ContentChild(AXToolbarListViewComponent, { static: true })\r\n viewToolbar: AXToolbarListViewComponent;\r\n\r\n @ContentChild(AXToolbarComponent, { static: true })\r\n toolbar: AXToolbarComponent;\r\n\r\n\r\n\r\n @Output()\r\n onDirectionChanged: EventEmitter<AXValueEvent<AXListViewDirection>> = new EventEmitter<AXValueEvent<AXListViewDirection>>();\r\n\r\n private _direction: AXListViewDirection = \"vertical\";\r\n @Input()\r\n public get direction(): AXListViewDirection {\r\n return this._direction;\r\n }\r\n public set direction(v: AXListViewDirection) {\r\n if (this._direction != v) {\r\n const old = this._direction;\r\n this._direction = v;\r\n this.setDirection(v);\r\n this.onDirectionChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.fetch();\r\n if (this.viewToolbar) {\r\n this.viewToolbar.onDirectionChanged.subscribe(c => {\r\n this.direction = c.value;\r\n });\r\n }\r\n }\r\n\r\n private setDirection(e: AXListViewDirection) {\r\n this.direction = e;\r\n }\r\n\r\n\r\n\r\n // dragDrop(event: CdkDragDrop<any[]>) {\r\n // if (event.previousContainer === event.container) {\r\n // moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n // } else {\r\n // transferArrayItem(event.previousContainer.data,\r\n // event.container.data,\r\n // event.previousIndex,\r\n // event.currentIndex);\r\n // }\r\n // }\r\n dragDrop(event: any) {\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXDataSourceComponent } from './datasource.component';\r\nimport { AXHttpModule } from '@acorex/core';\r\n\r\n@NgModule({\r\n declarations: [AXDataSourceComponent],\r\n imports: [],\r\n exports: [AXDataSourceComponent],\r\n providers: [],\r\n})\r\nexport class AXDataSourceModule { }","import { NgModule } from '@angular/core';\r\nimport { AXListComponent } from './list.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarListViewComponent } from './toolbar-list-view.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AXDataSourceModule } from '../../data-source/datasource.module';\r\n\r\n@NgModule({\r\n declarations: [AXListComponent, AXToolbarListViewComponent],\r\n imports: [CommonModule, AXDataSourceModule, DragDropModule],\r\n exports: [AXListComponent, AXToolbarListViewComponent],\r\n providers: [],\r\n})\r\nexport class AXListModule { }","import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { AXMenuItemClickEvent } from '../menu/menu.component';\r\nimport { AXBasePopupPageComponent } from '../base/base-page.class';\r\n\r\n@Component({\r\n selector: 'ax-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXDialogComponent extends AXBasePopupPageComponent {\r\n message: any;\r\n\r\n buttons: AXButtonItem[] = [];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n onClick: Function;\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n if (this.onClick) {\r\n this.onClick(e.data);\r\n }\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return this.buttons;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDialogComponent } from './dialog.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\n\r\n@NgModule({\r\n declarations: [AXDialogComponent],\r\n imports: [CommonModule, AXButtonModule,AXTranslatorModule],\r\n exports: [AXDialogComponent],\r\n providers: [],\r\n})\r\nexport class AXDialogModule { }","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n ViewChild,\r\n ViewContainerRef,\r\n OnInit,\r\n ComponentFactoryResolver,\r\n ViewEncapsulation,\r\n HostListener,\r\n ElementRef,\r\n ComponentRef,\r\n OnDestroy,\r\n Output,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXPageCloseEvent, TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXButtonItem, AXRenderService } from '@acorex/core';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n templateUrl: './popup.component.html',\r\n styleUrls: ['./popup.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXPopupComponent extends AXBaseComponent implements OnDestroy {\r\n\r\n isLoading: boolean = true;\r\n _loadingId: number;\r\n private onFooterButtonsSubscription: Subscription;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private rendererService: AXRenderService,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit() {\r\n console.log('popup');\r\n this._loadingId = this.loadingService.show(this.ref.nativeElement.querySelector('.ax-popup-body-container'));\r\n if (typeof this.content === 'string') {\r\n this.rendererService.findLoadedComponentByRoute(this.content, 20).then(route => {\r\n setTimeout(() => {\r\n this.loadComponent(route?.component);\r\n }, 300);\r\n });\r\n }\r\n else if (this.content instanceof TemplateRef) {\r\n const view = this.content.createEmbeddedView({ $implicit: this.data });\r\n this.popupBody.insert(view);\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n else if (typeof this.content === 'function') {\r\n setTimeout(() => {\r\n this.loadComponent(this.content);\r\n });\r\n }\r\n }\r\n\r\n\r\n private loadComponent(component: any) {\r\n\r\n if (component == null) {\r\n //TODO: 404 page component\r\n console.error(`Invalid page Component! ${this.content}`);\r\n return;\r\n }\r\n ///\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n this.comRef = this.popupBody.createComponent(factory);\r\n const com = this.comRef.instance as any;\r\n if (com.onClosed) {\r\n com.onClosed.subscribe((e: AXPageCloseEvent) => {\r\n this.onClosed.emit(e);\r\n });\r\n }\r\n this[TAB_META_KEY].component = com;\r\n Object.assign(this[TAB_META_KEY].component, this.data);\r\n //\r\n if (com.getFooterButtons) {\r\n this.footerButtons = com.getFooterButtons();\r\n }\r\n if (com.onFooterButtonsChanged) {\r\n this.onFooterButtonsSubscription = (com.onFooterButtonsChanged as EventEmitter<AXButtonItem[]>).subscribe(c => {\r\n this.footerButtons = c;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n //\r\n this.focus();\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n setTimeout(() => {\r\n this.comRef.changeDetectorRef.detectChanges();\r\n }, 100);\r\n this.cdr.detectChanges();\r\n } catch (error) {\r\n //TODO: 404 page component\r\n console.error(error);\r\n }\r\n }\r\n\r\n @ViewChild('popupBody', { read: ViewContainerRef, static: true })\r\n private popupBody: ViewContainerRef;\r\n\r\n @HostListener('keydown.escape', ['$event'])\r\n onKeydownHandler(event: KeyboardEvent) {\r\n if (this.closable) {\r\n this.onCloseClick();\r\n }\r\n }\r\n\r\n private comRef: ComponentRef<any>;\r\n\r\n title: string;\r\n\r\n onClosed: EventEmitter<AXPageCloseEvent> = new EventEmitter<AXPageCloseEvent>();\r\n\r\n size: 'sm' | 'md' | 'lg' | 'full' = 'sm';\r\n modal: boolean = true;\r\n\r\n data: any = {};\r\n\r\n maximizable: boolean = false;\r\n\r\n closable: boolean = true;\r\n\r\n content: any;\r\n\r\n headerButtons: AXButtonItem[] = [];\r\n\r\n footerButtons: AXButtonItem[] = [];\r\n\r\n onCloseClick() {\r\n this.onClosed.emit({\r\n component: this[TAB_META_KEY].component,\r\n htmlElement: this.ref.nativeElement,\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.comRef) {\r\n this.comRef.destroy();\r\n }\r\n if (this.onFooterButtonsSubscription) {\r\n this.onFooterButtonsSubscription.unsubscribe();\r\n }\r\n this.cdr.detectChanges();\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n\r\n focus() {\r\n setTimeout(() => this.ref.nativeElement.focus());\r\n }\r\n\r\n onFullScreen() { }\r\n\r\n handleFooterButtonClick(e: AXButtonItem) {\r\n if (e.onClick) {\r\n e.onClick();\r\n }\r\n else if (this[TAB_META_KEY].component.onFooterButtonClick) {\r\n this[TAB_META_KEY].component.onFooterButtonClick({\r\n component: this[TAB_META_KEY].component,\r\n name: e.name,\r\n data: e,\r\n htmlElement: this.ref.nativeElement,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXPopupComponent } from './popup.component';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { TAB_META_KEY, AXPageClosedPromise, AXPageCloseEvent } from '../base/base-page.class';\r\nimport { AXOverlayService, AXOverlayViewRef } from '../popover/overlay.service';\r\nimport { options } from '@amcharts/amcharts4/core';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPopupService {\r\n private stack: Array<AXPopupComponent> = [];\r\n\r\n constructor(private overlayService: AXOverlayService) { }\r\n\r\n\r\n open(content: any, title: string): AXPageClosedPromise;\r\n open(\r\n content: any,\r\n options?: {\r\n title: string;\r\n closable?: boolean;\r\n maximizable?: boolean;\r\n size?: 'sm' | 'md' | 'lg' | 'full';\r\n data?: any;\r\n footerButtons?: AXButtonItem[],\r\n modal?: boolean\r\n }\r\n ): AXPageClosedPromise;\r\n\r\n open(arg1, arg2): AXPageClosedPromise {\r\n const options: any = {\r\n closable: true,\r\n size: 'md',\r\n maximizable: false,\r\n footerButtons: [],\r\n modal: true,\r\n };\r\n\r\n if (typeof arg2 === 'string') {\r\n options.title = arg2;\r\n } else {\r\n Object.assign(options, arg2);\r\n }\r\n const com = this.overlayService.show(AXPopupComponent, options, {\r\n transparentBackdrop: false,\r\n hasBackdrop: options.modal,\r\n closeOnClickOutside: false,\r\n scroll: 'block'\r\n });\r\n const popup = com.instance as AXPopupComponent;\r\n popup.content = arg1;\r\n popup[TAB_META_KEY] = {};\r\n if (options.size) {\r\n popup.size = options.size;\r\n }\r\n if (options.footerButtons) {\r\n popup.footerButtons = options.footerButtons;\r\n }\r\n this.stack.push(popup);\r\n popup.onClosed.subscribe(c => {\r\n this.closePopup(popup, com, c);\r\n });\r\n const promise = new AXPageClosedPromise((resolve) => {\r\n popup[TAB_META_KEY].close = (e) => {\r\n if (resolve) {\r\n resolve(e);\r\n }\r\n };\r\n });\r\n promise['closeMethod'] = () => { popup.onCloseClick(); };\r\n return promise;\r\n }\r\n\r\n\r\n private closePopup(popup: AXPopupComponent, com: AXOverlayViewRef, result: AXPageCloseEvent) {\r\n const closeFunc = (e) => {\r\n com.dispose();\r\n this.stack.pop();\r\n delete e.cancel;\r\n popup[TAB_META_KEY].close(e);\r\n if (this.stack.length) { this.stack.reverse()[0].focus(); }\r\n };\r\n const e = { cancel: false };\r\n const closingFunc = popup[TAB_META_KEY]?.component?.onClosing;\r\n if (closingFunc) {\r\n const res = closingFunc(e);\r\n if (res instanceof Promise) {\r\n res.then(() => {\r\n if (e == null || e.cancel !== true) {\r\n closeFunc(result);\r\n }\r\n });\r\n }\r\n else {\r\n if (e == null || e.cancel !== true) {\r\n closeFunc(result);\r\n }\r\n }\r\n } else {\r\n closeFunc(result);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXDialogComponent } from './dialog.component';\r\nimport { AXPopupService } from '../popup/popup.service';\r\nimport { AXButtonItem, AXTranslator } from '@acorex/core';\r\n\r\nexport class AXDialogAlertResult {\r\n private _executor: (close: (e?: any) => void) => void;\r\n constructor(\r\n executor: (close: (e?: any) => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.closeAction);\r\n }, 50);\r\n }\r\n\r\n private closeAction: (e?: any) => void;\r\n\r\n close(action: (e?: any) => void): AXDialogAlertResult {\r\n this.closeAction = action;\r\n return this;\r\n }\r\n\r\n}\r\n\r\nexport class AXDialogConfirmResult {\r\n private _executor: (okay: () => void, cancel: () => void, final: () => void) => void;\r\n constructor(\r\n executor: (okay: () => void, cancel: () => void, final: () => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.okayAction, this.cancelAction, this.finalAction);\r\n }, 50);\r\n }\r\n\r\n private okayAction: () => void;\r\n private cancelAction: () => void;\r\n private finalAction: () => void;\r\n\r\n okay(action: () => void): AXDialogConfirmResult {\r\n this.okayAction = action;\r\n return this;\r\n }\r\n cancel(action: () => void): AXDialogConfirmResult {\r\n this.cancelAction = action;\r\n\r\n return this;\r\n }\r\n final(action: () => void) {\r\n this.finalAction = action;\r\n }\r\n}\r\n\r\n\r\nexport class AXDialogResult {\r\n private _executor: (then: (name: string) => void, final: () => void) => void;\r\n constructor(\r\n executor: (then: (name: string) => void, final: () => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.thenAction, this.finalAction);\r\n }, 50);\r\n }\r\n\r\n private thenAction: (name: string) => void;\r\n private finalAction: () => void;\r\n\r\n then(action: (name: string) => void): AXDialogResult {\r\n this.thenAction = action;\r\n return this;\r\n }\r\n\r\n final(action: () => void) {\r\n this.finalAction = action;\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXDialogService {\r\n\r\n constructor(private popupService: AXPopupService) {\r\n\r\n }\r\n\r\n alert(title: string, message: string): AXDialogAlertResult {\r\n return new AXDialogAlertResult((close) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable: false,\r\n\r\n data: {\r\n message,\r\n buttons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n }\r\n ],\r\n onClick: (e) => {\r\n popup.close()\r\n close();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n confirm(title: string, message: string): AXDialogConfirmResult {\r\n return new AXDialogConfirmResult((okay, cancel, final) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable: false,\r\n\r\n data: {\r\n buttons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n }\r\n ],\r\n message,\r\n onClick: (e) => {\r\n popup.close()\r\n if (e.name === 'confirm' && okay) {\r\n okay();\r\n }\r\n if (e.name === 'cancel' && cancel) {\r\n cancel();\r\n }\r\n if (final) {\r\n final();\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n\r\n show(title: string, message: string, closable: boolean = false, ...buttons: AXButtonItem[]): AXDialogResult {\r\n return new AXDialogResult((then, final) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable,\r\n data: {\r\n message,\r\n buttons,\r\n onClick: (e) => {\r\n popup.close();\r\n if (then) {\r\n then(e.name);\r\n }\r\n if (final) {\r\n final();\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\n@Component({\r\n selector: 'ax-drawer',\r\n templateUrl: './drawer.component.html',\r\n animations: [\r\n trigger('slideInOut', [\r\n state(\r\n 'in',\r\n style({\r\n transform: 'translate3d(0,0,0)',\r\n })\r\n ),\r\n state(\r\n 'out',\r\n style({\r\n transform: 'translate3d(100%, 0, 0)',\r\n })\r\n ),\r\n transition('in => out', animate('200ms ease-in-out')),\r\n transition('out => in', animate('200ms ease-in-out')),\r\n ]),\r\n ],\r\n})\r\nexport class AXDrawerComponent {\r\n constructor() {}\r\n\r\n @Input()\r\n width: number = 300;\r\n\r\n drawerState: string = 'out';\r\n\r\n ngOnDestroy(): void {\r\n document.querySelector('body').classList.remove('ax-drawer-underlay');\r\n }\r\n toggle() {\r\n const body = document.querySelector('body');\r\n\r\n if (this.drawerState === 'out') {\r\n this.drawerState = 'in';\r\n body.classList.add('ax-drawer-underlay');\r\n } else {\r\n this.drawerState = 'out';\r\n body.classList.remove('ax-drawer-underlay');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDrawerComponent } from './drawer.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n@NgModule({\r\n declarations: [AXDrawerComponent],\r\n imports: [CommonModule, BrowserAnimationsModule],\r\n exports: [AXDrawerComponent],\r\n providers: []\r\n})\r\nexport class AXDrawerModule {}\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { trigger, state, style, transition, animate } from '@angular/animations';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-fieldset',\r\n templateUrl: './fieldset.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('visibilityChanged', [\r\n state(\r\n 'shown',\r\n style({\r\n height: '*',\r\n opacity: 1\r\n })\r\n ),\r\n state(\r\n 'hidden',\r\n style({\r\n height: '0px',\r\n opacity: 0,\r\n padding: 0\r\n })\r\n ),\r\n transition('Void => *', animate('0ms')),\r\n transition('shown => hidden', animate('200ms')),\r\n transition('hidden => shown', animate('200ms'))\r\n ])\r\n ]\r\n})\r\nexport class AXFieldsetComponent implements AXBaseSizableComponent {\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @Input()\r\n caption: string = '';\r\n\r\n @Input()\r\n allowCollapse: boolean = false;\r\n\r\n collapsed: boolean = false;\r\n toggle() {\r\n if (this.allowCollapse) {\r\n this.collapsed = !this.collapsed;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFieldsetComponent } from './fieldset.component';\r\n\r\n@NgModule({\r\n declarations: [AXFieldsetComponent],\r\n imports: [ CommonModule ],\r\n exports: [AXFieldsetComponent],\r\n providers: [],\r\n})\r\nexport class AXFieldsetModule {}","import { Component, OnInit, ViewEncapsulation, Input } from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-label',\r\n templateUrl: './label.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXLabelComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n constructor() {\r\n super();\r\n }\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXLabelComponent } from './label.component';\r\n\r\nconst COMPONENT = [AXLabelComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXLabelModule { }","import { Component, OnInit, Input, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-loading-panel',\r\n template: `\r\n <div onclick=\"return false;\" class=\"ax ax-loading-panel ax-overlay-wrapper ax-overlay-modal ax-loading-overlay\" *ngIf=\"visible\" >\r\n <ax-loading-indicator tabindex=\"0\" cdkTrapFocus>\r\n </ax-loading-indicator>\r\n </div>\r\n `\r\n})\r\nexport class AXLoadingPanelComponent implements OnInit {\r\n\r\n constructor(private ref: ElementRef<HTMLDivElement>) {\r\n\r\n }\r\n\r\n @Input()\r\n visible: boolean = false;\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n const host = this.ref.nativeElement.closest('.ax-loading-host');\r\n }\r\n\r\n show() {\r\n this.visible = true;\r\n }\r\n\r\n hide() {\r\n this.visible = false;\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXLoadingIndicatorComponent } from './loading-indicator.component';\r\nimport { AXLoadingPanelComponent } from './loading-panel.component';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n@NgModule({\r\n declarations: [AXLoadingIndicatorComponent, AXLoadingPanelComponent],\r\n imports: [CommonModule, A11yModule],\r\n exports: [AXLoadingIndicatorComponent, AXLoadingPanelComponent],\r\n providers: [],\r\n})\r\nexport class AXLoadingModule { }","import { Component, Input, ElementRef, HostListener, ChangeDetectorRef, ChangeDetectionStrategy, AfterViewInit, OnInit } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n@Component({\r\n selector: 'ax-number-box',\r\n templateUrl: './number-box.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXNumberBoxComponent }]\r\n})\r\nexport class AXNumberBoxComponent extends AXBaseTextComponent implements OnInit {\r\n @Input() min: number = null;\r\n @Input() max: number = null;\r\n\r\n @Input()\r\n showSeparator: boolean = false;\r\n @Input()\r\n showCurrency: boolean = false;\r\n\r\n @Input()\r\n showCounter: boolean = true;\r\n\r\n @Input()\r\n scrollWeel: boolean = true;\r\n\r\n @Input()\r\n showDoubleCounter: boolean = false;\r\n\r\n @Input()\r\n maxLength: number = 18;\r\n\r\n userQuestionUpdate = new Subject<string>();\r\n\r\n userEdite: boolean = false;\r\n\r\n tmp: any;\r\n count: number;\r\n findDots: boolean = false;\r\n findMinus: boolean = false;\r\n cursorPosition: number = 0;\r\n dotPosition: number;\r\n textValue: string;\r\n decimalConstant: number = 0.1;\r\n lastStep: number = null;\r\n\r\n @Input() intStep: number = 1;\r\n @Input() decimalNumber: number = null;\r\n @Input() customStep: number = null;\r\n\r\n private _values: string;\r\n public get value(): string {\r\n return this._values;\r\n }\r\n public set value(v: string) {\r\n if (v === '-') {\r\n this.textValue = '-';\r\n this._values = '-';\r\n } else {\r\n if (v === '' || v == null || v === undefined ? true : isNaN(Number(v.toString().replace(/,/g, ''))) === false) {\r\n if (v === '' || v == null || v === undefined) {\r\n this.textValue = '';\r\n const old = this._values;\r\n this._values = null;\r\n\r\n if (this._values !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: null,\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n } else {\r\n v = v.toString();\r\n\r\n // this.addCommas(v.toString());\r\n this.textValue = this.showSeparator && v ? this.addCommas(v.toString()) : v;\r\n\r\n // if (this.textValue.indexOf('.') !== -1) {\r\n // // const dottt= (this.textValue.length-1) - this.textValue.indexOf('.')\r\n // if (this.textValue.length - 1 - this.textValue.indexOf('.') < this.decimalNumber) {\r\n // const a = this.decimalNumber - (this.textValue.length - 1 - this.textValue.indexOf('.'));\r\n // const z = '0';\r\n // this.textValue = this.textValue + '0';\r\n // }\r\n // }\r\n\r\n if (this._values) {\r\n const old = this._values;\r\n if (old.toString().search(/\\./g) !== v.toString().search(/\\./g)) {\r\n if (this.cursorPosition <= old.search(/\\./g)) {\r\n this.cursorPosition = v.search(/\\./g);\r\n } else {\r\n this.cursorPosition = v.length;\r\n }\r\n }\r\n }\r\n if (v !== this._values) {\r\n const old = this._values;\r\n this._values = v;\r\n this.valueChange.emit(this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v));\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v),\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n } else {\r\n this.textValue = '';\r\n v = null;\r\n const old = this._values;\r\n this._values = null;\r\n\r\n if (this._values !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: null,\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n }\r\n }\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n this.textAlign = 'left';\r\n }\r\n\r\n calcSeparator(num: number) {\r\n if (this.showSeparator) {\r\n return num + +(num / 3);\r\n } else {\r\n return num;\r\n }\r\n }\r\n\r\n addCommas2(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n addCommas(nStr) {\r\n nStr += '';\r\n const x = nStr.split('.');\r\n let x1 = x[0];\r\n const x2 = x.length > 1 ? '.' + x[1] : '';\r\n const rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.disabled === false) {\r\n if (this.scrollWeel === true) {\r\n setTimeout(() => {\r\n if (this.readonly === false) {\r\n this.input.nativeElement.addEventListener('wheel', (e) => {\r\n this.handleWheel(e);\r\n });\r\n }\r\n }, 500);\r\n }\r\n }\r\n\r\n // this.value = this.min.toString();\r\n }\r\n\r\n handleWheel(event) {\r\n if ((event as any).wheelDelta > 0) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n this.upStepHandel();\r\n this.delaySearch();\r\n\r\n setTimeout(() => {\r\n this.setCaret();\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if ((event as any).wheelDelta < 0) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n this.downStepHandel();\r\n this.delaySearch();\r\n\r\n setTimeout(() => {\r\n this.setCaret();\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n handleKeyPress(event: any) {\r\n this.userEdite = true;\r\n const NumberDotpattern = /[0-9\\.]/g;\r\n const NumberMinusPattern = /[0-9\\-]/g;\r\n\r\n const inputChar = String.fromCharCode(event.charCode);\r\n\r\n if (this.value && this.value.toString().match(/\\./g) === null) {\r\n this.findDots = false;\r\n }\r\n if (this.value && this.value.toString().search('-') === null) {\r\n this.findMinus = false;\r\n }\r\n\r\n // get cursur position when key press\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n this.cursorPosition += 1;\r\n }\r\n\r\n // control cursor when in first Index\r\n if (this.cursorPosition <= 1) {\r\n if (!NumberMinusPattern.test(inputChar)) {\r\n event.preventDefault();\r\n }\r\n if (this.value && this.value.match(/\\-/g)) {\r\n event.preventDefault();\r\n }\r\n }\r\n // control cursor when in another index\r\n if (this.cursorPosition !== 1) {\r\n if (event.keyCode !== 8 && !NumberDotpattern.test(inputChar)) {\r\n event.preventDefault();\r\n } else {\r\n // for contor decimal figur = 0 or null\r\n if (this.decimalNumber === null || this.decimalNumber === 0) {\r\n if (inputChar === '.') {\r\n event.preventDefault();\r\n }\r\n }\r\n // control decimal number (figur of decimal)\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n const figureAfterDot = this.value.length - this.value.indexOf('.');\r\n const dotIndex = this.value.indexOf('.');\r\n if (dotIndex - 1 + dotIndex + figureAfterDot > dotIndex - 1 + dotIndex + this.decimalNumber && this.cursorPosition - 1 > dotIndex) {\r\n event.preventDefault();\r\n }\r\n }\r\n // control '.' input\r\n if (inputChar === '.') {\r\n const lastChar = this.value.toString().charAt(this.value.length - 1);\r\n // control . when last char is -\r\n if (lastChar.toString().match(/\\-/g)) {\r\n event.preventDefault();\r\n }\r\n // control . when find first dot\r\n if (this.findDots) {\r\n event.preventDefault();\r\n }\r\n this.findDots = true;\r\n this.findMinus = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent) {\r\n this.userEdite = true;\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.setCaret();\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n this.setCaret();\r\n }\r\n\r\n // left & right Button\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n // home button\r\n if (event.key === 'Home') {\r\n this.cursorPosition = 0;\r\n }\r\n\r\n // end button\r\n if (event.key === 'End') {\r\n this.cursorPosition = this.value.length;\r\n }\r\n\r\n // set delay with rxjs\r\n this.delaySearch();\r\n\r\n // backspace Control\r\n if (event.key === 'Backspace') {\r\n if (this.value === null || this.value.length <= 0) {\r\n this.cursorPosition = 0;\r\n } else {\r\n this.cursorPosition -= 1;\r\n }\r\n }\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n this.userEdite = true;\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n // step and +- with up key and down key\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n this.dotPosition = this.value.indexOf('.');\r\n if (this.dotPosition >= this.cursorPosition) {\r\n if (event.key === 'ArrowDown') {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp - +this.intStep;\r\n if (this.min === null || Number(this.count) >= Number(this.min)) {\r\n // this.value = this.count.toFixed(this.decimalNumber);\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp + +this.intStep;\r\n if (this.max === null || Number(this.count) <= Number(this.max)) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n } else {\r\n if (event.key === 'ArrowDown') {\r\n if (this.min === null || Number(this.value) > Number(this.min)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) - this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) - defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n if (this.max === null || Number(this.value) < Number(this.max)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) + this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) + defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (event.key === 'ArrowDown') {\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n this.tmp = +this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp - +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n if (event.key === 'ArrowUp') {\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n this.tmp = this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp + +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // stop when keydown\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n }\r\n\r\n handleClick() {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n delaySearch() {\r\n Observable.create((observer) => {\r\n this.userQuestionUpdate = observer;\r\n });\r\n this.userQuestionUpdate.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((text: string) => this.checkMinMax(text));\r\n // this.userQuestionUpdate.next((e.target as any).value);\r\n setTimeout(() => {\r\n this.userQuestionUpdate.next(this.input.nativeElement.value);\r\n }, 50);\r\n }\r\n\r\n checkMinMax(text) {\r\n let number: number;\r\n if (text.indexOf(',') > 0) {\r\n number = Number(text.replaceAll(',', ''));\r\n } else {\r\n number = Number(text);\r\n }\r\n\r\n if (!!this.min) {\r\n if (number < this.min) {\r\n this.value = '';\r\n }\r\n }\r\n if (!!this.max) {\r\n if (number > this.max) {\r\n this.value = '';\r\n }\r\n }\r\n }\r\n\r\n doGetCaretPosition(ctrl) {\r\n let CaretPos = 0;\r\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\r\n CaretPos = ctrl.selectionStart;\r\n return CaretPos;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else if (ctrl.createTextRange) {\r\n const range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n }\r\n\r\n upStepHandel() {\r\n this.userEdite = true;\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n this.dotPosition = this.value.toString().indexOf('.') + 1;\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n if (this.dotPosition > this.cursorPosition) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp + +this.intStep;\r\n if (this.max === null || Number(this.count) <= this.max) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n } else {\r\n if (this.max === null || Number(this.value) < Number(this.max)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) + this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) + defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {\r\n this.tmp = this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp + +this.intStep;\r\n\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n downStepHandel() {\r\n this.userEdite = true;\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n this.dotPosition = this.value.toString().indexOf('.') + 1;\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n if (this.dotPosition > this.cursorPosition) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.value.replace(/,/g, '')) - +this.intStep;\r\n if (this.min === null || Number(this.count) >= this.min) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n }\r\n } else {\r\n if (this.min === null || Number(this.value) > Number(this.min)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) - this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) - defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {\r\n this.tmp = +this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp - +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleInputBlur(e: Event) {\r\n this.checkMinMax(this.textValue);\r\n this.onBlur.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXNumberBoxComponent } from './number-box.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXNumberBoxComponent],\r\n imports: [CommonModule, AXButtonModule, FormsModule],\r\n exports: [AXNumberBoxComponent],\r\n providers: []\r\n})\r\nexport class AXNumberBoxModule {}\r\n","import { Component, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-page-content',\r\n template: `\r\n <div class='ax-page-content'>\r\n <div class='inner-content'>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n ':host { height:100% }'\r\n ]\r\n})\r\nexport class AXPageContentComponent {\r\n constructor(private el: ElementRef) { }\r\n}\r\n","import {\r\n Component\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-page-footer',\r\n template:\r\n `<div class='ax-page-footer' >\r\n <ng-content></ng-content>\r\n </div>`\r\n})\r\n\r\nexport class AXPageFooterComponent { };","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPageContentComponent } from './content.component';\r\nimport { AXPageFooterComponent } from './footer.component';\r\nimport { AXPageComponent } from './page.component';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\n\r\n@NgModule({\r\n declarations: [AXPageContentComponent, AXPageFooterComponent, AXPageComponent],\r\n imports: [CommonModule, AXLoadingModule],\r\n exports: [AXPageContentComponent, AXPageFooterComponent, AXPageComponent],\r\n providers: [],\r\n})\r\nexport class AXPageModule { }","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-password-box',\r\n templateUrl: './password-box.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXPasswordBoxComponent }]\r\n})\r\nexport class AXPasswordBoxComponent extends AXBaseTextComponent {\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n type: 'text' | 'password' = 'password';\r\n eyeIcon: string = 'far fa-eye';\r\n\r\n handleShowPassword() {\r\n this.eyeIcon = 'far fa-eye-slash';\r\n if (this.type === 'password') {\r\n this.type = 'text';\r\n this.eyeIcon = 'far fa-eye-slash';\r\n } else {\r\n this.type = 'password';\r\n this.eyeIcon = 'far fa-eye';\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPasswordBoxComponent } from './password-box.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\n\r\nconst COMPONENT = [AXPasswordBoxComponent];\r\nconst MODULES = [CommonModule, AXButtonModule,AXFormGroupModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXPasswordBoxModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPopupComponent } from './popup.component';\r\nimport { AXPopupService } from './popup.service';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\n@NgModule({\r\n declarations: [AXPopupComponent],\r\n imports: [CommonModule, DragDropModule, A11yModule, AXButtonModule, AXTranslatorModule, AXLoadingModule],\r\n exports: [AXPopupComponent],\r\n entryComponents: [AXPopupComponent],\r\n providers: [AXPopupService]\r\n})\r\nexport class AXPopupModule { }\r\n","import { Component, Input } from '@angular/core';\r\nimport { AXBaseComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-progress-bar',\r\n templateUrl: './progress-bar.component.html'\r\n})\r\nexport class AXProgressBarComponent extends AXBaseComponent {\r\n @Input() progress: number = 0;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXProgressBarComponent } from './progress-bar.component';\r\n\r\n@NgModule({\r\n declarations: [AXProgressBarComponent],\r\n imports: [CommonModule],\r\n exports: [AXProgressBarComponent],\r\n entryComponents: [AXProgressBarComponent],\r\n providers: []\r\n})\r\nexport class AXProgressBarModule {}\r\n","import { AXDataEvent } from '../base/events.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\nexport type AXQueryBuilderDataType = 'string' | 'number' | 'date' | 'time' | 'datetime' | 'boolean';\r\nexport type AXQueryBuilderGroupItem = AXQueryBuilderGroup | AXQueryBuilderRule;\r\nexport type AXQueryBuilderControlType = 'textBox' | 'selectBox' | 'numberBox' | 'dataPicker' | 'lov' | 'boolean';\r\nexport type AXQueryBuilderStringType = 'simple' | 'sql' | 'sodoco' | 'elastic';\r\n\r\nexport class AXQueryBuilderControl {\r\n type: AXQueryBuilderControlType = 'textBox';\r\n options: any = {};\r\n}\r\n\r\nexport class AXQueryBuilderRule {\r\n dataField: string;\r\n caption: string;\r\n dataType: AXQueryBuilderDataType;\r\n control: AXQueryBuilderControl;\r\n operator: string;\r\n value?: any;\r\n text?: string;\r\n dataFieldItem: any;\r\n valueItem?: any;\r\n onDemandLabel?: string;\r\n}\r\n\r\nexport class AXQueryBuilderGroup {\r\n items: AXQueryBuilderGroupItem[];\r\n condition: string;\r\n queryString: string;\r\n queryStringElastic:string\r\n}\r\nexport class AXQueryBuilderField {\r\n caption: string;\r\n dataField: string;\r\n dataType: AXQueryBuilderDataType;\r\n default?: any;\r\n options?: any;\r\n}\r\n\r\nexport class AXQueryBuilderRuleEvent extends AXDataEvent<AXQueryBuilderRuleEvent> {\r\n items: AXQueryBuilderRule;\r\n}\r\n\r\nexport class AXQueryBuilderGroupEvent extends AXDataEvent<AXQueryBuilderGroupEvent> {\r\n items?: AXQueryBuilderRule;\r\n groups: AXQueryBuilderGroup;\r\n}\r\n\r\nexport class AXQueryBuilderPopup {\r\n name: string;\r\n type: string;\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXBaseTextComponent } from '../base/element.class';\r\nimport { AXBaseEvent, AXValueEvent } from '../base/events.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-search-box',\r\n templateUrl: './searchbox.component.html',\r\n host: { style:'width: 100%' },\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXSearchBoxComponent extends AXBaseTextComponent {\r\n\r\n @Output()\r\n public textChanged: EventEmitter<AXValueEvent<any>> = new EventEmitter<AXValueEvent<any>>();\r\n @Output()\r\n onButtonClick: EventEmitter<AXValueEvent<any>> = new EventEmitter<AXValueEvent<any>>();\r\n\r\n @Input()\r\n placeholder: string = 'جستجو ...';\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n const old = this._text;\r\n this._text = v;\r\n this.textChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.value = '';\r\n this.text = '';\r\n }\r\n\r\n onSearchChanged(text: string) {\r\n if (!this.searchChangeObserver) {\r\n Observable.create(observer => {\r\n\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(this.delay))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.text = c;\r\n this.value = c;\r\n });\r\n }\r\n\r\n this.searchChangeObserver.next(text);\r\n }\r\n\r\n @Input()\r\n delay: number = 500;\r\n\r\n private searchChangeObserver: any;\r\n\r\n handleKeyEvent(e: KeyboardEvent) {\r\n // this.searchChangeObserver.next(this.text);\r\n this.onkey.emit(e);\r\n }\r\n\r\n click(e: MouseEvent) {\r\n this.onButtonClick.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n value: this.text\r\n });\r\n // this.searchChangeObserver.next(this.text);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n NgZone,\r\n QueryList,\r\n ContentChildren,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\nimport { AXDataSourceReadParams } from '../data-source/read-param';\r\nimport { AXBaseEvent } from '../base/events.class';\r\nimport { AXSearchBoxComponent } from '../searchbox/searchbox.component';\r\nimport { AXConfig } from '@acorex/core';\r\nimport { differenceBy } from 'lodash';\r\nexport class AXSelectBoxSelectionChangedEvent extends AXBaseEvent {\r\n constructor(component: any, public selectedItems: any[], public selectedValues: any[] | any) {\r\n super();\r\n this.component = component;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ax-select-box',\r\n templateUrl: './selectbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBoxComponent }]\r\n})\r\nexport class AXSelectBoxComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent {\r\n @Input() showDropDownButton: boolean = true;\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n rowTemplate: TemplateRef<any>;\r\n\r\n @Input()\r\n rowInputTemplate: TemplateRef<any>;\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n span: ElementRef<HTMLElement>;\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n textbox: AXTextBoxComponent;\r\n\r\n @ViewChild('listContainer', { static: true })\r\n listContainer: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('serchBox', { static: false })\r\n serchBox: AXSearchBoxComponent;\r\n\r\n @ViewChild('textBoxSelectBox', { static: true })\r\n textBoxSelectBox: AXTextBoxComponent;\r\n\r\n @Input() showCheckBox: boolean = true;\r\n\r\n @Input() readonly: boolean = false;\r\n\r\n @Input() rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() placeholder: string;\r\n\r\n @Input() size: AXElementSize = 'md';\r\n\r\n @Input() allowNull: boolean = true;\r\n\r\n @Input() textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input() bufferSize: number = 20;\r\n\r\n @Input() remoteOperation: boolean = false;\r\n\r\n @Output()\r\n dropdownToggle: EventEmitter<any> = new EventEmitter<any>();\r\n // this input is Private and only use in LOV\r\n\r\n currentfocusedIndex: number = -1;\r\n showLoading: boolean = false;\r\n\r\n skip: number = -1;\r\n searchText: string = '';\r\n // @Input()\r\n // chipsWidth: string = '';\r\n\r\n text: string = '';\r\n totalCount: number = 0;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {\r\n super();\r\n }\r\n\r\n @ViewChild('d', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n @Input() disabledCallback: (e: { item: any; index: number }) => boolean;\r\n\r\n @Input() allowSearch: boolean = true;\r\n @Input() textField: string = 'text';\r\n @Input() valueField: string = 'value';\r\n @Input() disabledField: string = 'disabled';\r\n @Input() mode: 'single' | 'multiple' = 'single';\r\n itemRemove: boolean = false;\r\n @Output() itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Output() onBlur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output() onFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n private _items: any[] = [];\r\n @Input()\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n public set items(v: any[]) {\r\n this._items = v;\r\n if (this.itemsChange) {\r\n this.itemsChange.emit(v);\r\n }\r\n if (this.itemsStatusObserver) {\r\n this.itemsStatusObserver.next(this.items.length);\r\n }\r\n }\r\n\r\n hasSelectedValue: boolean = false;\r\n itemsFiltered: any[] = [];\r\n\r\n // #endregion\r\n\r\n dropDownDisabled: boolean = false;\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXSelectBoxSelectionChangedEvent> = new EventEmitter<AXSelectBoxSelectionChangedEvent>();\r\n\r\n @Output()\r\n selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n private _selectedItems: any[] = [];\r\n @Input()\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n public set selectedItems(v: any[]) {\r\n this.setSelectedItemsChange(v);\r\n // if (!v) {\r\n // v = [];\r\n // }\r\n\r\n // const old = this.selectedItems;\r\n // if (JSON.stringify(old) !== JSON.stringify(v)) {\r\n // this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];\r\n // this._selectedItems.forEach((c) => (c.selected = true));\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.selectedValuesChange.emit(this.selectedValues);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n // this.waitForData(() => {\r\n // if (this._selectedItems) {\r\n // this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n setSelectedItemsChange(v: any[], old: any[] = this.selectedItems) {\r\n if (!v) {\r\n v = [];\r\n }\r\n // const old = this.selectedItems;\r\n var f = differenceBy(old, v, this.valueField);\r\n var s = differenceBy(v, old, this.valueField);\r\n // if (JSON.stringify(old) !== JSON.stringify(v)) {\r\n if (f.length != 0 || s.length != 0) {\r\n this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];\r\n this._selectedItems.forEach((c) => (c.selected = true));\r\n this.selectedItemsChange.emit(this._selectedItems);\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.clearValidationStyle(this.ref.nativeElement);\r\n this.waitForData(() => {\r\n if (this._selectedItems) {\r\n this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.rowTemplate === undefined && this.rowInputTemplate != undefined) {\r\n this.rowTemplate = this.rowInputTemplate;\r\n }\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n scrolled(e) {\r\n if (\r\n this.remoteOperation &&\r\n this.totalCount > this.items.length &&\r\n this.listContainer.nativeElement.scrollHeight != 0 &&\r\n this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50\r\n ) {\r\n if (this.skip !== this.items.length) {\r\n this.showLoading = true;\r\n this.skip = this.items.length;\r\n const params: AXDataSourceReadParams = {};\r\n params.skip = this.items.length;\r\n params.take = this.bufferSize; //* (Math.floor(this.items.length / this.bufferSize) + 1);\r\n if (this.textbox) {\r\n params.searchText = this.text;\r\n } else {\r\n params.searchText = null;\r\n }\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n private setSelectedItems(v: any[], isUserInput: boolean) {\r\n let changed = false;\r\n if (isUserInput) {\r\n changed = JSON.stringify(v) !== JSON.stringify(this.selectedItems);\r\n }\r\n this.selectedItems = v;\r\n this.setSelectedIndex();\r\n if (isUserInput && changed) {\r\n this.emitSelectionChangedEvent();\r\n }\r\n }\r\n\r\n private searchChangeObserver: any;\r\n\r\n delay: number = 500;\r\n\r\n textChanged(e) {\r\n if ((e.value === null || e.value === undefined || e.value === '') && (e.oldValue === null || e.oldValue === undefined || e.oldValue === '')) {\r\n } else {\r\n this.currentfocusedIndex = -1;\r\n if (this.remoteOperation) {\r\n this.searchText = this.text;\r\n // this.searchText = e.value;\r\n // this.text = e.value;\r\n // this.items = [];\r\n if (this.items) {\r\n let t = this.items.length;\r\n for (let i = 0; i < t; i++) {\r\n this.items.pop();\r\n }\r\n }\r\n\r\n // this.items.forEach((element) => {\r\n // this.items.pop();\r\n // });\r\n const params: AXDataSourceReadParams = {};\r\n params.searchText = this.text;\r\n // params.searchText = e.value;\r\n params.skip = 0;\r\n params.take = this.bufferSize;\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n\r\n isItemDisabled(item: any): boolean {\r\n if (item[this.disabledField] == true) {\r\n return true;\r\n } else if (this.disabledCallback) {\r\n return this.disabledCallback({ item, index: -1 });\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n onButtonClick(e) {\r\n console.log('onButtonClick', e);\r\n }\r\n\r\n private setSelectedIndex(sign: -1 | 1 | null = null): void {\r\n if (sign == null) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.currentfocusedIndex = this.items\r\n .filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n .indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n } else {\r\n this.currentfocusedIndex = this.items.indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n } else {\r\n sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;\r\n }\r\n\r\n if (this.remoteOperation) {\r\n this.itemsFiltered = this.items;\r\n } else {\r\n this.itemsFiltered = this.text\r\n ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n : this.items;\r\n }\r\n\r\n this.currentfocusedIndex =\r\n this.currentfocusedIndex < 0\r\n ? 0\r\n : this.currentfocusedIndex >= this.itemsFiltered.length\r\n ? this.itemsFiltered.length - 1\r\n : this.currentfocusedIndex;\r\n //\r\n // set scroll\r\n if (this.listContainer) {\r\n this.zone.runOutsideAngular(() => {\r\n const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);\r\n if (itemDiv) {\r\n itemDiv.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n @Output()\r\n selectedValuesChange: EventEmitter<any[] | any> = new EventEmitter<any[] | any>();\r\n\r\n @Input()\r\n public get selectedValues(): any[] | any {\r\n debugger;\r\n if (this.mode === 'single') {\r\n return this._selectedItems.map((c) => c[this.valueField])[0];\r\n } else {\r\n return this._selectedItems.map((c) => c[this.valueField]) || [];\r\n }\r\n }\r\n\r\n public set selectedValues(v: any[] | any) {\r\n if (this.compareSelectedValues(v)) {\r\n return;\r\n }\r\n if (v == null) {\r\n this.selectedItems = [];\r\n } else {\r\n if (v !== undefined) {\r\n if (v != [] && v != '' && v != null) {\r\n this.hasSelectedValue = true;\r\n }\r\n\r\n this.waitForData(() => {\r\n if (this.mode === 'single') {\r\n if (this.items.filter((c) => v == c[this.valueField])) {\r\n this.selectedItems = this.items.filter((c) => v == c[this.valueField]);\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n } else {\r\n if (Array.isArray(v)) {\r\n if (this.selectedItems.length > v.length) {\r\n this.selectedItems = this.selectedItems.filter((c) => v.includes(c[this.valueField]));\r\n } else {\r\n let addId = [];\r\n v.forEach((vId) => {\r\n addId.push({\r\n [this.valueField]: vId\r\n });\r\n });\r\n\r\n let newId = differenceBy(addId, this.selectedItems, this.valueField);\r\n let vv = [];\r\n newId.forEach((rc) => {\r\n vv.push(rc[this.valueField]);\r\n });\r\n this.items\r\n .filter((c) => vv.includes(c[this.valueField]))\r\n .forEach((res) => {\r\n this.selectedItems.push(res);\r\n });\r\n // this.selectedItems.push(this.items.filter((c) => vv.includes(c[this.valueField])));\r\n this.setSelectedItemsChange(this.selectedItems, vv.length > 0 ? [1] : this.selectedItems);\r\n }\r\n\r\n // this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));\r\n } else if (v) {\r\n this.selectedItems = this.items.filter((c) => v === c[this.valueField]);\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n }\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n\r\n private compareSelectedValues(newValue: any[] | any) {\r\n const currentValue = this.selectedValues;\r\n return (currentValue == null && newValue == null) || JSON.stringify(currentValue) === JSON.stringify(newValue);\r\n }\r\n\r\n private setSelectedValues(v: any[] | any, isUserInput: boolean) {\r\n const changed = isUserInput ? !this.compareSelectedValues(v) : false;\r\n this.selectedValues = v;\r\n if (isUserInput && changed) {\r\n this.emitSelectionChangedEvent();\r\n }\r\n }\r\n\r\n private emitSelectionChangedEvent() {\r\n debugger;\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.selectionChanged.emit(new AXSelectBoxSelectionChangedEvent(this, this.selectedItems, this.selectedValues));\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.bufferSize < 10) {\r\n this.bufferSize = 10;\r\n }\r\n if (this.mode == 'single') {\r\n this.showCheckBox = false;\r\n } else {\r\n this.showCheckBox = true;\r\n }\r\n if (!this.remoteOperation || (this.remoteOperation && this.hasSelectedValue)) {\r\n this.refresh();\r\n }\r\n }\r\n dropdownToggleSelecBox(e) {\r\n this.text = '';\r\n if (this.dropdown.isOpen) {\r\n this.refresh();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 1);\r\n } else {\r\n // this.refresh();\r\n }\r\n this.dropdownToggle.emit(e);\r\n }\r\n\r\n ngAfterContentInit() {\r\n // if (!this.allowSearch) {\r\n // if (this.readonly == false) {\r\n // this.itemRemove = true;\r\n // this.readonly = true;\r\n // }\r\n // }\r\n this.initValidation(this.ref, 'selectedItems', this.validation);\r\n if (this.dataSource) {\r\n // if (this.allowSearch == false) {\r\n // this.fetch();\r\n // }\r\n this.dataSource.onDataReceived.subscribe((c) => {\r\n this.showLoading = false;\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private dataReceived(data: any) {\r\n if (this.remoteOperation) {\r\n if (this.searchText && this.searchText != null && this.searchText !== '') {\r\n if (data.totalCount) {\r\n if (this.items.length == 0) {\r\n //this.items = data.items;\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n } else {\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n }\r\n\r\n this.totalCount = data.totalCount;\r\n } else {\r\n if (this.items.length == 0) {\r\n this.items = data.items;\r\n } else {\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n }\r\n this.totalCount = data.items == undefined ? 0 : data.items.length;\r\n }\r\n } else if (data.items && data.items.length === data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.items.length;\r\n } else if (data.totalCount) {\r\n data.items.forEach((elm) => {\r\n this.items.push(elm);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n this.totalCount = data.totalCount;\r\n } else {\r\n data.forEach((elm) => {\r\n this.items.push(elm);\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n });\r\n this.totalCount = data.length;\r\n }\r\n } else {\r\n this.items = data;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n\r\n this.dropdown.updatePosition();\r\n }\r\n\r\n // private params: AXDataSourceReadParams = {};\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n // this.params = params;\r\n if (this.dataSource) {\r\n this.showLoading = true;\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n const params: AXDataSourceReadParams = {};\r\n if (this.remoteOperation) {\r\n params.skip = 0;\r\n this.skip = 0;\r\n params.take = this.bufferSize;\r\n }\r\n if (this.dataSource != undefined) {\r\n // this.items = [];\r\n // this.items.forEach((element) => {\r\n // this.items.pop();\r\n // });\r\n\r\n if (this.items) {\r\n let t = this.items.length;\r\n for (let i = 0; i < t; i++) {\r\n this.items.pop();\r\n }\r\n }\r\n\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n handleItemRemoveClick(item) {\r\n if (this.mode === 'single') {\r\n // this.selectedItems = null;\r\n this.setSelectedValues(null, true);\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n } else {\r\n // this.selectedItems = this.selectedItems.filter((c) => c !== item);\r\n this.setSelectedItems(\r\n this.selectedItems.filter((c) => c[this.valueField] !== item[this.valueField]),\r\n true\r\n );\r\n // this._selectedItems = this._selectedItems.filter(c => c !== item);\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n }\r\n // this.text = '';\r\n this.validate();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onFocusTextBox(e) {}\r\n\r\n onTextBoxClick(e) {\r\n if (this.disabled == false && this.readonly == false) {\r\n this.dropdown.open();\r\n }\r\n }\r\n\r\n handleItemClick(e: MouseEvent, item: any) {\r\n if (this.isItemDisabled(item) == false) {\r\n const value = item[this.valueField];\r\n\r\n if (this.mode === 'single') {\r\n // this.selectedValues = value;\r\n this.setSelectedValues(value, true);\r\n } else {\r\n const exists = this.selectedValues.slice(0);\r\n if (exists.includes(value)) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n this.handleItemRemoveClick(item);\r\n }\r\n } else {\r\n exists.push(value);\r\n // this.selectedValues = exists;\r\n this.setSelectedValues(exists, true);\r\n }\r\n }\r\n\r\n if (this.mode == 'single') {\r\n this.text = '';\r\n this.dropdown.close();\r\n this.cdr.markForCheck();\r\n }\r\n // if (e.stopPropagation() == undefined) {\r\n // e.stopPropagation();\r\n // }\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n\r\n e.stopPropagation();\r\n }\r\n\r\n handleKeyEventSearch(e: KeyboardEvent) {\r\n if (this.disabled || this.readonly) {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n return false;\r\n }\r\n if (e.key === 'Escape') {\r\n this.text = null;\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {\r\n if (this.mode === 'single') {\r\n this.currentfocusedIndex = this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1);\r\n this.selectedItemByIndex(this.currentfocusedIndex);\r\n } else {\r\n if (this.dropdown.isOpen) {\r\n this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);\r\n } else {\r\n this.dropdown.open();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n // if (e.key == 'Enter' && this.dropdown.isOpen && this.mode == 'single') {\r\n // this.dropdown.close();\r\n // setTimeout(() => {\r\n // this.dropdown.focus();\r\n // }, 0);\r\n // }\r\n //e.stopPropagation();\r\n //e.preventDefault();\r\n e.stopImmediatePropagation();\r\n if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));\r\n if (this.itemsFiltered.length === 1) {\r\n this.currentfocusedIndex = 0;\r\n }\r\n } else {\r\n this.itemsFiltered = this.items;\r\n }\r\n\r\n if (\r\n this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&\r\n this.mode == 'multiple'\r\n ) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.selectedItems = this.selectedItems.filter(\r\n (c) =>\r\n c !==\r\n this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]\r\n );\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.mode == 'multiple') {\r\n if (this.currentfocusedIndex != -1) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n if (this.itemsFiltered.length === 1) {\r\n this.selectedItems.push(this.itemsFiltered[0]);\r\n } else {\r\n this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);\r\n }\r\n } else {\r\n this.selectedItems.push(this.items[this.currentfocusedIndex]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.text && this.itemsFiltered?.length === 1) {\r\n this.setSelectedItems(this.itemsFiltered, true);\r\n }\r\n if (this.mode == 'single') {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n isChar(str: string) {\r\n if (\r\n str.includes('Shift') ||\r\n str.includes('Tab') ||\r\n str.includes('Control') ||\r\n str.includes('Alt') ||\r\n str.includes('CapsLock') ||\r\n str.includes('Meta') ||\r\n str.includes('ContextMenu') ||\r\n str.includes('Enter') ||\r\n str.includes('Backspace') ||\r\n str.includes('PrintScreen') ||\r\n str.includes('ScrollLock') ||\r\n str.includes('Pause') ||\r\n str.includes('Home') ||\r\n str.includes('End') ||\r\n str.includes('Insert') ||\r\n str.includes('PageUp') ||\r\n str.includes('Delete') ||\r\n str.includes('PageDown') ||\r\n str.includes('NumLock') ||\r\n str.includes('Escape') ||\r\n str.includes('Arrow') ||\r\n str.includes('ّF1') ||\r\n str.includes('F2') ||\r\n str.includes('F3') ||\r\n str.includes('F4') ||\r\n str.includes('F5') ||\r\n str.includes('F6') ||\r\n str.includes('F7') ||\r\n str.includes('F8') ||\r\n str.includes('F9') ||\r\n str.includes('F10') ||\r\n str.includes('F11') ||\r\n str.includes('F12')\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n handleKeyEvent(e: any) {\r\n // const NumberMinusPattern = /[a-zA-Z0-9\\-]/g;\r\n // const Farsi = /[پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ\\s]+$/;\r\n // const inputChar = String.fromCharCode(e.charCode);\r\n // const patternEn = /^[a-zA-Z0-9]*$/;\r\n // const pattern = /^[\\u0600-\\u06FF\\s]+$/;\r\n const inputChar = e.key;\r\n if (\r\n (inputChar != 'Backspace' &&\r\n inputChar != 'Backspace' &&\r\n inputChar != 'Tab' &&\r\n inputChar != 'Enter' &&\r\n inputChar != 'Escape' &&\r\n inputChar != 'ArrowDown' &&\r\n inputChar != 'ArrowUp') ||\r\n e.code === 'Space' ||\r\n e.ctrlKey == true\r\n ) {\r\n e.preventDefault();\r\n }\r\n if (\r\n e.key === 'Backspace' &&\r\n e.type === 'keydown' &&\r\n ((this.allowNull === true && this.selectedItems.length > 0) || (this.allowNull === false && this.selectedItems.length > 1))\r\n ) {\r\n debugger;\r\n\r\n this.selectedItems.pop();\r\n this.emitSelectionChangedEvent();\r\n }\r\n if (this.disabled || this.readonly) {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n return false;\r\n }\r\n const INPUT = String.fromCharCode(e.keyCode);\r\n if (this.isChar(e.key) && this.allowSearch && e.ctrlKey == false) {\r\n this.dropdown.open();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n this.text = e.key;\r\n }\r\n\r\n if (e.key === 'Escape') {\r\n this.text = null;\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {\r\n if (this.mode === 'single') {\r\n this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));\r\n } else {\r\n if (this.dropdown.isOpen) {\r\n // this.setSelectedIndex((e.key === 'ArrowDown' ? 1 : -1));\r\n if (this.allowSearch == false) {\r\n this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);\r\n } else {\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n } else {\r\n this.dropdown.open();\r\n if (this.allowSearch == true) {\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.allowSearch === false) {\r\n if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {\r\n e.stopImmediatePropagation();\r\n if (\r\n this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&\r\n this.mode == 'multiple'\r\n ) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.selectedItems = this.selectedItems.filter(\r\n (c) =>\r\n c !==\r\n this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]\r\n );\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.mode == 'multiple') {\r\n if (this.currentfocusedIndex != -1) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n if (this.itemsFiltered.length === 1) {\r\n this.selectedItems.push(this.itemsFiltered[0]);\r\n } else {\r\n this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);\r\n }\r\n } else {\r\n this.selectedItems.push(this.items[this.currentfocusedIndex]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.text && this.itemsFiltered.length === 1) {\r\n this.setSelectedItems(this.itemsFiltered, true);\r\n }\r\n if (this.mode == 'single') {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.cdr.markForCheck();\r\n }\r\n\r\n focus(): void {\r\n this.textbox.focus();\r\n }\r\n\r\n selectedItemByIndex(index: number) {\r\n let item = [];\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));\r\n\r\n item = this.itemsFiltered[index];\r\n } else {\r\n item = this.items[index];\r\n }\r\n //\r\n // const item = this.text ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[index] : this.items[index];\r\n if (item) {\r\n this.setSelectedItems([item], true);\r\n }\r\n\r\n this.setSelectedIndex();\r\n }\r\n\r\n getItems(): any[] {\r\n if (this.items == null) {\r\n return [];\r\n }\r\n return !this.remoteOperation && this.text && this.text !== ''\r\n ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n : this.items;\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems && this.selectedItems.filter((c) => c[this.valueField] === item[this.valueField]).length > 0;\r\n }\r\n\r\n private itemsStatusObserver: any;\r\n private waitForData(callbackfn: () => void) {\r\n if (this.items && this.items.length) {\r\n callbackfn();\r\n } else if (!this.itemsStatusObserver) {\r\n Observable.create((observer) => {\r\n this.itemsStatusObserver = observer;\r\n })\r\n .pipe(debounceTime(100))\r\n .pipe(distinctUntilChanged())\r\n .subscribe((c) => {\r\n callbackfn();\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewEncapsulation, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXQueryBuilderRule, AXQueryBuilderGroup, AXQueryBuilderRuleEvent, AXQueryBuilderControl } from './query-builder.class';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { AXSelectBoxComponent } from '../selectbox/selectbox.component';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\n\r\n@Component({\r\n selector: 'ax-query-rule',\r\n templateUrl: 'query-builder-rule.component.html',\r\n host: { class: 'ax ax-query-rule' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderRuleComponent implements OnInit {\r\n @ViewChild('selectBox') selectBox: AXSelectBoxComponent;\r\n @ViewChild('selectBoxValue') selectBoxValue: AXSelectBoxComponent;\r\n\r\n @ViewChild('selectBoxBoolean') selectBoxBoolean: AXSelectBoxComponent;\r\n\r\n @ViewChild('textBoxNameValue') textBoxNameValue: AXTextBoxComponent;\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n @Input()\r\n isEditing: boolean = true;\r\n\r\n @Input()\r\n rule: AXQueryBuilderRule;\r\n\r\n @Input()\r\n parent: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n mode: 'new' | 'edit' = 'new';\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n @Output()\r\n onRuleDelete: EventEmitter<AXQueryBuilderRuleEvent> = new EventEmitter<AXQueryBuilderRuleEvent>();\r\n\r\n @Output()\r\n ruleChanged: EventEmitter<AXQueryBuilderRuleEvent> = new EventEmitter<AXQueryBuilderRuleEvent>();\r\n\r\n showValue: boolean = false;\r\n\r\n isOnDemandLabel: boolean = false;\r\n\r\n showSelectBox: boolean = true;\r\n showOperatorSelectBox: boolean = true;\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit(): void {\r\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\r\n //Add 'implements AfterViewInit' to the class.\r\n if (this.rule.onDemandLabel) {\r\n this.isOnDemandLabel = true;\r\n }\r\n }\r\n provideDataBoolean = (e) => {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n value: 'true',\r\n text: AXTranslator.get('queryBuilder.true')\r\n },\r\n {\r\n value: 'false',\r\n text: AXTranslator.get('queryBuilder.false')\r\n }\r\n ]);\r\n });\r\n };\r\n\r\n saveRule() {\r\n this.form.validate().then((c) => {});\r\n }\r\n\r\n provideDataOperator = (e) => {\r\n return new Promise((resolve) => {\r\n if (this.rule.dataType === 'string') {\r\n if (this.rule && this.rule.control && this.rule.control.type && this.rule.control.type == 'selectBox') {\r\n if (this.rule.control.options.mode == 'multiple') {\r\n resolve([\r\n {\r\n value: 'contains',\r\n text: AXTranslator.get('queryBuilder.contains')\r\n },\r\n {\r\n value: 'not-contains',\r\n text: AXTranslator.get('queryBuilder.not-contains')\r\n },\r\n {\r\n value: 'contains-all',\r\n text: AXTranslator.get('queryBuilder.contains-all')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n } else {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n } else {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'contains',\r\n text: AXTranslator.get('queryBuilder.contains')\r\n },\r\n {\r\n value: 'start-with',\r\n text: AXTranslator.get('queryBuilder.start-with')\r\n },\r\n {\r\n value: 'end-with',\r\n text: AXTranslator.get('queryBuilder.end-with')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n }\r\n if (this.rule.dataType === 'number') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'gt',\r\n text: AXTranslator.get('queryBuilder.greater-than')\r\n },\r\n {\r\n value: 'gte',\r\n text: AXTranslator.get('queryBuilder.greater-than-equal')\r\n },\r\n {\r\n value: 'lt',\r\n text: AXTranslator.get('queryBuilder.less-than')\r\n },\r\n {\r\n value: 'lte',\r\n text: AXTranslator.get('queryBuilder.less-than-equal')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n if (this.rule.dataType === 'boolean') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n resolve([]);\r\n });\r\n };\r\n\r\n handleEditClick() {\r\n this.isEditing = true;\r\n }\r\n\r\n handleCommitClick() {\r\n this.isEditing = false;\r\n this.ruleChanged.emit({ items: this.rule, component: this });\r\n }\r\n handleRemoveClick() {\r\n this.onRuleDelete.emit({ items: this.rule, component: this });\r\n }\r\n captionChange(e) {\r\n if (e.selectedItems[0]) {\r\n this.rule.caption = e.selectedItems[0].caption;\r\n this.rule.dataField = e.selectedItems[0].dataField;\r\n this.rule.dataType = e.selectedItems[0].dataType;\r\n this.rule.control = e.selectedItems[0].control || new AXQueryBuilderControl();\r\n this.rule.dataFieldItem[0] = e.selectedItems[0];\r\n }\r\n\r\n if (this.selectBox) {\r\n if (this.rule.control.type === 'selectBox' && this.rule.control.options.mode == 'multiple') {\r\n this.rule.operator = 'contains';\r\n } else {\r\n this.rule.operator = 'equal';\r\n }\r\n this.selectBox.refresh();\r\n }\r\n\r\n this.showOperatorSelectBox = false;\r\n setTimeout(() => {\r\n this.showOperatorSelectBox = true;\r\n }, 20);\r\n\r\n this.rule.value = null;\r\n this.rule.valueItem = [];\r\n this.rule.text = '';\r\n\r\n if (this.rule.control.type === 'selectBox' && this.selectBoxValue) {\r\n this.showSelectBox = false;\r\n setTimeout(() => {\r\n this.showSelectBox = true;\r\n this.selectBoxValue.refresh();\r\n }, 20);\r\n }\r\n if (this.rule.control.type == 'boolean') {\r\n this.selectBoxBoolean.refresh();\r\n }\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n\r\n operatorChange(e) {\r\n this.rule.operator = e[0].value;\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n\r\n if (e[0].value !== 'null' && e[0].value !== 'not-null') {\r\n this.showValue = true;\r\n } else {\r\n this.showValue = false;\r\n this.rule.value = '';\r\n this.rule.text = '';\r\n this.rule.valueItem = [];\r\n this.rule.onDemandLabel = '';\r\n }\r\n }\r\n valueChange(e) {\r\n // this.rule.text = e.value == undefined ? e[0].value : (e.value == null ? '' : e.value);\r\n\r\n this.rule.text = e[0] ? (e[0].value == null ? '' : e[0].value) : e.value == null ? '' : e.value;\r\n this.rule.onDemandLabel = '';\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n onDemandLabelChange(e) {\r\n // this.rule.onDemandLabel = e.value == undefined ? '????|' + e[0].value : '????|' + e.value;\r\n this.rule.onDemandLabel = e[0] ? '????|' + (e[0].value == null ? '' : e[0].value) : '????|' + (e.value == null ? '' : e.value);\r\n this.rule.value = '';\r\n this.rule.text = '';\r\n this.rule.valueItem = [];\r\n\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n valueBooleanChange(e) {\r\n // this.rule.text = e.value == undefined ? e[0].value : (e.value == null ? '' : e.value);\r\n this.rule.text = e[0] ? (e[0].value == null ? '' : e[0].value) : e.value == null ? '' : e.value;\r\n this.rule.value = e.value == undefined ? e[0].value : e.value;\r\n this.rule.onDemandLabel = '';\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n getOnDemandName(v) {\r\n return v ? v.split('|')[1] : '';\r\n }\r\n selectedItemsChange(e) {\r\n let n = this.getOption('textField');\r\n\r\n if (this.rule.control.options.mode === 'single') {\r\n this.rule.text = e[0][n];\r\n if (this.rule && this.rule.control.options.valueField) {\r\n this.rule.value = e[0][this.rule.control.options.valueField];\r\n } else {\r\n this.rule.value = e[0].value;\r\n }\r\n this.rule.valueItem[0] = e[0];\r\n } else {\r\n this.rule.text = e.map((x) => x[n]).join('- ');\r\n const THAT = this;\r\n if (THAT.rule && THAT.rule.control.options.valueField) {\r\n THAT.rule.value = e.map(function (item) {\r\n return item[THAT.rule.control.options.valueField];\r\n });\r\n } else {\r\n this.rule.value = e.map(function (item) {\r\n return item.value;\r\n });\r\n }\r\n this.rule.valueItem = e;\r\n }\r\n\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n this.rule.onDemandLabel = '';\r\n }\r\n onDemandLabel(e) {\r\n // if (e.value && (this.rule.onDemandLabel == '????|' || this.rule.onDemandLabel === undefined || this.rule.onDemandLabel === null || this.rule.onDemandLabel === '')) {\r\n // this.textBoxNameValue.focus();\r\n // }\r\n if (e.value == false) {\r\n this.rule.onDemandLabel = '';\r\n }\r\n this.isOnDemandLabel = e.value;\r\n }\r\n getProvideData = (e) => {\r\n if (this.rule && this.rule.control.options && this.rule.control.options.dataSource) {\r\n return this.rule.control.options.dataSource({ ...e, optionsData: { ...this.rule.control.options } });\r\n }\r\n };\r\n\r\n getOption(name: string) {\r\n return this.rule.control.options ? this.rule.control.options[name] : null;\r\n }\r\n}\r\n","import { AXButtonItem, AXTranslator } from '@acorex/core';\r\nimport { ChangeDetectorRef, Component, ViewChild } from '@angular/core';\r\nimport { AXBasePopupPageComponent } from '../../base/base-page.class';\r\nimport { AXMenuItemClickEvent } from '../../menu/menu.component';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderPopup, AXQueryBuilderRule } from '../query-builder.class';\r\n\r\nimport { AXDataSourceReadParams } from '../../data-source/read-param'\r\nimport { AXToastService } from '../../toast/toast.service';\r\nimport { AXValidationFormComponent } from '../../validation/validation-form.component';\r\n@Component({\r\n templateUrl: './query-builder-popup.component.html'\r\n})\r\n\r\nexport class AXQueryBuilderPopupComponent extends AXBasePopupPageComponent {\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n constructor(private toast: AXToastService) {\r\n super();\r\n }\r\n group: AXQueryBuilderGroup;\r\n items: AXQueryBuilderRule[] = [];\r\n groupCopy: AXQueryBuilderGroup;\r\n complateValue: boolean = true;\r\n provideData: any;\r\n makeJsonString(items: any[]) {\r\n return new Promise((resolve, reject) => {\r\n items.forEach((element, index, array) => {\r\n if (element.items) {\r\n this.makeJsonString(element.items);\r\n } else {\r\n if (element.control && element.control.options && (element.control.options.dataSource === '' || element.control.options.dataSource === undefined)) {\r\n element.control.options.dataSource = this.provideData;\r\n }\r\n }\r\n if (index === array.length - 1) {\r\n resolve(array[0]);\r\n }\r\n });\r\n });\r\n }\r\n ngAfterViewInit() {\r\n var groupString = JSON.stringify(this.group);\r\n this.groupCopy = JSON.parse(groupString);\r\n this.makeJsonString(this.groupCopy.items);\r\n for (let i = 0; i < this.groupCopy.items.length; i++) {\r\n this.getNoValueRule(this.groupCopy.items[i]);\r\n }\r\n if (this.items.length < 1) {\r\n this.close(this.group);\r\n }\r\n\r\n }\r\n getValue(v) {\r\n return v.indexOf('????') == 0 ? v.split('|')[1] : v;\r\n }\r\n getNoValueRule(gr) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.getNoValueRule(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel?.indexOf('????') == 0) {\r\n this.items.push(gr);\r\n }\r\n }\r\n\r\n // }\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n textValueChange(e, rule) {\r\n rule.value = e.value;\r\n rule.text = e.value;\r\n\r\n }\r\n selectedItemsChange(e, rule) {\r\n let n = this.getOption('textField', rule);\r\n rule.text = e[0][n];\r\n if (rule && rule.control.options.valueField) {\r\n rule.value = e[0][rule.control.options.valueField];\r\n } else {\r\n rule.value = e[0].value;\r\n }\r\n rule.valueItem[0] = e[0];\r\n\r\n }\r\n valueChange(e, rule) {\r\n rule.value = e.value;\r\n rule.text = e.value;\r\n\r\n }\r\n valueBooleanChange(e, rule) {\r\n rule.text = e.value == undefined ? e[0].value : e.value;\r\n rule.value = e.value == undefined ? e[0].value : e.value;\r\n\r\n }\r\n getOption(name: string, rule) {\r\n return rule.control.options ? rule.control.options[name] : null;\r\n }\r\n getProvideData = (e: AXDataSourceReadParams) => {\r\n if (e.extra && e.extra.control.options && e.extra.control.options.dataSource) {\r\n return e.extra.control.options.dataSource({ ...e, optionsData: { ...e.extra.control.options } });\r\n }\r\n };\r\n\r\n provideDataBoolean = (e) => {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n value: 'true',\r\n text: AXTranslator.get('queryBuilder.true')\r\n },\r\n {\r\n value: 'false',\r\n text: AXTranslator.get('queryBuilder.false')\r\n }\r\n\r\n ])\r\n })\r\n }\r\n\r\n findNullValue(gr) {\r\n for (let i = 0; i < gr.length; i++) {\r\n if (gr[i].value === null || gr[i].value === undefined || gr[i].value === '') {\r\n this.complateValue = false;\r\n }\r\n }\r\n\r\n\r\n // if (gr.condition) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n // this.findNullValue(gr.items[i]);\r\n // }\r\n\r\n // } else {\r\n // if (gr.onDemandLabel?.indexOf('????') == 0 || gr.value === null || gr.value === undefined || gr.value === '') {\r\n // this.complateValue = false;\r\n // }\r\n // }\r\n\r\n }\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n if (e.name === 'confirm') {\r\n this.form.validate().then(c => {\r\n if (c.result === true) {\r\n this.close(this.groupCopy);\r\n }\r\n });\r\n }\r\n if (e.name === 'cancel') {\r\n this.close();\r\n }\r\n\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return [\r\n {\r\n text: AXTranslator.get('common.confirm'),\r\n name: 'confirm',\r\n style: 'ax primary',\r\n icon: 'far fa-check-circle'\r\n },\r\n {\r\n text: AXTranslator.get('common.cancel'),\r\n name: 'cancel',\r\n style: 'ax light',\r\n icon: 'far fa-times-circle'\r\n }\r\n ]\r\n }\r\n}","import { AXQueryBuilderGroup, AXQueryBuilderStringType } from './query-builder.class';\r\nimport { Injectable } from '@angular/core';\r\nimport { AXPopupService } from '../popup/popup.service';\r\nimport { AXQueryBuilderPopupComponent } from './query-builder-popup/query-builder-popup.component';\r\nimport { AXToastService } from '../toast/toast.service';\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXQueryBuilderService {\r\n constructor(private popup: AXPopupService, private toast: AXToastService) {}\r\n canOpen: boolean = false;\r\n canRun: boolean = false;\r\n public runQuery(group: AXQueryBuilderGroup, provideData) {\r\n return new Promise((resolve) => {\r\n this.canOpen = false;\r\n for (let i = 0; i < group.items.length; i++) {\r\n this.getNoValueRule(group.items[i]);\r\n }\r\n if (this.canOpen) {\r\n this.canRun = true;\r\n for (let i = 0; i < group.items.length; i++) {\r\n if (this.canRun == true) {\r\n this.findNullValue(group.items[i]);\r\n }\r\n }\r\n if (this.canRun) {\r\n this.popup.open(AXQueryBuilderPopupComponent, { data: { group: group, provideData: provideData }, title: 'دریافت مقادیر' }).then((c) => {\r\n resolve(c);\r\n });\r\n }\r\n } else {\r\n resolve(group);\r\n }\r\n });\r\n }\r\n\r\n findNullValue(gr) {\r\n if (this.canRun == true) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.findNullValue(gr.items[i]);\r\n }\r\n } else {\r\n if (gr.onDemandLabel == '????|') {\r\n this.canRun = false;\r\n this.toast.error('لطفا نام متغیر های مورد نیاز را کامل کنید');\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getNoValueRule(gr) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.getNoValueRule(gr.items[i]);\r\n }\r\n } else {\r\n if (gr.onDemandLabel?.indexOf('????') == 0) {\r\n this.canOpen = true;\r\n }\r\n }\r\n\r\n // }\r\n }\r\n\r\n async getQueryStringSimple(group: AXQueryBuilderGroup) {\r\n return new Promise<string>(async (resolve, reject) => {\r\n var query: string;\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n var id = 0;\r\n for await (const iterator of group.items) {\r\n const item: any = group.items[id];\r\n if (item.condition) {\r\n await this.getQueryStringSimple(item).then((c) => {\r\n query = query + c;\r\n });\r\n } else {\r\n let codeOperator: string = null;\r\n switch (item.operator) {\r\n case 'equal':\r\n codeOperator = '==';\r\n break;\r\n case 'not-equal':\r\n codeOperator = '!=';\r\n break;\r\n case 'not-null':\r\n codeOperator = '!= null';\r\n break;\r\n case 'null':\r\n codeOperator = '== null';\r\n break;\r\n case 'gt':\r\n codeOperator = '>';\r\n break;\r\n case 'gte':\r\n codeOperator = '>=';\r\n break;\r\n case 'lt':\r\n codeOperator = '<';\r\n break;\r\n case 'lte':\r\n codeOperator = '<=';\r\n break;\r\n case 'contains':\r\n codeOperator = item.operator;\r\n break;\r\n case 'start-with':\r\n codeOperator = item.operator;\r\n break;\r\n case 'end-with':\r\n codeOperator = item.operator;\r\n break;\r\n default:\r\n codeOperator = item.operator;\r\n break;\r\n }\r\n query = query + ' ' + item.caption + ' ' + codeOperator + ' ' + item.text;\r\n }\r\n if (id !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n id += 1;\r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n }\r\n resolve(query);\r\n });\r\n }\r\n\r\n public getQueryString(group: AXQueryBuilderGroup, type: AXQueryBuilderStringType): string {\r\n let query = '';\r\n switch (type) {\r\n case 'simple':\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n for (let i = 0; i < group.items.length; i++) {\r\n const item = group.items[i];\r\n if (item instanceof AXQueryBuilderGroup) {\r\n query = query + item.queryString;\r\n } else {\r\n query = query + ' ' + item.caption + ' ' + item.operator + ' ' + item.value;\r\n }\r\n if (i !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n }\r\n break;\r\n\r\n case 'elastic':\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n for (let i = 0; i < group.items.length; i++) {\r\n const item = group.items[i];\r\n if (item instanceof AXQueryBuilderGroup) {\r\n query = query + item.queryStringElastic;\r\n } else {\r\n query = query + ' ' + item.dataField + ' ' + item.operator + ' ' + item.value;\r\n }\r\n if (i !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n }\r\n\r\n break;\r\n case 'sql':\r\n break;\r\n }\r\n\r\n return query;\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewEncapsulation, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\nimport { AXQueryBuilderRuleComponent } from './query-builder-rule.component';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderGroupEvent, AXQueryBuilderRuleEvent, AXQueryBuilderRule } from './query-builder.class';\r\nimport { AXQueryBuilderService } from './query-builder.service';\r\n@Component({\r\n selector: 'ax-query-group',\r\n templateUrl: 'query-builder-group.component.html',\r\n host: { class: 'ax ax-query-group' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderGroupComponent implements OnInit {\r\n @ViewChild('queryRule') queryRule: AXQueryBuilderRuleComponent;\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n @Input()\r\n group: AXQueryBuilderGroup;\r\n\r\n collapsed: boolean = false;\r\n\r\n @Input()\r\n parent: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n @Input()\r\n mode: 'new' | 'edit' = 'new';\r\n\r\n //ruleIsEditing: boolean = true;\r\n\r\n @Output()\r\n groupRuleChanged: EventEmitter<AXQueryBuilderGroupEvent> = new EventEmitter<AXQueryBuilderGroupEvent>();\r\n\r\n showGroupCondition: boolean = false;\r\n\r\n constructor(private qs: AXQueryBuilderService) {}\r\n\r\n ngOnInit() {}\r\n\r\n ruleDelete(e: AXQueryBuilderRuleEvent) {\r\n this.group.items = this.group.items.filter((c) => c !== e.items);\r\n this.ruleChanged(null);\r\n }\r\n handleRemoveClick() {\r\n this.parent.items = this.parent.items.filter((c) => c !== this.group);\r\n this.groupRuleChanged.emit({ groups: this.group, component: this });\r\n }\r\n saveRule() {\r\n // this.form.validate().then(c => {\r\n // });\r\n // return this.queryRule.saveRule();\r\n }\r\n addRule() {\r\n const item: AXQueryBuilderRule = new AXQueryBuilderRule();\r\n if (this.fields.length > 0) {\r\n // item.caption = this.fields[0].caption;\r\n // item.dataType = this.fields[0].dataType;\r\n // item.dataField = this.fields[0].dataField;\r\n } else {\r\n }\r\n item.operator = 'equal';\r\n\r\n if (item.dataType === 'string') {\r\n item.value = '';\r\n }\r\n if (item.dataType === 'number') {\r\n item.value = 0;\r\n }\r\n\r\n if (this.group.items == undefined) {\r\n this.group.items = [];\r\n }\r\n this.group.items.push(item);\r\n this.ruleChanged(null);\r\n }\r\n addGroup() {\r\n this.showGroupCondition = true;\r\n }\r\n addGroupOR() {\r\n this.makeGroup('OR');\r\n }\r\n addGroupAND() {\r\n this.makeGroup('AND');\r\n }\r\n makeGroup(_condition) {\r\n let r: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n r.condition = _condition;\r\n r.items = [];\r\n r.queryString = '';\r\n if (this.group.items == undefined) {\r\n this.group.items = [];\r\n }\r\n this.group.items.push(r);\r\n this.showGroupCondition = false;\r\n this.ruleChanged(null);\r\n }\r\n changeDetailMode() {\r\n //if (this.parent) {\r\n this.collapsed = !this.collapsed;\r\n // this.ruleIsEditing = false;\r\n //}\r\n }\r\n\r\n handleChangeClick() {\r\n if (this.group.condition == 'OR') {\r\n this.group.condition = 'AND';\r\n } else {\r\n this.group.condition = 'OR';\r\n }\r\n this.ruleChanged(null);\r\n }\r\n\r\n ruleChanged(e) {\r\n ;\r\n // this.group.queryString = this.qs.getQueryString(this.group, 'simple');\r\n this.qs.getQueryStringSimple(this.group).then((c) => {\r\n this.group.queryString = c;\r\n this.group.queryStringElastic = this.qs.getQueryString(this.group, 'elastic');\r\n this.groupRuleChanged.emit({ groups: this.group, component: this });\r\n });\r\n }\r\n}\r\n","import { AXBaseComponent } from '../base/element.class';\r\nimport { Component, Input, Output, EventEmitter, ElementRef, ViewEncapsulation, ViewChild } from '@angular/core';\r\nimport { AXTranslator, AXHtmlUtil } from '@acorex/core';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderGroupEvent, AXQueryBuilderGroupItem } from './query-builder.class';\r\nimport { AXQueryBuilderGroupComponent } from './query-builder-group.component';\r\nimport { AXToastService } from '../toast/toast.service';\r\n\r\n@Component({\r\n selector: 'ax-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderComponent extends AXBaseComponent {\r\n @ViewChild('queryGroup') queryGroup: AXQueryBuilderGroupComponent;\r\n\r\n @Input()\r\n query: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n mode: 'new' | 'edit' = 'new';\r\n\r\n rootGroup: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n\r\n ngOnInit(): void {\r\n this.rootGroup.condition = this.query.condition ? this.query.condition : 'AND';\r\n this.rootGroup.items = this.query.items ? this.query.items : [];\r\n }\r\n\r\n constructor(private ref: ElementRef, private toast: AXToastService) {\r\n super();\r\n }\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n // @Input()\r\n // mode: 'immediate' | 'click' = 'click';\r\n\r\n @Output()\r\n onRuleChanged: EventEmitter<AXQueryBuilderGroupEvent> = new EventEmitter<AXQueryBuilderGroupEvent>();\r\n\r\n saved: boolean = false;\r\n\r\n public getQueryBuilder() {\r\n return { groups: this.rootGroup };\r\n }\r\n\r\n ruleChanged(e) {\r\n this.onRuleChanged.emit({ component: this, groups: this.rootGroup });\r\n }\r\n\r\n public saveRule() {\r\n /// return this.queryGroup.saveRule();\r\n return new Promise((resolve, reject) => {\r\n this.saved = true;\r\n for (let i = 0; i < this.rootGroup.items.length; i++) {\r\n if (this.saved == true) {\r\n this.findNullValue(this.rootGroup.items[i]);\r\n }\r\n }\r\n if (this.saved == true) {\r\n resolve(this.rootGroup);\r\n } else {\r\n reject();\r\n }\r\n });\r\n }\r\n\r\n findNullValue(gr) {\r\n if (this.saved == true) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.findNullValue(gr.items[i]);\r\n }\r\n } else {\r\n if (gr.onDemandLabel == '????|') {\r\n this.saved = false;\r\n this.toast.error('لطفا نام متغیر های مورد نیاز را کامل کنید');\r\n }\r\n }\r\n }\r\n }\r\n\r\n // selectionFieldsChanged(e, rules: AXQueryBuilderRule) {\r\n //\r\n // rules.dataField = e.selectedItems[0].dataField;\r\n // rules.caption = e.selectedItems[0].caption;\r\n // rules.dataType = e.selectedItems[0].dataType;\r\n\r\n // // TO DO chack dataType For Def operator and Value\r\n // if (rules.dataType == 'string') {\r\n // rules.operator = this.operatorStringItem[0].id;\r\n // rules.value = 'null';\r\n // }\r\n // if (rules.dataType == 'number') {\r\n // rules.operator = this.operatorNumberItem[0].id;\r\n // rules.value = '0';\r\n // }\r\n\r\n // this.onRuleChanged.emit({ groups: this.rootGroup, queryString: this.getQueryDisplay(), component: this, htmlElement: this.ref.nativeElement })\r\n // }\r\n\r\n // selectionOparatorChanged(e, rules: AXQueryBuilderRule) {\r\n // rules.operator = e.selectedItems[0].id;\r\n // }\r\n\r\n // provideDataFields = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.fields);\r\n // });\r\n // }\r\n\r\n // provideDataOperatorString = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.operatorStringItem);\r\n // });\r\n // }\r\n // provideDataOperatorNumber = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.operatorNumberItem);\r\n // });\r\n // }\r\n\r\n // private getQueryDisplay(gr = this.list, _condition = this.list[0].condition) {\r\n // var cap: string = '(';\r\n\r\n // for (let j = 0; j < gr.length; j++) {\r\n // if (j > 0) {\r\n // cap = cap + _condition;\r\n // }\r\n // cap = cap + \" ( \";\r\n // for (let i = 0; i < gr[j].items.length; i++) {\r\n // if (gr[j].items[i].value && gr[j].items[i].operator && gr[j].items[i].caption || ((gr[j].items[i].operator == \"is-empty\" || gr[j].items[i].operator == \"is-not-empty\") && gr[j].items[i].caption)) {\r\n // var opr: string;\r\n // if (gr[j].items[i].dataType == \"number\" || gr[j].items[i].dataType == \"date\" || gr[j].items[i].dataType == \"dateTime\") {\r\n // let d = this.operatorNumberItem.filter(c => c.id == gr[j].items[i].operator);\r\n // opr = d[0].text;\r\n // } else {\r\n // let d = this.operatorStringItem.filter(c => c.id == gr[j].items[i].operator);\r\n // opr = d[0].text;\r\n // }\r\n // if ((gr[j].items[i].operator == \"is-empty\" || gr[j].items[i].operator == \"is-not-empty\")) {\r\n\r\n // if (i === gr[j].items.length - 1) {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\";\r\n // } else {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + gr[j].condition;\r\n // }\r\n // } else {\r\n // var val: string;\r\n\r\n // if (gr[j].items[i].dataType == 'date') {\r\n // // val = moment(item.value).locale('fa').format('YYYY/MM/DD');\r\n // } else if (gr[j].items[i].dataType == 'dateTime') {\r\n // // val = moment(item.value).locale('fa').format('HH:mm YYYY/MM/DD');\r\n // } else {\r\n // val = gr[j].items[i].value;\r\n // }\r\n // if (i === gr[j].items.length - 1) {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + val\r\n // } else {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + val + \" \" + gr[j].condition\r\n // }\r\n\r\n // }\r\n // }\r\n // }\r\n\r\n // if (gr[j].groups && gr[j].groups.length > 0) {\r\n // let c = this.getQueryDisplay(gr[j].groups, gr[j].condition);\r\n // if (c != \"( ) \") {\r\n // if (gr[j].items.length > 0 || j > 0) {\r\n // cap = cap + \" \" + gr[j].condition + \" \" + c + \" \";\r\n // } else {\r\n // cap = cap + \" \" + c + \" \";\r\n // }\r\n\r\n // }\r\n // }\r\n\r\n // cap = cap + \" ) \";\r\n // };\r\n\r\n // cap = cap + \" ) \";\r\n // return cap;\r\n // }\r\n\r\n // deleteGroup(groupOut: AXQueryBuilderGroup, groupIn: AXQueryBuilderGroup) {\r\n // groupOut.items = groupOut.items.filter(c => c.id != groupIn.id);\r\n // }\r\n\r\n // deleteRule1(group: AXQueryBuilderGroup, rule: AXQueryBuilderRule) {\r\n // group.items = group.items.filter(c => c.id != rule.id);\r\n // }\r\n\r\n // addRule(group: AXQueryBuilderGroup) {\r\n // const item: AXQueryBuilderRule = new AXQueryBuilderRule();\r\n // group.items.push(item);\r\n // }\r\n\r\n // addGroupAND(group: AXQueryBuilderGroup) {\r\n // this.addGroupOnClick(group);\r\n // group.condition = \"AND\";\r\n // }\r\n // addGroupOR(group: AXQueryBuilderGroup) {\r\n // this.addGroupOnClick(group);\r\n // group.condition = \"OR\";\r\n // }\r\n\r\n // addGroupOnClick(groups: AXQueryBuilderGroup) {\r\n // let r: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n // r.condition = \"\";\r\n // r.items = [];\r\n // if (groups.items == undefined) {\r\n // groups.items = [];\r\n // }\r\n // groups.items.push(r);\r\n // }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSearchBoxComponent } from './searchbox.component';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSearchBoxComponent],\r\n imports: [CommonModule, AXTextBoxModule, AXButtonModule, AXFormGroupModule, AXTranslatorModule, FormsModule],\r\n exports: [AXSearchBoxComponent],\r\n providers: []\r\n})\r\nexport class AXSearchBoxModule { }\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n NgZone,\r\n HostListener\r\n} from '@angular/core';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent, AXBaseValueComponent } from '../base/element.class';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\nimport { AXDataSourceReadParams } from '../data-source/read-param';\r\nimport { AXSearchBoxComponent } from '../searchbox/searchbox.component';\r\nimport { AXConfig, AXObjectUtil, AXTranslator } from '@acorex/core';\r\nimport { AXValueEvent } from '../base/events.class';\r\n\r\n\r\nexport class AXSelectBoxValueChangedEvent extends AXValueEvent<any | any[]> {\r\n value?: any;\r\n oldValue?: any;\r\n isUserInput: boolean = false;\r\n selectedKeys?: any[];\r\n selectedItems?: any[];\r\n}\r\n\r\n@Component({\r\n selector: 'ax-select-box2',\r\n templateUrl: './selectbox2.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBox2Component }]\r\n})\r\nexport class AXSelectBox2Component extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent, AXBaseValueComponent<any>{\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n span: ElementRef<HTMLElement>;\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n textbox: AXTextBoxComponent;\r\n\r\n @ViewChild('listContainer', { static: true })\r\n listContainer: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('searchBox', { static: false })\r\n searchBox: AXSearchBoxComponent;\r\n\r\n @ViewChild('textBoxSelectBox', { static: true })\r\n textBoxSelectBox: AXTextBoxComponent;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n @ViewChild('d', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n\r\n @Input() showDropDownButton: boolean = true;\r\n @Input() readonly: boolean = false;\r\n @Input() rtl: boolean = AXConfig.get('layout.rtl');\r\n @Input() disabled: boolean;\r\n @Input() placeholder: string;\r\n @Input() size: AXElementSize = 'md';\r\n @Input() allowNull: boolean = true;\r\n @Input() textAlign: 'right' | 'left' | null = null;\r\n @Input() bufferSize: number = 10;\r\n @Input() remoteOperation: boolean = false;\r\n @Input() allowSearch: boolean = true;\r\n @Input() textField: string = 'text';\r\n @Input() valueField: string = 'value';\r\n @Input() selectionMode: 'single' | 'multiple' = 'single';\r\n @Input() selectionDataMode: 'value' | 'item' = 'value';\r\n\r\n currentfocusedIndex: number = -1;\r\n showLoading: boolean = false;\r\n skip: number = -1;\r\n searchText: string = '';\r\n text: string = '';\r\n totalCount: number = 0;\r\n itemsFiltered: any[] = [];\r\n\r\n private isUserInput: boolean = false;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n private _validation: AXValidation;\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {\r\n super();\r\n }\r\n\r\n\r\n private _value: any | any[];\r\n @Input()\r\n public get value(): any | any[] {\r\n return this._value;\r\n }\r\n public set value(v: any | any[]) {\r\n if (v !== this._value) {\r\n const oldValue = AXObjectUtil.deepJSONClone(this._value);\r\n if (this.selectionMode === 'multiple') {\r\n this._value = Array.isArray(v) ? v : (v ? [v] : []);\r\n } else {\r\n this._value = Array.isArray(v) ? v[0] : v;\r\n }\r\n this.valueChange.emit(this._value);\r\n this.onValueChanged.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n isUserInput: this.isUserInput,\r\n oldValue,\r\n value: this._value,\r\n selectedKeys: this.selectedItems.map(c => c[this.valueField]),\r\n selectedItems: this.selectedItems.slice()\r\n });\r\n this.isUserInput = false;\r\n this.renderSelection();\r\n }\r\n }\r\n\r\n\r\n private _selectedItems: any[];\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n\r\n private _items: any[] = [];\r\n @Input()\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n public set items(v: any[]) {\r\n this._items = v;\r\n if (this.itemsChange) {\r\n this.itemsChange.emit(v);\r\n }\r\n this.renderSelection();\r\n }\r\n\r\n @Output()\r\n itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Output()\r\n onBlur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n public valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n public onValueChanged: EventEmitter<AXSelectBoxValueChangedEvent> = new EventEmitter<AXSelectBoxValueChangedEvent>();\r\n\r\n\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n scrolled(e) {\r\n if (this.remoteOperation && this.totalCount > this.items.length && this.listContainer.nativeElement.scrollHeight != 0\r\n && this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50) {\r\n this.showLoading = true;\r\n\r\n if (this.skip !== this.items.length) {\r\n this.skip = this.items.length;\r\n\r\n const params: AXDataSourceReadParams = {};\r\n params.skip = this.items.length;\r\n params.take = this.bufferSize * (Math.floor(this.items.length / this.bufferSize) + 1);\r\n if (this.textbox) {\r\n params.searchText = this.text;\r\n } else {\r\n params.searchText = null;\r\n }\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n\r\n textChanged(e) {\r\n this.currentfocusedIndex = -1;\r\n if (this.remoteOperation) {\r\n this.searchText = this.text;\r\n this.items = [];\r\n const params: AXDataSourceReadParams = {};\r\n params.searchText = this.text;\r\n params.skip = 0;\r\n params.take = this.bufferSize;\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n private renderSelection() {\r\n const func = () => {\r\n if (!this.value) {\r\n return [];\r\n }\r\n if ((this.items?.length > 0) && this.selectionDataMode == 'value') {\r\n const orgRes = this.items.filter(i => {\r\n if (Array.isArray(this.value)) {\r\n return this.value.some(ii => {\r\n if (typeof ii === 'object') {\r\n return i[this.valueField] === ii[this.valueField];\r\n }\r\n else {\r\n return i[this.valueField] === ii;\r\n }\r\n });\r\n }\r\n else {\r\n if (typeof this.value === 'object') {\r\n return i[this.valueField] === this.value[this.valueField];\r\n }\r\n else {\r\n return i[this.valueField] === this.value;\r\n }\r\n }\r\n });\r\n if (orgRes.length > 0) {\r\n return orgRes;\r\n }\r\n }\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(ii => {\r\n if (typeof ii === 'object' && ii[this.textField]) {\r\n return ii;\r\n }\r\n else {\r\n const fake: any = {};\r\n fake[this.valueField] = this.value;\r\n fake[this.textField] = AXTranslator.get('common.loading');\r\n return fake;\r\n }\r\n });\r\n }\r\n else {\r\n if (typeof this.value === 'object' && this.value[this.textField]) {\r\n return [this.value];\r\n }\r\n else {\r\n const fake: any = {};\r\n fake[this.valueField] = this.value;\r\n fake[this.textField] = AXTranslator.get('common.loading');\r\n return [fake];\r\n }\r\n }\r\n };\r\n this._selectedItems = func();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.bufferSize < 10) {\r\n this.bufferSize = 10;\r\n }\r\n if (!this.remoteOperation) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n dropdownToggle(e) {\r\n if (this.dropdown.isOpen) {\r\n this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n this.focusOnSearchBox();\r\n this.focusOnCurrentFocusedIndex();\r\n }\r\n else {\r\n this.focus();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n if (this.dataSource) {\r\n if (this.allowSearch === false) {\r\n this.fetch();\r\n }\r\n this.dataSource.onDataReceived.subscribe((c) => {\r\n this.showLoading = false;\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private dataReceived(data: any) {\r\n if (this.remoteOperation) {\r\n if (this.searchText && this.searchText != null && this.searchText !== '') {\r\n if (data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.totalCount;\r\n } else {\r\n this.items = data.items;\r\n this.totalCount = data.items == undefined ? 0 : data.items.length;\r\n }\r\n\r\n }\r\n else if (data.items && data.items.length === data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.items.length;\r\n }\r\n else if (data.totalCount) {\r\n data.items.forEach(elm => {\r\n this.items.push(elm);\r\n });\r\n this.totalCount = data.totalCount;\r\n } else {\r\n data.forEach(elm => {\r\n this.items.push(elm);\r\n });\r\n this.totalCount = data.length;\r\n }\r\n } else {\r\n this.items = data;\r\n }\r\n this.renderSelection();\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n if (this.dataSource) {\r\n this.showLoading = true;\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n const params: AXDataSourceReadParams = {};\r\n if (this.remoteOperation) {\r\n params.skip = 0;\r\n this.skip = 0;\r\n params.take = this.bufferSize;\r\n }\r\n if (this.dataSource !== undefined) {\r\n this.items = [];\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n handleItemRemoveClick(item) {\r\n this.text = '';\r\n this.isUserInput = true;\r\n if (Array.isArray(this.value)) {\r\n this.value = this.value.filter(c => (typeof c === 'object') ? c[this.valueField] !== item[this.valueField] : c !== item[this.valueField]);\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n\r\n\r\n onTextBoxClick(e) {\r\n if (this.disabled === false && this.readonly === false) {\r\n this.open();\r\n }\r\n }\r\n\r\n handleItemClick(e: MouseEvent, item: any) {\r\n this.isUserInput = true;\r\n if (this.selectionMode === 'single') {\r\n this.selectItems(item);\r\n this.close();\r\n }\r\n else {\r\n if (Array.isArray(this.value) && this.value.length > 0) {\r\n if (this.value.some(c => this.internalGetItemValue(c) === this.internalGetItemValue(item))) {\r\n this.unselectItems(item);\r\n }\r\n else {\r\n this.selectItems(item);\r\n }\r\n }\r\n else {\r\n this.selectItems(item);\r\n }\r\n }\r\n this.cdr.markForCheck();\r\n this.focusOnSearchBox();\r\n }\r\n\r\n private internalGetItemByDataMode(item: any) {\r\n return this.selectionDataMode === 'item' ? item : item[this.valueField];\r\n }\r\n\r\n private internalGetItemValue(item: any) {\r\n return typeof item === 'object' ? item[this.valueField] : item;\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyDown(e: KeyboardEvent) {\r\n if (e.key === 'Escape' || this.disabled || this.readonly) {\r\n this.close();\r\n e.preventDefault();\r\n return;\r\n }\r\n const isLetter = new RegExp(/[a-zA-Z0-9\\-]/).test(String.fromCharCode(e.keyCode));\r\n if (this.textbox.isFocused()) {\r\n if (e.key === 'Backspace' && e.type === 'keydown' &&\r\n ((this.allowNull === true && this.selectedItems.length > 0) ||\r\n (this.allowNull === false && this.selectedItems.length > 1))) {\r\n this.isUserInput = true;\r\n this.unselectItems(this.selectedItems.pop());\r\n e.preventDefault();\r\n return;\r\n }\r\n else if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && !this.dropdown.isOpen && e.type === 'keydown') {\r\n if (this.selectionMode === 'single') {\r\n this.isUserInput = true;\r\n this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));\r\n if (e.ctrlKey) {\r\n this.open();\r\n }\r\n }\r\n else {\r\n this.open();\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n else if (isLetter) {\r\n this.text = e.key;\r\n this.open();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n if (this.dropdown.isOpen) {\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0) {\r\n this.isUserInput = true;\r\n this.selectItemByNav((e.key === 'ArrowDown' ? 1 : -1));\r\n e.preventDefault();\r\n return;\r\n }\r\n if ((e.key === 'Enter' || e.code === 'Space')) {\r\n const focusedItem = this.getItems()[this.currentfocusedIndex];\r\n if (focusedItem) {\r\n\r\n if (this.selectionMode === 'single') {\r\n this.isUserInput = true;\r\n this.selectItems(focusedItem);\r\n this.close();\r\n }\r\n else {\r\n this.isUserInput = true;\r\n this.toggleSelect(focusedItem);\r\n }\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n unselectItems(...items: any[]) {\r\n if (!items || items.length === 0) {\r\n this.value = null;\r\n }\r\n else if (Array.isArray(this.value)) {\r\n this.value = this.value.filter(c => !items.some(d =>\r\n this.internalGetItemValue(c) === this.internalGetItemValue(d))\r\n );\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n selectItems(...items: any[]) {\r\n if (items && items.length) {\r\n if (this.selectionMode === 'single') {\r\n this.value = this.internalGetItemByDataMode(items[0]);\r\n }\r\n else {\r\n this.value = (this.value || []).concat(items.map(c => this.internalGetItemByDataMode(c)));\r\n }\r\n }\r\n }\r\n\r\n\r\n toggleSelect(...items: any[]) {\r\n if (items && items.length) {\r\n items.forEach(item => {\r\n this.selectedItems.includes(item) ? this.unselectItems(item) : this.selectItems(item);\r\n });\r\n }\r\n }\r\n\r\n\r\n close() {\r\n this.dropdown.close();\r\n }\r\n\r\n open() {\r\n this.dropdown.open();\r\n }\r\n\r\n focus(): void {\r\n this.text = null;\r\n this.textbox.focus();\r\n }\r\n\r\n private focusOnSearchBox() {\r\n const inputedVal = this.text;\r\n if (this.allowSearch === true) {\r\n setTimeout(() => {\r\n if (this.searchBox) {\r\n this.searchBox.value = inputedVal;\r\n this.searchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n else {\r\n this.textbox.focus();\r\n }\r\n }\r\n\r\n getItems(): any[] {\r\n if (this.items == null) {\r\n return [];\r\n }\r\n return (!this.remoteOperation && this.text && this.text !== '') ? this.items.filter((c) =>\r\n (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase())) : this.items;\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems.some(c => c[this.valueField] === item[this.valueField]);\r\n }\r\n\r\n private selectItemByNav(sign: -1 | 1 | null = null): void {\r\n if (sign == null) {\r\n this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n else {\r\n sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;\r\n }\r\n if (this.currentfocusedIndex < 0) {\r\n this.currentfocusedIndex = 0;\r\n }\r\n if (this.currentfocusedIndex > this.getItems().length - 1) {\r\n this.currentfocusedIndex = this.getItems().length - 1;\r\n }\r\n\r\n // set scroll\r\n this.focusOnCurrentFocusedIndex();\r\n }\r\n\r\n private focusOnCurrentFocusedIndex() {\r\n if (this.listContainer) {\r\n this.zone.runOutsideAngular(() => {\r\n const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);\r\n if (itemDiv) {\r\n itemDiv.scrollIntoView({ behavior: 'auto' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n selectedItemByIndex(index: number) {\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n if (index > this.getItems().length - 1) {\r\n index = this.getItems().length - 1;\r\n }\r\n this.selectItems(this.getItems()[index]);\r\n this.currentfocusedIndex = index;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSelectBoxComponent } from './selectbox.component';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXTranslatorModule, AXScrollModule } from '@acorex/core';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\nimport { AXSearchBoxModule } from '../searchbox/searchbox.module';\r\nimport { AXSelectBox2Component } from './selectbox2.component';\r\n\r\n\r\nconst COMPONENT = [AXSelectBoxComponent, AXSelectBox2Component];\r\nconst MODULES = [\r\n CommonModule,\r\n AXDropdownModule,\r\n AXTextBoxModule,\r\n AXTranslatorModule,\r\n AXScrollModule,\r\n AXCheckBoxModule,\r\n AXLoadingModule,\r\n AXSearchBoxModule\r\n];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXSelectBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { AXQueryBuilderComponent } from './query-builder.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPanelBoxModule } from '../panel-box/panel-box.module';\r\nimport { AXSelectBoxModule } from '../selectbox/selectbox.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXQueryBuilderRuleComponent } from './query-builder-rule.component';\r\nimport { AXQueryBuilderGroupComponent } from './query-builder-group.component';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXNumberBoxModule } from '../number-box/number-box.module';\r\nimport { AXDataSourceModule } from '../data-source/datasource.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXQueryBuilderPopupComponent } from './query-builder-popup/query-builder-popup.component';\r\nimport { AXLabelModule } from '../label/label.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\nimport { AXQueryBuilderService } from './query-builder.service';\r\n\r\nconst MODUELS = [\r\n CommonModule,\r\n AXButtonModule,\r\n AXPanelBoxModule,\r\n AXSelectBoxModule,\r\n AXDataSourceModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXFormGroupModule,\r\n AXTranslatorModule,\r\n AXLabelModule,\r\n AXCheckBoxModule,\r\n AXValidationModule\r\n]\r\n\r\n@NgModule({\r\n declarations: [AXQueryBuilderComponent, AXQueryBuilderGroupComponent, AXQueryBuilderRuleComponent, AXQueryBuilderPopupComponent],\r\n imports: [MODUELS],\r\n exports: [AXQueryBuilderComponent],\r\n providers: [AXQueryBuilderService],\r\n entryComponents: [AXQueryBuilderPopupComponent]\r\n})\r\n\r\nexport class AXQueryBuilderModule { }","import { Component, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, Output, Input, EventEmitter } from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\nimport { AXValueEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-switch',\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AXSwitchComponent extends AXBaseComponent implements AXBaseSizableComponent, AXBaseValueComponent<boolean> {\r\n\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n private _value: boolean;\r\n @Input()\r\n public get value(): boolean {\r\n return this._value;\r\n }\r\n public set value(v: boolean) {\r\n if (this._value !== v) {\r\n const oldValue = this._value;\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n oldValue,\r\n value: v\r\n });\r\n }\r\n }\r\n\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n focus(): void { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXSwitchComponent } from './switch.component';\r\n\r\n@NgModule({\r\n declarations: [AXSwitchComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [AXSwitchComponent],\r\n entryComponents: [AXSwitchComponent],\r\n providers: [],\r\n})\r\nexport class AXSwitchModule {\r\n\r\n}","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AXHtmlUtil } from '@acorex/core';\r\nimport { AXPageClosing, AXPageResult, TAB_META_KEY, AXPageClosedPromise } from '../base/base-page.class';\r\n\r\nexport interface AXTabPage {\r\n title: string;\r\n content: any;\r\n closable?: boolean;\r\n data?: any;\r\n pinned?: boolean;\r\n}\r\n\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXTabPageService {\r\n\r\n\r\n\r\n tabs: AXTabPage[] = new Array<AXTabPage>();\r\n opened = new Subject<AXTabPage>();\r\n activated = new Subject<AXTabPage>();\r\n closed = new Subject<AXTabPage>();\r\n changed = new Subject();\r\n\r\n\r\n\r\n constructor() { }\r\n\r\n open(content: any, title: string): AXPageClosedPromise;\r\n open(content: any, title: string, data?: any): AXPageClosedPromise;\r\n open(options: AXTabPage): AXPageClosedPromise;\r\n\r\n open(arg1, arg2?, arg3?) {\r\n let newTab: AXTabPage;\r\n if (typeof arg1 === 'object') {\r\n const options = Object.assign({ closable: true }, arg1);\r\n newTab = {\r\n title: options.title,\r\n closable: options.closable,\r\n content: options.content,\r\n data: options.data,\r\n pinned: options.pinned\r\n };\r\n } else {\r\n newTab = {\r\n title: arg2,\r\n closable: true,\r\n content: arg1,\r\n data: arg3,\r\n };\r\n }\r\n newTab[TAB_META_KEY] = {};\r\n newTab[TAB_META_KEY].uid = AXHtmlUtil.getUID();\r\n //\r\n const existTab = this.tabs.find((c) => newTab[TAB_META_KEY].uid && c[TAB_META_KEY].uid === newTab[TAB_META_KEY].uid) ||\r\n this.findExistTab(newTab.content, newTab.data);\r\n //\r\n if (existTab) {\r\n return Promise.resolve(this.active(existTab));\r\n }\r\n this.tabs.push(newTab);\r\n this.tabs\r\n .filter((c) => c[TAB_META_KEY].uid !== newTab[TAB_META_KEY].uid)\r\n .forEach((t) => {\r\n t[TAB_META_KEY].active = false;\r\n });\r\n this.opened.next(newTab);\r\n this.active(newTab);\r\n const promise = new AXPageClosedPromise((resolve) => {\r\n newTab[TAB_META_KEY].close = (e) => {\r\n if (resolve) {\r\n delete e.cancel;\r\n resolve(e);\r\n }\r\n };\r\n });\r\n promise['closeMethod'] = () => { this.close(newTab); };\r\n return promise;\r\n }\r\n\r\n close(tab: AXTabPage) {\r\n const e = { cancel: false };\r\n const closingFunc = tab[TAB_META_KEY].component?.onClosing;\r\n if (closingFunc) {\r\n const res = closingFunc(e);\r\n if (res instanceof Promise) {\r\n res.then(() => {\r\n if (e == null || e.cancel !== true) {\r\n this.doCloseAction(tab, e);\r\n }\r\n });\r\n }\r\n else {\r\n if (e == null || e.cancel !== true) {\r\n this.doCloseAction(tab, e);\r\n }\r\n }\r\n } else {\r\n this.doCloseAction(tab, e);\r\n }\r\n }\r\n\r\n private doCloseAction(tab: AXTabPage, e: AXPageClosing): void {\r\n const currentTab = this.tabs.find((c) => c[TAB_META_KEY].uid == tab[TAB_META_KEY].uid);\r\n if (!currentTab) {\r\n return;\r\n }\r\n const index = this.tabs.indexOf(currentTab);\r\n this.tabs = this.tabs.filter(c => c != currentTab);\r\n const prev = index > 0 ? this.tabs[index - 1] : this.tabs[0];\r\n if (prev) {\r\n this.active(prev);\r\n }\r\n this.closed.next(currentTab);\r\n this.changed.next();\r\n if (currentTab[TAB_META_KEY].close) {\r\n currentTab[TAB_META_KEY].close(e);\r\n }\r\n }\r\n\r\n active(tab: AXTabPage): AXPageResult;\r\n active(uid: string): AXPageResult;\r\n active(): AXPageResult;\r\n active(arg1?): AXPageResult {\r\n if (!arg1) {\r\n return {\r\n sender: this.tabs.find((c) => c[TAB_META_KEY].active === true)\r\n }\r\n }\r\n if (typeof arg1 === 'object') {\r\n const tab = <AXTabPage>arg1;\r\n tab[TAB_META_KEY].active = true;\r\n this.tabs\r\n .filter((c) => c[TAB_META_KEY].uid !== tab[TAB_META_KEY].uid)\r\n .forEach((t) => {\r\n t[TAB_META_KEY].active = false;\r\n });\r\n this.activated.next(tab);\r\n this.changed.next();\r\n return {\r\n sender: tab\r\n }\r\n } else if (typeof arg1 === 'string') {\r\n const tab = this.tabs.find((c) => c[TAB_META_KEY].uid === arg1);\r\n if (tab) {\r\n return this.active(tab);\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.tabs.forEach((c) => {\r\n this.close(c);\r\n });\r\n this.tabs = [];\r\n }\r\n\r\n private findExistTab(component: any, data: any): AXTabPage {\r\n try {\r\n if (!data) {\r\n data = {};\r\n }\r\n const result = this.tabs.find((c: any) =>\r\n c.content === component &&\r\n ((!c.data) ||\r\n JSON.stringify(data) === JSON.stringify(c.data))\r\n );\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ViewContainerRef, ComponentFactoryResolver, ElementRef, ComponentRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXTabPage, AXTabPageService } from './tab-page.service';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXBasePageComponent, AXPageCloseEvent, TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\n\r\n@Component({\r\n selector: 'ax-tab-page-host',\r\n template: `\r\n <div class='ax-loading-host'>\r\n <div class='ax-tab-page-host' >\r\n <div [hidden]=\"isLoading\" style=\"height:100%\" class='ax-tab-page-host-container'>\r\n <ng-template #container></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n `\r\n})\r\n\r\nexport class AXTabPageHostComponent implements OnInit {\r\n\r\n tab: AXTabPage;\r\n component: AXBasePageComponent;\r\n private componentRef: ComponentRef<any>;\r\n isLoading: boolean;\r\n _loadingId: number;\r\n\r\n @ViewChild('container', { read: ViewContainerRef, static: true })\r\n private container: ViewContainerRef;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private rendererService: AXRenderService,\r\n private tabService: AXTabPageService,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n }\r\n\r\n async ngAfterViewInit() {\r\n this._loadingId = this.loadingService.show(this.ref.nativeElement.querySelector('.ax-tab-page-host-container'));\r\n //\r\n let data: any = {};\r\n //\r\n let component: any;\r\n if (typeof this.tab.content === 'string') {\r\n const route = await this.rendererService.findLoadedComponentByRoute(this.tab.content, 20);\r\n component = route?.component;\r\n data = Object.assign(data, route.data);\r\n }\r\n else if (typeof this.tab.content === 'function') {\r\n component = this.tab.content;\r\n }\r\n if (component == null) {\r\n // TODO: 404 page component\r\n this.isLoading = false;\r\n console.error(`Invalid page Component! ${this.tab.content}`);\r\n return;\r\n }\r\n //\r\n data = Object.assign(data, this.tab.data);\r\n //\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n this.componentRef = this.container.createComponent(factory);\r\n if (!this.componentRef.instance.onClosed) {\r\n throw Error('The Component must be inherited from AXBasePageComponent!');\r\n }\r\n this.componentRef.instance.onClosed.subscribe((e: AXPageCloseEvent) => {\r\n this.tabService.close(this.tab);\r\n });\r\n //\r\n const com = this.componentRef.instance as any;\r\n //\r\n Object.assign(com, data);\r\n //\r\n this.tab[TAB_META_KEY].component = com;\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n } catch (error) {\r\n // TODO: 404 page component\r\n console.error(error);\r\n } finally {\r\n //this.isLoading = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.hostView.destroy();\r\n this.componentRef.destroy();\r\n this.container.clear();\r\n }\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n}","import { Component, ViewChild, ViewContainerRef, ComponentFactoryResolver, ComponentRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXTabPageService } from './tab-page.service';\r\nimport { TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXTabPageHostComponent } from './tab-page-host.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ax-tab-page-renderer',\r\n template: `<template #container></template>`,\r\n host: { 'class': 'ax tab-page-renderer' }\r\n})\r\nexport class AXTabPageRendererComponent {\r\n\r\n childs: ComponentRef<AXTabPageHostComponent>[] = [];\r\n\r\n @ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private tabService: AXTabPageService,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.subscriptions.push(tabService.activated.subscribe(tab => {\r\n this.childs.forEach((v: ComponentRef<AXTabPageHostComponent>) => {\r\n v.changeDetectorRef.detach();\r\n v.location.nativeElement.hidden = true;\r\n });\r\n const v = this.childs.find(t => (t as any).uid === tab[TAB_META_KEY].uid) as ComponentRef<AXTabPageHostComponent>;\r\n if (v) {\r\n v.location.nativeElement.hidden = false;\r\n v.changeDetectorRef.reattach();\r\n }\r\n else {\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(AXTabPageHostComponent);\r\n const componentRef = this.container.createComponent(factory);\r\n (componentRef as any).uid = tab[TAB_META_KEY].uid;\r\n const host = componentRef.instance as AXTabPageHostComponent;\r\n host.tab = tab;\r\n this.childs.push(componentRef);\r\n setTimeout(() => {\r\n componentRef.changeDetectorRef.detectChanges();\r\n }, 10);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(tabService.closed.subscribe(tab => {\r\n const hostref = this.childs.find(c => (c as any).uid === tab[TAB_META_KEY].uid);\r\n if (hostref) {\r\n hostref.destroy();\r\n }\r\n this.childs = this.childs.filter(c => (c as any).uid !== tab[TAB_META_KEY].uid);\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabService.clear();\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabPageRendererComponent } from './tab-page-Renderer.component';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\nimport { AXTabPageHostComponent } from './tab-page-host.component';\r\n\r\n@NgModule({\r\n declarations: [AXTabPageRendererComponent, AXTabPageHostComponent],\r\n imports: [CommonModule, AXLoadingModule],\r\n exports: [AXTabPageRendererComponent],\r\n entryComponents: [AXTabPageRendererComponent, AXTabPageHostComponent],\r\n providers: [],\r\n})\r\nexport class AXTabPageModule { }","import { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n\r\nexport declare class AXTabStripItem {\r\n id: string;\r\n name?: string;\r\n text?: string;\r\n tooltip?: string;\r\n icon?: string;\r\n visible?: boolean;\r\n disable?: boolean;\r\n data?: any;\r\n style?: string;\r\n active?: boolean;\r\n}\r\n\r\nexport class AXTabStripChangedEvent extends AXBaseEvent {\r\n seledtedTab: AXTabStripItem;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tab-strip',\r\n templateUrl: './tab-strip.component.html'\r\n})\r\nexport class AXTabStripComponent implements OnInit {\r\n constructor(private ref: ElementRef) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n @Input()\r\n items: AXTabStripItem[] = [];\r\n\r\n @Output()\r\n onTabChanged: EventEmitter<AXTabStripChangedEvent> = new EventEmitter<AXTabStripChangedEvent>();\r\n\r\n handleClick(i: AXTabStripItem) {\r\n if (!i.disable) {\r\n this.items.forEach((c) => (c.active = false));\r\n i.active = true;\r\n this.onTabChanged.emit({\r\n component: this,\r\n seledtedTab: i,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabStripComponent } from './tab-strip.component';\r\n\r\n@NgModule({\r\n declarations: [AXTabStripComponent],\r\n imports: [CommonModule],\r\n exports: [AXTabStripComponent],\r\n providers: []\r\n})\r\nexport class AXTabStripModule {}\r\n","/**\r\n * This directive is used as an anchor to get access\r\n * to the ViewContainerRef which here is exposed via\r\n * the public member `viewContainer`\r\n *\r\n * Theres an ALTERNATIVE to explicitly using the anchor directive.\r\n * Read in the blog post\r\n */\r\n\r\nimport { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[dynamic-tabs]'\r\n})\r\nexport class DynamicTabsDirective {\r\n constructor(public viewContainer: ViewContainerRef) {}\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\n@Component({\r\n selector: 'ax-tab',\r\n templateUrl: './tab.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTabComponent {\r\n @Input() caption: string;\r\n @Input() name: string;\r\n @Input() active = false;\r\n @Input() isCloseable = false;\r\n @Input() template: any;\r\n @Input() dataContext: any;\r\n @Input() icon: string;\r\n}\r\n","/**\r\n * The main component that renders single TabComponent\r\n * instances.\r\n */\r\n\r\nimport {\r\n Component,\r\n ContentChildren,\r\n QueryList,\r\n AfterContentInit,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n ViewEncapsulation,\r\n Attribute,\r\n Output,\r\n EventEmitter,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\nimport { AXTabComponent } from './tab.component';\r\nimport { DynamicTabsDirective } from './dynamic-tabs.directive';\r\nimport { AXDataEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-tab-view',\r\n templateUrl: './tab-view.component.html',\r\n styleUrls: ['./tab-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTabViewComponent implements AfterContentInit {\r\n dynamicTabs: AXTabComponent[] = [];\r\n\r\n @ContentChildren(AXTabComponent) tabs: QueryList<AXTabComponent>;\r\n\r\n @ViewChild(DynamicTabsDirective) dynamicTabPlaceholder: DynamicTabsDirective;\r\n\r\n @Output()\r\n onActiveTab: EventEmitter<AXDataEvent<any>> = new EventEmitter<AXDataEvent<any>>();\r\n /*\r\n Alternative approach of using an anchor directive\r\n would be to simply get hold of a template variable\r\n as follows\r\n */\r\n // @ViewChild('container', {read: ViewContainerRef}) dynamicTabPlaceholder;\r\n\r\n constructor(\r\n private ref: ElementRef,\r\n private _componentFactoryResolver: ComponentFactoryResolver,\r\n @Attribute('fullWidth') public fullWidth: boolean = false\r\n ) {}\r\n\r\n // contentChildren are set\r\n ngAfterContentInit() {\r\n // get all active tabs\r\n const activeTabs = this.tabs.filter((tab) => tab.active);\r\n\r\n // if there is no active tab set, activate the first\r\n if (activeTabs.length === 0 && this.tabs.first) {\r\n this.selectTab(this.tabs.first);\r\n }\r\n }\r\n\r\n openTab(title: string, template, isCloseable = false, icon = null, data = null) {\r\n // get a component factory for our AXTabComponent\r\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(AXTabComponent);\r\n\r\n // fetch the view container reference from our anchor directive\r\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\r\n\r\n // alternatively...\r\n // let viewContainerRef = this.dynamicTabPlaceholder;\r\n\r\n // create a component instance\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n // set the according properties on our component instance\r\n const instance: AXTabComponent = componentRef.instance as AXTabComponent;\r\n instance.caption = title;\r\n instance.template = template;\r\n instance.dataContext = data;\r\n instance.isCloseable = isCloseable;\r\n instance.icon = icon;\r\n\r\n // remember the dynamic component for rendering the\r\n // tab navigation headers\r\n this.dynamicTabs.push(componentRef.instance as AXTabComponent);\r\n\r\n //componentRef.changeDetectorRef.detectChanges();\r\n\r\n // set it active\r\n this.selectTab(this.dynamicTabs[this.dynamicTabs.length - 1]);\r\n }\r\n\r\n selectTab(tab: AXTabComponent) {\r\n // deactivate all tabs\r\n this.tabs.toArray().forEach((tab) => (tab.active = false));\r\n this.dynamicTabs.forEach((tab) => (tab.active = false));\r\n\r\n // activate the tab the user has clicked on.\r\n tab.active = true;\r\n this.onActiveTab.emit({ component: this, data: tab, htmlElement: this.ref.nativeElement });\r\n }\r\n\r\n closeTab(tab: AXTabComponent) {\r\n for (let i = 0; i < this.dynamicTabs.length; i++) {\r\n if (this.dynamicTabs[i] === tab) {\r\n // remove the tab from our array\r\n this.dynamicTabs.splice(i, 1);\r\n\r\n // destroy our dynamically created component again\r\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\r\n // let viewContainerRef = this.dynamicTabPlaceholder;\r\n viewContainerRef.remove(i);\r\n\r\n // set tab index to 1st one\r\n this.selectTab(this.tabs.first);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n closeActiveTab() {\r\n const activeTabs = this.dynamicTabs.filter((tab) => tab.active);\r\n if (activeTabs.length > 0) {\r\n // close the 1st active tab (should only be one at a time)\r\n this.closeTab(activeTabs[0]);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabComponent } from './tab.component';\r\nimport { AXTabViewComponent } from './tab-view.component';\r\nimport { DynamicTabsDirective } from './dynamic-tabs.directive';\r\n@NgModule({\r\n declarations: [AXTabComponent, AXTabViewComponent, DynamicTabsDirective],\r\n imports: [CommonModule],\r\n exports: [AXTabComponent, AXTabViewComponent, DynamicTabsDirective],\r\n providers: []\r\n})\r\nexport class AXTabViewModule {}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-text-area',\r\n templateUrl: './textarea.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTextAreaComponent }]\r\n})\r\nexport class AXTextAreaComponent extends AXBaseTextComponent {\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n @Input()\r\n rows: number = 0;\r\n @Input()\r\n cols: number = 0;\r\n\r\n @Input()\r\n maxLength: number = null;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextAreaComponent } from './textarea.component';\r\n\r\nconst COMPONENT = [AXTextAreaComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXTextAreaModule { }","import {\r\n Component,\r\n OnInit,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n Input,\r\n ViewChild,\r\n ChangeDetectionStrategy,\r\n EventEmitter,\r\n Output,\r\n ContentChild\r\n\r\n} from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\nimport { _ } from 'ag-grid-community';\r\nimport { AXValueEvent } from '../base/events.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\nexport class AXTimePickerItemChangedEvent {\r\n minute?: number;\r\n second?: number;\r\n hour?: number;\r\n time: string;\r\n\r\n}\r\nexport class AXTimePickerChangedEvent extends AXValueEvent<AXTimePickerItemChangedEvent> { }\r\n\r\n@Component({\r\n selector: 'ax-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style:'width: 100%' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTimePickerComponent }]\r\n})\r\nexport class AXTimePickerComponent extends AXBaseTextComponent implements OnInit {\r\n @Output()\r\n onValueChanged: EventEmitter<AXTimePickerChangedEvent> = new EventEmitter<AXTimePickerChangedEvent>();\r\n\r\n // @ViewChild('input', { static: true })\r\n // @ContentChild('input', { static: true })\r\n // input: ElementRef<HTMLInputElement>;\r\n\r\n @Input()\r\n timeType: any;\r\n\r\n type: string = 'HHmm';\r\n @Input()\r\n showCurentTime: boolean = false;\r\n\r\n clearDisabled: boolean = true;\r\n HHmmss: any = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n HHmm: any = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n HH: any = [/[0-2]/, /[0-9]/];\r\n hhmmss: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n hhmm: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n hh: any = [/[0-1]/, /[0-9]/];\r\n // TODO: apply am pm from locale\r\n hhmmssam: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n hhmmam: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n hham: any = [/[0-1]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n textValue: string = '';\r\n\r\n valueHam: string = '-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n valueMam: string = '--:-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n valueSam: string = '--:--:-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n\r\n\r\n private _values: string;\r\n public get value(): string {\r\n return this._values;\r\n }\r\n public set value(v: string) {\r\n if (v === '' || v == null || v === '--:--:--' || v === '--:--' || v === '--' || v === this.valueSam || v === this.valueMam || v === this.valueHam) {\r\n this.clearDisabled = false;\r\n\r\n const old = this._values;\r\n switch (this.type) {\r\n case 'HHmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'HH':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'hh':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmssam':\r\n this.textValue = this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.textValue = this.valueMam;\r\n break;\r\n case 'hham':\r\n this.textValue = this.valueHam;\r\n break;\r\n }\r\n\r\n this._values = null;\r\n if (v !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: { hour: null, minute: null, second: null, time: null },\r\n oldValue: { time: old },\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n } else {\r\n this.clearDisabled = true;\r\n if (this._values && v) {\r\n const old = this._values;\r\n const ind1 = v.charAt(0);\r\n const ind2 = v.charAt(1);\r\n const ind3 = v.charAt(2);\r\n const ind4 = v.charAt(3);\r\n const ind5 = v.charAt(4);\r\n const ind6 = v.charAt(5);\r\n const ind7 = v.charAt(6);\r\n const ind8 = v.charAt(7);\r\n const ind9 = v.charAt(8);\r\n const ind10 = v.charAt(9);\r\n\r\n const indOld4 = old.charAt(9);\r\n const indOld7 = old.charAt(9);\r\n const indOld10 = old.charAt(9);\r\n\r\n // handle hhmmssAm\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n if (ind7 === '-' && ind8 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + '0' + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 8);\r\n this.cursorPosition = 8;\r\n }, 0);\r\n }\r\n if (indOld10 === '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n if (indOld7 === '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hham) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (indOld4 === '-' && this.timeType.mask === this.hham) {\r\n this.textValue = ind1 + ind2 + ind3 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 6);\r\n this.cursorPosition = 6;\r\n }, 0);\r\n }\r\n if (ind7 === '-' && ind8 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + '0' + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 9);\r\n this.cursorPosition = 9;\r\n }, 0);\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hhmm || this.timeType.mask === this.HHmm)) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && (this.timeType.mask === this.hhmm || this.timeType.mask === this.HHmm)) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hh || this.timeType.mask === this.HH)) {\r\n this.textValue = '0' + ind2;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n }\r\n if (v !== this._values) {\r\n const old = this._values;\r\n this.textValue = v;\r\n this._values = (v && v.indexOf('-') === -1) ? v : null;\r\n if (v.indexOf('-') === -1) {\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: {\r\n time: v,\r\n hour: Number(v[0] + v[1]),\r\n minute: v[3] && v[3] !== AXTranslator.get('dateTime.dayTime.a') && v[3] !== AXTranslator.get('dateTime.dayTime.p') ? Number(v[3] + v[4]) : null,\r\n second: v[6] && v[6] !== AXTranslator.get('dateTime.dayTime.a') && v[6] !== AXTranslator.get('dateTime.dayTime.p') ? Number(v[6] + v[7]) : null\r\n },\r\n oldValue: { time: old },\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n cursorPosition: number = 0;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n \r\n this.timeType = 'HHmm';\r\n }\r\n clearValue() {\r\n this.clear();\r\n this.handleInputFocus();\r\n }\r\n\r\n ngOnInit(): void {\r\n switch (this.timeType) {\r\n case 'HHmmss':\r\n this.type = 'HHmmss';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmmss,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.type = 'HHmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n case 'HH':\r\n this.type = 'HH';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HH,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--';\r\n break;\r\n case 'hhmmss':\r\n this.type = 'hhmmss';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmss,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.type = 'hhmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n case 'hh':\r\n this.type = 'hh';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hh,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--';\r\n break;\r\n case 'hhmmssam':\r\n this.type = 'hhmmssam';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmssam,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.type = 'hhmmam';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmam,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueMam;\r\n\r\n break;\r\n case 'hham':\r\n this.type = 'hham';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hham,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueHam;\r\n break;\r\n default:\r\n this.type = 'HHmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n\r\n }\r\n if (this.showCurentTime === true) {\r\n const hour = new Date().getHours() > 10 ? new Date().getHours() : '0' + new Date().getHours();\r\n let amHour: any;\r\n\r\n if (new Date().getHours() > 10) {\r\n if (new Date().getHours() > 12) {\r\n if (new Date().getHours() - 12 < 10) {\r\n amHour = '0' + (new Date().getHours() - 12);\r\n } else {\r\n amHour = new Date().getHours();\r\n }\r\n } else {\r\n amHour = new Date().getHours();\r\n }\r\n } else {\r\n amHour = '0' + new Date().getHours();\r\n }\r\n\r\n const min = new Date().getMinutes() > 9 ? new Date().getMinutes() : '0' + new Date().getMinutes();\r\n const sec = new Date().getSeconds() > 9 ? new Date().getSeconds() : '0' + new Date().getSeconds();\r\n if (this.type === 'hh' || this.type === 'hhmm' || this.type === 'hhmmss' || this.type === 'hhmmssam') {\r\n if (hour >= 12) {\r\n this.value = amHour + ':' + min + ':' + sec + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ':' + min + ':' + sec + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else if (this.type === 'hham') {\r\n if (hour >= 12) {\r\n this.value = amHour + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else if (this.type === 'hhmmam') {\r\n if (hour >= 12) {\r\n this.value = amHour + ':' + min + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ':' + min + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else {\r\n this.value = hour + ':' + min + ':' + sec;\r\n }\r\n }\r\n }\r\n\r\n onStartfocus() {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n\r\n handleInputFocus() {\r\n this.onStartfocus();\r\n this.input.nativeElement.focus();\r\n }\r\n handleInputBlur(e) {\r\n if (this.textValue.indexOf('-') !== -1) {\r\n switch (this.type) {\r\n case 'HHmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'HH':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'hh':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmssam':\r\n this.textValue = this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.textValue = this.valueMam;\r\n break;\r\n case 'hham':\r\n this.textValue = this.valueHam;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n handleKeyPress(event: any) {\r\n const inputChar = String.fromCharCode(event.charCode);\r\n const firstChar = this.textValue.charAt(0);\r\n const secondChar = this.textValue.charAt(1);\r\n\r\n setTimeout(() => {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n // this.cursorPosition += 1 ;\r\n }\r\n }, 0);\r\n\r\n if (firstChar === '2') {\r\n if (secondChar === '' || this.textValue.charAt(1) >= '4' || this.cursorPosition < 3) {\r\n if (inputChar >= '4') {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (firstChar === '1') {\r\n if (secondChar === '' || this.textValue.charAt(1) >= '3' || this.cursorPosition < 3) {\r\n if (inputChar >= '3') {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n if (inputChar === '-') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent) {\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n // up & down button\r\n if (event.key === 'ArrowUp') {\r\n this.setCaret();\r\n }\r\n if (event.key === 'ArrowDown') {\r\n this.setCaret();\r\n }\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n return false;\r\n }\r\n\r\n // left & right Button\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n // home button\r\n if (event.key === 'Home') {\r\n this.cursorPosition = 0;\r\n }\r\n\r\n // end button\r\n if (event.key === 'End') {\r\n if (this.timeType.mask === this.hhmmssam || this.timeType.mask === this.hhmmam || this.timeType.mask === this.hham) {\r\n if (this.timeType.mask === this.hhmmssam) {\r\n this.cursorPosition = 9;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n this.cursorPosition = 6;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n this.cursorPosition = 3;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n } else {\r\n this.cursorPosition = this.textValue.length;\r\n }\r\n }\r\n\r\n // backspace Control\r\n if (event.key === 'Backspace') {\r\n const ind1 = this.textValue.charAt(0);\r\n const ind2 = this.textValue.charAt(1);\r\n const ind3 = this.textValue.charAt(2);\r\n const ind4 = this.textValue.charAt(3);\r\n const ind5 = this.textValue.charAt(4);\r\n const ind6 = this.textValue.charAt(5);\r\n const ind7 = this.textValue.charAt(6);\r\n const ind8 = this.textValue.charAt(7);\r\n const ind9 = this.textValue.charAt(8);\r\n const ind10 = this.textValue.charAt(9);\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (ind10 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (ind7 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (ind4 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n\r\n if (this.textValue.length <= 0) {\r\n this.cursorPosition = 0;\r\n } else {\r\n this.cursorPosition -= 1;\r\n }\r\n }\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'End') {\r\n if (this.timeType.mask === this.hhmmssam || this.timeType.mask === this.hhmmam || this.timeType.mask === this.hham) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n } else {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }\r\n }\r\n\r\n let newValue = this.textValue;\r\n\r\n const ind1 = newValue.charAt(0);\r\n const ind2 = newValue.charAt(1);\r\n const ind3 = this.textValue.charAt(2);\r\n const ind4 = this.textValue.charAt(3);\r\n const ind5 = this.textValue.charAt(4);\r\n const ind6 = this.textValue.charAt(5);\r\n const ind7 = this.textValue.charAt(6);\r\n const ind8 = this.textValue.charAt(7);\r\n const ind9 = this.textValue.charAt(8);\r\n const ind10 = this.textValue.charAt(9);\r\n const ind11 = this.textValue.charAt(10);\r\n\r\n // up key\r\n if (event.key === 'ArrowUp') {\r\n // hour\r\n if (this.cursorPosition <= 2) {\r\n const hourind = ind1 + ind2;\r\n const newHour = +hourind + 1;\r\n newValue = newHour.toString();\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 12) {\r\n newValue = '01';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n } else {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 23) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n }\r\n const afterHourind = ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const hour = newValue.toString() + afterHourind;\r\n this.textValue = hour;\r\n }\r\n // minute\r\n if (this.cursorPosition >= 3 && this.cursorPosition <= 5) {\r\n const hourind = ind4 + ind5;\r\n const newHour = +hourind + 1;\r\n\r\n newValue = newHour.toString();\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind4 !== '-' && hourind === ind4 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind5 !== '-' && hourind === '-' + ind5) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 59) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const minute = beforeHourind + newValue.toString() + afterHourind;\r\n this.textValue = minute;\r\n }\r\n\r\n // second\r\n if (this.cursorPosition >= 6 && this.cursorPosition <= 8) {\r\n const secondind = ind7 + ind8;\r\n const newSecond = +secondind + 1;\r\n\r\n newValue = newSecond.toString();\r\n if (secondind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind7 !== '-' && secondind === ind7 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind8 !== '-' && secondind === '-' + ind8) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 59) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind9 + ind10 + ind11;\r\n const second = beforeHourind + newValue.toString() + afterHourind;\r\n this.textValue = second;\r\n }\r\n\r\n // type am/PM\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (this.cursorPosition > 8) {\r\n let typeind = ind10.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9;\r\n const afterHourind = ind11;\r\n\r\n if (ind10 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind10 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (this.cursorPosition >= 6) {\r\n let typeind = ind7.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind8;\r\n\r\n if (ind7 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind7 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (this.cursorPosition >= 3) {\r\n let typeind2 = ind4.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind5;\r\n\r\n if (ind4 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind4 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind2 + afterHourind;\r\n }\r\n }\r\n }\r\n\r\n // key down\r\n if (event.key === 'ArrowDown') {\r\n // hour\r\n if (this.cursorPosition <= 2) {\r\n const hourind = ind1 + ind2;\r\n const newHour = +hourind - 1;\r\n\r\n newValue = newHour.toString();\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue < 1) {\r\n newValue = '12';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n } else {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '23';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n }\r\n const afterHourIndex = ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const hour = newValue.toString() + afterHourIndex;\r\n this.textValue = hour;\r\n }\r\n // minute\r\n if (this.cursorPosition >= 3 && this.cursorPosition <= 5) {\r\n const minuteind = ind4 + ind5;\r\n const newMinute = +minuteind - 1;\r\n\r\n newValue = newMinute.toString();\r\n if (minuteind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind4 !== '-' && minuteind === ind4 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind5 !== '-' && minuteind === '-' + ind5) {\r\n newValue = '0';\r\n }\r\n if (minuteind === '--') {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '59';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeMinuteIndex = ind1 + ind2 + ind3;\r\n const afterMinuteIndex = ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const minute = beforeMinuteIndex + newValue.toString() + afterMinuteIndex;\r\n this.textValue = minute;\r\n }\r\n\r\n // second\r\n if (this.cursorPosition >= 6 && this.cursorPosition <= 8) {\r\n const secondIndex = ind7 + ind8;\r\n const newSecond = +secondIndex - 1;\r\n\r\n newValue = newSecond.toString();\r\n if (secondIndex === '--') {\r\n newValue = '0';\r\n }\r\n if (ind7 !== '-' && secondIndex === ind7 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind8 !== '-' && secondIndex === '-' + ind8) {\r\n newValue = '0';\r\n }\r\n if (secondIndex === '--') {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '59';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforesecondIndex = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const aftersecondIndex = ind9 + ind10 + ind11;\r\n const second = beforesecondIndex + newValue.toString() + aftersecondIndex;\r\n this.textValue = second;\r\n }\r\n\r\n // type\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (this.cursorPosition > 8) {\r\n let typeind = ind10.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9;\r\n const afterHourind = ind11;\r\n\r\n if (ind10 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind10 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (this.cursorPosition >= 6) {\r\n let typeind = ind7.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind8;\r\n\r\n if (ind7 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind7 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (this.cursorPosition >= 3) {\r\n let typeind2 = ind4.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind5;\r\n //TO DO this is wrong check index\r\n if (ind4 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind4 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind2 + afterHourind;\r\n }\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n if (event.key === 'Delete') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleClick(event: KeyboardEvent) {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n doGetCaretPosition(ctrl) {\r\n let CaretPos = 0;\r\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\r\n CaretPos = ctrl.selectionStart;\r\n return CaretPos;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else if (ctrl.createTextRange) {\r\n const range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTimePickerComponent } from './time-picker.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTimePickerComponent],\r\n imports: [ CommonModule, FormsModule, AXButtonModule, TextMaskModule ],\r\n exports: [AXTimePickerComponent],\r\n providers: [],\r\n})\r\nexport class AXTimePickerModule {}","import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXDataEvent, AXHtmlEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXContextMenuItemClickEvent, AXContextMenuPromiseFunction, AXContextMenuFunction } from '../context-menu/context-menu.directive';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\nexport class AXTreeSideMenuNode {\r\n children: AXTreeSideMenuNode[];\r\n itemData: AXTreeSideMenuItemData = new AXTreeSideMenuItemData();\r\n parent: AXTreeSideMenuNode;\r\n}\r\n\r\nexport class AXTreeSideMenuItemData {\r\n selected: boolean;\r\n key: string;\r\n disabled: boolean;\r\n open: boolean;\r\n hasChild: boolean;\r\n item: any;\r\n}\r\n\r\nexport class AXTreeSideMenuItemMovedEvent {\r\n source: AXTreeSideMenuNode;\r\n target: AXTreeSideMenuNode;\r\n resolve: (value: boolean) => void;\r\n}\r\n\r\nexport class AXTreeSideMenuSelectionChangedEvent extends AXValueEvent<AXTreeSideMenuNode> {\r\n component: AXTreeSideMenuComponent;\r\n}\r\n\r\nexport class AXTreeSideMenuItemClick extends AXHtmlEvent<MouseEvent> {\r\n component: AXTreeSideMenuComponent;\r\n item: any;\r\n flag: boolean;\r\n cancel?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tree-side-menu',\r\n templateUrl: './tree-side-menu.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTreeSideMenuComponent extends AXBaseComponent {\r\n @ContentChild(TemplateRef, { static: true })\r\n nodeTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n cssClass: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionLevel: 'all' | 'nodes' | 'parents' = 'all';\r\n\r\n @Input()\r\n selectedFieldName: string = null;\r\n\r\n @Input()\r\n selectNodesRecursive: boolean = true;\r\n\r\n @Input()\r\n seletedKeyFields: any[] = [];\r\n\r\n @Input()\r\n keyField: string = 'id';\r\n\r\n @Input()\r\n textField: string = 'title';\r\n\r\n @Input()\r\n hasChildField: string = 'child';\r\n\r\n @Input()\r\n bordered: boolean = false;\r\n\r\n @Input()\r\n lazyLoading: boolean = true;\r\n\r\n @Input()\r\n allowDrag: boolean = false;\r\n\r\n @Input()\r\n size: 'md' | 'sm' = 'md';\r\n\r\n @Input()\r\n iconStart: boolean = true;\r\n\r\n @Input()\r\n closeIconName: string = 'fal fa-plus';\r\n\r\n @Input()\r\n openIconName: string = 'fal fa-minus';\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXTreeSideMenuSelectionChangedEvent> = new EventEmitter<AXTreeSideMenuSelectionChangedEvent>();\r\n\r\n @Output()\r\n onItemOpening: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXTreeSideMenuItemClick> = new EventEmitter<AXTreeSideMenuItemClick>();\r\n\r\n @Output()\r\n onItemClosing: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemMoved: EventEmitter<AXTreeSideMenuItemMovedEvent> = new EventEmitter<AXTreeSideMenuItemMovedEvent>();\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n showSelectBox: boolean = false;\r\n loading: boolean = false;\r\n list: any[] = [];\r\n itemRow: any;\r\n selectedItems: any[] = [];\r\n selectedParents: any[] = [];\r\n loadAllChildren: boolean = false;\r\n listLoad: any[] = [];\r\n itemDrop: any;\r\n itemDrag: any;\r\n validDrop: boolean = true;\r\n lockedDrag: boolean = false;\r\n childField: string = 'childeren';\r\n showContextMenu: boolean = false;\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n handleOnContextMenuItem(e: AXContextMenuItemClickEvent) {\r\n this.onContextMenuItemClick.emit(e);\r\n }\r\n\r\n refresh() {\r\n this.list = [];\r\n this._contentDataSource.fetch(null);\r\n }\r\n\r\n internalSelectItem(item, userChange: boolean = true) {\r\n if (item[this.hasChildField] === false || this.selectionMode === 'single') {\r\n item.select = !item.select;\r\n if (item.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (item.select === true) {\r\n if (this.selectionMode === 'single') {\r\n this.selectedItems.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n } else {\r\n item.select = !item.select;\r\n\r\n if (item.parentNode && this.selectionMode === 'multiple') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (this.selectionMode === 'multiple') {\r\n this.changeChildSelect(item, item.select);\r\n }\r\n\r\n if (item.select == true) {\r\n if (this.selectionMode === 'multiple') {\r\n this.selectedParents.push(item);\r\n } else {\r\n this.selectedParents.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedParents = [];\r\n this.selectedParents.push(item);\r\n }\r\n } else {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n }\r\n if (userChange) {\r\n this.selectionChanged.emit({\r\n component: this,\r\n value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n private makeNode(item, addChildren: boolean = true) {\r\n const node: AXTreeSideMenuNode = new AXTreeSideMenuNode();\r\n if (addChildren) {\r\n node.children = item[this.childField] === undefined ? [] : item[this.childField]?.map((m) => this.makeNode(m));\r\n }\r\n node.itemData.disabled = item.disabled === true ? item.disabled : false;\r\n node.itemData.open = item.open === true ? item.open : false;\r\n node.itemData.key = item[this.keyField];\r\n\r\n const c = [];\r\n let i = 0;\r\n for (var k in item) {\r\n i = i + 1;\r\n if (\r\n k != 'select' &&\r\n k != 'hasChild' &&\r\n k != 'loading' &&\r\n k != 'requestId' &&\r\n k != 'disabled' &&\r\n k != 'open' &&\r\n k != 'parentNode' &&\r\n k != 'toggle' &&\r\n k != 'loaded' &&\r\n k != 'indeterminate' &&\r\n k != this.childField\r\n ) {\r\n //c.push({ k: item[k] });\r\n c[k] = item[k];\r\n }\r\n }\r\n node.itemData.item = c; //TO DO\r\n node.itemData.selected = item.select === true ? item.select : false;\r\n node.itemData.hasChild = item[this.hasChildField];\r\n node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);\r\n return node;\r\n }\r\n\r\n private changeChildSelect(item, s) {\r\n if (this.selectNodesRecursive) {\r\n item.select = s;\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((elm) => {\r\n if (elm[this.hasChildField] === true) {\r\n elm.select = s;\r\n\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedParents.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n\r\n this.changeChildSelect(elm, s);\r\n } else {\r\n elm.select = s;\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedItems.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n }\r\n });\r\n } else {\r\n item.select = s;\r\n }\r\n }\r\n }\r\n\r\n private changeParentSelect(item) {\r\n if (this.selectNodesRecursive) {\r\n let allselect = true;\r\n let alldeselect = true;\r\n let oneselect = false;\r\n let isindeterminate = false;\r\n\r\n if (item[this.childField]) {\r\n for (let index = 0; index < item[this.childField].length; index++) {\r\n if (item[this.childField][index].select === true) {\r\n alldeselect = false;\r\n oneselect = true;\r\n }\r\n if (item[this.childField][index].select === false || item[this.childField][index].select === undefined) {\r\n allselect = false;\r\n }\r\n if (item[this.childField][index].select === null) {\r\n isindeterminate = true;\r\n alldeselect = false;\r\n oneselect = true;\r\n allselect = false;\r\n }\r\n }\r\n }\r\n\r\n if (oneselect || (isindeterminate && !allselect)) {\r\n item.select = null;\r\n }\r\n if (allselect === true) {\r\n item.select = true;\r\n }\r\n if (alldeselect === true) {\r\n item.select = false;\r\n }\r\n if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onItemClick.subscribe((data: AXTreeSideMenuItemClick) => {\r\n if (!data.cancel) {\r\n this.toggleNode(data.item, data.flag);\r\n }\r\n });\r\n }\r\n\r\n itemdbClick(e: MouseEvent, item) {\r\n if (this.selectionMode == 'single') {\r\n this.handleOnNodeClick(e, item, true);\r\n }\r\n }\r\n\r\n handleOnNodeClick(e: MouseEvent, item, flag = false) {\r\n this.onItemClick.emit({\r\n component: this,\r\n htmlEvent: e,\r\n item,\r\n flag\r\n });\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n toggleNode(item, flag = false) {\r\n //item[this.hasChildField] === false &&\r\n if (this.selectionMode === 'single' && !flag) {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n } else {\r\n if (item[this.hasChildField] == true) {\r\n item.toggle = !item.toggle;\r\n }\r\n\r\n if (this.selectionMode === 'single') {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n }\r\n\r\n if (item[this.hasChildField] === true && item.loaded !== true && this.lazyLoading) {\r\n this.itemRow = item;\r\n const uid = Math.floor(Math.random() * 100000000);\r\n item.requestId = uid;\r\n this.listLoad.push(item);\r\n this._contentDataSource.fetch(item);\r\n this.showLoading(this.itemRow);\r\n }\r\n if (item.toggle && item[this.hasChildField] === true) {\r\n item.open = true;\r\n this.onItemOpening.emit(this.makeNode(item));\r\n } else if (!item.toggle && item[this.hasChildField] === true) {\r\n item.open = false;\r\n this.onItemClosing.emit(this.makeNode(item));\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._contentDataSource.fetch(null);\r\n this._contentDataSource.onDataReceived.subscribe((_data) => {\r\n if (this.list.length === 0) {\r\n this.hideLoading(null);\r\n this.list = _data.data.result;\r\n\r\n this.list.forEach((el) => {\r\n el.select = false;\r\n\r\n if (this.selectionLevel == 'nodes' && el[this.hasChildField] == true) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && el[this.hasChildField] == false) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(el[this.keyField])) {\r\n if (el[this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n } else {\r\n this.selectItem(el);\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (el[this.hasChildField] == true && el[this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n } else if (el[this.selectedFieldName] == true) {\r\n this.selectItem(el);\r\n }\r\n }\r\n });\r\n } else {\r\n this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];\r\n this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);\r\n if (this.itemRow !== undefined) {\r\n this.hideLoading(this.itemRow);\r\n const result = _data.data.result;\r\n\r\n if (this.list.length !== 0) {\r\n if (this.itemRow[this.childField] && this.itemRow[this.childField].length > 0) {\r\n result.forEach((el) => {\r\n this.itemRow[this.childField][this.itemRow[this.childField].length] = el;\r\n });\r\n } else {\r\n this.itemRow[this.childField] = result;\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n if (this.selectionLevel == 'nodes' && result[i][this.hasChildField] == true) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && result[i][this.hasChildField] == false) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n if (this.selectionMode !== 'single' && this.selectNodesRecursive) {\r\n result[i].select = this.itemRow.select === (undefined || null) ? false : this.itemRow.select;\r\n\r\n if (this.itemRow.select === true && this.selectionMode == 'multiple' && result[i][this.hasChildField] === false) {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);\r\n this.selectedItems.push(result[i]);\r\n }\r\n } else {\r\n result[i].select = false;\r\n }\r\n result[i].parentNode = this.itemRow;\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(result[i][this.keyField])) {\r\n if (result[i][this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n } else {\r\n this.selectItem(result[i]);\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (result[i][this.hasChildField] == true && result[i][this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n } else if (result[i][this.selectedFieldName] == true) {\r\n this.selectItem(result[i]);\r\n }\r\n }\r\n }\r\n\r\n this.itemRow.loaded = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectionMode !== 'single') {\r\n this.showSelectBox = true;\r\n }\r\n this.showContextMenu = true;\r\n }\r\n\r\n // onItemClick(e, v) {\r\n\r\n // }\r\n\r\n onDragStart(e: Event, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrag = v;\r\n this.onItemDrag.emit(v);\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n onDragEnd(e, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrop = v;\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n drop(e) {\r\n // this.onItemDrop.emit(this.itemDrop);\r\n if (!this.lockedDrag) {\r\n this.validDrop = true;\r\n this.sameChilde(this.itemDrag, this.itemDrop);\r\n if (this.validDrop && this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] && this.itemDrag.parentNode !== this.itemDrop) {\r\n const movedEvent: AXTreeSideMenuItemMovedEvent = new AXTreeSideMenuItemMovedEvent();\r\n movedEvent.source = this.makeNode(this.itemDrag);\r\n movedEvent.target = this.makeNode(this.itemDrop);\r\n this.lockedDrag = true;\r\n this.showLoading(this.itemDrag);\r\n this.showLoading(this.itemDrop);\r\n movedEvent.resolve = (value: boolean) => {\r\n this.hideLoading(this.itemDrag);\r\n this.hideLoading(this.itemDrop);\r\n if (value) {\r\n this.dragDropItem(this.itemDrag, this.itemDrop);\r\n } else {\r\n this.lockedDrag = false;\r\n }\r\n };\r\n this.onItemMoved.emit(movedEvent);\r\n }\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n sameChilde(parent, child) {\r\n if (parent[this.childField] && parent[this.childField].length > 0) {\r\n for (let index = 0; index < parent[this.childField].length; index++) {\r\n if (parent[this.childField][index][this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n if (parent[this.childField][index][this.childField] && parent[this.childField][index][this.childField].length > 0) {\r\n this.sameChilde(parent[this.childField][index], child);\r\n }\r\n }\r\n } else if (parent[this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n }\r\n\r\n dragDropItem(itemChild, itemParent) {\r\n if (this.selectionLevel == 'nodes') {\r\n itemParent.disabledCheckBox = true;\r\n }\r\n\r\n if (itemChild.parentNode) {\r\n itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n } else {\r\n this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n }\r\n itemChild.parentNode = itemParent;\r\n if (itemParent[this.childField] && itemParent[this.childField].length > 0) {\r\n itemParent[this.childField][itemParent[this.childField].length] = itemChild;\r\n } else {\r\n itemParent[this.childField] = [];\r\n itemParent[this.childField][0] = itemChild;\r\n if (itemParent[this.hasChildField] === true) {\r\n this.toggleNode(itemParent);\r\n } else {\r\n itemParent.toggle = !itemParent.toggle;\r\n itemParent.loaded = true;\r\n }\r\n itemParent[this.hasChildField] = true;\r\n }\r\n if (itemChild.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(itemChild.parentNode);\r\n }\r\n this.lockedDrag = false;\r\n }\r\n\r\n private listChange(field, value) {\r\n for (let index = 0; index < this.list.length; index++) {\r\n this.changeChiled(this.list[index], field, value);\r\n }\r\n this.loadAllChildren = false;\r\n }\r\n\r\n private changeChiled(item, field, value) {\r\n if (field === 'toggle' && (item.loaded === false || item.loaded === undefined)) {\r\n if (this.loadAllChildren === true) {\r\n this.toggleNode(item);\r\n item[field] = value;\r\n }\r\n } else {\r\n item[field] = value;\r\n if (field === 'select' && item[this.hasChildField] === false && value === true) {\r\n this.selectedItems.push(item);\r\n }\r\n }\r\n if (field === 'select') {\r\n item.indeterminate = false;\r\n }\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((element) => {\r\n this.changeChiled(element, field, value);\r\n });\r\n }\r\n }\r\n\r\n private showLoading(item): void {\r\n item.loading = true;\r\n }\r\n\r\n private hideLoading(item): void {\r\n if (item != null) {\r\n item.loading = false;\r\n }\r\n }\r\n\r\n public openAll(loadAll: boolean = false) {\r\n // if (loadAll) {\r\n // this.loadAllChildren = true;\r\n // this.listChange('toggle', true);\r\n //} else {\r\n this.listChange('toggle', true);\r\n // }\r\n }\r\n\r\n public selectItem(item) {\r\n if (item['select'] != true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n public open(item) {\r\n if (item['toggle'] !== true) {\r\n this.toggleNode(item, true);\r\n }\r\n }\r\n\r\n public scrolIntoView(item) {\r\n let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);\r\n element.scrollIntoView();\r\n }\r\n\r\n public closeAll() {\r\n this.listChange('toggle', false);\r\n }\r\n\r\n public selectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', true);\r\n }\r\n }\r\n\r\n public unSelectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', false);\r\n }\r\n this.selectedItems = [];\r\n }\r\n\r\n public getSelectedNodes(): AXTreeSideMenuNode[] {\r\n const selectItemsNode = [];\r\n this.selectedItems.forEach((e) => {\r\n selectItemsNode.push(this.makeNode(e));\r\n });\r\n return selectItemsNode;\r\n }\r\n\r\n public getSelectedParents(): AXTreeSideMenuNode[] {\r\n const selectItemsParent = [];\r\n this.selectedParents.forEach((e) => {\r\n selectItemsParent.push(this.makeNode(e));\r\n });\r\n return selectItemsParent;\r\n }\r\n\r\n getParentsId(item) {\r\n let keyFields = [];\r\n keyFields.push(item[this.keyField]);\r\n if (item.parentNode) {\r\n keyFields.push(...this.getParentsId(item.parentNode));\r\n }\r\n return keyFields;\r\n }\r\n\r\n public getSelectedKeyFields() {\r\n let keyFields = [];\r\n this.selectedItems.forEach((elm) => {\r\n var Ids = this.getParentsId(elm);\r\n if (Ids) {\r\n keyFields.push(Ids);\r\n }\r\n });\r\n return keyFields;\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AXTreeSideMenuComponent } from \"./tree-side-menu.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXDataSourceModule } from \"../data-source/datasource.module\";\r\nimport { AXCheckBoxModule } from \"../checkbox/checkbox.module\";\r\nimport { AXContextMenuModule } from \"../context-menu/context-menu.module\";\r\n\r\n@NgModule({\r\n declarations: [AXTreeSideMenuComponent],\r\n imports: [\r\n AXDataSourceModule,\r\n CommonModule,\r\n AXCheckBoxModule,\r\n AXContextMenuModule,\r\n ],\r\n exports: [AXTreeSideMenuComponent],\r\n providers: [],\r\n})\r\nexport class AXTreeSideMenuModule {}\r\n","import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXDataEvent, AXHtmlEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXContextMenuItemClickEvent, AXContextMenuPromiseFunction, AXContextMenuFunction } from '../context-menu/context-menu.directive';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\nexport class AXTreeViewNode {\r\n children: AXTreeViewNode[];\r\n itemData: AXTreeViewItemData = new AXTreeViewItemData();\r\n parent: AXTreeViewNode;\r\n}\r\n\r\nexport class AXTreeViewItemData {\r\n selected: boolean;\r\n indeterminate: boolean;\r\n key: string;\r\n disabled: boolean;\r\n open: boolean;\r\n hasChild: boolean;\r\n item: any;\r\n}\r\n\r\nexport class AXTreeViewItemMovedEvent {\r\n source: AXTreeViewNode;\r\n target: AXTreeViewNode;\r\n resolve: (value: boolean) => void;\r\n}\r\n\r\nexport class AXTreeViewselectionChangedEvent extends AXValueEvent<AXTreeViewNode> {\r\n component: AXTreeViewComponent;\r\n}\r\n\r\nexport class AXTreeViewseletedKeyFieldsChangedEvent extends AXValueEvent<AXTreeViewNode> {\r\n component: AXTreeViewComponent;\r\n}\r\n\r\nexport class AXTreeViewItemClick extends AXHtmlEvent<MouseEvent> {\r\n component: AXTreeViewComponent;\r\n item: any;\r\n flag: boolean;\r\n cancel?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tree-view',\r\n templateUrl: './tree-view.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTreeViewComponent extends AXBaseComponent {\r\n @ContentChild(TemplateRef, { static: true })\r\n nodeTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionLevel: 'all' | 'nodes' | 'parents' = 'all';\r\n\r\n // user can set only one of this /selectedFieldName or /seletedKeyFields\r\n //seletedKeyFields set id of nodes and parents\r\n //selectedFieldName set name of fields that set selectes\r\n @Input()\r\n selectedFieldName: string = null;\r\n\r\n // @Input()\r\n // selectNodesRecursive: 'all' | 'parents' | 'childs' | 'none' = 'all'; //leaf\r\n\r\n @Input()\r\n checkParents: boolean = true;\r\n\r\n @Input()\r\n checkChilds: boolean = true;\r\n\r\n @Input()\r\n seletedKeyFields: any[] = [];\r\n\r\n @Input()\r\n keyField: string = 'id';\r\n\r\n @Input()\r\n hasChildField: string = 'child';\r\n\r\n @Input()\r\n bordered: boolean = false;\r\n\r\n @Input()\r\n lazyLoading: boolean = true;\r\n\r\n @Input()\r\n allowDrag: boolean = false;\r\n\r\n @Input()\r\n size: 'md' | 'sm' = 'md';\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXTreeViewselectionChangedEvent> = new EventEmitter<AXTreeViewselectionChangedEvent>();\r\n\r\n @Output()\r\n seletedKeyFieldsChanged: EventEmitter<AXTreeViewseletedKeyFieldsChangedEvent> = new EventEmitter<AXTreeViewselectionChangedEvent>();\r\n\r\n @Output()\r\n onItemOpening: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXTreeViewItemClick> = new EventEmitter<AXTreeViewItemClick>();\r\n\r\n @Output()\r\n onItemClosing: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemMoved: EventEmitter<AXTreeViewItemMovedEvent> = new EventEmitter<AXTreeViewItemMovedEvent>();\r\n\r\n @Input()\r\n selectableField: string = '';\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n showSelectBox: boolean = false;\r\n loading: boolean = false;\r\n list: any[] = [];\r\n itemRow: any;\r\n selectedItems: any[] = [];\r\n selectedParents: any[] = [];\r\n loadAllChildren: boolean = false;\r\n listLoad: any[] = [];\r\n itemDrop: any;\r\n itemDrag: any;\r\n validDrop: boolean = true;\r\n lockedDrag: boolean = false;\r\n childField: string = 'childeren';\r\n showContextMenu: boolean = false;\r\n isSelectedItem: boolean = false;\r\n loced: boolean = false;\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n handleOnContextMenuItem(e: AXContextMenuItemClickEvent) {\r\n this.onContextMenuItemClick.emit(e);\r\n }\r\n\r\n refresh() {\r\n this.list = [];\r\n this._contentDataSource.fetch(null);\r\n }\r\n\r\n internalSelectItem(item, userChange: boolean = true) {\r\n if (item[this.hasChildField] === false || this.selectionMode === 'single') {\r\n item.select = !item.select;\r\n if (item.parentNode && this.selectionMode !== 'single' && this.checkParents == true) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (item.select === true) {\r\n if (this.selectionMode === 'single') {\r\n this.selectedItems.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n } else {\r\n item.select = !item.select;\r\n\r\n if (item.parentNode && this.selectionMode === 'multiple' && this.checkParents == true) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (this.selectionMode === 'multiple' && this.checkChilds == true) {\r\n this.changeChildSelect(item, item.select);\r\n }\r\n\r\n if (item.select == true) {\r\n if (this.selectionMode === 'multiple') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n this.selectedParents.push(item);\r\n } else {\r\n this.selectedParents.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedParents = [];\r\n this.selectedParents.push(item);\r\n }\r\n } else {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n }\r\n if (userChange) {\r\n this.selectionChanged.emit({\r\n component: this,\r\n value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n private makeNode(item, addChildren: boolean = true) {\r\n const node: AXTreeViewNode = new AXTreeViewNode();\r\n if (addChildren) {\r\n node.children = item[this.childField] === undefined ? [] : item[this.childField]?.map((m) => this.makeNode(m));\r\n }\r\n node.itemData.disabled = item.disabled === true ? item.disabled : false;\r\n node.itemData.open = item.open === true ? item.open : false;\r\n node.itemData.key = item[this.keyField];\r\n\r\n const c = [];\r\n let i = 0;\r\n for (var k in item) {\r\n i = i + 1;\r\n if (\r\n k != 'select' &&\r\n k != 'hasChild' &&\r\n k != 'loading' &&\r\n k != 'requestId' &&\r\n k != 'disabled' &&\r\n k != 'open' &&\r\n k != 'parentNode' &&\r\n k != 'toggle' &&\r\n k != 'loaded' &&\r\n k != 'indeterminate' &&\r\n k != this.childField\r\n ) {\r\n //c.push({ k: item[k] });\r\n c[k] = item[k];\r\n }\r\n }\r\n\r\n node.itemData.item = c; //TO DO\r\n node.itemData.selected = item.select === true ? item.select : false;\r\n node.itemData.indeterminate = item.select === null ? true : false;\r\n node.itemData.hasChild = item[this.hasChildField];\r\n node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);\r\n if (node.parent != null) {\r\n (node.parent as any).selectParent = () => {\r\n if (item.parentNode['select'] != true) {\r\n this.internalSelectItem(item.parentNode, true);\r\n }\r\n };\r\n (node.parent as any).unSelectParent = () => {\r\n if (item.parentNode['select'] == true) {\r\n this.internalSelectItem(item.parentNode, true);\r\n }\r\n };\r\n }\r\n if (node.children != null && node.children.length > 0) {\r\n (node.children as any).selectChilds = () => {\r\n item.childeren.forEach((element) => {\r\n if (element['select'] != true) {\r\n this.internalSelectItem(element, true);\r\n }\r\n });\r\n };\r\n (node.children as any).unSelectChilds = () => {\r\n item.childeren.forEach((element) => {\r\n if (element['select'] == true) {\r\n this.internalSelectItem(element, true);\r\n }\r\n });\r\n };\r\n }\r\n return node;\r\n }\r\n\r\n private changeChildSelect(item, s) {\r\n // if (this.selectNodesRecursive == 'all' || this.selectNodesRecursive == 'childs') {\r\n if (this.checkChilds == true) {\r\n item.select = s;\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((elm) => {\r\n if (elm[this.hasChildField] === true) {\r\n elm.select = s;\r\n\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedParents.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n this.changeChildSelect(elm, s);\r\n } else {\r\n elm.select = s;\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedItems.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n }\r\n });\r\n } else {\r\n item.select = s;\r\n }\r\n }\r\n }\r\n\r\n private changeParentSelect(item) {\r\n //if (this.selectNodesRecursive == 'all' || this.selectNodesRecursive == 'parents') {\r\n if (this.checkParents) {\r\n let allselect = true;\r\n let alldeselect = true;\r\n let oneselect = false;\r\n let isindeterminate = false;\r\n\r\n if (item[this.childField]) {\r\n for (let index = 0; index < item[this.childField].length; index++) {\r\n if (item[this.childField][index].select === true) {\r\n alldeselect = false;\r\n oneselect = true;\r\n }\r\n if (item[this.childField][index].select === false || item[this.childField][index].select === undefined) {\r\n allselect = false;\r\n }\r\n if (item[this.childField][index].select === null) {\r\n isindeterminate = true;\r\n alldeselect = false;\r\n oneselect = true;\r\n allselect = false;\r\n }\r\n }\r\n }\r\n\r\n if (oneselect || (isindeterminate && !allselect)) {\r\n item.select = null;\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n this.selectedParents.push(item);\r\n }\r\n if (allselect === true) {\r\n item.select = true;\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n this.selectedParents.push(item);\r\n }\r\n if (alldeselect === true) {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n item.select = false;\r\n }\r\n if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onItemClick.subscribe((data: AXTreeViewItemClick) => {\r\n if (!data.cancel) {\r\n this.toggleNode(data.item, data.flag);\r\n }\r\n });\r\n }\r\n\r\n itemdbClick(e: MouseEvent, item) {\r\n if (this.selectionMode == 'single') {\r\n this.handleOnNodeClick(e, item, true);\r\n }\r\n }\r\n\r\n handleOnNodeClick(e: MouseEvent, item, flag = false) {\r\n // this.internalSelectItem(item);\r\n this.onItemClick.emit({\r\n component: this,\r\n htmlEvent: e,\r\n item,\r\n flag\r\n });\r\n }\r\n\r\n nodeClick(item) {\r\n if (item[this.hasChildField] == true) {\r\n this.toggleNode(item, true);\r\n } else {\r\n this.internalSelectItem(item, true);\r\n }\r\n }\r\n\r\n toggleNode(item, flag = false) {\r\n //item[this.hasChildField] === false &&\r\n if (this.selectionMode === 'single' && !flag) {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n } else {\r\n item.toggle = !item.toggle;\r\n if (this.selectionMode === 'single') {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n }\r\n\r\n if (item[this.hasChildField] === true && item.loaded !== true && this.lazyLoading) {\r\n this.itemRow = item;\r\n const uid = Math.floor(Math.random() * 100000000);\r\n item.requestId = uid;\r\n this.listLoad.push(item);\r\n this._contentDataSource.fetch(item);\r\n this.showLoading(this.itemRow);\r\n }\r\n if (item.toggle && item[this.hasChildField] === true) {\r\n item.open = true;\r\n this.onItemOpening.emit(this.makeNode(item));\r\n } else if (!item.toggle && item[this.hasChildField] === true) {\r\n item.open = false;\r\n this.onItemClosing.emit(this.makeNode(item));\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._contentDataSource.fetch(null);\r\n this._contentDataSource.onDataReceived.subscribe((_data) => {\r\n if (this.list.length === 0) {\r\n this.hideLoading(null);\r\n this.list = _data.data.result;\r\n\r\n this.list.forEach((el) => {\r\n el.disabledCheckBox = this.selectableField != '' ? (el[this.selectableField] ? el[this.selectableField] : false) : false;\r\n el.select = false;\r\n\r\n if (this.selectionLevel == 'nodes' && el[this.hasChildField] == true) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && el[this.hasChildField] == false) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(el[this.keyField])) {\r\n if (el[this.hasChildField] == true) {\r\n if ((this.checkParents == false && this.checkChilds == false) || this.checkChilds == false) {\r\n //select parent when check child and check parent is false TODO check this Action\r\n this.selectItem(el);\r\n }\r\n\r\n this.open(el);\r\n } else {\r\n this.selectItem(el);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (el[this.hasChildField] == true && el[this.selectedFieldName] == true) {\r\n if ((this.checkParents == false && this.checkChilds == false) || this.checkChilds == false) {\r\n //select parent when check child and check parent is false TODO check this Action\r\n this.selectItem(el);\r\n }\r\n this.open(el);\r\n } else if (el[this.selectedFieldName] == true) {\r\n this.selectItem(el);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else {\r\n this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];\r\n this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);\r\n this.itemRow.loaded = true;\r\n if (this.itemRow !== undefined) {\r\n this.hideLoading(this.itemRow);\r\n const result = _data.data.result;\r\n\r\n if (this.list.length !== 0) {\r\n if (this.itemRow[this.childField] && this.itemRow[this.childField].length > 0) {\r\n result.forEach((el) => {\r\n el.disabledCheckBox = this.selectableField != '' ? (el[this.selectableField] ? el[this.selectableField] : false) : false;\r\n // el.disabledCheckBox = this.selectableField != '' ? el[this.selectableField] : false;\r\n this.itemRow[this.childField][this.itemRow[this.childField].length] = el;\r\n });\r\n } else {\r\n this.itemRow[this.childField] = result;\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n result[i].disabledCheckBox =\r\n this.selectableField != '' ? (result[i][this.selectableField] ? result[i][this.selectableField] : false) : false;\r\n\r\n if (this.selectionLevel == 'nodes' && result[i][this.hasChildField] == true) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n if (this.selectionLevel == 'parents' && result[i][this.hasChildField] == false) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n // if (this.selectionMode !== 'single' && (this.selectNodesRecursive == 'all' || this.selectNodesRecursive == 'childs')) {\r\n if (this.selectionMode !== 'single' && this.checkChilds == true) {\r\n result[i].select = this.itemRow.select === (undefined || null) ? false : this.itemRow.select;\r\n\r\n if (this.itemRow.select === true && this.selectionMode == 'multiple' && result[i][this.hasChildField] === false) {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);\r\n this.selectedItems.push(result[i]);\r\n }\r\n } else {\r\n result[i].select = false;\r\n }\r\n result[i].parentNode = this.itemRow;\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(result[i][this.keyField])) {\r\n if (result[i][this.hasChildField] == true) {\r\n if (this.checkParents == false && this.checkChilds == false) {\r\n //select parent when check child and check parent is false TODO check this Action\r\n this.selectItem(result[i]);\r\n }\r\n\r\n this.open(result[i]);\r\n } else {\r\n this.selectItem(result[i]);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (result[i][this.hasChildField] == true && result[i][this.selectedFieldName] == true) {\r\n if (this.checkParents == false && this.checkChilds == false) {\r\n //select parent when check child and check parent is false TODO check this Action\r\n this.selectItem(result[i]);\r\n }\r\n this.open(result[i]);\r\n } else if (result[i][this.selectedFieldName] == true) {\r\n this.selectItem(result[i]);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n }\r\n this.itemRow.loaded = true;\r\n }\r\n }\r\n }\r\n\r\n if (this.isSelectedItem == true && !this.loced) {\r\n this.loced = true;\r\n this.seletedKeyFieldsChanged.emit({\r\n component: this,\r\n // value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectionMode !== 'single') {\r\n this.showSelectBox = true;\r\n }\r\n this.showContextMenu = true;\r\n }\r\n\r\n // onItemClick(e, v) {\r\n\r\n // }\r\n\r\n onDragStart(e: Event, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrag = v;\r\n this.onItemDrag.emit(v);\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n onDragEnd(e, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrop = v;\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n drop(e) {\r\n // this.onItemDrop.emit(this.itemDrop);\r\n if (!this.lockedDrag) {\r\n this.validDrop = true;\r\n this.sameChilde(this.itemDrag, this.itemDrop);\r\n if (this.validDrop && this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] && this.itemDrag.parentNode !== this.itemDrop) {\r\n const movedEvent: AXTreeViewItemMovedEvent = new AXTreeViewItemMovedEvent();\r\n movedEvent.source = this.makeNode(this.itemDrag);\r\n movedEvent.target = this.makeNode(this.itemDrop);\r\n this.lockedDrag = true;\r\n this.showLoading(this.itemDrag);\r\n this.showLoading(this.itemDrop);\r\n movedEvent.resolve = (value: boolean) => {\r\n this.hideLoading(this.itemDrag);\r\n this.hideLoading(this.itemDrop);\r\n if (value) {\r\n this.dragDropItem(this.itemDrag, this.itemDrop);\r\n } else {\r\n this.lockedDrag = false;\r\n }\r\n };\r\n this.onItemMoved.emit(movedEvent);\r\n }\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n sameChilde(parent, child) {\r\n if (parent[this.childField] && parent[this.childField].length > 0) {\r\n for (let index = 0; index < parent[this.childField].length; index++) {\r\n if (parent[this.childField][index][this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n if (parent[this.childField][index][this.childField] && parent[this.childField][index][this.childField].length > 0) {\r\n this.sameChilde(parent[this.childField][index], child);\r\n }\r\n }\r\n } else if (parent[this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n }\r\n\r\n dragDropItem(itemChild, itemParent) {\r\n if (this.selectionLevel == 'nodes') {\r\n itemParent.disabledCheckBox = true;\r\n }\r\n\r\n if (itemChild.parentNode) {\r\n itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n } else {\r\n this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n }\r\n itemChild.parentNode = itemParent;\r\n if (itemParent[this.childField] && itemParent[this.childField].length > 0) {\r\n itemParent[this.childField][itemParent[this.childField].length] = itemChild;\r\n } else {\r\n itemParent[this.childField] = [];\r\n itemParent[this.childField][0] = itemChild;\r\n if (itemParent[this.hasChildField] === true) {\r\n this.toggleNode(itemParent);\r\n } else {\r\n itemParent.toggle = !itemParent.toggle;\r\n itemParent.loaded = true;\r\n }\r\n itemParent[this.hasChildField] = true;\r\n }\r\n if (itemChild.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(itemChild.parentNode);\r\n }\r\n this.lockedDrag = false;\r\n }\r\n\r\n private listChange(field, value) {\r\n for (let index = 0; index < this.list.length; index++) {\r\n this.changeChiled(this.list[index], field, value);\r\n }\r\n this.loadAllChildren = false;\r\n }\r\n\r\n private changeChiled(item, field, value) {\r\n if (field === 'toggle' && (item.loaded === false || item.loaded === undefined)) {\r\n if (this.loadAllChildren === true) {\r\n this.toggleNode(item);\r\n item[field] = value;\r\n }\r\n } else {\r\n item[field] = value;\r\n if (field === 'select' && item[this.hasChildField] === false && value === true) {\r\n this.selectedItems.push(item);\r\n }\r\n }\r\n if (field === 'select') {\r\n item.indeterminate = false;\r\n }\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((element) => {\r\n this.changeChiled(element, field, value);\r\n });\r\n }\r\n }\r\n\r\n private showLoading(item): void {\r\n item.loading = true;\r\n }\r\n\r\n private hideLoading(item): void {\r\n if (item != null) {\r\n item.loading = false;\r\n }\r\n }\r\n\r\n public openAll(loadAll: boolean = false) {\r\n // if (loadAll) {\r\n // this.loadAllChildren = true;\r\n // this.listChange('toggle', true);\r\n //} else {\r\n this.listChange('toggle', true);\r\n // }\r\n }\r\n\r\n public selectItem(item) {\r\n if (item['select'] != true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n public unSelectItem(item) {\r\n if (item['select'] == true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n public open(item) {\r\n if (item['toggle'] !== true) {\r\n this.toggleNode(item, true);\r\n }\r\n }\r\n\r\n public scrolIntoView(item) {\r\n let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);\r\n element.scrollIntoView();\r\n }\r\n\r\n public closeAll() {\r\n this.listChange('toggle', false);\r\n }\r\n\r\n public selectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', true);\r\n }\r\n }\r\n\r\n public unSelectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', false);\r\n }\r\n this.selectedItems = [];\r\n }\r\n\r\n public getSelectedNodes(): AXTreeViewNode[] {\r\n const selectItemsNode = [];\r\n this.selectedItems.forEach((e) => {\r\n selectItemsNode.push(this.makeNode(e));\r\n });\r\n return selectItemsNode;\r\n }\r\n\r\n public getSelectedParents(): AXTreeViewNode[] {\r\n const selectItemsParent = [];\r\n this.selectedParents.forEach((e) => {\r\n selectItemsParent.push(this.makeNode(e));\r\n });\r\n return selectItemsParent;\r\n }\r\n\r\n getParentsId(item) {\r\n let keyFields = [];\r\n keyFields.push(item[this.keyField]);\r\n if (item.parentNode) {\r\n keyFields.push(...this.getParentsId(item.parentNode));\r\n }\r\n return keyFields;\r\n }\r\n\r\n public getSelectedKeyFields() {\r\n let keyFields = [];\r\n this.selectedItems.forEach((elm) => {\r\n var Ids = this.getParentsId(elm);\r\n if (Ids) {\r\n keyFields.push(Ids);\r\n }\r\n });\r\n return keyFields;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXTreeViewComponent } from './tree-view.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDataSourceModule } from '../data-source/datasource.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXContextMenuModule } from '../context-menu/context-menu.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTreeViewComponent],\r\n imports: [AXDataSourceModule, CommonModule, AXCheckBoxModule, AXContextMenuModule],\r\n exports: [AXTreeViewComponent],\r\n providers: []\r\n})\r\n\r\nexport class AXTreeViewModule { }","import {\r\n Component,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n ViewEncapsulation,\r\n TemplateRef,\r\n Renderer2,\r\n EventEmitter,\r\n Output,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXUploadFileLoadEvent, AXUploadFileProgressEvent } from './upload-file.events';\r\nimport { AXProgressBarComponent } from '../progress-bar/progress-bar.component';\r\nimport { AXBaseTextComponent, AXElementSize, AXBaseSizableComponent, AXBaseComponent } from '../base/element.class';\r\nimport { AXRenderService } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-upload-file',\r\n templateUrl: './upload-file.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n host: { style: 'display: block; width:100%; position: relative' }\r\n})\r\nexport class AXUploadFileComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n private overlayDiv: HTMLElement;\r\n\r\n @Input()\r\n dropRef: HTMLElement;\r\n\r\n @Input()\r\n progressRef: HTMLElement;\r\n\r\n @Input()\r\n label: string;\r\n\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @ViewChild('fileInput') fileInput: ElementRef;\r\n\r\n @Input()\r\n type: 'box' | 'inline' | 'hidden' = 'inline';\r\n\r\n @Input()\r\n public template: TemplateRef<any>;\r\n\r\n @Input() disabled: boolean = false;\r\n @Output()\r\n onLoad: EventEmitter<AXUploadFileLoadEvent> = new EventEmitter<AXUploadFileLoadEvent>();\r\n\r\n @Output()\r\n onProgress: EventEmitter<AXUploadFileProgressEvent> = new EventEmitter<AXUploadFileProgressEvent>();\r\n\r\n files: File[] = [];\r\n focus() { }\r\n\r\n fileName: string = '';\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private injectionService: AXRenderService,\r\n private rendrer: Renderer2,\r\n protected cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n\r\n onDeleteClick(e) {\r\n e.stopPropagation();\r\n }\r\n\r\n onFileChange(e) {\r\n const files = e.target.files;\r\n this.addFile(files[0]);\r\n (this.fileInput.nativeElement as HTMLInputElement).value = null;\r\n }\r\n\r\n open() {\r\n this.fileInput.nativeElement.click();\r\n }\r\n remove() {\r\n this.files = [];\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.dropRef != null) {\r\n } else {\r\n this.dropRef = this.el.nativeElement;\r\n }\r\n //\r\n if (this.progressRef != null) {\r\n } else {\r\n this.progressRef = this.el.nativeElement;\r\n }\r\n //\r\n if (this.type === 'hidden' || this.type === 'box') {\r\n this.overlayDiv = this.rendrer.createElement('div') as HTMLElement;\r\n this.overlayDiv.classList.add('overlay');\r\n this.overlayDiv.innerHTML = `\r\n <div class=\"icon-wrapper\">\r\n <i class=\"far fa-cloud-upload-alt fa-3x\"></i>\r\n <span>Drop File(s) Here</span>\r\n </div>\r\n `;\r\n this.overlayDiv.addEventListener('drag', this.handleOverlayDragOver);\r\n this.overlayDiv.addEventListener('dragover', this.handleOverlayDragOver);\r\n this.overlayDiv.addEventListener('dragleave', this.handleOverlayDragOver);\r\n this.rendrer.appendChild(this.dropRef, this.overlayDiv);\r\n }\r\n //\r\n this.dropRef.classList.add('ax-upload-drop-over');\r\n this.dropRef.addEventListener('dragover', this.handleDragOver.bind(this));\r\n this.dropRef.addEventListener('dragleave', this.handleDragLeave.bind(this));\r\n this.dropRef.addEventListener('drop', this.handleDrop.bind(this));\r\n }\r\n\r\n private handleOverlayDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n private handleDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.overlayDiv.classList.add('show');\r\n return false;\r\n }\r\n\r\n private handleDragLeave(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.overlayDiv.classList.remove('show');\r\n return false;\r\n }\r\n\r\n handleDrop(e: DragEvent) {\r\n this.handleDragLeave(e);\r\n for (let i = 0; i < e.dataTransfer.files.length; i++) {\r\n const file = e.dataTransfer.files[i];\r\n this.addFile(file);\r\n }\r\n }\r\n\r\n private addFile(file: File) {\r\n const progressDiv = this.rendrer.createElement('div') as HTMLElement;\r\n progressDiv.classList.add('ax-upload-progress-panel');\r\n const progressLabel = this.rendrer.createElement('small') as HTMLElement;\r\n progressLabel.innerText = file.name;\r\n this.fileName = file.name;\r\n this.rendrer.appendChild(this.progressRef, progressDiv);\r\n const com = this.injectionService.appendComponent(AXProgressBarComponent, { progress: 0 }, progressDiv).instance as AXProgressBarComponent;\r\n this.rendrer.appendChild(progressDiv, progressLabel);\r\n\r\n const reader = new FileReader();\r\n reader.addEventListener('load', (e) => {\r\n this.onLoad.emit({\r\n file,\r\n data: (e as any).target.result\r\n });\r\n //\r\n // Fake Upload\r\n let pv = 0;\r\n let uploaded = 0;\r\n const intv = setInterval(() => {\r\n uploaded += 1024 * 1000;\r\n if (uploaded > e.total) {\r\n uploaded = e.total;\r\n }\r\n pv = Math.ceil((uploaded / e.total) * 100);\r\n com.progress = pv;\r\n this.onProgress.emit({\r\n file,\r\n total: e.total,\r\n uploaded,\r\n value: pv\r\n });\r\n //\r\n if (com.progress >= 100) {\r\n clearInterval(intv);\r\n setTimeout(() => {\r\n this.rendrer.removeChild(this.progressRef, progressDiv);\r\n }, 1000);\r\n }\r\n }, 100);\r\n });\r\n reader.readAsDataURL(file);\r\n this.files.push(file);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXUploadFileComponent } from './upload-file.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXProgressBarModule } from '../progress-bar/progress-bar.module';\r\nimport { AXLabelModule } from '../label/label.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\n\r\n@NgModule({\r\n declarations: [AXUploadFileComponent],\r\n imports: [CommonModule, AXButtonModule, AXTextBoxModule, AXProgressBarModule, AXLabelModule, AXFormGroupModule],\r\n exports: [AXUploadFileComponent],\r\n providers: []\r\n})\r\nexport class AXUploadFileModule {}\r\n","import { Component, Input, Output, EventEmitter, ContentChild, TemplateRef, ContentChildren, QueryList } from \"@angular/core\";\r\nimport { AXPanelBoxComponent } from \"../panel-box/panel-box.component\";\r\nimport { AXBaseComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: \"ax-accordion\",\r\n template: \"<ng-content></ng-content>\",\r\n})\r\nexport class AXAccordionComponent extends AXBaseComponent {\r\n\r\n @ContentChildren(AXPanelBoxComponent)\r\n panels: QueryList<AXPanelBoxComponent>;\r\n\r\n @Input()\r\n multiple: boolean = false;\r\n\r\n constructor() {\r\n super()\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.panels.forEach(p => {\r\n if (this.multiple == false)\r\n p.collapsed = true;\r\n p.collapsedChange.subscribe((v: boolean) => {\r\n this.handleCollapsedChanged(p, v);\r\n });\r\n });\r\n if (this.multiple == false)\r\n this.panels.first.collapsed = false;\r\n }\r\n\r\n private handleCollapsedChanged(panel: AXPanelBoxComponent, value: boolean) {\r\n if (value == false && this.multiple == false) {\r\n this.panels.forEach(p => {\r\n if (p != panel)\r\n p.collapsed = true;\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXAccordionComponent } from \"./accordion.component\";\r\nimport { AXPanelBoxModule } from \"../panel-box/panel-box.module\";\r\n@NgModule({\r\n declarations: [AXAccordionComponent],\r\n imports: [CommonModule, AXPanelBoxModule],\r\n exports: [AXAccordionComponent],\r\n providers: []\r\n})\r\nexport class AXAccordionModule { }\r\n","import { Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AXValidatableComponent } from '../base/element.class';\r\n\r\nexport type AXDataType = 'string' | 'number' | 'date' | 'boolean' | 'object';\r\nexport type AXControlType = 'textbox' | 'numberbox' | 'datePicker' | 'switch' | 'custom';\r\n\r\n\r\n\r\nexport interface AXPropertyDef {\r\n name: string;\r\n title: string;\r\n hint?: string;\r\n defaultValue?: any;\r\n editorClass: any;\r\n editorOptions?: any;\r\n visible?: boolean | (() => boolean);\r\n order?: number;\r\n}\r\n\r\nexport interface AXPropertyEditorDef {\r\n title: string;\r\n hint?: string;\r\n defaultValue?: any;\r\n editorClass: any;\r\n editorOptions?: any;\r\n visible?: boolean | (() => boolean);\r\n order?: number;\r\n}\r\n\r\n\r\n\r\n\r\nexport interface AXPropertyConfig {\r\n property: AXPropertyDef;\r\n value: any;\r\n}\r\n\r\n\r\nexport interface AXProperyEditorValueChangeEvent {\r\n property: AXPropertyDef;\r\n value: any;\r\n}\r\n\r\n\r\n\r\nexport abstract class AXProperyEditorComponent<T>{\r\n\r\n\r\n readonly: boolean = false;\r\n\r\n\r\n private _initiated: boolean = false;\r\n private _valueBound: boolean = false;\r\n\r\n public get initiated(): boolean {\r\n return this._initiated && this._valueBound;\r\n }\r\n\r\n\r\n validatableComponentRegistered: Subject<AXValidatableComponent> = new Subject<AXValidatableComponent>();\r\n\r\n\r\n registerForValidationForm(component?: AXValidatableComponent) {\r\n this.validatableComponentRegistered.next(component);\r\n }\r\n\r\n\r\n @Output()\r\n valueChange: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n\r\n @Output()\r\n onRenderCompleted: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n private _value: T;\r\n @Input()\r\n public get value(): T {\r\n return this._value;\r\n }\r\n\r\n public set value(v: T) {\r\n if (v !== this._value) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.cdr.detectChanges();\r\n //TODO: find better solution\r\n setTimeout(() => {\r\n this._valueBound = true;\r\n }, 100);\r\n }\r\n }\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n this.onRenderCompleted.subscribe(() => {\r\n this._initiated = true;\r\n });\r\n }\r\n\r\n uid: string;\r\n\r\n handleValueChange(v: T) {\r\n this.value = v;\r\n }\r\n}\r\n\r\n\r\n\r\nexport class AXPropertyDecorator {\r\n cls: any;\r\n property: string;\r\n options: any;\r\n\r\n constructor(\r\n cls: any,\r\n property: string,\r\n options: any) {\r\n this.cls = cls;\r\n this.property = property;\r\n this.options = options;\r\n }\r\n}\r\n\r\n\r\n// @dynamic\r\nexport class AXPropertyDecorators {\r\n private static REGISTRY = new Array<AXPropertyDecorator>();\r\n\r\n static register(cls: string, property: string, options?: any) {\r\n const item = AXPropertyDecorators.REGISTRY.find(c => c.cls === cls && c.property === property);\r\n if (item) {\r\n item.options = options;\r\n }\r\n else {\r\n AXPropertyDecorators.REGISTRY.push(new AXPropertyDecorator(cls, property, options));\r\n }\r\n }\r\n\r\n\r\n\r\n static has(cls: string, property: string): boolean {\r\n return AXPropertyDecorators.REGISTRY.some(c => c.cls === cls && c.property === property);\r\n }\r\n\r\n static get(cls: string, property: string): AXPropertyDecorator {\r\n return AXPropertyDecorators.REGISTRY.find(c => c.cls === cls && c.property === property);\r\n }\r\n\r\n static isValid(property: string): boolean {\r\n if (property) {\r\n return AXPropertyDecorators.REGISTRY.some(c => c.property === property);\r\n }\r\n return false;\r\n }\r\n\r\n static getProperties(target: any): AXPropertyDecorator[] {\r\n const list: AXPropertyDecorator[] = [];\r\n const p: any[] = Array<any>();\r\n let superClass = Object.getPrototypeOf(target);\r\n while (superClass.constructor.name !== 'Object') {\r\n p.push(superClass.constructor);\r\n superClass = Object.getPrototypeOf(superClass);\r\n }\r\n list.push(...AXPropertyDecorators.REGISTRY.filter(c => p.includes(c.cls.constructor)));\r\n return list;\r\n }\r\n}\r\n\r\n\r\n\r\nexport function propertyEditor(options: AXPropertyEditorDef) {\r\n return (target: any, key: string) => {\r\n (options as any).name = key;\r\n AXPropertyDecorators.register(target, key, options);\r\n };\r\n}\r\n\r\n","import { Directive, ViewContainerRef, ComponentFactoryResolver, Input, Output, EventEmitter, KeyValueDiffer, KeyValueDiffers } from '@angular/core';\r\nimport { AXProperyEditorComponent, AXProperyEditorValueChangeEvent, AXPropertyConfig } from './property-editor.class';\r\nimport { AXEventService, AXObjectUtil, AXRenderService, getPropByPath, setPropByPath } from '@acorex/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\n\r\n@Directive({\r\n selector: '[ax-property-editor-renderer]',\r\n})\r\nexport class AXPropertyEditorRendererDirective {\r\n\r\n private instance: AXProperyEditorComponent<any>;\r\n\r\n @Input()\r\n property: AXPropertyConfig;\r\n\r\n\r\n @Input()\r\n validationForm: AXValidationFormComponent;\r\n\r\n\r\n\r\n private _context: any = {};\r\n @Input()\r\n public get context(): any {\r\n return this._context;\r\n }\r\n public set context(v: any) {\r\n this._context = v;\r\n }\r\n\r\n @Input()\r\n host: any;\r\n\r\n @Input()\r\n groupId: any;\r\n\r\n\r\n @Output()\r\n onValueChange: EventEmitter<AXProperyEditorValueChangeEvent> = new EventEmitter<AXProperyEditorValueChangeEvent>();\r\n\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private target: ViewContainerRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private renderService: AXRenderService,\r\n private eventService: AXEventService\r\n ) {\r\n\r\n }\r\n\r\n\r\n clear() {\r\n this.instance.value = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createComponent();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n createComponent() {\r\n this.renderService.findLoadedComponentByRoute(this.property.property.editorClass).then(c => {\r\n if (c) {\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(c.component);\r\n const cmpRef = this.target.createComponent(factory);\r\n this.instance = cmpRef.instance as AXProperyEditorComponent<any>;\r\n this.subscription = this.instance.valueChange.subscribe(value => {\r\n this.property.value = value;\r\n this.onValueChange.emit(this.property);\r\n if (this.property?.property?.name) {\r\n setTimeout(() => {\r\n this.eventService.broadcast(`props-${this.groupId}-${this.property.property.name}`, this.property);\r\n }, 0);\r\n }\r\n });\r\n this.watchChanges();\r\n this.assignProps();\r\n this.instance.value = this.property.value;\r\n\r\n // this.instance.onRenderCompleted.subscribe(() => {\r\n \r\n \r\n // });\r\n \r\n if (this.validationForm) {\r\n this.instance.validatableComponentRegistered.subscribe(v => {\r\n this.validationForm.addWidget(v);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n private watchChanges() {\r\n const varsRegx = /((\\$\\{[a-zA-Z_0-9]+\\})+)/gm;\r\n const varNameRegx = /[a-zA-Z_0-9]+/gm;\r\n const options = this.property.property.editorOptions;\r\n if (!options) {\r\n return;\r\n }\r\n for (const p in options) {\r\n if (options.hasOwnProperty(p)) {\r\n const opt = options[p];\r\n const vars = typeof opt === 'string' ? opt?.match(varsRegx) : [];\r\n // bind the props\r\n if (vars?.length) {\r\n vars.forEach(v => {\r\n const path = v.match(varNameRegx)?.length ? v.match(varNameRegx)[0] : null;\r\n if (path) {\r\n this.eventService.on(`props-${this.groupId}-${path}`, (e: AXPropertyConfig) => {\r\n let execCode = opt.slice();\r\n const params = {};\r\n vars.forEach(vv => {\r\n const p2 = vv.match(varNameRegx)?.length ? vv.match(varNameRegx)[0] : null;\r\n params[p2] = AXObjectUtil.deepCopy(this.context[p2]) || null;\r\n execCode = execCode.replace(vv, `__params__.${p2}`);\r\n });\r\n\r\n const func = new Function('__params__', `try { return ${execCode}} catch(e){ console.log(e); return null; }`);\r\n const val = func(params);\r\n\r\n const keys = p.split('.');\r\n const prop = Object.assign({}, this.instance[keys[0]]);\r\n if (keys.length > 1) {\r\n this.instance[keys[0]] = setPropByPath(prop, p, val);\r\n }\r\n else {\r\n setPropByPath(this.instance, p, val)\r\n }\r\n });\r\n }\r\n });\r\n }\r\n // else {\r\n // this.assignProps();\r\n // }\r\n }\r\n }\r\n }\r\n\r\n\r\n private assignProps() {\r\n const options = this.property.property.editorOptions;\r\n if (!options) {\r\n return;\r\n }\r\n const varsRegx = /((\\$\\{[a-zA-Z_0-9]+\\})+)/gm;\r\n for (const p in options) {\r\n if (options.hasOwnProperty(p)) {\r\n const opt = options[p];\r\n const vars = typeof opt === 'string' ? opt?.match(varsRegx) : [];\r\n if (vars?.length) {\r\n continue;\r\n }\r\n else {\r\n const val = typeof opt === 'function' ? opt({ data: this.context, host: this.host }, this.property) : opt;\r\n if (val instanceof Promise) {\r\n val.then(v => {\r\n setPropByPath(this.instance, p, val);\r\n });\r\n }\r\n else {\r\n setPropByPath(this.instance, p, val);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}","import { Component, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXTextBoxComponent } from '../../../textbox/textbox.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n templateUrl: './text.editor.html',\r\n})\r\nexport class AXTextPropertyEditorComponent extends AXProperyEditorComponent<string> {\r\n\r\n\r\n @ViewChild(AXTextBoxComponent)\r\n private textBox: AXTextBoxComponent;\r\n\r\n\r\n validation: AXValidation;\r\n clearButton: boolean = false;\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextPropertyEditorComponent } from './text.editor';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTextPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTextBoxModule, AXValidationModule],\r\n exports: [AXTextPropertyEditorComponent],\r\n entryComponents: [AXTextPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXTextPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXNumberBoxComponent } from '../../../number-box/number-box.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-number-box (onValueChanged)=\"handleValueChange($event)\"\r\n [value]=\"value\"\r\n [showSeparator]=\"showSeparator\"\r\n [decimalNumber]=\"decimalNumber\"\r\n [min]=\"minValue\"\r\n [max]=\"maxValue\"\r\n [allowClear]=\"clearButton\"\r\n >\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-number-box>\r\n `,\r\n})\r\nexport class AXNumberBoxPropertyEditorComponent extends AXProperyEditorComponent<number> {\r\n\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n minValue?: number = null;\r\n maxValue?: number = null;\r\n validation: AXValidation;\r\n clearButton: boolean = false;\r\n\r\n @ViewChild(AXNumberBoxComponent)\r\n private textBox: AXNumberBoxComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXNumberBoxPropertyEditorComponent } from './number.editor';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXNumberBoxPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXNumberBoxModule,AXValidationModule],\r\n exports: [AXNumberBoxPropertyEditorComponent],\r\n entryComponents: [AXNumberBoxPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXNumberBoxPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXSelectBoxComponent } from '../../../selectbox/selectbox.component';\r\n\r\n@Component({\r\n templateUrl: './selectbox.editor.html',\r\n})\r\nexport class AXSelectBoxPropertyEditorComponent extends AXProperyEditorComponent<any> {\r\n\r\n\r\n valueField: string = 'id';\r\n textField: string = 'text';\r\n selectionMode: string = 'single';\r\n selectionDataMode: string = 'value';\r\n allowSearch: boolean = true;\r\n allowNull: boolean = false;\r\n disabled: boolean = false;\r\n items: any = [];\r\n remoteOperation = false;\r\n\r\n validation: AXValidation;\r\n\r\n @ViewChild(AXSelectBoxComponent, { static: true })\r\n selectBox: AXSelectBoxComponent;\r\n\r\n\r\n\r\n private _filter: any;\r\n public get filter(): any {\r\n return this._filter;\r\n }\r\n public set filter(v: any) {\r\n this._filter = v;\r\n if (this.value && this.initiated) {\r\n this.value = null;\r\n this.selectBox?.refresh();\r\n }\r\n }\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.selectedValues);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.selectBox);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n provideData = (e): Promise<any> => {\r\n return new Promise((resolve) => {\r\n const func = () => {\r\n if (Array.isArray(this.items)) {\r\n resolve(this.items.slice());\r\n }\r\n else if (typeof this.items === 'function') {\r\n const a = Object.assign(e, { sender: this })\r\n resolve(this.items(a));\r\n }\r\n else {\r\n resolve([]);\r\n }\r\n };\r\n const intVal = setInterval(() => {\r\n if (this.initiated) {\r\n func();\r\n clearInterval(intVal);\r\n }\r\n },50);\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXSelectBoxPropertyEditorComponent } from './selectbox.editor';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\nimport { AXDataSourceModule } from '../../../data-source/datasource.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSelectBoxPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXSelectBoxModule, AXDataSourceModule, AXValidationModule],\r\n exports: [AXSelectBoxPropertyEditorComponent],\r\n entryComponents: [AXSelectBoxPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXSelectBoxPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, ChangeDetectorRef, ViewChild, TemplateRef, ChangeDetectionStrategy, ElementRef } from '@angular/core';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXValidationFormComponent } from '../../../validation/validation-form.component';\r\n\r\n\r\nexport interface AXRangeModel {\r\n title: string;\r\n color?: string;\r\n minValue: number;\r\n maxValue: number;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n templateUrl: './range.editor.html',\r\n styleUrls: ['./range.editor.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXRangePropertyEditorComponent extends AXProperyEditorComponent<AXRangeModel[]> {\r\n\r\n\r\n private form: AXValidationFormComponent;\r\n\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n ranges: AXRangeModel[] = [];\r\n\r\n editRow: AXRangeModel;\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.ranges = this.value ? JSON.parse(JSON.stringify(this.value)) : [];\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n // getRanges() {\r\n // return this.ranges.sort((a, b) => a.minValue - b.minValue);\r\n // }\r\n\r\n onFormInit(e) {\r\n this.form = e.component;\r\n }\r\n\r\n\r\n handleEditClick(item: AXRangeModel) {\r\n this.editRow = Object.assign({}, item);\r\n const popup = this.popupService.open(this.tplEdit, {\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n Object.assign(item, this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n title: AXTranslator.get('common.edit')\r\n });\r\n }\r\n\r\n handleAddClick() {\r\n const min = this.ranges?.length ? Math.max(...this.ranges.map(c => c.maxValue)) : 0;\r\n this.editRow = {\r\n title: '',\r\n minValue: min,\r\n maxValue: min + 1,\r\n color: null\r\n };\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: AXTranslator.get('common.add-item'),\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n this.ranges.push(this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleRemoveClick(item: AXRangeModel) {\r\n this.ranges = this.ranges.filter(c => c.minValue !== item.minValue);\r\n super.handleValueChange(this.ranges);\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXValidatableComponent } from '../../base/element.class';\r\nimport { AXColorUtil, AXColor } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-color-box',\r\n templateUrl: './color-box.component.html',\r\n styleUrls: ['./color-box.component.scss'],\r\n providers: [\r\n { provide: AXValidatableComponent, useExisting: AXColorBoxComponent },\r\n ]\r\n})\r\nexport class AXColorBoxComponent extends AXValidatableComponent {\r\n\r\n inputFormat: 'hex' | 'rgb' = 'hex';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n @Output()\r\n onColorSelect: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n private _value: string;\r\n\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n if (v != this._value) {\r\n this._value = v;\r\n if (v) {\r\n const selected = this.colors.find(c => c.code === v);\r\n if (selected) {\r\n this.selectColor(selected);\r\n }\r\n else {\r\n this.colors.forEach((i) => {\r\n i.active = false\r\n });\r\n }\r\n const rgb = AXColorUtil.hex2Rgb(v);\r\n\r\n if (rgb) {\r\n this.rColor = rgb.r;\r\n this.gColor = rgb.g;\r\n this.bColor = rgb.b;\r\n }\r\n }\r\n else {\r\n this.rColor = null;\r\n this.gColor = null;\r\n this.bColor = null;\r\n }\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n\r\n rColor: number = 0;\r\n gColor: number = 0;\r\n bColor: number = 0;\r\n\r\n\r\n colors: AXColor[] = [\r\n // Pink ***************************\r\n {\r\n code: '#FFC0CB',\r\n },\r\n {\r\n code: '#FF69B4',\r\n },\r\n {\r\n code: '#DB7093',\r\n },\r\n {\r\n code: '#C71585',\r\n },\r\n // Purple ***************************\r\n {\r\n code: '#E6E6FA',\r\n },\r\n {\r\n code: '#D8BFD8',\r\n },\r\n {\r\n code: '#DDA0DD',\r\n },\r\n {\r\n code: '#DA70D6',\r\n },\r\n {\r\n code: '#FF00FF',\r\n },\r\n {\r\n code: '#BA55D3',\r\n },\r\n {\r\n code: '#9932CC',\r\n },\r\n {\r\n code: '#8A2BE2',\r\n\r\n },\r\n {\r\n code: '#8B008B',\r\n },\r\n {\r\n code: '#9370DB',\r\n },\r\n {\r\n code: '#7B68EE',\r\n },\r\n {\r\n code: '#6A5ACD',\r\n },\r\n {\r\n code: '#483D8B',\r\n },\r\n {\r\n code: '#663399',\r\n },\r\n {\r\n code: '#4B0082',\r\n },\r\n // Red ***************************\r\n {\r\n code: '#FFA07A',\r\n },\r\n {\r\n code: '#FA8072',\r\n },\r\n {\r\n code: '#F08080',\r\n },\r\n {\r\n code: '#CD5C5C',\r\n },\r\n {\r\n code: '#DC143C',\r\n },\r\n {\r\n code: '#FF0000',\r\n },\r\n {\r\n code: '#B22222',\r\n },\r\n {\r\n code: '#8B0000',\r\n },\r\n // Orange ***************************\r\n {\r\n code: '#FFA500',\r\n },\r\n {\r\n code: '#FF8C00',\r\n },\r\n {\r\n code: '#FF7F50',\r\n },\r\n {\r\n code: '#FF6347',\r\n },\r\n {\r\n code: '#FF4500',\r\n },\r\n {\r\n code: '#FFD700',\r\n },\r\n // Yellow ***************************\r\n {\r\n code: '#FFFF00',\r\n },\r\n {\r\n code: '#FFFFE0',\r\n },\r\n {\r\n code: '#FFFACD',\r\n },\r\n {\r\n code: '#FFEFD5',\r\n },\r\n {\r\n code: '#FFE4B5',\r\n },\r\n {\r\n code: '#FFDAB9',\r\n },\r\n {\r\n code: '#EEE8AA',\r\n },\r\n {\r\n code: '#F0E68C',\r\n },\r\n {\r\n code: '#BDB76B',\r\n },\r\n // Brown ***************************\r\n // {\r\n // code: '#FFF8DC'\r\n // },\r\n // {\r\n // code: '#FFEBCD'\r\n // },\r\n // {\r\n // code: '#FFE4C4'\r\n // },\r\n {\r\n code: '#FFDEAD'\r\n },\r\n {\r\n code: '#DEB887'\r\n },\r\n {\r\n code: '#D2B48C'\r\n },\r\n {\r\n code: '#DAA520'\r\n },\r\n {\r\n code: '#B8860B'\r\n },\r\n {\r\n code: '#CD853F'\r\n },\r\n {\r\n code: '#D2691E'\r\n },\r\n {\r\n code: '#8B4513'\r\n },\r\n {\r\n code: '#A0522D'\r\n },\r\n // Green ***************************\r\n {\r\n code: '#ADFF2F',\r\n },\r\n {\r\n code: '#7FFF00',\r\n },\r\n {\r\n code: '#00FF00',\r\n },\r\n {\r\n code: '#32CD32',\r\n },\r\n {\r\n code: '#98FB98',\r\n },\r\n {\r\n code: '#90EE90',\r\n },\r\n {\r\n code: '#00FA9A',\r\n },\r\n {\r\n code: '#00FF7F',\r\n },\r\n {\r\n code: '#3CB371',\r\n },\r\n {\r\n code: '#2E8B57',\r\n },\r\n {\r\n code: '#228B22',\r\n },\r\n {\r\n code: '#008000',\r\n },\r\n {\r\n code: '#006400',\r\n },\r\n {\r\n code: '#9ACD32',\r\n },\r\n {\r\n code: '#6B8E23',\r\n },\r\n {\r\n code: '#556B2F',\r\n },\r\n {\r\n code: '#66CDAA',\r\n },\r\n {\r\n code: '#8FBC8F',\r\n },\r\n {\r\n code: '#20B2AA',\r\n },\r\n {\r\n code: '#008B8B',\r\n },\r\n // Cyan ***************************\r\n\r\n {\r\n code: '#E0FFFF',\r\n },\r\n {\r\n code: '#AFEEEE',\r\n },\r\n {\r\n code: '#7FFFD4',\r\n },\r\n {\r\n code: '#40E0D0',\r\n },\r\n {\r\n code: '#48D1CC',\r\n },\r\n {\r\n code: '#00CED1',\r\n },\r\n // Blue ***************************\r\n {\r\n code: '#5F9EA0'\r\n },\r\n {\r\n code: '#4682B4'\r\n },\r\n {\r\n code: '#B0C4DE'\r\n },\r\n {\r\n code: '#ADD8E6'\r\n },\r\n {\r\n code: '#B0E0E6'\r\n },\r\n {\r\n code: '#87CEFA'\r\n },\r\n {\r\n code: '#87CEEB'\r\n },\r\n {\r\n code: '#6495ED'\r\n },\r\n {\r\n code: '#00BFFF'\r\n },\r\n {\r\n code: '#00FFFF',\r\n },\r\n {\r\n code: '#1E90FF'\r\n },\r\n {\r\n code: '#4169E1'\r\n },\r\n {\r\n code: '#0000FF'\r\n },\r\n {\r\n code: '#0000CD'\r\n },\r\n {\r\n code: '#00008B'\r\n },\r\n {\r\n code: '#191970'\r\n },\r\n // Gray\r\n {\r\n code: '#FFFFFF'\r\n },\r\n {\r\n code: '#DCDCDC'\r\n },\r\n {\r\n code: '#808080'\r\n },\r\n {\r\n code: '#708090'\r\n },\r\n {\r\n code: '#000000'\r\n },\r\n ];\r\n\r\n\r\n // validate(): Promise<IValidationRuleResult> {\r\n\r\n // return new Promise<IValidationRuleResult>(resolve => {\r\n // if (!this.validator) {\r\n // resolve({ result: true });\r\n // } else {\r\n // // this.validator.validate(this.model).then(r => {\r\n // // r.target = this;\r\n // // if (r.result) {\r\n // // this.errorText = null;\r\n // // } else {\r\n // // this.errorText = r.message;\r\n // // }\r\n // // resolve(r);\r\n // // });\r\n\r\n // resolve()\r\n // }\r\n // });\r\n // }\r\n\r\n focus() {\r\n }\r\n\r\n clear(): void {\r\n this.value = null;\r\n }\r\n\r\n onColorClick(item: AXColor) {\r\n this.value = item ? item.code : null;\r\n this.selectColor(item);\r\n this.onColorSelect.emit(this.value);\r\n }\r\n\r\n handleColorChange() {\r\n this.value = AXColorUtil.rgb2Hex(this.rColor, this.gColor, this.bColor);\r\n\r\n }\r\n\r\n private selectColor(item: AXColor) {\r\n this.colors.forEach((i) => {\r\n i.active = false;\r\n });\r\n item.active = true\r\n }\r\n\r\n handleKeyEvent(e: KeyboardEvent) {\r\n if (e.code == 'Enter' || e.code == 'NumpadEnter') {\r\n this.onColorSelect.emit(this.value);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Input, Output, EventEmitter, ContentChild, ElementRef } from '@angular/core';\r\nimport { AXValidatableComponent, AXBaseSizableComponent, AXBaseInputComponent, AXElementSize } from '../base/element.class';\r\nimport { AXColorBoxComponent } from './color-box/color-box.component';\r\nimport { AXColorUtil, AXConfig } from '@acorex/core';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\n\r\n\r\n@Component({\r\n selector: 'ax-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n providers: [\r\n { provide: AXValidatableComponent, useExisting: AXColorPickerComponent },\r\n ],\r\n host: { style:'width: 100%' }\r\n})\r\nexport class AXColorPickerComponent extends AXColorBoxComponent implements AXBaseSizableComponent, AXBaseInputComponent {\r\n\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: AXDropdownComponent;\r\n @Input() placeholder: string = '';\r\n @Input() showClear: boolean = false;\r\n\r\n @Input() label: string;\r\n\r\n _text: string = '';\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n @Input()\r\n readonly: boolean;\r\n @Input()\r\n disabled: boolean;\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit() {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n focus(): void {\r\n this.dropdown.focus();\r\n }\r\n\r\n // handleValueChange(c: string) {\r\n\r\n // }\r\n\r\n findTextColor(color: string) {\r\n if (!color) {\r\n return '#000';\r\n }\r\n return !(AXColorUtil.contrastToWhite(color) > 2.0) ? '#000' : '#fff';\r\n }\r\n\r\n handleItemClick(e) {\r\n this.dropdown.close();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXColorPickerComponent } from './color-picker.component';\r\nimport { AXColorBoxComponent } from './color-box/color-box.component';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXColorPickerComponent, AXColorBoxComponent],\r\n imports: [CommonModule, FormsModule, AXDropdownModule, AXValidationModule, AXTextBoxModule],\r\n exports: [AXColorPickerComponent, AXColorBoxComponent],\r\n providers: []\r\n})\r\nexport class AXColorPickerModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXRangePropertyEditorComponent } from './range.editor';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXRangePropertyEditorComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXTranslatorModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXColorPickerModule,\r\n AXLabelModule,\r\n AXPageModule,\r\n AXValidationModule,\r\n AXButtonModule\r\n ],\r\n exports: [AXRangePropertyEditorComponent],\r\n entryComponents: [AXRangePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXRangePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXColorPickerComponent } from '../../../color-picker/color-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-color-picker [(value)]=\"value\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-color-picker>\r\n `,\r\n})\r\nexport class AXColorPropertyEditorComponent extends AXProperyEditorComponent<string> {\r\n\r\n validation: AXValidation;\r\n\r\n @ViewChild(AXColorPickerComponent)\r\n private textBox: AXColorPickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXColorPropertyEditorComponent } from './color.editor';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXColorPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXColorPickerModule, AXValidationModule],\r\n exports: [AXColorPropertyEditorComponent],\r\n entryComponents: [AXColorPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXColorPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ViewChild, TemplateRef, ChangeDetectorRef } from '@angular/core';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXDataSourceReadParams } from '../../../data-source/read-param';\r\n\r\n\r\nexport interface AXTableColumnModel {\r\n id: number;\r\n index: number;\r\n fieldName: string;\r\n caption?: string;\r\n fieldType?: string;\r\n displayType?: string;\r\n fillByUser?: boolean;\r\n rowHeader?: boolean;\r\n}\r\n\r\n@Component({\r\n templateUrl: './column.editor.html',\r\n styleUrls: ['./column.editor.scss']\r\n})\r\nexport class ColumnPropertyEditorComponent extends AXProperyEditorComponent<AXTableColumnModel[]> implements OnInit {\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n columns: AXTableColumnModel[] = [];\r\n\r\n index: number = 2;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n columnTypeData: any[] = [\r\n { id: 1, title: 'String' },\r\n { id: 2, title: 'Number' },\r\n { id: 3, title: 'Boolean' },\r\n { id: 4, title: 'Data' },\r\n { id: 5, title: 'Time' }\r\n ];\r\n\r\n ngOnInit(): void {\r\n this.columns = this.value ? JSON.parse(JSON.stringify(this.value)) : [];\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n handleAddColumn() {\r\n this.columns.push({\r\n id: Math.floor(1000*Math.random()*9000),\r\n index: this.index,\r\n fieldName: 'ستون' + this.index,\r\n caption: 'ستون' + this.index,\r\n fieldType: '',\r\n displayType: '',\r\n fillByUser: false,\r\n rowHeader: false\r\n });\r\n this.index++;\r\n }\r\n\r\n handleAddClick() {\r\n if (this.columns.length === 0) {\r\n this.columns.push({\r\n id: Math.floor(1000*Math.random()*9000),\r\n index: 1,\r\n fieldName: 'ستون 1',\r\n caption: 'ستون 1',\r\n fieldType: '',\r\n displayType: '',\r\n fillByUser: false,\r\n rowHeader: false\r\n });\r\n }\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: 'ستون',\r\n size: 'lg',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n super.handleValueChange(this.columns);\r\n this.cdr.detectChanges();\r\n this.index++;\r\n popup.close();\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n this.cdr.detectChanges();\r\n popup.close();\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n\r\n handleRemoveClick(item: AXTableColumnModel) {\r\n this.columns = this.columns.filter((c) => c.id !== item.id);\r\n super.handleValueChange(this.columns);\r\n }\r\n\r\n handleDataReceived = (e: AXDataSourceReadParams) => {\r\n return Promise.resolve(this.columnTypeData);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXCheckBoxModule } from './../../../checkbox/checkbox.module';\r\nimport { ColumnPropertyEditorComponent } from './column.editor';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\nimport { AXDataSourceModule } from '../../../data-source/datasource.module';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ColumnPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTextBoxModule, AXNumberBoxModule, AXColorPickerModule, AXLabelModule, AXPageModule, AXButtonModule, AXCheckBoxModule, AXSelectBoxModule, AXDataSourceModule, DragDropModule],\r\n exports: [ColumnPropertyEditorComponent],\r\n entryComponents: [ColumnPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXColumnPropertyEditorModule {\r\n constructor() {\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef, ViewChild, TemplateRef, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { AXObjectUtil, AXTranslator } from '@acorex/core';\r\nimport { AXDataType, AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXValidationFormComponent } from '../../../validation/validation-form.component';\r\n\r\n\r\n\r\n\r\nexport interface AXConditionalColorModel {\r\n color: string;\r\n operator: string;\r\n value: any;\r\n display?: string;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n templateUrl: './conditional-color.editor.html',\r\n styleUrls: ['./conditional-color.editor.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXConditionalColorPropertyEditorComponent extends AXProperyEditorComponent<AXConditionalColorModel[]> {\r\n\r\n\r\n form: AXValidationFormComponent;\r\n\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n @Input()\r\n dataType: AXDataType = 'number';\r\n\r\n // @Input()\r\n // mode: string[] = ['color', 'title'];\r\n\r\n operators: { value: string, text: string, dataTypes?: AXDataType[] }[] = [];\r\n\r\n ranges: AXConditionalColorModel[] = [];\r\n\r\n editRow: AXConditionalColorModel;\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n\r\n booleanItems = [{ value: true, text: AXTranslator.get('queryBuilder.true') }, { value: false, text: AXTranslator.get('queryBuilder.false') }];\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n\r\n onFormInit(e) {\r\n this.form = e.component;\r\n }\r\n\r\n ngOnInit() {\r\n this.ranges = this.value ? AXObjectUtil.deepCopy(this.value) : [];\r\n this.updateOperations();\r\n }\r\n\r\n\r\n\r\n updateOperations() {\r\n this.operators = [\r\n {\r\n value: '<',\r\n text: AXTranslator.get('queryBuilder.lt'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '<=',\r\n text: AXTranslator.get('queryBuilder.lte'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '>',\r\n text: AXTranslator.get('queryBuilder.gt'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '>=',\r\n text: AXTranslator.get('queryBuilder.gte'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '==',\r\n text: AXTranslator.get('queryBuilder.equal'),\r\n dataTypes: ['string', 'boolean', 'number', 'date']\r\n },\r\n {\r\n value: '<>',\r\n text: AXTranslator.get('queryBuilder.not-equal'),\r\n dataTypes: ['string', 'boolean', 'number', 'date']\r\n }\r\n ].filter(c => c.dataTypes == null || c.dataTypes.includes(this.dataType)) as any;\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n handleEditClick(item: AXConditionalColorModel) {\r\n this.updateOperations();\r\n this.editRow = Object.assign({}, item);\r\n const popup = this.popupService.open(this.tplEdit, {\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n Object.assign(item, this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n title: AXTranslator.get('common.edit')\r\n });\r\n }\r\n\r\n handleAddClick() {\r\n this.updateOperations();\r\n this.editRow = {\r\n value: this.getDefaultValue(),\r\n color: null,\r\n operator: '=='\r\n };\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: AXTranslator.get('common.add-item'),\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n this.ranges.push(this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n });\r\n }\r\n getDefaultValue(): any {\r\n switch (this.dataType) {\r\n case 'boolean':\r\n return true;\r\n case 'number':\r\n return 0;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n handleRemoveClick(item: AXConditionalColorModel) {\r\n this.ranges = this.ranges.filter(c => !(c.value === item.value && c.operator === item.operator));\r\n super.handleValueChange(this.ranges);\r\n }\r\n\r\n\r\n getTitle(opr: string) {\r\n const oprItem = this.operators.find(c => c.value === opr);\r\n return oprItem ? AXTranslator.get(oprItem.text) : '';\r\n }\r\n\r\n getIcon(opr: string) {\r\n switch (opr) {\r\n case '==':\r\n return 'fa-equals';\r\n case '<>':\r\n return 'fa-not-equal';\r\n case '<':\r\n return 'fa-less-than';\r\n case '<=':\r\n return 'fa-less-than-equal';\r\n case '>':\r\n return 'fa-greater-than';\r\n case '>=':\r\n return 'fa-greater-than-equal';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXTranslator, AXTranslatorModule } from '@acorex/core';\r\nimport { AXConditionalColorPropertyEditorComponent } from './conditional-color.editor';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXConditionalColorPropertyEditorComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXTranslatorModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXColorPickerModule,\r\n AXLabelModule,\r\n AXPageModule,\r\n AXButtonModule,\r\n AXSelectBoxModule,\r\n AXValidationModule,\r\n ],\r\n exports: [AXConditionalColorPropertyEditorComponent],\r\n entryComponents: [AXConditionalColorPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXConditionalColorPropertyEditorModule {\r\n constructor() {\r\n AXTranslator.load('en', {\r\n 'conditional-color-property-editor': {\r\n 'replaced-color': 'Replaced Color',\r\n 'replaced-title': 'Replaced Title',\r\n }\r\n });\r\n //\r\n AXTranslator.load('fa', {\r\n 'conditional-color-property-editor': {\r\n 'replaced-color': 'رنگ جایگزین',\r\n 'replaced-title': 'متن جایگزین',\r\n }\r\n });\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-switch (onValueChanged)=\"handleValueChange($event)\" [value]=\"value\"></ax-switch>\r\n `,\r\n})\r\nexport class AXSwitchPropertyEditorComponent extends AXProperyEditorComponent<boolean> {\r\n\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXSwitchPropertyEditorComponent } from './number.editor';\r\nimport { AXSwitchModule } from '../../../switch/switch.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSwitchPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXNumberBoxModule, AXValidationModule, AXSwitchModule],\r\n exports: [AXSwitchPropertyEditorComponent],\r\n entryComponents: [AXSwitchPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXSwitchPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXDatePickerComponent } from '../../../date-picker/date-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXCalendarType } from '@acorex/core'\r\n\r\n@Component({\r\n template: `\r\n <ax-date-picker [size]=\"size\" [dateType]=\"dateType\" [showToday]=\"showToday\" [disabled]=\"disabled\" [allowClear]=\"clearButton\" [readonly]=\"readonly\" [max]=\"max\" [min]=\"min\" [placeholder]=\"placeholder\" [showTodayButton]=\"showTodayButton\" [selectableHoliday]=\"selectableHoliday\" (onValueChanged)=\"handleValueChange($event)\"\r\n [type]=\"type\" [textAlign]=\"textAlign\" [(value)]=\"value\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-date-picker>\r\n `,\r\n})\r\nexport class AXDatePropertyEditorComponent extends AXProperyEditorComponent<Date> {\r\n\r\n showTodayButton: boolean = true;\r\n selectableHoliday: boolean = true;\r\n type: AXCalendarType = 'gregorian';\r\n textAlign: 'right' | 'left' | null = null;\r\n validation: AXValidation;\r\n placeholder: string = ''\r\n min: Date;\r\n max: Date;\r\n readonly: boolean;\r\n disabled: boolean;\r\n clearButton: boolean = false;\r\n showToday: boolean = false;\r\n dateType: any;\r\n size: string = 'md';\r\n\r\n @ViewChild(AXDatePickerComponent)\r\n private date: AXDatePickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.date);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXDatePickerModule } from '../../../date-picker/date-picker.module';\r\nimport { AXDatePropertyEditorComponent } from './date.editor';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXDatePropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXDatePickerModule, AXValidationModule],\r\n exports: [AXDatePropertyEditorComponent],\r\n entryComponents: [AXDatePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXDatePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXDatePickerComponent } from '../../../date-picker/date-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-time-picker [showCurentTime]=\"showCurentTime\" [timeType]=\"timeType\" [allowClear]=\"clearButton\" (onValueChanged)=\"handleValueChange($event)\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-time-picker>\r\n `,\r\n})\r\nexport class AXTimePropertyEditorComponent extends AXProperyEditorComponent<String> {\r\n\r\n\r\n timeType: any;\r\n validation: AXValidation;\r\n showCurentTime: boolean = false;\r\n clearButton: boolean = false;\r\n\r\n @ViewChild(AXDatePickerComponent)\r\n private time: AXDatePickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value?.time);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.time);\r\n this.onRenderCompleted.emit();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXTimePickerModule } from '../../../time-picker/time-picker.module';\r\nimport { AXTimePropertyEditorComponent } from './time.editor';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTimePropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTimePickerModule, AXValidationModule],\r\n exports: [AXTimePropertyEditorComponent],\r\n entryComponents: [AXTimePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXTimePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXTextPropertyEditorModule } from './editors/text-editor/text.module';\r\nimport { AXPropertyEditorRendererDirective } from './property-editor-renderer.directive';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AXTextPropertyEditorComponent } from './editors/text-editor/text.editor';\r\nimport { AXNumberBoxPropertyEditorComponent } from './editors/number-editor/number.editor';\r\nimport { AXNumberBoxPropertyEditorModule } from './editors/number-editor/number.module';\r\nimport { AXSelectBoxPropertyEditorComponent } from './editors/selectbox-editor/selectbox.editor';\r\nimport { AXSelectBoxPropertyEditorModule } from './editors/selectbox-editor/selectbox.module';\r\nimport { AXRangePropertyEditorModule } from './editors/range-editor/range.module';\r\nimport { AXRangePropertyEditorComponent } from './editors/range-editor/range.editor';\r\nimport { AXColorPropertyEditorComponent } from './editors/color-editor/color.editor';\r\nimport { AXColorPropertyEditorModule } from './editors/color-editor/color.module';\r\nimport { ColumnPropertyEditorComponent } from './editors/column-editor/column.editor';\r\nimport { AXColumnPropertyEditorModule } from './editors/column-editor/column.module';\r\nimport { AXConditionalColorPropertyEditorComponent } from './editors/conditional-color-editor/conditional-color.editor';\r\nimport { AXConditionalColorPropertyEditorModule } from './editors/conditional-color-editor/conditional-color.module';\r\nimport { AXSwitchPropertyEditorModule } from './editors/switch-editor/number.module';\r\nimport { AXSwitchPropertyEditorComponent } from './editors/switch-editor/number.editor';\r\nimport { AXDatePropertyEditorModule } from './editors/date-editor/date.module';\r\nimport { AXDatePropertyEditorComponent } from './editors/date-editor/date.editor';\r\nimport { AXTimePropertyEditorModule } from './editors/time-editor/time.module';\r\nimport { AXTimePropertyEditorComponent } from './editors/time-editor/time.editor';\r\n\r\n\r\nconst WDIGET_MODULES = [\r\n AXNumberBoxPropertyEditorModule,\r\n AXTextPropertyEditorModule,\r\n AXSelectBoxPropertyEditorModule,\r\n AXRangePropertyEditorModule,\r\n AXColorPropertyEditorModule,\r\n AXConditionalColorPropertyEditorModule,\r\n AXColumnPropertyEditorModule,\r\n AXSwitchPropertyEditorModule,\r\n AXDatePropertyEditorModule,\r\n AXTimePropertyEditorModule\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n WDIGET_MODULES,\r\n RouterModule.forChild([\r\n {\r\n component: AXTextPropertyEditorComponent,\r\n path: 'ax/editors/text'\r\n },\r\n {\r\n component: AXSelectBoxPropertyEditorComponent,\r\n path: 'ax/editors/select'\r\n },\r\n {\r\n component: AXNumberBoxPropertyEditorComponent,\r\n path: 'ax/editors/number'\r\n },\r\n {\r\n component: AXRangePropertyEditorComponent,\r\n path: 'ax/editors/range'\r\n },\r\n {\r\n component: AXConditionalColorPropertyEditorComponent,\r\n path: 'ax/editors/conditional-color'\r\n },\r\n {\r\n component: AXColorPropertyEditorComponent,\r\n path: 'ax/editors/color'\r\n },\r\n {\r\n component: AXSwitchPropertyEditorComponent,\r\n path: 'ax/editors/switch'\r\n },\r\n {\r\n component: ColumnPropertyEditorComponent,\r\n path: 'ax/editors/column'\r\n }, {\r\n component: AXDatePropertyEditorComponent,\r\n path: 'ax/editors/date'\r\n },\r\n {\r\n component: AXTimePropertyEditorComponent,\r\n path: 'ax/editors/time'\r\n },\r\n ])\r\n ],\r\n exports: [AXPropertyEditorRendererDirective],\r\n declarations: [AXPropertyEditorRendererDirective],\r\n providers: [],\r\n})\r\nexport class AXProppertyEditorModule { }\r\n"]}