@libs-ui/components-list 0.2.51 → 0.2.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +2 -1
- package/esm2022/list.component.mjs +4 -4
- package/esm2022/templates/rows/rows.component.mjs +2 -2
- package/esm2022/templates/templates.component.abstract.mjs +2 -2
- package/esm2022/templates/text/text.component.mjs +2 -2
- package/fesm2022/libs-ui-components-list.mjs +6 -6
- package/fesm2022/libs-ui-components-list.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/list.component.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-list.mjs","sources":["../../../../../libs-ui/components/list/src/highlight-key-search/highlight-key-search.directive.ts","../../../../../libs-ui/components/list/src/pipes/check-selected-by-key.pipe.ts","../../../../../libs-ui/components/list/src/templates/rows/rows.component.ts","../../../../../libs-ui/components/list/src/templates/rows/rows.component.html","../../../../../libs-ui/components/list/src/templates/templates.component.abstract.ts","../../../../../libs-ui/components/list/src/templates/text/text.component.ts","../../../../../libs-ui/components/list/src/templates/text/text.component.html","../../../../../libs-ui/components/list/src/defines/list.define.ts","../../../../../libs-ui/components/list/src/list.component.ts","../../../../../libs-ui/components/list/src/list.component.html","../../../../../libs-ui/components/list/src/interfaces/config-item.interface.ts","../../../../../libs-ui/components/list/src/interfaces/data-emit.interface.ts","../../../../../libs-ui/components/list/src/libs-ui-components-list.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, inject, input } from '@angular/core';\nimport { deleteUnicode } from '@libs-ui/utils';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsListHighlightKeySearchDirective]',\n standalone: true\n})\n\nexport class LibsUiComponentsListHighlightKeySearchDirective implements AfterViewInit {\n readonly isHighlight = input<boolean | undefined>(undefined);\n readonly keySearch = input<string | undefined>(undefined);\n readonly classHighlight = input<string>('libs-ui-list-highlight-text-search');\n\n private elementRef = inject(ElementRef);\n\n ngAfterViewInit() {\n if (!this.elementRef || !this.isHighlight() || !this.keySearch()) {\n return;\n }\n this.handlerHighlight(this.elementRef.nativeElement);\n }\n\n protected handlerHighlight(element: Node) {\n if (!element || element === null) {\n return;\n }\n const children: Node[] = Array.prototype.slice.call(element.childNodes);\n\n if (!children.length) {\n return;\n }\n children.forEach(item => {\n if (item.nodeType === Node.TEXT_NODE) {\n this.checkAndReplace(item);\n\n return;\n }\n if (item.nodeType === Node.ELEMENT_NODE) {\n this.handlerHighlight(item);\n }\n });\n }\n\n protected checkAndReplace(node: Node) {\n let nodeVal = node.nodeValue;\n const parentNode = node.parentNode;\n let textNode = null;\n\n if (!parentNode || !nodeVal) {\n return;\n }\n const textToHighlight = deleteUnicode(this.keySearch()?.trim() || '').toLowerCase();\n let isFirst = true;\n\n while (true) {\n const foundIndex = deleteUnicode(nodeVal).toLowerCase().indexOf(textToHighlight);\n\n if (foundIndex < 0) {\n if (isFirst) {\n break;\n }\n if (nodeVal) {\n textNode = document.createTextNode(nodeVal);\n parentNode.insertBefore(textNode, node);\n }\n parentNode.removeChild(node);\n break;\n }\n isFirst = false;\n const start = nodeVal.substring(0, foundIndex);\n const matched = nodeVal.substring(foundIndex, foundIndex + textToHighlight.length);\n\n if (start) {\n textNode = document.createTextNode(start);\n parentNode.insertBefore(textNode, node);\n }\n const span = document.createElement(\"span\");\n\n if (!span.classList.contains(this.classHighlight())) {\n span.classList.add(this.classHighlight());\n }\n span.appendChild(document.createTextNode(matched));\n parentNode.insertBefore(span, node);\n nodeVal = nodeVal.substring(foundIndex + textToHighlight.length);\n }\n }\n}\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n name: 'LibsUiCheckSelectedByKeyPipe',\n standalone: true\n})\nexport class LibsUiCheckSelectedByKeyPipe implements PipeTransform {\n transform(value: any, multiKeys: Array<any> | undefined, length: number | undefined): boolean {\n if (!multiKeys || !(multiKeys instanceof Array) || !multiKeys.length || !length) {\n return false;\n }\n\n return multiKeys.some(key => key === value);\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AsyncPipe } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, effect, input, output, signal, untracked, WritableSignal } from \"@angular/core\";\nimport { LibsUiComponentsAvatarComponent } from \"@libs-ui/components-avatar\";\nimport { LibsUiComponentsBadgeComponent } from \"@libs-ui/components-badge\";\nimport { LibsUiComponentsButtonsButtonComponent } from \"@libs-ui/components-buttons-button\";\nimport { LibsUiComponentsLabelComponent } from \"@libs-ui/components-label\";\nimport { IFlagMouse, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from \"@libs-ui/components-popover\";\nimport { LibsUiPipesCallFunctionInTemplatePipe } from \"@libs-ui/pipes-call-function-in-template\";\nimport { convertObjectToSignal, isEmpty } from \"@libs-ui/utils\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { lastValueFrom, Observable } from \"rxjs\";\nimport { IEmitRowsEvent, IListViewConfigItemCheckbox, IListViewConfigItemText, IListViewConfigItemTextRowSignal } from \"../../interfaces\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"libs_ui-components-list-templates_rows\",\n templateUrl: \"./rows.component.html\",\n styleUrls: [\"./rows.component.scss\"],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe, TranslateModule,\n LibsUiComponentsAvatarComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsBadgeComponent,\n LibsUiPipesCallFunctionInTemplatePipe\n ],\n})\nexport class LibsUiComponentsListRowsComponent {\n /* PROPERTY */\n protected popoverIcon = signal<string>(`<i class='libs-ui-icon-tooltip-outline text-[16px] ml-[8px]'></i>`);\n protected configItemTextRows = signal<Array<WritableSignal<IListViewConfigItemTextRowSignal>>>([]);\n\n /* INPUT */\n readonly configTemplate = input.required<IListViewConfigItemText | IListViewConfigItemCheckbox>();\n readonly item = input<any>();\n readonly keySelected = input<unknown>();\n readonly fieldKey = input<string>('id');\n readonly zIndex = input<number, number>(1200, { transform: (value) => !isEmpty(value) ? (value + 1) : 1200 });\n\n readonly outChangStageFlagMousePopover = output<IFlagMouse>();\n readonly outEvent = output<IEmitRowsEvent>();\n\n constructor() {\n effect(() => {\n untracked(() => this.afterViewInit());\n });\n }\n\n afterViewInit() {\n if (!this.configTemplate().rows?.length) {\n return;\n }\n\n this.configItemTextRows.set((convertObjectToSignal(this.configTemplate().rows) as WritableSignal<Array<WritableSignal<IListViewConfigItemTextRowSignal>>>)());\n }\n\n /* FUNCTIONS */\n protected handlerSelectItem(event: TYPE_POPOVER_EVENT, item: any, action: any) {\n if (event !== 'click') {\n return;\n }\n\n this.outEvent.emit({ event, item, action });\n }\n\n protected async handlerErrorImage(event: Event, functionGetImageError?: (item: any) => Observable<string>) {\n event.stopPropagation();\n\n if (!event.target || !functionGetImageError) {\n return;\n }\n\n ((event.target as any).src = await lastValueFrom(functionGetImageError(this.item())));\n }\n\n protected handlerChangStageFlagMouse(flag: IFlagMouse) {\n this.outChangStageFlagMousePopover.emit(flag);\n }\n}\n","@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track $index; let indexRow = $index;) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && ((item() | LibsUiPipesCallFunctionInTemplatePipe:row().getImage:item()) | async); as imgUrl) {\n <img [class]=\"(item() | LibsUiPipesCallFunctionInTemplatePipe:row().getClassImage:item()) | async\"\n src=\"{{ imgUrl }}\"\n (error)=\"handlerErrorImage($event,row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig'+indexRow]; as avatarConfig) {\n <libs_ui-components-avatar [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]='avatarConfig.size || 32'\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow'+indexRow]; as labelRow) {\n <libs_ui-components-popover type=\"text\"\n [config]=\"row().getPopoverConfig ? (('popover' | LibsUiPipesCallFunctionInTemplatePipe:row().getPopoverConfig:item()) | async) : { zIndex: zIndex()}\"\n [classInclude]=\"(keySelected() === item()[fieldKey()]) ? (row().classItemSelected || row().classGetValue || '') :(row().classGetValue || '')\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)='handlerChangStageFlagMouse($event)'\n (outEvent)=\"handlerSelectItem($event,item(),row().action)\" />\n }\n @if (row().cols?.()?.length) {\n <div [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols'+indexRow]]\">\n @for (col of row().cols?.(); track $index; let colIndex = $index) {\n @if (col().getImage && ((item() | LibsUiPipesCallFunctionInTemplatePipe:col().getImage:item()) | async); as imgUrl) {\n <img [class]=\"(item() | LibsUiPipesCallFunctionInTemplatePipe:col().getClassImage:item()) | async\"\n src=\"{{ imgUrl }}\"\n (error)=\"handlerErrorImage($event,col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig'+indexRow+colIndex]; as avatarConfig) {\n <libs_ui-components-avatar [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]='avatarConfig.size || 32'\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol'+indexRow+colIndex]; as labelColFunc) {\n <libs_ui-components-popover type=\"text\"\n [style]=\"(' ' | LibsUiPipesCallFunctionInTemplatePipe:item()['fieldColStylesDynamic'+indexRow+colIndex]:item()) | async\"\n [classInclude]=\"(keySelected() === item()[fieldKey()]) ? (row().classItemSelected || col().classCol || '') :(col().classCol || '')\"\n [innerHtml]=\"('fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe:labelColFunc:item()) | async\"\n [config]=\"{ zIndex: zIndex() }\"\n (outChangStageFlagMouse)='handlerChangStageFlagMouse($event)'\n (outEvent)=\"handlerSelectItem($event,item(),col().action)\" />\n }\n @if (item()['fieldColPopover'+indexRow+colIndex]; as popover) {\n <libs_ui-components-popover [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config\"\n [classInclude]=\"col().classCol\"\n [style]=\"(' ' | LibsUiPipesCallFunctionInTemplatePipe:item()['fieldColStylesDynamic'+indexRow+colIndex]:item()) | async\"\n (outChangStageFlagMouse)='handlerChangStageFlagMouse($event)'\n (outEvent)=\"handlerSelectItem($event,item(),col().action)\">\n <span [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"(popover.dataView ?? popoverIcon) | translate\">\n </span>\n </libs_ui-components-popover>\n }\n @if (item()['fieldColToggle'+indexRow+colIndex]; as toggle) {\n <libs_ui-components-label [style]=\"(' ' | LibsUiPipesCallFunctionInTemplatePipe:item()['fieldColStylesDynamic'+indexRow+colIndex]:item()) | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click',item(),col().action)\" />\n }\n @if (item()['fieldColButton'+indexRow+colIndex]; as button) {\n <libs_ui-components-buttons-button [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"col().classCol ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click',item(),col().action)\" />\n }\n @if (item()['fieldBadge'+indexRow+colIndex]; as badge) {\n <libs_ui-components-badge [mode]=\"badge.mode || 'x+'\"\n [style]=\"(' ' | LibsUiPipesCallFunctionInTemplatePipe:item()['fieldColStylesDynamic'+indexRow+colIndex]:item()) | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\nimport { Directive, ElementRef, inject, input, model, OnDestroy, output, signal, TemplateRef, viewChild, WritableSignal } from \"@angular/core\";\nimport { ISort } from \"@libs-ui/components-buttons-sort\";\nimport { IInputSearchConfig } from \"@libs-ui/components-inputs-search\";\nimport { IFlagMouse } from \"@libs-ui/components-popover\";\nimport { IPaging, TYPE_TEMPLATE_REF } from \"@libs-ui/interfaces-types\";\nimport { LibsUiHttpRequestService } from \"@libs-ui/services-http-request\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { interval, lastValueFrom, Subject, Subscription } from 'rxjs';\nimport { skipWhile, take, takeUntil } from 'rxjs/operators';\nimport { getFieldKeyByType } from \"../defines/list.define\";\nimport { IListDataEmitKey, IListDataEmitMultiKey } from \"../interfaces\";\nimport { IListViewConfigItem, IListViewConfigItemCheckbox, IListViewConfigItemRadio, IListViewConfigItemText } from \"../interfaces/config-item.interface\";\nimport { cloneDeep, convertObjectToSignal } from \"@libs-ui/utils\";\n\n@Directive()\nexport abstract class LibsUiComponentsListTemplatesComponentAbstract implements OnDestroy {\n /* PROPERTY */\n protected loading = signal<boolean>(true);\n protected heightViewPort = signal<number>(0);\n protected store = signal<Array<WritableSignal<any>>>([]);\n protected items = signal<Array<WritableSignal<any>>>([]);\n protected loadedLastItem = signal<boolean>(false);\n protected hasScroll = signal<boolean>(false);\n protected fieldKeyDefault = signal<string>('id');\n protected fieldKey = signal<string>('id');\n protected timeAutoScrollItemSelected = signal<number>(0);\n protected pagingStore = signal<IPaging | undefined>(undefined);\n protected heightItem = signal<number>(0);\n protected timeIntervalIntervalSetHeightViewPort = signal<number>(0);\n protected timeIntervalCheckScroll = signal<number>(250);\n\n protected onDestroy: Subject<void> = new Subject();\n protected intervalSetHeightViewPortSubscription!: Subscription;\n protected intervalCheckScrollSubscription!: Subscription;\n\n /* INPUT */\n readonly functionCustomAddDataToStore = input<(data: any, store: any) => void>();\n readonly functionGetItemsAutoAddList = input<(() => Array<any>) | undefined>();\n readonly paddingLeftItem = input<boolean | undefined>(undefined);\n readonly maxItemShow = input<number>(0);\n readonly searchConfig = input<IInputSearchConfig>();\n readonly config = input<IListViewConfigItem>();\n readonly keySearch = model<string>('');\n readonly dropdownTabKeyActive = input<string | undefined>();\n readonly isSearchOnline = input<boolean>(false);\n\n readonly onSearch = input<Subject<string>>();\n readonly onRefresh = input<Subject<void>>();\n readonly onSetHiddenItemByKey = input<Subject<Array<unknown>>>();\n readonly onRemoveItems = input<Subject<Array<unknown>>>();\n readonly onSetDataStore = input<Subject<Array<any>>>();\n readonly onUpdateMultiKeySelectedGroup = input<Subject<void>>();\n readonly onItemChangeUnSelect = input<Subject<any>>();\n readonly clickExactly = input<boolean>();\n readonly keySelected = model<unknown>(); // sử dụng cho type radio,text.\n readonly multiKeySelected = model<Array<unknown> | undefined>(); // sử dụng cho type cho phép chọn nhiều.\n readonly keysDisableItem = input<Array<unknown> | undefined>();\n readonly keysHiddenItem = model<Array<unknown> | undefined>();\n readonly disable = input<boolean | undefined>();\n readonly disableLabel = input<boolean | undefined>();\n readonly zIndex = input<number>(1200);\n readonly loadingIconSize = input<'large' | 'medium' | 'small' | 'smaller' | undefined>();\n readonly resetKeyWhenSelectAllKeyDropdown = input<boolean | undefined>();\n readonly ignoreClassDisableDefaultWhenUseKeysDisableItem = input<boolean | undefined>(); // bỏ chế độ disable item trên html để disable từng phần trong rows\n readonly templateRefSearchNoData = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>(undefined);\n\n /* OUTPUT */\n readonly outSortSingleSelect = output<ISort>();\n readonly outSelectKey = output<IListDataEmitKey | undefined>(); // sử dụng cho type radio,text.\n readonly outSelectMultiKey = output<IListDataEmitMultiKey>(); // sử dụng cho type cho phép chọn nhiều.\n readonly outUnSelectMultiKey = output<Array<unknown>>(); // sử dụng cho type cho phép chọn nhiều.\n readonly outFieldKey = output<unknown>();\n readonly outChangeView = output<Array<any>>();\n readonly outLoading = output<boolean>();\n readonly outChangStageFlagMousePopover = output<IFlagMouse>();\n readonly outLoadItemsComplete = output<{ items: Array<any>, paging?: IPaging }>();\n\n /* VIEW CHILD */\n protected itemRef = viewChild<ElementRef>('itemRef');\n\n /* INJECT */\n protected translateService = inject(TranslateService);\n protected httpRequestService = inject(LibsUiHttpRequestService);\n\n constructor() {\n this.outLoading.emit(this.loading());\n }\n\n ngOnInit(): void {\n this.onSearch()?.pipe(takeUntil(this.onDestroy)).subscribe((keySearch: string) => {\n this.keySearch.set(keySearch);\n this.processSearch();\n });\n this.onRefresh()?.pipe(skipWhile(() => this.loading()), takeUntil(this.onDestroy)).subscribe(() => {\n if (this.dropdownTabKeyActive()) {\n this.items.set([]);\n this.store.set([]);\n }\n this.callApiByService(true);\n });\n this.onItemChangeUnSelect()?.pipe(takeUntil(this.onDestroy)).subscribe((item: any) => {\n if (!item) {\n return;\n }\n this.processKeyChangeUnSelect(item);\n });\n // this.onSetDataStore()?.pipe(takeUntil(this.onDestroy)).subscribe((data) => {\n // this.setDataStore(data)\n // });\n this.onSetHiddenItemByKey()?.pipe(takeUntil(this.onDestroy)).subscribe(this.setHiddenItemByKey.bind(this));\n this.outFieldKey.emit(getFieldKeyByType(this.config(), this.fieldKeyDefault()));\n this.onRemoveItems()?.pipe(takeUntil(this.onDestroy)).subscribe(this.removeItems.bind(this));\n }\n\n /* FUNCTIONS */\n // protected setDataStore(data: Array<any>) {\n // if (!data || !data.length) {\n // return;\n // }\n // if (this.config()?.type === 'checkbox') {\n // data.forEach(item => (item.isAddNew = true));\n // }\n // this.functionCustomAddDataToStore()?.(data, this.store());\n\n // if (!this.functionCustomAddDataToStore()) {\n // this.store.update(items => {\n // return [...convertObjectToSignal(data), ...items];\n // });\n // }\n // this.processData();\n // }\n\n private getFieldKey() {\n let fieldKey: string | undefined;\n\n switch (this.config()?.type) {\n case 'group':\n fieldKey = this.config()?.configTemplateGroup?.fieldKey;\n break;\n\n case 'tag':\n fieldKey = this.config()?.configTemplateTag?.fieldKey;\n break;\n\n case 'text':\n fieldKey = this.config()?.configTemplateText?.fieldKey;\n break;\n\n case 'checkbox':\n fieldKey = this.config()?.configTemplateCheckbox?.fieldKey;\n break;\n\n case 'radio':\n fieldKey = this.config()?.configTemplateRadio?.fieldKey;\n break;\n }\n\n return fieldKey || 'id';\n }\n\n private removeItems(keys: Array<unknown>) {\n const fieldKey = this.getFieldKey();\n\n [this.store(), this.items()].forEach(element => {\n if (this.config()?.type === 'group') {\n element.forEach(item => {\n this.removeItem(item()[this.config()?.configTemplateGroup?.fieldGetItems || 'items'](), keys, fieldKey);\n });\n\n return;\n }\n this.removeItem(element, keys, fieldKey);\n });\n this.processData();\n }\n\n private removeItem(data: Array<WritableSignal<any>>, keys: Array<unknown>, fieldKey: string) {\n if (!data || !data.length) {\n return;\n }\n keys.forEach(key => {\n const index = data.findIndex(item => item()[fieldKey] === key);\n\n if (index > -1) {\n data.splice(index, 1);\n }\n });\n }\n\n protected setHeightViewPort(callBackCalculatorHeightSuccess?: () => void) {\n const lengthItems = this.getLengthItem();\n\n if (!lengthItems) {\n this.outChangeView.emit([...this.items()]);\n if (this.heightItem()) {\n this.heightViewPort.set(this.heightItem());\n }\n callBackCalculatorHeightSuccess?.();\n\n return;\n }\n const heightViewPort = this.getHeightGroupHasLine() + (lengthItems < this.maxItemShow() ? lengthItems * this.heightItem() : this.maxItemShow() * this.heightItem()) + (this.config()?.configTemplateGroup?.configCheckboxCheckAll ? 27 : 0) + (this.config()?.configTemplateGroup?.configButtonSelectAndUndSelectItem ? 27 : 0);\n\n if (!this.maxItemShow()) {\n this.heightViewPort.set(0);\n }\n if (this.heightItem() > 13) {\n if (heightViewPort && heightViewPort !== this.heightViewPort()) {\n this.heightViewPort.set(heightViewPort);\n }\n this.outChangeView.emit([...this.items()]);\n callBackCalculatorHeightSuccess?.();\n\n return;\n }\n this.intervalSetHeightViewPortSubscription?.unsubscribe();\n this.intervalSetHeightViewPortSubscription = interval(this.timeIntervalIntervalSetHeightViewPort()).pipe(takeUntil(this.onDestroy)).subscribe(() => {\n if (!this.itemRef() || !this.itemRef()?.nativeElement) {\n return;\n }\n this.heightItem.set(this.itemRef()?.nativeElement.getBoundingClientRect().height);\n\n if (this.heightItem() < 13) {\n return;\n }\n this.intervalSetHeightViewPortSubscription?.unsubscribe();\n this.setHeightViewPort(callBackCalculatorHeightSuccess);\n });\n }\n\n protected setHiddenItemByKey(keys: Array<unknown>) {\n this.keysHiddenItem.set(keys);\n if (this.store() && this.store().length) {\n this.processData(false);\n }\n }\n\n protected checkViewPortScroll(callBack?: (pre: boolean, current: boolean) => void) {\n const pre = this.hasScroll();\n\n this.intervalCheckScrollSubscription?.unsubscribe();\n this.intervalCheckScrollSubscription = interval(this.timeIntervalCheckScroll()).pipe(take(5)).subscribe(() => {\n this.hasScroll.set(false);\n if (this.items() && !this.items().length && pre && !this.hasScroll()) {\n callBack?.(pre, this.hasScroll());\n this.intervalCheckScrollSubscription?.unsubscribe();\n }\n callBack?.(pre, this.hasScroll());\n this.intervalCheckScrollSubscription?.unsubscribe();\n });\n }\n\n protected async callApiByService(firstCall = true) {\n const config = this.config();\n\n if (!config) {\n return;\n }\n try {\n const { httpRequestData, ignoreShowDataWhenNotSearch } = config;\n\n if (!httpRequestData || (ignoreShowDataWhenNotSearch && !this.keySearch())) {\n this.loading.set(false);\n this.outLoading.emit(this.loading());\n this.loadedLastItem.set(true);\n if (ignoreShowDataWhenNotSearch && !this.keySearch()) {\n this.items.set([]);\n this.store.set([]);\n this.processData(true);\n }\n\n return;\n }\n this.loading.set(true);\n this.outLoading.emit(this.loading());\n const { argumentsValue, guideAutoUpdateArgumentsValue } = httpRequestData;\n\n if (firstCall) {\n const loadedLastItem = this.httpRequestService.updateArguments(argumentsValue, { ...this.fakeResponseApi(), dropdownTabKeyActive: this.dropdownTabKeyActive() }, this.pagingStore() || {}, this.keySearch(), this.isSearchOnline(), this.loadedLastItem(), guideAutoUpdateArgumentsValue);\n this.loadedLastItem.set(loadedLastItem);\n }\n const result = await this.httpRequestService.callApi(httpRequestData);\n\n this.pagingStore.set(result.paging);\n if (!this.pagingStore) {\n this.loadedLastItem.set(true);\n }\n const loadedLastItem = this.httpRequestService.updateArguments(argumentsValue, { ...result, dropdownTabKeyActive: this.dropdownTabKeyActive() }, this.pagingStore() || {}, this.keySearch(), this.isSearchOnline(), this.loadedLastItem(), guideAutoUpdateArgumentsValue);\n\n this.loadedLastItem.set(loadedLastItem);\n\n if (firstCall) {\n this.store.set(convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(result.data || [])());\n\n if (this.functionGetItemsAutoAddList()) {\n const newItems = convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(this.functionGetItemsAutoAddList()?.() || []);\n\n this.store.update(items => [...newItems(), ...items]);\n }\n this.processData(true);\n\n return;\n }\n this.store.update(items => [...items, ...convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(result.data || [])()]);\n this.processData(false);\n } catch (error) {\n this.loading.set(false);\n this.outLoading.emit(this.loading());\n console.log(error);\n }\n }\n\n protected fakeResponseApi(): Record<string, any> {\n this.loadedLastItem.set(false);\n this.pagingStore.set({});\n\n return this.httpRequestService.fakeResponsePagingApi();\n }\n\n protected buildValueByConfig(item: WritableSignal<any>, configTemplate?: IListViewConfigItemText | IListViewConfigItemRadio | IListViewConfigItemCheckbox): string {\n const ref = item().ref || {};\n const label: unknown = ref.label || ref.title || ref.value || ref.name || ' ';\n\n if (typeof label === 'string') {\n item.update(currentItem => {\n return { ...currentItem, fieldLabel: this.translateService.instant(ref.label || ref.title || ref.value || ref.name || ' ') };\n });\n }\n\n if (configTemplate?.getValue) {\n const value = configTemplate.getValue(ref);\n\n item.update(currentItem => {\n return { ...currentItem, fieldLabel: value ? this.translateService.instant(`${value}`) : '' };\n });\n }\n if (configTemplate?.getPopover) {\n item.update(currentItem => {\n return { ...currentItem, popoverLabel: configTemplate?.getPopover?.(item()) };\n });\n }\n\n if (!configTemplate?.rows) {\n return item().fieldLabel;\n }\n let textSearch = item().fieldLabel || '';\n\n configTemplate.rows.forEach((row, indexRow) => {\n const fieldNameRow = `fieldLabelRow${indexRow}`;\n\n const currentItem = cloneDeep(item());\n const newItem = { ...currentItem };\n newItem[fieldNameRow] = row.getValue && row.getValue(ref);\n newItem[`fieldRowStylesDynamicCols${indexRow}`] = row.getRowStylesDynamicCols && row.getRowStylesDynamicCols(ref);\n newItem[`fieldRowAvatarConfig${indexRow}`] = row.getAvatarConfig && row.getAvatarConfig(ref);\n if (row.cols && row.cols.length) {\n row.cols.forEach(async (col, indexCol) => {\n const fieldNameCol = `fieldLabelCol${indexRow}${indexCol}`;\n\n newItem[fieldNameCol] = col.getValue;\n newItem[`fieldColPopover${indexRow}${indexCol}`] = col.getPopover && col.getPopover(ref, indexCol);\n newItem[`fieldBadge${indexRow}${indexCol}`] = col.getConfigBadge && col.getConfigBadge(ref, indexCol);\n newItem[`fieldColStylesDynamic${indexRow}${indexCol}`] = col.getStylesDynamicCol;\n newItem[`fieldColButton${indexRow}${indexCol}`] = col.getButton && col.getButton(ref, indexCol);\n newItem[`fieldColSwitch${indexRow}${indexCol}`] = col.getLabelSwitch && col.getLabelSwitch(ref, indexCol);\n newItem[`fieldColAvatarConfig${indexRow}${indexCol}`] = col.getAvatarConfig && col.getAvatarConfig(ref);\n\n textSearch = ` ${textSearch} ${newItem[fieldNameCol] || ''} `;\n });\n }\n\n item.update(() => newItem);\n textSearch = ` ${textSearch} ${item()[fieldNameRow] || ''} `;\n });\n\n return textSearch || ' ';\n }\n\n protected handlerChangStageFlagMouse(flag: IFlagMouse) {\n this.outChangStageFlagMousePopover.emit(flag);\n }\n\n protected abstract processData(isReplace?: boolean): any;\n protected abstract processSearch(): any;\n protected abstract getLengthItem(): number;\n protected getHeightGroupHasLine(): number {\n return 0;\n }\n protected abstract processKeyChangeUnSelect(item: any): void;\n\n ngOnDestroy() {\n clearTimeout(this.timeAutoScrollItemSelected());\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, signal, viewChild, WritableSignal } from '@angular/core';\nimport { VirtualScrollerComponent, VirtualScrollerModule } from '@iharbeck/ngx-virtual-scroller';\nimport { LibsUiComponentsAvatarComponent } from '@libs-ui/components-avatar';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { ISort, LibsUiComponentsButtonsSortArrowComponent } from '@libs-ui/components-buttons-sort';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\nimport { LibsUiComponentsSwitchComponent } from '@libs-ui/components-switch';\nimport { cloneDeep, convertObjectToSignal, deleteUnicode, escapeHtml, isEmpty, isNil } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LibsUiComponentsListHighlightKeySearchDirective } from '../../highlight-key-search/highlight-key-search.directive';\nimport { LibsUiCheckSelectedByKeyPipe } from '../../pipes/check-selected-by-key.pipe';\nimport { LibsUiComponentsListRowsComponent } from '../rows/rows.component';\nimport { LibsUiComponentsListTemplatesComponentAbstract } from '../templates.component.abstract';\nimport { IListViewConfigItemText } from './../../interfaces/config-item.interface';\nimport { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-list-templates_text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n VirtualScrollerModule, NgTemplateOutlet, TranslateModule, NgClass, AsyncPipe,\n LibsUiComponentsSpinnerComponent,\n LibsUiComponentsAvatarComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiCheckSelectedByKeyPipe,\n LibsUiComponentsSwitchComponent,\n LibsUiComponentsButtonsSortArrowComponent,\n LibsUiComponentsListHighlightKeySearchDirective,\n LibsUiComponentsListRowsComponent,\n LibsUiPipesCallFunctionInTemplatePipe\n ]\n})\nexport class LibsUiComponentsListTextComponent extends LibsUiComponentsListTemplatesComponentAbstract implements OnInit {\n /* PROPERTY */\n protected configTemplateText = signal<IListViewConfigItemText | undefined>(undefined);\n\n /* VIEW CHILD */\n private readonly virtualScrollerComponent = viewChild<VirtualScrollerComponent>(VirtualScrollerComponent);\n\n override ngOnInit(): void {\n if (isEmpty(this.config()?.configTemplateText)) {\n return;\n }\n super.ngOnInit();\n\n this.configTemplateText.set(this.config()?.configTemplateText);\n this.fieldKey.set(this.configTemplateText()?.fieldKey ?? this.fieldKeyDefault());\n this.callApiByService();\n }\n\n /* FUNCTIONS */\n protected handlerScrollBottom() {\n if (this.loadedLastItem()) {\n this.loading.set(false);\n this.outLoading.emit(this.loading());\n\n return;\n }\n if (this.loading() || this.loadedLastItem()) {\n return;\n }\n this.loading.set(true);\n this.outLoading.emit(this.loading());\n this.callApiByService(false);\n }\n\n protected processSearch() {\n if (!this.isSearchOnline()) {\n return this.processData(true);\n }\n this.callApiByService(true);\n }\n\n protected handlerClickRelative(e: Event, item: any) {\n e.stopPropagation();\n if (this.clickExactly()) {\n return;\n }\n this.handlerSelectItem(e, item);\n }\n\n protected processKeyChangeUnSelect(item: any): void {\n if (isNil(item[this.fieldKey()]) || item[this.fieldKey()] === '' || this.keySelected() !== item[this.fieldKey()]) {\n return;\n }\n this.keySelected.set('');\n this.outSelectKey.emit(undefined);\n }\n\n protected handlerSelectItem(e: Event | string, item: any, action?: (item: any) => void, ignoreDisable = false) {\n if (e instanceof Event) {\n e.stopPropagation();\n e.preventDefault();\n }\n if (item.disable) {\n return;\n }\n if (this.disable() && !ignoreDisable) {\n return;\n }\n if (typeof e === 'string' && e !== 'click') {\n return;\n }\n if (!item || (this.keysDisableItem() && this.keysDisableItem()?.some(key => key === item[this.fieldKey()]))) {\n return;\n }\n if (action) {\n action(item.ref);\n this.items().forEach(item => {\n this.buildValueByConfig(item, this.configTemplateText());\n });\n\n return;\n }\n if (this.configTemplateText()?.actionSort) {\n const currentItemSort = this.configTemplateText()?.itemSort;\n const mode = currentItemSort?.fieldSort !== item[this.fieldKey()] ? 'asc' : currentItemSort?.mode === 'desc' ? 'asc' : 'desc';\n const newSort: ISort = {\n fieldSort: item[this.fieldKey()],\n mode,\n modeNumber: mode === 'asc' ? 1 : 2,\n reset: () => 0\n };\n\n this.configTemplateText.update(item => {\n if (!item) {\n return;\n }\n return { ...item, itemSort: newSort }\n });\n\n this.outSortSingleSelect.emit(this.configTemplateText()?.itemSort || newSort);\n }\n\n this.keySelected.set(item[this.fieldKey()]);\n this.outSelectKey.emit({ key: this.keySelected(), item, isClickManual: true });\n }\n\n protected handlerSort(itemSort: ISort) {\n itemSort.reset = () => 0;\n\n this.configTemplateText.update(item => {\n if (!item) {\n return;\n }\n return { ...item, itemSort: itemSort }\n });\n this.outSortSingleSelect.emit(this.configTemplateText()?.itemSort || itemSort);\n }\n\n protected processData(replace?: boolean): void {\n const itemByKeySearch: Array<WritableSignal<any>> = [];\n const keysHidden = this.keysHiddenItem() || [];\n\n if (replace) {\n this.items.set([])\n }\n this.store().forEach((item) => {\n const dataStore = cloneDeep(item) as WritableSignal<any>;\n const key = keysHidden.find(key => dataStore()[this.fieldKey()] === key);\n dataStore.update(store => { return { ...store, ref: item() } });\n\n if (key === undefined) {\n const text = deleteUnicode(this.buildValueByConfig(dataStore, this.configTemplateText())).toLocaleLowerCase();\n\n // console.log(text, dataStore());\n\n const textEscape = escapeHtml(text);\n const keySearch = deleteUnicode(escapeHtml(this.keySearch().toLocaleLowerCase()));\n\n if (((this.isSearchOnline() && this.config()?.httpRequestData?.serviceName && !this.config()?.httpRequestData?.serviceOther) ||\n (text && (text.includes(keySearch) || textEscape.includes(keySearch)))) && (replace || (!replace && !this.items().find(dataItem => dataItem()[this.fieldKey()] === dataStore()[this.fieldKey()]))) && !itemByKeySearch.find(dataItem => dataItem()[this.fieldKey()] === dataStore()[this.fieldKey()])) {\n dataStore.update(store => {\n return {\n ...store,\n hrefButton: this.configTemplateText()?.getHrefButton?.(store),\n classItem: item().classItem || this.configTemplateText()?.getClassItem?.(store),\n classInclude: store.classInclude || this.configTemplateText()?.getClassIncludePopover?.(store),\n buttonLeftConfig: this.configTemplateText()?.getConfigButtonLeft?.(store),\n classIconLeft: store.classIconLeft || this.configTemplateText()?.getClassIconLeft?.(store),\n hoverDanger: store.hoverDanger || this.configTemplateText()?.getConfigHoverDanger?.(store),\n avatarConfig: this.configTemplateText()?.getAvatarConfig?.(store),\n itemAlignStart: store.itemAlignStart || this.configTemplateText()?.getConfigAlignStart?.(store),\n }\n });\n itemByKeySearch.push(dataStore);\n }\n\n return;\n }\n const indexItemRemove = this.items().findIndex(item => item()[this.fieldKey()] === key);\n\n if (indexItemRemove > -1) {\n this.items.update(items => {\n items.splice(indexItemRemove, 1);\n\n return items;\n });\n }\n });\n const checkLoadItem = (preStateHasScroll: boolean, currentHasScroll: boolean) => {\n if (this.keysHiddenItem()?.length && preStateHasScroll && !currentHasScroll && (this.isSearchOnline())) {\n this.callApiByService(false);\n }\n };\n\n if (replace) {\n const items = convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(itemByKeySearch)();\n this.items.set(items);\n this.config()?.sort?.(this.items());\n this.emitKeySelectedDefaultIfExistItem(this.items());\n this.autoSelectFirstItem(this.items());\n this.setHeightViewPort();\n this.loading.set(false);\n this.checkViewPortScroll(checkLoadItem);\n this.scrollToItemSelected();\n this.outLoading.emit(this.loading());\n this.outLoadItemsComplete.emit({ items: this.items(), paging: this.pagingStore() });\n return;\n }\n const itemsBySearch = convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(itemByKeySearch)();\n this.items.update(items => [...items, ...itemsBySearch]);\n this.config()?.sort?.(this.items());\n this.setHeightViewPort();\n this.loading.set(false);\n this.checkViewPortScroll(checkLoadItem);\n this.scrollToItemSelected();\n this.outLoading.emit(this.loading());\n this.outLoadItemsComplete.emit({ items: this.items(), paging: this.pagingStore() });\n }\n\n private scrollToItemSelected() {\n if (!this.configTemplateText()?.autoScrollToItemSelected) {\n return;\n }\n\n clearTimeout(this.timeAutoScrollItemSelected());\n this.timeAutoScrollItemSelected.set((setTimeout(() => {\n if (!this.keySelected()) {\n return;\n }\n const index = this.items().findIndex(item => item()[this.fieldKey()] === this.keySelected);\n\n if (index !== -1) {\n this.virtualScrollerComponent()?.scrollToIndex(index);\n }\n }) as unknown) as number);\n }\n\n protected autoSelectFirstItem(items: Array<WritableSignal<any>>) {\n if (this.keySelected() || !this.config()?.autoSelectFirstItem || !items || !items.length) {\n return;\n }\n this.handlerSelectItem('click', items[0](), undefined, true);\n }\n\n protected emitKeySelectedDefaultIfExistItem(items: Array<WritableSignal<any>>) {\n const item = items.find(store => store()[this.fieldKey()] === this.keySelected());\n\n if (item) {\n this.handlerSelectItem('click', item(), undefined, true);\n }\n }\n\n protected getLengthItem(): number {\n return this.items().length;\n }\n\n protected handlerImageError(event: Event, item: any) {\n event.stopPropagation();\n item.specific_loadImgError = true;\n }\n}\n","@if (configTemplateText(); as configTemplateText) {\n <div class=\"relative h-full w-full\">\n @if (items() && items().length) {\n <div #elementScroll\n [style.height]=\"!configTemplateText.notUseVirtualScroll && heightViewPort() && (!config()?.ignoreShowDataWhenNotSearch || (config()?.ignoreShowDataWhenNotSearch && config()?.ignoreFixHeightShowDataWhenNotSearch)) ? heightViewPort()+'px':'100%'\"\n class=\"w-full\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n @if (!configTemplateText.notUseVirtualScroll) {\n <virtual-scroller #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n <ng-container *ngTemplateOutlet='listRef;context:{itemsView:scroll.viewPortItems}' />\n </virtual-scroller>\n }\n @if (configTemplateText.notUseVirtualScroll) {\n <ng-container *ngTemplateOutlet='listRef;context:{itemsView:items()}' />\n }\n </div>\n }\n @if ((!items() || !items().length) && (!config()?.ignoreShowDataWhenNotSearch || keySearch())) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[6px] px-[16px]')\">\n @if (!keySearch() && !loading()) {\n {{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\"></ng-container>\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n {{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}\n }\n @if (loading()) {\n \n }\n </div>\n }\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"loadingIconSize() || 'medium'\" />\n }\n </div>\n <ng-template #listRef\n let-itemsView='itemsView'>\n @for (item of itemsView; track item()[fieldKey()]) {\n <div #itemRef\n [class]=\"item().classItemWrapper || ''\">\n <div LibsUiComponentsListHighlightKeySearchDirective\n [isHighlight]=\"config()?.highlightTextSearchInResult\"\n [keySearch]=\"keySearch()\"\n [class]=\"'libs-ui-list-template-text-item flex '+(item().classItem || '')\"\n [class.items-center]=\"!item().itemAlignStart\"\n [class.items-start]=\"item().itemAlignStart\"\n [class.libs-ui-bg-list-hover-danger]=\"!clickExactly() && item().hoverDanger\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly() && !item().hoverDanger\"\n [class.libs-ui-bg-list-selected]=\"!clickExactly() && keySelected() === item()[fieldKey()]\"\n [class.pl-[16px]]=\"paddingLeftItem()\"\n [class.bg-[#ffffff]]=\"clickExactly()\"\n [class.libs-ui-bg-list-hover-ffffff]=\"item().disable\"\n [class.cursor-default]=\"item().disable\"\n [class.py-[2px]]=\"clickExactly()\"\n [class.pr-[48px]]=\"keySelected() === item()[fieldKey()] && (!configTemplateText?.ignoreIconSelected || configTemplateText?.actionSort)&& !configTemplateText?.stylePaddingRightItemOther\"\n [ngClass]=\"{'pointer-events-none libs-ui-disable':loading() || disable() || ((item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) && !ignoreClassDisableDefaultWhenUseKeysDisableItem())}\"\n (click)=\"handlerClickRelative($event,item())\">\n @if (item().bullet) {\n <span class=\"libs-ui-list-template-text-item-bullet flex flex-shrink-0\"\n [style.background-color]=\"item().bullet.backgroundColor\"\n (click)=\"handlerSelectItem($event,item())\">\n </span>\n }\n\n @if (item().avatarConfig; as avatarConfig) {\n <libs_ui-components-avatar [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [classImageInclude]=\"avatarConfig.classImageInclude\"\n [size]='avatarConfig.size || 32'\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\"\n [classImageInclude]=\"avatarConfig.classImageInclude\" />\n }\n @if (configTemplateText.getImage || configTemplateText.fieldGetImage) {\n <img\n [src]=\"configTemplateText.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:(item().specific_loadImgError && configTemplateText.getImageError ? configTemplateText.getImageError : configTemplateText.getImage):item()) | async) : item()[configTemplateText.fieldGetImage || '']\"\n [class]=\"'libs-ui-list-template-text-item-avatar ' + (configTemplateText.classIncludeImage ?? '')\"\n [class.w-[18px]]=\"configTemplateText.imgTypeIcon\"\n [class.h-[18px]]=\"configTemplateText.imgTypeIcon\"\n (error)=\"handlerImageError($event, item())\"\n (click)=\"handlerSelectItem($event,item())\" />\n }\n @if (item().buttonLeftConfig; as buttonLeft) {\n @if (item().hrefButton) {\n <a [class.w-full]=\"!buttonLeft.ignoreWidth100\"\n [href]=\"item().hrefButton\">\n <ng-container *ngTemplateOutlet=\"buttonLeftTemplate\"></ng-container>\n </a>\n }\n @if (!item().hrefButton) {\n <div [class.w-full]=\"!buttonLeft.ignoreWidth100\">\n <ng-container *ngTemplateOutlet=\"buttonLeftTemplate\"></ng-container>\n </div>\n }\n <ng-template #buttonLeftTemplate>\n <libs_ui-components-buttons-button class=\"w-full\"\n [type]=\"buttonLeft.type || 'button-link-primary'\"\n [label]=\"buttonLeft.label || ' '\"\n [zIndex]=\"buttonLeft.zIndex\"\n [disable]=\"buttonLeft.disable\"\n [classIconLeft]=\"buttonLeft.classIconLeft ? ((buttonLeft.classIconLeft || '')+' flex mr-[8px] text-[12px]') : ''\"\n [classInclude]=\"(buttonLeft.classInclude|| '')+' w-full'\"\n [classLabel]=\"(buttonLeft.classLabel ?? 'libs-ui-font-h4r')\"\n [ignoreStopPropagationEvent]=\"buttonLeft.ignoreStopPropagationEvent\"\n [styleIconLeft]=\"buttonLeft.styleIconLeft\"\n [styleButton]=\"buttonLeft.styleButton\"\n (moClick)=\"handlerSelectItem($event,item())\" />\n </ng-template>\n }\n @if (item().switchConfig) {\n <libs_ui-components-switch [active]=\"item().switchConfig.active\"\n (moSwitch)=\"handlerSelectItem('click',item())\" />\n }\n @if (item().classIconLeft) {\n <i [class]=\"item().classIconLeft + ' mr-[8px] text-[14px]'\"></i>\n }\n @if (!item().ignoreShowFieldLabel && !configTemplateText.rows) {\n <libs_ui-components-popover [type]=\"item().popoverLabel?.type || 'text'\"\n [elementRefCustom]=\"item().popoverLabel?.type === 'text'? undefined:itemRef\"\n [ignoreShowPopover]=\"item().popoverLabel?.ignoreShowPopover\"\n [config]=\"item().popoverLabel?.config || (configTemplateText.configLabelPopover || {})\"\n [innerHtml]=\"item().fieldLabel\"\n [classInclude]=\"item().classInclude\"\n (moEvent)=\"handlerSelectItem($event,item())\" />\n }\n @if (item().fieldPopover; as popover) {\n <libs_ui-components-popover class=\"{{ popover.classInclude || '' }}\"\n [config]=\"popover?.config\">\n @if (!popover.dataView) {\n <i class=\"libs-ui-icon-tooltip-outline\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (configTemplateText?.rows) {\n <libs_ui-components-list-templates_rows class=\"w-full {{ configTemplateText.classRowsWrapper || configTemplateText.classRows || '' }}\"\n [item]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"keySelected()\"\n [configTemplate]=\"configTemplateText\"\n [zIndex]=\"zIndex()\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event.event,$event.item,$event.action)\" />\n }\n @if ((keySelected === item()[fieldKey()] || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) ? item()[fieldKey()] : undefined) && !configTemplateText.ignoreIconSelected && !configTemplateText.actionSort) {\n <i [class]=\"'libs-ui-icon-check '+(configTemplateText.classIncludeIconSelected || 'right-[12px]')\">\n </i>\n }\n @if (keySelected() === item()[fieldKey()] && configTemplateText.actionSort) {\n <div class=\"libs-ui-list-template-text-sort\">\n <libs_ui-components-buttons-sort-arrow [disable]=\"loading() || disable() || false\"\n [mode]=\"configTemplateText.itemSort?.mode || ''\"\n [fieldSort]=\"item()[fieldKey()]\"\n (outChange)=\"handlerSort($event)\" />\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { TYPE_TEMPLATE } from \"../interfaces/templates-type.type\";\nimport { LibsUiComponentsListTextComponent } from \"../templates/text/text.component\";\nimport { IListViewConfigItem } from './../interfaces/config-item.interface';\n\nexport const getComponentByType = (typeTemplate: TYPE_TEMPLATE) => {\n switch (typeTemplate) {\n case 'checkbox':\n return LibsUiComponentsListTextComponent;\n\n case 'group':\n return LibsUiComponentsListTextComponent;\n\n case 'radio':\n return LibsUiComponentsListTextComponent;\n\n case 'text':\n return LibsUiComponentsListTextComponent;\n\n case 'tag':\n return LibsUiComponentsListTextComponent;\n }\n\n};\n\nexport const getFieldKeyByType = (config: IListViewConfigItem | undefined, fieldKeyDefault: unknown): unknown => {\n if (!config) {\n return;\n }\n switch (config.type) {\n case 'checkbox':\n return config.configTemplateCheckbox?.fieldKey || fieldKeyDefault;\n\n case 'group':\n return config.configTemplateGroup?.fieldKey || fieldKeyDefault;\n\n case 'radio':\n return config.configTemplateRadio?.fieldKey || fieldKeyDefault;\n\n case 'text':\n return config.configTemplateText?.fieldKey || fieldKeyDefault;\n\n case 'tag':\n return config.configTemplateTag?.fieldKey || fieldKeyDefault;\n }\n\n};\n\nexport const initConfig = (config: IListViewConfigItem): void => {\n if (!config) {\n return;\n }\n\n const defaultConfig = {\n fieldKey: 'id',\n getValue: (item: any): string => {\n if (!item) {\n return ' ';\n }\n\n return item.label || item.name || ' ';\n }\n };\n\n switch (config.type) {\n\n case 'checkbox':\n if (!config.configTemplateCheckbox) {\n config.configTemplateCheckbox = defaultConfig;\n }\n break;\n\n case 'group':\n break;\n\n case 'radio':\n if (!config.configTemplateRadio) {\n config.configTemplateRadio = defaultConfig;\n }\n break;\n\n case 'text':\n if (!config.configTemplateText) {\n config.configTemplateText = defaultConfig;\n }\n break;\n }\n};","/* eslint-disable @typescript-eslint/no-unused-expressions */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, ComponentRef, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal, TemplateRef, viewChild } from \"@angular/core\";\nimport { IButton, LibsUiComponentsButtonsButtonComponent } from \"@libs-ui/components-buttons-button\";\nimport { IInputFunctionControlEvent } from \"@libs-ui/components-inputs-input\";\nimport { IInputSearchConfig, LibsUiComponentsInputsSearchComponent } from \"@libs-ui/components-inputs-search\";\nimport { IValidRequired } from \"@libs-ui/components-inputs-valid\";\nimport { ILabel, LibsUiComponentsLabelComponent } from \"@libs-ui/components-label\";\nimport { IFlagMouse, LibsUiComponentsPopoverComponent } from \"@libs-ui/components-popover\";\nimport { IPaging, TYPE_TEMPLATE_REF } from \"@libs-ui/interfaces-types\";\nimport { LibsUiDynamicComponentService } from \"@libs-ui/services-dynamic-component\";\nimport { cloneDeep, ERROR_MESSAGE_EMPTY_VALID, isEmpty, isNil } from \"@libs-ui/utils\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { Subject, Subscription, takeUntil, timer } from \"rxjs\";\nimport { getComponentByType, initConfig } from \"./defines/list.define\";\nimport { IListFunctionControlEvent, IListViewConfigItem } from \"./interfaces\";\nimport { IListDataEmitKey, IListDataEmitMultiKey } from \"./interfaces/data-emit.interface\";\nimport { LibsUiComponentsListTemplatesComponentAbstract } from \"./templates/templates.component.abstract\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet, TranslateModule,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsInputsSearchComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent\n ]\n})\nexport class LibsUiComponentsListComponent implements OnInit, OnDestroy {\n /* PROPERTY */\n protected readonly ERROR_MESSAGE_EMPTY_VALID = ERROR_MESSAGE_EMPTY_VALID;\n protected disableButtonUnSelectOption = signal<boolean>(true);\n protected isErrorRequired = signal<boolean>(false);\n protected loading = signal<boolean>(false);\n protected keySearchStore = signal<string | undefined>(undefined);\n\n private onDestroy: Subject<void> = new Subject();\n private onSearch: Subject<string | undefined> = new Subject();\n private onRefresh: Subject<void> = new Subject();\n private onSetHiddenItemByKey: Subject<Array<unknown>> = new Subject();\n private onSetDataStore: Subject<Array<any>> = new Subject();\n private onItemChangeUnSelect: Subject<any> = new Subject();\n private onUpdateMultiKeySelectedGroup: Subject<void> = new Subject();\n private onRemoveItems: Subject<Array<unknown>> = new Subject();\n\n private componentRef?: ComponentRef<LibsUiComponentsListTemplatesComponentAbstract>;\n private configData = signal<IListViewConfigItem>({\n type: 'text',\n configTemplateText: {\n fieldKey: 'id',\n getValue: (item: any) => {\n return item.label || item.name;\n }\n }\n });\n private groupMultiKeySelected = signal<Array<unknown>>([]);\n private functionControlInputSearch = signal<IInputFunctionControlEvent | undefined>(undefined);\n\n /* INPUT */\n readonly hiddenInputSearch = input<boolean>(false);\n readonly dropdownTabKeyActive = input<string>();\n readonly keySearch = input<string>();\n readonly itemChangeUnSelect = input<any>();\n readonly paddingLeftItem = input<boolean>();\n readonly config = input.required<IListViewConfigItem | undefined>();\n\n readonly isSearchOnline = input<boolean>();\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly labelConfig = input<ILabel>();\n readonly searchConfig = input<IInputSearchConfig>({});\n readonly searchPadding = input<boolean>();\n readonly dividerClassInclude = input<string>();\n readonly hasDivider = input<boolean>(true);\n readonly buttonsOther = input<Array<IButton> | undefined>(undefined);\n readonly hasButtonUnSelectOption = input<boolean>();\n readonly clickExactly = input<boolean>();\n readonly backgroundListCustom = input<string>('bg-[#ffffff]');\n readonly maxItemShow = input<number>();\n readonly keySelected = input<unknown>();\n readonly multiKeySelected = input<Array<unknown> | undefined>(undefined);// lưu ý khi sử dụng listview\n readonly keysDisableItem = input<Array<unknown> | undefined>(undefined); // không dùng giá trị này kết hợp với template checkbox có config chứa configCheckboxCheckAll\n readonly keysHiddenItem = input<Array<unknown> | undefined>(undefined); // không dùng giá trị này kết hợp với template checkbox có config chứa configCheckboxCheckAll\n readonly focusInputSearch = input<boolean>();\n readonly skipFocusInputWhenKeySearchStoreUndefined = input<boolean>();\n readonly functionCustomAddDataToStore = input<(data: any, store: any) => void>();\n readonly functionGetItemsAutoAddList = input<(() => Array<any>) | undefined>(undefined);\n readonly validRequired = input<IValidRequired | undefined>(undefined);\n readonly showValidateBottom = input<boolean>();\n readonly zIndex = input<number>();\n readonly loadingIconSize = input<'large' | 'medium' | 'small' | 'smaller' | undefined>(undefined);\n readonly templateRefSearchNoData = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>(undefined);\n readonly resetKeyWhenSelectAllKeyDropdown = input<boolean>();\n readonly ignoreClassDisableDefaultWhenUseKeysDisableItem = input<boolean>(); // bỏ chế độ disable item trên html để disable từng phần trong rows\n\n /* OUTPUT */\n readonly outSelectKey = output<IListDataEmitKey | undefined>(); // sử dụng cho type chọn 1\n readonly outSelectMultiKey = output<IListDataEmitMultiKey | undefined>(); // sử dụng cho type cho phép chọn nhiều.\n readonly outUnSelectMultiKey = output<Array<unknown>>(); // sử dụng cho type cho phép chọn nhiều.\n readonly outClickButtonOther = output<IButton>();\n readonly outFieldKey = output<unknown>();\n readonly outChangeView = output<Array<any>>();\n readonly outLoading = output<boolean>();\n readonly outFunctionsControl = output<IListFunctionControlEvent>();\n readonly outChangStageFlagMousePopover = output<IFlagMouse>();\n readonly outLoadItemsComplete = output<{ items: Array<any>, paging?: IPaging }>();\n\n /* VIEW CHILD */\n protected listViewElementRef = viewChild<ElementRef>('listViewContainer');\n protected contentElementRef = viewChild<ElementRef>('contentContainer');\n\n /* INJECT */\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n\n constructor() {\n effect(() => {\n this.keySearchStore.set(this.keySearch());\n this.onSearch.next(this.keySearch());\n }, { allowSignalWrites: true });\n effect(() => this.onItemChangeUnSelect.next(this.itemChangeUnSelect()));\n effect(() => {\n if (!this.componentRef) {\n return;\n }\n if (!isEmpty(this.keysDisableItem())) {\n this.componentRef.setInput('keysDisableItem', this.keysDisableItem());\n }\n if (!isEmpty(this.keysHiddenItem())) {\n this.onSetHiddenItemByKey.next(this.keysHiddenItem() || []);\n }\n if (!isEmpty(this.disable())) {\n this.componentRef.setInput('disable', this.disable());\n }\n if (!isEmpty(this.keySelected())) {\n this.componentRef.setInput('keySelected', this.keySelected());\n }\n if (this.configData()?.type !== 'group' && !isEmpty(this.multiKeySelected())) {\n this.componentRef.setInput('multiKeySelected', this.multiKeySelected());\n }\n if (this.configData()?.type === 'group' && !isEmpty(this.multiKeySelected())) {\n this.componentRef.setInput('multiKeySelected', this.multiKeySelected());\n this.onUpdateMultiKeySelectedGroup.next();\n }\n }, { allowSignalWrites: true });\n\n effect(() => {\n this.refresh();\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit({\n checkIsValid: this.checkIsValid.bind(this),\n refresh: this.refresh.bind(this),\n resetKeySelected: this.handlerRemoveKeySelected.bind(this),\n getRectListView: async () => this.listViewElementRef()?.nativeElement.getBoundingClientRect(),\n removeItems: async (keys) => this.onRemoveItems.next(keys)\n });\n\n const config = this.config();\n if (config) {\n this.configData.set(this.cloneConfig(config))\n }\n initConfig(this.configData());\n const compClass = getComponentByType(this.configData().type);\n\n this.componentRef = this.dynamicComponentService.resolveComponentFactory(compClass);\n\n timer(0).pipe(takeUntil(this.onDestroy)).subscribe(() => {\n this.dynamicComponentService.addToElement(this.componentRef, this.contentElementRef()?.nativeElement);\n });\n // this.componentRef.setInput('onSetDataStore', this.onSetDataStore);\n this.componentRef.setInput('onSetHiddenItemByKey', this.onSetHiddenItemByKey);\n this.componentRef.setInput('config', this.configData());\n\n if (this.searchConfig()) {\n this.componentRef.setInput('searchConfig', this.searchConfig());\n }\n this.componentRef.setInput('onSearch', this.onSearch);\n this.componentRef.setInput('onRefresh', this.onRefresh);\n this.componentRef.setInput('keySearch', this.keySearchStore() ?? '');\n this.componentRef.setInput('dropdownTabKeyActive', this.dropdownTabKeyActive());\n this.componentRef.setInput('clickExactly', this.clickExactly() || false);\n this.componentRef.setInput('disable', this.disable());\n this.componentRef.setInput('paddingLeftItem', this.paddingLeftItem());\n this.componentRef.setInput('resetKeyWhenSelectAllKeyDropdown', this.resetKeyWhenSelectAllKeyDropdown());\n this.componentRef.setInput('ignoreClassDisableDefaultWhenUseKeysDisableItem', this.ignoreClassDisableDefaultWhenUseKeysDisableItem());\n this.componentRef.setInput('functionCustomAddDataToStore', this.functionCustomAddDataToStore());\n this.componentRef.setInput('functionGetItemsAutoAddList', this.functionGetItemsAutoAddList());\n\n if (this.maxItemShow()) {\n this.componentRef.setInput('maxItemShow', this.maxItemShow());\n }\n this.componentRef.setInput('keySelected', this.keySelected());\n if (this.multiKeySelected()) {\n this.componentRef.setInput('multiKeySelected', this.multiKeySelected());\n }\n this.componentRef.setInput('keysDisableItem', this.keysDisableItem() || []);\n this.componentRef.setInput('keysHiddenItem', this.keysHiddenItem() || []);\n if (!isNil(this.keySelected()) || this.multiKeySelected()?.length) {\n this.disableButtonUnSelectOption.set(false);\n }\n this.componentRef.setInput('onItemChangeUnSelect', this.onItemChangeUnSelect);\n this.componentRef.setInput('onUpdateMultiKeySelectedGroup', this.onUpdateMultiKeySelectedGroup);\n this.componentRef.setInput('onRemoveItems', this.onRemoveItems);\n this.componentRef.setInput('zIndex', this.zIndex());\n this.componentRef.setInput('isSearchOnline', this.isSearchOnline());\n this.componentRef.setInput('disableLabel', this.disableLabel() || false);\n this.componentRef.setInput('loadingIconSize', this.loadingIconSize());\n this.componentRef.setInput('templateRefSearchNoData', this.templateRefSearchNoData());\n let keySearch = '';\n\n const instance = this.componentRef.instance;\n\n instance.outChangeView.subscribe(data => {\n this.outChangeView.emit(data);\n\n if (this.skipFocusInputWhenKeySearchStoreUndefined() && isNil(this.keySearchStore)) {\n return;\n }\n if (this.focusInputSearch() && this.keySearchStore() !== keySearch) {\n keySearch = this.keySearchStore() || '';\n this.functionControlInputSearch()?.focus();\n }\n });\n instance.outSelectKey.subscribe(data => {\n this.disableButtonUnSelectOption.set(false);\n this.outSelectKey.emit(data);\n this.checkIsValid();\n });\n instance.outFieldKey.subscribe((fieldKey: unknown) => {\n this.outFieldKey.emit(fieldKey);\n });\n instance.outLoading.subscribe((loading: boolean) => {\n this.loading.set(loading);\n this.outLoading.emit(loading);\n });\n instance.outLoadItemsComplete.subscribe((event: { items: Array<any>, paging?: IPaging }) => {\n this.outLoadItemsComplete.emit(event);\n });\n if (this.config() && this.config()?.configTemplateText && this.config()?.configTemplateText?.actionSort) {\n instance.outSortSingleSelect.subscribe(itemSort => {\n const config = this.config();\n if (config && config.configTemplateText && config.configTemplateText?.actionSort) {\n config.configTemplateText.itemSort = itemSort;\n config.configTemplateText.actionSort(itemSort);\n }\n });\n }\n instance.outChangStageFlagMousePopover.subscribe((flag: IFlagMouse) => {\n this.outChangStageFlagMousePopover.emit(flag);\n });\n const type = this.configData()?.type;\n\n if (type === 'text' || type === 'radio') {\n return;\n }\n instance.outSelectMultiKey.subscribe(data => {\n this.disableButtonUnSelectOption.set(false);\n if (type === 'group') {\n this.groupMultiKeySelected.set(data.keys);\n }\n this.outSelectMultiKey.emit(data);\n this.checkIsValid();\n });\n }\n\n /* FUNCTIONS */\n protected handlerSearch(keySearch: string) {\n this.keySearchStore.set(keySearch);\n this.onSearch.next(keySearch);\n }\n\n protected async handlerRemoveKeySelected() {\n if (!this.componentRef) {\n return;\n }\n this.outSelectKey.emit(undefined);\n this.outSelectMultiKey.emit(undefined);\n this.componentRef.setInput('keySelected', '');\n this.componentRef.setInput('multiKeySelected', undefined);\n this.disableButtonUnSelectOption.set(true);\n await this.checkIsValid();\n }\n\n protected handlerClickButtonOther(button: IButton) {\n this.outClickButtonOther.emit(button);\n }\n\n protected handlerFunctionControlInputSearch(event: IInputFunctionControlEvent) {\n this.functionControlInputSearch.set(event);\n }\n\n private async checkIsValid() {\n if (!this.validRequired || !this.config()?.type || !this.componentRef?.instance) {\n this.isErrorRequired.set(false);\n\n return true;\n }\n const type = this.config()?.type;\n let hasKey = !isEmpty(this.componentRef.instance.multiKeySelected);\n\n if (type === 'group') {\n hasKey = !isEmpty(this.groupMultiKeySelected);\n }\n if (type === 'text' || type === 'radio') {\n hasKey = !isNil(this.componentRef.instance.keySelected);\n }\n this.isErrorRequired.set(!hasKey);\n\n return hasKey;\n }\n\n private async refresh() {\n const config = this.config();\n if (!config) {\n return;\n }\n this.dropdownTabKeyActive();\n Object.assign(this.configData, this.cloneConfig(config));\n this.onRefresh.next();\n }\n\n private cloneConfig(configInput: IListViewConfigItem): IListViewConfigItem {\n if (!configInput) {\n return {} as any;\n }\n const serviceOther = configInput.httpRequestData?.serviceOther;\n const serviceOtherRequestAllIdSelectOrUnSelect = configInput.configTemplateCheckbox?.httpRequestAllIdSelectOrUnSelect?.serviceOther;\n\n serviceOther && delete configInput.httpRequestData?.serviceOther;\n serviceOtherRequestAllIdSelectOrUnSelect && delete configInput.configTemplateCheckbox?.httpRequestAllIdSelectOrUnSelect?.serviceOther;\n const config = cloneDeep(configInput);\n\n serviceOther && config.httpRequestData && (config.httpRequestData.serviceOther = serviceOther);\n serviceOtherRequestAllIdSelectOrUnSelect && config.configTemplateCheckbox?.httpRequestAllIdSelectOrUnSelect && (config.configTemplateCheckbox.httpRequestAllIdSelectOrUnSelect.serviceOther = serviceOtherRequestAllIdSelectOrUnSelect);\n serviceOther && configInput.httpRequestData && (configInput.httpRequestData.serviceOther = serviceOther);\n serviceOtherRequestAllIdSelectOrUnSelect && configInput.configTemplateCheckbox?.httpRequestAllIdSelectOrUnSelect && (configInput.configTemplateCheckbox.httpRequestAllIdSelectOrUnSelect.serviceOther = serviceOtherRequestAllIdSelectOrUnSelect);\n\n return config;\n }\n\n ngOnDestroy() {\n this.outLoading.emit(false);\n this.dynamicComponentService.remove(this.componentRef);\n this.onRefresh.complete();\n this.onSearch.complete();\n this.onSetHiddenItemByKey.complete();\n this.onUpdateMultiKeySelectedGroup.complete();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","<div #listViewContainer\n class=\"flex flex-col\"\n [class.w-full]=\"!maxItemShow\"\n [class.h-full]=\"!maxItemShow\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || loading() || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n\n @if (!showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\"></ng-container>\n }\n @if (!hiddenInputSearch()) {\n <libs_ui-components-inputs-search [searchConfig]=\"searchConfig()\"\n [class.px-[12px]]=\"searchPadding()\"\n [class]=\"searchConfig().classCoverInputSearch\"\n [disable]=\" disable() || loading() || false\"\n (outSearch)=\"handlerSearch($event)\"\n (outFunctionsControl)=\"handlerFunctionControlInputSearch($event)\" />\n }\n @if (config()?.configDescriptionGroup; as description) {\n <div [class]=\"description?.classInclude\">\n <libs_ui-components-popover [config]=\"description?.tooltipDescription\">\n <div [class]=\"description?.classTextDescriptionInclude\">{{ description.textDescription }}</div>\n </libs_ui-components-popover>\n </div>\n }\n @if (!hiddenInputSearch() && hasDivider() && (!config()?.ignoreShowDataWhenNotSearch || keySearchStore())) {\n <div class=\"libs-ui-border-top-general {{ dividerClassInclude() ? dividerClassInclude():'' }}\"\n [class.libs-ui-divider-default]=\"!!searchPadding() && !dividerClassInclude()\">\n </div>\n }\n <div class=\"flex flex-col {{ (config()?.ignoreShowDataWhenNotSearch && keySearchStore() && !config()?.ignoreFixHeightShowDataWhenNotSearch) ? 'h-[353px]' : 'h-full' }}\">\n <div #contentContainer\n class=\"w-full h-full {{ backgroundListCustom() }}\"\n [class.libs-ui-disable]=\"disable() && disableLabel()\"\n [class.pointer-events-none]=\"disable() && disableLabel()\">\n </div>\n\n @for (buttonOther of buttonsOther(); track $index) {\n <div class=\"bg-[#ffffff]\">\n <libs_ui-components-buttons-button [type]=\"buttonOther.type || 'button-link-primary'\"\n [label]=\"buttonOther.label || ' '\"\n [classIconLeft]=\"(buttonOther.classIconLeft || '')+' flex mr-[8px] text-[16px]'\"\n classInclude=\"w-full libs-ui-border-top-general text-left rounded-0 {{ buttonOther.classInclude ? buttonOther.classInclude:'' }}\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"buttonOther.disable || disable() || loading() || false\"\n (outClick)=\"handlerClickButtonOther(buttonOther)\" />\n </div>\n }\n @if (hasButtonUnSelectOption()) {\n <div class=\"bg-[#ffffff] rounded-b-[4px]\">\n <libs_ui-components-buttons-button label=\"i18n_unselect_option\"\n type=\"button-link-danger-high\"\n classIconLeft=\"flex mr-[8px] libs-ui-icon-close\"\n classInclude=\"w-100 libs-ui-border-top-general text-left rounded-0\"\n classLabel=\"mo-lib-font-h5r whitespace-normal\"\n [disable]=\"disableButtonUnSelectOption() || disable() || loading() || false\"\n (outClick)=\"handlerRemoveKeySelected()\" />\n </div>\n }\n </div>\n @if (showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\"></ng-container>\n }\n</div>\n\n<ng-template #templateValidate>\n @if (isErrorRequired()) {\n <div [class.mb-[8px]]=\"!showValidateBottom()\"\n [class.mt-[8px]]=\"showValidateBottom()\">\n <span class=\"text-[#ee2d41] mo-lib-font-h7\"\n [innerHtml]=\"(validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID)| translate:validRequired()?.interpolateParams\">\n </span>\n </div>\n }\n</ng-template>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IAvatarConfig } from \"@libs-ui/components-avatar\";\nimport { IBadge } from \"@libs-ui/components-badge\";\nimport { IButton } from \"@libs-ui/components-buttons-button\";\nimport { ISort } from \"@libs-ui/components-buttons-sort\";\nimport { ICheckboxItem } from \"@libs-ui/components-checkbox-group\";\nimport { ILabel } from \"@libs-ui/components-label\";\nimport { IPopover, IPopoverOverlay, TYPE_POPOVER_EVENT } from \"@libs-ui/components-popover\";\nimport { IHttpRequestConfig } from \"@libs-ui/services-http-request\";\nimport { TYPE_TEMPLATE } from \"./templates-type.type\";\nimport { Observable } from \"rxjs\";\nimport { WritableSignal } from \"@angular/core\";\n\nexport interface IListViewConfigItem {\n type: TYPE_TEMPLATE;\n httpRequestData?: IHttpRequestConfig;\n configTemplateText?: IListViewConfigItemText;\n configTemplateRadio?: IListViewConfigItemRadio;\n configTemplateCheckbox?: IListViewConfigItemCheckbox;\n configTemplateGroup?: IListViewConfigItemGroup;\n configTemplateTag?: IListViewConfigItemTag;\n configDescriptionGroup?: IConfigDescriptionGroup;\n textNoData?: string;\n textNoDataClassInclude?: string;\n textSearchNoData?: string;\n autoSelectFirstItem?: boolean; // nếu như có dữ liệu mà chưa có keySelected thì sẽ tự động chọn phần từ đầu tiên;\n backgroundListCustom?: string;\n paddingLeftItem?: boolean;\n sort?: (items: Array<any>) => void;\n hasIconNoData?: boolean;\n ignoreShowDataWhenNotSearch?: boolean | undefined;\n ignoreFixHeightShowDataWhenNotSearch?: boolean | undefined;\n highlightTextSearchInResult?: boolean | undefined;\n}\n\nexport interface IListViewConfigItemText {\n fieldKey: string;\n getValue?: (item: any) => string;\n fieldGetImage?: string;\n classIncludeImage?: string;\n getImage?: (data: IDataFunctionCallInConfig) => Observable<string>;\n getImageError?: (data: IDataFunctionCallInConfig) => Observable<string>;\n imgTypeIcon?: boolean;\n ignoreIconSelected?: boolean;\n classIncludeIconSelected?: string;\n ignoreShowFieldLabel?: boolean;\n getHrefButton?: (item: any) => string;\n getClassItem?: (item: any) => string;\n getClassIncludePopover?: (item: any) => string;\n getConfigButtonLeft?: (item: any) => IButton;\n getClassIconLeft?: (item: any) => string;\n getConfigHoverDanger?: (item: any) => boolean;\n getPopover?: (item: any) => IPopover | undefined;\n rows?: Array<IListViewConfigItemTextRow>;\n classRowsWrapper?: string;\n classRows?: string;\n configLabelPopover?: IPopoverOverlay;\n autoScrollToItemSelected?: boolean;\n itemSort?: ISort; // biến lưu trữ item sort\n actionSort?: (itemSort: ISort) => void; // set hàm này nếu muốn bật sort trên listview\n notUseVirtualScroll?: boolean; // sử dụng cho trường hợp config badge trong table\n getAvatarConfig?: (item: any) => IAvatarConfig;\n getConfigAlignStart?: (item: any) => boolean;\n stylePaddingRightItemOther?: boolean;\n}\n\nexport interface IListViewConfigItemTag extends IListViewConfigItemText {\n fieldKey: string;\n ignoreItemFlexWrap?: boolean;\n classIncludeContainer?: string;\n}\n\nexport interface IListViewConfigItemRadio {\n fieldKey: string;\n fieldGetImage?: string;\n classIncludeImage?: string;\n hasAvatarPagesSocial?: boolean;\n hasAvatarGroupSocial?: boolean;\n getValue?: (item: any) => string;\n getPopover?: (item: any) => IPopover | undefined;\n rows?: Array<IListViewConfigItemTextRow>;\n classRows?: string;\n autoScrollToItemSelected?: boolean;\n zIndexPopover?: number;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n getClassItem?: (item: any) => string;\n classItemInclude?: string;\n}\n\nexport interface IListViewConfigItemCheckbox {\n autoSelectAllItem?: boolean; // dropdown nếu như có dữ liệu mà chưa có multiKeySelected thì sẽ tự động chọn phần từ đầu tiên;\n classListInclude?: string;\n httpRequestAllIdSelectOrUnSelect?: IHttpRequestConfig;\n configButtonSelectAndUndSelectItem?: {\n classInclude?: string;\n buttonCheckAll?: IButton;\n buttonUncheckAll?: IButton;\n };\n configCheckboxCheckAll?: ICheckboxItem;\n classIncludeHasConfigCheckBoxAll?: string;\n fieldKey: string;\n getValue?: (item: any) => string;\n getPopover?: (item: any) => IPopover;\n getClassItem?: (item: any) => string;\n getImage?: (data: IDataFunctionCallInConfig) => Observable<string>;\n getImageError?: (data: IDataFunctionCallInConfig) => Observable<string>;\n fieldGetImage?: string;\n hasAvatarPagesSocial?: boolean;\n hasAvatarGroupSocial?: boolean;\n classIncludeImage?: string;\n rows?: Array<IListViewConfigItemTextRow>;\n classRowsWrapper?: string;\n classRows?: string;\n ignoreClickItemUnChecked?: boolean;\n classLabelInclude?: string;\n fieldGetLinkImageError?: string;\n zIndexPopover?: number;\n classItemInclude?: string;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n classCheckboxItemInclude?: string;\n ignoreItemWidth100?: boolean;\n classIncludeLastViewItem?: string;\n classInclude?: string;\n}\n\ninterface IListViewConfigItemTextRow {\n classRow?: string;\n classItemSelected?: string;\n getValue?: (data: IDataFunctionCallInConfig) => Observable<string>;\n classGetValue?: string;\n classCols?: string;\n getRowStylesDynamicCols?: (item: any) => string;\n cols?: Array<IListViewConfigItemTextCol>;\n action?: (item: any) => void;\n getImage?: (item: IDataFunctionCallInConfig) => Observable<string>;\n getClassImage?: (item: IDataFunctionCallInConfig) => Observable<string>;\n getImageError?: (item: IDataFunctionCallInConfig) => Observable<string>;\n getPopoverConfig?: (item: any) => Observable<IPopoverOverlay>;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n}\n\nexport interface IDataFunctionCallInConfig {\n value?: any;\n item?: any;\n otherData?: any;\n};\n\nexport interface IListViewConfigItemTextRowSignal extends Omit<IListViewConfigItemTextRow, 'cols'> {\n cols?: WritableSignal<Array<WritableSignal<IListViewConfigItemTextCol>>>;\n}\nexport interface IListViewConfigItemTextCol {\n classCol?: string;\n getValue?: (data: IDataFunctionCallInConfig) => Observable<string>;\n getPopover?: (item: any, index: number) => IPopover | undefined;\n action?: (item: any) => void;\n getImage?: (item: any) => Observable<string>;\n getClassImage?: (item: any) => Observable<string>;\n getImageError?: (item: any) => Observable<string>;\n getConfigBadge?: (item: any, index: number) => IBadge | undefined;\n getStylesDynamicCol?: (data: IDataFunctionCallInConfig) => Observable<string>;\n getButton?: (item: any, index: number) => IButton | undefined;\n getLabelSwitch?: (item: any, index: number) => ILabel | undefined;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n}\n\nexport interface IListViewConfigItemGroup {\n flatItemsSupportAutoSelect?: (data: Array<any>) => Array<any>; // sử dụng khi muốn mặc định selected tất cả các key trong group\n fieldKey?: string;\n isViewRadio?: boolean;\n timeIntervalCalculatorHeight?: number; // trường hợp trong page nhiều listview tham số này sẽ thay đổi tùy từng trường hợp\n configButtonSelectAndUndSelectItem?: {\n classInclude?: string;\n buttonCheckAll?: IButton;\n buttonUncheckAll?: IButton;\n };\n configCheckboxCheckAll?: ICheckboxItem;\n classIncludeHasConfigCheckBoxAll?: string;\n getLabelSearch?: (item: any) => string; // Dùng để customs khi search không chỉ field label: ví dụ: search cả code và name nhưng chỉ hiển thị name\n getLabelGroup: (group: any) => string;\n getExpandGroup?: (group: any) => boolean;\n getPopoverGroup?: (group: any) => string;\n getMaxLevelGroup: (group: any) => number;\n getDescriptionGroupWhenNoData?: (group: any) => string | undefined;\n getButtonGroup?: (group: any) => IButton;\n getIconEmptyDataInGroup?: (group: any) => boolean; // hiển thị image empty trong từng group\n ignoreCheckboxGroup?: boolean;\n classIncludeNodata?: string;\n classIncludeGroup?: string;\n ignoreRadioGroup?: boolean;\n ignoreTextUppercaseLabelGroup?: boolean;\n ignoreGroupLine?: boolean;\n marginTopHasLine?: number;\n ignoreClickLabelGroup?: boolean;\n\n fieldGetItems: string;\n fieldGetAvatarItem?: string;\n hasAvatarPagesSocial?: boolean;\n hasAvatarGroupSocial?: boolean;\n imgTypeIcon?: boolean;\n classImageInclude?: string;\n isViewTree?: boolean;\n isViewTreeJson?: boolean;\n getLabelItem: (item: any) => string;\n getPopoverItem?: (item: any) => IPopover | undefined;\n actionPopoverByItem?: (item: any, event: TYPE_POPOVER_EVENT) => void;\n getExpandItem?: (group: any) => boolean;\n getBonusPaddingLeftItem?: (item: any, parentItem?: any) => number;\n getClassIncludeItemNoData?: (item: any, parentItem?: any) => string;\n ignoreCheckboxItem?: boolean;\n ignoreRadioItem?: boolean;\n notChangeStateItemCheckOther?: boolean; // sử dụng cho trường hợp danh mục sản phẩm khi bỏ chọn 1 node thì các node cha và con không ảnh hưởng\n searchAllLevel?: boolean; // nếu bật search all level thì khi tìm tất cả các group không phù hợp với key search sẽ bị ẩn, ko phân biệt cấp bậc\n emitAllItemChecked?: boolean; // tham khảo trường hợp danh mục sản phẩm\n singleSelectItem?: boolean; // sử dụng khi chỉ muốn chọn node ở level cuối cùng\n singleSelectItemByTree?: boolean; //tham khảo trường hợp dòng sản phẩm của bank\n hasIconCheckSingleSelectItem?: boolean;\n colorBlueWhenItemSelected?: boolean;\n hasBackgroundColorWhenItemSelected?: boolean;\n iconExpand: '' | 'left' | 'right';\n ignoreIconExpandMarginRight?: boolean;\n onlySelectFirstItem?: boolean;\n ignoreChooseParentThenAutoChooseChildren?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n chooseChildThenAutoChooseParent?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n ignoreUnselectChildrenRemoveSelectParent?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n ignoreEmitAllItemCheckedWhenChooseChildThenAutoChooseParent?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n disableItemNotLastLevel?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n classLabelItem?: string\n allowDisableLabel?: boolean;\n zIndexLabel?: number;\n expandFirstItem?: boolean;\n widthLabelSub24WhenNotTreeView?: boolean; // width label item trừ 24px khi không phải dạng treeview,\n classIncludeItem?: string;\n getClassIncludeItemContent?: (item: any) => string; // truyền class cho item\n getLinkImageError?: (item: any) => string;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n classIncludeLastItem?: string;\n getIconImageClass?: (item: any) => string;\n autoCountWhenGroupEmptyItemLevel1?: boolean; // Trường hợp chỉ có 1 group item và sub_item empty, set = true tăng chiều cao popup để nhìn thấy empty text (Tham khảo dropdown chọn loại sản phẩm bank khi gắn dòng/ loại sản phẩm)\n ignoreChangeChildrenDisableWhenChangeParent?: boolean\n}\n\nexport interface IConfigDescriptionGroup {\n classInclude?: string;\n tooltipDescription?: IPopoverOverlay;\n textDescription: string;\n classTextDescriptionInclude?: string;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { TYPE_POPOVER_EVENT } from \"@libs-ui/components-popover\";\n\nexport interface IListDataEmitKey {\n key: unknown;\n item: any;\n isClickManual: boolean;\n}\n\nexport interface IListDataEmitMultiKey {\n keys: Array<unknown>;\n mapKeys: Array<IListDataEmitKey>;\n isClickManual: boolean;\n}\n\nexport interface IEmitRowsEvent {\n event: TYPE_POPOVER_EVENT;\n item: any;\n action: any;\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","takeUntil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-list.mjs","sources":["../../../../../libs-ui/components/list/src/highlight-key-search/highlight-key-search.directive.ts","../../../../../libs-ui/components/list/src/pipes/check-selected-by-key.pipe.ts","../../../../../libs-ui/components/list/src/templates/rows/rows.component.ts","../../../../../libs-ui/components/list/src/templates/rows/rows.component.html","../../../../../libs-ui/components/list/src/templates/templates.component.abstract.ts","../../../../../libs-ui/components/list/src/templates/text/text.component.ts","../../../../../libs-ui/components/list/src/templates/text/text.component.html","../../../../../libs-ui/components/list/src/defines/list.define.ts","../../../../../libs-ui/components/list/src/list.component.ts","../../../../../libs-ui/components/list/src/list.component.html","../../../../../libs-ui/components/list/src/interfaces/config-item.interface.ts","../../../../../libs-ui/components/list/src/interfaces/data-emit.interface.ts","../../../../../libs-ui/components/list/src/libs-ui-components-list.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, inject, input } from '@angular/core';\nimport { deleteUnicode } from '@libs-ui/utils';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsListHighlightKeySearchDirective]',\n standalone: true\n})\n\nexport class LibsUiComponentsListHighlightKeySearchDirective implements AfterViewInit {\n readonly isHighlight = input<boolean | undefined>(undefined);\n readonly keySearch = input<string | undefined>(undefined);\n readonly classHighlight = input<string>('libs-ui-list-highlight-text-search');\n\n private elementRef = inject(ElementRef);\n\n ngAfterViewInit() {\n if (!this.elementRef || !this.isHighlight() || !this.keySearch()) {\n return;\n }\n this.handlerHighlight(this.elementRef.nativeElement);\n }\n\n protected handlerHighlight(element: Node) {\n if (!element || element === null) {\n return;\n }\n const children: Node[] = Array.prototype.slice.call(element.childNodes);\n\n if (!children.length) {\n return;\n }\n children.forEach(item => {\n if (item.nodeType === Node.TEXT_NODE) {\n this.checkAndReplace(item);\n\n return;\n }\n if (item.nodeType === Node.ELEMENT_NODE) {\n this.handlerHighlight(item);\n }\n });\n }\n\n protected checkAndReplace(node: Node) {\n let nodeVal = node.nodeValue;\n const parentNode = node.parentNode;\n let textNode = null;\n\n if (!parentNode || !nodeVal) {\n return;\n }\n const textToHighlight = deleteUnicode(this.keySearch()?.trim() || '').toLowerCase();\n let isFirst = true;\n\n while (true) {\n const foundIndex = deleteUnicode(nodeVal).toLowerCase().indexOf(textToHighlight);\n\n if (foundIndex < 0) {\n if (isFirst) {\n break;\n }\n if (nodeVal) {\n textNode = document.createTextNode(nodeVal);\n parentNode.insertBefore(textNode, node);\n }\n parentNode.removeChild(node);\n break;\n }\n isFirst = false;\n const start = nodeVal.substring(0, foundIndex);\n const matched = nodeVal.substring(foundIndex, foundIndex + textToHighlight.length);\n\n if (start) {\n textNode = document.createTextNode(start);\n parentNode.insertBefore(textNode, node);\n }\n const span = document.createElement(\"span\");\n\n if (!span.classList.contains(this.classHighlight())) {\n span.classList.add(this.classHighlight());\n }\n span.appendChild(document.createTextNode(matched));\n parentNode.insertBefore(span, node);\n nodeVal = nodeVal.substring(foundIndex + textToHighlight.length);\n }\n }\n}\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pipe, PipeTransform } from '@angular/core';\n@Pipe({\n name: 'LibsUiCheckSelectedByKeyPipe',\n standalone: true\n})\nexport class LibsUiCheckSelectedByKeyPipe implements PipeTransform {\n transform(value: any, multiKeys: Array<any> | undefined, length: number | undefined): boolean {\n if (!multiKeys || !(multiKeys instanceof Array) || !multiKeys.length || !length) {\n return false;\n }\n\n return multiKeys.some(key => key === value);\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AsyncPipe } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, effect, input, output, signal, untracked, WritableSignal } from \"@angular/core\";\nimport { LibsUiComponentsAvatarComponent } from \"@libs-ui/components-avatar\";\nimport { LibsUiComponentsBadgeComponent } from \"@libs-ui/components-badge\";\nimport { LibsUiComponentsButtonsButtonComponent } from \"@libs-ui/components-buttons-button\";\nimport { LibsUiComponentsLabelComponent } from \"@libs-ui/components-label\";\nimport { IFlagMouse, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from \"@libs-ui/components-popover\";\nimport { LibsUiPipesCallFunctionInTemplatePipe } from \"@libs-ui/pipes-call-function-in-template\";\nimport { convertObjectToSignal, isEmpty } from \"@libs-ui/utils\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { lastValueFrom, Observable } from \"rxjs\";\nimport { IEmitRowsEvent, IListViewConfigItemCheckbox, IListViewConfigItemText, IListViewConfigItemTextRowSignal } from \"../../interfaces\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: \"libs_ui-components-list-templates_rows\",\n templateUrl: \"./rows.component.html\",\n styleUrls: [\"./rows.component.scss\"],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe, TranslateModule,\n LibsUiComponentsAvatarComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsBadgeComponent,\n LibsUiPipesCallFunctionInTemplatePipe\n ],\n})\nexport class LibsUiComponentsListRowsComponent {\n /* PROPERTY */\n protected popoverIcon = signal<string>(`<i class='libs-ui-icon-tooltip-outline text-[16px] ml-[8px]'></i>`);\n protected configItemTextRows = signal<Array<WritableSignal<IListViewConfigItemTextRowSignal>>>([]);\n\n /* INPUT */\n readonly configTemplate = input.required<IListViewConfigItemText | IListViewConfigItemCheckbox>();\n readonly item = input<any>();\n readonly keySelected = input<unknown>();\n readonly fieldKey = input<string>('id');\n readonly zIndex = input<number, number>(1200, { transform: (value) => !isEmpty(value) ? (value + 1) : 1200 });\n\n readonly outChangStageFlagMousePopover = output<IFlagMouse>();\n readonly outEvent = output<IEmitRowsEvent>();\n\n constructor() {\n effect(() => {\n untracked(() => this.afterViewInit());\n });\n }\n\n afterViewInit() {\n if (!this.configTemplate().rows?.length) {\n return;\n }\n\n this.configItemTextRows.set((convertObjectToSignal(this.configTemplate().rows) as WritableSignal<Array<WritableSignal<IListViewConfigItemTextRowSignal>>>)());\n }\n\n /* FUNCTIONS */\n protected handlerSelectItem(event: TYPE_POPOVER_EVENT, item: any, action: any) {\n if (event !== 'click') {\n return;\n }\n\n this.outEvent.emit({ event, item, action });\n }\n\n protected async handlerErrorImage(event: Event, functionGetImageError?: (item: any) => Observable<string>) {\n event.stopPropagation();\n\n if (!event.target || !functionGetImageError) {\n return;\n }\n\n ((event.target as any).src = await lastValueFrom(functionGetImageError(this.item())));\n }\n\n protected handlerChangStageFlagMouse(flag: IFlagMouse) {\n this.outChangStageFlagMousePopover.emit(flag);\n }\n}\n","@if (configTemplate() && configItemTextRows(); as configItemTextRows) {\n <div class=\"flex flex-col w-full {{ configTemplate().classRows ?? '' }}\">\n @for (row of configItemTextRows; track $index; let indexRow = $index;) {\n <div [class]=\"row().classRow\">\n @if (row().getImage && ((item() | LibsUiPipesCallFunctionInTemplatePipe:row().getImage:item()) | async); as imgUrl) {\n <img [class]=\"(item() | LibsUiPipesCallFunctionInTemplatePipe:row().getClassImage:item()) | async\"\n src=\"{{ imgUrl }}\"\n (error)=\"handlerErrorImage($event,row().getImageError)\" />\n }\n @if (item()['fieldRowAvatarConfig'+indexRow]; as avatarConfig) {\n <libs_ui-components-avatar [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]='avatarConfig.size || 32'\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (fieldKey() && item()['fieldLabelRow'+indexRow]; as labelRow) {\n <libs_ui-components-popover type=\"text\"\n [config]=\"row().getPopoverConfig ? (('popover' | LibsUiPipesCallFunctionInTemplatePipe:row().getPopoverConfig:item()) | async) : { zIndex: zIndex()}\"\n [classInclude]=\"(keySelected() === item()[fieldKey()]) ? (row().classItemSelected || row().classGetValue || '') :(row().classGetValue || '')\"\n [innerHtml]=\"labelRow\"\n (outChangStageFlagMouse)='handlerChangStageFlagMouse($event)'\n (outEvent)=\"handlerSelectItem($event,item(),row().action)\" />\n }\n @if (row().cols?.()?.length) {\n <div [class]=\"row().classCols || 'flex'\"\n [style]=\"item()[item()['fieldRowStylesDynamicCols'+indexRow]]\">\n @for (col of row().cols?.(); track $index; let colIndex = $index) {\n @if (col().getImage && ((item() | LibsUiPipesCallFunctionInTemplatePipe:col().getImage:item()) | async); as imgUrl) {\n <img [class]=\"(item() | LibsUiPipesCallFunctionInTemplatePipe:col().getClassImage:item()) | async\"\n src=\"{{ imgUrl }}\"\n (error)=\"handlerErrorImage($event,col().getImageError)\" />\n }\n @if (item()['fieldColAvatarConfig'+indexRow+colIndex]; as avatarConfig) {\n <libs_ui-components-avatar [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [size]='avatarConfig.size || 32'\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\" />\n }\n @if (item()['fieldLabelCol'+indexRow+colIndex]; as labelColFunc) {\n <libs_ui-components-popover type=\"text\"\n [style]=\"(' ' | LibsUiPipesCallFunctionInTemplatePipe:item()['fieldColStylesDynamic'+indexRow+colIndex]:item()) | async\"\n [classInclude]=\"(keySelected() === item()[fieldKey()]) ? (row().classItemSelected || col().classCol || '') :(col().classCol || '')\"\n [innerHtml]=\"('fieldLabelCol' | LibsUiPipesCallFunctionInTemplatePipe:labelColFunc:item()) | async\"\n [config]=\"{ zIndex: zIndex() }\"\n (outChangStageFlagMouse)='handlerChangStageFlagMouse($event)'\n (outEvent)=\"handlerSelectItem($event,item(),col().action)\" />\n }\n @if (item()['fieldColPopover'+indexRow+colIndex]; as popover) {\n <libs_ui-components-popover [type]=\"popover.type ?? 'other'\"\n [config]=\"popover?.config\"\n [classInclude]=\"col().classCol\"\n [style]=\"(' ' | LibsUiPipesCallFunctionInTemplatePipe:item()['fieldColStylesDynamic'+indexRow+colIndex]:item()) | async\"\n (outChangStageFlagMouse)='handlerChangStageFlagMouse($event)'\n (outEvent)=\"handlerSelectItem($event,item(),col().action)\">\n <span [class]=\"popover.classInclude || ''\"\n [innerHtml]=\"(popover.dataView ?? popoverIcon) | translate\">\n </span>\n </libs_ui-components-popover>\n }\n @if (item()['fieldColToggle'+indexRow+colIndex]; as toggle) {\n <libs_ui-components-label [style]=\"(' ' | LibsUiPipesCallFunctionInTemplatePipe:item()['fieldColStylesDynamic'+indexRow+colIndex]:item()) | async\"\n [hasToggle]=\"toggle.hasToggle\"\n [toggleActive]=\"toggle.toggleActive\"\n [toggleDisable]=\"toggle.toggleDisable\"\n [popover]=\"toggle.popover\"\n [classInclude]=\"toggle.classInclude\"\n [labelLeft]=\"toggle.labelLeft\"\n [labelRight]=\"toggle.labelRight\"\n (outSwitchEvent)=\"handlerSelectItem('click',item(),col().action)\" />\n }\n @if (item()['fieldColButton'+indexRow+colIndex]; as button) {\n <libs_ui-components-buttons-button [type]=\"button.type\"\n [classIconLeft]=\"button.classIconLeft\"\n [classIconRight]=\"button.classIconRight\"\n [classLabel]=\"button.classLabel\"\n [iconOnlyType]=\"button.iconOnlyType\"\n [popover]=\"button.popover\"\n [disable]=\"button.disable\"\n [ignorePointerEvent]=\"button.ignorePointerEvent\"\n [classInclude]=\"col().classCol ?? ' '\"\n [ignoreStopPropagationEvent]=\"false\"\n (outClick)=\"handlerSelectItem('click',item(),col().action)\" />\n }\n @if (item()['fieldBadge'+indexRow+colIndex]; as badge) {\n <libs_ui-components-badge [mode]=\"badge.mode || 'x+'\"\n [style]=\"(' ' | LibsUiPipesCallFunctionInTemplatePipe:item()['fieldColStylesDynamic'+indexRow+colIndex]:item()) | async\"\n [count]=\"badge.count\"\n [maxCount]=\"badge.maxCount || 99\"\n [classCircle]=\"badge.classCircle || 'libs-ui-font-h4r'\" />\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\nimport { Directive, ElementRef, inject, input, model, OnDestroy, output, signal, TemplateRef, viewChild, WritableSignal } from \"@angular/core\";\nimport { ISort } from \"@libs-ui/components-buttons-sort\";\nimport { IInputSearchConfig } from \"@libs-ui/components-inputs-search\";\nimport { IFlagMouse } from \"@libs-ui/components-popover\";\nimport { IPaging, TYPE_TEMPLATE_REF } from \"@libs-ui/interfaces-types\";\nimport { LibsUiHttpRequestService } from \"@libs-ui/services-http-request\";\nimport { cloneDeep, convertObjectToSignal } from \"@libs-ui/utils\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { interval, Subject, Subscription } from 'rxjs';\nimport { skipWhile, take, takeUntil } from 'rxjs/operators';\nimport { getFieldKeyByType } from \"../defines/list.define\";\nimport { IListDataEmitKey, IListDataEmitMultiKey } from \"../interfaces\";\nimport { IListViewConfigItem, IListViewConfigItemCheckbox, IListViewConfigItemRadio, IListViewConfigItemText } from \"../interfaces/config-item.interface\";\n\n@Directive()\nexport abstract class LibsUiComponentsListTemplatesComponentAbstract implements OnDestroy {\n /* PROPERTY */\n protected loading = signal<boolean>(true);\n protected heightViewPort = signal<number>(0);\n protected store = signal<Array<WritableSignal<any>>>([]);\n protected items = signal<Array<WritableSignal<any>>>([]);\n protected loadedLastItem = signal<boolean>(false);\n protected hasScroll = signal<boolean>(false);\n protected fieldKeyDefault = signal<string>('id');\n protected fieldKey = signal<string>('id');\n protected timeAutoScrollItemSelected = signal<number>(0);\n protected pagingStore = signal<IPaging | undefined>(undefined);\n protected heightItem = signal<number>(0);\n protected timeIntervalIntervalSetHeightViewPort = signal<number>(0);\n protected timeIntervalCheckScroll = signal<number>(250);\n\n protected onDestroy: Subject<void> = new Subject();\n protected intervalSetHeightViewPortSubscription!: Subscription;\n protected intervalCheckScrollSubscription!: Subscription;\n\n /* INPUT */\n readonly functionCustomAddDataToStore = input<(data: any, store: any) => void>();\n readonly functionGetItemsAutoAddList = input<(() => Array<any>) | undefined>();\n readonly paddingLeftItem = input<boolean | undefined>(undefined);\n readonly maxItemShow = input<number>(0);\n readonly searchConfig = input<IInputSearchConfig>();\n readonly config = input<IListViewConfigItem>();\n readonly keySearch = model<string>('');\n readonly dropdownTabKeyActive = input<string | undefined>();\n readonly isSearchOnline = input<boolean>(false);\n\n readonly onSearch = input<Subject<string>>();\n readonly onRefresh = input<Subject<void>>();\n readonly onSetHiddenItemByKey = input<Subject<Array<unknown>>>();\n readonly onRemoveItems = input<Subject<Array<unknown>>>();\n readonly onSetDataStore = input<Subject<Array<any>>>();\n readonly onUpdateMultiKeySelectedGroup = input<Subject<void>>();\n readonly onItemChangeUnSelect = input<Subject<any>>();\n readonly clickExactly = input<boolean>();\n readonly keySelected = model<unknown>(); // sử dụng cho type radio,text.\n readonly multiKeySelected = model<Array<unknown> | undefined>(); // sử dụng cho type cho phép chọn nhiều.\n readonly keysDisableItem = input<Array<unknown> | undefined>();\n readonly keysHiddenItem = model<Array<unknown> | undefined>();\n readonly disable = input<boolean | undefined>();\n readonly disableLabel = input<boolean | undefined>();\n readonly zIndex = input<number>(1200);\n readonly loadingIconSize = input<'large' | 'medium' | 'small' | 'smaller' | undefined>();\n readonly resetKeyWhenSelectAllKeyDropdown = input<boolean | undefined>();\n readonly ignoreClassDisableDefaultWhenUseKeysDisableItem = input<boolean | undefined>(); // bỏ chế độ disable item trên html để disable từng phần trong rows\n readonly templateRefSearchNoData = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>(undefined);\n\n /* OUTPUT */\n readonly outSortSingleSelect = output<ISort>();\n readonly outSelectKey = output<IListDataEmitKey | undefined>(); // sử dụng cho type radio,text.\n readonly outSelectMultiKey = output<IListDataEmitMultiKey>(); // sử dụng cho type cho phép chọn nhiều.\n readonly outUnSelectMultiKey = output<Array<unknown>>(); // sử dụng cho type cho phép chọn nhiều.\n readonly outFieldKey = output<unknown>();\n readonly outChangeView = output<Array<any>>();\n readonly outLoading = output<boolean>();\n readonly outChangStageFlagMousePopover = output<IFlagMouse>();\n readonly outLoadItemsComplete = output<{ items: Array<any>, paging?: IPaging }>();\n\n /* VIEW CHILD */\n protected itemRef = viewChild<ElementRef>('itemRef');\n\n /* INJECT */\n protected translateService = inject(TranslateService);\n protected httpRequestService = inject(LibsUiHttpRequestService);\n\n constructor() {\n this.outLoading.emit(this.loading());\n }\n\n ngOnInit(): void {\n this.onSearch()?.pipe(takeUntil(this.onDestroy)).subscribe((keySearch: string) => {\n this.keySearch.set(keySearch);\n this.processSearch();\n });\n this.onRefresh()?.pipe(skipWhile(() => this.loading()), takeUntil(this.onDestroy)).subscribe(() => {\n if (this.dropdownTabKeyActive()) {\n this.items.set([]);\n this.store.set([]);\n }\n this.callApiByService(true);\n });\n this.onItemChangeUnSelect()?.pipe(takeUntil(this.onDestroy)).subscribe((item: any) => {\n if (!item) {\n return;\n }\n this.processKeyChangeUnSelect(item);\n });\n // this.onSetDataStore()?.pipe(takeUntil(this.onDestroy)).subscribe((data) => {\n // this.setDataStore(data)\n // });\n this.onSetHiddenItemByKey()?.pipe(takeUntil(this.onDestroy)).subscribe(this.setHiddenItemByKey.bind(this));\n this.outFieldKey.emit(getFieldKeyByType(this.config(), this.fieldKeyDefault()));\n this.onRemoveItems()?.pipe(takeUntil(this.onDestroy)).subscribe(this.removeItems.bind(this));\n }\n\n /* FUNCTIONS */\n // protected setDataStore(data: Array<any>) {\n // if (!data || !data.length) {\n // return;\n // }\n // if (this.config()?.type === 'checkbox') {\n // data.forEach(item => (item.isAddNew = true));\n // }\n // this.functionCustomAddDataToStore()?.(data, this.store());\n\n // if (!this.functionCustomAddDataToStore()) {\n // this.store.update(items => {\n // return [...convertObjectToSignal(data), ...items];\n // });\n // }\n // this.processData();\n // }\n\n private getFieldKey() {\n let fieldKey: string | undefined;\n\n switch (this.config()?.type) {\n case 'group':\n fieldKey = this.config()?.configTemplateGroup?.fieldKey;\n break;\n\n case 'tag':\n fieldKey = this.config()?.configTemplateTag?.fieldKey;\n break;\n\n case 'text':\n fieldKey = this.config()?.configTemplateText?.fieldKey;\n break;\n\n case 'checkbox':\n fieldKey = this.config()?.configTemplateCheckbox?.fieldKey;\n break;\n\n case 'radio':\n fieldKey = this.config()?.configTemplateRadio?.fieldKey;\n break;\n }\n\n return fieldKey || 'id';\n }\n\n private removeItems(keys: Array<unknown>) {\n const fieldKey = this.getFieldKey();\n\n [this.store(), this.items()].forEach(element => {\n if (this.config()?.type === 'group') {\n element.forEach(item => {\n this.removeItem(item()[this.config()?.configTemplateGroup?.fieldGetItems || 'items'](), keys, fieldKey);\n });\n\n return;\n }\n this.removeItem(element, keys, fieldKey);\n });\n this.processData();\n }\n\n private removeItem(data: Array<WritableSignal<any>>, keys: Array<unknown>, fieldKey: string) {\n if (!data || !data.length) {\n return;\n }\n keys.forEach(key => {\n const index = data.findIndex(item => item()[fieldKey] === key);\n\n if (index > -1) {\n data.splice(index, 1);\n }\n });\n }\n\n protected setHeightViewPort(callBackCalculatorHeightSuccess?: () => void) {\n const lengthItems = this.getLengthItem();\n\n if (!lengthItems) {\n this.outChangeView.emit([...this.items()]);\n if (this.heightItem()) {\n this.heightViewPort.set(this.heightItem());\n }\n callBackCalculatorHeightSuccess?.();\n\n return;\n }\n const heightViewPort = this.getHeightGroupHasLine() + (lengthItems < this.maxItemShow() ? lengthItems * this.heightItem() : this.maxItemShow() * this.heightItem()) + (this.config()?.configTemplateGroup?.configCheckboxCheckAll ? 27 : 0) + (this.config()?.configTemplateGroup?.configButtonSelectAndUndSelectItem ? 27 : 0);\n\n if (!this.maxItemShow()) {\n this.heightViewPort.set(0);\n }\n if (this.heightItem() > 13) {\n if (heightViewPort && heightViewPort !== this.heightViewPort()) {\n this.heightViewPort.set(heightViewPort);\n }\n this.outChangeView.emit([...this.items()]);\n callBackCalculatorHeightSuccess?.();\n\n return;\n }\n this.intervalSetHeightViewPortSubscription?.unsubscribe();\n this.intervalSetHeightViewPortSubscription = interval(this.timeIntervalIntervalSetHeightViewPort()).pipe(takeUntil(this.onDestroy)).subscribe(() => {\n if (!this.itemRef() || !this.itemRef()?.nativeElement) {\n return;\n }\n this.heightItem.set(this.itemRef()?.nativeElement.getBoundingClientRect().height);\n\n if (this.heightItem() < 13) {\n return;\n }\n this.intervalSetHeightViewPortSubscription?.unsubscribe();\n this.setHeightViewPort(callBackCalculatorHeightSuccess);\n });\n }\n\n protected setHiddenItemByKey(keys: Array<unknown>) {\n this.keysHiddenItem.set(keys);\n if (this.store() && this.store().length) {\n this.processData(false);\n }\n }\n\n protected checkViewPortScroll(callBack?: (pre: boolean, current: boolean) => void) {\n const pre = this.hasScroll();\n\n this.intervalCheckScrollSubscription?.unsubscribe();\n this.intervalCheckScrollSubscription = interval(this.timeIntervalCheckScroll()).pipe(take(5)).subscribe(() => {\n this.hasScroll.set(false);\n if (this.items() && !this.items().length && pre && !this.hasScroll()) {\n callBack?.(pre, this.hasScroll());\n this.intervalCheckScrollSubscription?.unsubscribe();\n }\n callBack?.(pre, this.hasScroll());\n this.intervalCheckScrollSubscription?.unsubscribe();\n });\n }\n\n protected async callApiByService(firstCall = true) {\n const config = this.config();\n\n if (!config) {\n return;\n }\n try {\n const { httpRequestData, ignoreShowDataWhenNotSearch } = config;\n\n if (!httpRequestData || (ignoreShowDataWhenNotSearch && !this.keySearch())) {\n this.loading.set(false);\n this.outLoading.emit(this.loading());\n this.loadedLastItem.set(true);\n if (ignoreShowDataWhenNotSearch && !this.keySearch()) {\n this.items.set([]);\n this.store.set([]);\n this.processData(true);\n }\n\n return;\n }\n this.loading.set(true);\n this.outLoading.emit(this.loading());\n const { argumentsValue, guideAutoUpdateArgumentsValue } = httpRequestData;\n\n if (firstCall) {\n const loadedLastItem = this.httpRequestService.updateArguments(argumentsValue, { ...this.fakeResponseApi(), dropdownTabKeyActive: this.dropdownTabKeyActive() }, this.pagingStore() || {}, this.keySearch(), this.isSearchOnline(), this.loadedLastItem(), guideAutoUpdateArgumentsValue);\n this.loadedLastItem.set(loadedLastItem);\n }\n const result = await this.httpRequestService.callApi(httpRequestData);\n\n this.pagingStore.set(result.paging);\n if (!this.pagingStore) {\n this.loadedLastItem.set(true);\n }\n const loadedLastItem = this.httpRequestService.updateArguments(argumentsValue, { ...result, dropdownTabKeyActive: this.dropdownTabKeyActive() }, this.pagingStore() || {}, this.keySearch(), this.isSearchOnline(), this.loadedLastItem(), guideAutoUpdateArgumentsValue);\n\n this.loadedLastItem.set(loadedLastItem);\n\n if (firstCall) {\n this.store.set(convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(result.data || [])());\n\n if (this.functionGetItemsAutoAddList()) {\n const newItems = convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(this.functionGetItemsAutoAddList()?.() || []);\n\n this.store.update(items => [...newItems(), ...items]);\n }\n this.processData(true);\n\n return;\n }\n this.store.update(items => [...items, ...convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(result.data || [])()]);\n this.processData(false);\n } catch (error) {\n this.loading.set(false);\n this.outLoading.emit(this.loading());\n console.log(error);\n }\n }\n\n protected fakeResponseApi(): Record<string, any> {\n this.loadedLastItem.set(false);\n this.pagingStore.set({});\n\n return this.httpRequestService.fakeResponsePagingApi();\n }\n\n protected buildValueByConfig(item: WritableSignal<any>, configTemplate?: IListViewConfigItemText | IListViewConfigItemRadio | IListViewConfigItemCheckbox): string {\n const ref = item().ref || {};\n const label: unknown = ref.label || ref.title || ref.value || ref.name || ' ';\n\n if (typeof label === 'string') {\n item.update(currentItem => {\n return { ...currentItem, fieldLabel: this.translateService.instant(ref.label || ref.title || ref.value || ref.name || ' ') };\n });\n }\n\n if (configTemplate?.getValue) {\n const value = configTemplate.getValue(ref);\n\n item.update(currentItem => {\n return { ...currentItem, fieldLabel: value ? this.translateService.instant(`${value}`) : '' };\n });\n }\n if (configTemplate?.getPopover) {\n item.update(currentItem => {\n return { ...currentItem, popoverLabel: configTemplate?.getPopover?.(item()) };\n });\n }\n\n if (!configTemplate?.rows) {\n return item().fieldLabel;\n }\n let textSearch = item().fieldLabel || '';\n\n configTemplate.rows.forEach((row, indexRow) => {\n const fieldNameRow = `fieldLabelRow${indexRow}`;\n\n const currentItem = cloneDeep(item());\n const newItem = { ...currentItem };\n newItem[fieldNameRow] = row.getValue && row.getValue(ref);\n newItem[`fieldRowStylesDynamicCols${indexRow}`] = row.getRowStylesDynamicCols && row.getRowStylesDynamicCols(ref);\n newItem[`fieldRowAvatarConfig${indexRow}`] = row.getAvatarConfig && row.getAvatarConfig(ref);\n if (row.cols && row.cols.length) {\n row.cols.forEach(async (col, indexCol) => {\n const fieldNameCol = `fieldLabelCol${indexRow}${indexCol}`;\n\n newItem[fieldNameCol] = col.getValue;\n newItem[`fieldColPopover${indexRow}${indexCol}`] = col.getPopover && col.getPopover(ref, indexCol);\n newItem[`fieldBadge${indexRow}${indexCol}`] = col.getConfigBadge && col.getConfigBadge(ref, indexCol);\n newItem[`fieldColStylesDynamic${indexRow}${indexCol}`] = col.getStylesDynamicCol;\n newItem[`fieldColButton${indexRow}${indexCol}`] = col.getButton && col.getButton(ref, indexCol);\n newItem[`fieldColSwitch${indexRow}${indexCol}`] = col.getLabelSwitch && col.getLabelSwitch(ref, indexCol);\n newItem[`fieldColAvatarConfig${indexRow}${indexCol}`] = col.getAvatarConfig && col.getAvatarConfig(ref);\n\n textSearch = ` ${textSearch} ${newItem[fieldNameCol] || ''} `;\n });\n }\n\n item.update(() => newItem);\n textSearch = ` ${textSearch} ${item()[fieldNameRow] || ''} `;\n });\n\n return textSearch || ' ';\n }\n\n protected handlerChangStageFlagMouse(flag: IFlagMouse) {\n this.outChangStageFlagMousePopover.emit(flag);\n }\n\n protected abstract processData(isReplace?: boolean): any;\n protected abstract processSearch(): any;\n protected abstract getLengthItem(): number;\n protected getHeightGroupHasLine(): number {\n return 0;\n }\n protected abstract processKeyChangeUnSelect(item: any): void;\n\n ngOnDestroy() {\n clearTimeout(this.timeAutoScrollItemSelected());\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, signal, viewChild, WritableSignal } from '@angular/core';\nimport { VirtualScrollerComponent, VirtualScrollerModule } from '@iharbeck/ngx-virtual-scroller';\nimport { LibsUiComponentsAvatarComponent } from '@libs-ui/components-avatar';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { ISort, LibsUiComponentsButtonsSortArrowComponent } from '@libs-ui/components-buttons-sort';\nimport { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';\nimport { LibsUiComponentsSwitchComponent } from '@libs-ui/components-switch';\nimport { cloneDeep, convertObjectToSignal, deleteUnicode, escapeHtml, isEmpty, isNil } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LibsUiComponentsListHighlightKeySearchDirective } from '../../highlight-key-search/highlight-key-search.directive';\nimport { LibsUiCheckSelectedByKeyPipe } from '../../pipes/check-selected-by-key.pipe';\nimport { LibsUiComponentsListRowsComponent } from '../rows/rows.component';\nimport { LibsUiComponentsListTemplatesComponentAbstract } from '../templates.component.abstract';\nimport { IListViewConfigItemText } from './../../interfaces/config-item.interface';\nimport { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-list-templates_text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n VirtualScrollerModule, NgTemplateOutlet, TranslateModule, NgClass, AsyncPipe,\n LibsUiComponentsSpinnerComponent,\n LibsUiComponentsAvatarComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsScrollOverlayDirective,\n LibsUiCheckSelectedByKeyPipe,\n LibsUiComponentsSwitchComponent,\n LibsUiComponentsButtonsSortArrowComponent,\n LibsUiComponentsListHighlightKeySearchDirective,\n LibsUiComponentsListRowsComponent,\n LibsUiPipesCallFunctionInTemplatePipe\n ]\n})\nexport class LibsUiComponentsListTextComponent extends LibsUiComponentsListTemplatesComponentAbstract implements OnInit {\n /* PROPERTY */\n protected configTemplateText = signal<IListViewConfigItemText | undefined>(undefined);\n\n /* VIEW CHILD */\n private readonly virtualScrollerComponent = viewChild<VirtualScrollerComponent>(VirtualScrollerComponent);\n\n override ngOnInit(): void {\n if (isEmpty(this.config()?.configTemplateText)) {\n return;\n }\n super.ngOnInit();\n\n this.configTemplateText.set(this.config()?.configTemplateText);\n this.fieldKey.set(this.configTemplateText()?.fieldKey ?? this.fieldKeyDefault());\n this.callApiByService();\n }\n\n /* FUNCTIONS */\n protected handlerScrollBottom() {\n if (this.loadedLastItem()) {\n this.loading.set(false);\n this.outLoading.emit(this.loading());\n\n return;\n }\n if (this.loading() || this.loadedLastItem()) {\n return;\n }\n this.loading.set(true);\n this.outLoading.emit(this.loading());\n this.callApiByService(false);\n }\n\n protected processSearch() {\n if (!this.isSearchOnline()) {\n return this.processData(true);\n }\n this.callApiByService(true);\n }\n\n protected handlerClickRelative(e: Event, item: any) {\n e.stopPropagation();\n if (this.clickExactly()) {\n return;\n }\n this.handlerSelectItem(e, item);\n }\n\n protected processKeyChangeUnSelect(item: any): void {\n if (isNil(item[this.fieldKey()]) || item[this.fieldKey()] === '' || this.keySelected() !== item[this.fieldKey()]) {\n return;\n }\n this.keySelected.set('');\n this.outSelectKey.emit(undefined);\n }\n\n protected handlerSelectItem(e: Event | string, item: any, action?: (item: any) => void, ignoreDisable = false) {\n if (e instanceof Event) {\n e.stopPropagation();\n e.preventDefault();\n }\n if (item.disable) {\n return;\n }\n if (this.disable() && !ignoreDisable) {\n return;\n }\n if (typeof e === 'string' && e !== 'click') {\n return;\n }\n if (!item || (this.keysDisableItem() && this.keysDisableItem()?.some(key => key === item[this.fieldKey()]))) {\n return;\n }\n if (action) {\n action(item.ref);\n this.items().forEach(item => {\n this.buildValueByConfig(item, this.configTemplateText());\n });\n\n return;\n }\n if (this.configTemplateText()?.actionSort) {\n const currentItemSort = this.configTemplateText()?.itemSort;\n const mode = currentItemSort?.fieldSort !== item[this.fieldKey()] ? 'asc' : currentItemSort?.mode === 'desc' ? 'asc' : 'desc';\n const newSort: ISort = {\n fieldSort: item[this.fieldKey()],\n mode,\n modeNumber: mode === 'asc' ? 1 : 2,\n reset: () => 0\n };\n\n this.configTemplateText.update(item => {\n if (!item) {\n return;\n }\n return { ...item, itemSort: newSort }\n });\n\n this.outSortSingleSelect.emit(this.configTemplateText()?.itemSort || newSort);\n }\n\n this.keySelected.set(item[this.fieldKey()]);\n this.outSelectKey.emit({ key: this.keySelected(), item, isClickManual: true });\n }\n\n protected handlerSort(itemSort: ISort) {\n itemSort.reset = () => 0;\n\n this.configTemplateText.update(item => {\n if (!item) {\n return;\n }\n return { ...item, itemSort: itemSort }\n });\n this.outSortSingleSelect.emit(this.configTemplateText()?.itemSort || itemSort);\n }\n\n protected processData(replace?: boolean): void {\n const itemByKeySearch: Array<WritableSignal<any>> = [];\n const keysHidden = this.keysHiddenItem() || [];\n\n if (replace) {\n this.items.set([])\n }\n this.store().forEach((item) => {\n const dataStore = cloneDeep(item) as WritableSignal<any>;\n const key = keysHidden.find(key => dataStore()[this.fieldKey()] === key);\n dataStore.update(store => { return { ...store, ref: item() } });\n\n if (key === undefined) {\n const text = deleteUnicode(this.buildValueByConfig(dataStore, this.configTemplateText())).toLocaleLowerCase();\n\n // console.log(text, dataStore());\n\n const textEscape = escapeHtml(text);\n const keySearch = deleteUnicode(escapeHtml(this.keySearch().toLocaleLowerCase()));\n\n if (((this.isSearchOnline() && this.config()?.httpRequestData?.serviceName && !this.config()?.httpRequestData?.serviceOther) ||\n (text && (text.includes(keySearch) || textEscape.includes(keySearch)))) && (replace || (!replace && !this.items().find(dataItem => dataItem()[this.fieldKey()] === dataStore()[this.fieldKey()]))) && !itemByKeySearch.find(dataItem => dataItem()[this.fieldKey()] === dataStore()[this.fieldKey()])) {\n dataStore.update(store => {\n return {\n ...store,\n hrefButton: this.configTemplateText()?.getHrefButton?.(store),\n classItem: item().classItem || this.configTemplateText()?.getClassItem?.(store),\n classInclude: store.classInclude || this.configTemplateText()?.getClassIncludePopover?.(store),\n buttonLeftConfig: this.configTemplateText()?.getConfigButtonLeft?.(store),\n classIconLeft: store.classIconLeft || this.configTemplateText()?.getClassIconLeft?.(store),\n hoverDanger: store.hoverDanger || this.configTemplateText()?.getConfigHoverDanger?.(store),\n avatarConfig: this.configTemplateText()?.getAvatarConfig?.(store),\n itemAlignStart: store.itemAlignStart || this.configTemplateText()?.getConfigAlignStart?.(store),\n }\n });\n itemByKeySearch.push(dataStore);\n }\n\n return;\n }\n const indexItemRemove = this.items().findIndex(item => item()[this.fieldKey()] === key);\n\n if (indexItemRemove > -1) {\n this.items.update(items => {\n items.splice(indexItemRemove, 1);\n\n return items;\n });\n }\n });\n const checkLoadItem = (preStateHasScroll: boolean, currentHasScroll: boolean) => {\n if (this.keysHiddenItem()?.length && preStateHasScroll && !currentHasScroll && (this.isSearchOnline())) {\n this.callApiByService(false);\n }\n };\n\n if (replace) {\n const items = convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(itemByKeySearch)();\n this.items.set(items);\n this.config()?.sort?.(this.items());\n this.emitKeySelectedDefaultIfExistItem(this.items());\n this.autoSelectFirstItem(this.items());\n this.setHeightViewPort();\n this.loading.set(false);\n this.checkViewPortScroll(checkLoadItem);\n this.scrollToItemSelected();\n this.outLoading.emit(this.loading());\n this.outLoadItemsComplete.emit({ items: this.items(), paging: this.pagingStore() });\n return;\n }\n const itemsBySearch = convertObjectToSignal<WritableSignal<Array<WritableSignal<any>>>>(itemByKeySearch)();\n this.items.update(items => [...items, ...itemsBySearch]);\n this.config()?.sort?.(this.items());\n this.setHeightViewPort();\n this.loading.set(false);\n this.checkViewPortScroll(checkLoadItem);\n this.scrollToItemSelected();\n this.outLoading.emit(this.loading());\n this.outLoadItemsComplete.emit({ items: this.items(), paging: this.pagingStore() });\n }\n\n private scrollToItemSelected() {\n if (!this.configTemplateText()?.autoScrollToItemSelected) {\n return;\n }\n\n clearTimeout(this.timeAutoScrollItemSelected());\n this.timeAutoScrollItemSelected.set((setTimeout(() => {\n if (!this.keySelected()) {\n return;\n }\n const index = this.items().findIndex(item => item()[this.fieldKey()] === this.keySelected);\n\n if (index !== -1) {\n this.virtualScrollerComponent()?.scrollToIndex(index);\n }\n }) as unknown) as number);\n }\n\n protected autoSelectFirstItem(items: Array<WritableSignal<any>>) {\n if (this.keySelected() || !this.config()?.autoSelectFirstItem || !items || !items.length) {\n return;\n }\n this.handlerSelectItem('click', items[0](), undefined, true);\n }\n\n protected emitKeySelectedDefaultIfExistItem(items: Array<WritableSignal<any>>) {\n const item = items.find(store => store()[this.fieldKey()] === this.keySelected());\n\n if (item) {\n this.handlerSelectItem('click', item(), undefined, true);\n }\n }\n\n protected getLengthItem(): number {\n return this.items().length;\n }\n\n protected handlerImageError(event: Event, item: any) {\n event.stopPropagation();\n item.specific_loadImgError = true;\n }\n}\n","@if (configTemplateText(); as configTemplateText) {\n <div class=\"relative h-full w-full\">\n @if (items() && items().length) {\n <div #elementScroll\n [style.height]=\"!configTemplateText.notUseVirtualScroll && heightViewPort() && (!config()?.ignoreShowDataWhenNotSearch || (config()?.ignoreShowDataWhenNotSearch && config()?.ignoreFixHeightShowDataWhenNotSearch)) ? heightViewPort()+'px':'100%'\"\n class=\"w-full\"\n LibsUiComponentsScrollOverlayDirective\n (outScrollBottom)=\"handlerScrollBottom()\">\n @if (!configTemplateText.notUseVirtualScroll) {\n <virtual-scroller #scroll\n [parentScroll]=\"elementScroll\"\n [items]=\"items()\"\n class=\"h-full\">\n <ng-container *ngTemplateOutlet='listRef;context:{itemsView:scroll.viewPortItems}' />\n </virtual-scroller>\n }\n @if (configTemplateText.notUseVirtualScroll) {\n <ng-container *ngTemplateOutlet='listRef;context:{itemsView:items()}' />\n }\n </div>\n }\n @if ((!items() || !items().length) && (!config()?.ignoreShowDataWhenNotSearch || keySearch())) {\n <div [class]=\"'libs-ui-font-h5r text-[#9ca2ad] '+ (config()?.textNoDataClassInclude ?? 'py-[6px] px-[16px]')\">\n @if (!keySearch() && !loading()) {\n {{ (config()?.textNoData ?? 'i18n_have_no_selection') | translate }}\n }\n @if (templateRefSearchNoData() && keySearch() && !loading()) {\n <ng-container *ngTemplateOutlet=\"templateRefSearchNoData() || null;context:{keySearch:keySearch()}\"></ng-container>\n }\n @if (!templateRefSearchNoData() && keySearch() && !loading()) {\n {{ (config()?.textSearchNoData ?? 'i18n_no_result') | translate }}\n }\n @if (loading()) {\n \n }\n </div>\n }\n @if (loading()) {\n <libs_ui-components-spinner [size]=\"loadingIconSize() || 'medium'\" />\n }\n </div>\n <ng-template #listRef\n let-itemsView='itemsView'>\n @for (item of itemsView; track item()[fieldKey()]) {\n <div #itemRef\n [class]=\"item().classItemWrapper || ''\">\n <div LibsUiComponentsListHighlightKeySearchDirective\n [isHighlight]=\"config()?.highlightTextSearchInResult\"\n [keySearch]=\"keySearch()\"\n [class]=\"'libs-ui-list-template-text-item flex '+(item().classItem || '')\"\n [class.items-center]=\"!item().itemAlignStart\"\n [class.items-start]=\"item().itemAlignStart\"\n [class.libs-ui-bg-list-hover-danger]=\"!clickExactly() && item().hoverDanger\"\n [class.libs-ui-bg-list-hover]=\"!clickExactly() && !item().hoverDanger\"\n [class.libs-ui-bg-list-selected]=\"!clickExactly() && keySelected() === item()[fieldKey()]\"\n [class.pl-[16px]]=\"paddingLeftItem()\"\n [class.bg-[#ffffff]]=\"clickExactly()\"\n [class.libs-ui-bg-list-hover-ffffff]=\"item().disable\"\n [class.cursor-default]=\"item().disable\"\n [class.py-[2px]]=\"clickExactly()\"\n [class.pr-[48px]]=\"keySelected() === item()[fieldKey()] && (!configTemplateText?.ignoreIconSelected || configTemplateText?.actionSort)&& !configTemplateText?.stylePaddingRightItemOther\"\n [ngClass]=\"{'pointer-events-none libs-ui-disable':loading() || disable() || ((item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:keysDisableItem():keysDisableItem()?.length) && !ignoreClassDisableDefaultWhenUseKeysDisableItem())}\"\n (click)=\"handlerClickRelative($event,item())\">\n @if (item().bullet) {\n <span class=\"libs-ui-list-template-text-item-bullet flex flex-shrink-0\"\n [style.background-color]=\"item().bullet.backgroundColor\"\n (click)=\"handlerSelectItem($event,item())\">\n </span>\n }\n\n @if (item().avatarConfig; as avatarConfig) {\n <libs_ui-components-avatar [typeShape]=\"avatarConfig.typeShape || 'circle'\"\n [classInclude]=\"avatarConfig.classInclude\"\n [classImageInclude]=\"avatarConfig.classImageInclude\"\n [size]='avatarConfig.size || 32'\n [linkAvatar]=\"avatarConfig.linkAvatar\"\n [linkAvatarError]=\"avatarConfig.linkAvatarError\"\n [idGenColor]=\"avatarConfig.idGenColor\"\n [textAvatar]=\"avatarConfig.textAvatar\"\n [classImageInclude]=\"avatarConfig.classImageInclude\" />\n }\n @if (configTemplateText.getImage || configTemplateText.fieldGetImage) {\n <img\n [src]=\"configTemplateText.getImage ? (('avatar' | LibsUiPipesCallFunctionInTemplatePipe:(item().specific_loadImgError && configTemplateText.getImageError ? configTemplateText.getImageError : configTemplateText.getImage):item()) | async) : item()[configTemplateText.fieldGetImage || '']\"\n [class]=\"'libs-ui-list-template-text-item-avatar ' + (configTemplateText.classIncludeImage ?? '')\"\n [class.w-[18px]]=\"configTemplateText.imgTypeIcon\"\n [class.h-[18px]]=\"configTemplateText.imgTypeIcon\"\n (error)=\"handlerImageError($event, item())\"\n (click)=\"handlerSelectItem($event,item())\" />\n }\n @if (item().buttonLeftConfig; as buttonLeft) {\n @if (item().hrefButton) {\n <a [class.w-full]=\"!buttonLeft.ignoreWidth100\"\n [href]=\"item().hrefButton\">\n <ng-container *ngTemplateOutlet=\"buttonLeftTemplate\"></ng-container>\n </a>\n }\n @if (!item().hrefButton) {\n <div [class.w-full]=\"!buttonLeft.ignoreWidth100\">\n <ng-container *ngTemplateOutlet=\"buttonLeftTemplate\"></ng-container>\n </div>\n }\n <ng-template #buttonLeftTemplate>\n <libs_ui-components-buttons-button class=\"w-full\"\n [type]=\"buttonLeft.type || 'button-link-primary'\"\n [label]=\"buttonLeft.label || ' '\"\n [zIndex]=\"buttonLeft.zIndex\"\n [disable]=\"buttonLeft.disable\"\n [classIconLeft]=\"buttonLeft.classIconLeft ? ((buttonLeft.classIconLeft || '')+' flex mr-[8px] text-[12px]') : ''\"\n [classInclude]=\"(buttonLeft.classInclude|| '')+' w-full'\"\n [classLabel]=\"(buttonLeft.classLabel ?? 'libs-ui-font-h4r')\"\n [ignoreStopPropagationEvent]=\"buttonLeft.ignoreStopPropagationEvent\"\n [styleIconLeft]=\"buttonLeft.styleIconLeft\"\n [styleButton]=\"buttonLeft.styleButton\"\n (moClick)=\"handlerSelectItem($event,item())\" />\n </ng-template>\n }\n @if (item().switchConfig) {\n <libs_ui-components-switch [active]=\"item().switchConfig.active\"\n (moSwitch)=\"handlerSelectItem('click',item())\" />\n }\n @if (item().classIconLeft) {\n <i [class]=\"item().classIconLeft + ' mr-[8px] text-[14px]'\"></i>\n }\n @if (!item().ignoreShowFieldLabel && !configTemplateText.rows) {\n <libs_ui-components-popover [type]=\"item().popoverLabel?.type || 'text'\"\n [elementRefCustom]=\"item().popoverLabel?.type === 'text'? undefined:itemRef\"\n [ignoreShowPopover]=\"item().popoverLabel?.ignoreShowPopover\"\n [config]=\"item().popoverLabel?.config || (configTemplateText.configLabelPopover || {})\"\n [innerHtml]=\"item().fieldLabel\"\n [classInclude]=\"item().classInclude\"\n (moEvent)=\"handlerSelectItem($event,item())\" />\n }\n @if (item().fieldPopover; as popover) {\n <libs_ui-components-popover class=\"{{ popover.classInclude || '' }}\"\n [config]=\"popover?.config\">\n @if (!popover.dataView) {\n <i class=\"libs-ui-icon-tooltip-outline\"></i>\n }\n @if (popover.dataView) {\n <div [innerHtml]=\"popover.dataView | translate\"></div>\n }\n </libs_ui-components-popover>\n }\n @if (configTemplateText?.rows) {\n <libs_ui-components-list-templates_rows class=\"w-full {{ configTemplateText.classRowsWrapper || configTemplateText.classRows || '' }}\"\n [item]=\"item()\"\n [fieldKey]=\"fieldKey()\"\n [keySelected]=\"keySelected()\"\n [configTemplate]=\"configTemplateText\"\n [zIndex]=\"zIndex()\"\n (outChangStageFlagMousePopover)=\"handlerChangStageFlagMouse($event)\"\n (outEvent)=\"handlerSelectItem($event.event,$event.item,$event.action)\" />\n }\n @if ((keySelected === item()[fieldKey()] || (item()[fieldKey()] | LibsUiCheckSelectedByKeyPipe:multiKeySelected():multiKeySelected()?.length) ? item()[fieldKey()] : undefined) && !configTemplateText.ignoreIconSelected && !configTemplateText.actionSort) {\n <i [class]=\"'libs-ui-icon-check '+(configTemplateText.classIncludeIconSelected || 'right-[12px]')\">\n </i>\n }\n @if (keySelected() === item()[fieldKey()] && configTemplateText.actionSort) {\n <div class=\"libs-ui-list-template-text-sort\">\n <libs_ui-components-buttons-sort-arrow [disable]=\"loading() || disable() || false\"\n [mode]=\"configTemplateText.itemSort?.mode || ''\"\n [fieldSort]=\"item()[fieldKey()]\"\n (outChange)=\"handlerSort($event)\" />\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { TYPE_TEMPLATE } from \"../interfaces/templates-type.type\";\nimport { LibsUiComponentsListTextComponent } from \"../templates/text/text.component\";\nimport { IListViewConfigItem } from './../interfaces/config-item.interface';\n\nexport const getComponentByType = (typeTemplate: TYPE_TEMPLATE) => {\n switch (typeTemplate) {\n case 'checkbox':\n return LibsUiComponentsListTextComponent;\n\n case 'group':\n return LibsUiComponentsListTextComponent;\n\n case 'radio':\n return LibsUiComponentsListTextComponent;\n\n case 'text':\n return LibsUiComponentsListTextComponent;\n\n case 'tag':\n return LibsUiComponentsListTextComponent;\n }\n\n};\n\nexport const getFieldKeyByType = (config: IListViewConfigItem | undefined, fieldKeyDefault: unknown): unknown => {\n if (!config) {\n return;\n }\n switch (config.type) {\n case 'checkbox':\n return config.configTemplateCheckbox?.fieldKey || fieldKeyDefault;\n\n case 'group':\n return config.configTemplateGroup?.fieldKey || fieldKeyDefault;\n\n case 'radio':\n return config.configTemplateRadio?.fieldKey || fieldKeyDefault;\n\n case 'text':\n return config.configTemplateText?.fieldKey || fieldKeyDefault;\n\n case 'tag':\n return config.configTemplateTag?.fieldKey || fieldKeyDefault;\n }\n\n};\n\nexport const initConfig = (config: IListViewConfigItem): void => {\n if (!config) {\n return;\n }\n\n const defaultConfig = {\n fieldKey: 'id',\n getValue: (item: any): string => {\n if (!item) {\n return ' ';\n }\n\n return item.label || item.name || ' ';\n }\n };\n\n switch (config.type) {\n\n case 'checkbox':\n if (!config.configTemplateCheckbox) {\n config.configTemplateCheckbox = defaultConfig;\n }\n break;\n\n case 'group':\n break;\n\n case 'radio':\n if (!config.configTemplateRadio) {\n config.configTemplateRadio = defaultConfig;\n }\n break;\n\n case 'text':\n if (!config.configTemplateText) {\n config.configTemplateText = defaultConfig;\n }\n break;\n }\n};","/* eslint-disable @typescript-eslint/no-unused-expressions */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgTemplateOutlet } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, ComponentRef, effect, ElementRef, inject, input, OnDestroy, OnInit, output, signal, TemplateRef, viewChild } from \"@angular/core\";\nimport { IButton, LibsUiComponentsButtonsButtonComponent } from \"@libs-ui/components-buttons-button\";\nimport { IInputFunctionControlEvent } from \"@libs-ui/components-inputs-input\";\nimport { IInputSearchConfig, LibsUiComponentsInputsSearchComponent } from \"@libs-ui/components-inputs-search\";\nimport { IValidRequired } from \"@libs-ui/components-inputs-valid\";\nimport { ILabel, LibsUiComponentsLabelComponent } from \"@libs-ui/components-label\";\nimport { IFlagMouse, LibsUiComponentsPopoverComponent } from \"@libs-ui/components-popover\";\nimport { IPaging, TYPE_TEMPLATE_REF } from \"@libs-ui/interfaces-types\";\nimport { LibsUiDynamicComponentService } from \"@libs-ui/services-dynamic-component\";\nimport { cloneDeep, ERROR_MESSAGE_EMPTY_VALID, isEmpty, isNil } from \"@libs-ui/utils\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { Subject, takeUntil, timer } from \"rxjs\";\nimport { getComponentByType, initConfig } from \"./defines/list.define\";\nimport { IListFunctionControlEvent, IListViewConfigItem } from \"./interfaces\";\nimport { IListDataEmitKey, IListDataEmitMultiKey } from \"./interfaces/data-emit.interface\";\nimport { LibsUiComponentsListTemplatesComponentAbstract } from \"./templates/templates.component.abstract\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet, TranslateModule,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsInputsSearchComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent\n ]\n})\nexport class LibsUiComponentsListComponent implements OnInit, OnDestroy {\n /* PROPERTY */\n protected readonly ERROR_MESSAGE_EMPTY_VALID = ERROR_MESSAGE_EMPTY_VALID;\n protected disableButtonUnSelectOption = signal<boolean>(true);\n protected isErrorRequired = signal<boolean>(false);\n protected loading = signal<boolean>(false);\n protected keySearchStore = signal<string | undefined>(undefined);\n\n private onDestroy: Subject<void> = new Subject();\n private onSearch: Subject<string | undefined> = new Subject();\n private onRefresh: Subject<void> = new Subject();\n private onSetHiddenItemByKey: Subject<Array<unknown>> = new Subject();\n private onSetDataStore: Subject<Array<any>> = new Subject();\n private onItemChangeUnSelect: Subject<any> = new Subject();\n private onUpdateMultiKeySelectedGroup: Subject<void> = new Subject();\n private onRemoveItems: Subject<Array<unknown>> = new Subject();\n\n private componentRef?: ComponentRef<LibsUiComponentsListTemplatesComponentAbstract>;\n private configData = signal<IListViewConfigItem>({\n type: 'text',\n configTemplateText: {\n fieldKey: 'id',\n getValue: (item: any) => {\n return item.label || item.name;\n }\n }\n });\n private groupMultiKeySelected = signal<Array<unknown>>([]);\n private functionControlInputSearch = signal<IInputFunctionControlEvent | undefined>(undefined);\n\n /* INPUT */\n readonly hiddenInputSearch = input<boolean, boolean | undefined>(false, { transform: value => value ?? false });\n readonly dropdownTabKeyActive = input<string>();\n readonly keySearch = input<string>();\n readonly itemChangeUnSelect = input<any>();\n readonly paddingLeftItem = input<boolean>();\n readonly config = input.required<IListViewConfigItem | undefined>();\n\n readonly isSearchOnline = input<boolean>();\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly labelConfig = input<ILabel>();\n readonly searchConfig = input<IInputSearchConfig, IInputSearchConfig | undefined>({}, { transform: value => value || {} });\n readonly searchPadding = input<boolean>();\n readonly dividerClassInclude = input<string>();\n readonly hasDivider = input<boolean>(true);\n readonly buttonsOther = input<Array<IButton> | undefined>(undefined);\n readonly hasButtonUnSelectOption = input<boolean>();\n readonly clickExactly = input<boolean>();\n readonly backgroundListCustom = input<string, string | undefined>('bg-[#ffffff]', { transform: value => value ?? 'bg-[#ffffff]' });\n readonly maxItemShow = input<number>();\n readonly keySelected = input<unknown>();\n readonly multiKeySelected = input<Array<unknown> | undefined>(undefined);// lưu ý khi sử dụng listview\n readonly keysDisableItem = input<Array<unknown> | undefined>(undefined); // không dùng giá trị này kết hợp với template checkbox có config chứa configCheckboxCheckAll\n readonly keysHiddenItem = input<Array<unknown> | undefined>(undefined); // không dùng giá trị này kết hợp với template checkbox có config chứa configCheckboxCheckAll\n readonly focusInputSearch = input<boolean>();\n readonly skipFocusInputWhenKeySearchStoreUndefined = input<boolean>();\n readonly functionCustomAddDataToStore = input<(data: any, store: any) => void>();\n readonly functionGetItemsAutoAddList = input<(() => Array<any>) | undefined>(undefined);\n readonly validRequired = input<IValidRequired | undefined>(undefined);\n readonly showValidateBottom = input<boolean>();\n readonly zIndex = input<number>();\n readonly loadingIconSize = input<'large' | 'medium' | 'small' | 'smaller' | undefined>(undefined);\n readonly templateRefSearchNoData = input<TemplateRef<TYPE_TEMPLATE_REF> | undefined>(undefined);\n readonly resetKeyWhenSelectAllKeyDropdown = input<boolean>();\n readonly ignoreClassDisableDefaultWhenUseKeysDisableItem = input<boolean>(); // bỏ chế độ disable item trên html để disable từng phần trong rows\n\n /* OUTPUT */\n readonly outSelectKey = output<IListDataEmitKey | undefined>(); // sử dụng cho type chọn 1\n readonly outSelectMultiKey = output<IListDataEmitMultiKey | undefined>(); // sử dụng cho type cho phép chọn nhiều.\n readonly outUnSelectMultiKey = output<Array<unknown>>(); // sử dụng cho type cho phép chọn nhiều.\n readonly outClickButtonOther = output<IButton>();\n readonly outFieldKey = output<unknown>();\n readonly outChangeView = output<Array<any>>();\n readonly outLoading = output<boolean>();\n readonly outFunctionsControl = output<IListFunctionControlEvent>();\n readonly outChangStageFlagMousePopover = output<IFlagMouse>();\n readonly outLoadItemsComplete = output<{ items: Array<any>, paging?: IPaging }>();\n\n /* VIEW CHILD */\n protected listViewElementRef = viewChild<ElementRef>('listViewContainer');\n protected contentElementRef = viewChild<ElementRef>('contentContainer');\n\n /* INJECT */\n private dynamicComponentService = inject(LibsUiDynamicComponentService);\n\n constructor() {\n effect(() => {\n this.keySearchStore.set(this.keySearch());\n this.onSearch.next(this.keySearch());\n }, { allowSignalWrites: true });\n effect(() => this.onItemChangeUnSelect.next(this.itemChangeUnSelect()));\n effect(() => {\n if (!this.componentRef) {\n return;\n }\n if (!isEmpty(this.keysDisableItem())) {\n this.componentRef.setInput('keysDisableItem', this.keysDisableItem());\n }\n if (!isEmpty(this.keysHiddenItem())) {\n this.onSetHiddenItemByKey.next(this.keysHiddenItem() || []);\n }\n if (!isEmpty(this.disable())) {\n this.componentRef.setInput('disable', this.disable());\n }\n if (!isEmpty(this.keySelected())) {\n this.componentRef.setInput('keySelected', this.keySelected());\n }\n if (this.configData()?.type !== 'group' && !isEmpty(this.multiKeySelected())) {\n this.componentRef.setInput('multiKeySelected', this.multiKeySelected());\n }\n if (this.configData()?.type === 'group' && !isEmpty(this.multiKeySelected())) {\n this.componentRef.setInput('multiKeySelected', this.multiKeySelected());\n this.onUpdateMultiKeySelectedGroup.next();\n }\n }, { allowSignalWrites: true });\n\n effect(() => {\n this.refresh();\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit({\n checkIsValid: this.checkIsValid.bind(this),\n refresh: this.refresh.bind(this),\n resetKeySelected: this.handlerRemoveKeySelected.bind(this),\n getRectListView: async () => this.listViewElementRef()?.nativeElement.getBoundingClientRect(),\n removeItems: async (keys) => this.onRemoveItems.next(keys)\n });\n\n const config = this.config();\n if (config) {\n this.configData.set(this.cloneConfig(config))\n }\n initConfig(this.configData());\n const compClass = getComponentByType(this.configData().type);\n\n this.componentRef = this.dynamicComponentService.resolveComponentFactory(compClass);\n\n timer(0).pipe(takeUntil(this.onDestroy)).subscribe(() => {\n this.dynamicComponentService.addToElement(this.componentRef, this.contentElementRef()?.nativeElement);\n });\n // this.componentRef.setInput('onSetDataStore', this.onSetDataStore);\n this.componentRef.setInput('onSetHiddenItemByKey', this.onSetHiddenItemByKey);\n this.componentRef.setInput('config', this.configData());\n\n if (this.searchConfig()) {\n this.componentRef.setInput('searchConfig', this.searchConfig());\n }\n this.componentRef.setInput('onSearch', this.onSearch);\n this.componentRef.setInput('onRefresh', this.onRefresh);\n this.componentRef.setInput('keySearch', this.keySearchStore() ?? '');\n this.componentRef.setInput('dropdownTabKeyActive', this.dropdownTabKeyActive());\n this.componentRef.setInput('clickExactly', this.clickExactly() || false);\n this.componentRef.setInput('disable', this.disable());\n this.componentRef.setInput('paddingLeftItem', this.paddingLeftItem());\n this.componentRef.setInput('resetKeyWhenSelectAllKeyDropdown', this.resetKeyWhenSelectAllKeyDropdown());\n this.componentRef.setInput('ignoreClassDisableDefaultWhenUseKeysDisableItem', this.ignoreClassDisableDefaultWhenUseKeysDisableItem());\n this.componentRef.setInput('functionCustomAddDataToStore', this.functionCustomAddDataToStore());\n this.componentRef.setInput('functionGetItemsAutoAddList', this.functionGetItemsAutoAddList());\n\n if (this.maxItemShow()) {\n this.componentRef.setInput('maxItemShow', this.maxItemShow());\n }\n this.componentRef.setInput('keySelected', this.keySelected());\n if (this.multiKeySelected()) {\n this.componentRef.setInput('multiKeySelected', this.multiKeySelected());\n }\n this.componentRef.setInput('keysDisableItem', this.keysDisableItem() || []);\n this.componentRef.setInput('keysHiddenItem', this.keysHiddenItem() || []);\n if (!isNil(this.keySelected()) || this.multiKeySelected()?.length) {\n this.disableButtonUnSelectOption.set(false);\n }\n this.componentRef.setInput('onItemChangeUnSelect', this.onItemChangeUnSelect);\n this.componentRef.setInput('onUpdateMultiKeySelectedGroup', this.onUpdateMultiKeySelectedGroup);\n this.componentRef.setInput('onRemoveItems', this.onRemoveItems);\n this.componentRef.setInput('zIndex', this.zIndex());\n this.componentRef.setInput('isSearchOnline', this.isSearchOnline());\n this.componentRef.setInput('disableLabel', this.disableLabel() || false);\n this.componentRef.setInput('loadingIconSize', this.loadingIconSize());\n this.componentRef.setInput('templateRefSearchNoData', this.templateRefSearchNoData());\n let keySearch = '';\n\n const instance = this.componentRef.instance;\n\n instance.outChangeView.subscribe(data => {\n this.outChangeView.emit(data);\n\n if (this.skipFocusInputWhenKeySearchStoreUndefined() && isNil(this.keySearchStore)) {\n return;\n }\n if (this.focusInputSearch() && this.keySearchStore() !== keySearch) {\n keySearch = this.keySearchStore() || '';\n this.functionControlInputSearch()?.focus();\n }\n });\n instance.outSelectKey.subscribe(data => {\n this.disableButtonUnSelectOption.set(false);\n this.outSelectKey.emit(data);\n this.checkIsValid();\n });\n instance.outFieldKey.subscribe((fieldKey: unknown) => {\n this.outFieldKey.emit(fieldKey);\n });\n instance.outLoading.subscribe((loading: boolean) => {\n this.loading.set(loading);\n this.outLoading.emit(loading);\n });\n instance.outLoadItemsComplete.subscribe((event: { items: Array<any>, paging?: IPaging }) => {\n this.outLoadItemsComplete.emit(event);\n });\n if (this.config() && this.config()?.configTemplateText && this.config()?.configTemplateText?.actionSort) {\n instance.outSortSingleSelect.subscribe(itemSort => {\n const config = this.config();\n if (config && config.configTemplateText && config.configTemplateText?.actionSort) {\n config.configTemplateText.itemSort = itemSort;\n config.configTemplateText.actionSort(itemSort);\n }\n });\n }\n instance.outChangStageFlagMousePopover.subscribe((flag: IFlagMouse) => {\n this.outChangStageFlagMousePopover.emit(flag);\n });\n const type = this.configData()?.type;\n\n if (type === 'text' || type === 'radio') {\n return;\n }\n instance.outSelectMultiKey.subscribe(data => {\n this.disableButtonUnSelectOption.set(false);\n if (type === 'group') {\n this.groupMultiKeySelected.set(data.keys);\n }\n this.outSelectMultiKey.emit(data);\n this.checkIsValid();\n });\n }\n\n /* FUNCTIONS */\n protected handlerSearch(keySearch: string) {\n this.keySearchStore.set(keySearch);\n this.onSearch.next(keySearch);\n }\n\n protected async handlerRemoveKeySelected() {\n if (!this.componentRef) {\n return;\n }\n this.outSelectKey.emit(undefined);\n this.outSelectMultiKey.emit(undefined);\n this.componentRef.setInput('keySelected', '');\n this.componentRef.setInput('multiKeySelected', undefined);\n this.disableButtonUnSelectOption.set(true);\n await this.checkIsValid();\n }\n\n protected handlerClickButtonOther(button: IButton) {\n this.outClickButtonOther.emit(button);\n }\n\n protected handlerFunctionControlInputSearch(event: IInputFunctionControlEvent) {\n this.functionControlInputSearch.set(event);\n }\n\n private async checkIsValid() {\n if (!this.validRequired || !this.config()?.type || !this.componentRef?.instance) {\n this.isErrorRequired.set(false);\n\n return true;\n }\n const type = this.config()?.type;\n let hasKey = !isEmpty(this.componentRef.instance.multiKeySelected);\n\n if (type === 'group') {\n hasKey = !isEmpty(this.groupMultiKeySelected);\n }\n if (type === 'text' || type === 'radio') {\n hasKey = !isNil(this.componentRef.instance.keySelected);\n }\n this.isErrorRequired.set(!hasKey);\n\n return hasKey;\n }\n\n private async refresh() {\n const config = this.config();\n if (!config) {\n return;\n }\n this.dropdownTabKeyActive();\n Object.assign(this.configData, this.cloneConfig(config));\n this.onRefresh.next();\n }\n\n private cloneConfig(configInput: IListViewConfigItem): IListViewConfigItem {\n if (!configInput) {\n return {} as any;\n }\n const serviceOther = configInput.httpRequestData?.serviceOther;\n const serviceOtherRequestAllIdSelectOrUnSelect = configInput.configTemplateCheckbox?.httpRequestAllIdSelectOrUnSelect?.serviceOther;\n\n serviceOther && delete configInput.httpRequestData?.serviceOther;\n serviceOtherRequestAllIdSelectOrUnSelect && delete configInput.configTemplateCheckbox?.httpRequestAllIdSelectOrUnSelect?.serviceOther;\n const config = cloneDeep(configInput);\n\n serviceOther && config.httpRequestData && (config.httpRequestData.serviceOther = serviceOther);\n serviceOtherRequestAllIdSelectOrUnSelect && config.configTemplateCheckbox?.httpRequestAllIdSelectOrUnSelect && (config.configTemplateCheckbox.httpRequestAllIdSelectOrUnSelect.serviceOther = serviceOtherRequestAllIdSelectOrUnSelect);\n serviceOther && configInput.httpRequestData && (configInput.httpRequestData.serviceOther = serviceOther);\n serviceOtherRequestAllIdSelectOrUnSelect && configInput.configTemplateCheckbox?.httpRequestAllIdSelectOrUnSelect && (configInput.configTemplateCheckbox.httpRequestAllIdSelectOrUnSelect.serviceOther = serviceOtherRequestAllIdSelectOrUnSelect);\n\n return config;\n }\n\n ngOnDestroy() {\n this.outLoading.emit(false);\n this.dynamicComponentService.remove(this.componentRef);\n this.onRefresh.complete();\n this.onSearch.complete();\n this.onSetHiddenItemByKey.complete();\n this.onUpdateMultiKeySelectedGroup.complete();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","<div #listViewContainer\n class=\"flex flex-col\"\n [class.w-full]=\"!maxItemShow\"\n [class.h-full]=\"!maxItemShow\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || loading() || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n\n @if (!showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\"></ng-container>\n }\n @if (!hiddenInputSearch()) {\n <libs_ui-components-inputs-search [searchConfig]=\"searchConfig()\"\n [class.px-[12px]]=\"searchPadding()\"\n [class]=\"searchConfig().classCoverInputSearch\"\n [disable]=\" disable() || loading() || false\"\n (outSearch)=\"handlerSearch($event)\"\n (outFunctionsControl)=\"handlerFunctionControlInputSearch($event)\" />\n }\n @if (config()?.configDescriptionGroup; as description) {\n <div [class]=\"description?.classInclude\">\n <libs_ui-components-popover [config]=\"description?.tooltipDescription\">\n <div [class]=\"description?.classTextDescriptionInclude\">{{ description.textDescription }}</div>\n </libs_ui-components-popover>\n </div>\n }\n @if (!hiddenInputSearch() && hasDivider() && (!config()?.ignoreShowDataWhenNotSearch || keySearchStore())) {\n <div class=\"libs-ui-border-top-general {{ dividerClassInclude() ? dividerClassInclude():'' }}\"\n [class.libs-ui-divider-default]=\"!!searchPadding() && !dividerClassInclude()\">\n </div>\n }\n <div class=\"flex flex-col {{ (config()?.ignoreShowDataWhenNotSearch && keySearchStore() && !config()?.ignoreFixHeightShowDataWhenNotSearch) ? 'h-[353px]' : 'h-full' }}\">\n <div #contentContainer\n class=\"w-full h-full {{ backgroundListCustom() }}\"\n [class.libs-ui-disable]=\"disable() && disableLabel()\"\n [class.pointer-events-none]=\"disable() && disableLabel()\">\n </div>\n\n @for (buttonOther of buttonsOther(); track $index) {\n <div class=\"bg-[#ffffff]\">\n <libs_ui-components-buttons-button [type]=\"buttonOther.type || 'button-link-primary'\"\n [label]=\"buttonOther.label || ' '\"\n [classIconLeft]=\"(buttonOther.classIconLeft || '')+' flex mr-[8px] text-[16px]'\"\n classInclude=\"w-full libs-ui-border-top-general text-left rounded-0 {{ buttonOther.classInclude ? buttonOther.classInclude:'' }}\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"buttonOther.disable || disable() || loading() || false\"\n (outClick)=\"handlerClickButtonOther(buttonOther)\" />\n </div>\n }\n @if (hasButtonUnSelectOption()) {\n <div class=\"bg-[#ffffff] rounded-b-[4px]\">\n <libs_ui-components-buttons-button label=\"i18n_unselect_option\"\n type=\"button-link-danger-high\"\n classIconLeft=\"flex mr-[8px] libs-ui-icon-close\"\n classInclude=\"w-100 libs-ui-border-top-general text-left rounded-0\"\n classLabel=\"mo-lib-font-h5r whitespace-normal\"\n [disable]=\"disableButtonUnSelectOption() || disable() || loading() || false\"\n (outClick)=\"handlerRemoveKeySelected()\" />\n </div>\n }\n </div>\n @if (showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\"></ng-container>\n }\n</div>\n\n<ng-template #templateValidate>\n @if (isErrorRequired()) {\n <div [class.mb-[8px]]=\"!showValidateBottom()\"\n [class.mt-[8px]]=\"showValidateBottom()\">\n <span class=\"text-[#ee2d41] mo-lib-font-h7\"\n [innerHtml]=\"(validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID)| translate:validRequired()?.interpolateParams\">\n </span>\n </div>\n }\n</ng-template>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IAvatarConfig } from \"@libs-ui/components-avatar\";\nimport { IBadge } from \"@libs-ui/components-badge\";\nimport { IButton } from \"@libs-ui/components-buttons-button\";\nimport { ISort } from \"@libs-ui/components-buttons-sort\";\nimport { ICheckboxItem } from \"@libs-ui/components-checkbox-group\";\nimport { ILabel } from \"@libs-ui/components-label\";\nimport { IPopover, IPopoverOverlay, TYPE_POPOVER_EVENT } from \"@libs-ui/components-popover\";\nimport { IHttpRequestConfig } from \"@libs-ui/services-http-request\";\nimport { TYPE_TEMPLATE } from \"./templates-type.type\";\nimport { Observable } from \"rxjs\";\nimport { WritableSignal } from \"@angular/core\";\n\nexport interface IListViewConfigItem {\n type: TYPE_TEMPLATE;\n httpRequestData?: IHttpRequestConfig;\n configTemplateText?: IListViewConfigItemText;\n configTemplateRadio?: IListViewConfigItemRadio;\n configTemplateCheckbox?: IListViewConfigItemCheckbox;\n configTemplateGroup?: IListViewConfigItemGroup;\n configTemplateTag?: IListViewConfigItemTag;\n configDescriptionGroup?: IConfigDescriptionGroup;\n textNoData?: string;\n textNoDataClassInclude?: string;\n textSearchNoData?: string;\n autoSelectFirstItem?: boolean; // nếu như có dữ liệu mà chưa có keySelected thì sẽ tự động chọn phần từ đầu tiên;\n backgroundListCustom?: string;\n paddingLeftItem?: boolean;\n sort?: (items: Array<any>) => void;\n hasIconNoData?: boolean;\n ignoreShowDataWhenNotSearch?: boolean | undefined;\n ignoreFixHeightShowDataWhenNotSearch?: boolean | undefined;\n highlightTextSearchInResult?: boolean | undefined;\n}\n\nexport interface IListViewConfigItemText {\n fieldKey: string;\n getValue?: (item: any) => string;\n fieldGetImage?: string;\n classIncludeImage?: string;\n getImage?: (data: IDataFunctionCallInConfig) => Observable<string>;\n getImageError?: (data: IDataFunctionCallInConfig) => Observable<string>;\n imgTypeIcon?: boolean;\n ignoreIconSelected?: boolean;\n classIncludeIconSelected?: string;\n ignoreShowFieldLabel?: boolean;\n getHrefButton?: (item: any) => string;\n getClassItem?: (item: any) => string;\n getClassIncludePopover?: (item: any) => string;\n getConfigButtonLeft?: (item: any) => IButton;\n getClassIconLeft?: (item: any) => string;\n getConfigHoverDanger?: (item: any) => boolean;\n getPopover?: (item: any) => IPopover | undefined;\n rows?: Array<IListViewConfigItemTextRow>;\n classRowsWrapper?: string;\n classRows?: string;\n configLabelPopover?: IPopoverOverlay;\n autoScrollToItemSelected?: boolean;\n itemSort?: ISort; // biến lưu trữ item sort\n actionSort?: (itemSort: ISort) => void; // set hàm này nếu muốn bật sort trên listview\n notUseVirtualScroll?: boolean; // sử dụng cho trường hợp config badge trong table\n getAvatarConfig?: (item: any) => IAvatarConfig;\n getConfigAlignStart?: (item: any) => boolean;\n stylePaddingRightItemOther?: boolean;\n}\n\nexport interface IListViewConfigItemTag extends IListViewConfigItemText {\n fieldKey: string;\n ignoreItemFlexWrap?: boolean;\n classIncludeContainer?: string;\n}\n\nexport interface IListViewConfigItemRadio {\n fieldKey: string;\n fieldGetImage?: string;\n classIncludeImage?: string;\n hasAvatarPagesSocial?: boolean;\n hasAvatarGroupSocial?: boolean;\n getValue?: (item: any) => string;\n getPopover?: (item: any) => IPopover | undefined;\n rows?: Array<IListViewConfigItemTextRow>;\n classRows?: string;\n autoScrollToItemSelected?: boolean;\n zIndexPopover?: number;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n getClassItem?: (item: any) => string;\n classItemInclude?: string;\n}\n\nexport interface IListViewConfigItemCheckbox {\n autoSelectAllItem?: boolean; // dropdown nếu như có dữ liệu mà chưa có multiKeySelected thì sẽ tự động chọn phần từ đầu tiên;\n classListInclude?: string;\n httpRequestAllIdSelectOrUnSelect?: IHttpRequestConfig;\n configButtonSelectAndUndSelectItem?: {\n classInclude?: string;\n buttonCheckAll?: IButton;\n buttonUncheckAll?: IButton;\n };\n configCheckboxCheckAll?: ICheckboxItem;\n classIncludeHasConfigCheckBoxAll?: string;\n fieldKey: string;\n getValue?: (item: any) => string;\n getPopover?: (item: any) => IPopover;\n getClassItem?: (item: any) => string;\n getImage?: (data: IDataFunctionCallInConfig) => Observable<string>;\n getImageError?: (data: IDataFunctionCallInConfig) => Observable<string>;\n fieldGetImage?: string;\n hasAvatarPagesSocial?: boolean;\n hasAvatarGroupSocial?: boolean;\n classIncludeImage?: string;\n rows?: Array<IListViewConfigItemTextRow>;\n classRowsWrapper?: string;\n classRows?: string;\n ignoreClickItemUnChecked?: boolean;\n classLabelInclude?: string;\n fieldGetLinkImageError?: string;\n zIndexPopover?: number;\n classItemInclude?: string;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n classCheckboxItemInclude?: string;\n ignoreItemWidth100?: boolean;\n classIncludeLastViewItem?: string;\n classInclude?: string;\n}\n\ninterface IListViewConfigItemTextRow {\n classRow?: string;\n classItemSelected?: string;\n getValue?: (data: IDataFunctionCallInConfig) => Observable<string>;\n classGetValue?: string;\n classCols?: string;\n getRowStylesDynamicCols?: (item: any) => string;\n cols?: Array<IListViewConfigItemTextCol>;\n action?: (item: any) => void;\n getImage?: (item: IDataFunctionCallInConfig) => Observable<string>;\n getClassImage?: (item: IDataFunctionCallInConfig) => Observable<string>;\n getImageError?: (item: IDataFunctionCallInConfig) => Observable<string>;\n getPopoverConfig?: (item: any) => Observable<IPopoverOverlay>;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n}\n\nexport interface IDataFunctionCallInConfig {\n value?: any;\n item?: any;\n otherData?: any;\n};\n\nexport interface IListViewConfigItemTextRowSignal extends Omit<IListViewConfigItemTextRow, 'cols'> {\n cols?: WritableSignal<Array<WritableSignal<IListViewConfigItemTextCol>>>;\n}\nexport interface IListViewConfigItemTextCol {\n classCol?: string;\n getValue?: (data: IDataFunctionCallInConfig) => Observable<string>;\n getPopover?: (item: any, index: number) => IPopover | undefined;\n action?: (item: any) => void;\n getImage?: (item: any) => Observable<string>;\n getClassImage?: (item: any) => Observable<string>;\n getImageError?: (item: any) => Observable<string>;\n getConfigBadge?: (item: any, index: number) => IBadge | undefined;\n getStylesDynamicCol?: (data: IDataFunctionCallInConfig) => Observable<string>;\n getButton?: (item: any, index: number) => IButton | undefined;\n getLabelSwitch?: (item: any, index: number) => ILabel | undefined;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n}\n\nexport interface IListViewConfigItemGroup {\n flatItemsSupportAutoSelect?: (data: Array<any>) => Array<any>; // sử dụng khi muốn mặc định selected tất cả các key trong group\n fieldKey?: string;\n isViewRadio?: boolean;\n timeIntervalCalculatorHeight?: number; // trường hợp trong page nhiều listview tham số này sẽ thay đổi tùy từng trường hợp\n configButtonSelectAndUndSelectItem?: {\n classInclude?: string;\n buttonCheckAll?: IButton;\n buttonUncheckAll?: IButton;\n };\n configCheckboxCheckAll?: ICheckboxItem;\n classIncludeHasConfigCheckBoxAll?: string;\n getLabelSearch?: (item: any) => string; // Dùng để customs khi search không chỉ field label: ví dụ: search cả code và name nhưng chỉ hiển thị name\n getLabelGroup: (group: any) => string;\n getExpandGroup?: (group: any) => boolean;\n getPopoverGroup?: (group: any) => string;\n getMaxLevelGroup: (group: any) => number;\n getDescriptionGroupWhenNoData?: (group: any) => string | undefined;\n getButtonGroup?: (group: any) => IButton;\n getIconEmptyDataInGroup?: (group: any) => boolean; // hiển thị image empty trong từng group\n ignoreCheckboxGroup?: boolean;\n classIncludeNodata?: string;\n classIncludeGroup?: string;\n ignoreRadioGroup?: boolean;\n ignoreTextUppercaseLabelGroup?: boolean;\n ignoreGroupLine?: boolean;\n marginTopHasLine?: number;\n ignoreClickLabelGroup?: boolean;\n\n fieldGetItems: string;\n fieldGetAvatarItem?: string;\n hasAvatarPagesSocial?: boolean;\n hasAvatarGroupSocial?: boolean;\n imgTypeIcon?: boolean;\n classImageInclude?: string;\n isViewTree?: boolean;\n isViewTreeJson?: boolean;\n getLabelItem: (item: any) => string;\n getPopoverItem?: (item: any) => IPopover | undefined;\n actionPopoverByItem?: (item: any, event: TYPE_POPOVER_EVENT) => void;\n getExpandItem?: (group: any) => boolean;\n getBonusPaddingLeftItem?: (item: any, parentItem?: any) => number;\n getClassIncludeItemNoData?: (item: any, parentItem?: any) => string;\n ignoreCheckboxItem?: boolean;\n ignoreRadioItem?: boolean;\n notChangeStateItemCheckOther?: boolean; // sử dụng cho trường hợp danh mục sản phẩm khi bỏ chọn 1 node thì các node cha và con không ảnh hưởng\n searchAllLevel?: boolean; // nếu bật search all level thì khi tìm tất cả các group không phù hợp với key search sẽ bị ẩn, ko phân biệt cấp bậc\n emitAllItemChecked?: boolean; // tham khảo trường hợp danh mục sản phẩm\n singleSelectItem?: boolean; // sử dụng khi chỉ muốn chọn node ở level cuối cùng\n singleSelectItemByTree?: boolean; //tham khảo trường hợp dòng sản phẩm của bank\n hasIconCheckSingleSelectItem?: boolean;\n colorBlueWhenItemSelected?: boolean;\n hasBackgroundColorWhenItemSelected?: boolean;\n iconExpand: '' | 'left' | 'right';\n ignoreIconExpandMarginRight?: boolean;\n onlySelectFirstItem?: boolean;\n ignoreChooseParentThenAutoChooseChildren?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n chooseChildThenAutoChooseParent?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n ignoreUnselectChildrenRemoveSelectParent?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n ignoreEmitAllItemCheckedWhenChooseChildThenAutoChooseParent?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n disableItemNotLastLevel?: boolean; // tham khảo trường hợp dòng sản phẩm của bank\n classLabelItem?: string\n allowDisableLabel?: boolean;\n zIndexLabel?: number;\n expandFirstItem?: boolean;\n widthLabelSub24WhenNotTreeView?: boolean; // width label item trừ 24px khi không phải dạng treeview,\n classIncludeItem?: string;\n getClassIncludeItemContent?: (item: any) => string; // truyền class cho item\n getLinkImageError?: (item: any) => string;\n getAvatarConfig?: (item: any) => IAvatarConfig;\n classIncludeLastItem?: string;\n getIconImageClass?: (item: any) => string;\n autoCountWhenGroupEmptyItemLevel1?: boolean; // Trường hợp chỉ có 1 group item và sub_item empty, set = true tăng chiều cao popup để nhìn thấy empty text (Tham khảo dropdown chọn loại sản phẩm bank khi gắn dòng/ loại sản phẩm)\n ignoreChangeChildrenDisableWhenChangeParent?: boolean\n}\n\nexport interface IConfigDescriptionGroup {\n classInclude?: string;\n tooltipDescription?: IPopoverOverlay;\n textDescription: string;\n classTextDescriptionInclude?: string;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { TYPE_POPOVER_EVENT } from \"@libs-ui/components-popover\";\n\nexport interface IListDataEmitKey {\n key: unknown;\n item: any;\n isClickManual: boolean;\n}\n\nexport interface IListDataEmitMultiKey {\n keys: Array<unknown>;\n mapKeys: Array<IListDataEmitKey>;\n isClickManual: boolean;\n}\n\nexport interface IEmitRowsEvent {\n event: TYPE_POPOVER_EVENT;\n item: any;\n action: any;\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","takeUntil"],"mappings":"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"}
|