@libs-ui/components-list 0.2.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +3 -0
  2. package/defines/list.define.d.ts +6 -0
  3. package/esm2022/defines/list.define.mjs +66 -0
  4. package/esm2022/highlight-key-search/highlight-key-search.directive.mjs +82 -0
  5. package/esm2022/index.mjs +3 -0
  6. package/esm2022/interfaces/config-item.interface.mjs +2 -0
  7. package/esm2022/interfaces/data-emit.interface.mjs +3 -0
  8. package/esm2022/interfaces/function-control-event.interface.mjs +2 -0
  9. package/esm2022/interfaces/index.mjs +6 -0
  10. package/esm2022/interfaces/tab.interface.mjs +2 -0
  11. package/esm2022/interfaces/templates-type.type.mjs +2 -0
  12. package/esm2022/libs-ui-components-list.mjs +5 -0
  13. package/esm2022/list.component.mjs +329 -0
  14. package/esm2022/pipes/call-function-in-template.pipe.mjs +28 -0
  15. package/esm2022/pipes/check-selected-by-key.pipe.mjs +21 -0
  16. package/esm2022/templates/templates.component.abstract.mjs +336 -0
  17. package/esm2022/templates/text/text.component.mjs +233 -0
  18. package/fesm2022/libs-ui-components-list.mjs +1077 -0
  19. package/fesm2022/libs-ui-components-list.mjs.map +1 -0
  20. package/highlight-key-search/highlight-key-search.directive.d.ts +13 -0
  21. package/index.d.ts +2 -0
  22. package/interfaces/config-item.interface.d.ts +225 -0
  23. package/interfaces/data-emit.interface.d.ts +10 -0
  24. package/interfaces/function-control-event.interface.d.ts +9 -0
  25. package/interfaces/index.d.ts +5 -0
  26. package/interfaces/tab.interface.d.ts +4 -0
  27. package/interfaces/templates-type.type.d.ts +1 -0
  28. package/list.component.d.ts +93 -0
  29. package/package.json +25 -0
  30. package/pipes/call-function-in-template.pipe.d.ts +8 -0
  31. package/pipes/check-selected-by-key.pipe.d.ts +7 -0
  32. package/templates/templates.component.abstract.d.ts +93 -0
  33. package/templates/text/text.component.d.ts +24 -0
@@ -0,0 +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/call-function-in-template.pipe.ts","../../../../../libs-ui/components/list/src/pipes/check-selected-by-key.pipe.ts","../../../../../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/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';\nimport { CHARACTER_DATA_EMPTY } from '@libs-ui/utils';\n\n@Pipe({\n name: 'MoLibsSharedPipesCallFunctionInTemplate',\n standalone: true\n})\nexport class MoLibsSharedPipesCallFunctionInTemplatePipe implements PipeTransform {\n\n async transform(value: any, functionCall?: (value: any, item?: any, lang?: string, otherData?: any) => any, item?: any, lang?: string, otherData?: unknown) {\n if (!functionCall) {\n return this.getValueOfType(value);\n }\n\n return this.getValueOfType(await functionCall(value, item, lang, otherData));\n }\n\n private async getValueOfType(value: any) {\n if ('object' === typeof value || value instanceof Array || typeof value === 'boolean') {\n return value !== null ? value : CHARACTER_DATA_EMPTY;\n }\n\n return value ? `${value}` : value === 0 ? '0' : CHARACTER_DATA_EMPTY;\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 */\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\nimport { Directive, ElementRef, inject, input, model, OnDestroy, output, signal, TemplateRef, viewChild } 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, 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<any>>([]);\n protected items = signal<Array<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 functionGetItemAutoAddList = 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 | undefined>();\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 // if (this.elementScroll) {\n // this.elementScroll.scrollTop = 0;\n // }\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 console.log('vaoday', data);\n\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 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 [...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<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 console.log('setHeightViewPort');\n\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\n console.log('this.maxItemShow()', this.maxItemShow(), lengthItems);\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 // if (!this.elementScroll) {\n // return;\n // }\n\n // if (this.elementScroll.offsetHeight < this.elementScroll.scrollHeight) {\n // this.hasScroll.set(true);\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(result.data || []);\n if (this.functionGetItemAutoAddList()) {\n this.store.update(items => [...(this.functionGetItemAutoAddList()?.() || []), ...items]);\n }\n this.processData(true);\n\n return;\n }\n this.store.update(items => [...items, ...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: 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.fieldLabel = this.translateService.instant(ref.label || ref.title || ref.value || ref.name || ' ');\n }\n\n if (configTemplate?.getValue) {\n const value = configTemplate.getValue(ref);\n\n item.fieldLabel = value ? this.translateService.instant(`${value}`) : '';\n }\n if (configTemplate?.getPopover) {\n item.PopoverLabel = configTemplate?.getPopover(item);\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 item[fieldNameRow] = row.getValue && row.getValue(ref);\n item[`fieldRowStylesDynamicCols${indexRow}`] = row.getRowStylesDynamicCols && row.getRowStylesDynamicCols(ref);\n item[`fieldRowAvatarConfig${indexRow}`] = row.getAvatarConfig && row.getAvatarConfig(ref);\n if (row.cols && row.cols.length) {\n row.cols.forEach((col, indexCol) => {\n const fieldNameCol = `fieldLabelCol${indexRow}${indexCol}`;\n\n item[fieldNameCol] = col.getValue && col.getValue(ref, indexCol);\n item[`fieldColPopover${indexRow}${indexCol}`] = col.getPopover && col.getPopover(ref, indexCol);\n item[`fieldBadge${indexRow}${indexCol}`] = col.getConfigBadge && col.getConfigBadge(ref, indexCol);\n item[`fieldColStylesDynamic${indexRow}${indexCol}`] = col.getStylesDynamicCol;\n item[`fieldColButton${indexRow}${indexCol}`] = col.getButton && col.getButton(ref, indexCol);\n item[`fieldColSwitch${indexRow}${indexCol}`] = col.getLabelSwitch && col.getLabelSwitch(ref, indexCol);\n item[`fieldColAvatarConfig${indexRow}${indexCol}`] = col.getAvatarConfig && col.getAvatarConfig(ref);\n\n textSearch = ` ${textSearch} ${item[fieldNameCol] || ''} `;\n });\n }\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 } 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, 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 { MoLibsSharedPipesCallFunctionInTemplatePipe } from '../../pipes/call-function-in-template.pipe';\nimport { LibsUiCheckSelectedByKeyPipe } from '../../pipes/check-selected-by-key.pipe';\nimport { LibsUiComponentsListTemplatesComponentAbstract } from '../templates.component.abstract';\nimport { IListViewConfigItemText } from './../../interfaces/config-item.interface';\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 MoLibsSharedPipesCallFunctionInTemplatePipe,\n LibsUiComponentsListHighlightKeySearchDirective\n ]\n})\nexport class LibsUiComponentsListTextComponent extends LibsUiComponentsListTemplatesComponentAbstract implements OnInit {\n protected configTemplateText = signal<IListViewConfigItemText | undefined>(undefined);\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 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<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);\n const key = keysHidden.find(key => dataStore()[this.fieldKey()] === key);\n\n dataStore.ref = item;\n\n if (key === undefined) {\n const text = deleteUnicode(this.buildValueByConfig(dataStore, this.configTemplateText())).toLocaleLowerCase();\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?.serviceName !== 'commonDataStaticService' && !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.hrefButton = this.configTemplateText()?.getHrefButton?.(dataStore);\n dataStore.classItem = item.classItem || this.configTemplateText()?.getClassItem?.(dataStore);\n dataStore.classInclude = dataStore.classInclude || this.configTemplateText()?.getClassIncludePopover?.(dataStore);\n dataStore.buttonLeftConfig = this.configTemplateText()?.getConfigButtonLeft?.(dataStore);\n dataStore.classIconLeft = dataStore.classIconLeft || this.configTemplateText()?.getClassIconLeft?.(dataStore);\n dataStore.hoverDanger = dataStore.hoverDanger || this.configTemplateText()?.getConfigHoverDanger?.(dataStore);\n dataStore.avatarConfig = this.configTemplateText()?.getAvatarConfig?.(dataStore);\n dataStore.itemAlignStart = dataStore.itemAlignStart || this.configTemplateText()?.getConfigAlignStart?.(dataStore);\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().splice(indexItemRemove, 1);\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 this.items.set(itemByKeySearch);\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\n return;\n }\n this.items.update(items => [...items, ...itemByKeySearch]);\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<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<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 &nbsp;\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' | MoLibsSharedPipesCallFunctionInTemplate:(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.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 <!-- <libs-uis-shared-components-list_view-templates-rows *ngIf=\"configTemplateText?.rows\"\n class=\"w-100 {{ configTemplateText.classRowsWrapper || configTemplateText.classRows || '' }}\"\n [item]=\"item\"\n [fieldKey]=\"fieldKey\"\n [keySelected]=\"keySelected\"\n [configTemplate]=\"configTemplateText\"\n [zIndex]=\"zIndex\"\n (moChangStageFlagMouseTooltip)=\"handlerChangStageFlagMouse($event)\"\n (moEvent)=\"handlerSelectItem($event.event,$event.item,$event.action)\">\n </libs-uis-shared-components-list_view-templates-rows> -->\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 data = input<Array<any> | undefined>(undefined);\n readonly focusInputSearch = input<boolean>();\n readonly skipFocusInputWhenKeySearchStoreUndefined = input<boolean>();\n readonly functionCustomAddDataToStore = input<(data: any, store: any) => void>();\n readonly functionGetItemAutoAddList = 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.data())) {\n this.onSetDataStore.next(this.data() || []);\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(): void {\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 // const instance = this.componentRef.instance;\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('functionGetItemAutoAddList', this.functionGetItemAutoAddList());\n timer(0).pipe(takeUntil(this.onDestroy)).subscribe(() => {\n if (this.data()) {\n this.onSetDataStore.next(this.data() || []);\n }\n });\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 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 (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 */\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil","i1"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { AfterViewInit } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class LibsUiComponentsListHighlightKeySearchDirective implements AfterViewInit {
4
+ readonly isHighlight: import("@angular/core").InputSignal<boolean | undefined>;
5
+ readonly keySearch: import("@angular/core").InputSignal<string | undefined>;
6
+ readonly classHighlight: import("@angular/core").InputSignal<string>;
7
+ private elementRef;
8
+ ngAfterViewInit(): void;
9
+ protected handlerHighlight(element: Node): void;
10
+ protected checkAndReplace(node: Node): void;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsListHighlightKeySearchDirective, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<LibsUiComponentsListHighlightKeySearchDirective, "[LibsUiComponentsListHighlightKeySearchDirective]", never, { "isHighlight": { "alias": "isHighlight"; "required": false; "isSignal": true; }; "keySearch": { "alias": "keySearch"; "required": false; "isSignal": true; }; "classHighlight": { "alias": "classHighlight"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
13
+ }
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './list.component';
2
+ export * from './interfaces';
@@ -0,0 +1,225 @@
1
+ import { IAvatarConfig } from "@libs-ui/components-avatar";
2
+ import { IBadge } from "@libs-ui/components-badge";
3
+ import { IButton } from "@libs-ui/components-buttons-button";
4
+ import { ISort } from "@libs-ui/components-buttons-sort";
5
+ import { ICheckboxItem } from "@libs-ui/components-checkbox-group";
6
+ import { ILabel } from "@libs-ui/components-label";
7
+ import { IPopover, IPopoverOverlay, TYPE_POPOVER_EVENT } from "@libs-ui/components-popover";
8
+ import { IHttpRequestConfig } from "@libs-ui/services-http-request";
9
+ import { TYPE_TEMPLATE } from "./templates-type.type";
10
+ export interface IListViewConfigItem {
11
+ type: TYPE_TEMPLATE;
12
+ httpRequestData?: IHttpRequestConfig;
13
+ configTemplateText?: IListViewConfigItemText;
14
+ configTemplateRadio?: IListViewConfigItemRadio;
15
+ configTemplateCheckbox?: IListViewConfigItemCheckbox;
16
+ configTemplateGroup?: IListViewConfigItemGroup;
17
+ configTemplateTag?: IListViewConfigItemTag;
18
+ configDescriptionGroup?: IConfigDescriptionGroup;
19
+ textNoData?: string;
20
+ textNoDataClassInclude?: string;
21
+ textSearchNoData?: string;
22
+ autoSelectFirstItem?: boolean;
23
+ backgroundListCustom?: string;
24
+ paddingLeftItem?: boolean;
25
+ sort?: (items: Array<any>) => void;
26
+ hasIconNoData?: boolean;
27
+ ignoreShowDataWhenNotSearch?: boolean | undefined;
28
+ ignoreFixHeightShowDataWhenNotSearch?: boolean | undefined;
29
+ highlightTextSearchInResult?: boolean | undefined;
30
+ }
31
+ export interface IListViewConfigItemText {
32
+ fieldKey: string;
33
+ getValue?: (item: any) => string;
34
+ fieldGetImage?: string;
35
+ classIncludeImage?: string;
36
+ getImage?: (value: string, item: any) => Promise<string>;
37
+ getImageError?: (value: string, item: any) => Promise<string>;
38
+ imgTypeIcon?: boolean;
39
+ ignoreIconSelected?: boolean;
40
+ classIncludeIconSelected?: string;
41
+ ignoreShowFieldLabel?: boolean;
42
+ getHrefButton?: (item: any) => string;
43
+ getClassItem?: (item: any) => string;
44
+ getClassIncludePopover?: (item: any) => string;
45
+ getConfigButtonLeft?: (item: any) => IButton;
46
+ getClassIconLeft?: (item: any) => string;
47
+ getConfigHoverDanger?: (item: any) => boolean;
48
+ getPopover?: (item: any) => IPopover | undefined;
49
+ rows?: Array<IListViewConfigItemTextRow>;
50
+ classRowsWrapper?: string;
51
+ classRows?: string;
52
+ configLabelPopover?: IPopoverOverlay;
53
+ autoScrollToItemSelected?: boolean;
54
+ itemSort?: ISort;
55
+ actionSort?: (itemSort: ISort) => void;
56
+ notUseVirtualScroll?: boolean;
57
+ getAvatarConfig?: (item: any) => IAvatarConfig;
58
+ getConfigAlignStart?: (item: any) => boolean;
59
+ stylePaddingRightItemOther?: boolean;
60
+ }
61
+ export interface IListViewConfigItemTag extends IListViewConfigItemText {
62
+ fieldKey: string;
63
+ ignoreItemFlexWrap?: boolean;
64
+ classIncludeContainer?: string;
65
+ }
66
+ export interface IListViewConfigItemRadio {
67
+ fieldKey: string;
68
+ fieldGetImage?: string;
69
+ classIncludeImage?: string;
70
+ hasAvatarPagesSocial?: boolean;
71
+ hasAvatarGroupSocial?: boolean;
72
+ getValue?: (item: any) => string;
73
+ getPopover?: (item: any) => IPopover | undefined;
74
+ rows?: Array<IListViewConfigItemTextRow>;
75
+ classRows?: string;
76
+ autoScrollToItemSelected?: boolean;
77
+ zIndexPopover?: number;
78
+ getAvatarConfig?: (item: any) => IAvatarConfig;
79
+ getClassItem?: (item: any) => string;
80
+ classItemInclude?: string;
81
+ }
82
+ export interface IListViewConfigItemCheckbox {
83
+ autoSelectAllItem?: boolean;
84
+ classListInclude?: string;
85
+ httpRequestAllIdSelectOrUnSelect?: IHttpRequestConfig;
86
+ configButtonSelectAndUndSelectItem?: {
87
+ classInclude?: string;
88
+ buttonCheckAll?: IButton;
89
+ buttonUncheckAll?: IButton;
90
+ };
91
+ configCheckboxCheckAll?: ICheckboxItem;
92
+ classIncludeHasConfigCheckBoxAll?: string;
93
+ fieldKey: string;
94
+ getValue?: (item: any) => string;
95
+ getPopover?: (item: any) => IPopover;
96
+ getClassItem?: (item: any) => string;
97
+ fieldGetImage?: string;
98
+ hasAvatarPagesSocial?: boolean;
99
+ hasAvatarGroupSocial?: boolean;
100
+ classIncludeImage?: string;
101
+ rows?: Array<IListViewConfigItemTextRow>;
102
+ classRowsWrapper?: string;
103
+ classRows?: string;
104
+ ignoreClickItemUnChecked?: boolean;
105
+ classLabelInclude?: string;
106
+ fieldGetLinkImageError?: string;
107
+ zIndexLabel?: number;
108
+ zIndexPopover?: number;
109
+ classItemInclude?: string;
110
+ getAvatarConfig?: (item: any) => IAvatarConfig;
111
+ classCheckboxItemInclude?: string;
112
+ ignoreItemWidth100?: boolean;
113
+ classIncludeLastViewItem?: string;
114
+ classInclude?: string;
115
+ }
116
+ interface IListViewConfigItemTextRow {
117
+ classRow?: string;
118
+ classItemSelected?: string;
119
+ getValue?: (item: any) => string;
120
+ classGetValue?: string;
121
+ classCols?: string;
122
+ getRowStylesDynamicCols?: (item: any) => string;
123
+ cols?: Array<IListViewConfigItemTextCol>;
124
+ action?: (item: any) => void;
125
+ getImage?: (item: any) => Promise<string>;
126
+ getClassImage?: (item: any) => string;
127
+ getImageError?: (item: any) => Promise<string>;
128
+ getPopoverConfig?: (item: any) => IPopoverOverlay;
129
+ getAvatarConfig?: (item: any) => IAvatarConfig;
130
+ }
131
+ export interface IListViewConfigItemTextCol {
132
+ classCol?: string;
133
+ getValue?: (item: any, index: number) => string;
134
+ getPopover?: (item: any, index: number) => IPopover | undefined;
135
+ action?: (item: any) => void;
136
+ getImage?: (item: any) => Promise<string>;
137
+ getClassImage?: (item: any) => string;
138
+ getImageError?: (item: any) => Promise<string>;
139
+ getConfigBadge?: (item: any, index: number) => IBadge | undefined;
140
+ getStylesDynamicCol?: (item: any) => string | Promise<string>;
141
+ getButton?: (item: any, index: number) => IButton | undefined;
142
+ getLabelSwitch?: (item: any, index: number) => ILabel | undefined;
143
+ getAvatarConfig?: (item: any) => IAvatarConfig;
144
+ }
145
+ export interface IListViewConfigItemGroup {
146
+ flatItemsSupportAutoSelect?: (data: Array<any>) => Array<any>;
147
+ fieldKey?: string;
148
+ isViewRadio?: boolean;
149
+ timeIntervalCalculatorHeight?: number;
150
+ configButtonSelectAndUndSelectItem?: {
151
+ classInclude?: string;
152
+ buttonCheckAll?: IButton;
153
+ buttonUncheckAll?: IButton;
154
+ };
155
+ configCheckboxCheckAll?: ICheckboxItem;
156
+ classIncludeHasConfigCheckBoxAll?: string;
157
+ getLabelSearch?: (item: any) => string;
158
+ getLabelGroup: (group: any) => string;
159
+ getExpandGroup?: (group: any) => boolean;
160
+ getPopoverGroup?: (group: any) => string;
161
+ getMaxLevelGroup: (group: any) => number;
162
+ getDescriptionGroupWhenNoData?: (group: any) => string | undefined;
163
+ getButtonGroup?: (group: any) => IButton;
164
+ getIconEmptyDataInGroup?: (group: any) => boolean;
165
+ ignoreCheckboxGroup?: boolean;
166
+ classIncludeNodata?: string;
167
+ classIncludeGroup?: string;
168
+ ignoreRadioGroup?: boolean;
169
+ ignoreTextUppercaseLabelGroup?: boolean;
170
+ ignoreGroupLine?: boolean;
171
+ marginTopHasLine?: number;
172
+ ignoreClickLabelGroup?: boolean;
173
+ fieldGetItems: string;
174
+ fieldGetAvatarItem?: string;
175
+ hasAvatarPagesSocial?: boolean;
176
+ hasAvatarGroupSocial?: boolean;
177
+ imgTypeIcon?: boolean;
178
+ classImageInclude?: string;
179
+ isViewTree?: boolean;
180
+ isViewTreeJson?: boolean;
181
+ getLabelItem: (item: any) => string;
182
+ getPopoverItem?: (item: any) => IPopover | undefined;
183
+ actionPopoverByItem?: (item: any, event: TYPE_POPOVER_EVENT) => void;
184
+ getExpandItem?: (group: any) => boolean;
185
+ getBonusPaddingLeftItem?: (item: any, parentItem?: any) => number;
186
+ getClassIncludeItemNoData?: (item: any, parentItem?: any) => string;
187
+ ignoreCheckboxItem?: boolean;
188
+ ignoreRadioItem?: boolean;
189
+ notChangeStateItemCheckOther?: boolean;
190
+ searchAllLevel?: boolean;
191
+ emitAllItemChecked?: boolean;
192
+ singleSelectItem?: boolean;
193
+ singleSelectItemByTree?: boolean;
194
+ hasIconCheckSingleSelectItem?: boolean;
195
+ colorBlueWhenItemSelected?: boolean;
196
+ hasBackgroundColorWhenItemSelected?: boolean;
197
+ iconExpand: '' | 'left' | 'right';
198
+ ignoreIconExpandMarginRight?: boolean;
199
+ onlySelectFirstItem?: boolean;
200
+ ignoreChooseParentThenAutoChooseChildren?: boolean;
201
+ chooseChildThenAutoChooseParent?: boolean;
202
+ ignoreUnselectChildrenRemoveSelectParent?: boolean;
203
+ ignoreEmitAllItemCheckedWhenChooseChildThenAutoChooseParent?: boolean;
204
+ disableItemNotLastLevel?: boolean;
205
+ classLabelItem?: string;
206
+ allowDisableLabel?: boolean;
207
+ zIndexLabel?: number;
208
+ expandFirstItem?: boolean;
209
+ widthLabelSub24WhenNotTreeView?: boolean;
210
+ classIncludeItem?: string;
211
+ getClassIncludeItemContent?: (item: any) => string;
212
+ getLinkImageError?: (item: any) => string;
213
+ getAvatarConfig?: (item: any) => IAvatarConfig;
214
+ classIncludeLastItem?: string;
215
+ getIconImageClass?: (item: any) => string;
216
+ autoCountWhenGroupEmptyItemLevel1?: boolean;
217
+ ignoreChangeChildrenDisableWhenChangeParent?: boolean;
218
+ }
219
+ export interface IConfigDescriptionGroup {
220
+ classInclude?: string;
221
+ tooltipDescription?: IPopoverOverlay;
222
+ textDescription: string;
223
+ classTextDescriptionInclude?: string;
224
+ }
225
+ export {};
@@ -0,0 +1,10 @@
1
+ export interface IListDataEmitKey {
2
+ key: unknown;
3
+ item: any;
4
+ isClickManual: boolean;
5
+ }
6
+ export interface IListDataEmitMultiKey {
7
+ keys: Array<unknown>;
8
+ mapKeys: Array<IListDataEmitKey>;
9
+ isClickManual: boolean;
10
+ }
@@ -0,0 +1,9 @@
1
+ import { IBoundingClientRect } from "@libs-ui/interfaces-types";
2
+ export interface IListFunctionControlEvent {
3
+ checkIsValid: () => Promise<boolean>;
4
+ refresh: () => Promise<void>;
5
+ resetKeySelected: () => Promise<void>;
6
+ getRectListView: () => Promise<IBoundingClientRect>;
7
+ removeItems: (keys: Array<string>) => Promise<void>;
8
+ setMessageError?: (message: string) => Promise<void>;
9
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./config-item.interface";
2
+ export * from "./data-emit.interface";
3
+ export * from "./function-control-event.interface";
4
+ export * from "./tab.interface";
5
+ export * from "./templates-type.type";
@@ -0,0 +1,4 @@
1
+ export interface IDropdownTab {
2
+ key: string;
3
+ name: string;
4
+ }
@@ -0,0 +1 @@
1
+ export type TYPE_TEMPLATE = 'checkbox' | 'group' | 'radio' | 'text' | 'tag';