dolfo-angular 1.240.0 → 1.241.0
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.
|
@@ -889,7 +889,7 @@ var AutocompleteComponent = class AutocompleteComponent extends BaseFormInput {
|
|
|
889
889
|
this.opened.set(false);
|
|
890
890
|
} else if (!this.opened() && !condition) this.opened.set(true);
|
|
891
891
|
}));
|
|
892
|
-
this.addSubscription(this.input.valueChanges.pipe(filter((v) => v != null && !!this.autocompleteInput && (this.autocompleteInput.nativeElement.value !== this.
|
|
892
|
+
this.addSubscription(this.input.valueChanges.pipe(filter((v) => v != null && !!this.autocompleteInput && (this.autocompleteInput.nativeElement.value !== this.config.getLabel(v) || !this.currentOptionLabel()))).subscribe((value) => this.setOption({
|
|
893
893
|
value,
|
|
894
894
|
label: this.config.getLabel(value)
|
|
895
895
|
}, true)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dolfo-angular.mjs","names":[],"sources":["../../projects/dolfo-angular/src/lib/shared/classes/subscriptable.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/dialog.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/grid.ts","../../projects/dolfo-angular/src/lib/components/layout/icon.component.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/icon.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/router.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/store.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/translate.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/utils.ts","../../projects/dolfo-angular/src/lib/shared/services/context-menu.service.ts","../../projects/dolfo-angular/src/lib/shared/services/translate.service.ts","../../projects/dolfo-angular/src/lib/shared/services/dialog.service.ts","../../projects/dolfo-angular/src/lib/shared/services/dialog-utils.service.ts","../../projects/dolfo-angular/src/lib/shared/services/notification.service.ts","../../projects/dolfo-angular/src/lib/shared/services/popover.service.ts","../../projects/dolfo-angular/src/lib/shared/services/route-check.service.ts","../../projects/dolfo-angular/src/lib/shared/services/store.service.ts","../../projects/dolfo-angular/src/lib/shared/services/tooltip.service.ts","../../projects/dolfo-angular/src/lib/shared/directives/tooltip.directive.ts","../../projects/dolfo-angular/src/lib/shared/pipes/translate.pipe.ts","../../projects/dolfo-angular/src/lib/components/form/input-container.component.ts","../../projects/dolfo-angular/src/lib/components/form/base-form-input.ts","../../projects/dolfo-angular/src/lib/components/form/autocomplete.component.ts","../../projects/dolfo-angular/src/lib/components/layout/icon-wrapper.component.ts","../../projects/dolfo-angular/src/lib/components/form/combobox.component.ts","../../projects/dolfo-angular/src/lib/components/form/datepicker.component.ts","../../projects/dolfo-angular/src/lib/components/form/file-select.component.ts","../../projects/dolfo-angular/src/lib/components/form/form.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/base-app.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/formable.ts","../../projects/dolfo-angular/src/lib/components/layout/context-menu.component.ts","../../projects/dolfo-angular/src/lib/components/form/input-text.component.ts","../../projects/dolfo-angular/src/lib/components/form/input-radio.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-content.component.ts","../../projects/dolfo-angular/src/lib/components/layout/button.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-header.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-footer.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.component.html","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog.component.ts","../../projects/dolfo-angular/src/lib/components/layout/notification.component.ts","../../projects/dolfo-angular/src/lib/components/layout/popover.component.ts","../../projects/dolfo-angular/src/lib/components/layout/tooltip.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/overlay-manager.ts","../../projects/dolfo-angular/src/lib/shared/classes/route-config.ts","../../projects/dolfo-angular/src/lib/shared/classes/router-reload-strategy.ts","../../projects/dolfo-angular/src/lib/shared/directives/context-menu.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/navigate.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/popover.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/scroll-drag.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/directives.module.ts","../../projects/dolfo-angular/src/lib/components/layout/loader.component.ts","../../projects/dolfo-angular/src/lib/components/layout/layout.module.ts","../../projects/dolfo-angular/src/lib/components/form/input-checkbox.component.ts","../../projects/dolfo-angular/src/lib/components/form/form.module.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.module.ts","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.component.ts","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.component.html","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.module.ts","../../projects/dolfo-angular/src/lib/shared/interceptors/auth.interceptor.ts","../../projects/dolfo-angular/src/lib/shared/interceptors/error.interceptor.ts"],"sourcesContent":["import { Directive, OnDestroy } from \"@angular/core\"\r\nimport { Subscription } from \"rxjs\"\r\n\r\n@Directive()\r\nexport abstract class Subscriptable implements OnDestroy{\r\n private subs: Subscription[] = []\r\n\r\n protected addSubscription = (sub: Subscription) => this.subs.push(sub)\r\n\r\n ngOnDestroy(){\r\n this.subs.forEach(s => s.unsubscribe())\r\n }\r\n}\r\n","import { FormControl } from \"@angular/forms\"\r\nimport { ButtonColor } from \"./button\"\r\nimport { AutocompleteConfig, ComboOption } from \"./combobox\"\r\nimport { InputType } from \"./form\"\r\nimport { IconName } from \"./icon\"\r\n\r\nexport enum DialogActionType{ OK, NO, CANCEL }\r\n\r\nexport type DialogOutput = {\r\n type: DialogActionType\r\n data: Record<string, any>\r\n}\r\n\r\nexport type DialogForm = {\r\n control: FormControl\r\n type: InputType | \"date\" | \"radio\" | \"autocomplete\" | \"combobox\"\r\n name: string\r\n label?: string\r\n // Used only if type = \"autocomplete\"\r\n autocompleteCfg?: AutocompleteConfig<any>\r\n // Used only if type = \"radio\" or \"combobox\"\r\n options?: ComboOption[]\r\n}[]\r\n\r\nexport type DialogType = \"info\" | \"confirm\" | \"loading\" | \"error\"\r\n\r\nexport type IDialogInput = {\r\n title?: string\r\n message: string\r\n type?: DialogType\r\n width?: number\r\n className?: string\r\n hideCloseX?: boolean\r\n form?: DialogForm\r\n component?: DialogComponentInput,\r\n buttons?: DialogFooterButton[]\r\n}\r\n\r\nexport interface DialogComponentInput{\r\n readonly type: new() => IDialogInput\r\n readonly input?: any\r\n}\r\n\r\nexport type DialogIcon = {\r\n icon: string\r\n color: ButtonColor\r\n}\r\n\r\nexport type DialogFooterButton = {\r\n label: string\r\n color: ButtonColor\r\n icon?: IconName\r\n disabled?: boolean\r\n loading?: boolean\r\n onClick: () => void\r\n}","import { BehaviorSubject, map, Observable, Subscription } from \"rxjs\"\r\nimport { ButtonColor } from \"./button\"\r\nimport { ContextMenuItem } from \"./context-menu\"\r\n\r\nexport enum ColumnAlign{\r\n LEFT = \"left\",\r\n RIGHT = \"right\",\r\n CENTER = \"center\"\r\n}\r\n\r\nexport enum ColumnDataType{ TEXT, DATE, DATETIME, LINK }\r\n\r\nexport interface GridAction{\r\n readonly icon: string\r\n readonly title?: string\r\n readonly disabled?: boolean\r\n readonly color?: ButtonColor\r\n readonly onClick: () => void\r\n}\r\n\r\nexport type BooleanFn = () => boolean\r\n\r\nexport interface GridToolbarButton{\r\n readonly label: string\r\n readonly disabled?: boolean | BooleanFn\r\n readonly icon?: string\r\n readonly onClick: () => void\r\n}\r\n\r\nexport interface GridColumn{\r\n readonly label: string\r\n readonly field: string\r\n readonly dataType: ColumnDataType\r\n readonly width?: number\r\n readonly align?: ColumnAlign\r\n readonly formatter?: (value: any) => string\r\n readonly onLink?: (value: any) => void\r\n}\r\n\r\nexport interface IGridConfig<T>{\r\n readonly items: T[] | Observable<T[]>\r\n readonly columns: GridColumn[]\r\n readonly selection?: {\r\n readonly type?: \"single\" | \"multiple\"\r\n readonly showSelectAll?: boolean\r\n readonly defaultSelected?: (item: T) => boolean\r\n }\r\n readonly toolbar?: {\r\n readonly buttons?: GridToolbarButton[]\r\n }\r\n readonly events?: {\r\n onRowClick?: (item: T) => void\r\n onSelectionChange?: (item: T[]) => void\r\n }\r\n readonly getItemKey: (item: T) => string | number\r\n readonly actions?: (item: T) => ContextMenuItem[]\r\n readonly rowClass?: (item: T) => string\r\n}\r\n\r\nexport class GridConfig<T>{\r\n private items$ = new BehaviorSubject<T[]>([])\r\n private loading$ = new BehaviorSubject(false)\r\n private selectedItems: T[]\r\n private actions$ = new BehaviorSubject<IGridConfig<T>[\"actions\"]>(null)\r\n private toolbar: IGridConfig<T>[\"toolbar\"]\r\n private prevSub: Subscription\r\n\r\n constructor(private config: IGridConfig<T>){\r\n this.refreshGrid()\r\n this.actions$.next(config.actions)\r\n\r\n if(config.toolbar)\r\n this.toolbar = config.toolbar\r\n }\r\n\r\n public refreshGrid = () => {\r\n this.selectedItems = []\r\n\r\n this.prevSub?.unsubscribe()\r\n\r\n if(Array.isArray(this.config.items))\r\n this.items$.next(this.config.items)\r\n else{\r\n this.setLoading(true)\r\n\r\n this.prevSub = this.config.items.subscribe(it => {\r\n this.setLoading(false)\r\n this.items$.next(it)\r\n \r\n if(this.getSelectionConfig()?.defaultSelected)\r\n this.selectedItems = it.filter(i => this.getSelectionConfig().defaultSelected(i))\r\n })\r\n }\r\n }\r\n\r\n public getRowClass = (item: T) => this.config.rowClass?.(item)\r\n\r\n public updateList = (newList: T[]) => this.items$.next(newList)\r\n\r\n public getList = () => this.items$.getValue()\r\n\r\n public getList$ = () => this.items$.asObservable()\r\n\r\n public getActions$ = (item: T) => this.actions$.asObservable().pipe(\r\n map(actions => actions?.(item))\r\n )\r\n\r\n public setActions = (actions: IGridConfig<T>[\"actions\"]) => this.actions$.next(actions)\r\n\r\n public getColumns = () => this.config.columns\r\n\r\n public getEvents = () => this.config.events\r\n\r\n public getUniqueId = (item: T) => this.config.getItemKey(item)\r\n\r\n public isLoading$ = () => this.loading$.asObservable()\r\n \r\n public isLoading = () => this.loading$.getValue()\r\n\r\n public setLoading = (v: boolean) => this.loading$.next(v)\r\n\r\n public getSelectedItems = () => this.items$.getValue().filter(it => this.selectedItems.some(d => this.getUniqueId(d) === this.getUniqueId(it)))\r\n\r\n public toggleSelection = (item: T) => {\r\n if(this.isItemSelected(item))\r\n this.selectedItems = this.selectedItems.filter(it => this.getUniqueId(it) !== this.getUniqueId(item))\r\n else if(this.config.selection?.type === \"single\")\r\n this.selectedItems = [item]\r\n else\r\n this.selectedItems.push(item)\r\n\r\n this.emitSelectionChange()\r\n }\r\n\r\n public isItemSelected = (item: T) => this.selectedItems.some(d => this.getUniqueId(d) === this.getUniqueId(item))\r\n\r\n public toggleSelectAll = () => {\r\n if(this.isAllSelected())\r\n this.selectedItems = []\r\n else\r\n this.selectedItems = this.items$.getValue()\r\n\r\n this.emitSelectionChange()\r\n }\r\n\r\n public getSelectionConfig = () => this.config.selection\r\n\r\n private emitSelectionChange = () => this.config.events?.onSelectionChange?.(this.getSelectedItems())\r\n\r\n public isAllSelected = () => this.selectedItems.length === this.items$.getValue().length\r\n\r\n public get hasActions(){\r\n return !!this.actions$.getValue()\r\n }\r\n\r\n public get hasToolbar(){\r\n return !!this.toolbar\r\n }\r\n\r\n public getToolbarButtons(){\r\n return this.toolbar.buttons\r\n }\r\n\r\n public setToolbar = (toolbar: IGridConfig<T>[\"toolbar\"]) => this.toolbar = toolbar\r\n}","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\nimport { IconName } from \"../../shared/interfaces\"\r\n\r\n@Component({\r\n selector: \"dolfo-icon-x\",\r\n standalone: false,\r\n template: `<i [class]=\"'icon-' + name\"></i>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconComponent {\r\n @Input({ required: true }) name: IconName | string\r\n}\r\n","import { InjectionToken, Type } from \"@angular/core\"\r\nimport { IconComponent } from \"../../../components/layout/icon.component\"\r\n\r\nexport const ICON_COMPONENT = new InjectionToken<Type<any>>(\"ICON_COMPONENT\", {\r\n providedIn: \"root\",\r\n factory: () => IconComponent\r\n})\r\n\r\nexport type IconName = \"home\" | \"home2\" | \"home3\" | \"office\" | \"newspaper\" | \"pencil\" | \"pencil2\" | \"quill\" | \"pen\" | \"blog\" | \"eyedropper\" | \"droplet\" | \"paint-format\" | \"image\" | \"images\" | \"camera\" | \"headphones\" | \"music\" | \"play\" | \"film\" | \"video-camera\" | \"dice\" | \"pacman\" | \"spades\" | \"clubs\" | \"diamonds\" | \"bullhorn\" | \"connection\" | \"podcast\" | \"feed\" | \"mic\" | \"book\" | \"books\" | \"library\" | \"file-text\" | \"profile\" | \"file-empty\" | \"files-empty\" | \"file-text2\" | \"file-picture\" | \"file-music\" | \"file-play\" | \"file-video\" | \"file-zip\" | \"copy\" | \"paste\" | \"stack\" | \"folder\" | \"folder-open\" | \"folder-plus\" | \"folder-minus\" | \"folder-download\" | \"folder-upload\" | \"price-tag\" | \"price-tags\" | \"barcode\" | \"qrcode\" | \"ticket\" | \"cart\" | \"coin-dollar\" | \"coin-euro\" | \"coin-pound\" | \"coin-yen\" | \"credit-card\" | \"calculator\" | \"lifebuoy\" | \"phone\" | \"phone-hang-up\" | \"address-book\" | \"envelop\" | \"pushpin\" | \"location\" | \"location2\" | \"compass\" | \"compass2\" | \"map\" | \"map2\" | \"history\" | \"clock\" | \"clock2\" | \"alarm\" | \"bell\" | \"stopwatch\" | \"calendar\" | \"printer\" | \"keyboard\" | \"display\" | \"laptop\" | \"mobile\" | \"mobile2\" | \"tablet\" | \"tv\" | \"drawer\" | \"drawer2\" | \"box-add\" | \"box-remove\" | \"download\" | \"upload\" | \"floppy-disk\" | \"drive\" | \"database\" | \"undo\" | \"redo\" | \"undo2\" | \"redo2\" | \"forward\" | \"reply\" | \"bubble\" | \"bubbles\" | \"bubbles2\" | \"bubble2\" | \"bubbles3\" | \"bubbles4\" | \"user\" | \"users\" | \"user-plus\" | \"user-minus\" | \"user-check\" | \"user-tie\" | \"quotes-left\" | \"quotes-right\" | \"hour-glass\" | \"spinner\" | \"spinner2\" | \"spinner3\" | \"spinner4\" | \"spinner5\" | \"spinner6\" | \"spinner7\" | \"spinner8\" | \"spinner9\" | \"spinner10\" | \"spinner11\" | \"binoculars\" | \"search\" | \"zoom-in\" | \"zoom-out\" | \"enlarge\" | \"shrink\" | \"enlarge2\" | \"shrink2\" | \"key\" | \"key2\" | \"lock\" | \"unlocked\" | \"wrench\" | \"equalizer\" | \"equalizer2\" | \"cog\" | \"cogs\" | \"hammer\" | \"magic-wand\" | \"aid-kit\" | \"bug\" | \"pie-chart\" | \"stats-dots\" | \"stats-bars\" | \"stats-bars2\" | \"trophy\" | \"gift\" | \"glass\" | \"glass2\" | \"mug\" | \"spoon-knife\" | \"leaf\" | \"rocket\" | \"meter\" | \"meter2\" | \"hammer2\" | \"fire\" | \"lab\" | \"magnet\" | \"bin\" | \"bin2\" | \"briefcase\" | \"airplane\" | \"truck\" | \"road\" | \"accessibility\" | \"target\" | \"shield\" | \"power\" | \"switch\" | \"power-cord\" | \"clipboard\" | \"list-numbered\" | \"list\" | \"list2\" | \"tree\" | \"menu\" | \"menu2\" | \"menu3\" | \"menu4\" | \"cloud\" | \"cloud-download\" | \"cloud-upload\" | \"cloud-check\" | \"download2\" | \"upload2\" | \"download3\" | \"upload3\" | \"sphere\" | \"earth\" | \"link\" | \"flag\" | \"attachment\" | \"eye\" | \"eye-plus\" | \"eye-minus\" | \"eye-blocked\" | \"bookmark\" | \"bookmarks\" | \"sun\" | \"contrast\" | \"brightness-contrast\" | \"star-empty\" | \"star-half\" | \"star-full\" | \"heart\" | \"heart-broken\" | \"man\" | \"woman\" | \"man-woman\" | \"happy\" | \"happy2\" | \"smile\" | \"smile2\" | \"tongue\" | \"tongue2\" | \"sad\" | \"sad2\" | \"wink\" | \"wink2\" | \"grin\" | \"grin2\" | \"cool\" | \"cool2\" | \"angry\" | \"angry2\" | \"evil\" | \"evil2\" | \"shocked\" | \"shocked2\" | \"baffled\" | \"baffled2\" | \"confused\" | \"confused2\" | \"neutral\" | \"neutral2\" | \"hipster\" | \"hipster2\" | \"wondering\" | \"wondering2\" | \"sleepy\" | \"sleepy2\" | \"frustrated\" | \"frustrated2\" | \"crying\" | \"crying2\" | \"point-up\" | \"point-right\" | \"point-down\" | \"point-left\" | \"warning\" | \"notification\" | \"question\" | \"plus\" | \"minus\" | \"info\" | \"cancel-circle\" | \"blocked\" | \"cross\" | \"checkmark\" | \"checkmark2\" | \"spell-check\" | \"enter\" | \"exit\" | \"play2\" | \"pause\" | \"stop\" | \"previous\" | \"next\" | \"backward\" | \"forward2\" | \"play3\" | \"pause2\" | \"stop2\" | \"backward2\" | \"forward3\" | \"first\" | \"last\" | \"previous2\" | \"next2\" | \"eject\" | \"volume-high\" | \"volume-medium\" | \"volume-low\" | \"volume-mute\" | \"volume-mute2\" | \"volume-increase\" | \"volume-decrease\" | \"loop\" | \"loop2\" | \"infinite\" | \"shuffle\" | \"arrow-up-left\" | \"arrow-up\" | \"arrow-up-right\" | \"arrow-right\" | \"arrow-down-right\" | \"arrow-down\" | \"arrow-down-left\" | \"arrow-left\" | \"arrow-up-left2\" | \"arrow-up2\" | \"arrow-up-right2\" | \"arrow-right2\" | \"arrow-down-right2\" | \"arrow-down2\" | \"arrow-down-left2\" | \"arrow-left2\" | \"circle-up\" | \"circle-right\" | \"circle-down\" | \"circle-left\" | \"tab\" | \"move-up\" | \"move-down\" | \"sort-alpha-asc\" | \"sort-alpha-desc\" | \"sort-numeric-asc\" | \"sort-numberic-desc\" | \"sort-amount-asc\" | \"sort-amount-desc\" | \"command\" | \"shift\" | \"ctrl\" | \"opt\" | \"checkbox-checked\" | \"checkbox-unchecked\" | \"radio-checked\" | \"radio-checked2\" | \"radio-unchecked\" | \"crop\" | \"make-group\" | \"ungroup\" | \"scissors\" | \"filter\" | \"font\" | \"ligature\" | \"ligature2\" | \"text-height\" | \"text-width\" | \"font-size\" | \"bold\" | \"underline\" | \"italic\" | \"strikethrough\" | \"omega\" | \"sigma\" | \"page-break\" | \"superscript\" | \"subscript\" | \"superscript2\" | \"subscript2\" | \"text-color\" | \"pagebreak\" | \"clear-formatting\" | \"table\" | \"table2\" | \"insert-template\" | \"pilcrow\" | \"ltr\" | \"rtl\" | \"section\" | \"paragraph-left\" | \"paragraph-center\" | \"paragraph-right\" | \"paragraph-justify\" | \"indent-increase\" | \"indent-decrease\" | \"share\" | \"new-tab\" | \"embed\" | \"embed2\" | \"terminal\" | \"share2\" | \"mail\" | \"mail2\" | \"mail3\" | \"mail4\" | \"amazon\" | \"google\" | \"google2\" | \"google3\" | \"google-plus\" | \"google-plus2\" | \"google-plus3\" | \"hangouts\" | \"google-drive\" | \"facebook\" | \"facebook2\" | \"instagram\" | \"whatsapp\" | \"spotify\" | \"telegram\" | \"twitter\" | \"vine\" | \"vk\" | \"renren\" | \"sina-weibo\" | \"rss\" | \"rss2\" | \"youtube\" | \"youtube2\" | \"twitch\" | \"vimeo\" | \"vimeo2\" | \"lanyrd\" | \"flickr\" | \"flickr2\" | \"flickr3\" | \"flickr4\" | \"dribbble\" | \"behance\" | \"behance2\" | \"deviantart\" | \"500px\" | \"steam\" | \"steam2\" | \"dropbox\" | \"onedrive\" | \"github\" | \"npm\" | \"basecamp\" | \"trello\" | \"wordpress\" | \"joomla\" | \"ello\" | \"blogger\" | \"blogger2\" | \"tumblr\" | \"tumblr2\" | \"yahoo\" | \"yahoo2\" | \"tux\" | \"appleinc\" | \"finder\" | \"android\" | \"windows\" | \"windows8\" | \"soundcloud\" | \"soundcloud2\" | \"skype\" | \"reddit\" | \"hackernews\" | \"wikipedia\" | \"linkedin\" | \"linkedin2\" | \"lastfm\" | \"lastfm2\" | \"delicious\" | \"stumbleupon\" | \"stumbleupon2\" | \"stackoverflow\" | \"pinterest\" | \"pinterest2\" | \"xing\" | \"xing2\" | \"flattr\" | \"foursquare\" | \"yelp\" | \"paypal\" | \"chrome\" | \"firefox\" | \"IE\" | \"edge\" | \"safari\" | \"opera\" | \"file-pdf\" | \"file-openoffice\" | \"file-word\" | \"file-excel\" | \"libreoffice\" | \"html-five\" | \"html-five2\" | \"css3\" | \"git\" | \"codepen\" | \"svg\" | \"IcoMoon\"","import { InjectionToken } from \"@angular/core\"\r\nimport { Observable } from \"rxjs\"\r\n\r\nexport const ROUTE_CHECK_SERVICE = new InjectionToken<CheckRoute<unknown>>(\"ROUTE_CHECK_SERVICE\", {\r\n\tprovidedIn: \"root\",\r\n\tfactory: () => {\r\n\t\tthrow new Error(\"RouteCheckService not provided\")\r\n\t}\r\n})\r\n\r\nexport interface CheckRoute<T>{\r\n\tload$: () => Observable<T>\r\n\tcheckRoute: (path: string) => Promise<boolean> | Observable<boolean>\r\n}","export enum StorageValues {\r\n TOKEN = \"token\",\r\n LANG = \"lang\"\r\n}\r\n\r\nexport interface IStore {\r\n readonly pressingCtrl: boolean\r\n readonly lists: {\r\n [x: string]: Array<any>\r\n }\r\n readonly entities: {\r\n [x: string]: any\r\n }\r\n}\r\n\r\nexport const MAX_DEVICE_SIZE = 750\r\nexport const MAX_SMALL_DEVICE = 500","import { InjectionToken, ValueProvider } from \"@angular/core\"\r\n\r\nexport interface ILanguage{\r\n readonly name: string\r\n readonly locale: string\r\n readonly altFileName?: string\r\n}\r\n\r\nexport interface ILanguageToken{\r\n readonly defaultLanguage: string\r\n readonly langs: ILanguage[]\r\n}\r\n\r\nexport const TRANSLATE_STORAGE_KEY = \"dolfo-lang-stored\"\r\n\r\nexport const LANGUAGE_TOKEN = new InjectionToken<ILanguageToken>(\"LANGUAGE_TOKEN\")\r\n\r\nexport const provideDolfoLanguages = (langs: ILanguage[], defaultLanguage: string): ValueProvider => ({\r\n provide: LANGUAGE_TOKEN,\r\n useValue: { defaultLanguage, langs } as ILanguageToken\r\n})","import { AbstractControl, FormControl, ValidationErrors, ValidatorFn } from \"@angular/forms\"\r\n\r\nexport const isDeepEqual = (objA: any, objB: any, map = new WeakMap()) => {\r\n if (Object.is(objA, objB))\r\n return true\r\n\r\n if (objA instanceof Date && objB instanceof Date)\r\n return objA.getTime() === objB.getTime()\r\n \r\n if (objA instanceof RegExp && objB instanceof RegExp)\r\n return objA.toString() === objB.toString()\r\n\r\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null)\r\n return false\r\n\r\n if (map.get(objA) === objB)\r\n return true\r\n\r\n map.set(objA, objB)\r\n\r\n const keysA = Reflect.ownKeys(objA)\r\n const keysB = Reflect.ownKeys(objB)\r\n\r\n if (keysA.length !== keysB.length)\r\n return false\r\n\r\n for (let i = 0; i < keysA.length; i++){\r\n if (!Reflect.has(objB, keysA[i]) || !isDeepEqual(objA[keysA[i]], objB[keysA[i]], map))\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\n\r\nexport const passwordValidator = ((control: FormControl): ValidationErrors => {\r\n if(control.value?.match(/^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$/))\r\n return { password: true }\r\n\r\n return null\r\n}) as ValidatorFn\r\n\r\nexport const samePasswordValidator = (ctrName: string): ValidatorFn => ((control: AbstractControl): ValidationErrors => {\r\n const otherControl = control.parent?.get(ctrName)\r\n\r\n if(otherControl?.value !== control?.value)\r\n return { differentPasswords: true }\r\n\r\n return null\r\n}) as ValidatorFn","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { IContextMenu } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class ContextMenuService {\r\n private contextMenu$ = new BehaviorSubject<IContextMenu>(null)\r\n\r\n public getContextMenu$ = () => this.contextMenu$.asObservable()\r\n\r\n public openContextMenu = (input: IContextMenu) => this.contextMenu$.next(input)\r\n}\r\n","import { formatDate } from \"@angular/common\"\r\nimport { HttpClient } from \"@angular/common/http\"\r\nimport { inject, Service } from \"@angular/core\"\r\nimport { BehaviorSubject, distinctUntilChanged, tap } from \"rxjs\"\r\nimport { ILanguage, LANGUAGE_TOKEN, TRANSLATE_STORAGE_KEY } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class TranslateService {\r\n private lang$ = new BehaviorSubject<ILanguage>(null)\r\n private langContent: Record<string, string>\r\n private langs: ILanguage[]\r\n private httpClient = inject(HttpClient)\r\n private langConfig = inject(LANGUAGE_TOKEN)\r\n\r\n constructor() {\r\n if(!localStorage.getItem(TRANSLATE_STORAGE_KEY))\r\n localStorage.setItem(TRANSLATE_STORAGE_KEY, this.langConfig.defaultLanguage)\r\n \r\n const { langs } = this.langConfig,\r\n lang = localStorage.getItem(TRANSLATE_STORAGE_KEY) as string,\r\n foundLang = this.langConfig.langs.find(l => l.name === lang)\r\n\r\n this.langs = langs\r\n\r\n if(!foundLang)\r\n localStorage.removeItem(TRANSLATE_STORAGE_KEY)\r\n else\r\n this.lang$.next(foundLang)\r\n }\r\n\r\n public changeLanguage$ = (langName: string) => {\r\n const lang = this.langs.find(l => l.name === langName)\r\n\r\n if(lang)\r\n localStorage.setItem(TRANSLATE_STORAGE_KEY, langName)\r\n\r\n return this.load$(lang).pipe(\r\n tap(() => this.lang$.next(lang))\r\n )\r\n }\r\n\r\n public loadFromStorage$ = () => {\r\n const lang = localStorage.getItem(TRANSLATE_STORAGE_KEY)\r\n\r\n if(!lang)\r\n throw new Error(\"Language not set or not valid!!\")\r\n\r\n const foundLang = this.langs.find(l => l.name === lang)\r\n\r\n return this.load$(foundLang)\r\n }\r\n\r\n private load$ = ({ name, altFileName }: ILanguage) => this.httpClient.get<Record<string, string>>(`assets/langs/${altFileName || name}.json`).pipe(\r\n tap(content => this.langContent = content)\r\n )\r\n\r\n public translate = (key: string, params?: Record<string, string>): string => {\r\n const base = key.split(\".\").reduce((prev, curr) => prev?.[curr], this.langContent as any),\r\n ret = base || key\r\n\r\n if (params){\r\n return Object.keys(params).reduce(\r\n (curr, key) => curr.replace(`{${key}}`, params[key as keyof Object]),\r\n ret\r\n )\r\n }\r\n\r\n return ret\r\n }\r\n\r\n public getLang = () => this.lang$.getValue()\r\n\r\n public getLang$ = () => this.lang$.asObservable().pipe(distinctUntilChanged())\r\n\r\n private getLocale = () => this.getLang()?.locale || \"en-US\"\r\n\r\n public formatDate = (d: string) => formatDate(new Date(d), this.translate(\"dateFormat\"), this.getLocale())\r\n\r\n public formatDateTime = (d: string) => formatDate(new Date(d), this.translate(\"dateTimeFormat\"), this.getLocale())\r\n}\r\n","import { inject, Service } from \"@angular/core\"\r\nimport { BehaviorSubject, delay, filter } from \"rxjs\"\r\nimport { DialogComponentInput, DialogOutput, IDialogInput } from \"../interfaces\"\r\nimport { TranslateService } from \"./translate.service\"\r\n\r\n@Service()\r\nexport class DialogService{\r\n private dialog$ = new BehaviorSubject<(IDialogInput & { _dialogId: number })[]>([])\r\n private waiters: BehaviorSubject<DialogOutput>[] = []\r\n private ts = inject(TranslateService)\r\n\r\n private getLastWaiter = () => this.waiters[this.waiters.length - 1]\r\n\r\n public getDialog = () => this.dialog$.getValue()\r\n\r\n public getDialog$ = () => this.dialog$.asObservable()\r\n\r\n public openDialog = (input: IDialogInput) => {\r\n const newWaiter$ = new BehaviorSubject<DialogOutput>(null)\r\n this.waiters.push(newWaiter$)\r\n this.dialog$.next(this.dialog$.getValue().concat({\r\n ...input,\r\n _dialogId: new Date().getTime()\r\n }))\r\n\r\n return this.getLastWaiter().pipe(\r\n filter(d => d != null),\r\n delay(0)\r\n )\r\n }\r\n\r\n public openDialogComponent = (component: DialogComponentInput) => this.openDialog({\r\n message: null,\r\n component\r\n })\r\n\r\n public showLoading = (message?: string) => this.openDialog({\r\n type: \"loading\",\r\n message: message || this.ts.translate(\"loading\")\r\n })\r\n\r\n public close = () => {\r\n const v = this.dialog$.getValue()\r\n this.dialog$.next(v.slice(0, v.length - 1))\r\n this.getLastWaiter()?.complete()\r\n this.waiters = this.waiters.slice(0, this.waiters.length - 1)\r\n }\r\n\r\n public action = (action: DialogOutput) => this.getLastWaiter()?.next(action)\r\n}\r\n","import { inject, Service } from \"@angular/core\"\r\nimport { catchError, delay, filter, mergeMap, Observable, ObservableInput, of, tap, throwError } from \"rxjs\"\r\nimport { DialogActionType, DialogComponentInput, IDialogInput } from \"../interfaces\"\r\nimport { DialogService } from \"./dialog.service\"\r\nimport { TranslateService } from \"./translate.service\"\r\n\r\n@Service()\r\nexport class DialogUtilsService{\r\n private dialogService = inject(DialogService)\r\n private translateService = inject(TranslateService)\r\n\r\n public showLoading$ = <T, T2>(obs: (res: T2) => Observable<T>, message?: string) => mergeMap<T2, ObservableInput<T>>(res => of(res).pipe(\r\n delay(0),\r\n tap(() => this.dialogService.showLoading(message).subscribe()),\r\n mergeMap(res => obs(res)),\r\n catchError(err => {\r\n this.closeLatestDialog()\r\n return throwError(() => err)\r\n })\r\n ))\r\n\r\n public hideLoading = () => this.closeLatestDialog()\r\n\r\n public closeLatestDialog = () => this.dialogService.close()\r\n\r\n public closeWithAction = <T>(data: T) => {\r\n this.dialogService.action({ type: DialogActionType.OK, data })\r\n this.closeLatestDialog()\r\n }\r\n\r\n public openDialogComponent = (component: DialogComponentInput) => this.dialogService.openDialogComponent(component)\r\n\r\n public openDialog = (input: IDialogInput) => this.dialogService.openDialog(input)\r\n\r\n public askConfirmAndLoad = <T>(\r\n input: Pick<IDialogInput, \"title\" | \"message\" | \"hideCloseX\" | \"width\">,\r\n obs: (resp: DialogActionType) => Observable<T>,\r\n getDialogResp = false\r\n ) => this.dialogService.openDialog({\r\n title: this.translateService.translate(input.title),\r\n message: this.translateService.translate(input.message),\r\n type: \"confirm\",\r\n hideCloseX: input.hideCloseX,\r\n width: input.width\r\n }).pipe(\r\n filter(res => res.type === DialogActionType.OK || getDialogResp),\r\n this.showLoading$(res => obs(res.type)),\r\n tap(() => this.hideLoading())\r\n )\r\n}","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { INotificationInput } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class NotificationService {\r\n private notification$ = new BehaviorSubject<INotificationInput>(null)\r\n private history$ = new BehaviorSubject<Array<INotificationInput & { date: Date }>>([])\r\n\r\n public getNotification$ = () => this.notification$.asObservable()\r\n\r\n public show = (input: INotificationInput) => {\r\n this.notification$.next(input)\r\n this.history$.next(this.history$.getValue().concat({ ...input, date: new Date() }))\r\n }\r\n\r\n public hide = () => this.notification$.next(null)\r\n\r\n public getHistory$ = () => this.history$.asObservable()\r\n}\r\n","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { IPopover } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class PopoverService {\r\n private popover$ = new BehaviorSubject<IPopover>(null)\r\n\r\n public getPopover$ = () => this.popover$.asObservable()\r\n\r\n public getPopover = () => this.popover$.getValue()\r\n\r\n public showPopover = (input: IPopover) => this.popover$.next(input)\r\n\r\n public hide = () => this.popover$.next(null)\r\n}","import { inject, Service } from \"@angular/core\"\r\nimport { ActivatedRouteSnapshot, CanActivate } from \"@angular/router\"\r\nimport { catchError, mergeMap, of } from \"rxjs\"\r\nimport { ROUTE_CHECK_SERVICE } from \"../interfaces\"\r\nimport { StoreService } from \"./\"\r\n\r\n@Service()\r\nexport class RouteCheckService implements CanActivate{\r\n private storeService = inject(StoreService)\r\n private routeService = inject(ROUTE_CHECK_SERVICE)\r\n\r\n public canActivate({ routeConfig }: ActivatedRouteSnapshot) {\r\n if(!this.storeService.isInitialized())\r\n return false\r\n\r\n return this.routeService.load$().pipe(\r\n catchError(() => of(null)),\r\n mergeMap(() => this.routeService.checkRoute(routeConfig.path))\r\n )\r\n }\r\n}","import { Service, signal } from \"@angular/core\"\r\nimport { BehaviorSubject, filter, fromEvent, tap, zip } from \"rxjs\"\r\n// ! Importante che venga importato con percorso preciso\r\nimport { Subscriptable } from \"../classes/subscriptable\"\r\nimport { IStore } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class StoreService extends Subscriptable {\r\n private appInitialized = signal(false)\r\n\r\n constructor(){\r\n super()\r\n\r\n this.addSubscription(zip([\r\n fromEvent<KeyboardEvent>(window, \"keydown\").pipe(\r\n filter(e => !this.isPressingCtrl() && e.ctrlKey),\r\n tap(() => this.setCtrlKey(true))\r\n ),\r\n fromEvent<KeyboardEvent>(window, \"keyup\").pipe(\r\n filter(e => this.isPressingCtrl() && e.key === \"Control\"),\r\n tap(() => this.setCtrlKey(false))\r\n ),\r\n fromEvent<KeyboardEvent>(window, \"blur\").pipe(\r\n filter(() => this.isPressingCtrl()),\r\n tap(() => this.setCtrlKey(false))\r\n )\r\n ]).subscribe())\r\n }\r\n\r\n private store$ = new BehaviorSubject<IStore>({\r\n lists: {},\r\n entities: {},\r\n pressingCtrl: false\r\n })\r\n\r\n public addList = (key: string, list: Array<any>) => this.store$.next({\r\n ...this.store$.getValue(),\r\n lists: {\r\n ...this.store$.getValue().lists,\r\n [key]: list\r\n }\r\n })\r\n\r\n public getList = <T>(key: string) => this.store$.getValue().lists[key] as T\r\n\r\n public addEntity = (key: string, entity: any) => this.store$.next({\r\n ...this.store$.getValue(),\r\n entities: {\r\n ...this.store$.getValue().entities,\r\n [key]: entity\r\n }\r\n })\r\n\r\n public getEntity = <T>(key: string) => this.store$.getValue().entities[key] as T\r\n\r\n public setCtrlKey = (pressingCtrl: boolean) => this.store$.next({\r\n ...this.store$.getValue(),\r\n pressingCtrl\r\n })\r\n\r\n public isPressingCtrl = () => this.store$.getValue().pressingCtrl\r\n\r\n public isInitialized = () => this.appInitialized()\r\n\r\n public initialize = () => this.appInitialized.set(true)\r\n}\r\n","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { ITooltip } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class TooltipService {\r\n private tooltip$ = new BehaviorSubject<ITooltip>(null)\r\n\r\n public showTooltip = (input: ITooltip) => this.tooltip$.next(input)\r\n \r\n public getTooltip$ = () => this.tooltip$.asObservable()\r\n \r\n public getTooltip = () => this.tooltip$.getValue()\r\n\r\n public hide = () => this.tooltip$.next(null)\r\n}\r\n","import { Directive, ElementRef, inject, Input } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes/subscriptable\"\r\nimport { ITooltip, TooltipDirection } from \"../interfaces\"\r\nimport { TooltipService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoTooltip]\",\r\n standalone: false\r\n})\r\nexport class TooltipDirective extends Subscriptable implements Omit<ITooltip, \"elementRef\">{\r\n @Input({ required: true, alias: \"dolfoTooltip\" }) content: string\r\n @Input() direction: TooltipDirection = \"top\"\r\n private el = inject(ElementRef<HTMLElement>)\r\n private ts = inject(TooltipService)\r\n\r\n constructor() {\r\n super()\r\n\r\n this.addSubscription(fromEvent(this.el.nativeElement, \"mousedown\").pipe(\r\n filter(() => !!this.ts.getTooltip())\r\n ).subscribe(() => this.ts.hide()))\r\n\r\n this.addSubscription(\r\n fromEvent(this.el.nativeElement, \"mouseenter\").pipe(\r\n filter(() => !!this.content)\r\n ).subscribe(() => this.ts.showTooltip({\r\n content: this.content,\r\n elementRef: this.el,\r\n direction: this.direction\r\n }))\r\n )\r\n }\r\n}\r\n","import { inject, Pipe, PipeTransform } from \"@angular/core\"\r\nimport { TranslateService } from \"../services\"\r\n\r\n@Pipe({\r\n name: \"translate\",\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n private ts = inject(TranslateService)\r\n\r\n transform = (value: string, args?: Record<string, string>) => this.ts.translate(value, args)\r\n}\r\n","import { DecimalPipe } from \"@angular/common\"\r\nimport { Component, ElementRef, inject } from \"@angular/core\"\r\nimport { ValidationErrors } from \"@angular/forms\"\r\nimport { BehaviorSubject, distinctUntilChanged, map, Observable } from \"rxjs\"\r\nimport { isDeepEqual } from \"../../shared/interfaces\"\r\nimport { TranslateService } from \"../../shared/services\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-container\",\r\n template: `<div class=\"input-container\" [class.error]=\"decodedError$ | async\">\r\n @if(input.label){\r\n <label>\r\n {{ input.label }}\r\n @if(input.isRequired){\r\n <span [dolfoTooltip]=\"'form.required' | translate\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @let error = decodedError$ | async;\r\n\r\n @if(error){\r\n <div class=\"input-errors\">\r\n {{ error[0] | translate: error[1] }}\r\n </div>\r\n }\r\n </div>`,\r\n providers: [DecimalPipe],\r\n standalone: false\r\n})\r\nexport class InputContainerComponent{\r\n public errors$ = new BehaviorSubject<ValidationErrors>(null)\r\n public decodedError$: Observable<[string, Record<string, string>?]> = this.errors$.pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n map(val => {\r\n if(val){\r\n if(val.required)\r\n return [\"form.requiredError\"]\r\n if(val.email)\r\n return [\"form.invalidEmail\"]\r\n if(val.maxlength)\r\n return [`form.maxChars`, { length: val.maxlength.requiredLength }]\r\n if(val.minlength)\r\n return [`form.minChars`, { length: val.minlength.requiredLength }]\r\n if(val.password)\r\n return [\"form.invalidPassword\"]\r\n if(val.max)\r\n return [\"form.maxValue\", { value: this.cp.transform(val.max.max, null, this.translateService.getLang().name) }]\r\n\r\n return [\"form.error.\" + Object.keys(val)[0], val[Object.keys(val)[0]]]\r\n }\r\n \r\n return null\r\n })\r\n )\r\n public input = inject(BaseFormInput)\r\n private elRef = inject(ElementRef<HTMLElement>)\r\n private translateService = inject(TranslateService)\r\n private cp = inject(DecimalPipe)\r\n\r\n public focus = () => {\r\n const input = this.elRef.nativeElement.querySelector(\"input\")\r\n\r\n if(input)\r\n input.focus()\r\n }\r\n}\r\n","import { AfterViewInit, Directive, EventEmitter, inject, Input, OnInit, Output, ViewChild } from \"@angular/core\"\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, FormControl, ValidationErrors, Validator, Validators } from \"@angular/forms\"\r\nimport { filter } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes/subscriptable\"\r\nimport { isDeepEqual } from \"../../shared/interfaces\"\r\nimport { InputContainerComponent } from \"./input-container.component\"\r\n\r\n@Directive()\r\nexport abstract class BaseFormInput<T> extends Subscriptable implements ControlValueAccessor, Validator, AfterViewInit, OnInit {\r\n @ViewChild(InputContainerComponent) public container: InputContainerComponent\r\n @Input({ required: true }) formControlName: string\r\n @Input() label: string\r\n @Output() onChange: EventEmitter<T> = new EventEmitter<T>()\r\n\r\n protected changeInternal: (obj: T) => void\r\n private cc = inject(ControlContainer)\r\n \r\n public input = new FormControl<T>(null)\r\n \r\n protected control: AbstractControl\r\n\r\n ngOnInit(){\r\n this.control = this.cc.control.get(this.formControlName)\r\n\r\n const initialValue = this.control.value\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => !this.control.touched && !isDeepEqual(initialValue, v) && this.input.dirty)\r\n ).subscribe(() => this.control.markAsTouched()))\r\n\r\n this.addSubscription(this.control.statusChanges.pipe(\r\n filter(s => (s === \"VALID\" || s === \"INVALID\") && this.control.touched && !!this.container)\r\n ).subscribe(() => this.container.errors$.next(this.control.errors)))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(() => !this.input.disabled)\r\n ).subscribe(v => {\r\n this.onChange.emit(v)\r\n this.changeInternal(v)\r\n }))\r\n }\r\n\r\n writeValue(obj: T){\r\n this.input.setValue(obj)\r\n }\r\n\r\n registerOnChange = (fn: (obj: T) => void) => this.changeInternal = fn\r\n\r\n registerOnTouched = (_fn: (obj: any) => void) => {}\r\n\r\n setDisabledState = (isDisabled: boolean) => {\r\n if(isDisabled)\r\n setTimeout(() => this.input.disable())\r\n else\r\n this.input.enable()\r\n }\r\n\r\n validate = (_control: AbstractControl): ValidationErrors => null\r\n\r\n public get isRequired(){\r\n return this.control.hasValidator(Validators.required)\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, signal, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { delay, filter, fromEvent, map, mergeMap, tap } from \"rxjs\"\r\nimport { AutocompleteConfig, ComboOption } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-autocomplete\",\r\n template: `<dolfo-input-container>\r\n <div class=\"combobox autocomplete\" [class.opened]=\"opened()\" #autocomplete>\r\n <div class=\"combobox-label\">\r\n <input #autocompleteInput type=\"text\" [value]=\"currentOption()\" (focus)=\"focus($event)\" (blur)=\"onBlur.emit($event)\" />\r\n </div>\r\n\r\n <div class=\"combobox-options\" [class.opened]=\"opened()\">\r\n @if(loading()){\r\n <div class=\"loading\">\r\n {{ 'autocomplete.loading' | translate }}\r\n </div>\r\n }\r\n @if(options().length === 0 && !loading()){\r\n <div class=\"no-results\">\r\n {{ 'autocomplete.noResults' | translate }}\r\n </div>\r\n }\r\n\r\n @for(opt of options(); track opt.value; let idx = $index){\r\n <div class=\"combobox-option\" [class.selected]=\"isSelected(opt)\" [class.focused]=\"currentFocus() === idx\" (click)=\"$event.stopPropagation(); setOption(opt)\">\r\n @if(resultTemplate){\r\n <ng-container [ngTemplateOutlet]=\"resultTemplate\" [ngTemplateOutletContext]=\"{ item: opt }\"></ng-container>\r\n }@else {\r\n <span>{{ opt.label }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </dolfo-input-container>`,\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AutocompleteComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => AutocompleteComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: AutocompleteComponent }\r\n ]\r\n})\r\nexport class AutocompleteComponent extends BaseFormInput<any> implements AfterViewInit, OnFocus, OnBlur{\r\n @ViewChild(\"autocomplete\") private autocomplete: ElementRef<HTMLDivElement>\r\n @ViewChild(\"autocompleteInput\") private autocompleteInput: ElementRef<HTMLInputElement>\r\n @Input({ required: true }) config: AutocompleteConfig<any>\r\n @Input() minChars = 3\r\n @Input() resultTemplate: TemplateRef<any>\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n public options = signal<ComboOption[]>([])\r\n public opened = signal(false)\r\n public currentOption = signal(\"\")\r\n public currentOptionLabel = signal(\"\")\r\n public loading = signal(false)\r\n public currentFocus = signal<number>(null)\r\n private keyDown = false\r\n private keyDownTimeout: ReturnType<typeof setTimeout>\r\n\r\n constructor(){\r\n super()\r\n\r\n this.addSubscription(fromEvent(window, \"click\").pipe(\r\n filter(() => !!this.autocomplete && !this.input.disabled),\r\n map(ev => ev.target as HTMLElement),\r\n map(target => !this.autocomplete.nativeElement.contains(target) && !target.isEqualNode(this.autocomplete.nativeElement))\r\n ).subscribe(condition => {\r\n if(condition && this.opened()){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }else if(!this.opened() && !condition)\r\n this.opened.set(true)\r\n }))\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => v != null && !!this.autocompleteInput && (this.autocompleteInput.nativeElement.value !== this.currentOptionLabel() || !this.currentOptionLabel()))\r\n ).subscribe(value => this.setOption({ value, label: this.config.getLabel(value) }, true)))\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => v == null && !!this.autocompleteInput && this.autocompleteInput.nativeElement.value != null && this.autocompleteInput.nativeElement.value !== \"\")\r\n ).subscribe(() => this.setOption(null, true)))\r\n\r\n this.addSubscription(this.input.statusChanges.pipe(\r\n filter(() => !!this.autocompleteInput)\r\n ).subscribe(() => this.autocompleteInput.nativeElement.disabled = this.input.disabled))\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit()\r\n\r\n this.addSubscription(fromEvent(this.autocompleteInput.nativeElement, \"input\").pipe(\r\n map(ev => (ev.target as HTMLInputElement).value),\r\n tap(value => {\r\n if(!value){\r\n this.input.setValue(null)\r\n this.onChange.emit(null)\r\n this.options.set([])\r\n }\r\n }),\r\n delay(1000),\r\n filter(value => !this.keyDown && value.length >= this.minChars),\r\n tap(() => {\r\n this.options.set([])\r\n this.opened.set(true)\r\n this.loading.set(true)\r\n }),\r\n mergeMap(value => this.config.search$(value)),\r\n map(results => results.map(value => ({\r\n value,\r\n label: this.config.getLabel(value)\r\n })))\r\n ).subscribe(results => {\r\n this.loading.set(false)\r\n this.options.set(results)\r\n this.currentFocus.set(null)\r\n }))\r\n\r\n this.addSubscription(fromEvent<KeyboardEvent>(this.autocompleteInput.nativeElement, \"keydown\").subscribe(e => {\r\n if(e.key.length === 1){\r\n this.keyDown = true\r\n clearTimeout(this.keyDownTimeout)\r\n this.keyDownTimeout = setTimeout(() => this.keyDown = false, 1000)\r\n }else if(this.opened()){\r\n if(e.key === \"ArrowDown\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === this.options().length - 1 ? 0 : v === null ? 0 : v + 1)\r\n }else if(e.key === \"ArrowUp\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === 0 ? this.options().length - 1 : v === null ? 0 : v - 1)\r\n }else if(e.key === \"Enter\" && this.currentFocus() >= 0 && this.currentFocus() != null){\r\n e.preventDefault()\r\n this.setOption(this.options()[this.currentFocus()])\r\n }else if(e.key === \"Tab\"){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }\r\n }\r\n }))\r\n }\r\n\r\n\tpublic focus = (e: FocusEvent) => {\r\n\t\tif(this.input.disabled)\r\n\t\t\treturn\r\n\t\t\r\n\t\tthis.opened.set(true)\r\n\t\tthis.onFocus.emit(e)\r\n\t}\r\n\r\n\tpublic isSelected = (opt: ComboOption) => this.input.value === opt.value\r\n\r\n public setOption = (opt: ComboOption, noEmit = false) => {\r\n this.autocompleteInput.nativeElement.value = opt?.label ?? \"\"\r\n this.currentOptionLabel.set(opt?.label)\r\n this.input.setValue(opt?.value)\r\n this.opened.set(false)\r\n\r\n if(!noEmit)\r\n\t\t this.onChange.emit(this.input.value)\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, Input } from \"@angular/core\"\r\nimport { ICON_COMPONENT, IconName } from \"../../shared/interfaces\"\r\n\r\n@Component({\r\n selector: \"dolfo-icon\",\r\n standalone: false,\r\n template: `<ng-container [ngComponentOutlet]=\"iconComponent\" [ngComponentOutletInputs]=\"{ name }\"></ng-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconWrapperComponent {\r\n @Input({ required: true }) name: IconName | string\r\n\r\n public iconComponent = inject(ICON_COMPONENT)\r\n}\r\n","import { AfterViewInit, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, inject, Input, OnChanges, Output, signal, SimpleChanges, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { filter, fromEvent, map } from \"rxjs\"\r\nimport { ComboInput, ComboOption, isDeepEqual } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-combobox\",\r\n template: `<dolfo-input-container>\r\n\t\t<div class=\"combobox\" [class.opened]=\"opened()\" #combo tabindex=\"0\" (focus)=\"focus($event)\" (blur)=\"onBlur.emit($event); opened.set(false)\" [class.disabled]=\"input.disabled\">\r\n\t\t\t<div class=\"combobox-label\">\r\n @if(hasValue && !input.disabled){\r\n <dolfo-icon [dolfoTooltip]=\"'form.resetValue' | translate\" name=\"cross\" (click)=\"input.setValue(null); $event.stopPropagation()\"></dolfo-icon>\r\n }@else {\r\n <dolfo-icon name=\"circle-down\" class=\"combo-icon\"></dolfo-icon>\r\n }\r\n\t\t\t\t<span>{{ comboLabel() | translate }}</span>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"combobox-options\" [class.opened]=\"opened()\">\r\n\t\t\t\t@for(opt of options; track opt.value; let idx = $index){\r\n\t\t\t\t\t<div class=\"combobox-option\" [class.selected]=\"isSelected(opt)\" [class.focused]=\"currentFocus() === idx\" (click)=\"$event.stopPropagation(); setOption(opt)\">\r\n\t\t\t\t\t\t<span>{{ opt.label }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n <input type=\"hidden\" [formControl]=\"input\" />\r\n\t\t</div>\r\n\t</dolfo-input-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ComboboxComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => ComboboxComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: ComboboxComponent }\r\n ],\r\n standalone: false\r\n})\r\nexport class ComboboxComponent extends BaseFormInput<any | any[]> implements AfterViewInit, Required<ComboInput>, OnBlur, OnFocus, OnChanges{\r\n\t@ViewChild(\"combo\") private combo: ElementRef<HTMLDivElement>\r\n\t@Input({ required: true }) options: ComboOption[]\r\n\t@Input() placeHolder: string\r\n\t@Input({ transform: booleanAttribute }) multiple = false\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n\tpublic opened = signal(false)\r\n public currentFocus = signal<number>(null)\r\n public comboLabel = signal(\"\")\r\n\r\n\tconstructor(){\r\n\t\tsuper()\r\n\r\n\t\tthis.addSubscription(fromEvent(window, \"click\").pipe(\r\n filter(() => !!this.combo && !this.input.disabled),\r\n\t\t\tmap(ev => ev.target as HTMLElement),\r\n\t\t\tmap(target => !this.combo.nativeElement.contains(target) && !target.isEqualNode(this.combo.nativeElement))\r\n\t\t).subscribe(condition => {\r\n\t\t\tif(condition && this.opened())\r\n\t\t\t\tthis.opened.set(false)\r\n\t\t\telse if(!this.opened() && !condition)\r\n\t\t\t\tthis.opened.set(true)\r\n\t\t}))\r\n\r\n this.addSubscription(this.input.valueChanges.subscribe(value => this.comboLabel.set(this.extractLabel(value))))\r\n\t}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes.options && !isDeepEqual(changes.options.previousValue, changes.options.currentValue))\r\n this.input.setValue(null)\r\n }\r\n\r\n\toverride ngAfterViewInit() {\r\n\t\tsuper.ngAfterViewInit()\r\n\r\n\t\tthis.addSubscription(fromEvent<KeyboardEvent>(this.combo.nativeElement, \"keydown\").subscribe(e => {\r\n if(this.opened()){\r\n if(e.key === \"ArrowDown\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === this.options.length - 1 ? 0 : v === null ? 0 : v + 1)\r\n }else if(e.key === \"ArrowUp\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === 0 ? this.options.length - 1 : v === null ? 0 : v - 1)\r\n }else if(e.key === \"Enter\" && this.currentFocus() >= 0 && this.currentFocus() != null){\r\n e.preventDefault()\r\n this.setOption(this.options[this.currentFocus()])\r\n\r\n\t\t\t\t\tif(!this.multiple)\r\n\t\t\t\t\t\tthis.opened.set(false)\r\n\r\n\t\t\t\t\tthis.cdr.detectChanges()\r\n }else if(e.key === \"Tab\"){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }\r\n }\r\n }))\r\n\t}\r\n\r\n\tprivate extractLabel = (value: any | any[]) => {\r\n\t\tif(value == null || (value as number[])?.length === 0)\r\n\t\t\treturn this.placeHolder || \" \"\r\n\r\n\t\tif(!this.multiple)\r\n\t\t\treturn this.options.find(opt => isDeepEqual(opt.value, value))?.label\r\n\r\n\t\treturn this.options.filter(opt => (value as number[]).some(o => isDeepEqual(opt.value, o))).map(opt => opt.label).join(\", \")\r\n\t}\r\n\r\n\tpublic focus = (e: FocusEvent) => {\r\n\t\tif(this.input.disabled)\r\n\t\t\treturn\r\n\t\t\r\n\t\tthis.opened.set(true)\r\n\t\tthis.onFocus.emit(e)\r\n\t}\r\n\r\n\tpublic setOption = (opt: ComboOption) => {\r\n\t\tconst { value } = this.input\r\n\r\n\t\tif(!this.multiple){\r\n\t\t\tif(isDeepEqual(value, opt.value))\r\n\t\t\t\tthis.input.setValue(null)\r\n\t\t\telse\r\n\t\t\t\tthis.input.setValue(opt.value)\r\n\r\n this.opened.set(false)\r\n\t\t}else{\r\n\t\t\tconst castValue = value as Array<any>\r\n\r\n\t\t\tif(castValue.some(o => isDeepEqual(opt.value, o)))\r\n\t\t\t\tthis.input.setValue(castValue.filter(v => isDeepEqual(opt.value, v)))\r\n\t\t\telse\r\n\t\t\t\tthis.input.setValue(castValue.concat(opt.value))\r\n\t\t}\r\n\r\n\t\tthis.onChange.emit(this.input.value)\r\n\t}\r\n\r\n\tpublic isSelected = (opt: ComboOption) => {\r\n\t\tconst { value } = this.input\r\n\r\n\t\tif(!this.multiple)\r\n\t\t\treturn isDeepEqual(value, opt.value)\r\n\r\n\t\treturn (value as Array<any>).some(o => isDeepEqual(opt.value, o))\r\n\t}\r\n\r\n public get hasValue(){\r\n return this.multiple ? this.input.value != null && this.input.value.length > 0 : this.input.value != null\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-datepicker\",\r\n\ttemplate: `<dolfo-input-container>\r\n\t\t<input #formInput [type]=\"type === 'datetime' ? 'datetime-local' : type\" [formControl]=\"input\" (focus)=\"openPicker(); onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" />\r\n\t</dolfo-input-container>`,\r\n\tstandalone: false,\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatepickerComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => DatepickerComponent), multi: true },\r\n\t\t{ provide: BaseFormInput, useExisting: DatepickerComponent }\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DatepickerComponent extends BaseFormInput<Date> implements OnFocus, OnBlur{\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement>\r\n @Input() type: \"date\" | \"datetime\" | \"time\" = \"date\"\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n public openPicker = () => this.formInput.nativeElement.showPicker()\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, signal, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-file-select\",\r\n\ttemplate: `<dolfo-input-container>\r\n\t\t<input #formInput type=\"file\" (change)=\"changeFiles($event)\" [multiple]=\"multiple\" [accept]=\"accept\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [disabled]=\"input.disabled\" (dragover)=\"setDragging()\" (dragleave)=\"dragging.set(false)\" (drop)=\"onDrop($event)\" [class.dragging]=\"dragging()\" />\r\n\t</dolfo-input-container>`,\r\n\tstandalone: false,\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileSelectComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => FileSelectComponent), multi: true },\r\n\t\t{ provide: BaseFormInput, useExisting: FileSelectComponent }\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FileSelectComponent extends BaseFormInput<FileList> implements OnFocus, OnBlur{\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement>\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n @Input({ transform: booleanAttribute }) multiple = false\r\n @Input() accept: string\r\n\r\n public dragging = signal(false)\r\n\r\n public changeFiles = (e: Event) => {\r\n if(!this.input.disabled)\r\n this.control.setValue((e.target as HTMLInputElement).files)\r\n }\r\n\r\n override writeValue = (obj: FileList) => {\r\n super.writeValue(obj)\r\n \r\n if(this.formInput)\r\n this.formInput.nativeElement.value = null\r\n }\r\n\r\n public setDragging = () => {\r\n if(!this.input.disabled)\r\n this.dragging.set(true)\r\n }\r\n\r\n public onDrop = (event: DragEvent) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n\r\n if(this.input.disabled)\r\n return\r\n\r\n const rawFiles = event.dataTransfer?.files\r\n\r\n if (!rawFiles || rawFiles.length === 0)\r\n return\r\n\r\n const validFiles = Array.from(rawFiles).filter(f => this.isValidFile(f))\r\n\r\n if (validFiles.length > 0)\r\n this.control.setValue(validFiles)\r\n\r\n this.dragging.set(false)\r\n }\r\n\r\n public isValidFile = (file: File) => {\r\n if(!this.accept)\r\n return true\r\n\r\n const allowedExtensions = this.accept.split(\",\").map(ext => ext.trim().toLowerCase()),\r\n fileName = file.name.toLowerCase()\r\n \r\n return allowedExtensions.some(ext => {\r\n if (ext.startsWith(\".\"))\r\n return fileName.endsWith(ext)\r\n\r\n if (ext.includes(\"/\")) {\r\n if (ext.endsWith(\"/*\")) {\r\n const mainType = ext.split(\"/\")[0]\r\n return file.type.startsWith(mainType + \"/\")\r\n }\r\n\r\n return file.type === ext\r\n }\r\n\r\n return file.type === this.accept\r\n })\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\nimport { FormGroup } from \"@angular/forms\"\r\n\r\n@Component({\r\n selector: \"dolfo-form\",\r\n template: `<form [formGroup]=\"formGroup\">\r\n <ng-content></ng-content>\r\n\r\n @if(hiddenSubmit){\r\n <button type=\"submit\" [ngStyle]=\"{ display: 'none' }\"></button>\r\n }\r\n </form>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class FormComponent{\r\n @Input({ required: true }) formGroup: FormGroup\r\n @Input({ transform:booleanAttribute }) hiddenSubmit: boolean\r\n}\r\n","import { AfterViewInit, Directive, inject, Injector, OnInit, signal, ViewContainerRef } from \"@angular/core\"\r\nimport { Router } from \"@angular/router\"\r\nimport { concatAll, from, Observable, tap } from \"rxjs\"\r\nimport { StoreService } from \"../services\"\r\nimport { OverlayManager, Subscriptable } from \"./\"\r\n\r\n@Directive()\r\nexport abstract class BaseAppComponent extends Subscriptable implements OnInit, AfterViewInit{\r\n protected abstract container: ViewContainerRef\r\n\r\n protected abstract readonly streams: Observable<string>[]\r\n\r\n protected injector = inject(Injector)\r\n protected router = inject(Router)\r\n protected storeService = inject(StoreService)\r\n\r\n private loading = signal(0)\r\n public loadingMessage = signal(\"...\")\r\n\r\n ngOnInit(){\r\n from(Object.values(this.streams)).pipe(\r\n concatAll(),\r\n tap(desc => {\r\n this.loading.update(item => item + 1)\r\n this.loadingMessage.set(desc + \"...\")\r\n })\r\n ).subscribe(() => {\r\n if(this.loading() === Object.keys(this.streams).length){\r\n setTimeout(() => {\r\n this.loadingMessage.set(null)\r\n this.storeService.initialize()\r\n this.router.initialNavigation()\r\n }, 500)\r\n }\r\n })\r\n }\r\n\r\n ngAfterViewInit(){\r\n new OverlayManager(this.injector, this.container).init().forEach(s => this.addSubscription(s))\r\n }\r\n\r\n public get percentage(){\r\n return (this.loading() * 100) / Object.keys(this.streams).length\r\n }\r\n}","import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Directive, inject, OnDestroy, QueryList, ViewChild, ViewChildren } from \"@angular/core\"\r\nimport { FormArray, FormGroup, FormGroupDirective } from \"@angular/forms\"\r\nimport { BehaviorSubject, catchError, distinctUntilChanged, filter, mergeMap, Observable, of, Subscription, tap } from \"rxjs\"\r\nimport { BaseFormInput } from \"../../components/form/base-form-input\"\r\nimport { NotificationService, TranslateService } from \"../services\"\r\nimport { Subscriptable } from \"./subscriptable\"\r\n\r\n@Directive()\r\nexport abstract class Formable<T = object> extends Subscriptable implements OnDestroy, AfterViewInit, AfterViewChecked{\r\n @ViewChild(FormGroupDirective) protected formRef: FormGroupDirective\r\n @ViewChildren(BaseFormInput) private inputs: QueryList<BaseFormInput<unknown>>\r\n\r\n protected loading$ = new BehaviorSubject(false)\r\n protected notificationService = inject(NotificationService)\r\n protected translateService = inject(TranslateService)\r\n protected cdr = inject(ChangeDetectorRef)\r\n private subForm: Subscription\r\n \r\n protected abstract submit: (_formValue: T) => Observable<unknown>\r\n\r\n ngAfterViewInit() {\r\n if(!this.formRef)\r\n return\r\n \r\n this.addSubscription(this.loading$.pipe(\r\n distinctUntilChanged()\r\n ).subscribe(loading => {\r\n if(loading)\r\n this.formRef.form.disable()\r\n else\r\n this.formRef.form.enable()\r\n }))\r\n\r\n this.subForm = this.formRef.ngSubmit.pipe(\r\n tap(() => this.findInForm(this.formRef.form)),\r\n mergeMap(() => {\r\n if(!this.formRef.invalid && !this.loading$.getValue()){\r\n this.loading$.next(true)\r\n return this.submit(this.formRef.form.getRawValue()).pipe(\r\n catchError(err => {\r\n this.loading$.next(false)\r\n return of(err)\r\n }),\r\n tap(() => this.loading$.next(false))\r\n )\r\n }\r\n \r\n return of(null)\r\n })\r\n ).subscribe()\r\n\r\n this.addSubscription(this.subForm)\r\n\r\n this.addSubscription(this.translateService.getLang$().subscribe(() => this.cdr.detectChanges()))\r\n }\r\n \r\n ngAfterViewChecked() {\r\n if(!this.formRef && this.subForm){\r\n this.subForm.unsubscribe()\r\n this.subForm = null\r\n }else if(this.formRef && !this.subForm)\r\n this.ngAfterViewInit()\r\n }\r\n\r\n private findInForm = (formGroup: FormGroup, index?: number) => {\r\n for(const [key, control] of Object.entries(formGroup.controls)){\r\n control.markAsTouched()\r\n control.updateValueAndValidity()\r\n\r\n if(control.invalid){\r\n const arr = formGroup.get(key)\r\n\r\n if(arr instanceof FormArray){\r\n let index = 0\r\n\r\n for(const item of arr.controls){\r\n if(this.findInForm(item as FormGroup, index))\r\n return true\r\n\r\n index++\r\n }\r\n }else{\r\n const inputs = this.inputs.toArray().filter(i => i.formControlName === key)\r\n\r\n if(inputs.length === 1)\r\n inputs[0].container?.focus()\r\n else if(index != null)\r\n inputs[index].container?.focus()\r\n\r\n return true\r\n }\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n public manualSubmit = () => this.formRef.ngSubmit.emit()\r\n\r\n protected registerPasswordChanges = (passwordControlName: string, confirmPasswordControlName: string) => {\r\n this.addSubscription(this.formRef.form.get(passwordControlName).valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.formRef.form.get(passwordControlName).touched)\r\n ).subscribe(() => {\r\n this.formRef.form.get(confirmPasswordControlName).updateValueAndValidity()\r\n this.formRef.form.get(confirmPasswordControlName).markAsTouched()\r\n }))\r\n\r\n this.addSubscription(this.formRef.form.get(confirmPasswordControlName).valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.formRef.form.get(confirmPasswordControlName).touched)\r\n ).subscribe(() => {\r\n this.formRef.form.get(passwordControlName).updateValueAndValidity()\r\n this.formRef.form.get(passwordControlName).markAsTouched()\r\n }))\r\n }\r\n\r\n public isLoading$ = () => this.loading$.asObservable()\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, InjectionToken, Input, OnInit } from \"@angular/core\"\r\nimport { fromEvent, race } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { ContextMenuItem, IContextMenu } from \"../../shared/interfaces\"\r\n\r\nexport const CONTEXT_MENU_DESTROY_TOKEN = new InjectionToken<() => void>(\"CONTEXT_MENU_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-context-menu\",\r\n standalone: false,\r\n template: `<div class=\"context-menu\" [ngStyle]=\"{\r\n top: y + 'px',\r\n left: x + 'px'\r\n }\" (click)=\"$event.stopPropagation()\" [ngClass]=\"'position-' + position\">\r\n @for(item of items; track item.label){\r\n <div [ngClass]=\"item.className\" [class.disabled]=\"item.disabled\" (click)=\"clickItem(item)\">\r\n @if(item.icon){\r\n <dolfo-icon [name]=\"item.icon\"></dolfo-icon>\r\n }\r\n {{ item.label }}\r\n </div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContextMenuComponent extends Subscriptable implements IContextMenu, OnInit {\r\n @Input({ required: true }) x: number\r\n @Input({ required: true }) y: number\r\n @Input({ required: true }) items: ContextMenuItem[]\r\n @Input({ required: true }) ref: ElementRef<HTMLElement>\r\n @Input() position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\"\r\n \r\n private destroyFn = inject(CONTEXT_MENU_DESTROY_TOKEN)\r\n\r\n ngOnInit() {\r\n this.addSubscription(race([\r\n fromEvent(this.ref.nativeElement, \"contextmenu\"),\r\n fromEvent(window, \"click\"),\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true })\r\n ]).subscribe(this.destroyFn))\r\n }\r\n\r\n public clickItem = (item: ContextMenuItem) => {\r\n if(item.onClick && !item.disabled){\r\n item.onClick()\r\n this.destroyFn()\r\n }\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { filter, map } from \"rxjs\"\r\nimport { InputType } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-text\",\r\n template: `<dolfo-input-container>\r\n @if(type === \"textarea\"){\r\n <textarea #formInput [name]=\"formControlName\" [formControl]=\"input\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [placeholder]=\"placeHolder\"></textarea>\r\n }@else{\r\n <input #formInput [name]=\"formControlName\" [type]=\"type\" [formControl]=\"input\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [placeholder]=\"placeHolder\" />\r\n }\r\n </dolfo-input-container>`,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputTextComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputTextComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputTextComponent }\r\n ],\r\n standalone: false\r\n})\r\nexport class InputTextComponent extends BaseFormInput<string | number> implements OnFocus, OnBlur{\r\n @Input() type: InputType = \"text\"\r\n @Input() placeHolder = \"\"\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement | HTMLTextAreaElement>\r\n\r\n public focus = () => this.formInput.nativeElement.focus()\r\n\r\n override ngAfterViewInit() {\r\n if(this.type !== \"number\")\r\n super.ngAfterViewInit()\r\n else{\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(() => !this.input.disabled),\r\n map(v => v != null && String(v).trim() !== \"\" ? Number(v) : null)\r\n ).subscribe(v => {\r\n this.onChange.emit(v)\r\n this.changeInternal(v)\r\n }))\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, Input } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { ComboOption, isDeepEqual } from \"../../shared/interfaces\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-radio\",\r\n template: `<dolfo-input-container>\r\n @for(option of options; track option){\r\n <div class=\"radio-item\">\r\n <input type=\"radio\" [name]=\"formControlName\" [formControl]=\"input\" [checked]=\"isSelectedOption(option)\" [value]=\"option.value\" />\r\n <label (click)=\"setOption(option)\">{{ option.label }}</label>\r\n </div>\r\n }\r\n </dolfo-input-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputRadioComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputRadioComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputRadioComponent }\r\n ]\r\n})\r\nexport class InputRadioComponent extends BaseFormInput<any> {\r\n @Input({ required: true }) options: ComboOption[]\r\n\r\n public isSelectedOption = (opt: ComboOption) => isDeepEqual(this.input.value, opt.value)\r\n\r\n public setOption = (opt: ComboOption) => {\r\n if(this.input.disabled)\r\n return\r\n \r\n this.input.setValue(opt.value)\r\n this.onChange.emit(this.input.value)\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, TemplateRef, ViewChild } from \"@angular/core\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-content\",\r\n template: `<ng-template><ng-content></ng-content></ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogContentComponent implements OnInit{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n ngOnInit() {\r\n this.cdr.detectChanges()\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { ButtonColor, ButtonSize } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnClick, OnFocus } from \"../../shared/interfaces/events\"\r\n\r\n@Component({\r\n selector: \"dolfo-button\",\r\n template: `<button #btn [type]=\"type\" [disabled]=\"disabled || loading\" (click)=\"doClick($event)\" [class]=\"'color-' + (color || 'primary')\" (focus)=\"onFocus.emit($event)\" (blur)=\"onFocus.emit($event)\" [class.size-sm]=\"size === 'small'\" [class.size-lg]=\"size === 'large'\" [class.text]=\"textButton\">\r\n @if(loading){\r\n <dolfo-icon name=\"spinner8\"></dolfo-icon>\r\n }\r\n <ng-content></ng-content>\r\n </button>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class ButtonComponent implements OnClick, OnBlur, OnFocus{\r\n @ViewChild(\"btn\") btn: ElementRef<HTMLButtonElement>\r\n @Input() type: \"button\" | \"submit\" = \"button\"\r\n @Input({ transform: booleanAttribute }) disabled = false\r\n @Input() color: ButtonColor\r\n @Input() loading = false\r\n @Input() size: ButtonSize\r\n @Input({ transform: booleanAttribute }) textButton = false\r\n\r\n @Output() onClick = new EventEmitter<MouseEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n\r\n public doClick = (e: MouseEvent) => {\r\n if (!this.disabled && !this.loading)\r\n this.onClick.emit(e)\r\n }\r\n\r\n public focus = () => {\r\n if(!this.disabled && !this.loading)\r\n this.btn.nativeElement.focus()\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Output, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { DialogActionType, DialogIcon } from \"../../../shared/interfaces\"\r\nimport { DialogService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-header\",\r\n template: `<ng-template>\r\n <h5>\r\n @if(icon){\r\n <dolfo-icon [name]=\"getIcon()\" [class]=\"'fg-' + icon.color\"></dolfo-icon>\r\n }\r\n {{ title }}\r\n </h5>\r\n @if(showCloseX){\r\n <dolfo-button (click)=\"close()\" color=\"secondary\" [dolfoTooltip]=\"'dialog.close' | translate\">\r\n <dolfo-icon name=\"cross\"></dolfo-icon>\r\n </dolfo-button>\r\n }\r\n </ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogHeaderComponent implements OnInit{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n @Input({ required: true }) title: string\r\n @Input() icon: DialogIcon\r\n @Input({ transform: booleanAttribute }) showCloseX = true\r\n @Output() onCancel = new EventEmitter()\r\n private cdr = inject(ChangeDetectorRef)\r\n private dialogService = inject(DialogService)\r\n\r\n ngOnInit() {\r\n this.cdr.detectChanges()\r\n }\r\n\r\n public close = () => {\r\n if(this.onCancel.observed)\r\n this.onCancel.emit()\r\n else{\r\n this.dialogService.action({ type: DialogActionType.CANCEL, data: null })\r\n this.dialogService.close()\r\n }\r\n }\r\n\r\n public getIcon = () => this.icon.icon\r\n}\r\n","import { AfterViewChecked, ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Injector, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from \"@angular/core\"\r\nimport { DialogFooterButton } from \"../../../shared/interfaces\"\r\nimport { ButtonComponent } from \"../button.component\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-footer\",\r\n template: `<ng-template>\r\n @for(btn of buttons; track btn.label){\r\n <dolfo-button (onClick)=\"btn.onClick()\" [color]=\"btn.color\" [disabled]=\"btn.disabled\" [loading]=\"btn.loading\">\r\n @if(btn.icon && !btn.loading){\r\n <dolfo-icon [name]=\"btn.icon\"></dolfo-icon>\r\n }\r\n {{ btn.label }}\r\n </dolfo-button>\r\n }\r\n </ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogFooterComponent implements OnInit, AfterViewChecked{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n @ViewChildren(ButtonComponent) childrenButtons: QueryList<ButtonComponent>\r\n @Input({ required: true }) buttons: DialogFooterButton[]\r\n\r\n private focused = false\r\n private cdr = inject(ChangeDetectorRef)\r\n private injector = inject(Injector)\r\n\r\n async ngOnInit() {\r\n this.cdr.detectChanges()\r\n setTimeout(() => this.cdr.markForCheck())\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if(!this.focused){\r\n const firstBtn = this.childrenButtons.find(btn => !btn.disabled && !btn.loading)\r\n\r\n if(firstBtn)\r\n firstBtn.focus()\r\n \r\n this.focused = true\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input } from \"@angular/core\"\r\nimport { DialogContentComponent } from \"./dialog-content.component\"\r\nimport { DialogFooterComponent } from \"./dialog-footer.component\"\r\nimport { DialogHeaderComponent } from \"./dialog-header.component\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-layout\",\r\n templateUrl: \"./dialog-layout.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogLayoutComponent {\r\n @ContentChild(DialogHeaderComponent) header: DialogHeaderComponent\r\n @ContentChild(DialogContentComponent) content: DialogContentComponent\r\n @ContentChild(DialogFooterComponent) footer: DialogFooterComponent\r\n @Input() width: number\r\n}\r\n","<div class=\"dialog\">\r\n <div class=\"dialog-inner\" [ngStyle]=\"{ width: width + 'px' }\">\r\n @if(header){\r\n <div class=\"dialog-header\">\r\n <ng-content *ngTemplateOutlet=\"header.template\"></ng-content>\r\n </div>\r\n }\r\n @if(content){\r\n <div class=\"dialog-content\">\r\n <ng-content *ngTemplateOutlet=\"content.template\"></ng-content>\r\n </div>\r\n }\r\n @if(footer){\r\n <div class=\"dialog-footer\">\r\n <ng-content *ngTemplateOutlet=\"footer.template\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from \"@angular/core\"\r\nimport { FormGroup } from \"@angular/forms\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { Observable, of } from \"rxjs\"\r\nimport { Formable } from \"../../../shared/classes\"\r\nimport { DialogActionType, DialogComponentInput, DialogFooterButton, DialogForm, DialogIcon, DialogType, IDialogInput } from \"../../../shared/interfaces\"\r\nimport { DialogService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog\",\r\n standalone: false,\r\n template: `<dolfo-dialog-layout [width]=\"width\" [ngClass]=\"className\">\r\n @if(title){\r\n <dolfo-dialog-header [title]=\"title\" [showCloseX]=\"showCloseX()\" [icon]=\"getIcon()\"></dolfo-dialog-header>\r\n }\r\n\r\n <dolfo-dialog-content>\r\n <div [class.loading]=\"type === 'loading'\">\r\n @if(message){\r\n <span [innerHTML]=\"sanitizeMsg()\"></span>\r\n }\r\n\r\n @if(form && formGroup){\r\n <form [formGroup]=\"formGroup\">\r\n @for(f of form; track f.name){\r\n @switch(f.type){\r\n @case(\"date\"){\r\n <dolfo-datepicker [formControlName]=\"f.name\" [label]=\"f.label\"></dolfo-datepicker>\r\n }\r\n @case(\"autocomplete\"){\r\n <dolfo-autocomplete [formControlName]=\"f.name\" [label]=\"f.label\" [config]=\"f.autocompleteCfg\"></dolfo-autocomplete>\r\n }\r\n @case(\"radio\"){\r\n <dolfo-input-radio [formControlName]=\"f.name\" [label]=\"f.label\" [options]=\"f.options\"></dolfo-input-radio>\r\n }\r\n @case(\"combobox\"){\r\n <dolfo-combobox [formControlName]=\"f.name\" [label]=\"f.label\" [options]=\"f.options\"></dolfo-combobox>\r\n }\r\n @default{\r\n <dolfo-input-text [formControlName]=\"f.name\" [type]=\"f.type\" [label]=\"f.label\"></dolfo-input-text>\r\n }\r\n }\r\n }\r\n </form>\r\n }\r\n </div>\r\n </dolfo-dialog-content>\r\n\r\n @let footer = buttons || getFooter();\r\n\r\n @if(footer){\r\n <dolfo-dialog-footer [buttons]=\"footer\"></dolfo-dialog-footer>\r\n }\r\n </dolfo-dialog-layout>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DialogComponent extends Formable implements Required<IDialogInput>, OnInit {\r\n @Input() title: string\r\n @Input({ required: true }) message: string\r\n @Input() type: DialogType = \"info\"\r\n @Input() width: number\r\n @Input() hideCloseX = false\r\n @Input() form: DialogForm\r\n @Input() component: DialogComponentInput\r\n @Input() buttons: DialogFooterButton[]\r\n @Input() className: string\r\n public formGroup: FormGroup\r\n \r\n protected dialogService = inject(DialogService)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n ngOnInit() {\r\n if(this.form){\r\n this.formGroup = new FormGroup({})\r\n this.form.forEach(f => this.formGroup.addControl(f.name, f.control))\r\n }\r\n }\r\n\r\n protected submit = (formValue: any): Observable<unknown> => of(this.close(DialogActionType.OK, formValue))\r\n\r\n public getIcon = (): DialogIcon => {\r\n if(this.type === \"info\")\r\n return { icon: \"info\", color: \"info\" }\r\n if(this.type === \"error\")\r\n return { icon: \"notification\", color: \"error\" }\r\n if(this.type === \"confirm\")\r\n return { icon: \"question\", color: \"warning\" }\r\n\r\n return null\r\n }\r\n\r\n protected close = (type: DialogActionType, data?: Record<string, any>) => {\r\n if(type === DialogActionType.OK && this.formGroup && this.formRef){\r\n this.formRef.ngSubmit.emit()\r\n\r\n if(this.formGroup.invalid)\r\n return\r\n }\r\n\r\n this.dialogService.action({ type, data: data != null ? data : this.formGroup?.getRawValue() })\r\n this.dialogService.close()\r\n }\r\n\r\n public showCloseX = () => this.type !== \"loading\" && !this.hideCloseX\r\n\r\n public getFooter = (): DialogFooterButton[] => {\r\n if(this.type === \"loading\")\r\n return null\r\n\r\n if(this.type === \"info\" || this.type === \"error\"){\r\n return [{\r\n label: this.translateService.translate(\"dialog.ok\"),\r\n onClick: () => this.close(DialogActionType.OK),\r\n color: this.type\r\n }]\r\n }\r\n\r\n return [{\r\n label: this.translateService.translate(\"dialog.confirm\"),\r\n onClick: () => this.close(DialogActionType.OK),\r\n color: \"primary\"\r\n },\r\n {\r\n label: this.translateService.translate(\"dialog.no\"),\r\n onClick: () => this.close(DialogActionType.NO),\r\n color: \"secondary\"\r\n }]\r\n }\r\n\r\n public sanitizeMsg = () => this.sanitizer.bypassSecurityTrustHtml(this.message)\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from \"@angular/core\"\r\nimport { INotificationInput, NotificationAction, NotificationType } from \"../../shared/interfaces\"\r\nimport { NotificationService, TranslateService } from \"../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-notification\",\r\n standalone: false,\r\n template: `<div class=\"notification\" [ngClass]=\"{\r\n success: type === 'success',\r\n error: type === 'error',\r\n warning: type === 'warning',\r\n info: type === 'info'\r\n }\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (click)=\"click()\">\r\n <div class=\"notification-header\">\r\n <h6>{{ title || getTitleByType() }}</h6>\r\n </div>\r\n <div class=\"notification-content\">\r\n {{ message }}\r\n </div>\r\n @if(action){\r\n <div class=\"notification-action\">\r\n <dolfo-button [color]=\"type\" (onClick)=\"action.click()\">\r\n <dolfo-icon name=\"new-tab\"></dolfo-icon>\r\n {{ action.label }}\r\n </dolfo-button>\r\n </div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NotificationComponent implements OnInit, Required<INotificationInput>{\r\n @Input({ required: true }) title: string\r\n @Input({ required: true }) message: string\r\n @Input() type: NotificationType = \"info\"\r\n @Input() action: NotificationAction\r\n\r\n private timeout: any\r\n private ns = inject(NotificationService)\r\n private ts = inject(TranslateService)\r\n\r\n ngOnInit(){\r\n this.mouseLeave()\r\n }\r\n\r\n public mouseEnter = () => clearTimeout(this.timeout)\r\n\r\n public mouseLeave = () => this.timeout = setTimeout(() => this.ns.hide(), 3000)\r\n\r\n public click = () => {\r\n this.mouseEnter()\r\n this.ns.hide()\r\n }\r\n\r\n public getTitleByType = () => this.ts.translate(\"notification.\" + this.type)\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, InjectionToken, Input, OnInit, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { BehaviorSubject, filter, fromEvent, map, race, zip } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { IPopover, TooltipDirection } from \"../../shared/interfaces\"\r\n\r\nexport const POPOVER_DESTROY_TOKEN = new InjectionToken<() => void>(\"POPOVER_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-popover\",\r\n standalone: false,\r\n template: `<div class=\"tooltip popover\" #tooltipRef [ngStyle]=\"{\r\n left: (x$ | async) + 'px',\r\n top: (y$ | async) + 'px'\r\n }\" [ngClass]=\"currentDirection$ | async\" [class.show]=\"completed$ | async\">\r\n @if(isTemplate()){\r\n <ng-container [ngTemplateOutlet]=\"getContentTemplate()\" [ngTemplateOutletContext]=\"context\"></ng-container>\r\n }@else{\r\n <div [innerHTML]=\"getContentStr()\"></div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PopoverComponent extends Subscriptable implements OnInit, AfterViewInit, Required<IPopover> {\r\n @ViewChild(\"tooltipRef\") tooltipRef: ElementRef<HTMLDivElement>\r\n @Input({ required: true }) content: string | TemplateRef<any>\r\n @Input({ required: true }) elementRef: ElementRef<HTMLElement>\r\n @Input({ required: true }) direction: TooltipDirection\r\n @Input() context: any\r\n\r\n private destroyFn = inject(POPOVER_DESTROY_TOKEN)\r\n private checkCount = 0\r\n private cdr = inject(ChangeDetectorRef)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n public currentDirection$ = new BehaviorSubject<TooltipDirection>(null)\r\n public completed$ = new BehaviorSubject(false)\r\n public readonly x$ = new BehaviorSubject(0)\r\n public readonly y$ = new BehaviorSubject(0)\r\n\r\n ngOnInit() {\r\n this.currentDirection$.next(this.direction)\r\n\r\n this.addSubscription(race([\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true }),\r\n fromEvent<MouseEvent>(window, \"click\").pipe(\r\n map(e => e.target as HTMLElement),\r\n filter(el => !el.isEqualNode(this.tooltipRef.nativeElement) && !this.tooltipRef.nativeElement.contains(el))\r\n )\r\n ]).subscribe(this.destroyFn))\r\n\r\n this.addSubscription(zip([this.x$, this.y$]).pipe(\r\n filter(([x, y]) => x != 0 && y != 0 && this.checkCount < 4)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n if (this.isTooltipInViewport()) {\r\n this.completed$.next(true)\r\n this.calculatePosition()\r\n return\r\n }\r\n\r\n if (this.currentDirection$.getValue() === \"bottom\")\r\n this.currentDirection$.next(\"left\")\r\n else if (this.currentDirection$.getValue() === \"left\")\r\n this.currentDirection$.next(\"top\")\r\n else if (this.currentDirection$.getValue() === \"top\")\r\n this.currentDirection$.next(\"right\")\r\n else\r\n this.currentDirection$.next(\"bottom\")\r\n })\r\n }))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.currentDirection$.asObservable().subscribe(() => setTimeout(() => this.calculatePosition())))\r\n }\r\n\r\n private calculatePosition = () => {\r\n const { elementRef, tooltipRef, currentDirection$ } = this,\r\n refRect = elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipRect = tooltipRef.nativeElement.getBoundingClientRect(),\r\n currentDirection = currentDirection$.getValue()\r\n\r\n if (currentDirection === \"top\" || currentDirection === \"bottom\")\r\n this.x$.next(refRect.left - ((tooltipRect.width - refRect.width) / 2))\r\n else if (currentDirection === \"right\")\r\n this.x$.next(refRect.left + refRect.width)\r\n else\r\n this.x$.next(refRect.left - tooltipRect.width)\r\n\r\n if (currentDirection === \"top\")\r\n this.y$.next(refRect.top - tooltipRect.height)\r\n else if (currentDirection === \"bottom\")\r\n this.y$.next(refRect.top + refRect.height)\r\n else\r\n this.y$.next(refRect.top - ((tooltipRect.height - refRect.height) / 2))\r\n\r\n this.cdr.detectChanges()\r\n this.checkCount++\r\n }\r\n\r\n private isTooltipInViewport = () => {\r\n const { top, left, bottom, right } = this.tooltipRef.nativeElement.getBoundingClientRect()\r\n return top >= 0 && left >= 0 && bottom <= window.innerHeight && right <= window.innerWidth\r\n }\r\n\r\n public getContentStr = () => this.sanitizer.bypassSecurityTrustHtml(this.content as string)\r\n\r\n public isTemplate = () => this.content instanceof TemplateRef\r\n\r\n public getContentTemplate = () => this.content as TemplateRef<any>\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, InjectionToken, Input, OnInit, ViewChild } from \"@angular/core\"\r\nimport { BehaviorSubject, filter, fromEvent, race, zip } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { ITooltip, TooltipDirection } from \"../../shared/interfaces\"\r\n\r\nexport const TOOLTIP_DESTROY_TOKEN = new InjectionToken<() => void>(\"TOOLTIP_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-tooltip\",\r\n standalone: false,\r\n template: `<div class=\"tooltip\" #tooltipRef [ngStyle]=\"{\r\n left: (x$ | async) + 'px',\r\n top: (y$ | async) + 'px'\r\n }\" [ngClass]=\"currentDirection$ | async\" [class.show]=\"completed$ | async\">\r\n {{ content }}\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TooltipComponent extends Subscriptable implements OnInit, AfterViewInit, Required<ITooltip> {\r\n @ViewChild(\"tooltipRef\") tooltipRef: ElementRef<HTMLDivElement>\r\n @Input({ required: true }) content: string\r\n @Input({ required: true }) elementRef: ElementRef<HTMLElement>\r\n @Input({ required: true }) direction: TooltipDirection\r\n \r\n private destroyFn = inject(TOOLTIP_DESTROY_TOKEN)\r\n private checkCount = 0\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n public currentDirection$ = new BehaviorSubject<TooltipDirection>(null)\r\n public completed$ = new BehaviorSubject(false)\r\n public readonly x$ = new BehaviorSubject(0)\r\n public readonly y$ = new BehaviorSubject(0)\r\n\r\n ngOnInit() {\r\n this.currentDirection$.next(this.direction)\r\n\r\n this.addSubscription(race([\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true }),\r\n fromEvent(this.elementRef.nativeElement, \"mouseleave\")\r\n ]).subscribe(this.destroyFn))\r\n\r\n this.addSubscription(zip([this.x$, this.y$]).pipe(\r\n filter(([x, y]) => x != 0 && y != 0 && this.checkCount < 4)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n if (this.isTooltipInViewport()) {\r\n this.completed$.next(true)\r\n this.calculatePosition()\r\n return\r\n }\r\n\r\n if (this.currentDirection$.getValue() === \"bottom\")\r\n this.currentDirection$.next(\"left\")\r\n else if (this.currentDirection$.getValue() === \"left\")\r\n this.currentDirection$.next(\"top\")\r\n else if (this.currentDirection$.getValue() === \"top\")\r\n this.currentDirection$.next(\"right\")\r\n else\r\n this.currentDirection$.next(\"bottom\")\r\n })\r\n }))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.currentDirection$.asObservable().subscribe(() => setTimeout(() => this.calculatePosition())))\r\n }\r\n\r\n private calculatePosition = () => {\r\n const { elementRef, tooltipRef, currentDirection$ } = this,\r\n refRect = elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipRect = tooltipRef.nativeElement.getBoundingClientRect(),\r\n currentDirection = currentDirection$.getValue()\r\n\r\n if (currentDirection === \"top\" || currentDirection === \"bottom\")\r\n this.x$.next(refRect.left - ((tooltipRect.width - refRect.width) / 2))\r\n else if (currentDirection === \"right\")\r\n this.x$.next(refRect.left + refRect.width)\r\n else\r\n this.x$.next(refRect.left - tooltipRect.width)\r\n\r\n if (currentDirection === \"top\")\r\n this.y$.next(refRect.top - tooltipRect.height)\r\n else if (currentDirection === \"bottom\")\r\n this.y$.next(refRect.top + refRect.height)\r\n else\r\n this.y$.next(refRect.top - ((tooltipRect.height - refRect.height) / 2))\r\n\r\n this.cdr.detectChanges()\r\n this.checkCount++\r\n }\r\n\r\n private isTooltipInViewport = () => {\r\n const { top, left, bottom, right } = this.tooltipRef.nativeElement.getBoundingClientRect()\r\n return top >= 0 && left >= 0 && bottom <= window.innerHeight && right <= window.innerWidth\r\n }\r\n}","import { ComponentRef, createComponent, EnvironmentInjector, Injector, ViewContainerRef } from \"@angular/core\"\r\nimport { distinctUntilChanged, filter, map, tap } from \"rxjs\"\r\nimport { CONTEXT_MENU_DESTROY_TOKEN, ContextMenuComponent } from \"../../components/layout/context-menu.component\"\r\nimport { DialogComponent } from \"../../components/layout/dialog-layout/dialog.component\"\r\nimport { NotificationComponent } from \"../../components/layout/notification.component\"\r\nimport { POPOVER_DESTROY_TOKEN, PopoverComponent } from \"../../components/layout/popover.component\"\r\nimport { TOOLTIP_DESTROY_TOKEN, TooltipComponent } from \"../../components/layout/tooltip.component\"\r\nimport { IDialogInput, isDeepEqual } from \"../interfaces\"\r\nimport { ContextMenuService, DialogService, NotificationService, PopoverService, TooltipService } from \"../services\"\r\n\r\nexport class OverlayManager{\r\n private dialog: [ComponentRef<IDialogInput>, number][] = []\r\n private notification: ComponentRef<NotificationComponent>\r\n private tooltip: ComponentRef<TooltipComponent>\r\n private popover: ComponentRef<PopoverComponent>\r\n private contextMenu: ComponentRef<ContextMenuComponent>\r\n \r\n constructor(private injector: Injector, private container: ViewContainerRef){}\r\n\r\n public init = () => {\r\n const ds = this.injector.get(DialogService),\r\n ns = this.injector.get(NotificationService),\r\n ts = this.injector.get(TooltipService),\r\n cs = this.injector.get(ContextMenuService),\r\n ps = this.injector.get(PopoverService),\r\n environmentInjector = this.injector.get(EnvironmentInjector)\r\n\r\n return [\r\n ds.getDialog$().pipe(\r\n tap(inputs => {\r\n const notFound = this.dialog.filter(d => !inputs.some(i => i._dialogId === d[1]))\r\n\r\n notFound.forEach(d => d[0].destroy())\r\n\r\n this.dialog = this.dialog.filter(d => !notFound.some(d2 => d2[1] === d[1]))\r\n }),\r\n map(inputs => inputs[inputs.length - 1]),\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n filter(input => !!input && !this.dialog.some(d => d[1] === input._dialogId))\r\n ).subscribe(input => {\r\n const dialog = createComponent(input.component?.type || DialogComponent, { environmentInjector })\r\n this.dialog.push([dialog, input._dialogId])\r\n \r\n Object.entries(input).filter(k => k[0] !== \"_dialogId\").forEach(([k, v]) => dialog.setInput(k, v))\r\n \r\n if(input.component?.input)\r\n Object.entries(input.component.input).forEach(([k, v]) => dialog.setInput(k, v))\r\n \r\n this.container.insert(dialog.hostView)\r\n }),\r\n ns.getNotification$().pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n tap(() => {\r\n if(this.notification)\r\n this.notification.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.notification = createComponent(NotificationComponent, { environmentInjector })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.notification.setInput(k, v))\r\n \r\n this.container.insert(this.notification.hostView)\r\n }),\r\n ts.getTooltip$().pipe(\r\n tap(() => {\r\n if(this.tooltip)\r\n this.tooltip.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.tooltip = createComponent(TooltipComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: TOOLTIP_DESTROY_TOKEN, useValue: () => this.tooltip.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.tooltip.setInput(k, v))\r\n \r\n this.container.insert(this.tooltip.hostView)\r\n }),\r\n ps.getPopover$().pipe(\r\n tap(() => {\r\n if(this.popover)\r\n this.popover.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.popover = createComponent(PopoverComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: POPOVER_DESTROY_TOKEN, useValue: () => this.popover.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.popover.setInput(k, v))\r\n \r\n this.container.insert(this.popover.hostView)\r\n }),\r\n cs.getContextMenu$().pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n tap(() => {\r\n if(this.contextMenu)\r\n this.contextMenu.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.contextMenu = createComponent(ContextMenuComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: CONTEXT_MENU_DESTROY_TOKEN, useValue: () => this.contextMenu.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.contextMenu.setInput(k, v))\r\n \r\n this.container.insert(this.contextMenu.hostView)\r\n })\r\n ]\r\n }\r\n}","import { ProviderToken, Type } from \"@angular/core\"\r\nimport { CanActivateFn, CanDeactivateFn, Route } from \"@angular/router\"\r\nimport { Observable } from \"rxjs\"\r\nimport { RouteCheckService } from \"../services\"\r\n\r\ninterface Module{\r\n [x: string]: Type<unknown>\r\n}\r\n\r\nexport class RouteConfig{\r\n private loadComponent: () => Promise<Type<unknown>>\r\n private redirectTo: string\r\n private pathMatch: \"full\" | \"prefix\" = \"full\"\r\n private title: (() => Observable<string> | string) | string\r\n private canActivate: Array<CanActivateFn | ProviderToken<any> | string> = []\r\n private canDeactivate: Array<CanDeactivateFn<any> | ProviderToken<any>> = []\r\n\r\n constructor(private path: string, withRouteCheck = true){\r\n if(withRouteCheck)\r\n this.canActivate.push(RouteCheckService)\r\n }\r\n\r\n public withTitle = (title: typeof this.title) => {\r\n this.title = title\r\n return this\r\n }\r\n\r\n public loadUrl = (imp: Promise<Module>) => {\r\n this.loadComponent = () => imp.then(t => Object.values(t)[0])\r\n return this\r\n }\r\n\r\n public withRedirect = (url: string) => {\r\n this.redirectTo = url\r\n return this\r\n }\r\n\r\n public addCanDeactivate = (guard: CanDeactivateFn<any> | ProviderToken<any> | Array<CanDeactivateFn<any> | ProviderToken<any>>) => {\r\n if(Array.isArray(guard))\r\n this.canDeactivate.push(...guard)\r\n else\r\n this.canDeactivate.push(guard)\r\n \r\n return this\r\n }\r\n\r\n public addGuard = (guard: CanActivateFn | ProviderToken<any> | string | Array<CanActivateFn | ProviderToken<any> | string>) => {\r\n if(Array.isArray(guard))\r\n this.canActivate.push(...guard)\r\n else\r\n this.canActivate.push(guard)\r\n \r\n return this\r\n }\r\n\r\n public toRoute = (): Route => ({\r\n loadComponent: this.loadComponent,\r\n path: this.path,\r\n pathMatch: this.pathMatch,\r\n title: this.title,\r\n redirectTo: this.redirectTo,\r\n canActivate: this.canActivate,\r\n canDeactivate: this.canDeactivate\r\n })\r\n}","import { ActivatedRouteSnapshot, BaseRouteReuseStrategy } from \"@angular/router\"\r\n\r\nexport class RouterReloadStrategy extends BaseRouteReuseStrategy {\r\n override shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot) {\r\n if (future.routeConfig === curr.routeConfig)\r\n return false\r\n\r\n return super.shouldReuseRoute(future, curr)\r\n }\r\n}","import { booleanAttribute, Directive, ElementRef, inject, Input, OnInit } from \"@angular/core\"\r\nimport { fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { ContextMenuItem } from \"../interfaces\"\r\nimport { ContextMenuService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoContextMenu]\",\r\n standalone: false\r\n})\r\nexport class ContextMenuDirective extends Subscriptable implements OnInit{\r\n @Input({ required: true, alias: \"dolfoContextMenu\" }) contextMenu: ContextMenuItem[]\r\n @Input({ transform: booleanAttribute }) openOnClick: boolean\r\n @Input({ transform: booleanAttribute }) useElRef: boolean\r\n @Input() position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" = \"bottom-left\"\r\n private contextMenuService = inject(ContextMenuService)\r\n private elRef = inject(ElementRef<HTMLElement>)\r\n\r\n ngOnInit(){\r\n this.addSubscription(fromEvent<MouseEvent>(this.elRef.nativeElement, this.openOnClick ? \"click\" : \"contextmenu\").subscribe(e => {\r\n e.preventDefault()\r\n\r\n const [left, top] = this.useElRef ? this.getElRefPosition() : [e.clientX, e.clientY]\r\n\r\n this.contextMenuService.openContextMenu({\r\n x: left,\r\n y: top,\r\n items: this.contextMenu,\r\n ref: this.elRef,\r\n position: this.position\r\n })\r\n }))\r\n }\r\n\r\n private getElRefPosition = () => {\r\n const { left, width, top, height } = this.elRef.nativeElement.getBoundingClientRect()\r\n\r\n const diff = left + width\r\n\r\n if(this.position.startsWith(\"bottom-\")){\r\n const posTop = top + height\r\n\r\n if(this.position === \"bottom-left\")\r\n return [left, posTop]\r\n\r\n return [diff, posTop]\r\n }\r\n\r\n if(this.position === \"top-right\")\r\n return [diff, top]\r\n\r\n return [left, top]\r\n }\r\n}\r\n","import { APP_BASE_HREF } from \"@angular/common\"\r\nimport { Directive, ElementRef, inject, Input, SimpleChanges } from \"@angular/core\"\r\nimport { Router } from \"@angular/router\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { StoreService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoNavigate]\",\r\n standalone: false\r\n})\r\nexport class NavigateDirective extends Subscriptable{\r\n @Input({ required: true, alias: \"dolfoNavigate\" }) url: string\r\n private isLink: boolean\r\n private publicUrl = inject(APP_BASE_HREF)\r\n private storeService = inject(StoreService)\r\n private router = inject(Router)\r\n private elementRef = inject(ElementRef<HTMLElement>)\r\n\r\n constructor() {\r\n super()\r\n\r\n this.isLink = this.elementRef.nativeElement.tagName.toLowerCase() === \"a\"\r\n\r\n this.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"click\").subscribe(e => {\r\n if(this.isLink)\r\n e.preventDefault()\r\n \r\n if(this.storeService.isPressingCtrl())\r\n this.openBlank()\r\n else\r\n this.router.navigateByUrl(this.url)\r\n }))\r\n\r\n this.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"mousedown\").pipe(\r\n filter(e => e.button === 1)\r\n ).subscribe(e => {\r\n if(this.isLink)\r\n e.stopPropagation()\r\n else\r\n this.openBlank()\r\n }))\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges<this>){\r\n if((this.isLink || (changes.url && changes.url.currentValue !== this.url)) && !!this.url)\r\n this.elementRef.nativeElement.setAttribute(\"href\", this.url)\r\n }\r\n\r\n private openBlank = () => {\r\n const url = this.elementRef.nativeElement.getAttribute(\"href\") || (this.publicUrl + this.url)\r\n window.open(url, \"_blank\")\r\n }\r\n}","import { Directive, ElementRef, inject, Input, TemplateRef } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { TooltipDirection } from \"../interfaces\"\r\nimport { PopoverService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoPopover]\",\r\n standalone: false\r\n})\r\nexport class PopoverDirective extends Subscriptable{\r\n @Input({ required: true, alias: \"dolfoPopover\" }) content: string | TemplateRef<any>\r\n @Input({ alias: \"dolfoPopoverContext\" }) context: any\r\n @Input() direction: TooltipDirection = \"top\"\r\n private el = inject(ElementRef<HTMLElement>)\r\n private ps = inject(PopoverService)\r\n\r\n ngOnInit(){\r\n this.addSubscription(fromEvent(this.el.nativeElement, \"mousedown\").pipe(\r\n filter(() => !!this.ps.getPopover())\r\n ).subscribe(() => this.ps.hide()))\r\n\r\n this.addSubscription(\r\n fromEvent(this.el.nativeElement, \"click\").pipe(\r\n filter(() => !!this.content)\r\n ).subscribe(() => this.ps.showPopover({\r\n content: this.content,\r\n elementRef: this.el,\r\n direction: this.direction,\r\n context: this.context\r\n }))\r\n )\r\n }\r\n}\r\n","import { Directive, ElementRef, inject } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\n\r\n@Directive({\r\n\tselector: \"[dolfoScrollDrag]\",\r\n standalone: false\r\n})\r\nexport class ScrollDragDirective extends Subscriptable {\r\n\tprivate mouseDownX: number\r\n\tprivate initialScrollX = 0\r\n\tprivate diffX = 0\r\n\tprivate mouseDownY: number\r\n\tprivate initialScrollY = 0\r\n\tprivate diffY = 0\r\n private elementRef = inject(ElementRef<HTMLElement>)\r\n\r\n\tconstructor() {\r\n\t\tsuper()\r\n\r\n\t\tthis.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"mousedown\").pipe(\r\n filter(e => e.button === 0)\r\n ).subscribe(e => {\r\n\t\t\te.preventDefault()\r\n\t\t\te.stopPropagation()\r\n\t\t\tthis.mouseDownX = e.clientX\r\n\t\t\tthis.mouseDownY = e.clientY\r\n\t\t\tthis.initialScrollX = this.elementRef.nativeElement.scrollLeft\r\n\t\t\tthis.initialScrollY = this.elementRef.nativeElement.scrollTop\r\n\t\t\tthis.elementRef.nativeElement.classList.add(\"dragging\")\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent(document, \"mouseup\", { capture: true }).subscribe(() => {\r\n\t\t\tthis.mouseDownX = null\r\n\t\t\tthis.mouseDownY = null\r\n\t\t\tthis.elementRef.nativeElement.classList.remove(\"dragging\")\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent<Event>(this.elementRef.nativeElement, \"click\", { capture: true }).pipe(\r\n\t\t\tfilter(() => this.diffX != 0 || this.diffY != 0)\r\n\t\t).subscribe(e => {\r\n\t\t\te.stopPropagation()\r\n\t\t\tthis.diffX = 0\r\n\t\t\tthis.diffY = 0\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent<MouseEvent>(document, \"mousemove\").pipe(\r\n\t\t\tfilter(() => this.mouseDownX != null || this.mouseDownY != null)\r\n\t\t).subscribe(e => {\r\n\t\t\te.stopPropagation()\r\n\r\n\t\t\tif (this.mouseDownX != null) {\r\n\t\t\t\tthis.diffX = this.initialScrollX + (this.mouseDownX - e.clientX)\r\n\t\t\t\tthis.elementRef.nativeElement.scrollLeft = this.diffX\r\n\t\t\t}\r\n\t\t\tif (this.mouseDownY != null) {\r\n\t\t\t\tthis.diffY = this.initialScrollY + (this.mouseDownY - e.clientY)\r\n\t\t\t\tthis.elementRef.nativeElement.scrollTop = this.diffY\r\n\t\t\t}\r\n\t\t}))\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\"\r\nimport { ContextMenuDirective } from \"./context-menu.directive\"\r\nimport { NavigateDirective } from \"./navigate.directive\"\r\nimport { PopoverDirective } from \"./popover.directive\"\r\nimport { ScrollDragDirective } from \"./scroll-drag.directive\"\r\nimport { TooltipDirective } from \"./tooltip.directive\"\r\n\r\n@NgModule({\r\n declarations: [ContextMenuDirective, ScrollDragDirective, TooltipDirective, PopoverDirective, NavigateDirective],\r\n exports: [ContextMenuDirective, ScrollDragDirective, TooltipDirective, PopoverDirective, NavigateDirective]\r\n})\r\nexport class DirectivesModule{}","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-loader\",\r\n\tstandalone: false,\r\n\ttemplate: `<div class=\"loading\">\r\n\t\t<dolfo-icon name=\"spinner5\"></dolfo-icon>\r\n\t\t{{ langKey | translate }}\r\n\t</div>`,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LoaderComponent {\r\n\t@Input() langKey = \"loading\"\r\n}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { DirectivesModule } from \"../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\"\r\nimport { ButtonComponent } from \"./button.component\"\r\nimport { ContextMenuComponent } from \"./context-menu.component\"\r\nimport { IconWrapperComponent } from \"./icon-wrapper.component\"\r\nimport { IconComponent } from \"./icon.component\"\r\nimport { LoaderComponent } from \"./loader.component\"\r\nimport { NotificationComponent } from \"./notification.component\"\r\nimport { PopoverComponent } from \"./popover.component\"\r\nimport { TooltipComponent } from \"./tooltip.component\"\r\n\r\n@NgModule({\r\n declarations: [ButtonComponent, ContextMenuComponent, IconWrapperComponent, LoaderComponent, NotificationComponent, TooltipComponent, IconComponent, PopoverComponent],\r\n imports: [CommonModule, DirectivesModule, TranslatePipe],\r\n exports: [ButtonComponent, ContextMenuComponent, IconWrapperComponent, LoaderComponent, NotificationComponent, TooltipComponent, IconComponent, PopoverComponent]\r\n})\r\nexport class LayoutModule {}","import { ChangeDetectionStrategy, Component, forwardRef } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-checkbox\",\r\n template: `<div class=\"input-checkbox\">\r\n <input type=\"checkbox\" [name]=\"formControlName\" [formControl]=\"input\" [checked]=\"input.value\" />\r\n @if(label){\r\n <label (click)=\"toggleCheck()\">{{ label }}</label>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputCheckboxComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputCheckboxComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputCheckboxComponent }\r\n ]\r\n})\r\nexport class InputCheckboxComponent extends BaseFormInput<boolean> {\r\n public toggleCheck = () => this.input.setValue(!this.input.value)\r\n}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { ReactiveFormsModule } from \"@angular/forms\"\r\nimport { DirectivesModule } from \"../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\"\r\nimport { LayoutModule } from \"../layout/layout.module\"\r\nimport { AutocompleteComponent } from \"./autocomplete.component\"\r\nimport { ComboboxComponent } from \"./combobox.component\"\r\nimport { DatepickerComponent } from \"./datepicker.component\"\r\nimport { FileSelectComponent } from \"./file-select.component\"\r\nimport { FormComponent } from \"./form.component\"\r\nimport { InputCheckboxComponent } from \"./input-checkbox.component\"\r\nimport { InputContainerComponent } from \"./input-container.component\"\r\nimport { InputRadioComponent } from \"./input-radio.component\"\r\nimport { InputTextComponent } from \"./input-text.component\"\r\n\r\n@NgModule({\r\n declarations: [InputTextComponent, InputContainerComponent, ComboboxComponent, DatepickerComponent, AutocompleteComponent, InputRadioComponent, InputCheckboxComponent, FileSelectComponent, FormComponent],\r\n imports: [CommonModule, ReactiveFormsModule, TranslatePipe, DirectivesModule, LayoutModule],\r\n exports: [ReactiveFormsModule, InputTextComponent, InputContainerComponent, ComboboxComponent, DatepickerComponent, AutocompleteComponent, InputRadioComponent, InputCheckboxComponent, FileSelectComponent, FormComponent]\r\n})\r\nexport class FormModule {}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { ReactiveFormsModule } from \"@angular/forms\"\r\nimport { DirectivesModule } from \"../../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../../shared/pipes/translate.pipe\"\r\nimport { FormModule } from \"../../form/form.module\"\r\nimport { LayoutModule } from \"../layout.module\"\r\nimport { DialogContentComponent } from \"./dialog-content.component\"\r\nimport { DialogFooterComponent } from \"./dialog-footer.component\"\r\nimport { DialogHeaderComponent } from \"./dialog-header.component\"\r\nimport { DialogLayoutComponent } from \"./dialog-layout.component\"\r\nimport { DialogComponent } from \"./dialog.component\"\r\n\r\n@NgModule({\r\n declarations: [DialogComponent, DialogContentComponent, DialogHeaderComponent, DialogFooterComponent, DialogLayoutComponent],\r\n imports: [CommonModule, DirectivesModule, LayoutModule, ReactiveFormsModule, TranslatePipe, FormModule],\r\n exports: [DialogComponent, DialogContentComponent, DialogHeaderComponent, DialogFooterComponent, DialogLayoutComponent]\r\n})\r\nexport class DialogLayoutModule {}\r\n","import { Component, inject, Input } from \"@angular/core\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { BooleanFn, ColumnDataType, GridColumn, GridConfig } from \"../../../shared/interfaces\"\r\nimport { TranslateService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-grid\",\r\n templateUrl: \"./grid.component.html\",\r\n standalone: false\r\n})\r\nexport class GridComponent<T>{\r\n\t@Input({ required: true }) config: GridConfig<T>\r\n private translateService = inject(TranslateService)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n\tpublic resolveField = (item: T, { field, formatter, dataType, onLink }: GridColumn) => {\r\n let value = field\r\n .toString()\r\n .split(\".\")\r\n .reduce((prev, curr) => prev?.[curr as keyof T] as any, item) as string\r\n\r\n if(dataType === ColumnDataType.DATE)\r\n\t\t\tvalue = this.translateService.formatDate(value)\r\n else if(dataType === ColumnDataType.DATETIME)\r\n\t\t\tvalue = this.translateService.formatDateTime(value)\r\n\r\n let retValue = formatter ? formatter(value) : value\r\n\r\n\t\tif(dataType === ColumnDataType.LINK)\r\n\t\t\tretValue = `<a href=\"javascript:void(0)\">${retValue}</a>`\r\n \r\n return this.sanitizer.bypassSecurityTrustHtml(retValue)\r\n }\r\n\r\n\tpublic checkLink = (e: Event, col: GridColumn, item: T, cell: HTMLTableCellElement) => {\r\n\t\tif(col.dataType !== ColumnDataType.LINK || !col.onLink)\r\n\t\t\treturn\r\n\r\n\t\tconst colValue = col.field\r\n .toString()\r\n .split(\".\")\r\n .reduce((prev, curr) => prev?.[curr as keyof T] as any, item),\r\n\t\thtmlTarget = e.target as HTMLElement\r\n\r\n\t\tif(htmlTarget.tagName.toLowerCase() === \"a\")\r\n\t\t\tcol.onLink(colValue)\r\n\t\telse{\r\n\t\t\tconst a = cell.querySelector(\"a[href]\")\r\n\r\n\t\t\tif(a.contains(htmlTarget))\r\n\t\t\t\tcol.onLink(colValue)\r\n\t\t}\r\n\t}\r\n\r\n public isToolbarBtnDisabled = (disabled: boolean | BooleanFn) => {\r\n if(disabled == null)\r\n return false\r\n\r\n return typeof disabled === \"boolean\" ? disabled : disabled()\r\n }\r\n}\r\n","@let loading = config.isLoading$() | async;\r\n\r\n<div class=\"grid-container\" [class.loading]=\"loading\">\r\n @if(loading){\r\n <div class=\"grid-loading\">\r\n <dolfo-icon name=\"spinner2\"></dolfo-icon>\r\n </div>\r\n }\r\n\r\n <table>\r\n @let columns = config.getColumns();\r\n @let showActions = config.hasActions;\r\n @let selection = config.getSelectionConfig();\r\n @let colSpan = columns.length + (showActions ? 1 : 0) + (selection ? 1 : 0);\r\n \r\n <thead>\r\n @if(config.hasToolbar){\r\n <tr class=\"dolfo-grid-toolbar\">\r\n <th [colSpan]=\"colSpan\">\r\n @for(btn of config.getToolbarButtons(); track btn.label){\r\n <dolfo-button color=\"white\" (onClick)=\"btn.onClick()\" [disabled]=\"isToolbarBtnDisabled(btn.disabled)\">\r\n @if(btn.icon){\r\n <dolfo-icon [name]=\"btn.icon\"></dolfo-icon>\r\n }\r\n\r\n {{ btn.label }}\r\n </dolfo-button>\r\n }\r\n </th>\r\n </tr>\r\n }\r\n\r\n <tr>\r\n @if(selection){\r\n <th [style]=\"{ width: 0 }\">\r\n @if(selection.showSelectAll && selection.type === \"multiple\"){\r\n <input type=\"checkbox\" [checked]=\"config.isAllSelected()\" (change)=\"config.toggleSelectAll()\" />\r\n }\r\n </th>\r\n }\r\n\r\n @for(col of columns; track col.label){\r\n <th [ngStyle]=\"{ width: col.width + 'px', maxWidth: col.width + 'px' }\">{{ col.label | translate }}</th>\r\n }\r\n \r\n @if(showActions){\r\n <th>{{ \"grid.actions\" | translate }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n \r\n <tbody>\r\n @let list = config.getList$() | async;\r\n \r\n @if(list.length > 0){\r\n @for(item of list; track config.getUniqueId(item)){\r\n @let itemActions = config.getActions$(item) | async;\r\n @let rowClass = config.getRowClass(item);\r\n \r\n <tr (click)=\"config.getEvents()?.onRowClick?.(item)\" [dolfoContextMenu]=\"itemActions\" position=\"bottom-right\">\r\n @if(selection){\r\n <td [ngClass]=\"rowClass\" class=\"align-center\">\r\n <input type=\"checkbox\" [checked]=\"config.isItemSelected(item)\" (change)=\"config.toggleSelection(item)\" />\r\n </td>\r\n }\r\n\r\n @for(col of columns; track col.label){\r\n <td #cell [ngStyle]=\"{ width: col.width + 'px' }\" [ngClass]=\"rowClass\" [class.align-right]=\"col.align === 'right'\" [class.align-center]=\"col.align === 'center'\" (click)=\"checkLink($event, col, item, cell)\" [innerHTML]=\"resolveField(item, col)\"></td>\r\n }\r\n \r\n @if(showActions){\r\n <td class=\"align-center actions\" [ngClass]=\"rowClass\">\r\n @if(itemActions.length > 0){\r\n <dolfo-button color=\"secondary\" [dolfoTooltip]=\"'grid.showActions' | translate\" [dolfoContextMenu]=\"itemActions\" position=\"bottom-right\" openOnClick>\r\n <dolfo-icon name=\"flickr\"></dolfo-icon>\r\n </dolfo-button>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n }@else {\r\n <tr>\r\n <td [colSpan]=\"colSpan\" class=\"align-center\">{{ \"grid.noResults\" | translate }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</div>","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { DirectivesModule } from \"../../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../../shared/pipes/translate.pipe\"\r\nimport { LayoutModule } from \"../layout.module\"\r\nimport { GridComponent } from \"./grid.component\"\r\n\r\n@NgModule({\r\n declarations: [GridComponent],\r\n imports: [CommonModule, DirectivesModule, LayoutModule, TranslatePipe],\r\n exports: [GridComponent]\r\n})\r\nexport class GridModule{}","import { HttpHandlerFn, HttpRequest } from \"@angular/common/http\"\r\nimport { inject } from \"@angular/core\"\r\nimport { StorageValues } from \"../interfaces\"\r\nimport { TranslateService } from \"../services\"\r\n\r\nexport const authInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n const translateService = inject(TranslateService),\r\n clone = req.clone({\r\n headers: req.headers.set(\"Client-lang\", translateService.getLang().name)\r\n })\r\n\r\n if (!!localStorage.getItem(StorageValues.TOKEN)) {\r\n return next(clone.clone({\r\n headers: clone.headers.set(\"Authorization\", \"Bearer \" + localStorage.getItem(StorageValues.TOKEN))\r\n }))\r\n }\r\n\r\n return next(clone)\r\n}\r\n","import { HttpErrorResponse, HttpHandlerFn, HttpRequest } from \"@angular/common/http\"\r\nimport { inject } from \"@angular/core\"\r\nimport { catchError, throwError } from \"rxjs\"\r\nimport { StorageValues } from \"../interfaces\"\r\nimport { NotificationService, TranslateService } from \"../services\"\r\n\r\nexport const errorInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n const notificationService = inject(NotificationService),\r\n translateService = inject(TranslateService)\r\n\r\n return next(req).pipe(\r\n catchError(err => {\r\n if(err instanceof HttpErrorResponse){\r\n if(err.status === 401)\r\n localStorage.removeItem(StorageValues.TOKEN)\r\n \r\n notificationService.show({\r\n type: \"error\",\r\n title: translateService.translate(\"dialog.errorApi\"),\r\n message: typeof err.error === \"string\" ? err.error : err.message\r\n })\r\n }\r\n\r\n return throwError(() => err)\r\n })\r\n )\r\n}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dolfo-angular.mjs","names":[],"sources":["../../projects/dolfo-angular/src/lib/shared/classes/subscriptable.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/dialog.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/grid.ts","../../projects/dolfo-angular/src/lib/components/layout/icon.component.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/icon.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/router.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/store.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/translate.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/utils.ts","../../projects/dolfo-angular/src/lib/shared/services/context-menu.service.ts","../../projects/dolfo-angular/src/lib/shared/services/translate.service.ts","../../projects/dolfo-angular/src/lib/shared/services/dialog.service.ts","../../projects/dolfo-angular/src/lib/shared/services/dialog-utils.service.ts","../../projects/dolfo-angular/src/lib/shared/services/notification.service.ts","../../projects/dolfo-angular/src/lib/shared/services/popover.service.ts","../../projects/dolfo-angular/src/lib/shared/services/route-check.service.ts","../../projects/dolfo-angular/src/lib/shared/services/store.service.ts","../../projects/dolfo-angular/src/lib/shared/services/tooltip.service.ts","../../projects/dolfo-angular/src/lib/shared/directives/tooltip.directive.ts","../../projects/dolfo-angular/src/lib/shared/pipes/translate.pipe.ts","../../projects/dolfo-angular/src/lib/components/form/input-container.component.ts","../../projects/dolfo-angular/src/lib/components/form/base-form-input.ts","../../projects/dolfo-angular/src/lib/components/form/autocomplete.component.ts","../../projects/dolfo-angular/src/lib/components/layout/icon-wrapper.component.ts","../../projects/dolfo-angular/src/lib/components/form/combobox.component.ts","../../projects/dolfo-angular/src/lib/components/form/datepicker.component.ts","../../projects/dolfo-angular/src/lib/components/form/file-select.component.ts","../../projects/dolfo-angular/src/lib/components/form/form.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/base-app.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/formable.ts","../../projects/dolfo-angular/src/lib/components/layout/context-menu.component.ts","../../projects/dolfo-angular/src/lib/components/form/input-text.component.ts","../../projects/dolfo-angular/src/lib/components/form/input-radio.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-content.component.ts","../../projects/dolfo-angular/src/lib/components/layout/button.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-header.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-footer.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.component.html","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog.component.ts","../../projects/dolfo-angular/src/lib/components/layout/notification.component.ts","../../projects/dolfo-angular/src/lib/components/layout/popover.component.ts","../../projects/dolfo-angular/src/lib/components/layout/tooltip.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/overlay-manager.ts","../../projects/dolfo-angular/src/lib/shared/classes/route-config.ts","../../projects/dolfo-angular/src/lib/shared/classes/router-reload-strategy.ts","../../projects/dolfo-angular/src/lib/shared/directives/context-menu.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/navigate.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/popover.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/scroll-drag.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/directives.module.ts","../../projects/dolfo-angular/src/lib/components/layout/loader.component.ts","../../projects/dolfo-angular/src/lib/components/layout/layout.module.ts","../../projects/dolfo-angular/src/lib/components/form/input-checkbox.component.ts","../../projects/dolfo-angular/src/lib/components/form/form.module.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.module.ts","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.component.ts","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.component.html","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.module.ts","../../projects/dolfo-angular/src/lib/shared/interceptors/auth.interceptor.ts","../../projects/dolfo-angular/src/lib/shared/interceptors/error.interceptor.ts"],"sourcesContent":["import { Directive, OnDestroy } from \"@angular/core\"\r\nimport { Subscription } from \"rxjs\"\r\n\r\n@Directive()\r\nexport abstract class Subscriptable implements OnDestroy{\r\n private subs: Subscription[] = []\r\n\r\n protected addSubscription = (sub: Subscription) => this.subs.push(sub)\r\n\r\n ngOnDestroy(){\r\n this.subs.forEach(s => s.unsubscribe())\r\n }\r\n}\r\n","import { FormControl } from \"@angular/forms\"\r\nimport { ButtonColor } from \"./button\"\r\nimport { AutocompleteConfig, ComboOption } from \"./combobox\"\r\nimport { InputType } from \"./form\"\r\nimport { IconName } from \"./icon\"\r\n\r\nexport enum DialogActionType{ OK, NO, CANCEL }\r\n\r\nexport type DialogOutput = {\r\n type: DialogActionType\r\n data: Record<string, any>\r\n}\r\n\r\nexport type DialogForm = {\r\n control: FormControl\r\n type: InputType | \"date\" | \"radio\" | \"autocomplete\" | \"combobox\"\r\n name: string\r\n label?: string\r\n // Used only if type = \"autocomplete\"\r\n autocompleteCfg?: AutocompleteConfig<any>\r\n // Used only if type = \"radio\" or \"combobox\"\r\n options?: ComboOption[]\r\n}[]\r\n\r\nexport type DialogType = \"info\" | \"confirm\" | \"loading\" | \"error\"\r\n\r\nexport type IDialogInput = {\r\n title?: string\r\n message: string\r\n type?: DialogType\r\n width?: number\r\n className?: string\r\n hideCloseX?: boolean\r\n form?: DialogForm\r\n component?: DialogComponentInput,\r\n buttons?: DialogFooterButton[]\r\n}\r\n\r\nexport interface DialogComponentInput{\r\n readonly type: new() => IDialogInput\r\n readonly input?: any\r\n}\r\n\r\nexport type DialogIcon = {\r\n icon: string\r\n color: ButtonColor\r\n}\r\n\r\nexport type DialogFooterButton = {\r\n label: string\r\n color: ButtonColor\r\n icon?: IconName\r\n disabled?: boolean\r\n loading?: boolean\r\n onClick: () => void\r\n}","import { BehaviorSubject, map, Observable, Subscription } from \"rxjs\"\r\nimport { ButtonColor } from \"./button\"\r\nimport { ContextMenuItem } from \"./context-menu\"\r\n\r\nexport enum ColumnAlign{\r\n LEFT = \"left\",\r\n RIGHT = \"right\",\r\n CENTER = \"center\"\r\n}\r\n\r\nexport enum ColumnDataType{ TEXT, DATE, DATETIME, LINK }\r\n\r\nexport interface GridAction{\r\n readonly icon: string\r\n readonly title?: string\r\n readonly disabled?: boolean\r\n readonly color?: ButtonColor\r\n readonly onClick: () => void\r\n}\r\n\r\nexport type BooleanFn = () => boolean\r\n\r\nexport interface GridToolbarButton{\r\n readonly label: string\r\n readonly disabled?: boolean | BooleanFn\r\n readonly icon?: string\r\n readonly onClick: () => void\r\n}\r\n\r\nexport interface GridColumn{\r\n readonly label: string\r\n readonly field: string\r\n readonly dataType: ColumnDataType\r\n readonly width?: number\r\n readonly align?: ColumnAlign\r\n readonly formatter?: (value: any) => string\r\n readonly onLink?: (value: any) => void\r\n}\r\n\r\nexport interface IGridConfig<T>{\r\n readonly items: T[] | Observable<T[]>\r\n readonly columns: GridColumn[]\r\n readonly selection?: {\r\n readonly type?: \"single\" | \"multiple\"\r\n readonly showSelectAll?: boolean\r\n readonly defaultSelected?: (item: T) => boolean\r\n }\r\n readonly toolbar?: {\r\n readonly buttons?: GridToolbarButton[]\r\n }\r\n readonly events?: {\r\n onRowClick?: (item: T) => void\r\n onSelectionChange?: (item: T[]) => void\r\n }\r\n readonly getItemKey: (item: T) => string | number\r\n readonly actions?: (item: T) => ContextMenuItem[]\r\n readonly rowClass?: (item: T) => string\r\n}\r\n\r\nexport class GridConfig<T>{\r\n private items$ = new BehaviorSubject<T[]>([])\r\n private loading$ = new BehaviorSubject(false)\r\n private selectedItems: T[]\r\n private actions$ = new BehaviorSubject<IGridConfig<T>[\"actions\"]>(null)\r\n private toolbar: IGridConfig<T>[\"toolbar\"]\r\n private prevSub: Subscription\r\n\r\n constructor(private config: IGridConfig<T>){\r\n this.refreshGrid()\r\n this.actions$.next(config.actions)\r\n\r\n if(config.toolbar)\r\n this.toolbar = config.toolbar\r\n }\r\n\r\n public refreshGrid = () => {\r\n this.selectedItems = []\r\n\r\n this.prevSub?.unsubscribe()\r\n\r\n if(Array.isArray(this.config.items))\r\n this.items$.next(this.config.items)\r\n else{\r\n this.setLoading(true)\r\n\r\n this.prevSub = this.config.items.subscribe(it => {\r\n this.setLoading(false)\r\n this.items$.next(it)\r\n \r\n if(this.getSelectionConfig()?.defaultSelected)\r\n this.selectedItems = it.filter(i => this.getSelectionConfig().defaultSelected(i))\r\n })\r\n }\r\n }\r\n\r\n public getRowClass = (item: T) => this.config.rowClass?.(item)\r\n\r\n public updateList = (newList: T[]) => this.items$.next(newList)\r\n\r\n public getList = () => this.items$.getValue()\r\n\r\n public getList$ = () => this.items$.asObservable()\r\n\r\n public getActions$ = (item: T) => this.actions$.asObservable().pipe(\r\n map(actions => actions?.(item))\r\n )\r\n\r\n public setActions = (actions: IGridConfig<T>[\"actions\"]) => this.actions$.next(actions)\r\n\r\n public getColumns = () => this.config.columns\r\n\r\n public getEvents = () => this.config.events\r\n\r\n public getUniqueId = (item: T) => this.config.getItemKey(item)\r\n\r\n public isLoading$ = () => this.loading$.asObservable()\r\n \r\n public isLoading = () => this.loading$.getValue()\r\n\r\n public setLoading = (v: boolean) => this.loading$.next(v)\r\n\r\n public getSelectedItems = () => this.items$.getValue().filter(it => this.selectedItems.some(d => this.getUniqueId(d) === this.getUniqueId(it)))\r\n\r\n public toggleSelection = (item: T) => {\r\n if(this.isItemSelected(item))\r\n this.selectedItems = this.selectedItems.filter(it => this.getUniqueId(it) !== this.getUniqueId(item))\r\n else if(this.config.selection?.type === \"single\")\r\n this.selectedItems = [item]\r\n else\r\n this.selectedItems.push(item)\r\n\r\n this.emitSelectionChange()\r\n }\r\n\r\n public isItemSelected = (item: T) => this.selectedItems.some(d => this.getUniqueId(d) === this.getUniqueId(item))\r\n\r\n public toggleSelectAll = () => {\r\n if(this.isAllSelected())\r\n this.selectedItems = []\r\n else\r\n this.selectedItems = this.items$.getValue()\r\n\r\n this.emitSelectionChange()\r\n }\r\n\r\n public getSelectionConfig = () => this.config.selection\r\n\r\n private emitSelectionChange = () => this.config.events?.onSelectionChange?.(this.getSelectedItems())\r\n\r\n public isAllSelected = () => this.selectedItems.length === this.items$.getValue().length\r\n\r\n public get hasActions(){\r\n return !!this.actions$.getValue()\r\n }\r\n\r\n public get hasToolbar(){\r\n return !!this.toolbar\r\n }\r\n\r\n public getToolbarButtons(){\r\n return this.toolbar.buttons\r\n }\r\n\r\n public setToolbar = (toolbar: IGridConfig<T>[\"toolbar\"]) => this.toolbar = toolbar\r\n}","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\nimport { IconName } from \"../../shared/interfaces\"\r\n\r\n@Component({\r\n selector: \"dolfo-icon-x\",\r\n standalone: false,\r\n template: `<i [class]=\"'icon-' + name\"></i>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconComponent {\r\n @Input({ required: true }) name: IconName | string\r\n}\r\n","import { InjectionToken, Type } from \"@angular/core\"\r\nimport { IconComponent } from \"../../../components/layout/icon.component\"\r\n\r\nexport const ICON_COMPONENT = new InjectionToken<Type<any>>(\"ICON_COMPONENT\", {\r\n providedIn: \"root\",\r\n factory: () => IconComponent\r\n})\r\n\r\nexport type IconName = \"home\" | \"home2\" | \"home3\" | \"office\" | \"newspaper\" | \"pencil\" | \"pencil2\" | \"quill\" | \"pen\" | \"blog\" | \"eyedropper\" | \"droplet\" | \"paint-format\" | \"image\" | \"images\" | \"camera\" | \"headphones\" | \"music\" | \"play\" | \"film\" | \"video-camera\" | \"dice\" | \"pacman\" | \"spades\" | \"clubs\" | \"diamonds\" | \"bullhorn\" | \"connection\" | \"podcast\" | \"feed\" | \"mic\" | \"book\" | \"books\" | \"library\" | \"file-text\" | \"profile\" | \"file-empty\" | \"files-empty\" | \"file-text2\" | \"file-picture\" | \"file-music\" | \"file-play\" | \"file-video\" | \"file-zip\" | \"copy\" | \"paste\" | \"stack\" | \"folder\" | \"folder-open\" | \"folder-plus\" | \"folder-minus\" | \"folder-download\" | \"folder-upload\" | \"price-tag\" | \"price-tags\" | \"barcode\" | \"qrcode\" | \"ticket\" | \"cart\" | \"coin-dollar\" | \"coin-euro\" | \"coin-pound\" | \"coin-yen\" | \"credit-card\" | \"calculator\" | \"lifebuoy\" | \"phone\" | \"phone-hang-up\" | \"address-book\" | \"envelop\" | \"pushpin\" | \"location\" | \"location2\" | \"compass\" | \"compass2\" | \"map\" | \"map2\" | \"history\" | \"clock\" | \"clock2\" | \"alarm\" | \"bell\" | \"stopwatch\" | \"calendar\" | \"printer\" | \"keyboard\" | \"display\" | \"laptop\" | \"mobile\" | \"mobile2\" | \"tablet\" | \"tv\" | \"drawer\" | \"drawer2\" | \"box-add\" | \"box-remove\" | \"download\" | \"upload\" | \"floppy-disk\" | \"drive\" | \"database\" | \"undo\" | \"redo\" | \"undo2\" | \"redo2\" | \"forward\" | \"reply\" | \"bubble\" | \"bubbles\" | \"bubbles2\" | \"bubble2\" | \"bubbles3\" | \"bubbles4\" | \"user\" | \"users\" | \"user-plus\" | \"user-minus\" | \"user-check\" | \"user-tie\" | \"quotes-left\" | \"quotes-right\" | \"hour-glass\" | \"spinner\" | \"spinner2\" | \"spinner3\" | \"spinner4\" | \"spinner5\" | \"spinner6\" | \"spinner7\" | \"spinner8\" | \"spinner9\" | \"spinner10\" | \"spinner11\" | \"binoculars\" | \"search\" | \"zoom-in\" | \"zoom-out\" | \"enlarge\" | \"shrink\" | \"enlarge2\" | \"shrink2\" | \"key\" | \"key2\" | \"lock\" | \"unlocked\" | \"wrench\" | \"equalizer\" | \"equalizer2\" | \"cog\" | \"cogs\" | \"hammer\" | \"magic-wand\" | \"aid-kit\" | \"bug\" | \"pie-chart\" | \"stats-dots\" | \"stats-bars\" | \"stats-bars2\" | \"trophy\" | \"gift\" | \"glass\" | \"glass2\" | \"mug\" | \"spoon-knife\" | \"leaf\" | \"rocket\" | \"meter\" | \"meter2\" | \"hammer2\" | \"fire\" | \"lab\" | \"magnet\" | \"bin\" | \"bin2\" | \"briefcase\" | \"airplane\" | \"truck\" | \"road\" | \"accessibility\" | \"target\" | \"shield\" | \"power\" | \"switch\" | \"power-cord\" | \"clipboard\" | \"list-numbered\" | \"list\" | \"list2\" | \"tree\" | \"menu\" | \"menu2\" | \"menu3\" | \"menu4\" | \"cloud\" | \"cloud-download\" | \"cloud-upload\" | \"cloud-check\" | \"download2\" | \"upload2\" | \"download3\" | \"upload3\" | \"sphere\" | \"earth\" | \"link\" | \"flag\" | \"attachment\" | \"eye\" | \"eye-plus\" | \"eye-minus\" | \"eye-blocked\" | \"bookmark\" | \"bookmarks\" | \"sun\" | \"contrast\" | \"brightness-contrast\" | \"star-empty\" | \"star-half\" | \"star-full\" | \"heart\" | \"heart-broken\" | \"man\" | \"woman\" | \"man-woman\" | \"happy\" | \"happy2\" | \"smile\" | \"smile2\" | \"tongue\" | \"tongue2\" | \"sad\" | \"sad2\" | \"wink\" | \"wink2\" | \"grin\" | \"grin2\" | \"cool\" | \"cool2\" | \"angry\" | \"angry2\" | \"evil\" | \"evil2\" | \"shocked\" | \"shocked2\" | \"baffled\" | \"baffled2\" | \"confused\" | \"confused2\" | \"neutral\" | \"neutral2\" | \"hipster\" | \"hipster2\" | \"wondering\" | \"wondering2\" | \"sleepy\" | \"sleepy2\" | \"frustrated\" | \"frustrated2\" | \"crying\" | \"crying2\" | \"point-up\" | \"point-right\" | \"point-down\" | \"point-left\" | \"warning\" | \"notification\" | \"question\" | \"plus\" | \"minus\" | \"info\" | \"cancel-circle\" | \"blocked\" | \"cross\" | \"checkmark\" | \"checkmark2\" | \"spell-check\" | \"enter\" | \"exit\" | \"play2\" | \"pause\" | \"stop\" | \"previous\" | \"next\" | \"backward\" | \"forward2\" | \"play3\" | \"pause2\" | \"stop2\" | \"backward2\" | \"forward3\" | \"first\" | \"last\" | \"previous2\" | \"next2\" | \"eject\" | \"volume-high\" | \"volume-medium\" | \"volume-low\" | \"volume-mute\" | \"volume-mute2\" | \"volume-increase\" | \"volume-decrease\" | \"loop\" | \"loop2\" | \"infinite\" | \"shuffle\" | \"arrow-up-left\" | \"arrow-up\" | \"arrow-up-right\" | \"arrow-right\" | \"arrow-down-right\" | \"arrow-down\" | \"arrow-down-left\" | \"arrow-left\" | \"arrow-up-left2\" | \"arrow-up2\" | \"arrow-up-right2\" | \"arrow-right2\" | \"arrow-down-right2\" | \"arrow-down2\" | \"arrow-down-left2\" | \"arrow-left2\" | \"circle-up\" | \"circle-right\" | \"circle-down\" | \"circle-left\" | \"tab\" | \"move-up\" | \"move-down\" | \"sort-alpha-asc\" | \"sort-alpha-desc\" | \"sort-numeric-asc\" | \"sort-numberic-desc\" | \"sort-amount-asc\" | \"sort-amount-desc\" | \"command\" | \"shift\" | \"ctrl\" | \"opt\" | \"checkbox-checked\" | \"checkbox-unchecked\" | \"radio-checked\" | \"radio-checked2\" | \"radio-unchecked\" | \"crop\" | \"make-group\" | \"ungroup\" | \"scissors\" | \"filter\" | \"font\" | \"ligature\" | \"ligature2\" | \"text-height\" | \"text-width\" | \"font-size\" | \"bold\" | \"underline\" | \"italic\" | \"strikethrough\" | \"omega\" | \"sigma\" | \"page-break\" | \"superscript\" | \"subscript\" | \"superscript2\" | \"subscript2\" | \"text-color\" | \"pagebreak\" | \"clear-formatting\" | \"table\" | \"table2\" | \"insert-template\" | \"pilcrow\" | \"ltr\" | \"rtl\" | \"section\" | \"paragraph-left\" | \"paragraph-center\" | \"paragraph-right\" | \"paragraph-justify\" | \"indent-increase\" | \"indent-decrease\" | \"share\" | \"new-tab\" | \"embed\" | \"embed2\" | \"terminal\" | \"share2\" | \"mail\" | \"mail2\" | \"mail3\" | \"mail4\" | \"amazon\" | \"google\" | \"google2\" | \"google3\" | \"google-plus\" | \"google-plus2\" | \"google-plus3\" | \"hangouts\" | \"google-drive\" | \"facebook\" | \"facebook2\" | \"instagram\" | \"whatsapp\" | \"spotify\" | \"telegram\" | \"twitter\" | \"vine\" | \"vk\" | \"renren\" | \"sina-weibo\" | \"rss\" | \"rss2\" | \"youtube\" | \"youtube2\" | \"twitch\" | \"vimeo\" | \"vimeo2\" | \"lanyrd\" | \"flickr\" | \"flickr2\" | \"flickr3\" | \"flickr4\" | \"dribbble\" | \"behance\" | \"behance2\" | \"deviantart\" | \"500px\" | \"steam\" | \"steam2\" | \"dropbox\" | \"onedrive\" | \"github\" | \"npm\" | \"basecamp\" | \"trello\" | \"wordpress\" | \"joomla\" | \"ello\" | \"blogger\" | \"blogger2\" | \"tumblr\" | \"tumblr2\" | \"yahoo\" | \"yahoo2\" | \"tux\" | \"appleinc\" | \"finder\" | \"android\" | \"windows\" | \"windows8\" | \"soundcloud\" | \"soundcloud2\" | \"skype\" | \"reddit\" | \"hackernews\" | \"wikipedia\" | \"linkedin\" | \"linkedin2\" | \"lastfm\" | \"lastfm2\" | \"delicious\" | \"stumbleupon\" | \"stumbleupon2\" | \"stackoverflow\" | \"pinterest\" | \"pinterest2\" | \"xing\" | \"xing2\" | \"flattr\" | \"foursquare\" | \"yelp\" | \"paypal\" | \"chrome\" | \"firefox\" | \"IE\" | \"edge\" | \"safari\" | \"opera\" | \"file-pdf\" | \"file-openoffice\" | \"file-word\" | \"file-excel\" | \"libreoffice\" | \"html-five\" | \"html-five2\" | \"css3\" | \"git\" | \"codepen\" | \"svg\" | \"IcoMoon\"","import { InjectionToken } from \"@angular/core\"\r\nimport { Observable } from \"rxjs\"\r\n\r\nexport const ROUTE_CHECK_SERVICE = new InjectionToken<CheckRoute<unknown>>(\"ROUTE_CHECK_SERVICE\", {\r\n\tprovidedIn: \"root\",\r\n\tfactory: () => {\r\n\t\tthrow new Error(\"RouteCheckService not provided\")\r\n\t}\r\n})\r\n\r\nexport interface CheckRoute<T>{\r\n\tload$: () => Observable<T>\r\n\tcheckRoute: (path: string) => Promise<boolean> | Observable<boolean>\r\n}","export enum StorageValues {\r\n TOKEN = \"token\",\r\n LANG = \"lang\"\r\n}\r\n\r\nexport interface IStore {\r\n readonly pressingCtrl: boolean\r\n readonly lists: {\r\n [x: string]: Array<any>\r\n }\r\n readonly entities: {\r\n [x: string]: any\r\n }\r\n}\r\n\r\nexport const MAX_DEVICE_SIZE = 750\r\nexport const MAX_SMALL_DEVICE = 500","import { InjectionToken, ValueProvider } from \"@angular/core\"\r\n\r\nexport interface ILanguage{\r\n readonly name: string\r\n readonly locale: string\r\n readonly altFileName?: string\r\n}\r\n\r\nexport interface ILanguageToken{\r\n readonly defaultLanguage: string\r\n readonly langs: ILanguage[]\r\n}\r\n\r\nexport const TRANSLATE_STORAGE_KEY = \"dolfo-lang-stored\"\r\n\r\nexport const LANGUAGE_TOKEN = new InjectionToken<ILanguageToken>(\"LANGUAGE_TOKEN\")\r\n\r\nexport const provideDolfoLanguages = (langs: ILanguage[], defaultLanguage: string): ValueProvider => ({\r\n provide: LANGUAGE_TOKEN,\r\n useValue: { defaultLanguage, langs } as ILanguageToken\r\n})","import { AbstractControl, FormControl, ValidationErrors, ValidatorFn } from \"@angular/forms\"\r\n\r\nexport const isDeepEqual = (objA: any, objB: any, map = new WeakMap()) => {\r\n if (Object.is(objA, objB))\r\n return true\r\n\r\n if (objA instanceof Date && objB instanceof Date)\r\n return objA.getTime() === objB.getTime()\r\n \r\n if (objA instanceof RegExp && objB instanceof RegExp)\r\n return objA.toString() === objB.toString()\r\n\r\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null)\r\n return false\r\n\r\n if (map.get(objA) === objB)\r\n return true\r\n\r\n map.set(objA, objB)\r\n\r\n const keysA = Reflect.ownKeys(objA)\r\n const keysB = Reflect.ownKeys(objB)\r\n\r\n if (keysA.length !== keysB.length)\r\n return false\r\n\r\n for (let i = 0; i < keysA.length; i++){\r\n if (!Reflect.has(objB, keysA[i]) || !isDeepEqual(objA[keysA[i]], objB[keysA[i]], map))\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\n\r\nexport const passwordValidator = ((control: FormControl): ValidationErrors => {\r\n if(control.value?.match(/^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$/))\r\n return { password: true }\r\n\r\n return null\r\n}) as ValidatorFn\r\n\r\nexport const samePasswordValidator = (ctrName: string): ValidatorFn => ((control: AbstractControl): ValidationErrors => {\r\n const otherControl = control.parent?.get(ctrName)\r\n\r\n if(otherControl?.value !== control?.value)\r\n return { differentPasswords: true }\r\n\r\n return null\r\n}) as ValidatorFn","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { IContextMenu } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class ContextMenuService {\r\n private contextMenu$ = new BehaviorSubject<IContextMenu>(null)\r\n\r\n public getContextMenu$ = () => this.contextMenu$.asObservable()\r\n\r\n public openContextMenu = (input: IContextMenu) => this.contextMenu$.next(input)\r\n}\r\n","import { formatDate } from \"@angular/common\"\r\nimport { HttpClient } from \"@angular/common/http\"\r\nimport { inject, Service } from \"@angular/core\"\r\nimport { BehaviorSubject, distinctUntilChanged, tap } from \"rxjs\"\r\nimport { ILanguage, LANGUAGE_TOKEN, TRANSLATE_STORAGE_KEY } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class TranslateService {\r\n private lang$ = new BehaviorSubject<ILanguage>(null)\r\n private langContent: Record<string, string>\r\n private langs: ILanguage[]\r\n private httpClient = inject(HttpClient)\r\n private langConfig = inject(LANGUAGE_TOKEN)\r\n\r\n constructor() {\r\n if(!localStorage.getItem(TRANSLATE_STORAGE_KEY))\r\n localStorage.setItem(TRANSLATE_STORAGE_KEY, this.langConfig.defaultLanguage)\r\n \r\n const { langs } = this.langConfig,\r\n lang = localStorage.getItem(TRANSLATE_STORAGE_KEY) as string,\r\n foundLang = this.langConfig.langs.find(l => l.name === lang)\r\n\r\n this.langs = langs\r\n\r\n if(!foundLang)\r\n localStorage.removeItem(TRANSLATE_STORAGE_KEY)\r\n else\r\n this.lang$.next(foundLang)\r\n }\r\n\r\n public changeLanguage$ = (langName: string) => {\r\n const lang = this.langs.find(l => l.name === langName)\r\n\r\n if(lang)\r\n localStorage.setItem(TRANSLATE_STORAGE_KEY, langName)\r\n\r\n return this.load$(lang).pipe(\r\n tap(() => this.lang$.next(lang))\r\n )\r\n }\r\n\r\n public loadFromStorage$ = () => {\r\n const lang = localStorage.getItem(TRANSLATE_STORAGE_KEY)\r\n\r\n if(!lang)\r\n throw new Error(\"Language not set or not valid!!\")\r\n\r\n const foundLang = this.langs.find(l => l.name === lang)\r\n\r\n return this.load$(foundLang)\r\n }\r\n\r\n private load$ = ({ name, altFileName }: ILanguage) => this.httpClient.get<Record<string, string>>(`assets/langs/${altFileName || name}.json`).pipe(\r\n tap(content => this.langContent = content)\r\n )\r\n\r\n public translate = (key: string, params?: Record<string, string>): string => {\r\n const base = key.split(\".\").reduce((prev, curr) => prev?.[curr], this.langContent as any),\r\n ret = base || key\r\n\r\n if (params){\r\n return Object.keys(params).reduce(\r\n (curr, key) => curr.replace(`{${key}}`, params[key as keyof Object]),\r\n ret\r\n )\r\n }\r\n\r\n return ret\r\n }\r\n\r\n public getLang = () => this.lang$.getValue()\r\n\r\n public getLang$ = () => this.lang$.asObservable().pipe(distinctUntilChanged())\r\n\r\n private getLocale = () => this.getLang()?.locale || \"en-US\"\r\n\r\n public formatDate = (d: string) => formatDate(new Date(d), this.translate(\"dateFormat\"), this.getLocale())\r\n\r\n public formatDateTime = (d: string) => formatDate(new Date(d), this.translate(\"dateTimeFormat\"), this.getLocale())\r\n}\r\n","import { inject, Service } from \"@angular/core\"\r\nimport { BehaviorSubject, delay, filter } from \"rxjs\"\r\nimport { DialogComponentInput, DialogOutput, IDialogInput } from \"../interfaces\"\r\nimport { TranslateService } from \"./translate.service\"\r\n\r\n@Service()\r\nexport class DialogService{\r\n private dialog$ = new BehaviorSubject<(IDialogInput & { _dialogId: number })[]>([])\r\n private waiters: BehaviorSubject<DialogOutput>[] = []\r\n private ts = inject(TranslateService)\r\n\r\n private getLastWaiter = () => this.waiters[this.waiters.length - 1]\r\n\r\n public getDialog = () => this.dialog$.getValue()\r\n\r\n public getDialog$ = () => this.dialog$.asObservable()\r\n\r\n public openDialog = (input: IDialogInput) => {\r\n const newWaiter$ = new BehaviorSubject<DialogOutput>(null)\r\n this.waiters.push(newWaiter$)\r\n this.dialog$.next(this.dialog$.getValue().concat({\r\n ...input,\r\n _dialogId: new Date().getTime()\r\n }))\r\n\r\n return this.getLastWaiter().pipe(\r\n filter(d => d != null),\r\n delay(0)\r\n )\r\n }\r\n\r\n public openDialogComponent = (component: DialogComponentInput) => this.openDialog({\r\n message: null,\r\n component\r\n })\r\n\r\n public showLoading = (message?: string) => this.openDialog({\r\n type: \"loading\",\r\n message: message || this.ts.translate(\"loading\")\r\n })\r\n\r\n public close = () => {\r\n const v = this.dialog$.getValue()\r\n this.dialog$.next(v.slice(0, v.length - 1))\r\n this.getLastWaiter()?.complete()\r\n this.waiters = this.waiters.slice(0, this.waiters.length - 1)\r\n }\r\n\r\n public action = (action: DialogOutput) => this.getLastWaiter()?.next(action)\r\n}\r\n","import { inject, Service } from \"@angular/core\"\r\nimport { catchError, delay, filter, mergeMap, Observable, ObservableInput, of, tap, throwError } from \"rxjs\"\r\nimport { DialogActionType, DialogComponentInput, IDialogInput } from \"../interfaces\"\r\nimport { DialogService } from \"./dialog.service\"\r\nimport { TranslateService } from \"./translate.service\"\r\n\r\n@Service()\r\nexport class DialogUtilsService{\r\n private dialogService = inject(DialogService)\r\n private translateService = inject(TranslateService)\r\n\r\n public showLoading$ = <T, T2>(obs: (res: T2) => Observable<T>, message?: string) => mergeMap<T2, ObservableInput<T>>(res => of(res).pipe(\r\n delay(0),\r\n tap(() => this.dialogService.showLoading(message).subscribe()),\r\n mergeMap(res => obs(res)),\r\n catchError(err => {\r\n this.closeLatestDialog()\r\n return throwError(() => err)\r\n })\r\n ))\r\n\r\n public hideLoading = () => this.closeLatestDialog()\r\n\r\n public closeLatestDialog = () => this.dialogService.close()\r\n\r\n public closeWithAction = <T>(data: T) => {\r\n this.dialogService.action({ type: DialogActionType.OK, data })\r\n this.closeLatestDialog()\r\n }\r\n\r\n public openDialogComponent = (component: DialogComponentInput) => this.dialogService.openDialogComponent(component)\r\n\r\n public openDialog = (input: IDialogInput) => this.dialogService.openDialog(input)\r\n\r\n public askConfirmAndLoad = <T>(\r\n input: Pick<IDialogInput, \"title\" | \"message\" | \"hideCloseX\" | \"width\">,\r\n obs: (resp: DialogActionType) => Observable<T>,\r\n getDialogResp = false\r\n ) => this.dialogService.openDialog({\r\n title: this.translateService.translate(input.title),\r\n message: this.translateService.translate(input.message),\r\n type: \"confirm\",\r\n hideCloseX: input.hideCloseX,\r\n width: input.width\r\n }).pipe(\r\n filter(res => res.type === DialogActionType.OK || getDialogResp),\r\n this.showLoading$(res => obs(res.type)),\r\n tap(() => this.hideLoading())\r\n )\r\n}","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { INotificationInput } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class NotificationService {\r\n private notification$ = new BehaviorSubject<INotificationInput>(null)\r\n private history$ = new BehaviorSubject<Array<INotificationInput & { date: Date }>>([])\r\n\r\n public getNotification$ = () => this.notification$.asObservable()\r\n\r\n public show = (input: INotificationInput) => {\r\n this.notification$.next(input)\r\n this.history$.next(this.history$.getValue().concat({ ...input, date: new Date() }))\r\n }\r\n\r\n public hide = () => this.notification$.next(null)\r\n\r\n public getHistory$ = () => this.history$.asObservable()\r\n}\r\n","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { IPopover } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class PopoverService {\r\n private popover$ = new BehaviorSubject<IPopover>(null)\r\n\r\n public getPopover$ = () => this.popover$.asObservable()\r\n\r\n public getPopover = () => this.popover$.getValue()\r\n\r\n public showPopover = (input: IPopover) => this.popover$.next(input)\r\n\r\n public hide = () => this.popover$.next(null)\r\n}","import { inject, Service } from \"@angular/core\"\r\nimport { ActivatedRouteSnapshot, CanActivate } from \"@angular/router\"\r\nimport { catchError, mergeMap, of } from \"rxjs\"\r\nimport { ROUTE_CHECK_SERVICE } from \"../interfaces\"\r\nimport { StoreService } from \"./\"\r\n\r\n@Service()\r\nexport class RouteCheckService implements CanActivate{\r\n private storeService = inject(StoreService)\r\n private routeService = inject(ROUTE_CHECK_SERVICE)\r\n\r\n public canActivate({ routeConfig }: ActivatedRouteSnapshot) {\r\n if(!this.storeService.isInitialized())\r\n return false\r\n\r\n return this.routeService.load$().pipe(\r\n catchError(() => of(null)),\r\n mergeMap(() => this.routeService.checkRoute(routeConfig.path))\r\n )\r\n }\r\n}","import { Service, signal } from \"@angular/core\"\r\nimport { BehaviorSubject, filter, fromEvent, tap, zip } from \"rxjs\"\r\n// ! Importante che venga importato con percorso preciso\r\nimport { Subscriptable } from \"../classes/subscriptable\"\r\nimport { IStore } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class StoreService extends Subscriptable {\r\n private appInitialized = signal(false)\r\n\r\n constructor(){\r\n super()\r\n\r\n this.addSubscription(zip([\r\n fromEvent<KeyboardEvent>(window, \"keydown\").pipe(\r\n filter(e => !this.isPressingCtrl() && e.ctrlKey),\r\n tap(() => this.setCtrlKey(true))\r\n ),\r\n fromEvent<KeyboardEvent>(window, \"keyup\").pipe(\r\n filter(e => this.isPressingCtrl() && e.key === \"Control\"),\r\n tap(() => this.setCtrlKey(false))\r\n ),\r\n fromEvent<KeyboardEvent>(window, \"blur\").pipe(\r\n filter(() => this.isPressingCtrl()),\r\n tap(() => this.setCtrlKey(false))\r\n )\r\n ]).subscribe())\r\n }\r\n\r\n private store$ = new BehaviorSubject<IStore>({\r\n lists: {},\r\n entities: {},\r\n pressingCtrl: false\r\n })\r\n\r\n public addList = (key: string, list: Array<any>) => this.store$.next({\r\n ...this.store$.getValue(),\r\n lists: {\r\n ...this.store$.getValue().lists,\r\n [key]: list\r\n }\r\n })\r\n\r\n public getList = <T>(key: string) => this.store$.getValue().lists[key] as T\r\n\r\n public addEntity = (key: string, entity: any) => this.store$.next({\r\n ...this.store$.getValue(),\r\n entities: {\r\n ...this.store$.getValue().entities,\r\n [key]: entity\r\n }\r\n })\r\n\r\n public getEntity = <T>(key: string) => this.store$.getValue().entities[key] as T\r\n\r\n public setCtrlKey = (pressingCtrl: boolean) => this.store$.next({\r\n ...this.store$.getValue(),\r\n pressingCtrl\r\n })\r\n\r\n public isPressingCtrl = () => this.store$.getValue().pressingCtrl\r\n\r\n public isInitialized = () => this.appInitialized()\r\n\r\n public initialize = () => this.appInitialized.set(true)\r\n}\r\n","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { ITooltip } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class TooltipService {\r\n private tooltip$ = new BehaviorSubject<ITooltip>(null)\r\n\r\n public showTooltip = (input: ITooltip) => this.tooltip$.next(input)\r\n \r\n public getTooltip$ = () => this.tooltip$.asObservable()\r\n \r\n public getTooltip = () => this.tooltip$.getValue()\r\n\r\n public hide = () => this.tooltip$.next(null)\r\n}\r\n","import { Directive, ElementRef, inject, Input } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes/subscriptable\"\r\nimport { ITooltip, TooltipDirection } from \"../interfaces\"\r\nimport { TooltipService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoTooltip]\",\r\n standalone: false\r\n})\r\nexport class TooltipDirective extends Subscriptable implements Omit<ITooltip, \"elementRef\">{\r\n @Input({ required: true, alias: \"dolfoTooltip\" }) content: string\r\n @Input() direction: TooltipDirection = \"top\"\r\n private el = inject(ElementRef<HTMLElement>)\r\n private ts = inject(TooltipService)\r\n\r\n constructor() {\r\n super()\r\n\r\n this.addSubscription(fromEvent(this.el.nativeElement, \"mousedown\").pipe(\r\n filter(() => !!this.ts.getTooltip())\r\n ).subscribe(() => this.ts.hide()))\r\n\r\n this.addSubscription(\r\n fromEvent(this.el.nativeElement, \"mouseenter\").pipe(\r\n filter(() => !!this.content)\r\n ).subscribe(() => this.ts.showTooltip({\r\n content: this.content,\r\n elementRef: this.el,\r\n direction: this.direction\r\n }))\r\n )\r\n }\r\n}\r\n","import { inject, Pipe, PipeTransform } from \"@angular/core\"\r\nimport { TranslateService } from \"../services\"\r\n\r\n@Pipe({\r\n name: \"translate\",\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n private ts = inject(TranslateService)\r\n\r\n transform = (value: string, args?: Record<string, string>) => this.ts.translate(value, args)\r\n}\r\n","import { DecimalPipe } from \"@angular/common\"\r\nimport { Component, ElementRef, inject } from \"@angular/core\"\r\nimport { ValidationErrors } from \"@angular/forms\"\r\nimport { BehaviorSubject, distinctUntilChanged, map, Observable } from \"rxjs\"\r\nimport { isDeepEqual } from \"../../shared/interfaces\"\r\nimport { TranslateService } from \"../../shared/services\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-container\",\r\n template: `<div class=\"input-container\" [class.error]=\"decodedError$ | async\">\r\n @if(input.label){\r\n <label>\r\n {{ input.label }}\r\n @if(input.isRequired){\r\n <span [dolfoTooltip]=\"'form.required' | translate\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @let error = decodedError$ | async;\r\n\r\n @if(error){\r\n <div class=\"input-errors\">\r\n {{ error[0] | translate: error[1] }}\r\n </div>\r\n }\r\n </div>`,\r\n providers: [DecimalPipe],\r\n standalone: false\r\n})\r\nexport class InputContainerComponent{\r\n public errors$ = new BehaviorSubject<ValidationErrors>(null)\r\n public decodedError$: Observable<[string, Record<string, string>?]> = this.errors$.pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n map(val => {\r\n if(val){\r\n if(val.required)\r\n return [\"form.requiredError\"]\r\n if(val.email)\r\n return [\"form.invalidEmail\"]\r\n if(val.maxlength)\r\n return [`form.maxChars`, { length: val.maxlength.requiredLength }]\r\n if(val.minlength)\r\n return [`form.minChars`, { length: val.minlength.requiredLength }]\r\n if(val.password)\r\n return [\"form.invalidPassword\"]\r\n if(val.max)\r\n return [\"form.maxValue\", { value: this.cp.transform(val.max.max, null, this.translateService.getLang().name) }]\r\n\r\n return [\"form.error.\" + Object.keys(val)[0], val[Object.keys(val)[0]]]\r\n }\r\n \r\n return null\r\n })\r\n )\r\n public input = inject(BaseFormInput)\r\n private elRef = inject(ElementRef<HTMLElement>)\r\n private translateService = inject(TranslateService)\r\n private cp = inject(DecimalPipe)\r\n\r\n public focus = () => {\r\n const input = this.elRef.nativeElement.querySelector(\"input\")\r\n\r\n if(input)\r\n input.focus()\r\n }\r\n}\r\n","import { AfterViewInit, Directive, EventEmitter, inject, Input, OnInit, Output, ViewChild } from \"@angular/core\"\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, FormControl, ValidationErrors, Validator, Validators } from \"@angular/forms\"\r\nimport { filter } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes/subscriptable\"\r\nimport { isDeepEqual } from \"../../shared/interfaces\"\r\nimport { InputContainerComponent } from \"./input-container.component\"\r\n\r\n@Directive()\r\nexport abstract class BaseFormInput<T> extends Subscriptable implements ControlValueAccessor, Validator, AfterViewInit, OnInit {\r\n @ViewChild(InputContainerComponent) public container: InputContainerComponent\r\n @Input({ required: true }) formControlName: string\r\n @Input() label: string\r\n @Output() onChange: EventEmitter<T> = new EventEmitter<T>()\r\n\r\n protected changeInternal: (obj: T) => void\r\n private cc = inject(ControlContainer)\r\n \r\n public input = new FormControl<T>(null)\r\n \r\n protected control: AbstractControl\r\n\r\n ngOnInit(){\r\n this.control = this.cc.control.get(this.formControlName)\r\n\r\n const initialValue = this.control.value\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => !this.control.touched && !isDeepEqual(initialValue, v) && this.input.dirty)\r\n ).subscribe(() => this.control.markAsTouched()))\r\n\r\n this.addSubscription(this.control.statusChanges.pipe(\r\n filter(s => (s === \"VALID\" || s === \"INVALID\") && this.control.touched && !!this.container)\r\n ).subscribe(() => this.container.errors$.next(this.control.errors)))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(() => !this.input.disabled)\r\n ).subscribe(v => {\r\n this.onChange.emit(v)\r\n this.changeInternal(v)\r\n }))\r\n }\r\n\r\n writeValue(obj: T){\r\n this.input.setValue(obj)\r\n }\r\n\r\n registerOnChange = (fn: (obj: T) => void) => this.changeInternal = fn\r\n\r\n registerOnTouched = (_fn: (obj: any) => void) => {}\r\n\r\n setDisabledState = (isDisabled: boolean) => {\r\n if(isDisabled)\r\n setTimeout(() => this.input.disable())\r\n else\r\n this.input.enable()\r\n }\r\n\r\n validate = (_control: AbstractControl): ValidationErrors => null\r\n\r\n public get isRequired(){\r\n return this.control.hasValidator(Validators.required)\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, signal, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { delay, filter, fromEvent, map, mergeMap, tap } from \"rxjs\"\r\nimport { AutocompleteConfig, ComboOption } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-autocomplete\",\r\n template: `<dolfo-input-container>\r\n <div class=\"combobox autocomplete\" [class.opened]=\"opened()\" #autocomplete>\r\n <div class=\"combobox-label\">\r\n <input #autocompleteInput type=\"text\" [value]=\"currentOption()\" (focus)=\"focus($event)\" (blur)=\"onBlur.emit($event)\" />\r\n </div>\r\n\r\n <div class=\"combobox-options\" [class.opened]=\"opened()\">\r\n @if(loading()){\r\n <div class=\"loading\">\r\n {{ 'autocomplete.loading' | translate }}\r\n </div>\r\n }\r\n @if(options().length === 0 && !loading()){\r\n <div class=\"no-results\">\r\n {{ 'autocomplete.noResults' | translate }}\r\n </div>\r\n }\r\n\r\n @for(opt of options(); track opt.value; let idx = $index){\r\n <div class=\"combobox-option\" [class.selected]=\"isSelected(opt)\" [class.focused]=\"currentFocus() === idx\" (click)=\"$event.stopPropagation(); setOption(opt)\">\r\n @if(resultTemplate){\r\n <ng-container [ngTemplateOutlet]=\"resultTemplate\" [ngTemplateOutletContext]=\"{ item: opt }\"></ng-container>\r\n }@else {\r\n <span>{{ opt.label }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </dolfo-input-container>`,\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AutocompleteComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => AutocompleteComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: AutocompleteComponent }\r\n ]\r\n})\r\nexport class AutocompleteComponent extends BaseFormInput<any> implements AfterViewInit, OnFocus, OnBlur{\r\n @ViewChild(\"autocomplete\") private autocomplete: ElementRef<HTMLDivElement>\r\n @ViewChild(\"autocompleteInput\") private autocompleteInput: ElementRef<HTMLInputElement>\r\n @Input({ required: true }) config: AutocompleteConfig<any>\r\n @Input() minChars = 3\r\n @Input() resultTemplate: TemplateRef<any>\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n public options = signal<ComboOption[]>([])\r\n public opened = signal(false)\r\n public currentOption = signal(\"\")\r\n public currentOptionLabel = signal(\"\")\r\n public loading = signal(false)\r\n public currentFocus = signal<number>(null)\r\n private keyDown = false\r\n private keyDownTimeout: ReturnType<typeof setTimeout>\r\n\r\n constructor(){\r\n super()\r\n\r\n this.addSubscription(fromEvent(window, \"click\").pipe(\r\n filter(() => !!this.autocomplete && !this.input.disabled),\r\n map(ev => ev.target as HTMLElement),\r\n map(target => !this.autocomplete.nativeElement.contains(target) && !target.isEqualNode(this.autocomplete.nativeElement))\r\n ).subscribe(condition => {\r\n if(condition && this.opened()){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }else if(!this.opened() && !condition)\r\n this.opened.set(true)\r\n }))\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => v != null && !!this.autocompleteInput && (this.autocompleteInput.nativeElement.value !== this.config.getLabel(v) || !this.currentOptionLabel()))\r\n ).subscribe(value => this.setOption({ value, label: this.config.getLabel(value) }, true)))\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => v == null && !!this.autocompleteInput && this.autocompleteInput.nativeElement.value != null && this.autocompleteInput.nativeElement.value !== \"\")\r\n ).subscribe(() => this.setOption(null, true)))\r\n\r\n this.addSubscription(this.input.statusChanges.pipe(\r\n filter(() => !!this.autocompleteInput)\r\n ).subscribe(() => this.autocompleteInput.nativeElement.disabled = this.input.disabled))\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit()\r\n\r\n this.addSubscription(fromEvent(this.autocompleteInput.nativeElement, \"input\").pipe(\r\n map(ev => (ev.target as HTMLInputElement).value),\r\n tap(value => {\r\n if(!value){\r\n this.input.setValue(null)\r\n this.onChange.emit(null)\r\n this.options.set([])\r\n }\r\n }),\r\n delay(1000),\r\n filter(value => !this.keyDown && value.length >= this.minChars),\r\n tap(() => {\r\n this.options.set([])\r\n this.opened.set(true)\r\n this.loading.set(true)\r\n }),\r\n mergeMap(value => this.config.search$(value)),\r\n map(results => results.map(value => ({\r\n value,\r\n label: this.config.getLabel(value)\r\n })))\r\n ).subscribe(results => {\r\n this.loading.set(false)\r\n this.options.set(results)\r\n this.currentFocus.set(null)\r\n }))\r\n\r\n this.addSubscription(fromEvent<KeyboardEvent>(this.autocompleteInput.nativeElement, \"keydown\").subscribe(e => {\r\n if(e.key.length === 1){\r\n this.keyDown = true\r\n clearTimeout(this.keyDownTimeout)\r\n this.keyDownTimeout = setTimeout(() => this.keyDown = false, 1000)\r\n }else if(this.opened()){\r\n if(e.key === \"ArrowDown\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === this.options().length - 1 ? 0 : v === null ? 0 : v + 1)\r\n }else if(e.key === \"ArrowUp\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === 0 ? this.options().length - 1 : v === null ? 0 : v - 1)\r\n }else if(e.key === \"Enter\" && this.currentFocus() >= 0 && this.currentFocus() != null){\r\n e.preventDefault()\r\n this.setOption(this.options()[this.currentFocus()])\r\n }else if(e.key === \"Tab\"){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }\r\n }\r\n }))\r\n }\r\n\r\n\tpublic focus = (e: FocusEvent) => {\r\n\t\tif(this.input.disabled)\r\n\t\t\treturn\r\n\t\t\r\n\t\tthis.opened.set(true)\r\n\t\tthis.onFocus.emit(e)\r\n\t}\r\n\r\n\tpublic isSelected = (opt: ComboOption) => this.input.value === opt.value\r\n\r\n public setOption = (opt: ComboOption, noEmit = false) => {\r\n this.autocompleteInput.nativeElement.value = opt?.label ?? \"\"\r\n this.currentOptionLabel.set(opt?.label)\r\n this.input.setValue(opt?.value)\r\n this.opened.set(false)\r\n\r\n if(!noEmit)\r\n\t\t this.onChange.emit(this.input.value)\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, Input } from \"@angular/core\"\r\nimport { ICON_COMPONENT, IconName } from \"../../shared/interfaces\"\r\n\r\n@Component({\r\n selector: \"dolfo-icon\",\r\n standalone: false,\r\n template: `<ng-container [ngComponentOutlet]=\"iconComponent\" [ngComponentOutletInputs]=\"{ name }\"></ng-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconWrapperComponent {\r\n @Input({ required: true }) name: IconName | string\r\n\r\n public iconComponent = inject(ICON_COMPONENT)\r\n}\r\n","import { AfterViewInit, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, inject, Input, OnChanges, Output, signal, SimpleChanges, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { filter, fromEvent, map } from \"rxjs\"\r\nimport { ComboInput, ComboOption, isDeepEqual } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-combobox\",\r\n template: `<dolfo-input-container>\r\n\t\t<div class=\"combobox\" [class.opened]=\"opened()\" #combo tabindex=\"0\" (focus)=\"focus($event)\" (blur)=\"onBlur.emit($event); opened.set(false)\" [class.disabled]=\"input.disabled\">\r\n\t\t\t<div class=\"combobox-label\">\r\n @if(hasValue && !input.disabled){\r\n <dolfo-icon [dolfoTooltip]=\"'form.resetValue' | translate\" name=\"cross\" (click)=\"input.setValue(null); $event.stopPropagation()\"></dolfo-icon>\r\n }@else {\r\n <dolfo-icon name=\"circle-down\" class=\"combo-icon\"></dolfo-icon>\r\n }\r\n\t\t\t\t<span>{{ comboLabel() | translate }}</span>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"combobox-options\" [class.opened]=\"opened()\">\r\n\t\t\t\t@for(opt of options; track opt.value; let idx = $index){\r\n\t\t\t\t\t<div class=\"combobox-option\" [class.selected]=\"isSelected(opt)\" [class.focused]=\"currentFocus() === idx\" (click)=\"$event.stopPropagation(); setOption(opt)\">\r\n\t\t\t\t\t\t<span>{{ opt.label }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n <input type=\"hidden\" [formControl]=\"input\" />\r\n\t\t</div>\r\n\t</dolfo-input-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ComboboxComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => ComboboxComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: ComboboxComponent }\r\n ],\r\n standalone: false\r\n})\r\nexport class ComboboxComponent extends BaseFormInput<any | any[]> implements AfterViewInit, Required<ComboInput>, OnBlur, OnFocus, OnChanges{\r\n\t@ViewChild(\"combo\") private combo: ElementRef<HTMLDivElement>\r\n\t@Input({ required: true }) options: ComboOption[]\r\n\t@Input() placeHolder: string\r\n\t@Input({ transform: booleanAttribute }) multiple = false\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n\tpublic opened = signal(false)\r\n public currentFocus = signal<number>(null)\r\n public comboLabel = signal(\"\")\r\n\r\n\tconstructor(){\r\n\t\tsuper()\r\n\r\n\t\tthis.addSubscription(fromEvent(window, \"click\").pipe(\r\n filter(() => !!this.combo && !this.input.disabled),\r\n\t\t\tmap(ev => ev.target as HTMLElement),\r\n\t\t\tmap(target => !this.combo.nativeElement.contains(target) && !target.isEqualNode(this.combo.nativeElement))\r\n\t\t).subscribe(condition => {\r\n\t\t\tif(condition && this.opened())\r\n\t\t\t\tthis.opened.set(false)\r\n\t\t\telse if(!this.opened() && !condition)\r\n\t\t\t\tthis.opened.set(true)\r\n\t\t}))\r\n\r\n this.addSubscription(this.input.valueChanges.subscribe(value => this.comboLabel.set(this.extractLabel(value))))\r\n\t}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes.options && !isDeepEqual(changes.options.previousValue, changes.options.currentValue))\r\n this.input.setValue(null)\r\n }\r\n\r\n\toverride ngAfterViewInit() {\r\n\t\tsuper.ngAfterViewInit()\r\n\r\n\t\tthis.addSubscription(fromEvent<KeyboardEvent>(this.combo.nativeElement, \"keydown\").subscribe(e => {\r\n if(this.opened()){\r\n if(e.key === \"ArrowDown\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === this.options.length - 1 ? 0 : v === null ? 0 : v + 1)\r\n }else if(e.key === \"ArrowUp\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === 0 ? this.options.length - 1 : v === null ? 0 : v - 1)\r\n }else if(e.key === \"Enter\" && this.currentFocus() >= 0 && this.currentFocus() != null){\r\n e.preventDefault()\r\n this.setOption(this.options[this.currentFocus()])\r\n\r\n\t\t\t\t\tif(!this.multiple)\r\n\t\t\t\t\t\tthis.opened.set(false)\r\n\r\n\t\t\t\t\tthis.cdr.detectChanges()\r\n }else if(e.key === \"Tab\"){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }\r\n }\r\n }))\r\n\t}\r\n\r\n\tprivate extractLabel = (value: any | any[]) => {\r\n\t\tif(value == null || (value as number[])?.length === 0)\r\n\t\t\treturn this.placeHolder || \" \"\r\n\r\n\t\tif(!this.multiple)\r\n\t\t\treturn this.options.find(opt => isDeepEqual(opt.value, value))?.label\r\n\r\n\t\treturn this.options.filter(opt => (value as number[]).some(o => isDeepEqual(opt.value, o))).map(opt => opt.label).join(\", \")\r\n\t}\r\n\r\n\tpublic focus = (e: FocusEvent) => {\r\n\t\tif(this.input.disabled)\r\n\t\t\treturn\r\n\t\t\r\n\t\tthis.opened.set(true)\r\n\t\tthis.onFocus.emit(e)\r\n\t}\r\n\r\n\tpublic setOption = (opt: ComboOption) => {\r\n\t\tconst { value } = this.input\r\n\r\n\t\tif(!this.multiple){\r\n\t\t\tif(isDeepEqual(value, opt.value))\r\n\t\t\t\tthis.input.setValue(null)\r\n\t\t\telse\r\n\t\t\t\tthis.input.setValue(opt.value)\r\n\r\n this.opened.set(false)\r\n\t\t}else{\r\n\t\t\tconst castValue = value as Array<any>\r\n\r\n\t\t\tif(castValue.some(o => isDeepEqual(opt.value, o)))\r\n\t\t\t\tthis.input.setValue(castValue.filter(v => isDeepEqual(opt.value, v)))\r\n\t\t\telse\r\n\t\t\t\tthis.input.setValue(castValue.concat(opt.value))\r\n\t\t}\r\n\r\n\t\tthis.onChange.emit(this.input.value)\r\n\t}\r\n\r\n\tpublic isSelected = (opt: ComboOption) => {\r\n\t\tconst { value } = this.input\r\n\r\n\t\tif(!this.multiple)\r\n\t\t\treturn isDeepEqual(value, opt.value)\r\n\r\n\t\treturn (value as Array<any>).some(o => isDeepEqual(opt.value, o))\r\n\t}\r\n\r\n public get hasValue(){\r\n return this.multiple ? this.input.value != null && this.input.value.length > 0 : this.input.value != null\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-datepicker\",\r\n\ttemplate: `<dolfo-input-container>\r\n\t\t<input #formInput [type]=\"type === 'datetime' ? 'datetime-local' : type\" [formControl]=\"input\" (focus)=\"openPicker(); onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" />\r\n\t</dolfo-input-container>`,\r\n\tstandalone: false,\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatepickerComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => DatepickerComponent), multi: true },\r\n\t\t{ provide: BaseFormInput, useExisting: DatepickerComponent }\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DatepickerComponent extends BaseFormInput<Date> implements OnFocus, OnBlur{\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement>\r\n @Input() type: \"date\" | \"datetime\" | \"time\" = \"date\"\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n public openPicker = () => this.formInput.nativeElement.showPicker()\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, signal, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-file-select\",\r\n\ttemplate: `<dolfo-input-container>\r\n\t\t<input #formInput type=\"file\" (change)=\"changeFiles($event)\" [multiple]=\"multiple\" [accept]=\"accept\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [disabled]=\"input.disabled\" (dragover)=\"setDragging()\" (dragleave)=\"dragging.set(false)\" (drop)=\"onDrop($event)\" [class.dragging]=\"dragging()\" />\r\n\t</dolfo-input-container>`,\r\n\tstandalone: false,\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileSelectComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => FileSelectComponent), multi: true },\r\n\t\t{ provide: BaseFormInput, useExisting: FileSelectComponent }\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FileSelectComponent extends BaseFormInput<FileList> implements OnFocus, OnBlur{\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement>\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n @Input({ transform: booleanAttribute }) multiple = false\r\n @Input() accept: string\r\n\r\n public dragging = signal(false)\r\n\r\n public changeFiles = (e: Event) => {\r\n if(!this.input.disabled)\r\n this.control.setValue((e.target as HTMLInputElement).files)\r\n }\r\n\r\n override writeValue = (obj: FileList) => {\r\n super.writeValue(obj)\r\n \r\n if(this.formInput)\r\n this.formInput.nativeElement.value = null\r\n }\r\n\r\n public setDragging = () => {\r\n if(!this.input.disabled)\r\n this.dragging.set(true)\r\n }\r\n\r\n public onDrop = (event: DragEvent) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n\r\n if(this.input.disabled)\r\n return\r\n\r\n const rawFiles = event.dataTransfer?.files\r\n\r\n if (!rawFiles || rawFiles.length === 0)\r\n return\r\n\r\n const validFiles = Array.from(rawFiles).filter(f => this.isValidFile(f))\r\n\r\n if (validFiles.length > 0)\r\n this.control.setValue(validFiles)\r\n\r\n this.dragging.set(false)\r\n }\r\n\r\n public isValidFile = (file: File) => {\r\n if(!this.accept)\r\n return true\r\n\r\n const allowedExtensions = this.accept.split(\",\").map(ext => ext.trim().toLowerCase()),\r\n fileName = file.name.toLowerCase()\r\n \r\n return allowedExtensions.some(ext => {\r\n if (ext.startsWith(\".\"))\r\n return fileName.endsWith(ext)\r\n\r\n if (ext.includes(\"/\")) {\r\n if (ext.endsWith(\"/*\")) {\r\n const mainType = ext.split(\"/\")[0]\r\n return file.type.startsWith(mainType + \"/\")\r\n }\r\n\r\n return file.type === ext\r\n }\r\n\r\n return file.type === this.accept\r\n })\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\nimport { FormGroup } from \"@angular/forms\"\r\n\r\n@Component({\r\n selector: \"dolfo-form\",\r\n template: `<form [formGroup]=\"formGroup\">\r\n <ng-content></ng-content>\r\n\r\n @if(hiddenSubmit){\r\n <button type=\"submit\" [ngStyle]=\"{ display: 'none' }\"></button>\r\n }\r\n </form>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class FormComponent{\r\n @Input({ required: true }) formGroup: FormGroup\r\n @Input({ transform:booleanAttribute }) hiddenSubmit: boolean\r\n}\r\n","import { AfterViewInit, Directive, inject, Injector, OnInit, signal, ViewContainerRef } from \"@angular/core\"\r\nimport { Router } from \"@angular/router\"\r\nimport { concatAll, from, Observable, tap } from \"rxjs\"\r\nimport { StoreService } from \"../services\"\r\nimport { OverlayManager, Subscriptable } from \"./\"\r\n\r\n@Directive()\r\nexport abstract class BaseAppComponent extends Subscriptable implements OnInit, AfterViewInit{\r\n protected abstract container: ViewContainerRef\r\n\r\n protected abstract readonly streams: Observable<string>[]\r\n\r\n protected injector = inject(Injector)\r\n protected router = inject(Router)\r\n protected storeService = inject(StoreService)\r\n\r\n private loading = signal(0)\r\n public loadingMessage = signal(\"...\")\r\n\r\n ngOnInit(){\r\n from(Object.values(this.streams)).pipe(\r\n concatAll(),\r\n tap(desc => {\r\n this.loading.update(item => item + 1)\r\n this.loadingMessage.set(desc + \"...\")\r\n })\r\n ).subscribe(() => {\r\n if(this.loading() === Object.keys(this.streams).length){\r\n setTimeout(() => {\r\n this.loadingMessage.set(null)\r\n this.storeService.initialize()\r\n this.router.initialNavigation()\r\n }, 500)\r\n }\r\n })\r\n }\r\n\r\n ngAfterViewInit(){\r\n new OverlayManager(this.injector, this.container).init().forEach(s => this.addSubscription(s))\r\n }\r\n\r\n public get percentage(){\r\n return (this.loading() * 100) / Object.keys(this.streams).length\r\n }\r\n}","import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Directive, inject, OnDestroy, QueryList, ViewChild, ViewChildren } from \"@angular/core\"\r\nimport { FormArray, FormGroup, FormGroupDirective } from \"@angular/forms\"\r\nimport { BehaviorSubject, catchError, distinctUntilChanged, filter, mergeMap, Observable, of, Subscription, tap } from \"rxjs\"\r\nimport { BaseFormInput } from \"../../components/form/base-form-input\"\r\nimport { NotificationService, TranslateService } from \"../services\"\r\nimport { Subscriptable } from \"./subscriptable\"\r\n\r\n@Directive()\r\nexport abstract class Formable<T = object> extends Subscriptable implements OnDestroy, AfterViewInit, AfterViewChecked{\r\n @ViewChild(FormGroupDirective) protected formRef: FormGroupDirective\r\n @ViewChildren(BaseFormInput) private inputs: QueryList<BaseFormInput<unknown>>\r\n\r\n protected loading$ = new BehaviorSubject(false)\r\n protected notificationService = inject(NotificationService)\r\n protected translateService = inject(TranslateService)\r\n protected cdr = inject(ChangeDetectorRef)\r\n private subForm: Subscription\r\n \r\n protected abstract submit: (_formValue: T) => Observable<unknown>\r\n\r\n ngAfterViewInit() {\r\n if(!this.formRef)\r\n return\r\n \r\n this.addSubscription(this.loading$.pipe(\r\n distinctUntilChanged()\r\n ).subscribe(loading => {\r\n if(loading)\r\n this.formRef.form.disable()\r\n else\r\n this.formRef.form.enable()\r\n }))\r\n\r\n this.subForm = this.formRef.ngSubmit.pipe(\r\n tap(() => this.findInForm(this.formRef.form)),\r\n mergeMap(() => {\r\n if(!this.formRef.invalid && !this.loading$.getValue()){\r\n this.loading$.next(true)\r\n return this.submit(this.formRef.form.getRawValue()).pipe(\r\n catchError(err => {\r\n this.loading$.next(false)\r\n return of(err)\r\n }),\r\n tap(() => this.loading$.next(false))\r\n )\r\n }\r\n \r\n return of(null)\r\n })\r\n ).subscribe()\r\n\r\n this.addSubscription(this.subForm)\r\n\r\n this.addSubscription(this.translateService.getLang$().subscribe(() => this.cdr.detectChanges()))\r\n }\r\n \r\n ngAfterViewChecked() {\r\n if(!this.formRef && this.subForm){\r\n this.subForm.unsubscribe()\r\n this.subForm = null\r\n }else if(this.formRef && !this.subForm)\r\n this.ngAfterViewInit()\r\n }\r\n\r\n private findInForm = (formGroup: FormGroup, index?: number) => {\r\n for(const [key, control] of Object.entries(formGroup.controls)){\r\n control.markAsTouched()\r\n control.updateValueAndValidity()\r\n\r\n if(control.invalid){\r\n const arr = formGroup.get(key)\r\n\r\n if(arr instanceof FormArray){\r\n let index = 0\r\n\r\n for(const item of arr.controls){\r\n if(this.findInForm(item as FormGroup, index))\r\n return true\r\n\r\n index++\r\n }\r\n }else{\r\n const inputs = this.inputs.toArray().filter(i => i.formControlName === key)\r\n\r\n if(inputs.length === 1)\r\n inputs[0].container?.focus()\r\n else if(index != null)\r\n inputs[index].container?.focus()\r\n\r\n return true\r\n }\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n public manualSubmit = () => this.formRef.ngSubmit.emit()\r\n\r\n protected registerPasswordChanges = (passwordControlName: string, confirmPasswordControlName: string) => {\r\n this.addSubscription(this.formRef.form.get(passwordControlName).valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.formRef.form.get(passwordControlName).touched)\r\n ).subscribe(() => {\r\n this.formRef.form.get(confirmPasswordControlName).updateValueAndValidity()\r\n this.formRef.form.get(confirmPasswordControlName).markAsTouched()\r\n }))\r\n\r\n this.addSubscription(this.formRef.form.get(confirmPasswordControlName).valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.formRef.form.get(confirmPasswordControlName).touched)\r\n ).subscribe(() => {\r\n this.formRef.form.get(passwordControlName).updateValueAndValidity()\r\n this.formRef.form.get(passwordControlName).markAsTouched()\r\n }))\r\n }\r\n\r\n public isLoading$ = () => this.loading$.asObservable()\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, InjectionToken, Input, OnInit } from \"@angular/core\"\r\nimport { fromEvent, race } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { ContextMenuItem, IContextMenu } from \"../../shared/interfaces\"\r\n\r\nexport const CONTEXT_MENU_DESTROY_TOKEN = new InjectionToken<() => void>(\"CONTEXT_MENU_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-context-menu\",\r\n standalone: false,\r\n template: `<div class=\"context-menu\" [ngStyle]=\"{\r\n top: y + 'px',\r\n left: x + 'px'\r\n }\" (click)=\"$event.stopPropagation()\" [ngClass]=\"'position-' + position\">\r\n @for(item of items; track item.label){\r\n <div [ngClass]=\"item.className\" [class.disabled]=\"item.disabled\" (click)=\"clickItem(item)\">\r\n @if(item.icon){\r\n <dolfo-icon [name]=\"item.icon\"></dolfo-icon>\r\n }\r\n {{ item.label }}\r\n </div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContextMenuComponent extends Subscriptable implements IContextMenu, OnInit {\r\n @Input({ required: true }) x: number\r\n @Input({ required: true }) y: number\r\n @Input({ required: true }) items: ContextMenuItem[]\r\n @Input({ required: true }) ref: ElementRef<HTMLElement>\r\n @Input() position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\"\r\n \r\n private destroyFn = inject(CONTEXT_MENU_DESTROY_TOKEN)\r\n\r\n ngOnInit() {\r\n this.addSubscription(race([\r\n fromEvent(this.ref.nativeElement, \"contextmenu\"),\r\n fromEvent(window, \"click\"),\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true })\r\n ]).subscribe(this.destroyFn))\r\n }\r\n\r\n public clickItem = (item: ContextMenuItem) => {\r\n if(item.onClick && !item.disabled){\r\n item.onClick()\r\n this.destroyFn()\r\n }\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { filter, map } from \"rxjs\"\r\nimport { InputType } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-text\",\r\n template: `<dolfo-input-container>\r\n @if(type === \"textarea\"){\r\n <textarea #formInput [name]=\"formControlName\" [formControl]=\"input\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [placeholder]=\"placeHolder\"></textarea>\r\n }@else{\r\n <input #formInput [name]=\"formControlName\" [type]=\"type\" [formControl]=\"input\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [placeholder]=\"placeHolder\" />\r\n }\r\n </dolfo-input-container>`,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputTextComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputTextComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputTextComponent }\r\n ],\r\n standalone: false\r\n})\r\nexport class InputTextComponent extends BaseFormInput<string | number> implements OnFocus, OnBlur{\r\n @Input() type: InputType = \"text\"\r\n @Input() placeHolder = \"\"\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement | HTMLTextAreaElement>\r\n\r\n public focus = () => this.formInput.nativeElement.focus()\r\n\r\n override ngAfterViewInit() {\r\n if(this.type !== \"number\")\r\n super.ngAfterViewInit()\r\n else{\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(() => !this.input.disabled),\r\n map(v => v != null && String(v).trim() !== \"\" ? Number(v) : null)\r\n ).subscribe(v => {\r\n this.onChange.emit(v)\r\n this.changeInternal(v)\r\n }))\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, Input } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { ComboOption, isDeepEqual } from \"../../shared/interfaces\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-radio\",\r\n template: `<dolfo-input-container>\r\n @for(option of options; track option){\r\n <div class=\"radio-item\">\r\n <input type=\"radio\" [name]=\"formControlName\" [formControl]=\"input\" [checked]=\"isSelectedOption(option)\" [value]=\"option.value\" />\r\n <label (click)=\"setOption(option)\">{{ option.label }}</label>\r\n </div>\r\n }\r\n </dolfo-input-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputRadioComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputRadioComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputRadioComponent }\r\n ]\r\n})\r\nexport class InputRadioComponent extends BaseFormInput<any> {\r\n @Input({ required: true }) options: ComboOption[]\r\n\r\n public isSelectedOption = (opt: ComboOption) => isDeepEqual(this.input.value, opt.value)\r\n\r\n public setOption = (opt: ComboOption) => {\r\n if(this.input.disabled)\r\n return\r\n \r\n this.input.setValue(opt.value)\r\n this.onChange.emit(this.input.value)\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, TemplateRef, ViewChild } from \"@angular/core\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-content\",\r\n template: `<ng-template><ng-content></ng-content></ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogContentComponent implements OnInit{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n ngOnInit() {\r\n this.cdr.detectChanges()\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { ButtonColor, ButtonSize } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnClick, OnFocus } from \"../../shared/interfaces/events\"\r\n\r\n@Component({\r\n selector: \"dolfo-button\",\r\n template: `<button #btn [type]=\"type\" [disabled]=\"disabled || loading\" (click)=\"doClick($event)\" [class]=\"'color-' + (color || 'primary')\" (focus)=\"onFocus.emit($event)\" (blur)=\"onFocus.emit($event)\" [class.size-sm]=\"size === 'small'\" [class.size-lg]=\"size === 'large'\" [class.text]=\"textButton\">\r\n @if(loading){\r\n <dolfo-icon name=\"spinner8\"></dolfo-icon>\r\n }\r\n <ng-content></ng-content>\r\n </button>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class ButtonComponent implements OnClick, OnBlur, OnFocus{\r\n @ViewChild(\"btn\") btn: ElementRef<HTMLButtonElement>\r\n @Input() type: \"button\" | \"submit\" = \"button\"\r\n @Input({ transform: booleanAttribute }) disabled = false\r\n @Input() color: ButtonColor\r\n @Input() loading = false\r\n @Input() size: ButtonSize\r\n @Input({ transform: booleanAttribute }) textButton = false\r\n\r\n @Output() onClick = new EventEmitter<MouseEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n\r\n public doClick = (e: MouseEvent) => {\r\n if (!this.disabled && !this.loading)\r\n this.onClick.emit(e)\r\n }\r\n\r\n public focus = () => {\r\n if(!this.disabled && !this.loading)\r\n this.btn.nativeElement.focus()\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Output, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { DialogActionType, DialogIcon } from \"../../../shared/interfaces\"\r\nimport { DialogService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-header\",\r\n template: `<ng-template>\r\n <h5>\r\n @if(icon){\r\n <dolfo-icon [name]=\"getIcon()\" [class]=\"'fg-' + icon.color\"></dolfo-icon>\r\n }\r\n {{ title }}\r\n </h5>\r\n @if(showCloseX){\r\n <dolfo-button (click)=\"close()\" color=\"secondary\" [dolfoTooltip]=\"'dialog.close' | translate\">\r\n <dolfo-icon name=\"cross\"></dolfo-icon>\r\n </dolfo-button>\r\n }\r\n </ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogHeaderComponent implements OnInit{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n @Input({ required: true }) title: string\r\n @Input() icon: DialogIcon\r\n @Input({ transform: booleanAttribute }) showCloseX = true\r\n @Output() onCancel = new EventEmitter()\r\n private cdr = inject(ChangeDetectorRef)\r\n private dialogService = inject(DialogService)\r\n\r\n ngOnInit() {\r\n this.cdr.detectChanges()\r\n }\r\n\r\n public close = () => {\r\n if(this.onCancel.observed)\r\n this.onCancel.emit()\r\n else{\r\n this.dialogService.action({ type: DialogActionType.CANCEL, data: null })\r\n this.dialogService.close()\r\n }\r\n }\r\n\r\n public getIcon = () => this.icon.icon\r\n}\r\n","import { AfterViewChecked, ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Injector, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from \"@angular/core\"\r\nimport { DialogFooterButton } from \"../../../shared/interfaces\"\r\nimport { ButtonComponent } from \"../button.component\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-footer\",\r\n template: `<ng-template>\r\n @for(btn of buttons; track btn.label){\r\n <dolfo-button (onClick)=\"btn.onClick()\" [color]=\"btn.color\" [disabled]=\"btn.disabled\" [loading]=\"btn.loading\">\r\n @if(btn.icon && !btn.loading){\r\n <dolfo-icon [name]=\"btn.icon\"></dolfo-icon>\r\n }\r\n {{ btn.label }}\r\n </dolfo-button>\r\n }\r\n </ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogFooterComponent implements OnInit, AfterViewChecked{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n @ViewChildren(ButtonComponent) childrenButtons: QueryList<ButtonComponent>\r\n @Input({ required: true }) buttons: DialogFooterButton[]\r\n\r\n private focused = false\r\n private cdr = inject(ChangeDetectorRef)\r\n private injector = inject(Injector)\r\n\r\n async ngOnInit() {\r\n this.cdr.detectChanges()\r\n setTimeout(() => this.cdr.markForCheck())\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if(!this.focused){\r\n const firstBtn = this.childrenButtons.find(btn => !btn.disabled && !btn.loading)\r\n\r\n if(firstBtn)\r\n firstBtn.focus()\r\n \r\n this.focused = true\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input } from \"@angular/core\"\r\nimport { DialogContentComponent } from \"./dialog-content.component\"\r\nimport { DialogFooterComponent } from \"./dialog-footer.component\"\r\nimport { DialogHeaderComponent } from \"./dialog-header.component\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-layout\",\r\n templateUrl: \"./dialog-layout.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogLayoutComponent {\r\n @ContentChild(DialogHeaderComponent) header: DialogHeaderComponent\r\n @ContentChild(DialogContentComponent) content: DialogContentComponent\r\n @ContentChild(DialogFooterComponent) footer: DialogFooterComponent\r\n @Input() width: number\r\n}\r\n","<div class=\"dialog\">\r\n <div class=\"dialog-inner\" [ngStyle]=\"{ width: width + 'px' }\">\r\n @if(header){\r\n <div class=\"dialog-header\">\r\n <ng-content *ngTemplateOutlet=\"header.template\"></ng-content>\r\n </div>\r\n }\r\n @if(content){\r\n <div class=\"dialog-content\">\r\n <ng-content *ngTemplateOutlet=\"content.template\"></ng-content>\r\n </div>\r\n }\r\n @if(footer){\r\n <div class=\"dialog-footer\">\r\n <ng-content *ngTemplateOutlet=\"footer.template\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from \"@angular/core\"\r\nimport { FormGroup } from \"@angular/forms\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { Observable, of } from \"rxjs\"\r\nimport { Formable } from \"../../../shared/classes\"\r\nimport { DialogActionType, DialogComponentInput, DialogFooterButton, DialogForm, DialogIcon, DialogType, IDialogInput } from \"../../../shared/interfaces\"\r\nimport { DialogService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog\",\r\n standalone: false,\r\n template: `<dolfo-dialog-layout [width]=\"width\" [ngClass]=\"className\">\r\n @if(title){\r\n <dolfo-dialog-header [title]=\"title\" [showCloseX]=\"showCloseX()\" [icon]=\"getIcon()\"></dolfo-dialog-header>\r\n }\r\n\r\n <dolfo-dialog-content>\r\n <div [class.loading]=\"type === 'loading'\">\r\n @if(message){\r\n <span [innerHTML]=\"sanitizeMsg()\"></span>\r\n }\r\n\r\n @if(form && formGroup){\r\n <form [formGroup]=\"formGroup\">\r\n @for(f of form; track f.name){\r\n @switch(f.type){\r\n @case(\"date\"){\r\n <dolfo-datepicker [formControlName]=\"f.name\" [label]=\"f.label\"></dolfo-datepicker>\r\n }\r\n @case(\"autocomplete\"){\r\n <dolfo-autocomplete [formControlName]=\"f.name\" [label]=\"f.label\" [config]=\"f.autocompleteCfg\"></dolfo-autocomplete>\r\n }\r\n @case(\"radio\"){\r\n <dolfo-input-radio [formControlName]=\"f.name\" [label]=\"f.label\" [options]=\"f.options\"></dolfo-input-radio>\r\n }\r\n @case(\"combobox\"){\r\n <dolfo-combobox [formControlName]=\"f.name\" [label]=\"f.label\" [options]=\"f.options\"></dolfo-combobox>\r\n }\r\n @default{\r\n <dolfo-input-text [formControlName]=\"f.name\" [type]=\"f.type\" [label]=\"f.label\"></dolfo-input-text>\r\n }\r\n }\r\n }\r\n </form>\r\n }\r\n </div>\r\n </dolfo-dialog-content>\r\n\r\n @let footer = buttons || getFooter();\r\n\r\n @if(footer){\r\n <dolfo-dialog-footer [buttons]=\"footer\"></dolfo-dialog-footer>\r\n }\r\n </dolfo-dialog-layout>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DialogComponent extends Formable implements Required<IDialogInput>, OnInit {\r\n @Input() title: string\r\n @Input({ required: true }) message: string\r\n @Input() type: DialogType = \"info\"\r\n @Input() width: number\r\n @Input() hideCloseX = false\r\n @Input() form: DialogForm\r\n @Input() component: DialogComponentInput\r\n @Input() buttons: DialogFooterButton[]\r\n @Input() className: string\r\n public formGroup: FormGroup\r\n \r\n protected dialogService = inject(DialogService)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n ngOnInit() {\r\n if(this.form){\r\n this.formGroup = new FormGroup({})\r\n this.form.forEach(f => this.formGroup.addControl(f.name, f.control))\r\n }\r\n }\r\n\r\n protected submit = (formValue: any): Observable<unknown> => of(this.close(DialogActionType.OK, formValue))\r\n\r\n public getIcon = (): DialogIcon => {\r\n if(this.type === \"info\")\r\n return { icon: \"info\", color: \"info\" }\r\n if(this.type === \"error\")\r\n return { icon: \"notification\", color: \"error\" }\r\n if(this.type === \"confirm\")\r\n return { icon: \"question\", color: \"warning\" }\r\n\r\n return null\r\n }\r\n\r\n protected close = (type: DialogActionType, data?: Record<string, any>) => {\r\n if(type === DialogActionType.OK && this.formGroup && this.formRef){\r\n this.formRef.ngSubmit.emit()\r\n\r\n if(this.formGroup.invalid)\r\n return\r\n }\r\n\r\n this.dialogService.action({ type, data: data != null ? data : this.formGroup?.getRawValue() })\r\n this.dialogService.close()\r\n }\r\n\r\n public showCloseX = () => this.type !== \"loading\" && !this.hideCloseX\r\n\r\n public getFooter = (): DialogFooterButton[] => {\r\n if(this.type === \"loading\")\r\n return null\r\n\r\n if(this.type === \"info\" || this.type === \"error\"){\r\n return [{\r\n label: this.translateService.translate(\"dialog.ok\"),\r\n onClick: () => this.close(DialogActionType.OK),\r\n color: this.type\r\n }]\r\n }\r\n\r\n return [{\r\n label: this.translateService.translate(\"dialog.confirm\"),\r\n onClick: () => this.close(DialogActionType.OK),\r\n color: \"primary\"\r\n },\r\n {\r\n label: this.translateService.translate(\"dialog.no\"),\r\n onClick: () => this.close(DialogActionType.NO),\r\n color: \"secondary\"\r\n }]\r\n }\r\n\r\n public sanitizeMsg = () => this.sanitizer.bypassSecurityTrustHtml(this.message)\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from \"@angular/core\"\r\nimport { INotificationInput, NotificationAction, NotificationType } from \"../../shared/interfaces\"\r\nimport { NotificationService, TranslateService } from \"../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-notification\",\r\n standalone: false,\r\n template: `<div class=\"notification\" [ngClass]=\"{\r\n success: type === 'success',\r\n error: type === 'error',\r\n warning: type === 'warning',\r\n info: type === 'info'\r\n }\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (click)=\"click()\">\r\n <div class=\"notification-header\">\r\n <h6>{{ title || getTitleByType() }}</h6>\r\n </div>\r\n <div class=\"notification-content\">\r\n {{ message }}\r\n </div>\r\n @if(action){\r\n <div class=\"notification-action\">\r\n <dolfo-button [color]=\"type\" (onClick)=\"action.click()\">\r\n <dolfo-icon name=\"new-tab\"></dolfo-icon>\r\n {{ action.label }}\r\n </dolfo-button>\r\n </div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NotificationComponent implements OnInit, Required<INotificationInput>{\r\n @Input({ required: true }) title: string\r\n @Input({ required: true }) message: string\r\n @Input() type: NotificationType = \"info\"\r\n @Input() action: NotificationAction\r\n\r\n private timeout: any\r\n private ns = inject(NotificationService)\r\n private ts = inject(TranslateService)\r\n\r\n ngOnInit(){\r\n this.mouseLeave()\r\n }\r\n\r\n public mouseEnter = () => clearTimeout(this.timeout)\r\n\r\n public mouseLeave = () => this.timeout = setTimeout(() => this.ns.hide(), 3000)\r\n\r\n public click = () => {\r\n this.mouseEnter()\r\n this.ns.hide()\r\n }\r\n\r\n public getTitleByType = () => this.ts.translate(\"notification.\" + this.type)\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, InjectionToken, Input, OnInit, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { BehaviorSubject, filter, fromEvent, map, race, zip } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { IPopover, TooltipDirection } from \"../../shared/interfaces\"\r\n\r\nexport const POPOVER_DESTROY_TOKEN = new InjectionToken<() => void>(\"POPOVER_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-popover\",\r\n standalone: false,\r\n template: `<div class=\"tooltip popover\" #tooltipRef [ngStyle]=\"{\r\n left: (x$ | async) + 'px',\r\n top: (y$ | async) + 'px'\r\n }\" [ngClass]=\"currentDirection$ | async\" [class.show]=\"completed$ | async\">\r\n @if(isTemplate()){\r\n <ng-container [ngTemplateOutlet]=\"getContentTemplate()\" [ngTemplateOutletContext]=\"context\"></ng-container>\r\n }@else{\r\n <div [innerHTML]=\"getContentStr()\"></div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PopoverComponent extends Subscriptable implements OnInit, AfterViewInit, Required<IPopover> {\r\n @ViewChild(\"tooltipRef\") tooltipRef: ElementRef<HTMLDivElement>\r\n @Input({ required: true }) content: string | TemplateRef<any>\r\n @Input({ required: true }) elementRef: ElementRef<HTMLElement>\r\n @Input({ required: true }) direction: TooltipDirection\r\n @Input() context: any\r\n\r\n private destroyFn = inject(POPOVER_DESTROY_TOKEN)\r\n private checkCount = 0\r\n private cdr = inject(ChangeDetectorRef)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n public currentDirection$ = new BehaviorSubject<TooltipDirection>(null)\r\n public completed$ = new BehaviorSubject(false)\r\n public readonly x$ = new BehaviorSubject(0)\r\n public readonly y$ = new BehaviorSubject(0)\r\n\r\n ngOnInit() {\r\n this.currentDirection$.next(this.direction)\r\n\r\n this.addSubscription(race([\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true }),\r\n fromEvent<MouseEvent>(window, \"click\").pipe(\r\n map(e => e.target as HTMLElement),\r\n filter(el => !el.isEqualNode(this.tooltipRef.nativeElement) && !this.tooltipRef.nativeElement.contains(el))\r\n )\r\n ]).subscribe(this.destroyFn))\r\n\r\n this.addSubscription(zip([this.x$, this.y$]).pipe(\r\n filter(([x, y]) => x != 0 && y != 0 && this.checkCount < 4)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n if (this.isTooltipInViewport()) {\r\n this.completed$.next(true)\r\n this.calculatePosition()\r\n return\r\n }\r\n\r\n if (this.currentDirection$.getValue() === \"bottom\")\r\n this.currentDirection$.next(\"left\")\r\n else if (this.currentDirection$.getValue() === \"left\")\r\n this.currentDirection$.next(\"top\")\r\n else if (this.currentDirection$.getValue() === \"top\")\r\n this.currentDirection$.next(\"right\")\r\n else\r\n this.currentDirection$.next(\"bottom\")\r\n })\r\n }))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.currentDirection$.asObservable().subscribe(() => setTimeout(() => this.calculatePosition())))\r\n }\r\n\r\n private calculatePosition = () => {\r\n const { elementRef, tooltipRef, currentDirection$ } = this,\r\n refRect = elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipRect = tooltipRef.nativeElement.getBoundingClientRect(),\r\n currentDirection = currentDirection$.getValue()\r\n\r\n if (currentDirection === \"top\" || currentDirection === \"bottom\")\r\n this.x$.next(refRect.left - ((tooltipRect.width - refRect.width) / 2))\r\n else if (currentDirection === \"right\")\r\n this.x$.next(refRect.left + refRect.width)\r\n else\r\n this.x$.next(refRect.left - tooltipRect.width)\r\n\r\n if (currentDirection === \"top\")\r\n this.y$.next(refRect.top - tooltipRect.height)\r\n else if (currentDirection === \"bottom\")\r\n this.y$.next(refRect.top + refRect.height)\r\n else\r\n this.y$.next(refRect.top - ((tooltipRect.height - refRect.height) / 2))\r\n\r\n this.cdr.detectChanges()\r\n this.checkCount++\r\n }\r\n\r\n private isTooltipInViewport = () => {\r\n const { top, left, bottom, right } = this.tooltipRef.nativeElement.getBoundingClientRect()\r\n return top >= 0 && left >= 0 && bottom <= window.innerHeight && right <= window.innerWidth\r\n }\r\n\r\n public getContentStr = () => this.sanitizer.bypassSecurityTrustHtml(this.content as string)\r\n\r\n public isTemplate = () => this.content instanceof TemplateRef\r\n\r\n public getContentTemplate = () => this.content as TemplateRef<any>\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, InjectionToken, Input, OnInit, ViewChild } from \"@angular/core\"\r\nimport { BehaviorSubject, filter, fromEvent, race, zip } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { ITooltip, TooltipDirection } from \"../../shared/interfaces\"\r\n\r\nexport const TOOLTIP_DESTROY_TOKEN = new InjectionToken<() => void>(\"TOOLTIP_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-tooltip\",\r\n standalone: false,\r\n template: `<div class=\"tooltip\" #tooltipRef [ngStyle]=\"{\r\n left: (x$ | async) + 'px',\r\n top: (y$ | async) + 'px'\r\n }\" [ngClass]=\"currentDirection$ | async\" [class.show]=\"completed$ | async\">\r\n {{ content }}\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TooltipComponent extends Subscriptable implements OnInit, AfterViewInit, Required<ITooltip> {\r\n @ViewChild(\"tooltipRef\") tooltipRef: ElementRef<HTMLDivElement>\r\n @Input({ required: true }) content: string\r\n @Input({ required: true }) elementRef: ElementRef<HTMLElement>\r\n @Input({ required: true }) direction: TooltipDirection\r\n \r\n private destroyFn = inject(TOOLTIP_DESTROY_TOKEN)\r\n private checkCount = 0\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n public currentDirection$ = new BehaviorSubject<TooltipDirection>(null)\r\n public completed$ = new BehaviorSubject(false)\r\n public readonly x$ = new BehaviorSubject(0)\r\n public readonly y$ = new BehaviorSubject(0)\r\n\r\n ngOnInit() {\r\n this.currentDirection$.next(this.direction)\r\n\r\n this.addSubscription(race([\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true }),\r\n fromEvent(this.elementRef.nativeElement, \"mouseleave\")\r\n ]).subscribe(this.destroyFn))\r\n\r\n this.addSubscription(zip([this.x$, this.y$]).pipe(\r\n filter(([x, y]) => x != 0 && y != 0 && this.checkCount < 4)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n if (this.isTooltipInViewport()) {\r\n this.completed$.next(true)\r\n this.calculatePosition()\r\n return\r\n }\r\n\r\n if (this.currentDirection$.getValue() === \"bottom\")\r\n this.currentDirection$.next(\"left\")\r\n else if (this.currentDirection$.getValue() === \"left\")\r\n this.currentDirection$.next(\"top\")\r\n else if (this.currentDirection$.getValue() === \"top\")\r\n this.currentDirection$.next(\"right\")\r\n else\r\n this.currentDirection$.next(\"bottom\")\r\n })\r\n }))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.currentDirection$.asObservable().subscribe(() => setTimeout(() => this.calculatePosition())))\r\n }\r\n\r\n private calculatePosition = () => {\r\n const { elementRef, tooltipRef, currentDirection$ } = this,\r\n refRect = elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipRect = tooltipRef.nativeElement.getBoundingClientRect(),\r\n currentDirection = currentDirection$.getValue()\r\n\r\n if (currentDirection === \"top\" || currentDirection === \"bottom\")\r\n this.x$.next(refRect.left - ((tooltipRect.width - refRect.width) / 2))\r\n else if (currentDirection === \"right\")\r\n this.x$.next(refRect.left + refRect.width)\r\n else\r\n this.x$.next(refRect.left - tooltipRect.width)\r\n\r\n if (currentDirection === \"top\")\r\n this.y$.next(refRect.top - tooltipRect.height)\r\n else if (currentDirection === \"bottom\")\r\n this.y$.next(refRect.top + refRect.height)\r\n else\r\n this.y$.next(refRect.top - ((tooltipRect.height - refRect.height) / 2))\r\n\r\n this.cdr.detectChanges()\r\n this.checkCount++\r\n }\r\n\r\n private isTooltipInViewport = () => {\r\n const { top, left, bottom, right } = this.tooltipRef.nativeElement.getBoundingClientRect()\r\n return top >= 0 && left >= 0 && bottom <= window.innerHeight && right <= window.innerWidth\r\n }\r\n}","import { ComponentRef, createComponent, EnvironmentInjector, Injector, ViewContainerRef } from \"@angular/core\"\r\nimport { distinctUntilChanged, filter, map, tap } from \"rxjs\"\r\nimport { CONTEXT_MENU_DESTROY_TOKEN, ContextMenuComponent } from \"../../components/layout/context-menu.component\"\r\nimport { DialogComponent } from \"../../components/layout/dialog-layout/dialog.component\"\r\nimport { NotificationComponent } from \"../../components/layout/notification.component\"\r\nimport { POPOVER_DESTROY_TOKEN, PopoverComponent } from \"../../components/layout/popover.component\"\r\nimport { TOOLTIP_DESTROY_TOKEN, TooltipComponent } from \"../../components/layout/tooltip.component\"\r\nimport { IDialogInput, isDeepEqual } from \"../interfaces\"\r\nimport { ContextMenuService, DialogService, NotificationService, PopoverService, TooltipService } from \"../services\"\r\n\r\nexport class OverlayManager{\r\n private dialog: [ComponentRef<IDialogInput>, number][] = []\r\n private notification: ComponentRef<NotificationComponent>\r\n private tooltip: ComponentRef<TooltipComponent>\r\n private popover: ComponentRef<PopoverComponent>\r\n private contextMenu: ComponentRef<ContextMenuComponent>\r\n \r\n constructor(private injector: Injector, private container: ViewContainerRef){}\r\n\r\n public init = () => {\r\n const ds = this.injector.get(DialogService),\r\n ns = this.injector.get(NotificationService),\r\n ts = this.injector.get(TooltipService),\r\n cs = this.injector.get(ContextMenuService),\r\n ps = this.injector.get(PopoverService),\r\n environmentInjector = this.injector.get(EnvironmentInjector)\r\n\r\n return [\r\n ds.getDialog$().pipe(\r\n tap(inputs => {\r\n const notFound = this.dialog.filter(d => !inputs.some(i => i._dialogId === d[1]))\r\n\r\n notFound.forEach(d => d[0].destroy())\r\n\r\n this.dialog = this.dialog.filter(d => !notFound.some(d2 => d2[1] === d[1]))\r\n }),\r\n map(inputs => inputs[inputs.length - 1]),\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n filter(input => !!input && !this.dialog.some(d => d[1] === input._dialogId))\r\n ).subscribe(input => {\r\n const dialog = createComponent(input.component?.type || DialogComponent, { environmentInjector })\r\n this.dialog.push([dialog, input._dialogId])\r\n \r\n Object.entries(input).filter(k => k[0] !== \"_dialogId\").forEach(([k, v]) => dialog.setInput(k, v))\r\n \r\n if(input.component?.input)\r\n Object.entries(input.component.input).forEach(([k, v]) => dialog.setInput(k, v))\r\n \r\n this.container.insert(dialog.hostView)\r\n }),\r\n ns.getNotification$().pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n tap(() => {\r\n if(this.notification)\r\n this.notification.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.notification = createComponent(NotificationComponent, { environmentInjector })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.notification.setInput(k, v))\r\n \r\n this.container.insert(this.notification.hostView)\r\n }),\r\n ts.getTooltip$().pipe(\r\n tap(() => {\r\n if(this.tooltip)\r\n this.tooltip.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.tooltip = createComponent(TooltipComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: TOOLTIP_DESTROY_TOKEN, useValue: () => this.tooltip.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.tooltip.setInput(k, v))\r\n \r\n this.container.insert(this.tooltip.hostView)\r\n }),\r\n ps.getPopover$().pipe(\r\n tap(() => {\r\n if(this.popover)\r\n this.popover.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.popover = createComponent(PopoverComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: POPOVER_DESTROY_TOKEN, useValue: () => this.popover.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.popover.setInput(k, v))\r\n \r\n this.container.insert(this.popover.hostView)\r\n }),\r\n cs.getContextMenu$().pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n tap(() => {\r\n if(this.contextMenu)\r\n this.contextMenu.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.contextMenu = createComponent(ContextMenuComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: CONTEXT_MENU_DESTROY_TOKEN, useValue: () => this.contextMenu.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.contextMenu.setInput(k, v))\r\n \r\n this.container.insert(this.contextMenu.hostView)\r\n })\r\n ]\r\n }\r\n}","import { ProviderToken, Type } from \"@angular/core\"\r\nimport { CanActivateFn, CanDeactivateFn, Route } from \"@angular/router\"\r\nimport { Observable } from \"rxjs\"\r\nimport { RouteCheckService } from \"../services\"\r\n\r\ninterface Module{\r\n [x: string]: Type<unknown>\r\n}\r\n\r\nexport class RouteConfig{\r\n private loadComponent: () => Promise<Type<unknown>>\r\n private redirectTo: string\r\n private pathMatch: \"full\" | \"prefix\" = \"full\"\r\n private title: (() => Observable<string> | string) | string\r\n private canActivate: Array<CanActivateFn | ProviderToken<any> | string> = []\r\n private canDeactivate: Array<CanDeactivateFn<any> | ProviderToken<any>> = []\r\n\r\n constructor(private path: string, withRouteCheck = true){\r\n if(withRouteCheck)\r\n this.canActivate.push(RouteCheckService)\r\n }\r\n\r\n public withTitle = (title: typeof this.title) => {\r\n this.title = title\r\n return this\r\n }\r\n\r\n public loadUrl = (imp: Promise<Module>) => {\r\n this.loadComponent = () => imp.then(t => Object.values(t)[0])\r\n return this\r\n }\r\n\r\n public withRedirect = (url: string) => {\r\n this.redirectTo = url\r\n return this\r\n }\r\n\r\n public addCanDeactivate = (guard: CanDeactivateFn<any> | ProviderToken<any> | Array<CanDeactivateFn<any> | ProviderToken<any>>) => {\r\n if(Array.isArray(guard))\r\n this.canDeactivate.push(...guard)\r\n else\r\n this.canDeactivate.push(guard)\r\n \r\n return this\r\n }\r\n\r\n public addGuard = (guard: CanActivateFn | ProviderToken<any> | string | Array<CanActivateFn | ProviderToken<any> | string>) => {\r\n if(Array.isArray(guard))\r\n this.canActivate.push(...guard)\r\n else\r\n this.canActivate.push(guard)\r\n \r\n return this\r\n }\r\n\r\n public toRoute = (): Route => ({\r\n loadComponent: this.loadComponent,\r\n path: this.path,\r\n pathMatch: this.pathMatch,\r\n title: this.title,\r\n redirectTo: this.redirectTo,\r\n canActivate: this.canActivate,\r\n canDeactivate: this.canDeactivate\r\n })\r\n}","import { ActivatedRouteSnapshot, BaseRouteReuseStrategy } from \"@angular/router\"\r\n\r\nexport class RouterReloadStrategy extends BaseRouteReuseStrategy {\r\n override shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot) {\r\n if (future.routeConfig === curr.routeConfig)\r\n return false\r\n\r\n return super.shouldReuseRoute(future, curr)\r\n }\r\n}","import { booleanAttribute, Directive, ElementRef, inject, Input, OnInit } from \"@angular/core\"\r\nimport { fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { ContextMenuItem } from \"../interfaces\"\r\nimport { ContextMenuService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoContextMenu]\",\r\n standalone: false\r\n})\r\nexport class ContextMenuDirective extends Subscriptable implements OnInit{\r\n @Input({ required: true, alias: \"dolfoContextMenu\" }) contextMenu: ContextMenuItem[]\r\n @Input({ transform: booleanAttribute }) openOnClick: boolean\r\n @Input({ transform: booleanAttribute }) useElRef: boolean\r\n @Input() position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" = \"bottom-left\"\r\n private contextMenuService = inject(ContextMenuService)\r\n private elRef = inject(ElementRef<HTMLElement>)\r\n\r\n ngOnInit(){\r\n this.addSubscription(fromEvent<MouseEvent>(this.elRef.nativeElement, this.openOnClick ? \"click\" : \"contextmenu\").subscribe(e => {\r\n e.preventDefault()\r\n\r\n const [left, top] = this.useElRef ? this.getElRefPosition() : [e.clientX, e.clientY]\r\n\r\n this.contextMenuService.openContextMenu({\r\n x: left,\r\n y: top,\r\n items: this.contextMenu,\r\n ref: this.elRef,\r\n position: this.position\r\n })\r\n }))\r\n }\r\n\r\n private getElRefPosition = () => {\r\n const { left, width, top, height } = this.elRef.nativeElement.getBoundingClientRect()\r\n\r\n const diff = left + width\r\n\r\n if(this.position.startsWith(\"bottom-\")){\r\n const posTop = top + height\r\n\r\n if(this.position === \"bottom-left\")\r\n return [left, posTop]\r\n\r\n return [diff, posTop]\r\n }\r\n\r\n if(this.position === \"top-right\")\r\n return [diff, top]\r\n\r\n return [left, top]\r\n }\r\n}\r\n","import { APP_BASE_HREF } from \"@angular/common\"\r\nimport { Directive, ElementRef, inject, Input, SimpleChanges } from \"@angular/core\"\r\nimport { Router } from \"@angular/router\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { StoreService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoNavigate]\",\r\n standalone: false\r\n})\r\nexport class NavigateDirective extends Subscriptable{\r\n @Input({ required: true, alias: \"dolfoNavigate\" }) url: string\r\n private isLink: boolean\r\n private publicUrl = inject(APP_BASE_HREF)\r\n private storeService = inject(StoreService)\r\n private router = inject(Router)\r\n private elementRef = inject(ElementRef<HTMLElement>)\r\n\r\n constructor() {\r\n super()\r\n\r\n this.isLink = this.elementRef.nativeElement.tagName.toLowerCase() === \"a\"\r\n\r\n this.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"click\").subscribe(e => {\r\n if(this.isLink)\r\n e.preventDefault()\r\n \r\n if(this.storeService.isPressingCtrl())\r\n this.openBlank()\r\n else\r\n this.router.navigateByUrl(this.url)\r\n }))\r\n\r\n this.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"mousedown\").pipe(\r\n filter(e => e.button === 1)\r\n ).subscribe(e => {\r\n if(this.isLink)\r\n e.stopPropagation()\r\n else\r\n this.openBlank()\r\n }))\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges<this>){\r\n if((this.isLink || (changes.url && changes.url.currentValue !== this.url)) && !!this.url)\r\n this.elementRef.nativeElement.setAttribute(\"href\", this.url)\r\n }\r\n\r\n private openBlank = () => {\r\n const url = this.elementRef.nativeElement.getAttribute(\"href\") || (this.publicUrl + this.url)\r\n window.open(url, \"_blank\")\r\n }\r\n}","import { Directive, ElementRef, inject, Input, TemplateRef } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { TooltipDirection } from \"../interfaces\"\r\nimport { PopoverService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoPopover]\",\r\n standalone: false\r\n})\r\nexport class PopoverDirective extends Subscriptable{\r\n @Input({ required: true, alias: \"dolfoPopover\" }) content: string | TemplateRef<any>\r\n @Input({ alias: \"dolfoPopoverContext\" }) context: any\r\n @Input() direction: TooltipDirection = \"top\"\r\n private el = inject(ElementRef<HTMLElement>)\r\n private ps = inject(PopoverService)\r\n\r\n ngOnInit(){\r\n this.addSubscription(fromEvent(this.el.nativeElement, \"mousedown\").pipe(\r\n filter(() => !!this.ps.getPopover())\r\n ).subscribe(() => this.ps.hide()))\r\n\r\n this.addSubscription(\r\n fromEvent(this.el.nativeElement, \"click\").pipe(\r\n filter(() => !!this.content)\r\n ).subscribe(() => this.ps.showPopover({\r\n content: this.content,\r\n elementRef: this.el,\r\n direction: this.direction,\r\n context: this.context\r\n }))\r\n )\r\n }\r\n}\r\n","import { Directive, ElementRef, inject } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\n\r\n@Directive({\r\n\tselector: \"[dolfoScrollDrag]\",\r\n standalone: false\r\n})\r\nexport class ScrollDragDirective extends Subscriptable {\r\n\tprivate mouseDownX: number\r\n\tprivate initialScrollX = 0\r\n\tprivate diffX = 0\r\n\tprivate mouseDownY: number\r\n\tprivate initialScrollY = 0\r\n\tprivate diffY = 0\r\n private elementRef = inject(ElementRef<HTMLElement>)\r\n\r\n\tconstructor() {\r\n\t\tsuper()\r\n\r\n\t\tthis.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"mousedown\").pipe(\r\n filter(e => e.button === 0)\r\n ).subscribe(e => {\r\n\t\t\te.preventDefault()\r\n\t\t\te.stopPropagation()\r\n\t\t\tthis.mouseDownX = e.clientX\r\n\t\t\tthis.mouseDownY = e.clientY\r\n\t\t\tthis.initialScrollX = this.elementRef.nativeElement.scrollLeft\r\n\t\t\tthis.initialScrollY = this.elementRef.nativeElement.scrollTop\r\n\t\t\tthis.elementRef.nativeElement.classList.add(\"dragging\")\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent(document, \"mouseup\", { capture: true }).subscribe(() => {\r\n\t\t\tthis.mouseDownX = null\r\n\t\t\tthis.mouseDownY = null\r\n\t\t\tthis.elementRef.nativeElement.classList.remove(\"dragging\")\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent<Event>(this.elementRef.nativeElement, \"click\", { capture: true }).pipe(\r\n\t\t\tfilter(() => this.diffX != 0 || this.diffY != 0)\r\n\t\t).subscribe(e => {\r\n\t\t\te.stopPropagation()\r\n\t\t\tthis.diffX = 0\r\n\t\t\tthis.diffY = 0\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent<MouseEvent>(document, \"mousemove\").pipe(\r\n\t\t\tfilter(() => this.mouseDownX != null || this.mouseDownY != null)\r\n\t\t).subscribe(e => {\r\n\t\t\te.stopPropagation()\r\n\r\n\t\t\tif (this.mouseDownX != null) {\r\n\t\t\t\tthis.diffX = this.initialScrollX + (this.mouseDownX - e.clientX)\r\n\t\t\t\tthis.elementRef.nativeElement.scrollLeft = this.diffX\r\n\t\t\t}\r\n\t\t\tif (this.mouseDownY != null) {\r\n\t\t\t\tthis.diffY = this.initialScrollY + (this.mouseDownY - e.clientY)\r\n\t\t\t\tthis.elementRef.nativeElement.scrollTop = this.diffY\r\n\t\t\t}\r\n\t\t}))\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\"\r\nimport { ContextMenuDirective } from \"./context-menu.directive\"\r\nimport { NavigateDirective } from \"./navigate.directive\"\r\nimport { PopoverDirective } from \"./popover.directive\"\r\nimport { ScrollDragDirective } from \"./scroll-drag.directive\"\r\nimport { TooltipDirective } from \"./tooltip.directive\"\r\n\r\n@NgModule({\r\n declarations: [ContextMenuDirective, ScrollDragDirective, TooltipDirective, PopoverDirective, NavigateDirective],\r\n exports: [ContextMenuDirective, ScrollDragDirective, TooltipDirective, PopoverDirective, NavigateDirective]\r\n})\r\nexport class DirectivesModule{}","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-loader\",\r\n\tstandalone: false,\r\n\ttemplate: `<div class=\"loading\">\r\n\t\t<dolfo-icon name=\"spinner5\"></dolfo-icon>\r\n\t\t{{ langKey | translate }}\r\n\t</div>`,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LoaderComponent {\r\n\t@Input() langKey = \"loading\"\r\n}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { DirectivesModule } from \"../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\"\r\nimport { ButtonComponent } from \"./button.component\"\r\nimport { ContextMenuComponent } from \"./context-menu.component\"\r\nimport { IconWrapperComponent } from \"./icon-wrapper.component\"\r\nimport { IconComponent } from \"./icon.component\"\r\nimport { LoaderComponent } from \"./loader.component\"\r\nimport { NotificationComponent } from \"./notification.component\"\r\nimport { PopoverComponent } from \"./popover.component\"\r\nimport { TooltipComponent } from \"./tooltip.component\"\r\n\r\n@NgModule({\r\n declarations: [ButtonComponent, ContextMenuComponent, IconWrapperComponent, LoaderComponent, NotificationComponent, TooltipComponent, IconComponent, PopoverComponent],\r\n imports: [CommonModule, DirectivesModule, TranslatePipe],\r\n exports: [ButtonComponent, ContextMenuComponent, IconWrapperComponent, LoaderComponent, NotificationComponent, TooltipComponent, IconComponent, PopoverComponent]\r\n})\r\nexport class LayoutModule {}","import { ChangeDetectionStrategy, Component, forwardRef } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-checkbox\",\r\n template: `<div class=\"input-checkbox\">\r\n <input type=\"checkbox\" [name]=\"formControlName\" [formControl]=\"input\" [checked]=\"input.value\" />\r\n @if(label){\r\n <label (click)=\"toggleCheck()\">{{ label }}</label>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputCheckboxComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputCheckboxComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputCheckboxComponent }\r\n ]\r\n})\r\nexport class InputCheckboxComponent extends BaseFormInput<boolean> {\r\n public toggleCheck = () => this.input.setValue(!this.input.value)\r\n}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { ReactiveFormsModule } from \"@angular/forms\"\r\nimport { DirectivesModule } from \"../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\"\r\nimport { LayoutModule } from \"../layout/layout.module\"\r\nimport { AutocompleteComponent } from \"./autocomplete.component\"\r\nimport { ComboboxComponent } from \"./combobox.component\"\r\nimport { DatepickerComponent } from \"./datepicker.component\"\r\nimport { FileSelectComponent } from \"./file-select.component\"\r\nimport { FormComponent } from \"./form.component\"\r\nimport { InputCheckboxComponent } from \"./input-checkbox.component\"\r\nimport { InputContainerComponent } from \"./input-container.component\"\r\nimport { InputRadioComponent } from \"./input-radio.component\"\r\nimport { InputTextComponent } from \"./input-text.component\"\r\n\r\n@NgModule({\r\n declarations: [InputTextComponent, InputContainerComponent, ComboboxComponent, DatepickerComponent, AutocompleteComponent, InputRadioComponent, InputCheckboxComponent, FileSelectComponent, FormComponent],\r\n imports: [CommonModule, ReactiveFormsModule, TranslatePipe, DirectivesModule, LayoutModule],\r\n exports: [ReactiveFormsModule, InputTextComponent, InputContainerComponent, ComboboxComponent, DatepickerComponent, AutocompleteComponent, InputRadioComponent, InputCheckboxComponent, FileSelectComponent, FormComponent]\r\n})\r\nexport class FormModule {}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { ReactiveFormsModule } from \"@angular/forms\"\r\nimport { DirectivesModule } from \"../../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../../shared/pipes/translate.pipe\"\r\nimport { FormModule } from \"../../form/form.module\"\r\nimport { LayoutModule } from \"../layout.module\"\r\nimport { DialogContentComponent } from \"./dialog-content.component\"\r\nimport { DialogFooterComponent } from \"./dialog-footer.component\"\r\nimport { DialogHeaderComponent } from \"./dialog-header.component\"\r\nimport { DialogLayoutComponent } from \"./dialog-layout.component\"\r\nimport { DialogComponent } from \"./dialog.component\"\r\n\r\n@NgModule({\r\n declarations: [DialogComponent, DialogContentComponent, DialogHeaderComponent, DialogFooterComponent, DialogLayoutComponent],\r\n imports: [CommonModule, DirectivesModule, LayoutModule, ReactiveFormsModule, TranslatePipe, FormModule],\r\n exports: [DialogComponent, DialogContentComponent, DialogHeaderComponent, DialogFooterComponent, DialogLayoutComponent]\r\n})\r\nexport class DialogLayoutModule {}\r\n","import { Component, inject, Input } from \"@angular/core\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { BooleanFn, ColumnDataType, GridColumn, GridConfig } from \"../../../shared/interfaces\"\r\nimport { TranslateService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-grid\",\r\n templateUrl: \"./grid.component.html\",\r\n standalone: false\r\n})\r\nexport class GridComponent<T>{\r\n\t@Input({ required: true }) config: GridConfig<T>\r\n private translateService = inject(TranslateService)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n\tpublic resolveField = (item: T, { field, formatter, dataType, onLink }: GridColumn) => {\r\n let value = field\r\n .toString()\r\n .split(\".\")\r\n .reduce((prev, curr) => prev?.[curr as keyof T] as any, item) as string\r\n\r\n if(dataType === ColumnDataType.DATE)\r\n\t\t\tvalue = this.translateService.formatDate(value)\r\n else if(dataType === ColumnDataType.DATETIME)\r\n\t\t\tvalue = this.translateService.formatDateTime(value)\r\n\r\n let retValue = formatter ? formatter(value) : value\r\n\r\n\t\tif(dataType === ColumnDataType.LINK)\r\n\t\t\tretValue = `<a href=\"javascript:void(0)\">${retValue}</a>`\r\n \r\n return this.sanitizer.bypassSecurityTrustHtml(retValue)\r\n }\r\n\r\n\tpublic checkLink = (e: Event, col: GridColumn, item: T, cell: HTMLTableCellElement) => {\r\n\t\tif(col.dataType !== ColumnDataType.LINK || !col.onLink)\r\n\t\t\treturn\r\n\r\n\t\tconst colValue = col.field\r\n .toString()\r\n .split(\".\")\r\n .reduce((prev, curr) => prev?.[curr as keyof T] as any, item),\r\n\t\thtmlTarget = e.target as HTMLElement\r\n\r\n\t\tif(htmlTarget.tagName.toLowerCase() === \"a\")\r\n\t\t\tcol.onLink(colValue)\r\n\t\telse{\r\n\t\t\tconst a = cell.querySelector(\"a[href]\")\r\n\r\n\t\t\tif(a.contains(htmlTarget))\r\n\t\t\t\tcol.onLink(colValue)\r\n\t\t}\r\n\t}\r\n\r\n public isToolbarBtnDisabled = (disabled: boolean | BooleanFn) => {\r\n if(disabled == null)\r\n return false\r\n\r\n return typeof disabled === \"boolean\" ? disabled : disabled()\r\n }\r\n}\r\n","@let loading = config.isLoading$() | async;\r\n\r\n<div class=\"grid-container\" [class.loading]=\"loading\">\r\n @if(loading){\r\n <div class=\"grid-loading\">\r\n <dolfo-icon name=\"spinner2\"></dolfo-icon>\r\n </div>\r\n }\r\n\r\n <table>\r\n @let columns = config.getColumns();\r\n @let showActions = config.hasActions;\r\n @let selection = config.getSelectionConfig();\r\n @let colSpan = columns.length + (showActions ? 1 : 0) + (selection ? 1 : 0);\r\n \r\n <thead>\r\n @if(config.hasToolbar){\r\n <tr class=\"dolfo-grid-toolbar\">\r\n <th [colSpan]=\"colSpan\">\r\n @for(btn of config.getToolbarButtons(); track btn.label){\r\n <dolfo-button color=\"white\" (onClick)=\"btn.onClick()\" [disabled]=\"isToolbarBtnDisabled(btn.disabled)\">\r\n @if(btn.icon){\r\n <dolfo-icon [name]=\"btn.icon\"></dolfo-icon>\r\n }\r\n\r\n {{ btn.label }}\r\n </dolfo-button>\r\n }\r\n </th>\r\n </tr>\r\n }\r\n\r\n <tr>\r\n @if(selection){\r\n <th [style]=\"{ width: 0 }\">\r\n @if(selection.showSelectAll && selection.type === \"multiple\"){\r\n <input type=\"checkbox\" [checked]=\"config.isAllSelected()\" (change)=\"config.toggleSelectAll()\" />\r\n }\r\n </th>\r\n }\r\n\r\n @for(col of columns; track col.label){\r\n <th [ngStyle]=\"{ width: col.width + 'px', maxWidth: col.width + 'px' }\">{{ col.label | translate }}</th>\r\n }\r\n \r\n @if(showActions){\r\n <th>{{ \"grid.actions\" | translate }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n \r\n <tbody>\r\n @let list = config.getList$() | async;\r\n \r\n @if(list.length > 0){\r\n @for(item of list; track config.getUniqueId(item)){\r\n @let itemActions = config.getActions$(item) | async;\r\n @let rowClass = config.getRowClass(item);\r\n \r\n <tr (click)=\"config.getEvents()?.onRowClick?.(item)\" [dolfoContextMenu]=\"itemActions\" position=\"bottom-right\">\r\n @if(selection){\r\n <td [ngClass]=\"rowClass\" class=\"align-center\">\r\n <input type=\"checkbox\" [checked]=\"config.isItemSelected(item)\" (change)=\"config.toggleSelection(item)\" />\r\n </td>\r\n }\r\n\r\n @for(col of columns; track col.label){\r\n <td #cell [ngStyle]=\"{ width: col.width + 'px' }\" [ngClass]=\"rowClass\" [class.align-right]=\"col.align === 'right'\" [class.align-center]=\"col.align === 'center'\" (click)=\"checkLink($event, col, item, cell)\" [innerHTML]=\"resolveField(item, col)\"></td>\r\n }\r\n \r\n @if(showActions){\r\n <td class=\"align-center actions\" [ngClass]=\"rowClass\">\r\n @if(itemActions.length > 0){\r\n <dolfo-button color=\"secondary\" [dolfoTooltip]=\"'grid.showActions' | translate\" [dolfoContextMenu]=\"itemActions\" position=\"bottom-right\" openOnClick>\r\n <dolfo-icon name=\"flickr\"></dolfo-icon>\r\n </dolfo-button>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n }@else {\r\n <tr>\r\n <td [colSpan]=\"colSpan\" class=\"align-center\">{{ \"grid.noResults\" | translate }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</div>","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { DirectivesModule } from \"../../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../../shared/pipes/translate.pipe\"\r\nimport { LayoutModule } from \"../layout.module\"\r\nimport { GridComponent } from \"./grid.component\"\r\n\r\n@NgModule({\r\n declarations: [GridComponent],\r\n imports: [CommonModule, DirectivesModule, LayoutModule, TranslatePipe],\r\n exports: [GridComponent]\r\n})\r\nexport class GridModule{}","import { HttpHandlerFn, HttpRequest } from \"@angular/common/http\"\r\nimport { inject } from \"@angular/core\"\r\nimport { StorageValues } from \"../interfaces\"\r\nimport { TranslateService } from \"../services\"\r\n\r\nexport const authInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n const translateService = inject(TranslateService),\r\n clone = req.clone({\r\n headers: req.headers.set(\"Client-lang\", translateService.getLang().name)\r\n })\r\n\r\n if (!!localStorage.getItem(StorageValues.TOKEN)) {\r\n return next(clone.clone({\r\n headers: clone.headers.set(\"Authorization\", \"Bearer \" + localStorage.getItem(StorageValues.TOKEN))\r\n }))\r\n }\r\n\r\n return next(clone)\r\n}\r\n","import { HttpErrorResponse, HttpHandlerFn, HttpRequest } from \"@angular/common/http\"\r\nimport { inject } from \"@angular/core\"\r\nimport { catchError, throwError } from \"rxjs\"\r\nimport { StorageValues } from \"../interfaces\"\r\nimport { NotificationService, TranslateService } from \"../services\"\r\n\r\nexport const errorInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n const notificationService = inject(NotificationService),\r\n translateService = inject(TranslateService)\r\n\r\n return next(req).pipe(\r\n catchError(err => {\r\n if(err instanceof HttpErrorResponse){\r\n if(err.status === 401)\r\n localStorage.removeItem(StorageValues.TOKEN)\r\n \r\n notificationService.show({\r\n type: \"error\",\r\n title: translateService.translate(\"dialog.errorApi\"),\r\n message: typeof err.error === \"string\" ? err.error : err.message\r\n })\r\n }\r\n\r\n return throwError(() => err)\r\n })\r\n )\r\n}"],"mappings":"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"}
|