verben-ng-ui 1.2.12 → 1.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-ng-ui.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/card-data-view/right-card-data-view/right-card-data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/right-card-data-view/right-card-data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/svg/svg.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/card-data-view/left-card-data/left-card-data.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/left-card-data/left-card-data.component.html","../../../projects/verben-ng-ui/src/lib/components/card-data-view/left-card-data-view/left-card-data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/left-card-data-view/left-card-data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component.html","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view-header/card-data-view-header.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view-header/card-data-view-header.component.html","../../../projects/verben-ng-ui/src/lib/components/svg/svg.module.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view.module.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/DropdownLoadEvent.ts","../../../projects/verben-ng-ui/src/lib/components/TemplateDirective.directive.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down-item/drop-down-item.component.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down-item/drop-down-item.component.html","../../../projects/verben-ng-ui/src/lib/components/shared.module.ts","../../../projects/verben-ng-ui/src/lib/components/tooltip/tooltip.component.ts","../../../projects/verben-ng-ui/src/lib/components/tooltip/tooltip.component.html","../../../projects/verben-ng-ui/src/lib/components/tooltip/tooltip.module.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down.component.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down.component.html","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down.module.ts","../../../projects/verben-ng-ui/src/lib/components/chip/chip.component.ts","../../../projects/verben-ng-ui/src/lib/components/chip/chip.component.html","../../../projects/verben-ng-ui/src/lib/components/chip/chip.module.ts","../../../projects/verben-ng-ui/src/lib/components/image/image.component.ts","../../../projects/verben-ng-ui/src/lib/components/image/image.component.html","../../../projects/verben-ng-ui/src/lib/Verbena-input/verbena-input.component.ts","../../../projects/verben-ng-ui/src/lib/Verbena-input/verbena-input.component.html","../../../projects/verben-ng-ui/src/lib/Verbena-input/verbena-input.module.ts","../../../projects/verben-ng-ui/src/lib/components/image/image.module.ts","../../../projects/verben-ng-ui/src/lib/models/table-filter.ts","../../../projects/verben-ng-ui/src/lib/config.ts","../../../projects/verben-ng-ui/src/lib/validate/error-message.service.ts","../../../projects/verben-ng-ui/src/lib/validate/validate.directive.ts","../../../projects/verben-ng-ui/src/lib/components/table-filter/table-filter.component.ts","../../../projects/verben-ng-ui/src/lib/components/table-filter/table-filter.component.html","../../../projects/verben-ng-ui/src/lib/validate/validate.module.ts","../../../projects/verben-ng-ui/src/lib/components/table-filter/table-filter.module.ts","../../../projects/verben-ng-ui/src/lib/services/notification.services.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-icon/verbena-icon.component.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-icon/verbena-icon.component.html","../../../projects/verben-ng-ui/src/lib/verbena-button/verbena-button.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-button/verbena-button.component.html","../../../projects/verben-ng-ui/src/lib/components/notification/notification.component.ts","../../../projects/verben-ng-ui/src/lib/components/notification/notification.component.html","../../../projects/verben-ng-ui/src/lib/components/verbena-icon/verbena-icon.module.ts","../../../projects/verben-ng-ui/src/lib/verbena-button/verbena-button.module.ts","../../../projects/verben-ng-ui/src/lib/components/notification/notification.module.ts","../../../projects/verben-ng-ui/src/lib/components/card/card.component.ts","../../../projects/verben-ng-ui/src/lib/components/card/card.component.html","../../../projects/verben-ng-ui/src/lib/components/card/card.module.ts","../../../projects/verben-ng-ui/src/lib/convert-to-number/convert-to-number.directive.ts","../../../projects/verben-ng-ui/src/lib/convert-to-number/convert-to-number.module.ts","../../../projects/verben-ng-ui/src/lib/convert-to-integer/convert-to-integer.directive.ts","../../../projects/verben-ng-ui/src/lib/convert-to-integer/convert-to-integer.module.ts","../../../projects/verben-ng-ui/src/lib/components/sort-table/sort-table.component.ts","../../../projects/verben-ng-ui/src/lib/components/sort-table/sort-table.component.html","../../../projects/verben-ng-ui/src/lib/components/sort-table/sort-table.module.ts","../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.component.ts","../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.component.html","../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view-click-outside.directive.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/data-table/column.directive.ts","../../../projects/verben-ng-ui/src/lib/components/data-table/data-table.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-table/data-table.component.html","../../../projects/verben-ng-ui/src/lib/components/data-table/data-table.module.ts","../../../projects/verben-ng-ui/src/lib/components/pop-up/pop-up.component.ts","../../../projects/verben-ng-ui/src/lib/components/pop-up/pop-up.component.html","../../../projects/verben-ng-ui/src/lib/components/pop-up/pop-up.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.module.ts","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.component.ts","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.component.html","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.module.ts","../../../projects/verben-ng-ui/src/lib/phone-number/phone-number.directive.ts","../../../projects/verben-ng-ui/src/lib/phone-number/phone-number.module.ts","../../../projects/verben-ng-ui/src/lib/validate-input/validate-input.directive.ts","../../../projects/verben-ng-ui/src/lib/validate-input/validate-input.module.ts","../../../projects/verben-ng-ui/src/lib/number-range/number-range.directive.ts","../../../projects/verben-ng-ui/src/lib/number-range/number-range.module.ts","../../../projects/verben-ng-ui/src/lib/required-input/required-input.directive.ts","../../../projects/verben-ng-ui/src/lib/required-input/required-input.module.ts","../../../projects/verben-ng-ui/src/lib/email-validator/email-validator.directive.ts","../../../projects/verben-ng-ui/src/lib/email-validator/email-validator.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-table/data-table.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.component.html","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.service.ts","../../../projects/verben-ng-ui/src/lib/components/verben-dialogue/verben-dialogue.component.ts","../../../projects/verben-ng-ui/src/lib/components/verben-dialogue/verben-dialogue.component.html","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.html","../../../projects/verben-ng-ui/src/lib/components/verben-dialogue/verben-dialogue.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.types.ts","../../../projects/verben-ng-ui/src/lib/verbena-switch/verbena-switch.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-switch/verbena-switch.component.html","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.component.html","../../../projects/verben-ng-ui/src/lib/verbena-switch/verbena-switch.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-xport/data-xport.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-xport/data-xport.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-xport/data-xport.component.html","../../../projects/verben-ng-ui/src/lib/components/data-xport/data-xport.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.component.html","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.component.html","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-columns/data-columns.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-columns/data-columns.component.html","../../../projects/verben-ng-ui/src/lib/components/data-columns/data-columns.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-columns/data-columns.service.ts","../../../projects/verben-ng-ui/src/lib/control-options/control-options.directive.ts","../../../projects/verben-ng-ui/src/lib/control-options/control-options.module.ts","../../../projects/verben-ng-ui/src/lib/verbena-badge/verbena-badge.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-badge/verbena-badge.component.html","../../../projects/verben-ng-ui/src/lib/verbena-badge/verbena-badge.module.ts","../../../projects/verben-ng-ui/src/lib/verbena-textarea/verbena-textarea.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-textarea/verbena-textarea.component.html","../../../projects/verben-ng-ui/src/lib/verbena-textarea/verbena-textarea.module.ts","../../../projects/verben-ng-ui/src/lib/components/verben-mail/verben-mail.component.ts","../../../projects/verben-ng-ui/src/lib/components/verben-mail/verben-mail.component.html","../../../projects/verben-ng-ui/src/lib/components/verben-mail/verben-mail.module.ts","../../../projects/verben-ng-ui/src/lib/components/verben-time-picker/verben-time-picker.component.ts","../../../projects/verben-ng-ui/src/lib/components/verben-time-picker/verben-time-picker.component.html","../../../projects/verben-ng-ui/src/lib/components/verben-time-picker/verben-time-picker.module.ts","../../../projects/verben-ng-ui/src/lib/tokens.ts","../../../projects/verben-ng-ui/src/lib/services/icon.service.ts","../../../projects/verben-ng-ui/src/lib/components/icons/icons.component.ts","../../../projects/verben-ng-ui/src/lib/components/icons/icons.component.html","../../../projects/verben-ng-ui/src/lib/components/icons/icons.module.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-tab/tab-item.component.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-tab/verbena-tab.component.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-tab/verbena-tab.component.html","../../../projects/verben-ng-ui/src/lib/components/verbena-tab/verbena-tab.module.ts","../../../projects/verben-ng-ui/src/lib/components/number-input/number-input.component.ts","../../../projects/verben-ng-ui/src/lib/components/number-input/number-input.component.html","../../../projects/verben-ng-ui/src/lib/components/number-input/number-input.module.ts","../../../projects/verben-ng-ui/src/public-api.ts","../../../projects/verben-ng-ui/src/verben-ng-ui.ts"],"sourcesContent":["import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { CardData } from '../card-data';\n\n@Component({\n selector: 'verben-right-card-data-view',\n templateUrl: './right-card-data-view.component.html',\n styleUrl: './right-card-data-view.component.css'\n})\nexport class RightCardDataViewComponent {\n @ContentChild('parent') parent!: TemplateRef<any>;\n @ContentChild('child') child!: TemplateRef<any>;\n @Input() parentData! :CardData\n @Input() chilData! :CardData\n @Input() meth(d:any)\n {\n console.log(this.parent)\n console.log(this.chilData)\n }\n // currentData && currentData.title\n\n}\n"," <ng-container *ngIf=\"parentData && !chilData\">\n <ng-content *ngTemplateOutlet=\"parent\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"chilData\">\n <ng-content *ngTemplateOutlet=\"child\"></ng-content> \n </ng-container>\n","import {\n Component,\n Input,\n OnInit,\n ElementRef,\n ViewChild,\n OnChanges,\n} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'verben-svg',\n template: '<span #svgContainer></span>',\n styleUrls: ['./svg.component.css'],\n})\nexport class SvgComponent implements OnInit, OnChanges {\n @Input() icon: string = '';\n @Input() width: number = 24;\n @Input() height: number = 24;\n color: string = '';\n @Input() fill: string = '';\n @Input() stroke: string = '';\n @Input() type: 'default' | 'outline' | 'solid' = 'default';\n\n @Input() size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n\n @ViewChild('svgContainer', { static: true }) svgContainer!: ElementRef;\n\n constructor(private http: HttpClient, private sanitizer: DomSanitizer) {}\n\n ngOnInit(): void {\n this.color = this.fill.length > 0 ? this.fill : this.stroke;\n this.loadSvgIcon(this.icon);\n }\n\n ngOnChanges(): void {\n this.color = this.fill.length > 0 ? this.fill : this.stroke;\n this.loadSvgIcon(this.icon);\n }\n\n private getIconDimensions(): { width: number; height: number } {\n let width = this.width;\n let height = this.height;\n\n if (this.size) {\n switch (this.size) {\n case 'sm':\n width = height = 16;\n break;\n case 'md':\n width = height = 24;\n break;\n case 'lg':\n width = height = 32;\n break;\n case 'xl':\n width = height = 48;\n break;\n case '2xl':\n width = height = 52;\n break;\n case '3xl':\n width = height = 64;\n break;\n case '4xl':\n width = height = 80;\n break;\n default:\n width = height = 16;\n break;\n }\n }\n\n return { width, height };\n }\n\n loadSvgIcon(iconName: string): void {\n this.http\n .get(`assets/lib-icons/${this.type}/${iconName}.svg`, {\n responseType: 'text',\n })\n .subscribe(\n (svgContent: string | null) => {\n if (svgContent && svgContent.includes('<svg')) {\n try {\n this.updateSvg(svgContent);\n } catch (err: any) {\n // console.log({ Error: err });\n }\n } else {\n // If response is not a valid SVG, try loading from project assets\n this.fallbackLoad(iconName);\n }\n },\n (error) => {\n this.fallbackLoad(iconName);\n }\n );\n }\n\n private fallbackLoad(iconName: string): void {\n this.http\n .get(`assets/icons/${iconName}.svg`, { responseType: 'text' })\n .subscribe(\n (svgContent: string | null) => {\n if (svgContent && svgContent.includes('<svg')) {\n try {\n this.updateSvg(svgContent);\n } catch (err: any) {\n // console.log({ Error: err });\n }\n } else {\n //console.error(`Invalid SVG response for ${iconName}`);\n }\n },\n (error) => {\n // console.error(`Error loading SVG icon: ${error}`);\n }\n );\n }\n\n // loadSvgIcon(iconName: string): void {\n // this.http\n // .get(`assets/lib-icons/${this.type}/${iconName}.svg`, {\n // responseType: 'text',\n // })\n // .subscribe(\n // (svgContent: string | null) => {\n // //console.log({SvgContent: svgContent});\n // if (svgContent) {\n // try {\n // this.updateSvg(svgContent);\n // } catch (err: any) {\n // console.log({ Error: err });\n // }\n // }\n // },\n // (error) => {\n // this.http\n // .get(`assets/icons/${iconName}.svg`, { responseType: 'text' })\n // .subscribe(\n // (svgContent: string | null) => {\n // //console.log({SvgContent: svgContent});\n // if (svgContent) {\n // try {\n // this.updateSvg(svgContent);\n // } catch (err: any) {\n // console.log({ Error: err });\n // }\n // }\n // },\n // (error) => {\n // console.error(`Error loading SVG icon: ${error}`);\n // }\n // );\n // }\n // );\n // }\n\n private updateSvg(svgContent: string): void {\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgContent, 'image/svg+xml');\n const svgElement = svgDoc.documentElement;\n\n const { width, height } = this.getIconDimensions();\n\n svgElement.setAttribute('width', width.toString());\n svgElement.setAttribute('height', height.toString());\n\n const elementsToUpdate = [\n 'path',\n 'circle',\n 'line',\n 'rect',\n 'polygon',\n 'polyline',\n 'ellipse',\n ];\n\n elementsToUpdate.forEach((tag) => {\n const elements = svgElement.querySelectorAll(tag);\n elements.forEach((element) => {\n const hasStroke =\n element.hasAttribute('stroke') &&\n element.getAttribute('stroke') !== 'none';\n const hasFill =\n element.hasAttribute('fill') &&\n element.getAttribute('fill') !== 'none';\n\n // if (this.icon == 'academic-cap') {\n // console.log({\n // Element: element,\n // hasStroke: hasStroke,\n // hasFill: hasFill,\n // Stroke: element.getAttribute('stroke'),\n // Fill: element.getAttribute('fill'),\n // });\n // }\n if (this.color && hasFill) {\n element.setAttribute('fill', this.color);\n }\n if (this.color && hasStroke) {\n element.setAttribute('stroke', this.color);\n }\n });\n });\n\n const masks = svgElement.querySelectorAll('mask');\n masks.forEach((mask, index) => {\n const newMaskId = `mask_${this.icon}_${index}`;\n mask.setAttribute('id', newMaskId);\n\n const maskReferences = svgElement.querySelectorAll(\n `[mask=\"url(#${mask.id})\"]`\n );\n maskReferences.forEach((ref) => {\n ref.setAttribute('mask', `url(#${newMaskId})`);\n });\n });\n\n const svgContainerEl = this.svgContainer.nativeElement;\n svgContainerEl.innerHTML = '';\n svgContainerEl.appendChild(svgElement);\n }\n}\n","import {\n AfterContentInit,\n Component,\n contentChild,\n ContentChild,\n effect,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n viewChild,\n ViewChild,\n} from '@angular/core';\nimport { CardData } from './card-data';\nimport { Title } from '@angular/platform-browser';\nimport { RightCardDataViewComponent } from './right-card-data-view/right-card-data-view.component';\nimport { LeftCardDataComponent } from './left-card-data/left-card-data.component';\n\n@Component({\n selector: 'verben-card-data-view',\n templateUrl: './card-data-view.component.html',\n styleUrl: './card-data-view.component.css',\n})\nexport class CardDataViewComponent {\n @Input() pd = '10px';\n @Input() mg = '0px';\n @Input() lHeight?: string = '100%';\n @Input() rHeight?: string = '100%';\n @Input() rWidth?: string = '70%';\n @Input() lWidth?: string = '30%';\n @Input() textColor?: string;\n @Input() lbgColor?: string;\n @Input() rbgColor?: string;\n @Input() border?: string;\n @Input() display?: string;\n @Input() borderRadius?: string = '12px';\n @Input() activeCss?: string;\n @Input() inActiveCss?: string;\n @Input() displayAsRow?: boolean = true;\n @Input() cardDataList: CardData[] = [];\n @Input() dataId!: string; //what to use to identify each data\n @Input() totalRecords: number = 0;\n @Input() footer: boolean = false;\n @Input() noOfVisibleChildren: number = 3;\n @Input() showEditIcon: boolean = false;\n @Output() editClicked: EventEmitter<void> = new EventEmitter();\n @ContentChild(RightCardDataViewComponent)\n rightContent!: RightCardDataViewComponent;\n // @ContentChild(LeftCardDataComponent) left!:LeftCardDataComponent;\n @ContentChild('card') card!: TemplateRef<any>;\n // @ContentChild('content') content!: TemplateRef<any>;\n currentItem: any = {};\n currentChildItem: any = {};\n\n hasCurrentItem() {\n return (\n !!Object.keys(this.currentItem ?? {}).length ||\n !!Object.keys(this.currentChildItem ?? {}).length\n );\n }\n clearData() {\n this.currentItem = {} as CardData;\n this.currentChildItem = {} as CardData;\n this.cardDataList.forEach((_) => {\n _.selected = false;\n _.children.forEach((c) => {\n c.selected = false;\n c.isChildrenExpanded = false;\n });\n _.isChildrenExpanded = false;\n });\n }\n setDetailData() {\n this.rightContent.parentData = this.currentItem;\n this.rightContent.chilData = this.currentChildItem;\n }\n @Input() onItemClick(item: CardData) {\n this.resetChildren(item);\n item.selected = true;\n this.cardDataList.forEach((element) => {\n if (element.data[this.dataId] == item.data[this.dataId]) {\n this.currentItem = item;\n } else {\n element.selected = false;\n }\n });\n this.setDetailData();\n return this.currentItem;\n }\n resetChildren(newSelect: CardData) {\n if (this.currentItem && this.currentItem.children?.length) {\n (this.currentItem.children as any[]).forEach((c) => {\n c.selected = false;\n });\n if (newSelect.data[this.dataId] != this.currentItem.data[this.dataId])\n this.currentItem.isChildrenExpanded = false;\n }\n this.currentChildItem = null;\n }\n @Input() onCardChildClick(childIndex: number) {\n var item = this.currentItem.children[childIndex];\n (this.currentItem.children as any[]).forEach((element) => {\n if (element.data[this.dataId] == item.data[this.dataId]) {\n this.currentChildItem = item;\n } else {\n element.selected = false;\n }\n });\n this.currentChildItem.selected = true;\n this.setDetailData();\n return this.currentChildItem;\n }\n showChildren(item: CardData) {\n var currToggleState = item.isChildrenExpanded;\n this.cardDataList.forEach((_) => {\n _.isChildrenExpanded = false;\n _.selected = false;\n });\n item.selected = true;\n item.isChildrenExpanded = !currToggleState;\n }\n\n @Output() loadMoreClick = new EventEmitter();\n onLoadMoreClick() {\n this.loadMoreClick.emit();\n }\n\n onEditClicked() {\n this.editClicked.emit();\n }\n}\n","<div #main class=\"flex-col\" [style.display]=\"'flex'\">\n <!-- Header -->\n <ng-container ngProjectAs=\"verben-card-data-view-header\">\n <ng-content select=\"verben-card-data-view-header\"></ng-content>\n </ng-container>\n\n <div\n [ngClass]=\"\n !hasCurrentItem() ? 'master-only-container' : 'master-detail-container'\n \"\n >\n <!-- Card and Footer -->\n <div\n [style.borderRadius]=\"borderRadius\"\n [style.backgroundColor]=\"lbgColor\"\n class=\"flex-col\"\n >\n <!-- Card section -->\n <ng-container ngProjectAs=\"verben-left-card-data-view\">\n <ng-content select=\"verben-left-card-data-view\"></ng-content>\n </ng-container>\n\n <!-- Footer-->\n <ng-container ngProjectAs=\"verben-card-data-view-footer\">\n <ng-content select=\"verben-card-data-view-footer\"></ng-content>\n </ng-container>\n </div>\n <!-- Detail Section-->\n <div\n class=\"card-detail-section\"\n [style.backgroundColor]=\"rbgColor\"\n *ngIf=\"hasCurrentItem()\"\n [style.borderRadius]=\"borderRadius\"\n >\n <div class=\"flex justify-between items-center\">\n <div>\n <verben-svg\n *ngIf=\"this.showEditIcon\"\n (click)=\"onEditClicked()\"\n class=\"cursor-pointer\"\n icon=\"edit\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <verben-svg\n (click)=\"clearData()\"\n class=\"cursor-pointer toRight\"\n icon=\"close\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <ng-container #right ngProjectAs=\"verben-right-card-data-view\">\n <ng-content\n #rightContent\n select=\"verben-right-card-data-view\"\n ></ng-content>\n </ng-container>\n </div>\n </div>\n</div>\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { CardData } from '../card-data';\nimport { CardDataViewComponent } from '../card-data-view.component';\n\n@Component({\n selector: 'verben-left-card-data',\n templateUrl: './left-card-data.component.html',\n styleUrl: './left-card-data.component.css',\n})\nexport class LeftCardDataComponent {\n @Input() pd = '10px';\n @Input() mg = '0px';\n @Input() height?: string = '100%';\n @Input() weight?: string = '100%';\n @Input() activeCss?: string;\n @Input() inActiveCss?: string;\n @Input() cardDataList: CardData[] = [];\n @Input() iconCollapse: string = 'plus';\n @Input() iconExpanded: string = 'minus';\n @Input() parent!: CardDataViewComponent;\n @ContentChild('card') card!: TemplateRef<any>;\n @ContentChild('cardChild') cardChild!: TemplateRef<any>;\n @ContentChild('cardFooter') cardFooter!: TemplateRef<any>;\n @Input() dataId!: string; //what to use to identify each data\n // currentItem:any={};\n showToggle(item: CardData) {\n // showToggle() && item.children.length>0\n return (\n this.cardDataList.filter((_) => _.selected).length > 0 &&\n item.children.length > 0\n );\n }\n showChildren(item: CardData) {\n var currToggleState = item.isChildrenExpanded;\n this.cardDataList.forEach((_) => {\n _.isChildrenExpanded = false;\n _.selected = false;\n });\n this.parent.onItemClick(item);\n item.isChildrenExpanded = !currToggleState;\n }\n}\n","@for (item of cardDataList; track $index) {\n<div class=\"flex\">\n <div class=\"flex-col full-width\">\n <ng-content\n *ngTemplateOutlet=\"card; context: { $implicit: item }\"\n ></ng-content>\n <!-- children -->\n <div\n class=\"childrenPadding flex-col flex\"\n *ngIf=\"item.children.length > 0 && item.isChildrenExpanded\"\n >\n @for (child of item.children; track $index) {\n <ng-content\n *ngTemplateOutlet=\"\n cardChild;\n context: { index: $index, $implicit: child }\n \"\n ></ng-content>\n }\n </div>\n <div *ngIf=\"item.isChildrenExpanded\" class=\"false-padding\">\n <ng-content\n *ngTemplateOutlet=\"\n cardFooter;\n context: { index: $index, $implicit: item }\n \"\n ></ng-content>\n </div>\n </div>\n</div>\n\n}\n","import { Component, Input } from '@angular/core';\nimport { CardData } from '../card-data';\n\n@Component({\n selector: 'verben-left-card-data-view',\n templateUrl: './left-card-data-view.component.html',\n styleUrl: './left-card-data-view.component.css'\n})\nexport class LeftCardDataViewComponent {\n @Input() cardDataList:CardData[]=[];\n\n}\n"," <ng-container ngProjectAs=\"verben-left-card-data\">\n <ng-content select=\"verben-left-card-data\"></ng-content> \n </ng-container>\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'verben-card-data-view-footer',\n templateUrl: './card-data-view-footer.component.html',\n styleUrl: './card-data-view-footer.component.css'\n})\nexport class CardDataViewFooterComponent {\n\n}\n"," <ng-content></ng-content> \n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'verben-card-data-view-header',\n templateUrl: './card-data-view-header.component.html',\n styleUrl: './card-data-view-header.component.css'\n})\nexport class CardDataViewHeaderComponent {\n\n}\n"," <ng-content></ng-content> \n","import { NgModule } from '@angular/core';\nimport { SvgComponent } from './svg.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [SvgComponent],\n imports: [CommonModule], \n exports: [SvgComponent]\n})\nexport class SvgModule {}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CardDataViewComponent } from './card-data-view.component';\nimport { LeftCardDataComponent } from './left-card-data/left-card-data.component';\nimport { LeftCardDataViewComponent } from './left-card-data-view/left-card-data-view.component';\nimport { RightCardDataViewComponent } from './right-card-data-view/right-card-data-view.component';\nimport { CardDataViewFooterComponent } from './card-data-view-footer/card-data-view-footer.component';\nimport { CardDataViewHeaderComponent } from './card-data-view-header/card-data-view-header.component';\nimport { SvgModule } from \"../svg/svg.module\";\n\n@NgModule({\n declarations:[CardDataViewComponent,LeftCardDataComponent,\n LeftCardDataViewComponent,RightCardDataViewComponent,CardDataViewFooterComponent,\n CardDataViewHeaderComponent],\n imports: [CommonModule, SvgModule],\n exports: [CardDataViewComponent,LeftCardDataComponent,\n LeftCardDataViewComponent,RightCardDataViewComponent,CardDataViewFooterComponent,\n CardDataViewHeaderComponent]\n})\nexport class CardDataViewModule {}\n","export class CardData\n{\n selected:boolean=false;\n title:string='';\n body:{title:string,value:string}[]=[];\n data?:any;\n children:CardData[]=[]\n isChildrenExpanded?:boolean=false\n}","export class DropdownLoadEvent {\n private _loadTimes: number;\n\n get loadTimes(): number {\n return this._loadTimes;\n }\n\n constructor() {\n this._loadTimes = 0;\n }\n\n increaseLoadTime() {\n this._loadTimes += 1;\n }\n\n reset() {\n this._loadTimes = 0;\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[vTemplate]',\n})\nexport class TemplateDirective {\n @Input() vTemplate!: string; // The name of the template\n\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n Input,\n OnInit,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { TemplateDirective } from '../../TemplateDirective.directive';\nimport { DropdownMenuItemWrapper } from '../drop-down.component';\nimport { CommonModule } from '@angular/common';\nimport { isEqual } from 'lodash';\nimport { FormsModule } from '@angular/forms';\n// import { SvgModule } from 'verben-ng-ui/src/public-api';\nimport { SvgModule } from '../../../components/svg/svg.module';\n\n@Component({\n selector: 'drop-down-item',\n standalone: true,\n imports: [CommonModule, FormsModule, SvgModule],\n templateUrl: './drop-down-item.component.html',\n styleUrl: './drop-down-item.component.css',\n})\nexport class DropDownItemComponent implements OnInit {\n @Input() itemTemplate: TemplateRef<any> | null = null; // Allow null for custom item template\n @Input() groupTemplate: TemplateRef<any> | null = null;\n\n @Input() activeItem?: any;\n @Input() activeItems?: any;\n @Input() selectKey: string | null = null;\n @Input() optionValue?: string;\n @Input() optionLabel?: string;\n @Input() optionSubLabel?: string;\n @Input() loadMoreCaption?: string;\n @Input() multiselect: boolean = false;\n @Input() options: any[] = [];\n @Input() group: boolean = false;\n @Input() onExpand?: (\n item: DropdownMenuItemWrapper,\n siblings: DropdownMenuItemWrapper[]\n ) => Promise<void>;\n @Input() onLoadMore?: (item: DropdownMenuItemWrapper) => Promise<void>;\n @Input() onSelect?: (value: any, event: Event) => void;\n\n constructor() {}\n ngOnInit(): void {}\n\n isEqual(value: any, other: any): boolean {\n return this.selectKey\n ? isEqual((value && value[this.selectKey]) || null, other[this.selectKey])\n : isEqual(value, other);\n }\n\n isSelected(value: any[], other: any): boolean {\n for (let val of value) {\n const equalityCheck = this.selectKey\n ? isEqual(val[this.selectKey], other[this.selectKey])\n : isEqual(val, other);\n if (equalityCheck) {\n return true;\n }\n }\n return false;\n }\n\n getValue(item: any): any {\n if (!this.optionValue) {\n return this.group ? item.value : item;\n }\n return this.group ? item.value[this.optionValue] : item[this.optionValue];\n }\n\n getOptionLabel(item: any): any {\n if (this.group) {\n return item.label;\n }\n if (!this.optionLabel) {\n return item;\n }\n return typeof item === 'string' ? item : item[this.optionLabel];\n }\n\n getOptionSubLabel(item: any): any {\n if (this.group) {\n return item.subLabel;\n }\n if (!this.optionSubLabel) {\n return item;\n }\n return typeof item === 'string' ? item : item[this.optionSubLabel];\n }\n}\n","<!-- If group mode is false, display a flat list -->\n<ng-container *ngIf=\"!group\">\n <div class=\"option-items-container flex flex-col\">\n <ng-container *ngFor=\"let item of options\">\n <ng-container *ngIf=\"itemTemplate; else defaultItem\">\n <div\n *ngIf=\"!multiselect\"\n [ngClass]=\"{\n 'active-item': isEqual(this.activeItem, this.getValue(item))\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"item-wrapper\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n <div\n *ngIf=\"multiselect\"\n [ngClass]=\"{\n 'multi-select-active-item': isSelected(\n this.activeItems,\n this.getValue(item)\n )\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"item-wrapper multi-select flex\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(this.activeItems, this.getValue(item))\"\n class=\"custom-checkbox\"\n />\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n\n <ng-template #defaultItem>\n <div\n *ngIf=\"!multiselect\"\n [ngClass]=\"{\n 'active-item': isEqual(this.activeItem, this.getValue(item))\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"default-item item-wrapper flex flex-col\"\n >\n <div\n [ngClass]=\"{ 'has-sub-label': optionSubLabel }\"\n class=\"item-label\"\n >\n {{ this.getOptionLabel(item) }}\n </div>\n <div\n *ngIf=\"optionSubLabel || (group && item.subLabel)\"\n class=\"item-sub-label\"\n >\n {{ this.getOptionSubLabel(item) }}\n </div>\n </div>\n <div\n *ngIf=\"multiselect\"\n [ngClass]=\"{\n 'multi-select-active-item': isSelected(\n this.activeItems,\n this.getValue(item)\n )\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"default-item item-wrapper multi-select flex\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(this.activeItems, this.getValue(item))\"\n class=\"custom-checkbox\"\n />\n <div class=\"flex flex-col\">\n <div\n [ngClass]=\"{ 'has-sub-label': optionSubLabel }\"\n class=\"item-label\"\n >\n {{ this.getOptionLabel(item) }}\n </div>\n <div\n *ngIf=\"optionSubLabel || (group && item.subLabel)\"\n class=\"item-sub-label\"\n >\n {{ this.getOptionSubLabel(item) }}\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</ng-container>\n\n<!-- If group mode is true, display groups and sub-groups recursively -->\n<ng-container *ngIf=\"group\">\n <div class=\"option-items-container flex flex-col\">\n <ng-container *ngFor=\"let item of options\">\n <!-- Display as group header if the item has children -->\n <div *ngIf=\"!item.items\">\n <ng-container *ngIf=\"itemTemplate; else defaultItem\">\n <div\n *ngIf=\"!multiselect\"\n [ngClass]=\"{\n 'active-item': isEqual(this.activeItem, this.getValue(item))\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"item-wrapper\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n <div\n *ngIf=\"multiselect\"\n [ngClass]=\"{\n 'multi-select-active-item': isSelected(\n this.activeItems,\n this.getValue(item)\n )\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"item-wrapper multi-select flex\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(this.activeItems, this.getValue(item))\"\n class=\"custom-checkbox\"\n />\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n\n <ng-template #defaultItem>\n <div\n *ngIf=\"!multiselect\"\n [ngClass]=\"{\n 'active-item': isEqual(this.activeItem, this.getValue(item))\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"default-item item-wrapper flex flex-col\"\n >\n <div\n [ngClass]=\"{ 'has-sub-label': item.subLabel }\"\n class=\"item-label\"\n >\n {{ item.label }}\n </div>\n <div *ngIf=\"item.subLabel\" class=\"item-sub-label\">\n {{ item.subLabel }}\n </div>\n </div>\n <div\n *ngIf=\"multiselect\"\n [ngClass]=\"{\n 'multi-select-active-item': isSelected(\n this.activeItems,\n this.getValue(item)\n )\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"default-item item-wrapper multi-select flex\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(this.activeItems, this.getValue(item))\"\n class=\"custom-checkbox\"\n />\n <div class=\"flex flex-col\">\n <div\n [ngClass]=\"{ 'has-sub-label': item.subLabel }\"\n class=\"item-label\"\n >\n {{ item.label }}\n </div>\n <div *ngIf=\"item.subLabel\" class=\"item-sub-label\">\n {{ item.subLabel }}\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n\n <!-- Display as normal item if it doesn't have children -->\n <div class=\"flex flex-col\" *ngIf=\"item.items\">\n <ng-container *ngIf=\"groupTemplate; else defaultGroup\">\n <div\n class=\"group-wrapper\"\n (click)=\"onExpand && onExpand(item, options)\"\n >\n <ng-container\n *ngTemplateOutlet=\"groupTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n\n <ng-template #defaultGroup>\n <div\n (click)=\"onExpand && onExpand(item, options)\"\n class=\"default-group group-wrapper flex\"\n >\n <span *ngIf=\"!item.expanded\">\n <verben-svg\n icon=\"plus\"\n fill=\"#5d6674\"\n [width]=\"15\"\n [height]=\"15\"\n ></verben-svg>\n <!-- <svg class=\"plus-minus-icon\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.33214 6.66578H5.26102C3.95858 6.66578 2.65614 6.6663 1.35371 6.66544C1.06528 6.66527 0.850553 6.53571 0.728192 6.27369C0.525115 5.83859 0.844383 5.33734 1.32491 5.33322C1.64624 5.33031 1.96756 5.33271 2.28889 5.33271C3.28285 5.33271 4.27682 5.33271 5.27079 5.33271H5.33214V5.27633C5.33214 3.96674 5.33214 2.65714 5.33214 1.34755C5.33214 1.03086 5.53162 0.767472 5.82998 0.688643C6.25515 0.576225 6.66577 0.896512 6.66645 1.34327C6.66748 1.96311 6.66679 2.58294 6.66679 3.20278C6.66679 3.89254 6.66679 4.58229 6.66679 5.27222V5.33305H6.7242C8.0323 5.33305 9.34056 5.33305 10.6487 5.33305C10.933 5.33305 11.1737 5.48848 11.2788 5.73902C11.4659 6.18527 11.1431 6.66475 10.6533 6.66595C10.1549 6.66698 9.6564 6.66612 9.15805 6.66612C8.34968 6.66612 7.54148 6.66612 6.73311 6.66612H6.66679V6.72713C6.66679 8.03535 6.66679 9.34357 6.66679 10.6516C6.66679 10.9808 6.45343 11.2475 6.13485 11.3177C5.75989 11.4003 5.38252 11.1309 5.33899 10.749C5.33471 10.7107 5.33231 10.6722 5.33231 10.6336C5.33197 9.33123 5.33197 8.02867 5.33197 6.72627V6.66612L5.33214 6.66578Z\"\n fill=\"currentColor\" />\n </svg> -->\n </span>\n <span *ngIf=\"item.expanded\">\n <verben-svg\n icon=\"minus\"\n fill=\"#5d6674\"\n [width]=\"15\"\n [height]=\"2\"\n ></verben-svg>\n <!-- <svg class=\"plus-minus-icon\" width=\"10\" height=\"2\" viewBox=\"0 0 10 2\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.333984 0.332031H9.66732V1.66536H0.333984V0.332031Z\" fill=\"currentColor\" />\n </svg> -->\n </span>\n <div class=\"default-item flex flex-col\">\n <div\n [ngClass]=\"{ 'has-sub-label': item.subLabel }\"\n class=\"item-label\"\n >\n {{ item.label }}\n </div>\n <div *ngIf=\"item.subLabel\" class=\"item-sub-label\">\n {{ item.subLabel }}\n </div>\n </div>\n </div>\n </ng-template>\n <!-- Recursive rendering of sub-items (groups or individual items) -->\n <ng-container *ngIf=\"item.expanded\">\n <div class=\"group-wrapper-items flex flex-col\">\n <drop-down-item\n [itemTemplate]=\"itemTemplate\"\n [groupTemplate]=\"groupTemplate\"\n [activeItem]=\"activeItem\"\n [activeItems]=\"activeItems\"\n [selectKey]=\"selectKey\"\n [multiselect]=\"multiselect\"\n [optionValue]=\"optionValue\"\n [optionLabel]=\"optionLabel\"\n [optionSubLabel]=\"optionSubLabel\"\n [loadMoreCaption]=\"loadMoreCaption\"\n [options]=\"item.items\"\n [group]=\"group\"\n [onExpand]=\"onExpand\"\n [onLoadMore]=\"onLoadMore\"\n [onSelect]=\"onSelect\"\n ></drop-down-item>\n <div *ngIf=\"item.lazyLoad\" class=\"see-more-container flex\">\n <span\n class=\"see-more-caption\"\n (click)=\"onLoadMore && onLoadMore(item)\"\n >{{ loadMoreCaption }}</span\n >\n </div>\n <div *ngIf=\"item.isLoading\" class=\"loading-overlay\">\n <div class=\"loader\"></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</ng-container>\n","import { forwardRef, NgModule } from '@angular/core';\nimport { TemplateDirective } from './TemplateDirective.directive';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n declarations: [TemplateDirective],\n imports: [OverlayModule],\n exports: [TemplateDirective, OverlayModule],\n})\nexport class SharedModule {}\n","import { Component, Input, HostListener, TemplateRef, ElementRef, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'verben-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.css']\n})\nexport class TooltipComponent {\n @Input() tooltipContent!: TemplateRef<any>;\n @Input() customClass: string = ''; \n @Input() backgroundColor: string = 'black'; \n @Input() textColor: string = 'white'; \n @Input() padding: string = '5px 10px'; \n @Input() borderRadius: string = '4px'; \n @Input() zIndex: string = ''; \n @Input() border: string = '';\n @Input() width: string = '';\n @Input() top?: string; \n @Input() bottom?: string; \n @Input() left?: string; \n @Input() right?: string; \n visible = false;\n\n tooltipPosition = { top: '', left: '' };\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n onMouseEnter(event: MouseEvent) {\n this.visible = true;\n this.updateTooltipPosition(event);\n }\n\n onMouseLeave() {\n this.visible = false;\n }\n\n private updateTooltipPosition(event: MouseEvent) {\n const tooltipElement = this.elementRef.nativeElement.querySelector('.tooltip-box');\n const triggerElement = event.target as HTMLElement;\n\n if (tooltipElement && triggerElement) {\n\n const triggerRect = triggerElement.getBoundingClientRect();\n\n const tooltipRect = tooltipElement.getBoundingClientRect();\n\n const availableSpaceAbove = triggerRect.top;\n const availableSpaceBelow = window.innerHeight - triggerRect.bottom;\n const availableSpaceLeft = triggerRect.left;\n const availableSpaceRight = window.innerWidth - triggerRect.right;\n\n let top = triggerRect.bottom + 'px';\n let left = (triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2) + 'px'; \n\n if (availableSpaceBelow < tooltipRect.height && availableSpaceAbove >= tooltipRect.height) {\n top = (triggerRect.top - tooltipRect.height) + 'px';\n }\n\n if (availableSpaceRight < tooltipRect.width && availableSpaceLeft >= tooltipRect.width) {\n left = (triggerRect.left - tooltipRect.width) + 'px';\n } else if (availableSpaceLeft < tooltipRect.width && availableSpaceRight >= tooltipRect.width) {\n left = (triggerRect.right) + 'px';\n }\n\n this.tooltipPosition = { top, left };\n }\n }\n\n get tooltipStyles() {\n return {\n 'background-color':this.backgroundColor,\n 'width': this.width,\n 'color': this.textColor,\n 'padding': this.padding,\n 'border-radius': this.borderRadius,\n 'border': this.border,\n 'position': 'absolute',\n 'z-index': this.zIndex || '9999',\n 'top': this.top || this.tooltipPosition.top,\n 'left': this.left || this.tooltipPosition.left,\n 'right': this.right,\n 'bottom': this.bottom,\n };\n }\n}\n","<span class=\"tooltip-container\" \n(mouseenter)=\"onMouseEnter($event)\" \n(mouseleave)=\"onMouseLeave()\"\n>\n <ng-content></ng-content>\n <div [ngStyle]=\"tooltipStyles\" [ngClass]=\"customClass\" *ngIf=\"visible\">\n <ng-container *ngIf=\"tooltipContent\" >\n <ng-template [ngTemplateOutlet]=\"tooltipContent\"></ng-template>\n </ng-container>\n </div>\n</span>\n\n\n","import { NgModule } from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\nimport { SvgModule } from '../svg/svg.module';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations:[TooltipComponent],\n imports: [SvgModule,CommonModule],\n exports: [TooltipComponent]\n})\nexport class TooltipModule {}\n ","import {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownLoadEvent } from './DropdownLoadEvent';\nimport { TemplateDirective } from '../TemplateDirective.directive';\nimport { DropdownChangeEvent } from './DropdownChangeEvent';\nimport { DropDownItemComponent } from './drop-down-item/drop-down-item.component';\nimport { isEqual, cloneDeep } from 'lodash';\nimport { debounceTime, Subject } from 'rxjs';\nimport { SharedModule } from '../shared.module';\nimport { SvgModule } from '../svg/svg.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\n\nexport interface DropdownMenuItemWrapper extends DropdownMenuItem {\n expanded: boolean;\n items?: DropdownMenuItemWrapper[];\n isLoading: boolean;\n copy: DropdownMenuItemWrapper[];\n loadTimes?: DropdownLoadEvent;\n loadTimesCopy?: DropdownLoadEvent;\n}\n\n@Component({\n selector: 'verben-drop-down',\n standalone: true,\n imports: [\n CommonModule,\n DropDownItemComponent,\n SharedModule,\n FormsModule,\n SvgModule,\n TooltipModule,\n ],\n templateUrl: './drop-down.component.html',\n styleUrl: './drop-down.component.css',\n})\nexport class DropDownComponent\n implements ControlValueAccessor, OnInit, AfterContentInit\n{\n // INTERNAL\n private _options: any[] = []; // Internal variable for options\n\n private ignoreSet = false;\n // INPUTS\n @Input()\n set options(value: any[]) {\n if (this.group) {\n if (this.isDropdownMenuItemWrapperArray(value)) {\n this._options = value;\n } else {\n this._options = this.convertToExpandable(value); // Set the internal options variable\n }\n } else {\n this._options = value;\n }\n if (!this.ignoreSet) {\n this.firstSearch = false;\n } else {\n this.ignoreSet = false;\n }\n }\n\n get options(): any[] {\n return this._options; // Return the internal options variable\n }\n\n @Input() width: string = '12rem';\n @Input() showHorizontalLine: boolean = true;\n @Input() horizontalLineColor: string = 'rgba(255, 230, 129, 1)';\n @Input() optionLabel?: string;\n @Input() optionSubLabel?: string;\n @Input() optionValue?: string;\n @Input() placeholder?: string;\n @Input() invalidMessage?: string;\n @Input() errorPosition: string = '';\n @Input() loadMoreCaption: string = 'See more';\n @Input() display: 'default' | 'chip' = 'chip';\n @Input() showClear: boolean = false;\n @Input() lazyLoad: boolean = false;\n @Input() selectKey: string | null = null;\n @Input() styleClass: string = '';\n @Input() group: boolean = false;\n @Input() multiselect: boolean = false;\n @Input() filter: boolean = false;\n @Input() avoidDuplication: boolean = false;\n @Input() filterBy?: string;\n @Input() debounceTime: number = 500;\n @Input() minChar: number = 0;\n @Input() disabled: boolean = false;\n @Input() required: boolean = false;\n @Input() load?: (context: DropdownLoadEvent) => Promise<any[]>;\n @Input() asyncLabel?: (context: any) => Promise<string | null>;\n @Input() search?: (data: any, context: DropdownLoadEvent) => Promise<any[]>;\n\n // OUTPUTS\n @Output() optionsChange: EventEmitter<any[]> = new EventEmitter();\n @Output() onChange: EventEmitter<DropdownChangeEvent> = new EventEmitter();\n @Output() onClick: EventEmitter<Event> = new EventEmitter();\n @Output() onClear: EventEmitter<Event> = new EventEmitter();\n\n onItemChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n isInvalid: boolean = false;\n firstSearch: boolean = false;\n\n //TEMPLATING\n @ViewChild('dropdownContainer', { static: true })\n dropdownContainer!: ElementRef;\n @ViewChild('dropdownExpansion', { static: false })\n dropdownExpansion!: ElementRef;\n @ContentChildren(TemplateDirective) templates!: QueryList<TemplateDirective>;\n\n @HostBinding('class.focused') isFocused = false;\n isInputFocused = false;\n\n selectedItemTemplate: TemplateRef<any> | null = null;\n itemTemplate: TemplateRef<any> | null = null; // Allow null for custom item template\n groupTemplate: TemplateRef<any> | null = null;\n\n //VARIABLES\n isExpanded: boolean = false;\n loadTimes: DropdownLoadEvent = new DropdownLoadEvent();\n initialIncrement: boolean = false;\n selectedOption: any;\n selectedOptions: any[] = [];\n selectedOptionLabel: any;\n selectedOptionLabels: any[] = [];\n isLoading: boolean = false;\n optionsCopy: any[] = [];\n loadTimesCopy: DropdownLoadEvent = new DropdownLoadEvent();\n selectedContexts: any[] = [];\n searchHistory: string[] = [];\n searchTerm$ = new Subject<string>();\n searchContext: string = '';\n allowSelectAll: boolean = false;\n selectedAll: boolean = false;\n\n constructor(@Optional() @Self() private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this; // Assign this component as the value accessor\n this.ngControl?.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n ngOnInit(): void {\n if (this.multiselect) {\n if (!this.lazyLoad) {\n if (!this.group) {\n this.allowSelectAll = true;\n } else {\n let isAllowed = true;\n for (let item of this.options) {\n if (item.lazyLoad) {\n isAllowed = false;\n break;\n }\n }\n this.allowSelectAll = isAllowed;\n }\n }\n }\n if (this.filter) {\n this.optionsCopy = cloneDeep(this._options);\n this.searchTerm$\n .pipe(debounceTime(this.debounceTime)) // Adjust debounce time here (in ms)\n .subscribe(async (searchTerm) => {\n if (searchTerm.length < this.minChar) {\n return;\n }\n if (this.selectedContexts.length > 0) {\n const item = this.selectedContexts[\n this.selectedContexts.length - 1\n ] as DropdownMenuItemWrapper;\n if (item.search && item.loadTimes) {\n item.loadTimes.reset();\n item.isLoading = true;\n const result = await item.search(searchTerm, item.loadTimes);\n item.isLoading = false;\n if (this.searchContext.length > 0) {\n item.loadTimes.increaseLoadTime();\n item.items = this.convertToExpandable(result);\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n } else {\n if (this.search && this.loadTimes) {\n this.isLoading = true;\n this.loadTimes.reset();\n const result = await this.search(searchTerm, this.loadTimes);\n this.isLoading = false;\n if (this.searchContext.length > 0) {\n this._options = this.convertToExpandable(result);\n this.ignoreSet = true;\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n }\n });\n }\n }\n ngAfterContentInit(): void {\n this.templates.forEach((templateDirective) => {\n if (templateDirective.vTemplate === 'selected') {\n this.selectedItemTemplate = templateDirective.template;\n }\n if (templateDirective.vTemplate === 'item') {\n this.itemTemplate = templateDirective.template;\n }\n if (templateDirective.vTemplate === 'group') {\n this.groupTemplate = templateDirective.template;\n }\n });\n }\n\n @HostListener('focus') onFocus() {\n this.isFocused = true;\n }\n\n @HostListener('blur') onBlur() {\n this.isFocused = false;\n }\n\n onSearchFocus() {\n this.isInputFocused = true;\n }\n\n onSearchBlur() {\n this.isInputFocused = false;\n }\n\n onInputFocus() {\n this.isInputFocused = true;\n }\n\n onInputBlur() {\n this.isInputFocused = false;\n }\n\n updateOptionsCopy() {\n this.optionsCopy = cloneDeep(this._options);\n }\n\n onSearch(event: any) {\n if (this.disabled) {\n return;\n }\n const searchTerm = event.target.value;\n if (this.selectedContexts.length > 0) {\n const item = this.selectedContexts[\n this.selectedContexts.length - 1\n ] as DropdownMenuItemWrapper;\n if (searchTerm.trim().length == 0) {\n item.items = cloneDeep(item.copy);\n item.loadTimes = cloneDeep(item.loadTimesCopy);\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n return;\n }\n if (item.lazyLoad) {\n this.searchTerm$.next(searchTerm);\n } else {\n if (item.filterBy) {\n if (!item.items) {\n return;\n }\n item.items = item.items.filter(\n (x) =>\n typeof x.value[item.filterBy!] == 'string' &&\n new RegExp(searchTerm, 'i').test(x.value[item.filterBy!])\n );\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n } else {\n if (!item.items) {\n return;\n }\n item.items = item.copy.filter(\n (x) =>\n typeof x.value == 'string' &&\n new RegExp(searchTerm, 'i').test(x.value)\n );\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n } else {\n if (this.firstSearch == false) {\n this.optionsCopy = cloneDeep(this._options);\n this.firstSearch = true;\n }\n if (searchTerm.trim().length == 0) {\n this._options = cloneDeep(this.optionsCopy);\n this.loadTimes = cloneDeep(this.loadTimesCopy);\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n this.firstSearch = false;\n return;\n }\n if (this.lazyLoad) {\n this.searchTerm$.next(searchTerm);\n } else {\n if (this.filterBy) {\n this._options = this.optionsCopy.filter(\n (x) =>\n typeof x[this.filterBy!] == 'string' &&\n new RegExp(searchTerm, 'i').test(x[this.filterBy!])\n );\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n } else {\n this._options = this.optionsCopy.filter(\n (x) => typeof x == 'string' && new RegExp(searchTerm, 'i').test(x)\n );\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n }\n }\n\n onDropdownClick(event: Event) {\n if (this.disabled) {\n return;\n }\n this.toggleDropdown();\n this.onClick.emit(event);\n }\n\n toggleDropdown() {\n this.isExpanded = !this.isExpanded;\n }\n\n hasSibling(siblings: DropdownMenuItemWrapper[]): number | null {\n for (let i = 0; i < siblings.length; i++) {\n const index = this.selectedContexts.indexOf(siblings[i]);\n if (index > -1) {\n return index;\n }\n }\n return null;\n }\n\n async expandMenu(\n item: DropdownMenuItemWrapper,\n siblings: DropdownMenuItemWrapper[]\n ) {\n if (item.items) {\n if (this.filter) {\n for (let it of siblings.filter((x) => x !== item)) {\n if (it.expanded) {\n it.expanded = false;\n it.loadTimes && it.loadTimes.reset();\n }\n }\n }\n item.expanded = !item.expanded;\n if (item.expanded) {\n if (this.filter) {\n const siblingCheck = this.hasSibling(siblings);\n if (this.selectedContexts.length > 0 && siblingCheck !== null) {\n const contextsLength = this.selectedContexts.length;\n this.selectedContexts.splice(\n siblingCheck,\n contextsLength - siblingCheck\n );\n }\n this.selectedContexts.push(item);\n if (siblingCheck == null) {\n this.searchHistory.push(this.searchContext);\n }\n this.searchContext = '';\n }\n if (item.lazyLoad && item.loadMore && item.loadTimes) {\n item.isLoading = true;\n var result = await item.loadMore(item.loadTimes);\n item.isLoading = false;\n if (result.length > 0) {\n item.loadTimes.increaseLoadTime();\n }\n item.items = this.convertToExpandable(result);\n if (this.filter) {\n item.copy = cloneDeep(item.items);\n item.loadTimesCopy = cloneDeep(item.loadTimes);\n }\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n } else {\n if (this.filter) {\n const index = this.selectedContexts.indexOf(item);\n const contextsLength = this.selectedContexts.length;\n if (index > -1) {\n this.selectedContexts.splice(index, contextsLength - index);\n }\n }\n if (item.loadTimes) {\n item.loadTimes.reset();\n if (this.filter) {\n item.loadTimesCopy = cloneDeep(item.loadTimes);\n }\n }\n if (this.filter) {\n if (this.searchHistory.length > 0) {\n this.searchContext =\n this.searchHistory[this.searchHistory.length - 1];\n this.searchHistory.splice(this.searchHistory.length - 1, 1);\n }\n }\n }\n }\n }\n\n async loadMoreMenuItems(item: DropdownMenuItemWrapper) {\n if (item.loadMore && item.loadTimes && item.items) {\n const searchContext = this.searchContext.trim();\n item.isLoading = true;\n var result =\n searchContext.length > 0 && item.search\n ? await item.search(searchContext, item.loadTimes)\n : await item.loadMore(item.loadTimes);\n item.isLoading = false;\n if (result.length > 0) {\n item.loadTimes.increaseLoadTime();\n }\n const converted = this.convertToExpandable(result);\n for (let res of converted) {\n item.items.push(res);\n }\n if (this.filter) {\n if (searchContext.length == 0 || !item.search) {\n item.copy = cloneDeep(item.items);\n item.loadTimesCopy = cloneDeep(item.loadTimes);\n }\n }\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n\n async loadMore() {\n if (this.load) {\n if (this.options.length > 0 && !this.initialIncrement) {\n this.loadTimes.increaseLoadTime();\n if (this.filter) {\n this.loadTimesCopy = cloneDeep(this.loadTimes);\n }\n this.initialIncrement = true;\n }\n const searchContext = this.searchContext.trim();\n this.isLoading = true;\n var result =\n searchContext.length > 0 && this.search\n ? await this.search(searchContext, this.loadTimes)\n : await this.load(this.loadTimes);\n this.isLoading = false;\n if (this.group) {\n result = this.convertToExpandable(result);\n }\n if (result.length > 0) {\n this.loadTimes.increaseLoadTime();\n }\n for (let item of result) {\n this._options.push(item);\n }\n if (this.filter) {\n if (searchContext.length == 0 || !this.search) {\n this.optionsCopy = cloneDeep(this.options);\n this.loadTimesCopy = cloneDeep(this.loadTimes);\n }\n }\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n\n convertToExpandable(items: DropdownMenuItem[]): DropdownMenuItemWrapper[] {\n const wrapper: DropdownMenuItemWrapper[] = [];\n for (let item of items) {\n const convertedItem: DropdownMenuItemWrapper = {\n ...item,\n isLoading: false,\n expanded: false,\n loadTimes: item.items ? new DropdownLoadEvent() : undefined,\n loadTimesCopy: item.items ? new DropdownLoadEvent() : undefined,\n items: item.items ? this.convertToExpandable(item.items) : undefined,\n copy: item.items ? cloneDeep(this.convertToExpandable(item.items)) : [],\n };\n wrapper.push(convertedItem);\n }\n return wrapper;\n }\n\n onSelectAll(event: Event) {\n if (this.selectedAll) {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n this.onItemChange([]);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: [] });\n if (this.required) {\n this.isInvalid = true;\n }\n return;\n }\n if (!this.group) {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n for (let option of this.options) {\n const index = this.checkMultiselectValue(option);\n if (index == null) {\n this.selectedOptions.push(this.getValue(option));\n this.selectedOptionLabels.push(this.getOptionLabel(option));\n }\n }\n } else {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n for (let option of this.options) {\n for (let item of option.items) {\n const index = this.checkMultiselectValue(item);\n if (index == null) {\n this.selectedOptions.push(this.getValue(item));\n this.selectedOptionLabels.push(this.getOptionLabel(item));\n }\n }\n }\n }\n this.onItemChange(this.selectedOptions);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.selectedOptions });\n }\n\n clearSelection(event: Event) {\n if (!this.multiselect) {\n this.selectedOption = null;\n this.selectedOptionLabel = null;\n this.onItemChange(null);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: null });\n } else {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n this.onItemChange([]);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: [] });\n }\n if (this.required) {\n this.isInvalid = true;\n }\n this.selectedAll = false;\n this.onClear.emit(event);\n }\n\n onSelect(value: any, event: Event) {\n if (!this.multiselect) {\n this.selectedOption = this.getValue(value);\n this.selectedOptionLabel = this.getOptionLabel(value);\n this.onItemChange(this.getValue(value));\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.getValue(value) });\n this.toggleDropdown();\n } else {\n const exists = this.checkMultiselectValue(value);\n if (exists == null) {\n const newSelectedOptions = [\n ...this.selectedOptions,\n this.getValue(value),\n ];\n const newSelectedOptionLabels = [\n ...this.selectedOptionLabels,\n this.getOptionLabel(value),\n ];\n this.selectedOptions = newSelectedOptions;\n this.selectedOptionLabels = newSelectedOptionLabels;\n this.onItemChange(this.selectedOptions);\n this.onTouched();\n this.onChange.emit({\n originalEvent: event,\n value: this.selectedOptions,\n });\n } else {\n this.selectedAll = false;\n const newSelectedOptions = [...this.selectedOptions];\n newSelectedOptions.splice(exists, 1);\n const newSelectedOptionLabels = [...this.selectedOptionLabels];\n newSelectedOptionLabels.splice(exists, 1);\n this.selectedOptions = newSelectedOptions;\n this.selectedOptionLabels = newSelectedOptionLabels;\n this.onItemChange(this.selectedOptions);\n this.onTouched();\n this.onChange.emit({\n originalEvent: event,\n value: this.selectedOptions,\n });\n }\n }\n }\n\n onMultiselectItemClosed(index: number, event: Event) {\n const newSelectedOptions = [...this.selectedOptions];\n newSelectedOptions.splice(index, 1);\n const newSelectedOptionLabels = [...this.selectedOptionLabels];\n newSelectedOptionLabels.splice(index, 1);\n this.selectedOptions = newSelectedOptions;\n this.selectedOptionLabels = newSelectedOptionLabels;\n this.onItemChange(this.selectedOptions);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.selectedOptions });\n }\n\n checkMultiselectValue(value: any): number | null {\n for (let i = 0; i < this.selectedOptions.length; i++) {\n if (isEqual(this.selectedOptions[i], this.getValue(value))) {\n return i;\n }\n }\n return null;\n }\n\n async writeValue(obj: any): Promise<void> {\n if (!this.multiselect) {\n if (obj == null || obj == undefined) {\n this.selectedOption = obj;\n this.selectedOptionLabel = obj;\n return;\n }\n this.selectedOption = null;\n this.selectedOptionLabel = null;\n if (!this.group && !this.lazyLoad) {\n for (let option of this.options) {\n const equalityCheck = this.selectKey\n ? isEqual(\n this.getValue(option)[this.selectKey],\n (obj && obj[this.selectKey]) || null\n )\n : isEqual(this.getValue(option), obj);\n if (equalityCheck) {\n this.selectedOption = this.getValue(option);\n this.selectedOptionLabel = this.asyncLabel\n ? await this.asyncLabel(option)\n : this.getOptionLabel(option);\n break;\n }\n }\n this.onTouched();\n this.onChange.emit({ value: this.selectedOption });\n return;\n }\n this.selectedOption = obj;\n if (this.asyncLabel) {\n this.selectedOptionLabel = await this.asyncLabel(obj);\n } else {\n const item = this.options.find((option) =>\n this.selectKey\n ? isEqual(\n this.getValue(option)[this.selectKey],\n (obj && obj[this.selectKey]) || null\n )\n : isEqual(this.getValue(option), obj)\n );\n if (item) {\n this.selectedOptionLabel = this.getOptionLabel(item);\n } else {\n this.selectedOptionLabel = obj;\n }\n }\n // this.selectedOptionLabel = this.asyncLabel\n // ? await this.asyncLabel(obj)\n // : this.getOptionLabel(obj);\n this.onTouched();\n this.onChange.emit({ value: this.selectedOption });\n } else {\n if (!Array.isArray(obj)) {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n return;\n }\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n if (!this.group && !this.lazyLoad) {\n for (let option of this.options) {\n for (let object of obj) {\n const equalityCheck = this.selectKey\n ? isEqual(\n this.getValue(option)[this.selectKey],\n object[this.selectKey]\n )\n : isEqual(this.getValue(option), object);\n if (equalityCheck) {\n this.selectedOptions.push(this.getValue(option));\n this.selectedOptionLabels.push(\n this.asyncLabel\n ? await this.asyncLabel(object)\n : this.getOptionLabel(option)\n );\n break;\n }\n }\n }\n this.onTouched();\n this.onChange.emit({ value: this.selectedOptions });\n return;\n }\n this.selectedOptions = obj;\n for (let object of obj) {\n this.selectedOptionLabels.push(\n this.asyncLabel\n ? await this.asyncLabel(object)\n : this.getOptionLabel(object)\n );\n }\n this.onTouched();\n this.onChange.emit({ value: this.selectedOptions });\n }\n }\n\n getOptionFromValue(value: any): any {\n if (!this.optionValue) {\n return this.group ? value.value : value;\n }\n const index = this.group\n ? this.options.findIndex(\n (x) =>\n x.value[this.optionValue!] && x.value[this.optionValue!] == value\n )\n : this.options.findIndex(\n (x) => x[this.optionValue!] && x[this.optionValue!] == value\n );\n if (index < 0) {\n return this.group ? value.value : value;\n }\n return this.options[index];\n }\n\n registerOnChange(fn: any): void {\n this.onItemChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n getValue(item: any): any {\n if (!this.optionValue) {\n return this.group ? item.value : item;\n }\n return this.group ? item.value[this.optionValue] : item[this.optionValue];\n }\n getOptionLabel(item: any): any {\n if (this.group) {\n return item.label;\n }\n if (!this.optionLabel) {\n return item;\n }\n return typeof item === 'string' ? item : item[this.optionLabel];\n }\n\n private isDropdownMenuItemWrapperArray(value: any[]): boolean {\n return (\n Array.isArray(value) &&\n value.every((item) => this.isDropdownMenuItemWrapper(item))\n );\n }\n\n // Type guard function to check if an object is of type DropdownMenuItem\n private isDropdownMenuItemWrapper(item: any): boolean {\n return 'expanded' in item;\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: Event) {\n if (!this.isExpanded) {\n return;\n }\n if (\n !this.dropdownContainer.nativeElement.contains(event.target) &&\n this.isExpanded &&\n this.dropdownExpansion &&\n !this.dropdownExpansion.nativeElement.contains(event.target)\n ) {\n this.isExpanded = false;\n }\n }\n}\n","<div #dropdownContainer [ngClass]=\"styleClass\" [style.width]=\"width\" class=\"drop-down\">\n <div\n [ngClass]=\"{'right-error': errorPosition == 'right', 'left-error': errorPosition == 'left', 'top-error': errorPosition == 'top'}\"\n class=\"drop-down-input-wrapper\">\n <div (click)=\"onDropdownClick($event)\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" [class.focused]=\"isFocused\"\n [ngClass]=\"{'ng-invalid': isInvalid, 'disabled': disabled}\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" tabindex=\"0\"\n class=\"drop-down-input verben-input flex\">\n <div class=\"drop-down-main-content\">\n <ng-container\n *ngIf=\"(selectedItemTemplate && selectedOption) || (selectedItemTemplate && selectedOptions.length > 0); else defaultItem\">\n <div *ngIf=\"!multiselect\">\n <ng-container\n *ngTemplateOutlet=\"selectedItemTemplate; context: { $implicit: selectedOption }\"></ng-container>\n </div>\n <div *ngIf=\"multiselect\">\n <ng-container\n *ngTemplateOutlet=\"selectedItemTemplate; context: { $implicit: selectedOptions }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-template #defaultItem>\n <div *ngIf=\"!multiselect\" class=\"default-item flex\">\n <div class=\"dropdown-label place-holder\" *ngIf=\"!this.selectedOption\">{{placeholder}}</div>\n <div *ngIf=\"this.selectedOption\" class=\"item-label dropdown-label\">\n {{this.selectedOptionLabel}}</div>\n </div>\n <div *ngIf=\"multiselect\" class=\"default-item multi-select flex\">\n <div class=\"dropdown-label place-holder\" *ngIf=\"this.selectedOptions.length == 0\">{{placeholder}}</div>\n <verben-tooltip customClass=\"custom-tooltip-width\" border=\"1px solid #334155\" backgroundColor=\"white\"\n [tooltipContent]=\"multiselectTooltip\">\n <div *ngIf=\"this.selectedOptions.length > 0\" class=\"item-label dropdown-label\">\n <div *ngIf=\"display == 'chip'\" class=\"multiselect-items-container-two chip\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\"\n class=\"multiselect-item-chip multi-select flex\">\n <span>{{item}}</span>\n <verben-svg (click)=\"onMultiselectItemClosed(i, $event); $event.stopPropagation();\"\n icon=\"close-circle-full\" [width]=\"15\" [height]=\"15\"></verben-svg>\n <!-- <svg (click)=\"onMultiselectItemClosed(i, $event); $event.stopPropagation();\" width=\"10\" height=\"10\"\n viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z\"\n stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M6.25 3.91797L3.75 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M3.75 3.91797L6.25 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n </div>\n <div *ngIf=\"display != 'chip'\" class=\"multiselect-items-container-two normal\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\" class=\"multiselect-item\">\n {{i !== selectedOptionLabels.length - 1? item + ', ':item}}\n </span>\n </div>\n </div>\n </verben-tooltip>\n <ng-template #multiselectTooltip>\n <div class=\"multi-select-full-view\">\n <div *ngIf=\"this.selectedOptions.length > 0\" class=\"item-label dropdown-label\">\n <div *ngIf=\"display == 'chip'\" class=\"multiselect-items-container-two-tooltip chip\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\"\n class=\"multiselect-item-chip multi-select flex\">\n <span>{{item}}</span>\n <verben-svg (click)=\"onMultiselectItemClosed(i, $event); $event.stopPropagation();\"\n icon=\"close-circle-full\" [width]=\"15\" [height]=\"15\"></verben-svg>\n <!-- <svg (click)=\"onMultiselectItemClosed(i, $event); $event.stopPropagation();\" width=\"10\" height=\"10\"\n viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z\"\n stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M6.25 3.91797L3.75 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M3.75 3.91797L6.25 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n </div>\n <div *ngIf=\"display != 'chip'\" class=\"multiselect-items-container-two-tooltip-normal\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\" class=\"multiselect-item\">\n {{i !== selectedOptionLabels.length - 1? item + ', ':item}}\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </div>\n <span\n *ngIf=\"(showClear && this.selectedOption && !multiselect) || (showClear && this.selectedOptions.length > 0 && multiselect)\"\n (click)=\"this.clearSelection($event); $event.stopPropagation()\"\n class=\"drop-down-icon-item drop-down-clear-button\">\n <verben-svg icon=\"close-no-circle\" stroke=\"#94a3b8\" [width]=\"13\" [height]=\"13\"></verben-svg>\n <!-- <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.84375 0.84375L8.15625 8.15625\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M0.84375 8.15625L8.15625 0.84375\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n <span class=\"drop-down-icon-item drop-down-expand-button\">\n <verben-svg icon=\"chevron-down\" fill=\"#94a3b8\" [width]=\"15\" [height]=\"8\"></verben-svg>\n <!-- <svg width=\"12\" height=\"7\" viewBox=\"0 0 12 7\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6.00507 4.88027C6.20205 4.62775 6.30683 4.4622 6.44095 4.32704C7.74334 3.01731 9.05202 1.71387 10.3576 0.406242C10.5713 0.192495 10.7882 0.00913367 11.1193 0.0101814C11.4692 0.0112292 11.7228 0.15792 11.8884 0.456537C12.057 0.760394 12.0309 1.06111 11.8349 1.34296C11.7658 1.4425 11.6767 1.52737 11.5908 1.61433C9.98873 3.21639 8.37305 4.80483 6.793 6.42784C6.29111 6.94335 5.68759 6.92344 5.21399 6.43832C3.63184 4.8174 2.01826 3.22687 0.414109 1.62691C0.116539 1.32934 -0.116067 1.0192 0.0620561 0.565507C0.271612 0.031139 0.883519 -0.167941 1.35502 0.157919C1.49647 0.255363 1.61592 0.387385 1.73955 0.509975C3.02204 1.79036 4.30452 3.07075 5.58386 4.35533C5.70645 4.47792 5.80284 4.62671 6.00611 4.88132L6.00507 4.88027Z\"\n fill=\"currentColor\" />\n </svg> -->\n </span>\n </div>\n <div *ngIf=\"this.isInvalid && this.invalidMessage\" class=\"verben-error-message error-message\">{{invalidMessage}}\n </div>\n </div>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayWidth]=\"dropdownContainer.offsetWidth\"\n [cdkConnectedOverlayLockPosition]=\"false\" [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayPositions]=\"[\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n ]\" [cdkConnectedOverlayOpen]=\"isExpanded\" (detach)=\"isExpanded = false\">\n <div #dropdownExpansion class=\"drop-down-menu-item-wrapper\">\n <div *ngIf=\"multiselect && this.selectedOptions.length > 0\">\n <div *ngIf=\"display == 'chip'\" class=\"multiselect-items-container chip flex\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\" class=\"multiselect-item-chip flex\">\n <span>{{item}}</span>\n <verben-svg (click)=\"onMultiselectItemClosed(i, $event)\" icon=\"close-circle-full\" [width]=\"15\"\n [height]=\"15\"></verben-svg>\n <!-- <svg (click)=\"onMultiselectItemClosed(i, $event)\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z\"\n stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M6.25 3.91797L3.75 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M3.75 3.91797L6.25 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n </div>\n <div *ngIf=\"display != 'chip'\" class=\"multiselect-items-container normal\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\" class=\"multiselect-item\">\n {{i !== selectedOptionLabels.length - 1? item + ', ':item}}\n </span>\n </div>\n </div>\n <div *ngIf=\"allowSelectAll || filter\" class=\"actions-section flex\">\n <input *ngIf=\"allowSelectAll\" (click)=\"onSelectAll($event)\" type=\"checkbox\" [(ngModel)]=\"selectedAll\"\n class=\"custom-checkbox\" />\n <span class=\"select-all-caption\" *ngIf=\"allowSelectAll && !filter\">Select All</span>\n <div *ngIf=\"filter\" [ngClass]=\"{'focused': isInputFocused}\" tabindex=\"0\" (focus)=\"onSearchFocus()\"\n (blur)=\"onSearchBlur()\" class=\"search-section flex\">\n <span class=\"search-icon flex\">\n <verben-svg icon=\"search\" stroke=\"#64748b\" [width]=\"15\" [height]=\"15\"></verben-svg>\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"9\" cy=\"9\" r=\"8\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"></circle>\n <line x1=\"14\" y1=\"14\" x2=\"19\" y2=\"19\" stroke=\"currentColor\" stroke-width=\"2\"></line>\n </svg> -->\n </span>\n <span *ngIf=\"this.selectedContexts[this.selectedContexts.length - 1]\" class=\"search-context\">\n {{this.getOptionLabel(this.selectedContexts[this.selectedContexts.length - 1])}}\n </span>\n <div class=\"search-input-container\">\n <input (input)=\"onSearch($event)\" [(ngModel)]=\"searchContext\" (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur()\" placeholder=\"Search...\" class=\"search-input\" />\n </div>\n </div>\n </div>\n <div *ngIf=\"showHorizontalLine\" class=\"colored-underline-section\">\n <hr [style.background-color]=\"horizontalLineColor\" class=\"colored-underline\" />\n </div>\n <div class=\"drop-down-menu-item\">\n <drop-down-item [itemTemplate]=\"itemTemplate\" [groupTemplate]=\"groupTemplate\" [activeItem]=\"selectedOption\"\n [activeItems]=\"selectedOptions\" [multiselect]=\"multiselect\" [optionValue]=\"optionValue\"\n [optionLabel]=\"optionLabel\" [optionSubLabel]=\"optionSubLabel\" [selectKey]=\"selectKey\"\n [loadMoreCaption]=\"loadMoreCaption\" [options]=\"options\" [group]=\"group\" [onExpand]=\"expandMenu.bind(this)\"\n [onLoadMore]=\"loadMoreMenuItems.bind(this)\" [onSelect]=\"onSelect.bind(this)\"></drop-down-item>\n <div *ngIf=\"lazyLoad\">\n <div class=\"see-more-container flex justify-end\">\n <span class=\"see-more-caption\" (click)=\"loadMore()\">{{loadMoreCaption}}</span>\n </div>\n </div>\n <div *ngIf=\"isLoading\" class=\"loading-overlay\">\n <div class=\"loader\"></div>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { forwardRef, NgModule } from '@angular/core';\nimport { DropDownComponent } from './drop-down.component';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DropDownItemComponent } from './drop-down-item/drop-down-item.component';\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [],\n imports: [DropDownComponent, DropDownItemComponent, SharedModule],\n exports: [DropDownComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DropDownComponent),\n multi: true,\n },\n ],\n})\nexport class DropDownModule {}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output,\n QueryList,\n Self,\n TemplateRef,\n} from '@angular/core';\nimport { DropDownItemComponent } from '../drop-down/drop-down-item/drop-down-item.component';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ChipChangeEvent } from './ChipChangeEvent';\nimport { SharedModule } from '../shared.module';\nimport { TemplateDirective } from '../TemplateDirective.directive';\nimport { SvgModule } from '../svg/svg.module';\n\n@Component({\n selector: 'verben-chip',\n standalone: true,\n imports: [\n CommonModule,\n DropDownItemComponent,\n SharedModule,\n FormsModule,\n SvgModule,\n ],\n templateUrl: './chip.component.html',\n styleUrl: './chip.component.css',\n})\nexport class ChipComponent\n implements ControlValueAccessor, OnInit, AfterContentInit\n{\n // INPUTS\n @Input() width: string = '100%';\n @Input() placeholder: string = '';\n @Input() max?: number;\n @Input() styleClass: string = '';\n @Input() separator: string = ',';\n @Input() disabled: boolean = false;\n @Input() required: boolean = false;\n @Input() invalidMessage?: string;\n @Input() errorPosition: string = '';\n\n // OUTPUTS\n @Output() onChange: EventEmitter<ChipChangeEvent> = new EventEmitter();\n // @Output() onClear: EventEmitter<Event> = new EventEmitter();\n\n onItemChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n isInvalid: boolean = false;\n\n //TEMPLATING\n @ContentChildren(TemplateDirective) templates!: QueryList<TemplateDirective>;\n @HostBinding('class.focused') isFocused = false;\n isInputFocused = false;\n\n @HostListener('focus') onFocus() {\n this.isFocused = true;\n }\n\n @HostListener('blur') onBlur() {\n this.isFocused = false;\n }\n\n onInputFocus() {\n this.isFocused = true;\n }\n\n onInputBlur() {\n this.isFocused = false;\n }\n\n itemTemplate: TemplateRef<any> | null = null;\n\n chips: string[] = [];\n chipInput: string = '';\n\n constructor(@Self() private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this; // Assign this component as the value accessor\n this.ngControl?.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n\n ngOnInit(): void {}\n ngAfterContentInit(): void {\n this.templates.forEach((templateDirective) => {\n if (templateDirective.vTemplate === 'item') {\n this.itemTemplate = templateDirective.template;\n }\n });\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n const inputValue = (event.target as HTMLInputElement).value;\n // Check for 'Enter' key or custom separator\n if (event.key === 'Enter' || event.key == this.separator) {\n event.preventDefault();\n this.addChips(inputValue);\n }\n\n // Handle 'Backspace' key when input is empty\n if (\n event.key === 'Backspace' &&\n inputValue.length === 0 &&\n this.chips.length > 0\n ) {\n this.removeLastChip();\n }\n }\n\n addChips(inputValue: string): void {\n if (this.disabled) {\n return;\n }\n // Split by separator and trim each part\n const values = inputValue\n .split(this.separator)\n .map((value) => value.trim());\n\n values.forEach((value) => {\n if (value.length > 0) {\n if (this.max && this.chips.length == this.max) {\n return;\n }\n this.chips.push(value); // Add chip\n }\n });\n if (this.isInvalid) {\n this.isInvalid = false;\n }\n\n this.chipInput = ''; // Clear input\n this.onTouched();\n this.onChange.emit({ value: this.chips });\n }\n\n removeChip(index: number, event: Event): void {\n if (this.disabled) {\n return;\n }\n this.chips.splice(index, 1);\n if (this.chips.length == 0) {\n if (this.required == true) {\n this.isInvalid = true;\n }\n }\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.chips });\n }\n\n removeLastChip(): void {\n if (this.disabled) {\n return;\n }\n this.chips.pop(); // Remove the last chip\n if (this.chips.length == 0) {\n if (this.required == true) {\n this.isInvalid = true;\n }\n }\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.chips });\n }\n\n // clearSelection(event: Event) {\n // if (this.disabled) {\n // return;\n // }\n // this.chips = [];\n // if (this.required == true) {\n // this.isInvalid = true;\n // }\n // this.onTouched();\n // this.onChange.emit({ originalEvent: event, value: this.chips });\n // }\n\n writeValue(obj: string[]): void {\n this.chips = obj;\n this.onTouched();\n this.onChange.emit({ value: this.chips });\n }\n registerOnChange(fn: any): void {\n this.onItemChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get placeholderState(): string | undefined {\n return this.chips && this.chips.length == 0 ? this.placeholder : '';\n }\n}\n","<div [ngClass]=\"styleClass\" [style.width]=\"width\"\n [ngClass]=\"{'right-error': errorPosition == 'right', 'left-error': errorPosition == 'left', 'top-error': errorPosition == 'top'}\"\n class=\"chip\">\n <div [class.focused]=\"isFocused\" [ngClass]=\"{'ng-invalid': isInvalid, 'disabled': disabled}\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\" tabindex=\"0\" class=\"chip-content-input verben-input flex\">\n <div class=\"chip-main-content\">\n <div class=\"default-item flex\">\n <!-- <div class=\"dropdown-label place-holder\" *ngIf=\"this.chips.length == 0\">{{placeholder}}</div> -->\n <div *ngIf=\"chips && this.chips.length > 0\" class=\"chips-container flex\">\n <span *ngFor=\"let item of chips; index as i\" class=\"item-chip flex\">\n <ng-container *ngIf=\"itemTemplate; else defaultItem\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n </ng-container>\n <ng-template #defaultItem>\n <span>{{item}}</span>\n </ng-template>\n <verben-svg (click)=\"removeChip(i, $event);\" icon=\"close-circle-full\" [width]=\"15\"\n [height]=\"15\"></verben-svg>\n <!-- <svg (click)=\"removeChip(i, $event);\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z\"\n stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M6.25 3.91797L3.75 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M3.75 3.91797L6.25 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n </div>\n </div>\n </div>\n <div class=\"input-container\">\n <input [disabled]=\"this.max != null && chips && this.chips.length == max\" (keydown)=\"onKeyDown($event)\"\n [placeholder]=\"placeholderState\" [(ngModel)]=\"chipInput\" (focus)=\"onInputFocus()\" (blur)=\"onInputBlur()\"\n class=\"chip-input\" />\n </div>\n </div>\n <div *ngIf=\"this.isInvalid && this.invalidMessage\" class=\"verben-error-message error-message\">{{invalidMessage}}\n </div>\n</div>","import { forwardRef, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChipComponent } from './chip.component';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [],\n imports: [ChipComponent],\n exports: [ChipComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ChipComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ChipComponent),\n multi: true,\n },\n ],\n})\nexport class ChipModule {}\n","import { Component, Input, OnInit, ElementRef, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'verben-image',\n templateUrl: './image.component.html',\n styleUrl: './image.component.css',\n})\n\nexport class ImageComponent implements OnInit, AfterViewInit {\n @Input() url: string = '';\n @Input() placeholder: string = 'assets/placeholder.png';\n @Input() lazyLoad: boolean = false;\n @Input() width: string = '100%'; \n @Input() height: string = 'auto'; \n\n isLoaded: boolean = false;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {\n if (this.lazyLoad) {\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n const img: HTMLImageElement = this.el.nativeElement.querySelector('img[data-src]');\n img.src = img.getAttribute('data-src')!;\n this.isLoaded = true;\n observer.unobserve(entry.target);\n }\n });\n });\n observer.observe(this.el.nativeElement);\n }else { \n const img: HTMLImageElement = this.el.nativeElement.querySelector('img');\n img.onload = () => {\n this.isLoaded = true; \n };\n }\n }\n}\n\n\n\n","<div>\n <img [src]=\"url\"\n [attr.data-src]=\"lazyLoad ? url : null\"\n (load)=\"isLoaded = true\"\n (error)=\"isLoaded = true; url = placeholder\"\n [ngClass]=\"{'loaded': isLoaded}\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n alt=\"Image\"/>\n <ng-container *ngIf=\"!isLoaded\">\n <img\n [src]=\"placeholder\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n alt=\"Placeholder Image\"\n />\n </ng-container>\n </div>\n","import { Component, Input, Output, EventEmitter, OnInit, Optional, Self, Inject, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n\n@Component({\n selector: 'verbena-input',\n templateUrl: './verbena-input.component.html',\n styleUrls: ['./verbena-input.component.css']\n})\nexport class VerbenaInputComponent implements ControlValueAccessor, OnInit {\n @Input() label: string = '';\n @Input() placeHolder: string = '';\n @Input() required: boolean = false;\n @Input() svgPosition: 'left' | 'right' = 'left';\n @Input() minLength?: number;\n @Input() maxLength?: number;\n @Input() type: 'text' | 'password' | 'integer' | 'number' | 'decimal' | 'email' | 'date' | 'tel' | 'url' | 'file' | 'color' | 'search' = 'text';\n @Input() bgColor: string = '#f9f9f9';\n @Input() border: string = '';\n @Input() borderRadius: string = '5px';\n @Input() textColor: string = '#333';\n @Input() value: string = '';\n @Input() labelPosition: string = 'start';\n @Input() labelColor: string = 'black';\n @Input() disable: boolean = false; // Disable input\n @Input() readOnly: boolean = false; // Read-only input\n @Input() min?: number;\n @Input() max?: number;\n @Input() showBorder: boolean = true;\n @Input() showErrorMessage: boolean = true;\n @Input() errorMessageColor: string = 'red';\n @Input() errorBorderColor?: string;\n @Input() errorPosition: 'left' | 'right' | 'top' | 'bottom' = 'bottom';\n @Input() svg: string = '';\n @Input() fontSize: string = '';\n @Input() svgWidth: number = 20;\n @Input() svgHeight: number = 20;\n @Input() svgColor: string = '';\n @Input() capitalization: 'none' | 'uppercase' | 'lowercase' | 'sentencecase' | 'pascalcase' | 'camelcase' = 'none';\n @Input() inputContainerClass: string = '';\n @Input() inputFieldClass: string = '';\n @Input() passLength: number = 8;\n @Input() inputWrapperClass: string = '';\n @Input() passwordToggle?: boolean = false;\n @Input() customErrorMessages: {\n required?: string;\n minLength?: string;\n maxLength?: string;\n minValue?: string;\n maxValue?: string;\n integer?: string;\n number?: string;\n decimal?: string;\n email?: string;\n password?: string;\n tel?: string;\n url?: string;\n } = {};\n\n @Output() valueChange = new EventEmitter<string | FileList>();\n\n errorMessage: string | undefined;\n inputId: string = '';\n onChange: any = () => {};\n onTouch: any = () => {};\n isInvalid: boolean = false;\n\n\n @Input() icon: string = 'eye';\n @Input() textPass: string = 'Show';\n\n\n toggleIcon(): void {\n this.icon = this.icon === 'eye' ? 'eye-closed' : 'eye';\n this.textPass = this.textPass === 'Show' ? 'Hide' : 'Show';\n this.type = this.type === 'password' ? 'text' : 'password';\n\n }\n\n constructor(@Optional() @Self() @Inject(forwardRef(() => NgControl)) private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl?.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n\n ngOnInit() {\n this.inputId = `verbena-input-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n onInput(event: Event) {\n const target = event.target as HTMLInputElement;\n\n if (this.type === 'file' && target.files) {\n const files = target.files;\n this.onChange(files);\n this.valueChange.emit(files);\n } else {\n this.value = target.value.trim();\n this.value = this.applyCapitalization(this.value, this.capitalization);\n this.validate();\n const sanitizedValue = this.sanitizeValue(this.value);\n this.onChange(sanitizedValue);\n this.valueChange.emit(sanitizedValue);\n }\n\n this.validate();\n \n }\n\n applyCapitalization(value: string, format: string): string {\n switch (format) {\n case 'uppercase': return value.toUpperCase();\n case 'lowercase': return value.toLowerCase();\n case 'sentencecase': return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n case 'pascalcase': return value.replace(/\\w+/g, (w) => w[0].toUpperCase() + w.slice(1).toLowerCase());\n case 'camelcase': return value.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) =>\n index === 0 ? match.toLowerCase() : match.toUpperCase()).replace(/\\s+/g, '');\n default: return value;\n }\n }\n\n sanitizeValue(value: string): string {\n if (['number', 'decimal', 'integer'].includes(this.type)) {\n return value.replace(/,/g, '');\n }\n return value;\n }\n\n validate() {\n this.errorMessage = '';\n\n if (this.required && !this.value) {\n this.errorMessage = this.customErrorMessages.required || 'This field is required.';\n this.isInvalid = true;\n return;\n }\n\n if (this.minLength && this.value.length < this.minLength) {\n this.errorMessage = this.customErrorMessages.minLength || `Minimum length is ${this.minLength}.`;\n this.isInvalid = true;\n return;\n }\n\n if (this.maxLength && this.value.length > this.maxLength) {\n this.errorMessage = this.customErrorMessages.maxLength || `Maximum length is ${this.maxLength}.`;\n this.isInvalid = true;\n return;\n }\n\n const sanitizedValue = this.sanitizeValue(this.value);\n const numericValue = parseFloat(sanitizedValue);\n\n if (['integer', 'number', 'decimal'].includes(this.type)) {\n if (this.min !== undefined && numericValue < this.min) {\n this.errorMessage = this.customErrorMessages.minValue || `Minimum value is ${this.min}.`;\n this.isInvalid = true;\n return;\n } else if (this.max !== undefined && numericValue > this.max) {\n this.errorMessage = this.customErrorMessages.maxValue || `Maximum value is ${this.max}.`;\n this.isInvalid = true;\n return;\n }\n }\n\n if (this.type === 'integer' && !/^\\d+$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.integer || 'Please enter a valid integer.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'number' && !/^\\d+(\\.\\d+)?$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.number || 'Please enter a valid number.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'decimal' && !/^\\d+(\\.\\d+)?$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.decimal || 'Please enter a valid decimal.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'email' && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.email || 'Please enter a valid email address.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'password' && this.value.length < this.passLength) {\n this.errorMessage = this.customErrorMessages.password || `Password must be at least ${this.passLength} characters long.`;\n this.isInvalid = true;\n return;\n }\n \n if (this.type === 'tel' && !/^\\+?[1-9]\\d{1,14}$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.tel || 'Please enter a valid telephone number.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'url' && !/^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.url || 'Please enter a valid URL.';\n this.isInvalid = true;\n return;\n }\n\n this.isInvalid = false;\n }\n\n writeValue(value: any): void {\n this.value = value ? this.applyCapitalization(value.trim(), this.capitalization) : '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disable = isDisabled;\n }\n\n onBlur() {\n this.onTouch(); // for ControlValueAccessor\n this.validate(); // for manual validation\n }\n}\n","<div class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n 'display': 'flex',\n 'justify-content': labelPosition,\n 'color': labelColor,\n 'padding': '0'\n }\"\n class=\"input-field\"\n >\n <div [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content':'space-between'\n\n }\">\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper \">\n <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n\n </div>\n <input\n [ngClass]=\"{'ng-invalid': isInvalid}\"\n (blur)=\"onBlur()\"\n [id]=\"label\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeHolder\"\n [attr.minlength]=\"minLength?.toString()\"\n [attr.maxlength]=\"maxLength?.toString()\"\n [attr.disabled]=\"disable ? true : null\"\n [attr.readOnly]=\"readOnly ? true : null\"\n (input)=\"onInput($event)\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div *ngIf=\"isInvalid && showErrorMessage\" class=\"error-message\" [ngStyle]=\"{\n 'color': errorMessageColor,\n 'position': errorPosition\n }\">\n {{ errorMessage }}\n </div>\n</div>\n","import { forwardRef, NgModule } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TooltipModule } from '../components/tooltip/tooltip.module';\nimport { VerbenaInputComponent } from './verbena-input.component';\nimport { SvgModule } from '../components/svg/svg.module';\n\n@NgModule({\n declarations: [VerbenaInputComponent],\n imports: [CommonModule, FormsModule, TooltipModule, SvgModule],\n exports: [VerbenaInputComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VerbenaInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => VerbenaInputComponent),\n multi: true,\n },\n ],\n})\nexport class VerbenaInputModule {}\n","import { NgModule } from '@angular/core';\nimport { ImageComponent } from './image.component';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaInputModule } from \"../../Verbena-input/verbena-input.module\";\n\n@NgModule({\n declarations: [ImageComponent],\n imports: [CommonModule, VerbenaInputModule,CommonModule],\n exports: [ImageComponent],\n})\nexport class ImageModule {}\n","export enum DataFilterType {\n String = 'String',\n Integer = 'Integer',\n Decimal = 'Decimal',\n Credit= 'Credit',\n Date = 'Date',\n Bool = \"Bool\",\n Number=\"Number\"\n}\n\nexport interface IDataFilter {\n name:string,\n type: DataFilterType;\n value?:any; \n checked: boolean;\n condition?:string;\n}\n\nexport enum ConditionalOptions {\n GreaterThanAndEqual = 'GTE',\n LessThanAndEqual = 'LTE',\n NotEqual = 'NEQ',\n On = 'On',\n Before = 'Before',\n After = 'After',\n Yes = 'Yes',\n No = 'No',\n }\n\nexport interface ITypeOption {\n type: DataFilterType;\n options: string[];\n}\n","import { ConditionalOptions, DataFilterType, ITypeOption } from \"./models/table-filter\";\n\nexport class Config {\n typeOptions: ITypeOption[] = [\n {\n type: DataFilterType.String,\n options: [ConditionalOptions.On,ConditionalOptions.NotEqual]\n },\n {\n type: DataFilterType.Integer,\n options: [ConditionalOptions.On, ConditionalOptions.Before,ConditionalOptions.LessThanAndEqual, ConditionalOptions.After,ConditionalOptions.GreaterThanAndEqual]\n },\n {\n type: DataFilterType.Decimal,\n options: [ConditionalOptions.On, ConditionalOptions.Before,ConditionalOptions.LessThanAndEqual, ConditionalOptions.After,ConditionalOptions.GreaterThanAndEqual]\n },\n {\n type: DataFilterType.Credit,\n options:[ConditionalOptions.On, ConditionalOptions.Before,ConditionalOptions.LessThanAndEqual, ConditionalOptions.After,ConditionalOptions.GreaterThanAndEqual]\n },\n {\n type: DataFilterType.Date,\n options: [ConditionalOptions.On,ConditionalOptions.Before,ConditionalOptions.After]\n },\n {\n type: DataFilterType.Bool,\n options: [ConditionalOptions.Yes,ConditionalOptions.No]\n }\n ];\n\n getConditionOptions(filterType: DataFilterType): string[] | null {\n const typeOption = this.typeOptions.find(option => option.type === filterType);\n return typeOption ? typeOption.options : null;\n } \n}\n\n\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ErrorMessageService {\n public createErrorMessage(\n inputElement: HTMLInputElement,\n message: string,\n position: 'above' | 'below',\n color: string,\n showErrorIcon: boolean,\n tooltipPosition: 'top' | 'bottom' | 'left' | 'right'\n ) {\n this.removeErrorMessage(inputElement);\n\n // Error message element\n if (message) {\n const errorElement = document.createElement('span');\n errorElement.textContent = message;\n errorElement.style.color = color;\n errorElement.style.fontSize = '12px';\n errorElement.classList.add('error-message');\n\n if (position === 'above') {\n inputElement.parentNode?.insertBefore(errorElement, inputElement);\n } else {\n inputElement.parentNode?.insertBefore(errorElement, inputElement.nextSibling);\n }\n }\n\n // Tooltip behavior for the error icon\n if (showErrorIcon) {\n const errorDot = document.createElement('div');\n errorDot.style.width = '8px';\n errorDot.style.height = '8px';\n errorDot.style.backgroundColor = 'red';\n errorDot.style.borderRadius = '50%';\n errorDot.style.position = 'absolute';\n errorDot.style.top = '50%';\n errorDot.style.right = '10px';\n errorDot.style.transform = 'translateY(-50%)';\n errorDot.style.cursor = 'pointer';\n errorDot.classList.add('error-dot');\n\n // Tooltip element\n const tooltip = document.createElement('span');\n tooltip.textContent = message;\n tooltip.style.position = 'absolute';\n tooltip.style.padding = '5px';\n tooltip.style.backgroundColor = 'red';\n tooltip.style.color = 'white';\n tooltip.style.borderRadius = '4px';\n tooltip.style.fontSize = '10px';\n tooltip.style.whiteSpace = 'nowrap';\n tooltip.style.visibility = 'hidden'; // Hidden until hover/click\n tooltip.classList.add('error-tooltip');\n\n this.setTooltipPosition(tooltip, errorDot, tooltipPosition);\n\n // Show tooltip on hover/click\n errorDot.addEventListener('mouseenter', () => (tooltip.style.visibility = 'visible'));\n errorDot.addEventListener('mouseleave', () => (tooltip.style.visibility = 'hidden'));\n errorDot.addEventListener('click', () => (tooltip.style.visibility = 'visible'));\n\n inputElement.parentNode?.appendChild(errorDot);\n inputElement.parentNode?.appendChild(tooltip);\n }\n }\n\n private setTooltipPosition(tooltip: HTMLElement, errorDot: HTMLElement, position: 'top' | 'bottom' | 'left' | 'right') {\n switch (position) {\n case 'top':\n tooltip.style.bottom = '20px';\n tooltip.style.left = '50%';\n tooltip.style.transform = 'translateX(-50%)';\n break;\n case 'bottom':\n tooltip.style.top = '20px';\n tooltip.style.left = '50%';\n tooltip.style.transform = 'translateX(-50%)';\n break;\n case 'left':\n tooltip.style.right = '20px';\n tooltip.style.top = '50%';\n tooltip.style.transform = 'translateY(-50%)';\n break;\n case 'right':\n tooltip.style.left = '20px';\n tooltip.style.top = '50%';\n tooltip.style.transform = 'translateY(-50%)';\n break;\n }\n }\n\n public removeErrorMessage(inputElement: HTMLInputElement) {\n const errorElements = inputElement.parentNode?.querySelectorAll('.error-message, .error-dot, .error-tooltip');\n if (errorElements) {\n errorElements.forEach((errorElement) => {\n errorElement.remove();\n });\n }\n }\n}\n","import { Directive, ElementRef, Input, HostListener, Renderer2 } from '@angular/core';\nimport { ErrorMessageService } from './error-message.service';\n\n@Directive({\n selector: '[appValidate]'\n})\nexport class ValidateDirective {\n @Input('appValidate') validationType: 'text' | 'number' | 'decimal' | 'integer' | 'email' = 'text';\n @Input() required: boolean = false;\n @Input() showBorder: boolean = true; // The controlling factor for the error icon\n @Input() showErrorMessage: boolean = true;\n\n @Input() errorBorderColor: string = 'red'; // Border color for errors\n @Input() errorMessageColor: string = 'red'; // Color for error message\n @Input() errorIconTooltipPosition: 'top' | 'bottom' | 'left' | 'right' = 'top'; // Tooltip position for error dot\n @Input() showErrorIcon: boolean = true;\n\n constructor(\n private el: ElementRef,\n private errorMessageService: ErrorMessageService,\n private renderer: Renderer2\n ) {}\n\n @HostListener('input', ['$event.target']) onInput(inputElement: any) {\n const value = inputElement.value.trim();\n\n switch (this.validationType) {\n case 'text':\n this.validateText(inputElement, value);\n break;\n case 'number':\n this.validateNumber(inputElement, value);\n break;\n case 'decimal':\n this.validateDecimal(inputElement, value);\n break;\n case 'integer':\n this.validateInteger(inputElement, value);\n break;\n case 'email':\n this.validateEmail(inputElement, value);\n break;\n }\n }\n\n private validateText(input: any, value: string) {\n if (this.required && value === '') {\n this.showError(input, 'Text is required');\n } else {\n this.clearError(input);\n }\n }\n\n private validateNumber(input: any, value: string) {\n if (isNaN(+value)) {\n this.blockInvalidInput(input, 'Please enter a valid number');\n } else {\n this.clearError(input);\n }\n }\n\n private validateDecimal(input: any, value: string) {\n const regex = /^\\d*\\.?\\d*$/;\n if (!regex.test(value)) {\n this.showError(input, 'Please enter a valid decimal number');\n } else {\n this.clearError(input);\n }\n }\n\n private validateInteger(input: any, value: string) {\n const regex = /^\\d+$/;\n if (!regex.test(value)) {\n this.blockInvalidInput(input, 'Please enter a valid integer');\n } else {\n this.clearError(input);\n }\n }\n\n private validateEmail(input: any, value: string) {\n const regex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!regex.test(value)) {\n this.blockInvalidInput(input, 'Please enter a valid email address');\n } else {\n this.clearError(input);\n }\n }\n\n private blockInvalidInput(input: any, message: string) {\n input.value = '';\n this.showError(input, message);\n }\n\n private showError(input: any, message: string) {\n if (this.showBorder) {\n this.renderer.setStyle(input, 'borderColor', this.errorBorderColor);\n this.renderer.addClass(input, 'error-with-dot'); // Add error class\n\n\n }\n }\n\n private clearError(input: any) {\n if (this.showBorder) {\n this.renderer.removeStyle(input, 'borderColor');\n this.renderer.removeClass(input, 'error-with-dot'); // Remove error class\n }\n this.errorMessageService.removeErrorMessage(input);\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { DataFilterType, IDataFilter } from '../../models/table-filter';\nimport { Config } from '../../config';\n\n@Component({\n selector: 'verben-table-filter',\n templateUrl: './table-filter.component.html',\n styleUrls: ['./table-filter.component.css'],\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filterOptions: IDataFilter[] = [];\n @Input() pd?: string;\n @Input() mg?: string;\n @Input() height?: string;\n @Input() width?: string;\n @Input() bgColor?: string;\n @Input() boxShadow?: string;\n @Input() textColor?: string;\n @Input() primaryColor?: string;\n @Input() secondaryColor?: string;\n @Input() tertiaryColor?: string;\n @Input() border?: string;\n @Input() borderRadius?: string;\n @Input() selectWidth?: string;\n @Input() maxFilterLength: number = 3;\n @Input() tooltip: boolean = false;\n @Output() filtersApplied = new EventEmitter<any>();\n @Output() resetSortData = new EventEmitter<any>();\n filterArray: string[] = [];\n selectedFilterValue: string = '';\n selectedFilterType?: any;\n conditionOptions: string[] = [];\n selectedCondition: string | undefined = '';\n inputValue?: string | number;\n savedFilters: IDataFilter[] = [];\n selectedFilters: IDataFilter[] = [];\n showAllFilters: boolean = false;\n editIndex: number | null = null;\n checkAll: boolean = false;\n isDuplicateFilter: boolean = false;\n disableAddFilterBtn: boolean = false;\n disableApplyFilterBtn: boolean = true;\n duplicateMessage?: string = '';\n configInstance: Config;\n storageKey: string = 'savedFilters';\n filterCount: number = 0;\n\n constructor() {\n this.configInstance = new Config();\n }\n\n ngOnInit(): void {\n this.filterArray = this.filterOptions.map((item) => item.name);\n }\n\n onFilterNameChange(selectedFilterValue: string) {\n const selectedFilter = this.filterOptions.find(\n (option) => option.name === selectedFilterValue\n );\n\n if (selectedFilter) {\n this.selectedFilterType = selectedFilter.type;\n this.conditionOptions =\n this.configInstance.getConditionOptions(this.selectedFilterType) || [];\n this.selectedCondition = '';\n }\n }\n\n resetFilters() {\n this.selectedFilterType = null;\n this.selectedCondition = '';\n this.inputValue = '';\n this.savedFilters = [];\n this.editIndex = null;\n this.checkAll = false;\n this.isDuplicateFilter = false;\n this.disableApplyFilterBtn = true;\n this.duplicateMessage = '';\n localStorage.removeItem(this.storageKey);\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n this.resetSortData.emit();\n }\n\n addFilter() {\n if (\n !this.selectedFilterValue ||\n !this.selectedCondition ||\n !this.inputValue\n ) {\n return;\n }\n\n if (this.editIndex === null && this.isDuplicateFilter) {\n return;\n }\n // 00:00 23:59\n if (\n (this.selectedFilterType as DataFilterType) == DataFilterType.Date &&\n this.selectedCondition == 'On'\n ) {\n const leftFilter: IDataFilter = {\n name: this.selectedFilterValue,\n type: this.selectedFilterType,\n condition: 'After',\n value: (this.inputValue as string).concat(' 00:00'),\n checked: true,\n };\n\n const rightFilter: IDataFilter = {\n name: this.selectedFilterValue,\n type: this.selectedFilterType,\n condition: 'Before',\n value: (this.inputValue as string).concat(' 23:59'),\n checked: true,\n };\n\n const filters = [leftFilter, rightFilter];\n\n for (let newFilter of filters) {\n if (this.editIndex !== null) {\n const isDuplicate = this.savedFilters.some(\n (filter, index) =>\n filter.name === newFilter.name &&\n filter.condition === newFilter.condition &&\n index !== this.editIndex\n );\n\n if (isDuplicate) {\n continue;\n }\n this.savedFilters[this.editIndex] = newFilter;\n this.editIndex = null;\n } else {\n if (\n this.savedFilters.some(\n (filter) =>\n filter.name === newFilter.name &&\n filter.condition === newFilter.condition\n )\n ) {\n continue;\n }\n this.savedFilters.push(newFilter);\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n }\n }\n } else {\n const newFilter: IDataFilter = {\n name: this.selectedFilterValue,\n type: this.selectedFilterType,\n condition: this.selectedCondition,\n value: this.inputValue,\n checked: true,\n };\n\n if (this.editIndex !== null) {\n const isDuplicate = this.savedFilters.some(\n (filter, index) =>\n filter.name === newFilter.name &&\n filter.condition === newFilter.condition &&\n index !== this.editIndex\n );\n\n if (isDuplicate) {\n return;\n }\n this.savedFilters[this.editIndex] = newFilter;\n this.editIndex = null;\n } else {\n if (\n this.savedFilters.some(\n (filter) =>\n filter.name === newFilter.name &&\n filter.condition === newFilter.condition\n )\n ) {\n return;\n }\n this.savedFilters.push(newFilter);\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n }\n }\n\n this.clearOperationSection();\n this.checkFilterButton();\n }\n\n toggleCheckbox(index: number) {\n this.savedFilters[index].checked = !this.savedFilters[index].checked;\n this.checkAll = this.savedFilters.every((item) => item.checked);\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n }\n\n deleteFilter(index: number) {\n this.savedFilters.splice(index, 1);\n this.checkDuplicateFilter();\n this.checkFilterButton();\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n if (this.savedFilters.length === 0) {\n this.checkAll = false;\n }\n }\n\n editFilter(index: number) {\n const filter = this.savedFilters[index];\n this.selectedFilterType = filter.type;\n this.selectedFilterValue = filter.name;\n this.onFilterNameChange(this.selectedFilterValue);\n this.selectedCondition = filter.condition;\n this.inputValue = filter.value;\n this.editIndex = index;\n }\n\n applyFilters() {\n this.selectedFilters = this.savedFilters.filter((filter) => filter.checked);\n this.filtersApplied.emit(this.selectedFilters);\n this.filtersApplied.emit(this.storageKey);\n }\n\n toggleShowMore() {\n this.showAllFilters = !this.showAllFilters;\n }\n\n get visibleFilters() {\n return this.showAllFilters\n ? this.savedFilters\n : this.savedFilters.slice(0, this.maxFilterLength);\n }\n\n clearOperationSection() {\n this.selectedFilterValue = '';\n this.selectedCondition = '';\n this.inputValue = '';\n }\n\n checkFilterButton() {\n this.disableApplyFilterBtn = this.savedFilters.length === 0;\n }\n\n toggleSelectAll(): void {\n this.checkAll = !this.checkAll;\n this.savedFilters.forEach((filter) => (filter.checked = this.checkAll));\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n }\n\n checkDuplicateFilter(): void {\n if (this.editIndex !== null) {\n const exists = this.savedFilters.some(\n (filter, index) =>\n filter.name === this.selectedFilterValue &&\n filter.condition === this.selectedCondition &&\n index !== this.editIndex\n );\n this.disableAddFilterBtn = exists;\n this.isDuplicateFilter = exists;\n this.duplicateMessage = exists\n ? 'This entry is a duplicate and cannot be added.'\n : '';\n } else {\n const exists = this.savedFilters.some(\n (filter) =>\n filter.name === this.selectedFilterValue &&\n filter.condition === this.selectedCondition\n );\n this.disableAddFilterBtn = exists;\n this.isDuplicateFilter = exists;\n this.duplicateMessage = exists\n ? 'This entry is a duplicate and cannot be added.'\n : '';\n }\n }\n}\n","<section\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n>\n <div class=\"top\">\n <h3 [style.color]=\"tertiaryColor\" [style.font-size]=\"'14px'\">\n Filters\n <span [style.color]=\"secondaryColor\"\n ><sup>({{ filterCount }})</sup></span\n >\n </h3>\n <button\n [style.color]=\"secondaryColor\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetFilters()\"\n >\n Reset\n </button>\n </div>\n <hr />\n\n <!-- Saved Filters Section -->\n <div class=\"center\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Saved Filters</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div class=\"selectAllWrapper\" *ngIf=\"savedFilters.length\">\n <input\n type=\"checkbox\"\n [checked]=\"checkAll\"\n (change)=\"toggleSelectAll()\"\n />\n <p [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">Select All</p>\n </div>\n <div\n *ngFor=\"let filter of visibleFilters; let i = index\"\n class=\"centerInnerWrapper\"\n >\n <div class=\"checkboxWrapper\">\n <span\n ><input\n type=\"checkbox\"\n [checked]=\"filter.checked\"\n (click)=\"toggleCheckbox(i)\"\n /></span>\n <p\n [style.font-size]=\"'13px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ filter.name }} {{ filter.condition }} {{ filter.value}}\n </p>\n </div>\n <div class=\"iconWrapper\">\n <verben-svg\n icon=\"pencil\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editFilter(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"trash\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"deleteFilter(i)\"\n ></verben-svg>\n </div>\n </div>\n\n <div\n class=\"moreWrapper\"\n *ngIf=\"savedFilters.length > maxFilterLength\"\n (click)=\"toggleShowMore()\"\n >\n <p\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ showAllFilters ? \"Show less\" : \"Show more\" }}\n </p>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </div>\n <hr />\n\n <!-- Operation Section -->\n <div class=\"bottom\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Operation</h3>\n <div [ngStyle]=\"{'position':'relative'}\"> \n \n <verben-tooltip \n [tooltipContent]=\"tooltipTemplate\"\n [backgroundColor]=\"'grey'\"\n width=\"200px\" \n [top]=\"'20px'\" \n [right]=\"'0px'\" \n >\n <verben-svg \n icon=\"info\" \n [width]=\"15\" \n [height]=\"15\" \n *ngIf=\"isDuplicateFilter\"\n fill=\"red\"\n >\n </verben-svg>\n </verben-tooltip>\n \n <ng-template #tooltipTemplate>\n {{duplicateMessage}}\n </ng-template>\n <!-- <verben-tooltip\n [backgroundColor]=\"'grey'\"\n [textColor]=\"'white'\"\n [padding]=\"'10px'\"\n [borderRadius]=\"'8px'\"\n [top]=\"'20px'\" \n [right]=\"'0px'\" \n width=\"250px\" \n #tooltip \n *ngIf=\"tooltip\"\n >\n <h3>{{duplicateMessage}}</h3>\n </verben-tooltip> -->\n </div>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n *ngIf=\"!isDuplicateFilter\"\n ></verben-svg>\n </div>\n\n <div class=\"inputsWrapper\">\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n [options]=\"filterArray\"\n [(ngModel)]=\"selectedFilterValue\"\n (ngModelChange)=\"onFilterNameChange(selectedFilterValue)\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n placeholder=\"Select value\"\n [options]=\"conditionOptions\"\n (onChange)=\"checkDuplicateFilter()\"\n [(ngModel)]=\"selectedCondition\"\n >\n </verben-drop-down>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Date'\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"80px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [type]=\"'date'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Credit' || selectedFilterType === 'Integer'\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input integer\"\n [showBorder]=\"true\"\n\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n\n appValidate=\"integer\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Decimal'\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input a decimal\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"decimal\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType !== 'Credit' && selectedFilterType !== 'Date' && selectedFilterType !== 'Integer' && selectedFilterType !== 'Decimal'\"\n border=\"1px solid #ccc\"\n placeHolder=\"input value\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n </div>\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.border-radius]=\"borderRadius\"\n [style.background-color]=\"'transparent'\"\n [style.color]=\"secondaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [disabled]=\"disableAddFilterBtn\"\n [ngClass]=\"{\n disablebtn: disableAddFilterBtn,\n enableBtn: !disableAddFilterBtn\n }\"\n (click)=\"addFilter()\"\n >\n + Add\n </button>\n </div>\n <hr />\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\"\n (click)=\"applyFilters()\"\n [disabled]=\"disableApplyFilterBtn\"\n [ngClass]=\"{\n disablebtn: disableApplyFilterBtn,\n enableBtn: !disableApplyFilterBtn\n }\"\n >\n Filter\n </button>\n </div>\n\n\n </div>\n\n</section>\n","import { NgModule } from '@angular/core';\nimport { ValidateDirective } from './validate.directive';\nimport { ErrorMessageService } from './error-message.service';\n\n\n@NgModule({\n declarations: [\n ValidateDirective\n ],\n providers: [\n ErrorMessageService\n ],\n exports: [\n ValidateDirective\n ]\n})\nexport class ValidationModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableFilterComponent } from './table-filter.component';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { ValidationModule } from '../../validate/validate.module';\nimport { SvgModule } from '../svg/svg.module';\n\n\n@NgModule({\n declarations:[TableFilterComponent],\n imports: [\n CommonModule,\n FormsModule,\n DropDownModule,\n VerbenaInputModule,\n ValidationModule,\n TooltipModule,\n SvgModule\n ],\n exports: [TableFilterComponent]\n})\nexport class TableFilterModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\ninterface NotificationOptions {\n timeout?: number;\n position?: string;\n buttons?: { text: string; bgColor?: string; primaryColor?: string }[];\n type: 'success' | 'error' | 'warning' | 'info';\n}\n\ninterface NotificationStyles {\n backgroundColor: string;\n textColor: string;\n iconName: string;\n iconWidth: number;\n iconHeight: number;\n stroke: string;\n fill: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n private notificationSubject = new BehaviorSubject<{\n message: string;\n options: NotificationOptions & NotificationStyles;\n } | null>(null);\n notification$ = this.notificationSubject.asObservable();\n\n private getDefaultOptions(\n type: NotificationOptions['type']\n ): NotificationStyles {\n const typeStyles: Record<NotificationOptions['type'], NotificationStyles> =\n {\n success: {\n backgroundColor: '#D6F3E6',\n textColor: '#2DB76F',\n iconName: 'success',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '',\n fill: '',\n },\n error: {\n backgroundColor: '#FFE681',\n textColor: '#E20000',\n iconName: 'warning',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '#E20000',\n fill: '#E20000',\n },\n warning: {\n backgroundColor: '#eda73f1a',\n textColor: '#EDA73F',\n iconName: 'dangerInfo',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '#EDA73F',\n fill: '#EDA73F',\n },\n info: {\n backgroundColor: '#E7F1FF',\n textColor: '#0552B5',\n iconName: 'dangerInfo',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '#0552B5',\n fill: '#0552B5',\n },\n };\n\n return (\n typeStyles[type] || {\n backgroundColor: '#333',\n textColor: '#fff',\n iconName: '',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '',\n fill: '',\n }\n );\n }\n\n showNotification(\n type: NotificationOptions['type'],\n message: string,\n options: Partial<NotificationOptions> = {}\n ) {\n const defaultOptions: NotificationOptions & NotificationStyles = {\n timeout: 2000,\n position: 'top-right',\n ...this.getDefaultOptions(type),\n type,\n };\n this.notificationSubject.next({\n message,\n options: { ...defaultOptions, ...options },\n });\n }\n\n clearNotification() {\n this.notificationSubject.next(null);\n }\n\n success(message: string, options?: Partial<NotificationOptions>) {\n this.showNotification('success', message, options);\n }\n\n warning(message: string, options?: Partial<NotificationOptions>) {\n this.showNotification('warning', message, options);\n }\n\n error(message: string, options?: Partial<NotificationOptions>) {\n this.showNotification('error', message, options);\n }\n\n info(message: string, options?: Partial<NotificationOptions>) {\n this.showNotification('info', message, options);\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n OnChanges,\n SimpleChanges,\n AfterViewInit\n} from '@angular/core';\n\n@Component({\n selector: 'verbena-icon',\n templateUrl: './verbena-icon.component.html',\n styleUrls: ['./verbena-icon.component.css']\n})\nexport class VerbenaIconComponent implements OnInit, OnChanges, AfterViewInit {\n @Input() icon: string = '';\n @Input() variant: 'outlined' | 'rounded' | 'sharp' = 'outlined';\n @Input() size: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | number = 'md';\n @Input() fill: boolean = false;\n @Input() weight: number = 400; // Changed to number type to accommodate both property binding and string input\n @Input() color: string = '';\n\n iconName: string = '';\n iconStyles: any = {};\n fillClass: string = '';\n\n constructor() {}\n\n ngOnInit(): void {\n this.updateIcon();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updateIcon();\n }\n\n ngAfterViewInit(): void {\n this.ensureGoogleIconsLoaded();\n }\n\n private ensureGoogleIconsLoaded(): void {\n // Check if Google Icons stylesheet is already loaded\n const linkExists = document.querySelector('link[href*=\"material-symbols\"]');\n \n if (!linkExists) {\n const linkElement = document.createElement('link');\n linkElement.rel = 'stylesheet';\n linkElement.href = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200&family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200&family=Material+Symbols+Sharp:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200';\n document.head.appendChild(linkElement);\n }\n }\n\n private updateIcon(): void {\n // Set the icon name from the input\n this.iconName = this.icon;\n this.updateStyles();\n this.fillClass = this.fill ? 'material-fill-1' : 'material-fill-0';\n }\n\n private updateStyles(): void {\n const sizeMap: { [key: string]: number } = {\n 'sm': 18,\n 'md': 24,\n 'lg': 36,\n 'xl': 48,\n '2xl': 60,\n '3xl': 72,\n '4xl': 96\n };\n\n const iconSize = typeof this.size === 'number' \n ? this.size \n : sizeMap[this.size as string] || 24;\n \n // Ensure weight is a valid number between 100-700 and is a multiple of 100\n let weightValue = Number(this.weight);\n weightValue = !isNaN(weightValue) ? weightValue : 400;\n weightValue = Math.min(700, Math.max(100, Math.round(weightValue / 100) * 100));\n\n this.iconStyles = {\n 'font-size': `${iconSize}px`,\n 'font-variation-settings': `'FILL' ${this.fill ? 1 : 0}, 'wght' ${weightValue}, 'GRAD' 0`,\n 'color': this.color || 'inherit'\n };\n }\n}","<span \n class=\"material-symbols-{{ variant }}\"\n [ngStyle]=\"iconStyles\"\n [ngClass]=\"fillClass\">\n {{ iconName }}\n</span>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'verbena-button',\n templateUrl: './verbena-button.component.html',\n styleUrls: ['./verbena-button.component.css']\n})\nexport class VerbenaButtonComponent {\n @Input() text: string = '';\n @Input() icon: string = '';\n @Input() useIcon: boolean = false;\n\n @Input() svgPosition: 'left' | 'right' = 'left';\n @Input() iconPosition: 'left' | 'right' = 'left';\n @Input() bgColor?: string = '';\n @Input() textColor?: string = '';\n @Input() border: string = '';\n @Input() borderRadius: string = '';\n @Input() pd: string = '';\n @Input() width: string = '';\n @Input() height: string = '';\n @Input() fontSize: string = '14px';\n @Input() fontWeight: string = '500';\n @Input() disable: boolean = false;\n @Input() svgSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' = 'md';\n @Input() weight: number = 400;\n @Input() variant: 'outlined' | 'rounded' | 'sharp' = 'outlined';\n @Input() styleType: 'primary' | 'secondary' | 'danger' | 'small' | 'outline' | 'grey' | 'ylw-outline' = 'primary'; // Predefined styles\n\n @Input() svg: string = '';\n @Input() svgWidth: number = 20;\n @Input() svgHeight: number = 20;\n @Input() iconColor: string = '';\n @Input() svgColor: string = '';\n\n\n @Input() buttonClass: string = ''; // Custom class for button\n @Input() buttonTextClass: string = ''; // Custom class for button\n @Input() isLoading: any;\n @Input() spinnerSize: any;\n @Input() spinnerColor: any;\n\n get buttonStyles() {\n switch (this.styleType) {\n case 'primary':\n return {\n bgColor: this.bgColor || 'lightgrey',\n textColor: this.textColor || '#000000',\n border: this.border || 'none',\n borderRadius: this.borderRadius || '4px',\n pd: this.pd || '10px 15px'\n };\n case 'secondary':\n return {\n bgColor: this.bgColor || '#FFE681',\n textColor: this.textColor || '#404040',\n border: this.border || 'none',\n borderRadius: this.borderRadius || '4px',\n pd: this.pd || '10px 15px'\n };\n case 'danger':\n return {\n bgColor: this.bgColor || '#dc3545',\n textColor: this.textColor || '#ffffff',\n border: this.border || 'none',\n borderRadius: this.borderRadius || '4px',\n pd: this.pd || '8px 10px'\n };\n case 'small':\n return {\n bgColor: this.bgColor || '#fff',\n textColor: this.textColor || '#000',\n border: this.border || '1px solid grey',\n borderRadius: this.borderRadius || '7px',\n pd: this.pd || '0px 10px'\n };\n\n case 'outline':\n return {\n bgColor: this.bgColor || 'none',\n textColor: this.textColor || '#000',\n border: this.border || '1px solid #404040',\n borderRadius: this.borderRadius || '5px',\n pd: this.pd || '0px 8px'\n };\n case 'ylw-outline':\n return {\n bgColor: this.bgColor || '#FFFBEB',\n textColor: this.textColor || '#404040',\n border: this.border || '1px solid #FFE681',\n borderRadius: this.borderRadius || '5px',\n pd: this.pd || '10px 15px'\n };\n case 'grey':\n return {\n bgColor: this.bgColor || 'none',\n textColor: this.textColor || '#D9D9D940',\n border: this.border || '2px solid grey',\n borderRadius: this.borderRadius || '4px',\n pd: this.pd || '10px 15px'\n };\n default:\n return {};\n }\n }\n}\n","<button [ngStyle]=\"{\n 'background-color': buttonStyles.bgColor,\n 'color': buttonStyles.textColor,\n 'border': buttonStyles.border,\n 'border-radius': buttonStyles.borderRadius,\n 'padding': buttonStyles.pd,\n 'width': width,\n 'height': height,\n 'font-size': fontSize,\n 'display': 'flex',\n 'align-items': 'center',\n 'justify-content': 'center',\n 'cursor': isLoading ? 'not-allowed' : 'pointer',\n 'gap': '6px'\n}\"\n[disabled]=\"disable || isLoading\"\nclass=\"verbena-button {{ buttonClass }}\"\n>\n <!-- Loading Spinner -->\n <ng-container *ngIf=\"isLoading\">\n <div class=\"loading-spinner\" [ngStyle]=\"{'width': spinnerSize, 'height': spinnerSize, 'border-color': spinnerColor, 'border-top-color': 'transparent'}\"></div>\n <span *ngIf=\"text\" class=\"{{ buttonTextClass }}\" [ngStyle]=\"{'font-size': fontSize, 'font-weight': fontWeight}\">{{ text }}</span>\n\n </ng-container>\n\n <ng-container *ngIf=\"!isLoading\">\n <ng-container *ngIf=\"!useIcon && svg && svgPosition === 'left'\">\n <verben-svg [icon]=\"svg\" [width]=\"svgWidth\" [height]=\"svgHeight\" [size]=\"svgSize\" [stroke]=\"svgColor\"></verben-svg>\n </ng-container>\n <ng-container *ngIf=\"useIcon && icon && iconPosition === 'left'\">\n <verbena-icon [icon]=\"icon\" [variant]=\"variant\" [size]=\"svgSize\" [weight]=\"weight\" [color]=\"svgColor\"></verbena-icon>\n </ng-container>\n \n <span *ngIf=\"text\" class=\"{{ buttonTextClass }}\" [ngStyle]=\"{'font-size': fontSize, 'font-weight': fontWeight}\">{{ text }}</span>\n \n <ng-container *ngIf=\"!useIcon && svg && svgPosition === 'right'\">\n <verben-svg [icon]=\"svg\" [width]=\"svgWidth\" [height]=\"svgHeight\" [size]=\"svgSize\" [stroke]=\"svgColor\"></verben-svg>\n </ng-container>\n <ng-container *ngIf=\"useIcon && icon && iconPosition === 'right'\">\n <verbena-icon [icon]=\"icon\" [variant]=\"variant\" [size]=\"svgSize\" [weight]=\"weight\" [color]=\"svgColor\"></verbena-icon>\n </ng-container>\n </ng-container>\n \n</button>\n","import { Component, Input, EventEmitter, Output,OnInit, OnDestroy } from '@angular/core';\nimport { NotificationService } from '../../services/notification.services';\nimport { Subscription} from 'rxjs';\n\ninterface Button {\n text: string;\n bgColor?: string; \n primarycolor?: string; \n secondarycolor?: string;\n fontSize?:string; \n fontWeight?:string; \n}\n\n@Component({\n selector: 'verben-notification',\n templateUrl: './notification.component.html',\n styleUrl: './notification.component.css',\n})\n\nexport class NotificationComponent implements OnInit, OnDestroy {\n @Input() width?: string = '400px'; \n height?: string = '50px'; \n borderRadius: string = '15px';\nfontSize: string = '20px';\nfontWeight: string = '700';\n padding: string = '10px 2.5rem 10px 1.5rem';\n @Input() content?: string;\n top: string = '';\n bottom: string = '';\n @Input() buttons: Button[] = [];\n @Input() timeout: number = 10000; \n @Input() position: string = 'top-left';\n transition: string = '0.6s ease-in-out';\n\n showNotification = false;\n notificationContent = '';\n notificationOptions: any = {};\n subscription:Subscription\n \n constructor(\n private notificationService: NotificationService,\n ) {\n this.subscription = new Subscription();\n }\n\n ngOnInit() {\n this.subscription = this.notificationService.notification$.subscribe(notification => {\n if (notification) {\n this.showNotification = true;\n this.notificationContent = notification.message;\n this.notificationOptions = notification.options;\n\n setTimeout(() => {\n this.closeNotification();\n }, this.notificationOptions.timeout);\n } else {\n this.showNotification = false;\n }\n });\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n closeNotification() {\n this.showNotification = false;\n this.notificationService.clearNotification();\n }\n \n @Output() buttonClick = new EventEmitter<Button>();\n @Output() close = new EventEmitter();\n\n get notificationStyles() {\n return {\n 'background-color': this.notificationOptions.backgroundColor,\n 'color': this.notificationOptions.textColor,\n 'padding': this.padding,\n 'border-radius': this.borderRadius,\n 'border': '1px solid transparent',\n 'width': this.width,\n 'font-size':this.fontSize,\n 'font-weight':this.fontWeight,\n 'display':'flex',\n 'align-items':'center',\n 'justify-content':'space-between',\n ...this.getPositionStyles(), \n 'position': 'fixed',\n 'z-index': '9999',\n 'transition': this.transition,\n };\n };\n \n getPositionStyles() {\n const positions: { [key: string]: any } = {\n 'top-left': {\n top: this.top || '1rem' ,\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'top-right': {\n top: this.top || '1rem' ,\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'middle-left': {\n top: this.top || '45%' ,\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'middle-right': {\n top: this.top || '45%' ,\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'bottom-left': {\n bottom: this.bottom || '1rem',\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'bottom 0.5s ease-in-out',\n },\n 'bottom-right': {\n bottom: this.bottom || '1rem',\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'bottom 0.5s ease-in-out',\n },\n };\n \n return positions[this.position] || positions['top-left'];\n }\n \n get btnWrapperStyle(){ \n return { \n 'display':'flex',\n 'align-items':'center',\n 'gap':'0.2rem',\n }\n }\n\n get innerWrapperStyles(){ \n return { \n 'display':'flex',\n 'align-items':'center',\n 'gap':'1.5rem'\n }\n }\n\n onButtonClick(button: Button) {\n this.buttonClick.emit(button);\n }\n\n}\n\n\n\n","<div \n[ngStyle]=\"notificationStyles\"\nclass=\"mainwrapper\"\n>\n <div [ngStyle]=\"innerWrapperStyles\">\n <verben-svg\n [icon]=\"notificationOptions.iconName\"\n [width]=\"notificationOptions.iconWidth\"\n [height]=\"notificationOptions.iconHeight\"\n [stroke]=\"notificationOptions.stroke\"\n [fill]=\"notificationOptions.fill\"\n ></verben-svg>\n <p>{{ notificationContent }}</p>\n </div>\n <div>\n <div [ngStyle]=\"btnWrapperStyle\" *ngIf=\"buttons.length\">\n <verbena-button\n *ngFor=\"let button of buttons\"\n [text]=\"button.text\"\n [bgColor]=\"button.bgColor\"\n [textColor]=\"button.primarycolor || button.secondarycolor\"\n [borderRadius]=\"'8px'\"\n [pd]=\"'0px 8px'\"\n [fontSize]=\"'14px'\"\n (click)=\"onButtonClick(button)\"\n ></verbena-button>\n </div>\n <verben-svg\n class=\"closeSvg\"\n [icon]=\"'close'\"\n [size]=\"'sm'\"\n [stroke]=\"'grey'\"\n (click) = \"closeNotification()\"\n ></verben-svg>\n </div>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaIconComponent } from './verbena-icon.component';\n\n@NgModule({\n declarations: [VerbenaIconComponent],\n imports: [CommonModule],\n exports: [VerbenaIconComponent]\n})\nexport class VerbenaIconModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaButtonComponent } from './verbena-button.component';\nimport { SvgModule } from '../components/svg/svg.module';\nimport { VerbenaIconModule } from '../components/verbena-icon/verbena-icon.module';\n\n@NgModule({\n declarations: [VerbenaButtonComponent],\n imports: [CommonModule, SvgModule, VerbenaIconModule],\n exports: [VerbenaButtonComponent]\n})\nexport class VerbenaButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { NotificationComponent } from '../notification/notification.component';\nimport { CommonModule } from '@angular/common'\nimport { SvgModule } from '../svg/svg.module';\nimport { VerbenaButtonModule } from '../../verbena-button/verbena-button.module';\n\n\n@NgModule({\n declarations: [NotificationComponent],\n imports: [CommonModule,SvgModule,VerbenaButtonModule],\n exports: [NotificationComponent],\n})\nexport class NotificationModule {}\n\n\n\n","import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, ElementRef, AfterContentInit, Input } from '@angular/core';\n\n@Component({\n selector: 'verben-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.css']\n})\n\nexport class CardComponent implements AfterContentInit {\n hasHeader = false;\n hasFooter = false;\n hasBody = false;\n @Input() pd = '10px';\n @Input() mg = '0px';\n @Input() height?:string ;\n @Input() width?:string ;\n @Input() textColor?:string ;\n @Input() bgColor?:string ;\n @Input() border?:string ;\n @Input() borderRadius?:string ;\n @Input() disabled:boolean=false ;\n @Input() aspectRatio?:number ;\n @ContentChild('card-header', { static: false }) cardHeader: ElementRef | undefined;\n @ContentChild('card-body', { static: false }) cardBody: ElementRef | undefined;\n @ContentChild('card-footer', { static: false }) cardFooter: ElementRef | undefined;\n\n ngAfterContentInit() {\n this.hasHeader = !this.cardHeader;\n this.hasBody = !this.cardBody;\n this.hasFooter = !this.cardFooter;\n }\n}"," <div class=\"card\"\n [style.background-color]=\"bgColor\"\n [style.margin]=\"mg\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [ngClass]=\"disabled?'disable':''\"\n [style.aspect-ratio]=\"aspectRatio\"\n [style.padding]=\"pd\"\n >\n <div class=\"card-header\" *ngIf=\"hasHeader\">\n <ng-content select=\"[card-header]\"></ng-content>\n </div>\n <div class=\"card-body\" *ngIf=\"hasBody\">\n <ng-content select=\"[card-body]\"></ng-content>\n </div>\n <div class=\"card-footer\" *ngIf=\"hasFooter\">\n <ng-content select=\"[card-footer]\"></ng-content>\n </div>\n </div>\n ","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CardComponent } from './card.component';\n\n@NgModule({\n declarations:[CardComponent],\n imports: [ CommonModule],\n exports: [CardComponent]\n})\nexport class CardModule {}\n","import { Directive, ElementRef, HostListener, Renderer2, Output, EventEmitter } from '@angular/core';\n\n@Directive({\n selector: '[appConvertToNumber]'\n})\nexport class ConvertToNumberDirective {\n\n @Output() numberValue = new EventEmitter<number | null>();\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const num = Number(value);\n if (!isNaN(num)) {\n this.numberValue.emit(num);\n this.renderer.setProperty(this.el.nativeElement, 'value', num);\n } else {\n this.numberValue.emit(null);\n }\n console.log(`this is ${num}`)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ConvertToNumberDirective } from './convert-to-number.directive';\n\n@NgModule({\n declarations: [ConvertToNumberDirective],\n exports: [ConvertToNumberDirective]\n})\nexport class ConvertToNumberModule {}\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[appConvertToInteger]'\n})\nexport class ConvertToIntegerDirective {\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event): void {\n const inputValue = (event.target as HTMLInputElement).value;\n const integerValue = this.formatToInteger(inputValue);\n this.renderer.setProperty(this.el.nativeElement, 'value', integerValue);\n console.log(`this is ${integerValue}`)\n }\n\n private formatToInteger(value: string): string {\n if (!value) {\n return '';\n }\n const numericValue = parseInt(value, 10);\n if (isNaN(numericValue)) {\n return '';\n }\n return numericValue.toString();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConvertToIntegerDirective } from './convert-to-integer.directive';\n\n@NgModule({\n declarations: [ConvertToIntegerDirective],\n imports: [CommonModule],\n exports: [ConvertToIntegerDirective]\n})\nexport class ConvertToIntegerModule {}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { DataFilterType } from '../../models/table-filter';\nimport { IDataFilter } from '../../models/data-filter';\n\n@Component({\n selector: 'verben-sort-table',\n templateUrl: './sort-table.component.html',\n styleUrls: ['./sort-table.component.css'],\n\n})\nexport class SortTableComponent {\n @Input() enableDragAndDrop: boolean = false;\n @Input() sortOptions: IDataFilter[] = [];\n @Input() resetText: string = 'Reset';\n @Input() displayedOptions: number = 4;\n @Input() propertyText: string = 'Property';\n @Input() showMoreText: string = 'Show more';\n @Input() sortButtonText: string = 'Sort';\n @Input() pd?: string;\n @Input() mg?: string;\n @Input() height?: string;\n @Input() width?: string;\n @Input() bgColor?: string;\n @Input() boxShadow?: string;\n @Input() textColor?: string;\n @Input() primaryColor?: string;\n @Input() secondaryColor?: string;\n @Input() tertiaryColor?: string;\n @Input() border?: string=\"\";\n @Input() borderRadius?: string;\n @Input() selectWidth?: string;\n @Input() containerHeight?:string=\"400px\"\n @Output() selectedOptions = new EventEmitter<IDataFilter[]>();\n @Output() resetSortData = new EventEmitter();\n draggedIndex: number | null = null;\n visibleSortOptions: IDataFilter[]= [];\n hiddenSortOptions: IDataFilter[] = [];\n showMore: boolean = false;\n disableSortButton: boolean = false;\n selectedOrders: Map<number, 'asc' | 'desc'> = new Map();\n defaultSortOptions: IDataFilter[] = [];\n checkAll: boolean = false;\n ngOnInit() {\n this.defaultSortOptions = [...this.sortOptions];\n this.updateVisibleOptions();\n this.updateSortButtonState();\n }\n\n updateVisibleOptions() {\n if (this.sortOptions.length > this.displayedOptions) {\n this.visibleSortOptions = this.sortOptions.slice(\n 0,\n this.displayedOptions\n );\n this.hiddenSortOptions = this.sortOptions.slice(this.displayedOptions);\n this.showMore = true;\n } else {\n this.visibleSortOptions = this.sortOptions;\n this.showMore = false;\n }\n }\n\n toggleShowMore() {\n if (this.showMoreText === 'Show more') {\n this.visibleSortOptions.push(...this.hiddenSortOptions);\n this.showMoreText = 'Show less';\n } else {\n this.updateVisibleOptions();\n this.showMoreText = 'Show more';\n }\n }\n applySort() {\n const selectedSorts = this.sortOptions.filter((option) => option.checked);\n const selectedSortDetails = selectedSorts.map((sort, index) => {\n return {\n name:sort.name,\n type: sort.type || 'String',\n value:\n this.getSortOrder(\n sort.type,\n this.selectedOrders.get(index) || 'asc'\n ) || '',\n checked: sort.checked || false,\n };\n });\n this.selectedOptions.emit(selectedSortDetails);\n return selectedSortDetails;\n }\n getSortOrder(type: DataFilterType, selectedOrder: 'asc' | 'desc') {\n if (type === 'Number') {\n return selectedOrder === 'asc' ? 'asc' : 'desc';\n } else if (type === 'String') {\n return selectedOrder === 'asc' ? 'asc' : 'desc';\n } else if (type === 'Date') {\n return selectedOrder === 'asc' ? 'asc' : 'desc';\n }\n return null;\n }\n\n toggleSort(index: number) {\n const option = this.sortOptions[index];\n option.checked = !option.checked;\n if (!option.checked) {\n this.checkAll = false; \n } else if (this.sortOptions.every(option => option.checked)) {\n this.checkAll = true; \n }\n \n if (option.checked) {\n this.selectedOrders.set(index, 'asc');\n } else {\n this.selectedOrders.delete(index);\n }\n this.updateSortButtonState();\n }\n toggleSelectAll() {\n this.checkAll = !this.checkAll; // Toggle checkAll state\n \n // Set all options to checked/unchecked and assign default sort order when checked\n this.sortOptions.forEach((option, index) => {\n option.checked = this.checkAll;\n \n if (this.checkAll) {\n // If checked, set the default sort order to 'asc' for all\n this.selectedOrders.set(index, 'asc');\n } else {\n // If unchecked, remove the sort order\n this.selectedOrders.delete(index);\n }\n });\n \n this.updateSortButtonState(); // Update the state of the sort button\n }\n \n resetSort() {\n this.sortOptions.forEach((option, index) => {\n option.checked = false;\n this.selectedOrders.delete(index);\n });\n \n this.sortOptions = [...this.defaultSortOptions];\n this.updateVisibleOptions();\n this.updateSortButtonState();\n this.checkAll=false\n this.resetSortData.emit()\n }\n\n updateSortButtonState() {\n this.disableSortButton = this.countSelectedSorts() === 0;\n }\n\n countSelectedSorts(): number {\n return this.sortOptions.filter((option) => option.checked).length;\n }\n\n setSortOrder(index: number, order: 'asc' | 'desc') {\n this.selectedOrders.set(index, order);\n }\n\n onDragStart(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n this.draggedIndex = index;\n event.dataTransfer?.setData('text/plain', String(index));\n }\n\n onDragOver(event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n }\n\n onDrop(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n if (this.draggedIndex !== null) {\n this.swapColumns(this.draggedIndex, index);\n }\n }\n\n swapColumns(fromIndex: number, toIndex: number) {\n if (\n fromIndex < this.visibleSortOptions.length &&\n toIndex < this.visibleSortOptions.length\n ) {\n const temp = this.visibleSortOptions[fromIndex];\n this.visibleSortOptions[fromIndex] = this.visibleSortOptions[toIndex];\n this.visibleSortOptions[toIndex] = temp;\n\n const globalFromIndex = this.sortOptions.indexOf(temp);\n const globalToIndex = this.sortOptions.indexOf(\n this.visibleSortOptions[fromIndex]\n );\n\n if (globalFromIndex !== -1 && globalToIndex !== -1) {\n const tempGlobal = this.sortOptions[globalFromIndex];\n this.sortOptions[globalFromIndex] = this.sortOptions[globalToIndex];\n this.sortOptions[globalToIndex] = tempGlobal;\n }\n }\n this.draggedIndex = null;\n }\n}\n","<div\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n class=\"sort-wrapper\"\n>\n <!-- Header Section -->\n <div class=\"sort-header flex justify-between text-sm\">\n <span class=\"sort-title font-semibold\">\n Sort\n <sup [style.color]=\"secondaryColor\">[{{ countSelectedSorts() }}]</sup>\n </span>\n <span\n [style.color]=\"secondaryColor\"\n [style.font-size]=\"'12px'\"\n class=\"cursor-pointer\"\n (click)=\"resetSort()\"\n >\n {{ resetText }}\n </span>\n </div>\n\n <hr />\n\n <!-- Sort Options (Scrollable Section) -->\n <div class=\"sort-options flex-grow overflow-y-auto my-2\">\n <p class=\"pd\">{{ propertyText }}</p>\n\n <div class=\"flex items-center gap\" [style.padding]=\"'4px 10px'\">\n <label [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">\n <input type=\"checkbox\" [checked]=\"checkAll\" (change)=\"toggleSelectAll()\" />\n Select All\n </label>\n </div>\n\n <div\n *ngFor=\"let option of visibleSortOptions; let i = index\"\n [attr.draggable]=\"enableDragAndDrop\"\n (dragstart)=\"onDragStart(i, $event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(i, $event)\"\n class=\"sort-option\"\n >\n <div [style.font-size]=\"'14px'\" [style.margin-top]=\"'13px'\">\n <div class=\"flex items-center gap-md\">\n <verben-svg\n *ngIf=\"enableDragAndDrop\"\n fill=\"black\"\n [width]=\"25\"\n class=\"svg\"\n icon=\"square-dot\"\n ></verben-svg>\n <div class=\"flex items-center gap\">\n <input\n type=\"checkbox\"\n [checked]=\"option.checked\"\n (change)=\"toggleSort(i)\"\n />\n <span>{{ option.name }}</span>\n </div>\n </div>\n\n <!-- Sorting Controls -->\n <div class=\"flex items-center gap\" [style.margin-left]=\"'35px'\">\n <label\n class=\"flex items-center gap-sm\"\n *ngIf=\"option.type === 'Number'\"\n >\n <input\n type=\"radio\"\n name=\"sortOrder{{ i }}\"\n value=\"asc\"\n [checked]=\"selectedOrders.get(i) === 'asc'\"\n [disabled]=\"!option.checked\"\n (change)=\"setSortOrder(i, 'asc')\"\n />\n 1-100\n </label>\n <label\n class=\"flex items-center gap-sm\"\n *ngIf=\"option.type === 'Number'\"\n >\n <input\n type=\"radio\"\n name=\"sortOrder{{ i }}\"\n value=\"desc\"\n [checked]=\"selectedOrders.get(i) === 'desc'\"\n [disabled]=\"!option.checked\"\n (change)=\"setSortOrder(i, 'desc')\"\n />\n 100-1\n </label>\n <label\n class=\"flex items-center gap-sm\"\n *ngIf=\"option.type === 'String' || option.type === 'Date'\"\n >\n <input\n type=\"radio\"\n name=\"sortOrder{{ i }}\"\n value=\"asc\"\n [checked]=\"selectedOrders.get(i) === 'asc'\"\n [disabled]=\"!option.checked\"\n (change)=\"setSortOrder(i, 'asc')\"\n />\n A-Z\n </label>\n <label\n class=\"flex items-center gap-sm\"\n *ngIf=\"option.type === 'String' || option.type === 'Date'\"\n >\n <input\n type=\"radio\"\n name=\"sortOrder{{ i }}\"\n value=\"desc\"\n [checked]=\"selectedOrders.get(i) === 'desc'\"\n [disabled]=\"!option.checked\"\n (change)=\"setSortOrder(i, 'desc')\"\n />\n Z-A\n </label>\n </div>\n </div>\n </div>\n\n <!-- Show More -->\n <div *ngIf=\"showMore && hiddenSortOptions.length > 0\">\n <span\n [style.padding]=\"'20px 10px 0px 10px'\"\n [style.color]=\"'black'\"\n class=\"cursor-pointer block\"\n (click)=\"toggleShowMore()\"\n >\n {{ showMoreText }}\n </span>\n </div>\n </div>\n\n <hr />\n\n <!-- Sort Button -->\n <div class=\"btn-wrapper mt-2 flex-shrink-0\">\n <button\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\"\n [disabled]=\"countSelectedSorts() === 0\"\n [ngClass]=\"{\n disabledBtn: countSelectedSorts() === 0,\n enableBtn: countSelectedSorts() !== 0\n }\"\n (click)=\"applySort()\"\n >\n {{ sortButtonText }}\n </button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms'\nimport { CommonModule } from '@angular/common';\nimport { SortTableComponent } from './sort-table.component';\nimport { SvgModule } from '../svg/svg.module';\n@NgModule({\n declarations:[SortTableComponent],\n imports: [FormsModule,CommonModule,CommonModule, FormsModule, SvgModule],\n exports: [SortTableComponent]\n})\nexport class SortTableModule {}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { IDataFilter } from '../../models/data-filter';\n\ninterface Item {\n [key: string]: any;\n}\n\n@Component({\n selector: 'verben-visible-column',\n templateUrl: './visible-column.component.html',\n styleUrls: ['./visible-column.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VisibleColumnComponent {\n @Input() columns: IDataFilter[] = [];\n @Input() items: Item[] = [];\n @Input() enableDragAndDrop: boolean = true;\n @Input() displayedColumns: number = 5;\n @Input() showMore: boolean = false;\n @Input() pd?: string;\n @Input() mg?: string;\n @Input() height?: string;\n @Input() width?: string;\n @Input() bgColor?: string;\n @Input() boxShadow?: string;\n @Input() textColor?: string;\n @Input() primaryColor?: string;\n @Input() secondaryColor?: string;\n @Input() tertiaryColor?: string;\n @Input() border?: string;\n @Input() borderRadius?: string;\n @Input() selectWidth?: string;\n @Input() closeColumn?: boolean;\n @Output() columnsUpdated = new EventEmitter<IDataFilter[]>();\n @Output() resetFilter = new EventEmitter();\n originalColumnOrder: IDataFilter[] = [];\n visibleColumns: boolean[] = [];\n draggedIndex: number | null = null;\n selectAll: boolean = false;\n\n ngOnInit() {\n this.originalColumnOrder = [...this.columns];\n this.initializeColumnVisibility();\n }\n\n private initializeColumnVisibility() {\n this.visibleColumns = this.columns.map((column) => column.checked);\n this.updateSelectAllStatus();\n }\n\n resetColumns() {\n \n this.columns = JSON.parse(JSON.stringify(this.originalColumnOrder)); // Ensure it's a deep copy\n this.initializeColumnVisibility();\n this.selectAll = false; // Reset select all\n this.updateSelectAllStatus();\n this.resetFilter.emit()\n }\n\n getSelectedColumnCount(): number {\n return this.visibleColumns.filter((isVisible) => isVisible).length;\n }\n\n saveColumnVisibility() {\n \n this.columns.forEach((column, index) => {\n column.checked = this.visibleColumns[index];\n });\n \n const selectedColumns = this.columns.filter(column => column.checked);\n this.columnsUpdated.emit(selectedColumns);\n }\n\n toggleShowMore() {\n this.showMore = !this.showMore;\n this.displayedColumns = this.showMore ? this.columns.length : 5;\n }\n\n toggleSelectAll() {\n this.selectAll = !this.selectAll;\n this.visibleColumns = this.visibleColumns.map(() => this.selectAll);\n }\n\n updateSelectAllStatus() {\n this.selectAll = this.visibleColumns.every(isVisible => isVisible);\n }\n\n onDragStart(index: number, event: DragEvent) {\n this.draggedIndex = index;\n event.dataTransfer?.setData('text/plain', String(index));\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n\n onDrop(index: number, event: DragEvent) {\n event.preventDefault();\n if (this.draggedIndex !== null && this.draggedIndex !== index) {\n this.swapColumns(this.draggedIndex, index);\n }\n this.draggedIndex = null;\n }\n\n private swapColumns(fromIndex: number, toIndex: number) {\n [this.columns[fromIndex], this.columns[toIndex]] = [this.columns[toIndex], this.columns[fromIndex]];\n [this.visibleColumns[fromIndex], this.visibleColumns[toIndex]] = [this.visibleColumns[toIndex], this.visibleColumns[fromIndex]];\n }\n}\n","<div\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n class=\"column-control\"\n>\n <div class=\"visible-column-header flex justify-between text-sm\">\n <span class=\"column-title\">\n Column <sup>[{{ getSelectedColumnCount() }}]</sup>\n </span>\n <span class=\"column-reset\" (click)=\"resetColumns()\">Reset</span>\n </div>\n <hr />\n\n <!-- Select All Checkbox -->\n <div class=\"flex items-center gap\" [style.padding]=\"'4px 10px'\">\n <label [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">\n <input type=\"checkbox\" [checked]=\"selectAll\" (change)=\"toggleSelectAll()\" />\n Select All\n </label>\n </div>\n\n <div class=\"center\">\n <ul *ngFor=\"let column of columns; let i = index\" class=\"column-options-container\">\n <li\n [attr.draggable]=\"enableDragAndDrop\"\n (dragstart)=\"onDragStart(i, $event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(i, $event)\"\n *ngIf=\"i < displayedColumns\"\n [style.font-size]=\"'14px'\"\n [style.margin-top]=\"'14px'\"\n class=\"flex gap-sm items-center\"\n >\n <verben-svg *ngIf=\"enableDragAndDrop\" fill=\"black\" class=\"svg\" icon=\"square-dot\"></verben-svg>\n <label class=\"flex gap-md items-center\">\n <input type=\"checkbox\" [(ngModel)]=\"visibleColumns[i]\" (ngModelChange)=\"updateSelectAllStatus()\" />\n {{ column.name }}\n </label>\n </li>\n </ul>\n\n <!-- Show More / Show Less -->\n <div *ngIf=\"displayedColumns <= columns.length\" class=\"cursor-pointer\" [style.padding]=\"'20px 10px 0px 10px'\">\n <span (click)=\"toggleShowMore()\">\n {{ displayedColumns === columns.length ? \"Show Less\" : \"Show More\" }}\n </span>\n </div>\n </div>\n\n <hr />\n\n <!-- Save Button -->\n <div class=\"btn-wrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\" \n [disabled]=\"getSelectedColumnCount() === 0\"\n [ngClass]=\"{\n disabledBtn: getSelectedColumnCount() === 0,\n enableBtn: getSelectedColumnCount() !== 0\n }\"\n (click)=\"saveColumnVisibility()\"\n >\n Save\n </button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms'\nimport { CommonModule } from '@angular/common';\nimport { VisibleColumnComponent } from './visible-column.component';\nimport { SvgModule } from '../svg/svg.module';\n@NgModule({\n declarations:[VisibleColumnComponent],\n imports: [CommonModule, FormsModule,SvgModule],\n exports: [VisibleColumnComponent]\n})\nexport class VisibleColumnModule {}\n","// directives/outside-click.directive.ts\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n } from '@angular/core';\n \n @Directive({\n selector: '[appOutSideClick]',\n standalone: true,\n })\n export class OutSideClickDirective implements OnInit, OnDestroy {\n @Input() appOutSideClick!: boolean\n @Output() outSideClick: EventEmitter<void> = new EventEmitter();\n constructor(private element: ElementRef, private renderer: Renderer2) {}\n \n private listener: (() => void) | undefined;\n \n onDocumentClick = (event: Event) => {\n const target=event.target as HTMLElement\n const isInsidePane = target.closest('.cdk-overlay-pane') !== null;\n if (!this.element.nativeElement.parentElement.contains(event.target)&& !isInsidePane) {\n this.outSideClick.emit();\n }\n };\n \n ngOnInit(): void {\n this.listener = this.renderer.listen(\n 'document',\n 'click',\n this.onDocumentClick\n );\n }\n \n ngOnDestroy(): void {\n if (this.listener) {\n this.listener();\n }\n }\n }","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\ninterface ViewState {\n isSearch?: boolean;\n isColumn?: boolean;\n isFilter?: boolean;\n isSort?: boolean;\n isExport?: boolean;\n isSelect?: boolean;\n isCreate?:boolean\n isToggle?:boolean\n isImport?:boolean\n isExtend?:boolean\n}\n\n@Component({\n selector: 'verben-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataViewComponent implements OnInit {\n @Input() buttonClass?: string;\n @Input() iconClass?: string;\n @Input() activeIconClass?: string=\"\"\n @Input() columnCustomClass?:string=''\n @Input() filterCustomClass?:string=''\n @Input() sortCustomClass?:string=''\n @Input() extendCustomClass?:string=''\n @Input() exportCustomClass?:string=''\n @Input() selectCustomClass?:string=''\n @Input() importCustomClass?:string=''\n @Input() zIndex?:number=5\n @Input() createCustomClass:string=''\n @Input() tableIcon: string = 'grid-3';\n @Input() cardIcon: string = 'list-view';\n @Input() cardClass: string = '';\n @Input() tableClass: string = '';\n @Input() searchKey:string='search';\n @Input() searchValue:string='';\n private searchSubject = new Subject<string>();\n @Input() viewState: ViewState = {\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate:true,\n isToggle:true,\n isExtend:true,\n isImport:true\n };\n\n @Input() searchTemplate?: Node;\n @Input() importTemplate?: Node;\n @Input() columnTemplate?: Node;\n @Input() extendTemplate?: Node;\n @Input() filterTemplate?: Node;\n @Input() sortTemplate?: Node;\n @Input() children?: Node;\n @Input() exportTemplate?: Node;\n @Input() createTemplate?: Node;\n @Input() selectedColumnCount?: number = 0;\n @Input() selectedSortCount: number = 0;\n @Input() selectedFilterTableCount: number = 0;\n @Input() inputWidth: string=\"100%\";\n @Input() milliseconds: number=400;\n @Input()showColumnChild: boolean = false;\n @Input() showSortChild: boolean = false;\n @Input() showFilterChild: boolean = false;\n @Input() showImportChild:boolean=false\n @Input() showExportChild: boolean = false;\n @Input() showExtendChild:boolean=false\n @Input() create: boolean = false;\n @Input() showSelected: boolean = false;\n \n @Input() isTableView: boolean = false;\n @Output() viewChange = new EventEmitter<boolean>();\n @Output() stateChange = new EventEmitter<{ key: string; value: boolean }>();\n @Output() onSearchChange=new EventEmitter<{ key: string; value: string }>()\n @ViewChild('filterContentWrapper') filterContentWrapper!: ElementRef;\n\n \n\n \n ngOnInit(): void {}\n constructor(private renderer: Renderer2) {\n this.searchSubject.pipe(debounceTime(this.milliseconds)).subscribe((value) => {\n this.onSearchChange.emit({ key: this.searchKey, value });\n });\n \n }\n \n toggleView(): void {\n this.isTableView = !this.isTableView;\n this.viewChange.emit(this.isTableView);\n }\n\n onSearch(event: any): void {\n this.searchValue = event.target.value;\n this.searchSubject.next(this.searchValue); \n }\nstopPropagation(event:Event) {\n event.stopPropagation(); \n}\n\n \nonClearSearch(){\n this.searchValue=\"\"\n this.onSearchChange.emit({ key: this.searchKey, value: this.searchValue });\n}\n toggleChildView(viewType: string): void {\n switch (viewType) {\n case 'column':\n this.showColumnChild = !this.showColumnChild;\n this.resetChildViewsExcept('column');\n break;\n case 'filter':\n this.showFilterChild = !this.showFilterChild;\n this.resetChildViewsExcept('filter');\n break;\n case 'sort':\n this.showSortChild = !this.showSortChild;\n this.resetChildViewsExcept('sort');\n break;\n case 'select':\n this.showSelected = !this.showSelected;\n this.resetChildViewsExcept('select');\n break;\n case 'export':\n this.showExportChild = !this.showExportChild;\n this.resetChildViewsExcept('export');\n break;\n case 'import':\n this.showImportChild = !this.showImportChild;\n this.resetChildViewsExcept('import');\n break;\n case 'extend':\n this.showExtendChild = !this.showExtendChild;\n this.resetChildViewsExcept('extend');\n break;\n case 'create':\n this.create = !this.create;\n this.resetChildViewsExcept('create');\n break;\n }\n this.stateChange.emit({ key: viewType, value: this.getChildViewState(viewType) });\n \n }\n resetChildViewsExcept(viewType: string): void {\n if (viewType !== 'column') this.showColumnChild = false;\n if (viewType !== 'filter') this.showFilterChild = false;\n if (viewType !== 'sort') this.showSortChild = false;\n if (viewType !== 'select') this.showSelected = false;\n if (viewType !== 'export') this.showExportChild = false;\n if (viewType !== 'import') this.showImportChild = false;\n if (viewType !== 'extend') this.showExtendChild = false;\n if (viewType !== 'create') this.create = false;\n }\n\n // Helper method to get the state of a specific child view\n getChildViewState(viewType: string): boolean {\n switch (viewType) {\n case 'column':\n return this.showColumnChild;\n case 'filter':\n return this.showFilterChild;\n case 'sort':\n return this.showSortChild;\n case 'select':\n return this.showSelected;\n case 'export':\n return this.showExportChild;\n case 'import':\n return this.showImportChild;\n case 'extend':\n return this.showExtendChild;\n case 'create':\n return this.create;\n default:\n return false;\n }\n }\n}\n","<div class=\"toolbar flex gap justify-between items-center \">\n <div class=\"flex items-center gap flex-1 justify-end\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg\n [icon]=\"'search2'\"\n [width]=\"20\"\n [height]=\"20\"\n ></verben-svg>\n <input\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n<div class=\"relative flex items-center gap-2\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"resetChildViewsExcept('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"showColumnChild\" select=\"[column-content]\">\n </ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"resetChildViewsExcept('filter')\"\n *ngIf=\"viewState.isFilter\"\n (click)=\"stopPropagation($event)\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div (click)=\"stopPropagation($event)\" [style.z-index]=\"zIndex\" class=\"data-view-element\">\n\n <ng-content *ngIf=\"showFilterChild\" select=\"[filter-content]\"></ng-content>\n \n \n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"resetChildViewsExcept('import')\"\n *ngIf=\"viewState.isImport\"\n (click)=\"stopPropagation($event)\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n importCustomClass ? importCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span\n >Import</span\n >\n </span>\n <div (click)=\"stopPropagation($event)\" [style.z-index]=\"zIndex\" class=\"data-view-element\">\n\n <ng-content *ngIf=\"showImportChild\" select=\"[import-content]\"></ng-content>\n \n \n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"resetChildViewsExcept('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n<!--Extend Section-->\n<ng-container\n[appOutSideClick]=\"showExtendChild\"\n(outSideClick)=\"resetChildViewsExcept('extend')\"\n*ngIf=\"viewState.isExtend\"\n(click)=\"stopPropagation($event)\"\n>\n<ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n<ng-template #defaultExtend>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n importCustomClass ? extendCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span\n >Extend</span\n >\n </span>\n <div (click)=\"stopPropagation($event)\" [style.z-index]=\"zIndex\" class=\"data-view-element\">\n\n <ng-content *ngIf=\"showImportChild\" select=\"[extend-content]\"></ng-content>\n \n \n </div>\n</ng-template>\n</ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"resetChildViewsExcept('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"resetChildViewsExcept('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n</div>\n \n \n <div>\n <ng-container *ngIf=\"children; else defaultChildren\"></ng-container>\n <ng-template #defaultChildren>\n <div>\n <ng-content select=\"[children]\"></ng-content>\n </div>\n </ng-template>\n </div>\n \n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n \n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[libColumn]',\n})\nexport class ColumnDirective {\n @Input('libColumn') columnId!: string;\n\n @ContentChild('cell', { static: true }) cellTemplate?: TemplateRef<any>;\n @ContentChild('cellEdit', { static: true })\n cellEditTemplate?: TemplateRef<any>;\n @ContentChild('header', { static: true }) headerTemplate?: TemplateRef<any>;\n @ContentChild('footer', { static: true }) footerTemplate?: TemplateRef<any>;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n EventEmitter,\n input,\n Input,\n Output,\n Signal,\n signal,\n} from '@angular/core';\nimport {\n ColumnDefinition,\n DataWithKey,\n FormGroupConfig,\n GroupedDataRow,\n} from './data-table.types';\nimport { ColumnDirective } from './column.directive';\nimport { TableStyles } from './style.types';\nimport { AbstractControl, FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'lib-data-table',\n templateUrl: './data-table.component.html',\n styleUrl: './data-table.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableComponent<T> {\n // Modify data input to use grouped data\n data = input.required<T[]>();\n columns = input.required<ColumnDefinition<T>[]>();\n dataKey = input<keyof T>(); // New required input for unique identifier\n formGroupConfig = input<\n FormGroupConfig<{\n [K in keyof T]: AbstractControl;\n }>\n >();\n\n groupBy = input<keyof T | ((row: T) => any)>();\n useVirtualScroll = input<boolean>(false);\n virtualScrollItemSize = input<number>(48);\n\n @Input() styleConfig: TableStyles = defaultTableStyles;\n\n columnTemplates = contentChildren(ColumnDirective);\n\n @Output() rowEdit = new EventEmitter<T>();\n @Output() rowSave = new EventEmitter<{\n index: number;\n key: number | string;\n data: Partial<T>;\n }>();\n @Output() rowRevert = new EventEmitter<{\n index: number;\n key: number | string;\n data: T;\n }>();\n @Output() rowDelete = new EventEmitter<T>();\n @Output() selectionChange = new EventEmitter<T[]>();\n\n /** Internally maintained data, with guaranteed uniqueness due to key property */\n tableData: Signal<DataWithKey<T>[]>;\n\n private editingRowsSignal = signal<Set<string | number>>(new Set());\n private selectedRowsSignal = signal<Set<string | number>>(new Set());\n // private editedDataSignal = signal<Map<string | number, EditedData<T>>>(\n // new Map()\n // );\n private unEditedDataSignal = signal<Map<string | number, T>>(new Map());\n private formGroupsSignal = signal<Map<string | number, FormGroup>>(new Map());\n\n // columnsSignal = computed(() => this.columns());\n\n displayColumns: Signal<ColumnDefinition<T>[]>;\n\n constructor() {\n this.displayColumns = computed(() => {\n return this.columns().map((column) => {\n const matchingTemplate = this.columnTemplates().find(\n (t) => t.columnId === column.id\n );\n if (matchingTemplate) {\n console.log('Found matching template:', matchingTemplate);\n return {\n ...column,\n cellTemplate: matchingTemplate.cellTemplate ?? column.cellTemplate,\n cellEditTemplate:\n matchingTemplate.cellEditTemplate ?? column.cellEditTemplate,\n headerTemplate:\n matchingTemplate.headerTemplate ?? column.headerTemplate,\n footerTemplate:\n matchingTemplate.footerTemplate ?? column.footerTemplate,\n };\n }\n return column;\n });\n });\n\n this.tableData = computed(() => {\n return this.data().map((item, index) => {\n let key;\n const dataKey = this._getRowIdByDataKey(item);\n if (dataKey) {\n key = dataKey;\n } else {\n key = index as DataWithKey<T>['_key'];\n }\n return {\n originalData: item,\n _key: key,\n _key_prop: this.dataKey() ?? '_index',\n };\n });\n });\n }\n\n hasFooter = computed(() =>\n this.displayColumns().some((col) => col.footerTemplate !== undefined)\n );\n\n // Helper method to get unique identifier for a row\n private _getRowIdByDataKey(row: T): string | number | undefined {\n const key = this.dataKey();\n if (key) {\n const value = row[key];\n\n // Convert to string or number if possible, otherwise stringify\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n return JSON.stringify(value);\n }\n return;\n }\n\n // Type guard method to check for group rows\n isGroupRow(row: T): row is T & { isGroupRow: true; groupTitle: any } {\n return !!(row as any).isGroupRow;\n }\n\n trackByRowKey(index: number, row: any) {\n return row._key;\n }\n\n // Computed property for grouped data\n\n groupedData = computed(() => {\n if (!this.groupBy()) return this.tableData() as GroupedDataRow<T>[];\n\n const getGroupValue =\n typeof this.groupBy() === 'function'\n ? (this.groupBy() as (row: T) => any)\n : (row: T) => row[this.groupBy() as keyof T];\n\n const groups = new Map<any, DataWithKey<T>[]>();\n\n this.tableData().forEach((row) => {\n if (getGroupValue !== undefined) {\n const groupValue = getGroupValue(row.originalData);\n const existingGroup = groups.get(groupValue) || [];\n groups.set(groupValue, [...existingGroup, row]);\n }\n });\n\n const groupedDataArray: GroupedDataRow<T>[] = [];\n\n groups.forEach((groupRows, groupValue) => {\n // Create group header row\n const groupRow: GroupedDataRow<T> = {\n ...({} as DataWithKey<T>), // Create empty object of type T as base\n _key: `group-${groupValue}`,\n isGroupRow: true,\n groupValue,\n groupTitle: groupValue,\n };\n\n groupedDataArray.push(groupRow);\n // Add regular rows with the optional isGroupRow property (undefined by default)\n groupedDataArray.push(...(groupRows as GroupedDataRow<T>[]));\n });\n\n return groupedDataArray;\n });\n\n getCellValue = (row: T, column: ColumnDefinition<T>): any => {\n // For group rows, return the group title if it exists\n if (this.isGroupRow(row)) {\n return (row as any).groupTitle;\n }\n\n // Existing logic for normal rows\n if (column.accessorKey) {\n return row[column.accessorKey];\n }\n return column.accessorFn ? column.accessorFn(row) : undefined;\n };\n\n public isRowEditing = (rowKey: DataWithKey<T>['_key']): boolean => {\n return this.editingRowsSignal().has(rowKey);\n };\n\n public toggleRowEdit = (rowId: DataWithKey<T>['_key']) => {\n let data: DataWithKey<T> | undefined = undefined;\n let index: number = -1;\n\n this.tableData().forEach((datum, i) => {\n if (datum._key === rowId) {\n data = datum;\n index = i;\n }\n });\n\n if (data !== undefined && index >= 0) {\n this.toggleRowEditInternal(data, index);\n }\n };\n\n private toggleRowEditInternal = (row: DataWithKey<T>, index: number) => {\n this.editingRowsSignal.update((set) => {\n const newSet = new Set(set);\n if (newSet.has(row._key)) {\n newSet.delete(row._key);\n this.saveRow(row._key, index);\n } else {\n newSet.add(row._key);\n this.initializeEditedData(row);\n }\n return newSet;\n });\n };\n\n private initializeEditedData(row: DataWithKey<T>) {\n const rowId = row._key;\n this.unEditedDataSignal.update((map) => {\n const newMap = new Map(map);\n newMap.set(rowId, { ...row.originalData });\n return newMap;\n });\n const formGroupConfig = this.formGroupConfig();\n if (formGroupConfig) {\n const formGroup = new FormGroup(\n formGroupConfig.controls,\n formGroupConfig.validatorOrOpts,\n formGroupConfig.asyncValidator\n );\n formGroup.patchValue(row.originalData as any);\n this.formGroupsSignal.update((map) => {\n const newMap = new Map(map);\n newMap.set(rowId, formGroup);\n return newMap;\n });\n }\n }\n\n private saveRow(rowId: string | number, rowIndex: number) {\n const editedForm = this.formGroupsSignal().get(rowId);\n const unEditedData = this.unEditedDataSignal().get(rowId);\n\n // if (editedData) {\n // const originalRow = this.tableData().find((row) => row._key === rowId);\n // if (originalRow) {\n // const updatedRow = { ...originalRow, ...editedData };\n // this.rowSave.emit(updatedRow);\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // newMap.delete(rowId);\n // return newMap;\n // });\n // }\n // }\n\n // console.log(this.formGroupConfig());\n // console.log(editedForm);\n // console.log(unEditedData);\n\n if (editedForm) {\n editedForm.markAsPristine();\n editedForm.markAsUntouched();\n this.formGroupsSignal.update((map) => {\n const newMap = new Map(map);\n newMap.delete(rowId);\n return newMap;\n });\n this.rowSave.emit({\n index: rowIndex,\n key: rowId,\n data: editedForm.value,\n });\n }\n\n if (unEditedData) {\n this.unEditedDataSignal.update((map) => {\n const newMap = new Map(map);\n newMap.delete(rowId);\n return newMap;\n });\n this.rowRevert.emit({\n index: rowIndex,\n key: rowId,\n data: unEditedData,\n });\n }\n }\n\n private isRowSelected = (rowId: string | number): boolean => {\n return this.selectedRowsSignal().has(rowId);\n };\n\n private toggleRowSelection = (rowId: string | number) => {\n this.selectedRowsSignal.update((set) => {\n const newSet = new Set(set);\n if (newSet.has(rowId)) {\n newSet.delete(rowId);\n } else {\n newSet.add(rowId);\n }\n this.emitSelectionChange();\n return newSet;\n });\n };\n\n private allRowsSelected = (): boolean => {\n const nonGroupRows = this.data().filter((row) => !this.isGroupRow(row));\n return (\n nonGroupRows.length > 0 &&\n this.selectedRowsSignal().size === nonGroupRows.length\n );\n };\n\n private someRowsSelected = (): boolean => {\n const nonGroupRows = this.data().filter((row) => !this.isGroupRow(row));\n return (\n this.selectedRowsSignal().size > 0 &&\n this.selectedRowsSignal().size < nonGroupRows.length\n );\n };\n\n private toggleAllRows = () => {\n if (this.allRowsSelected()) {\n this.selectedRowsSignal.set(new Set());\n } else {\n const nonGroupRows = this.tableData().filter(\n (row) => !this.isGroupRow(row.originalData)\n );\n this.selectedRowsSignal.set(new Set(nonGroupRows.map((row) => row._key)));\n }\n this.emitSelectionChange();\n };\n\n private emitSelectionChange() {\n const selectedRows = this.tableData().filter((row) =>\n this.selectedRowsSignal().has(row._key)\n );\n this.selectionChange.emit(\n selectedRows.map(({ originalData }) => originalData)\n );\n }\n\n getHeaderContext(column: ColumnDefinition<T>) {\n return {\n $implicit: column,\n column,\n allRowsSelected: this.allRowsSelected,\n someRowsSelected: this.someRowsSelected,\n toggleAllRows: this.toggleAllRows,\n };\n }\n\n updateEditedValue(\n rowId: string | number,\n column: ColumnDefinition<T>,\n value: any\n ) {\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // const rowData = newMap.get(rowId) || ({} as EditedData<T>);\n // if (column.accessorKey) {\n // newMap.set(rowId, { ...rowData, [column.accessorKey]: value });\n // } else {\n // console.warn(\n // 'Cannot update value for column without accessorKey:',\n // column.id\n // );\n // }\n // return newMap;\n // });\n }\n\n updateEditedValueFn(\n rowId: string | number,\n valueFn: (value: any) => T,\n value: any\n ) {\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // const rowData = newMap.get(rowId) || ({} as EditedData<T>);\n // newMap.set(rowId, { ...rowData, ...valueFn(value) });\n // return newMap;\n // });\n }\n\n updateEditedData(rowId: string | number, data: Partial<T>) {\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // const rowData = newMap.get(rowId) || ({} as EditedData<T>);\n // newMap.set(rowId, { ...rowData, ...data });\n // return newMap;\n // });\n }\n\n updateNestedEditedValue(\n rowId: string | number,\n column: ColumnDefinition<T>,\n nestedField: string,\n value: any\n ) {\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // const rowData = newMap.get(rowId) || ({} as EditedData<T>);\n // if (column.accessorKey) {\n // const columnData = (rowData[column.accessorKey] as any) || {};\n // newMap.set(rowId, {\n // ...rowData,\n // [column.accessorKey]: {\n // ...columnData,\n // [nestedField]: value,\n // },\n // });\n // } else {\n // console.warn(\n // 'Cannot update nested value for column without accessorKey:',\n // column.id\n // );\n // }\n // return newMap;\n // });\n }\n\n getCellContext(\n row: DataWithKey<T>,\n column: ColumnDefinition<T>,\n rowIndex: number\n ) {\n const rowId = row._key;\n const isEditing = this.isRowEditing(row._key);\n // const editedData = this.editedDataSignal().get(rowId);\n const editedForm = this.formGroupsSignal().get(rowId);\n const formControl = editedForm?.get(column.formControlName || '');\n\n let value: any;\n if (isEditing) {\n if (formControl) {\n value = formControl.value;\n } else {\n value = this.getCellValue(row.originalData, column);\n }\n // else if (editedData) {\n // if (column.accessorKey && column.accessorKey in editedData) {\n // // If column has an accessorKey and it exists in edited data, use that\n // value = editedData[column.accessorKey];\n // } else if (column.accessorFn) {\n // // If column has an accessorFn, apply it to the edited data\n // value = column.accessorFn({ ...row, ...editedData });\n // } else {\n // // Fallback to getting the value from the original row\n // value = this.getCellValue(row, column);\n // }\n // }\n } else {\n value = this.getCellValue(row.originalData, column);\n }\n\n return {\n $implicit: value,\n value,\n row: row.originalData,\n column,\n rowIndex,\n rowId,\n isEditing,\n formControl,\n isSelected: this.isRowSelected(rowId),\n toggleRowSelection: () => this.toggleRowSelection(rowId),\n toggleRowEdit: () => this.toggleRowEditInternal(row, rowIndex),\n deleteRow: () => this.deleteRow(rowId),\n updateValue: (newValue: any) =>\n this.updateEditedValue(rowId, column, newValue),\n updateNestedValue: (nestedField: string, newValue: any) =>\n this.updateNestedEditedValue(rowId, column, nestedField, newValue),\n updateValueFn: (valueFn: (value: any) => T, newValue: any) =>\n this.updateEditedValueFn(rowId, valueFn, newValue),\n updateData: (newData: Partial<T>) =>\n this.updateEditedData(rowId, newData),\n };\n }\n\n deleteRow = (rowId: string | number) => {\n const rowToDelete = this.tableData().find((row) => row._key === rowId);\n if (rowToDelete) {\n this.rowDelete.emit(rowToDelete.originalData);\n }\n };\n\n getFooterContext(column: ColumnDefinition<T>) {\n return {\n $implicit: column,\n column,\n data: this.data,\n };\n }\n\n getTableStyle(): any {\n return {\n ...this.styleConfig,\n fontFamily: this.styleConfig.fontFamily,\n fontSize: this.styleConfig.fontSize,\n whiteSpace: this.styleConfig.whiteSpace,\n margin: this.styleConfig.margin,\n border: this.styleConfig.border,\n borderCollapse: this.styleConfig.borderCollapse,\n borderSpacing: this.styleConfig.borderSpacing,\n tableLayout: this.styleConfig.tableLayout,\n width: this.styleConfig.width,\n };\n }\n\n getHeaderStyle(): any {\n return {\n ...this.styleConfig.header,\n position: this.styleConfig.header?.stickyTop ? 'sticky' : 'static',\n top: this.styleConfig.header?.stickyTop ? '0' : 'auto',\n zIndex: this.styleConfig.header?.zIndex || 'auto',\n };\n }\n\n getFooterStyle(): any {\n return {\n ...this.styleConfig.footer,\n position: this.styleConfig.footer?.stickyBottom ? 'sticky' : 'static',\n bottom: this.styleConfig.footer?.stickyBottom ? '0' : 'auto',\n zIndex: this.styleConfig.footer?.zIndex || 'auto',\n };\n }\n\n getRowStyle(rowIndex: number): any {\n const rowStyles = this.styleConfig.rows;\n if (rowStyles && 'even' in rowStyles && 'odd' in rowStyles) {\n return rowIndex % 2 === 0 ? rowStyles.even : rowStyles.odd;\n } else if (rowStyles && 'nth' in rowStyles && rowStyles.nth) {\n const { interval, style } = rowStyles.nth;\n return (rowIndex + 1) % (interval || 1) === 0 ? style : {};\n } else {\n return rowStyles || {};\n }\n }\n\n getCellStyle(rowIndex: number, colIndex: number): any {\n const isFirstColumn = colIndex === 0;\n const isLastColumn = colIndex === this.displayColumns().length - 1;\n\n let cellStyle = { ...this.styleConfig.cells };\n\n if (isFirstColumn) {\n cellStyle = {\n ...cellStyle,\n ...this.styleConfig.firstColumn,\n position: this.styleConfig.firstColumn?.stickyLeft\n ? 'sticky'\n : 'static',\n left: this.styleConfig.firstColumn?.stickyLeft ? '0' : 'auto',\n zIndex: this.styleConfig.firstColumn?.zIndex || 'auto',\n };\n } else if (isLastColumn) {\n cellStyle = {\n ...cellStyle,\n ...this.styleConfig.lastColumn,\n position: this.styleConfig.lastColumn?.stickyRight\n ? 'sticky'\n : 'static',\n right: this.styleConfig.lastColumn?.stickyRight ? '0' : 'auto',\n zIndex: this.styleConfig.lastColumn?.zIndex || 'auto',\n };\n }\n\n if (rowIndex >= 0) {\n // Apply body styles to all cells\n cellStyle = { ...cellStyle, ...this.styleConfig.body };\n } else {\n cellStyle = { ...this.styleConfig.header };\n }\n\n return cellStyle;\n }\n}\n\n// Default styles\nconst defaultTableStyles: TableStyles = {\n border: '1px solid #e0e0e0',\n borderRadius: '4px',\n overflow: 'hidden',\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\n width: '100%',\n header: {\n backgroundColor: '#f5f5f5',\n fontWeight: 'bold',\n color: '#333',\n textAlign: 'left',\n padding: '12px 16px',\n borderBottom: '2px solid #e0e0e0',\n },\n rows: {\n even: {\n backgroundColor: '#ffffff',\n },\n odd: {\n backgroundColor: '#f9f9f9',\n },\n nth: {\n interval: 5,\n style: {\n backgroundColor: '#f0f0f0',\n },\n },\n },\n cells: {\n padding: '12px 16px',\n borderBottom: '1px solid #e0e0e0',\n },\n footer: {\n backgroundColor: '#f5f5f5',\n fontWeight: 'bold',\n color: '#333',\n textAlign: 'left',\n padding: '12px 16px',\n borderTop: '2px solid #e0e0e0',\n },\n};\n","@if (useVirtualScroll()) {\n<cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"virtual-scroll-viewport\"\n [style.height.px]=\"virtualScrollItemSize() * 10\"\n>\n <table [ngStyle]=\"getTableStyle()\">\n <thead>\n <!-- <tr [ngStyle]=\"getHeaderStyle()\">\n <th colspan=\"2\" scope=\"colgroup\">Group 1</th>\n <th colspan=\"1\" scope=\"colgroup\">Group 2</th>\n </tr> -->\n\n <tr [ngStyle]=\"getHeaderStyle()\">\n @for (column of displayColumns(); track column.id) {\n <th [ngStyle]=\"getCellStyle(-1, $index)\">\n @if (column.headerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"getHeaderContext(column)\"\n ></ng-container>\n } @else {\n {{ column.header }}\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <tr\n *cdkVirtualFor=\"\n let row of tableData();\n trackBy: trackByRowKey;\n let rowIndex = index\n \"\n [ngStyle]=\"getRowStyle(rowIndex)\"\n >\n @for (column of displayColumns(); track column.id; let colIndex =\n $index) {\n <td [ngStyle]=\"getCellStyle(rowIndex, colIndex)\">\n @if (isRowEditing(row._key) && column.cellEditTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellEditTemplate\"\n [ngTemplateOutletContext]=\"getCellContext(row, column, rowIndex)\"\n ></ng-container>\n } @else if (column.cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"getCellContext(row, column, rowIndex)\"\n ></ng-container>\n } @else {\n {{ getCellValue(row.originalData, column) }}\n }\n </td>\n }\n </tr>\n </tbody>\n\n @if (hasFooter()) {\n <tfoot>\n <tr [ngStyle]=\"getFooterStyle()\">\n @for (column of displayColumns(); track column.id) {\n <td [ngStyle]=\"getCellStyle(-1, $index)\">\n @if (column.footerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.footerTemplate\"\n [ngTemplateOutletContext]=\"getFooterContext(column)\"\n ></ng-container>\n }\n </td>\n }\n </tr>\n </tfoot>\n\n }\n </table>\n</cdk-virtual-scroll-viewport>\n} @else {\n<table [ngStyle]=\"getTableStyle()\">\n <thead>\n <!-- <tr [ngStyle]=\"getHeaderStyle()\">\n <th colspan=\"2\" scope=\"colgroup\">Group 1</th>\n <th colspan=\"1\" scope=\"colgroup\">Group 2</th>\n </tr> -->\n\n <tr [ngStyle]=\"getHeaderStyle()\">\n @for (column of displayColumns(); track column.id) {\n <th [ngStyle]=\"getCellStyle(-1, $index)\">\n @if (column.headerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"getHeaderContext(column)\"\n ></ng-container>\n } @else {\n {{ column.header }}\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of tableData(); track row._key; let rowIndex = $index) { @if\n (isGroupRow(row.originalData)) {\n <tr class=\"group-row\" [ngStyle]=\"getRowStyle(rowIndex)\">\n <td\n [attr.colspan]=\"displayColumns().length\"\n [ngStyle]=\"getCellStyle(rowIndex, 0)\"\n >\n {{ getCellValue(row.originalData, displayColumns()[0]) }}\n </td>\n </tr>\n } @else {\n <tr [ngStyle]=\"getRowStyle(rowIndex)\">\n @for (column of displayColumns(); track column.id; let colIndex = $index)\n {\n <td [ngStyle]=\"getCellStyle(rowIndex, colIndex)\">\n @if (isRowEditing(row._key) && column.cellEditTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellEditTemplate\"\n [ngTemplateOutletContext]=\"getCellContext(row, column, rowIndex)\"\n ></ng-container>\n } @else if (column.cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"getCellContext(row, column, rowIndex)\"\n ></ng-container>\n } @else {\n {{ getCellValue(row.originalData, column) }}\n }\n </td>\n }\n </tr>\n } }\n </tbody>\n\n @if (hasFooter()) {\n <tfoot>\n <tr [ngStyle]=\"getFooterStyle()\">\n @for (column of displayColumns(); track column.id) {\n <td [ngStyle]=\"getCellStyle(-1, $index)\">\n @if (column.footerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.footerTemplate\"\n [ngTemplateOutletContext]=\"getFooterContext(column)\"\n ></ng-container>\n }\n </td>\n }\n </tr>\n </tfoot>\n\n }\n</table>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ColumnDirective } from './column.directive';\nimport { DataTableComponent } from './data-table.component';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [DataTableComponent, ColumnDirective],\n imports: [CommonModule, ScrollingModule],\n exports: [DataTableComponent, ColumnDirective],\n})\nexport class DataTableModule {}\n","import { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n HostListener,\n ElementRef,\n Renderer2,\n AfterViewChecked,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'verben-pop-Up',\n templateUrl: './pop-up.component.html',\n styleUrls: ['./pop-up.component.css'],\n})\nexport class VerbenPopUpComponent implements AfterViewChecked {\n @Input() dropdownOpen: boolean = false;\n @Output() dropdownOpenChange: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n @Input() dropdownWidth: string = '';\n @Input() color: string = 'black';\n @Input() customStyles: { [key: string]: string } = {};\n @Input() popUpClass: string = '';\n @Input() border: string = '';\n @Input() borderRadius: string = '';\n @Input() enableMouseLeave: boolean = true;\n @Input() cdkPosition: any[] | null = null;\n @Output() close: EventEmitter<Event> = new EventEmitter();\n @ViewChild('expansion', { static: false })\n expansion!: ElementRef;\n scrollStrategy: ScrollStrategy;\n defaultPositions = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ];\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private overlay: Overlay\n ) {\n this.scrollStrategy = this.overlay.scrollStrategies.reposition();\n }\n\n toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n this.dropdownOpenChange.emit(this.dropdownOpen);\n\n // if (this.dropdownOpen) {\n // this.setDropdownPosition();\n // }\n }\n\n onMouseOut() {\n if (this.enableMouseLeave) {\n this.close.emit();\n this.dropdownOpen = false;\n this.dropdownOpenChange.emit(this.dropdownOpen);\n }\n }\n\n onClose() {\n this.close.emit();\n }\n\n get dropdownStyles() {\n return {\n width: this.dropdownWidth,\n border: this.border,\n borderRadius: this.borderRadius,\n };\n }\n\n get yourStyles() {\n return {\n ...this.customStyles,\n };\n }\n\n @HostListener('document:click', ['$event.target'])\n onClickOutside(targetElement: HTMLElement) {\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n const isInsidePane = targetElement.closest('.cdk-overlay-pane') !== null;\n if (\n !clickedInside &&\n this.dropdownOpen &&\n this.expansion &&\n !this.expansion.nativeElement.contains(targetElement) &&\n !isInsidePane\n ) {\n this.dropdownOpen = false;\n this.dropdownOpenChange.emit(this.dropdownOpen);\n }\n }\n\n // private setDropdownPosition(): void {\n // const dropdown = this.elementRef.nativeElement.querySelector('.dropdown-menu');\n // const dropdownRect = dropdown.getBoundingClientRect();\n // const parentRect = this.elementRef.nativeElement.getBoundingClientRect();\n // const viewportHeight = window.innerHeight;\n // const viewportWidth = window.innerWidth;\n\n // console.log('Dropdown Rect:', dropdownRect);\n // console.log('Parent Rect:', parentRect);\n // console.log('Viewport:', { width: viewportWidth, height: viewportHeight });\n\n // // Check vertical space\n // if (viewportHeight - parentRect.bottom < dropdownRect.height) {\n // // Position above\n // this.renderer.setStyle(dropdown, 'top', 'auto');\n // this.renderer.setStyle(dropdown, 'bottom', `${parentRect.height}px`);\n // } else {\n // // Position below\n // this.renderer.setStyle(dropdown, 'top', `${parentRect.height}px`);\n // this.renderer.setStyle(dropdown, 'bottom', 'auto');\n // }\n\n // // Check horizontal space\n // if (parentRect.left + dropdownRect.width > viewportWidth) {\n // // Position to the left\n // this.renderer.setStyle(dropdown, 'left', 'auto');\n // this.renderer.setStyle(dropdown, 'right', '0');\n // } else if (parentRect.right - dropdownRect.width < 0) {\n // // Position to the right\n // this.renderer.setStyle(dropdown, 'left', '0');\n // this.renderer.setStyle(dropdown, 'right', 'auto');\n // } else {\n // // Default alignment\n // this.renderer.setStyle(dropdown, 'left', '0');\n // this.renderer.setStyle(dropdown, 'right', 'auto');\n // }\n // }\n\n ngAfterViewChecked() {\n // if (this.dropdownOpen) {\n // this.setDropdownPosition();\n // }\n }\n\n private setDropdownPosition(): void {\n const dropdown = this.elementRef.nativeElement.querySelector(\n '.dropdown-container > div'\n );\n // const triggerElement = this.elementRef.nativeElement.querySelector('dropdown-menu')\n\n if (!dropdown) {\n console.warn('Dropdown element not found.');\n return;\n }\n\n const dropdownRect = dropdown.getBoundingClientRect();\n const parentRect = this.elementRef.nativeElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n\n console.log('Dropdown Rect:', dropdownRect);\n console.log('Parent Rect:', parentRect);\n console.log('Viewport:', { width: viewportWidth, height: viewportHeight });\n\n // Vertical Positioning\n if (viewportHeight - parentRect.bottom < dropdownRect.height) {\n // Not enough space below, position above\n console.log('not enough space below');\n const topPosition = parentRect.top - dropdownRect.height;\n console.log('top pos:', topPosition);\n this.renderer.setStyle(dropdown, 'top', `auto`);\n this.renderer.setStyle(dropdown, 'bottom', '15px');\n } else {\n // Enough space below, position below\n console.log('Enough space below');\n const topPosition = parentRect.bottom;\n this.renderer.setStyle(dropdown, 'top', `20px`);\n this.renderer.setStyle(dropdown, 'bottom', 'auto');\n }\n\n // Horizontal Positioning\n if (parentRect.left + dropdownRect.width > viewportWidth) {\n console.log('not Enough space right');\n const leftPosition = viewportWidth - dropdownRect.width - 10;\n this.renderer.setStyle(dropdown, 'left', `auto`);\n // this.renderer.setStyle(dropdown, 'left', `${Math.max(leftPosition, 0)}px`);\n this.renderer.setStyle(dropdown, 'right', '10px');\n } else {\n console.log('Enough space right');\n const leftPosition = parentRect.left;\n this.renderer.setStyle(dropdown, 'left', `${10}px`);\n this.renderer.setStyle(dropdown, 'right', 'auto');\n }\n }\n}\n","<span class=\"relative dropdown-container\" [ngStyle]=\"dropdownStyles\">\n <span\n (click)=\"toggleDropdown()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"dropdown-menu\"\n >\n <ng-content select=\"[dropdown-trigger]\"></ng-content>\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayLockPosition]=\"false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayPositions]=\"\n cdkPosition ? cdkPosition : defaultPositions\n \"\n [cdkConnectedOverlayOpen]=\"dropdownOpen\"\n (detach)=\"dropdownOpen = false\"\n >\n <div\n #expansion\n (mouseleave)=\"onMouseOut()\"\n [attr.aria-hidden]=\"!dropdownOpen\"\n class=\"{{ popUpClass }}\"\n [ngStyle]=\"yourStyles\"\n >\n <ng-content select=\"[dropdown-content]\"></ng-content>\n </div>\n </ng-template>\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenPopUpComponent } from './pop-up.component';\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [VerbenPopUpComponent],\n imports: [CommonModule, SharedModule],\n exports: [VerbenPopUpComponent],\n})\nexport class VerbenPopUpModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataViewComponent } from './data-view.component';\nimport { CardDataViewModule } from '../card-data-view/card-data-view.module';\n\nimport { SvgModule } from '../svg/svg.module';\nimport { DataTableModule } from '../data-table/data-table.module';\nimport { OutSideClickDirective } from './data-view-click-outside.directive';\nimport {VerbenaInputModule} from \"../../Verbena-input/verbena-input.module\"\nimport {VerbenaButtonModule} from \"../../verbena-button/verbena-button.module\"\nimport {VisibleColumnModule} from \"../../components/visible-column/visible-column.module\"\nimport { VerbenPopUpModule } from '../pop-up/pop-up.module';\n@NgModule({\n declarations:[DataViewComponent],\n imports: [CommonModule,CardDataViewModule,DataTableModule,SvgModule,VerbenaInputModule,VerbenaButtonModule,OutSideClickDirective,VisibleColumnModule, VerbenPopUpModule],\n exports: [DataViewComponent]\n})\nexport class DataViewModule {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DropdownChangeEvent } from '../drop-down/DropdownChangeEvent';\n\n@Component({\n selector: 'app-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.css'],\n})\nexport class DatePickerComponent {\n @Input() placeholder = 'Select date';\n @Input() format = 'MM/DD/YYYY';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() bgColor?: string='#fff'\n @Input() border?: string=''\n @Input() useDropdowns: boolean = true;\n @Input() yearPlaceholder: string = 'Select a year';\n @Input() monthPlaceholder: string = 'Select a month';\n @Input() date: Date | null|string = null; // Two-way binding support\n @Output() dateChange = new EventEmitter<Date>(); // Emit date changes\n yearRange: number[] = [];\n filteredYearRange: number[] = [];\n selectedDate: Date = new Date();\n tempSelectedDate: Date = new Date();\n showCalendar = false;\n\n weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat','Sun'];\n months = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n ];\n\n\n \n selectedMonth: number = 1;\n selectedMonthString:string=''\n selectedYear: number = new Date().getFullYear();\n\n ngOnChanges() {\n if (this.date) {\n const parsedDate = typeof this.date === 'string' ? new Date(this.date) : this.date;\n this.selectedDate = new Date(parsedDate);\n this.tempSelectedDate = new Date(parsedDate);\n this.selectedMonth = this.selectedDate.getMonth();\n this.selectedYear = this.selectedDate.getFullYear();\n }\n }\n ngOnInit() {\n const currentYear = new Date().getFullYear();\n const endYear = currentYear + 10;\n this.yearRange = Array.from({ length: endYear - 1960 + 1 }, (_, i) => 1960 + i);\n this.yearRange.sort((a, b) => b - a);\n }\n get displayDate(): string {\n const parsedDate = typeof this.date === 'string' ? new Date(this.date) : this.date;\n return parsedDate ? this.formatDate(parsedDate, this.format) : '';\n }\n \n\n toggleCalendar() {\n this.showCalendar = !this.showCalendar;\n this.tempSelectedDate = new Date(this.date || new Date());\n this.selectedMonth = this.tempSelectedDate.getMonth();\n this.selectedMonthString=this.months[this.selectedMonth]\n this.selectedYear = this.tempSelectedDate.getFullYear();\n }\n\n previousMonth() {\n this.selectedMonth--;\n if (this.selectedMonth < 0) {\n this.selectedMonth = 11;\n this.selectedYear--;\n }\n this.updateTempSelectedDate();\n }\n\n nextMonth() {\n this.selectedMonth++;\n if (this.selectedMonth > 11) {\n this.selectedMonth = 0;\n this.selectedYear++;\n }\n this.updateTempSelectedDate();\n }\n\n onDropdownYearChange(event: DropdownChangeEvent): void {\n this.selectedYear = event.value;\n this.updateTempSelectedDate();\n }\n\n onDropdownMonthChange(event: DropdownChangeEvent): void {\n \n this.selectedMonth = this.months.indexOf(event.value)\n this.updateTempSelectedDate();\n }\n\n updateTempSelectedDate() {\n this.tempSelectedDate.setMonth(this.selectedMonth);\n this.tempSelectedDate.setFullYear(this.selectedYear);\n }\n\n getDaysInMonth(): (Date | null)[] {\n const days: (Date | null)[] = [];\n const year = this.selectedYear;\n const month = this.selectedMonth;\n \n const firstDayOfMonth = new Date(year, month, 1).getDay();\n const offset = (firstDayOfMonth === 0 ? 6 : firstDayOfMonth - 1); \n \n for (let i = 0; i < offset; i++) {\n days.push(null);\n }\n \n const totalDays = new Date(year, month + 1, 0).getDate(); \n \n // Add the actual days of the month\n for (let i = 1; i <= totalDays; i++) {\n days.push(new Date(year, month, i));\n }\n \n return days;\n }\n \n \n\n selectTemporaryDate(day: Date) {\n this.tempSelectedDate = day;\n }\n\n isSelected(day: Date): boolean {\n return (\n day.getDate() === this.tempSelectedDate.getDate() &&\n day.getMonth() === this.tempSelectedDate.getMonth() &&\n day.getFullYear() === this.tempSelectedDate.getFullYear()\n );\n }\n\n formatDate(date: Date, format: string): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n\n switch (format) {\n case 'DD/MM/YYYY':\n return `${day}/${month}/${year}`;\n case 'MM/DD/YYYY':\n default:\n return `${month}/${day}/${year}`;\n }\n }\n\n confirm() {\n this.tempSelectedDate.setHours(12, 0, 0, 0);\n this.selectedDate = new Date(this.tempSelectedDate);\n this.dateChange.emit(this.selectedDate);\n this.showCalendar = false;\n }\n\n cancel() {\n this.showCalendar = false;\n }\n \n \n}\n","<div class=\"date-picker\">\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"displayDate\"\n (click)=\"toggleCalendar()\"\n class=\"w-full block\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"border\"\n readonly\n />\n\n <div *ngIf=\"showCalendar\" [appOutSideClick]=\"showCalendar\" (outSideClick)=\"showCalendar=false\" class=\"calendar\">\n <div class=\"calendar-header\">\n <ng-container *ngIf=\"!useDropdowns; else dropdowns\">\n <button (click)=\"previousMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-left'\"></verben-svg>\n </button>\n <span>{{ months[selectedMonth] }} {{ selectedYear }}</span>\n <button (click)=\"nextMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-right'\"></verben-svg>\n </button>\n </ng-container>\n\n <ng-template #dropdowns>\n <verben-drop-down\n \n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n \n [(ngModel)]=\"selectedYear\"\n ></verben-drop-down>\n\n <verben-drop-down\n [placeholder]=\"monthPlaceholder\"\n (onChange)=\"onDropdownMonthChange($event)\"\n [options]=\"months\"\n [(ngModel)]=\"selectedMonthString\"\n ></verben-drop-down>\n </ng-template>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <span *ngFor=\"let day of weekDays\">{{ day }}</span>\n </div>\n <div class=\"dates\">\n <ng-container *ngFor=\"let day of getDaysInMonth()\">\n <button\n *ngIf=\"day; else empty\"\n [class.selected]=\"isSelected(day)\"\n (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span> <!-- or use a styled placeholder -->\n </ng-template>\n </ng-container>\n </div>\n</div>\n\n\n <div class=\"calendar-footer\">\n <button (click)=\"cancel()\">Cancel</button>\n <button (click)=\"confirm()\">OK</button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms'\nimport { CommonModule } from '@angular/common';\nimport { DatePickerComponent } from './date-picker.component';\nimport { SvgModule } from \"../svg/svg.module\";\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { VerbenPopUpModule } from '../pop-up/pop-up.module';\nimport { OutSideClickDirective } from '../data-view/data-view-click-outside.directive';\n@NgModule({\n declarations:[DatePickerComponent],\n imports: [FormsModule, CommonModule, SvgModule,DropDownModule, VerbenPopUpModule,OutSideClickDirective],\n exports: [DatePickerComponent]\n})\nexport class DatePickerModule {}\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[appPhoneNumber]'\n})\nexport class PhoneNumberDirective {\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event): void {\n let inputValue = (event.target as HTMLInputElement).value;\n const numericValue = this.formatToNumeric(inputValue);\n this.renderer.setProperty(this.el.nativeElement, 'value', numericValue);\n console.log(`Formatted phone number: ${numericValue}`);\n }\n\n private formatToNumeric(value: string): string {\n // Remove all non-numeric characters except leading zeros\n return value.replace(/[^0-9]/g, '');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PhoneNumberDirective } from './phone-number.directive';\n\n@NgModule({\n declarations: [PhoneNumberDirective],\n imports: [CommonModule],\n exports: [PhoneNumberDirective]\n})\nexport class PhoneNumberModule {}\n","import { Directive, ElementRef, Renderer2, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[validateInput]'\n})\nexport class ValidateInputDirective {\n // Directive logic here\n}\n","import { NgModule } from '@angular/core';\nimport { ValidateInputDirective } from './validate-input.directive';\n\n@NgModule({\n declarations: [ValidateInputDirective],\n exports: [ValidateInputDirective]\n})\nexport class ValidateInputModule {}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[appNumberRange]'\n})\nexport class NumberRangeDirective {\n @Input() maxNumber!: number;\n @Input() minNumber!: number;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const numberValue = parseFloat(value);\n let borderStyle = 'none';\n\n if (isNaN(numberValue)) {\n borderStyle = 'none';\n } else if (this.maxNumber !== undefined && numberValue > this.maxNumber) {\n borderStyle = '1px solid red';\n } else if (this.minNumber !== undefined && numberValue < this.minNumber) {\n borderStyle = '1px solid red';\n }\n\n this.renderer.setStyle(this.el.nativeElement, 'border', borderStyle);\n }\n}\n\n\n\n// <input type=\"number\" appNumberRange [maxNumber]=\"10\">\n// <input type=\"number\" appNumberRange [minNumber]=\"5\">\n// <input type=\"number\" appNumberRange [maxNumber]=\"10\" [minNumber]=\"5\">\n\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NumberRangeDirective } from './number-range.directive';\n\n@NgModule({\n declarations: [NumberRangeDirective],\n imports: [CommonModule],\n exports: [NumberRangeDirective]\n})\nexport class NumberRangeModule {}\n\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[requiredInput]'\n})\nexport class RequiredInputDirective {\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input') onInput() {\n const value = this.el.nativeElement.value.trim();\n if (value === '') {\n this.renderer.setStyle(this.el.nativeElement, 'border', '2px solid red');\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'border', 'none');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RequiredInputDirective } from './required-input.directive';\n\n@NgModule({\n declarations: [RequiredInputDirective],\n exports: [RequiredInputDirective]\n}) \nexport class RequiredInputModule {}\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[validateEmail]'\n})\nexport class EmailValidatorDirective {\n\n private emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n if (!this.emailRegex.test(value)) {\n this.renderer.setStyle(this.el.nativeElement, 'border', '2px solid red');\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'border', 'none');\n }\n }\n}\n\n// import { MaxNumberModule } from 'verbena-ui-peace22/max-number';\n// import { MinNumberModule } from 'verbena-ui-peace22/min-number';\n// import { RequiredInputModule } from 'verbena-ui-peace22/required-input';\n// import { EmailValidatorModule } from 'verbena-ui-peace22/email-validator';\n","import { NgModule } from '@angular/core';\nimport { EmailValidatorDirective } from './email-validator.directive';\n\n@NgModule({\n declarations: [EmailValidatorDirective],\n exports: [EmailValidatorDirective]\n})\nexport class EmailValidatorModule {}\n\n\n// import { MaxNumberModule } from 'verbena-ui-peace22/max-number';\n// import { MinNumberModule } from 'verbena-ui-peace22/min-number';\n// import { RequiredInputModule } from 'verbena-ui-peace22/required-input';\n// import { EmailValidatorModule } from 'verbena-ui-peace22/email-validator';\n","import { TemplateRef } from '@angular/core';\nimport {\n AbstractControl,\n AbstractControlOptions,\n AsyncValidatorFn,\n FormControl,\n ValidatorFn,\n} from '@angular/forms';\n\nexport interface ColumnDefinition<T> {\n id: string;\n header: string | ((context: any) => any);\n accessorKey?: keyof T;\n accessorFn?: (row: T) => any;\n cellTemplate?: TemplateRef<any>;\n cellEditTemplate?: TemplateRef<any>;\n headerTemplate?: TemplateRef<any>;\n footerTemplate?: TemplateRef<any>;\n sortAction?: 'ASC' | 'DESC';\n formControlName?: string;\n groupName?: string;\n validatorFn?: (value: T[keyof T]) => boolean;\n importKey?: keyof T;\n}\n\n// Define a type that extends T with a _key property\nexport type DataWithKey<T> = {\n _key: string | number;\n _key_prop: keyof T | '_index';\n originalData: T;\n};\n\nexport type GroupedDataRow<T> = DataWithKey<T> & {\n isGroupRow?: boolean;\n groupValue?: any;\n groupTitle?: any;\n};\n\nexport type FormControlOf<T> = {\n [K in keyof T]?: FormControl;\n};\n\nexport interface FormGroupConfig<\n TControl extends { [key: string]: AbstractControl }\n> {\n controls: TControl;\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null;\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null;\n}\n\nexport type EditedData<T> = {\n [K in keyof T]?: T[K] extends object ? Partial<T[K]> : T[K];\n};\n\n// ====================================\n\n// export type ColumnDefinitionBase<T> = {\n// id: string;\n// header: string | ((context: any) => any);\n// cellTemplate?: TemplateRef<any>;\n// cellEditTemplate?: TemplateRef<any>;\n// headerTemplate?: TemplateRef<any>;\n// footerTemplate?: TemplateRef<any>;\n// sortAction?: 'ASC' | 'DESC';\n// formControlName?: string;\n// groupName?: string;\n// };\n\n// // Helper type to create a column definition with a specific accessor key\n// export type ColumnDefinitionWithKey<\n// T,\n// K extends keyof T\n// > = ColumnDefinitionBase<T> & {\n// accessorKey: K;\n// accessorFn?: never;\n// validatorFn?: (value: T[K]) => boolean;\n// };\n\n// export type ColumnDefinitionWithFn<T, R = any> = ColumnDefinitionBase<T> & {\n// accessorKey?: never;\n// accessorFn: (row: T) => R;\n// validatorFn?: (value: R) => boolean;\n// };\n\n// export type ColumnDefinitionWithNeither<T> = ColumnDefinitionBase<T> & {\n// accessorKey?: never;\n// accessorFn?: never;\n// validatorFn?: never;\n// };\n\n// // Union type that represents all possible column definition variants\n// export type ColumnDefinition<T> =\n// | { [K in keyof T]: ColumnDefinitionWithKey<T, K> }[keyof T]\n// | ColumnDefinitionWithFn<T>\n// | ColumnDefinitionWithNeither<T>;\n","export type ExportItemType = 'property' | 'operation';\n\nexport interface ExportItem {\n id: string;\n name: string;\n type: ExportItemType;\n}\n\nexport interface ExportProfile {\n id: string;\n name: string;\n items: ExportItem[];\n}\n\nexport interface Operation {\n id: string;\n name: string;\n field1: string;\n operator: Operators;\n field2: string;\n}\n\nexport enum Operators {\n add = 'add',\n subtract = 'subtract',\n multiply = 'multiply',\n divide = 'divide',\n concatenateSpace = 'concatenateSpace',\n concatenateCommaSpace = 'concatenateCommaSpace',\n concatenateComma = 'concatenateComma',\n}\n","import { Injectable } from '@angular/core';\nimport {\n ExportProfile,\n Operation,\n ExportItem,\n ExportItemType,\n Operators,\n} from './data-export.types';\n\n@Injectable()\nexport class DataExportService {\n private profiles: ExportProfile[] = [];\n private operations: Operation[] = [];\n private baseProperties: string[] = [];\n\n constructor() {\n this.initializeDefaultProfile();\n }\n\n private initializeDefaultProfile() {\n this.profiles = [\n {\n id: 'default',\n name: 'All',\n items: this.baseProperties.map((prop) => ({\n id: prop,\n name: prop,\n type: 'property' as ExportItemType,\n })),\n },\n ];\n }\n\n addProfile(profile: ExportProfile): void {\n this.profiles.push(profile);\n }\n\n getProfiles(): ExportProfile[] {\n return this.profiles;\n }\n\n updateProfile(id: string, updatedProfile: ExportProfile): void {\n const index = this.profiles.findIndex((p) => p.id === id);\n if (index !== -1) {\n this.profiles[index] = updatedProfile;\n }\n }\n\n removeProfile(id: string): void {\n this.profiles = this.profiles.filter((p) => p.id !== id);\n }\n\n addOperation(operation: Operation): void {\n this.operations.unshift(operation);\n this.updateDefaultProfile();\n }\n\n getOperations(): Operation[] {\n return this.operations;\n }\n\n updateOperation(id: string, updatedOperation: Operation): void {\n const index = this.operations.findIndex((o) => o.id === id);\n if (index !== -1) {\n this.operations[index] = updatedOperation;\n this.updateDefaultProfile();\n }\n }\n\n removeOperation(id: string): void {\n this.operations = this.operations.filter((o) => o.id !== id);\n this.updateDefaultProfile();\n // Remove operation from all profiles\n this.profiles.forEach((profile) => {\n profile.items = profile.items.filter((item) => item.id !== id);\n });\n }\n\n resetAll(): void {\n this.operations = [];\n this.baseProperties = [];\n this.initializeDefaultProfile();\n }\n\n getAllItems(): ExportItem[] {\n return [\n ...this.operations.map((op) => ({\n id: op.id,\n name: op.name,\n type: 'operation' as ExportItemType,\n })),\n ...this.baseProperties.map((prop) => ({\n id: prop,\n name: prop,\n type: 'property' as ExportItemType,\n })),\n ];\n }\n\n getBaseProperties(): string[] {\n return this.baseProperties;\n }\n\n setBaseProperties(properties: string[]): void {\n this.baseProperties = properties;\n this.updateDefaultProfile();\n }\n\n private updateDefaultProfile(): void {\n this.profiles[0].items = this.getAllItems();\n }\n\n exportData<T>(\n data: T[],\n selectedProfiles: ExportProfile[]\n ): Record<string, any>[] {\n const uniqueItems = new Set<ExportItem>();\n selectedProfiles.forEach((profile) => {\n profile.items.forEach((item) => uniqueItems.add(item));\n });\n\n return data.map((item) => {\n const exportedItem: Record<string, any> = {};\n uniqueItems.forEach((exportItem) => {\n if (exportItem.type === 'property') {\n exportedItem[exportItem.id] = (item as any)[exportItem.id];\n } else {\n const operation = this.operations.find((o) => o.id === exportItem.id);\n if (operation) {\n exportedItem[exportItem.id] = this.calculateOperation(\n item,\n operation\n );\n }\n }\n });\n return exportedItem;\n });\n }\n\n private calculateOperation<T>(\n item: T,\n operation: Operation\n ): number | string {\n const value1 = Number((item as any)[operation.field1]);\n const value2 = Number((item as any)[operation.field2]);\n switch (operation.operator) {\n case Operators.add:\n return value1 + value2;\n case Operators.subtract:\n return value1 - value2;\n case Operators.multiply:\n return value1 * value2;\n case Operators.divide:\n return value2 !== 0 ? value1 / value2 : NaN;\n case Operators.concatenateSpace:\n return `${value1} ${value2}`;\n case Operators.concatenateCommaSpace:\n return `${value1}, ${value2}`;\n case Operators.concatenateComma:\n return `${value1},${value2}`;\n default:\n return NaN;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DataExportService } from './data-export.service';\nimport {\n ExportItem,\n ExportProfile,\n Operation,\n Operators,\n} from './data-export.types';\nimport { ColumnDefinition } from '../data-table/data-table.types';\n\n@Component({\n selector: 'lib-data-export',\n templateUrl: './data-export.component.html',\n styleUrl: './data-export.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataExportComponent<T extends { id: string | number }> {\n @Input() columns!: ColumnDefinition<T>;\n @Input() data!: any[];\n @Output() exportDataEvent = new EventEmitter<Record<string, any>[]>();\n\n profiles: (ExportProfile & { selected: boolean })[] = [];\n groupItems: (ExportItem & { selected: boolean })[] = [];\n newGroupForm: FormGroup;\n newOperation: Operation = {\n id: '',\n name: '',\n field1: '',\n operator: Operators.add,\n field2: '',\n };\n numericProperties: string[] = [];\n stringProperties: string[] = [];\n isEditingOperation: boolean = false;\n showAllProfiles: boolean = false;\n showAllGroups: boolean = false;\n\n operatorsNumeric: Operators[] = [\n Operators.add,\n Operators.subtract,\n Operators.multiply,\n Operators.divide,\n ];\n operatorsString: Operators[] = [\n Operators.concatenateSpace,\n Operators.concatenateCommaSpace,\n Operators.concatenateComma,\n ];\n\n constructor(\n private exportService: DataExportService,\n private fb: FormBuilder\n ) {\n this.newGroupForm = this.fb.group({\n name: ['', Validators.required],\n });\n }\n\n ngOnInit() {\n this.initializeGroupItems();\n this.updateProfiles();\n }\n\n ngOnChanges() {\n if (this.data) {\n this.initializeGroupItems();\n }\n }\n\n get visibleProfiles() {\n return this.showAllProfiles ? this.profiles : this.profiles.slice(0, 3);\n }\n\n get visibleGroups() {\n return this.showAllGroups ? this.groupItems : this.groupItems.slice(0, 3);\n }\n\n initializeGroupItems() {\n if (this.data && this.data.length > 0) {\n const properties = Object.keys(this.data[0]).filter((k) => k !== 'id');\n this.exportService.setBaseProperties(properties);\n this.numericProperties = properties.filter(\n (prop) => typeof this.data[0][prop] === 'number'\n );\n this.stringProperties = properties.filter(\n (prop) => typeof this.data[0][prop] === 'string'\n );\n this.updateGroupItems();\n }\n }\n\n updateProfiles() {\n this.profiles = this.exportService.getProfiles().map((profile) => ({\n ...profile,\n selected: false,\n }));\n }\n\n updateGroupItems() {\n this.groupItems = this.exportService.getAllItems().map((item) => ({\n ...item,\n selected: false,\n }));\n }\n\n addGroup() {\n console.log('in');\n if (this.newGroupForm.valid) {\n const selectedItems = this.groupItems.filter((item) => item.selected);\n if (selectedItems.length > 0) {\n const newProfile: ExportProfile = {\n id: Date.now().toString(),\n name: this.newGroupForm.get('name')?.value,\n items: selectedItems,\n };\n this.exportService.addProfile(newProfile);\n this.updateProfiles();\n this.groupItems.forEach((item) => (item.selected = false));\n this.newGroupForm.reset();\n console.log('SELECTED');\n }\n console.log('VALID');\n }\n }\n\n editProfile(profile: ExportProfile & { selected: boolean }) {\n this.groupItems.forEach((item) => {\n item.selected = profile.items.some(\n (profileItem) => profileItem.id === item.id\n );\n });\n this.removeProfile(profile);\n }\n\n removeProfile(profile: ExportProfile & { selected: boolean }) {\n this.exportService.removeProfile(profile.id);\n this.updateProfiles();\n }\n\n addOrUpdateOperation() {\n if (\n this.newOperation.name &&\n this.newOperation.field1 &&\n this.newOperation.field2\n ) {\n if (this.isEditingOperation) {\n this.exportService.updateOperation(\n this.newOperation.id,\n this.newOperation\n );\n } else {\n const operation: Operation = {\n ...this.newOperation,\n id: Date.now().toString(),\n };\n this.exportService.addOperation(operation);\n }\n this.updateGroupItems();\n this.resetOperationForm();\n }\n }\n\n editOperation(operation: ExportItem & { selected: boolean }) {\n this.newOperation = { ...(operation as unknown as Operation) };\n this.isEditingOperation = true;\n }\n\n removeOperation(operation: ExportItem & { selected: boolean }) {\n this.exportService.removeOperation(operation.id);\n this.updateGroupItems();\n }\n\n resetOperationForm() {\n this.newOperation = {\n id: '',\n name: '',\n field1: '',\n operator: Operators.add,\n field2: '',\n };\n this.isEditingOperation = false;\n }\n\n resetAll() {\n this.exportService.resetAll();\n this.initializeGroupItems();\n this.updateProfiles();\n this.resetOperationForm();\n this.newGroupForm.reset();\n }\n\n exportData() {\n const selectedProfiles = this.profiles.filter(\n (profile) => profile.selected\n );\n if (selectedProfiles.length > 0) {\n const exportedData = this.exportService.exportData(\n this.data,\n selectedProfiles\n );\n this.exportDataEvent.emit(exportedData);\n } else {\n console.log('No profiles selected for export');\n }\n }\n\n onField1Change() {\n this.newOperation.field2 = '';\n this.newOperation.operator = this.isNumericField(this.newOperation.field1)\n ? Operators.add\n : Operators.concatenateSpace;\n }\n\n isNumericField(field: string): boolean {\n return this.numericProperties.includes(field);\n }\n\n get availableOperators(): Operators[] {\n return this.isNumericField(this.newOperation.field1)\n ? this.operatorsNumeric\n : this.operatorsString;\n }\n\n get availableFields2(): string[] {\n return this.isNumericField(this.newOperation.field1)\n ? this.numericProperties\n : this.stringProperties;\n }\n\n toggleShowAllProfiles() {\n this.showAllProfiles = !this.showAllProfiles;\n }\n\n toggleShowAllGroups() {\n this.showAllGroups = !this.showAllGroups;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center justify-between\">\n <button\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n fontSize=\"11px\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n <div class=\"operation-grid\">\n <verben-drop-down\n width=\"'8rem'\"\n height=\"'1.25rem'\"\n placeholder=\"Select field\"\n [options]=\"numericProperties.concat(stringProperties)\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n height=\"'1.25rem'\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n [(ngModel)]=\"newOperation.operator\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button ml-auto\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"exportData()\">Export</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataExportService } from './data-export.service';\nimport { DataExportComponent } from './data-export.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\n\n@NgModule({\n declarations: [DataExportComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n ],\n providers: [DataExportService],\n exports: [DataExportComponent],\n})\nexport class DataExportModule {}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { read, utils, writeFile } from 'xlsx';\nimport { ColumnDefinition } from '../data-table/data-table.types';\n\n@Injectable()\nexport class DataImportService<T> {\n importedData: WritableSignal<T[]> = signal([]);\n\n constructor() {}\n\n // Function to transform imported data to match your model structure\n transformImportData<T>(\n importedData: Record<string, any>[],\n columnDefinitions: ColumnDefinition<T>[]\n ): Partial<T>[] {\n // Create a mapping from header to importKey\n const headerToImportKeyMap = new Map<string, keyof T>();\n\n // Filter column definitions to only those with importKey and populate the map\n columnDefinitions\n .filter((col) => col.importKey)\n .forEach((col) => {\n const header =\n typeof col.header === 'string'\n ? col.header\n : col.header({}).toString();\n headerToImportKeyMap.set(header, col.importKey as keyof T);\n });\n\n // Transform each row in the imported data\n return importedData.map((row) => {\n const transformedRow: Partial<T> = {};\n\n // Process each key in the row\n Object.entries(row).forEach(([key, value]) => {\n // Find the corresponding import key for this header/key\n const importKey = headerToImportKeyMap.get(key);\n\n // Only add the field if there's a matching import key\n if (importKey) {\n transformedRow[importKey] = value;\n }\n });\n\n return transformedRow;\n });\n }\n\n handleImport(\n file: File,\n // previewer?: (data: any[]) => void,\n columnDefinitions: ColumnDefinition<T>[],\n parseImport?: (data: any) => Partial<T>[]\n ) {\n const reader = new FileReader();\n reader.onload = (event: any) => {\n // const wb = read(event.target.result, {\n // type: 'string',\n // raw: true,\n // cellText: true,\n // cellFormula: false,\n // cellNF: false,\n // });\n console.time('Begin');\n let imported: any[] = [];\n const wb = read(event.target.result, { raw: true });\n const sheets = wb.SheetNames;\n if (sheets.length) {\n const rows = utils.sheet_to_json(wb.Sheets[sheets[0]], {\n raw: false,\n // defval: '',\n // rawNumbers: true,\n // dateNF: 'dd/mm/yyyy',\n });\n if (parseImport) {\n imported = parseImport(rows);\n } else {\n imported = rows as any[];\n }\n // previewer(imported);\n }\n // console.log('Imported data:', JSON.stringify(imported, null, 2));\n // console.time('Start Process');\n this.importedData.set(\n this.transformImportData(imported, columnDefinitions) as T[]\n );\n console.timeEnd('Begin');\n return imported;\n };\n return reader.readAsArrayBuffer(file);\n }\n\n handleTemplateExport(fields: string[], title: string) {\n console.log(fields);\n const wb = utils.book_new();\n const ws: any = utils.json_to_sheet([]);\n utils.sheet_add_aoa(ws, [fields]);\n // utils.sheet_add_json(ws, this._data, { origin: 'A2', skipHeader: true });\n utils.book_append_sheet(wb, ws, title);\n writeFile(wb, title + '-template.' + 'xlsx');\n }\n\n addRow(event: { index: number; key: string | number; data: Partial<T> }) {\n // console.log(event);\n this.importedData.update((dat) => {\n // dat[event.index] = { ...dat[event.index], ...event.data };\n return dat.map((d, i) => {\n if (i === event.index) {\n return { ...d, ...event.data };\n }\n return d;\n });\n });\n // console.log(this.importedData());\n }\n\n isDuplicate(datum: Partial<T>, array: Partial<T>[], identifiers: string[]) {\n return (\n array.filter(\n (dat) =>\n identifiers.length > 0 &&\n identifiers.every(\n (identifier) =>\n datum[identifier as keyof T] &&\n datum[identifier as keyof T] === dat[identifier as keyof T]\n )\n ).length > 1\n );\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n HostListener,\n TemplateRef,\n} from '@angular/core';\n\n@Component({\n selector: 'verben-dialogue',\n templateUrl: './verben-dialogue.component.html',\n styleUrls: ['./verben-dialogue.component.css'],\n})\nexport class VerbenDialogueComponent {\n @Input() dialogueWidth: string = '';\n @Input() headerTemplate: TemplateRef<any> | null = null;\n @Input() bodyTemplate: TemplateRef<any> | null = null;\n @Input() footerTemplate: TemplateRef<any> | null = null;\n @Input() showCloseIcon: boolean = true;\n @Input() dismissOutsideClick: boolean = true;\n @Input() closeOnEscape: boolean = true;\n @Input() isVisible: boolean = false;\n @Input() size: 'small' | 'medium' | 'large'|'any' = 'small';\n @Input() backdropColor: string = '#0000005d';\n @Input() customClass: string = '';\n @Input() disableFooter: boolean = false;\n @Input() margin: string = '';\n @Input() padding: string = '10px';\n @Input() borderRadius: string = '10px';\n @Input() dialogueBgColor: string = '#fff';\n @Input() width: string = 'max-w-[100px]';\n @Input() closeIconClass: string = 'closeIconClass';\n @Input() boxShadow: string = 'box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1)';\n @Input() enableTransition: boolean = true;\n @Input() modalData: any;\n\n // New inputs for drawer mode\n @Input() mode: 'dialogue' | 'drawer' = 'dialogue';\n @Input() position: 'left' | 'right' = 'right';\n @Input() drawerWidth: string = '500px';\n @Output() openModal = new EventEmitter<any>();\n @Output() closeModal = new EventEmitter<any>();\n\n ngOnChanges() {\n if (this.isVisible) {\n this.openModal.emit(this.modalData);\n }\n }\n \n\n @HostListener('document:keydown.escape', ['$event'])\n onKeydownHandler(event: KeyboardEvent) {\n if (this.closeOnEscape && this.isVisible) {\n this.onClose();\n }\n }\n\n @HostListener('document:click', ['$event'])\n onOutsideClick(event: MouseEvent) {\n if (this.dismissOutsideClick && this.isVisible) {\n const target = event.target as HTMLElement;\n const isInsidePane = target.closest('.cdk-overlay-pane') !== null;\n if (target.classList.contains('modal-wrapper')&& !isInsidePane) {\n this.onClose();\n }\n }\n }\n setStyles() {\n const isDialogue = this.mode === 'dialogue';\n const noCustomWidth = !this.dialogueWidth;\n \n return {\n 'modal-content p-4': isDialogue,\n 'max-w-sm': isDialogue && this.size === 'small' && noCustomWidth,\n 'max-w-md': isDialogue && this.size === 'medium' && noCustomWidth,\n 'max-w-lg': isDialogue && this.size === 'large' && noCustomWidth,\n 'drawer-left': this.mode === 'drawer' && this.position === 'left',\n 'drawer-right': this.mode === 'drawer' && this.position === 'right',\n 'drawer-show-left': this.mode === 'drawer' && this.position === 'left' && this.isVisible,\n 'drawer-show-right': this.mode === 'drawer' && this.position === 'right' && this.isVisible\n };\n }\n \n \n onClose() {\n this.isVisible = false;\n this.closeModal.emit(this.modalData);\n }\n}\n","<div class=\"modal-wrapper fixed inset-0 flex justify-center items-center\" [ngClass]=\"{\n 'visible opacity-100': isVisible,\n 'invisible opacity-0': !isVisible,\n 'justify-start': mode === 'drawer' && position === 'left',\n 'justify-end': mode === 'drawer' && position === 'right'\n }\" [ngStyle]=\"{ 'background-color': backdropColor, 'transition': 'opacity 0.3s ease' }\">\n <div\n [style.padding]=\"padding\"\n [style.margin]=\"margin\"\n [style.background-color]=\"dialogueBgColor\"\n [style.border-radius]=\"mode === 'dialogue' && borderRadius\"\n [style.box-shadow]=\"boxShadow\"\n [style.width]=\"mode === 'dialogue' ? dialogueWidth :drawerWidth\"\n [class]=\"customClass\"\n [ngClass]=\"setStyles()\"\n>\n <!-- Close Icon -->\n <verben-svg *ngIf=\"showCloseIcon\" [class]=\"closeIconClass\" (click)=\"onClose()\" icon=\"close\" [width]=\"20\"\n [height]=\"20\" fill=\"white\" stroke=\"#000\"></verben-svg>\n\n <!-- Modal Header -->\n <div class=\"modal-header text-lg font-semibold mb-4\">\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Body -->\n <div class=\"modal-body mb-4\">\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Footer -->\n <div *ngIf=\"!disableFooter\" class=\"modal-footer flex justify-end space-x-2\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n ColumnDefinition,\n FormGroupConfig,\n} from '../data-table/data-table.types';\nimport {\n AbstractControl,\n FormArray,\n FormControl,\n FormGroup,\n} from '@angular/forms';\nimport { ColumnDirective } from '../data-table/column.directive';\nimport { DataImportService } from './data-import.service';\n\n@Component({\n selector: 'lib-data-import',\n templateUrl: './data-import.component.html',\n styleUrl: './data-import.component.css',\n providers: [DataImportService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataImportComponent<T extends {}> {\n previewColumns = input.required<ColumnDefinition<T>[]>();\n formGroupConfig = input<\n FormGroupConfig<{\n [K in keyof T]: AbstractControl;\n }>\n >();\n /**\n * @deprecated Use importKey of previewColumns instead\n */\n fields = input<string[]>();\n title = input<string>('export-template');\n columnTemplates = input<readonly ColumnDirective[]>([]);\n parser = input<(data: any) => Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n previewData = input<T[]>();\n /**\n * Pass the method to use the imported data,\n * and eventually returns true if successfully used\n */\n onImportComplete = input<(data: Partial<T>[]) => Promise<boolean>>();\n /**\n * @deprecated Please remove, now handled internally\n */\n exportTemplateEvent = output<string[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n importEvent = output<File>();\n /**\n * @deprecated Use the onImportComplete input instead\n */\n importEventData = output<Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n rowSave = output<{\n index: number;\n key: number | string;\n data: Partial<T>;\n }>();\n\n // data: Signal<(T & { isDuplicate: boolean })[]>;\n previewColumnsList: Signal<ColumnDefinition<T>[]>;\n forms = new FormArray<FormGroup>([]);\n uniqueIdentifiers: WritableSignal<string[]> = signal([]);\n // duplicateDataMap: Map<string, number> = new Map();\n duplicateIndexSet = new Set<number>();\n invalidIndexSet = new Map<number, ColumnDirective['columnId'][]>();\n\n headers: Signal<string[]>;\n\n private _ext: 'xlsx' | 'xls' | 'csv' = 'xlsx';\n\n files: File[] = [];\n isDragging = false;\n showPreview = false;\n\n constructor(public service: DataImportService<T>) {\n effect(() => {\n // const columns = this.previewColumnsList();\n\n const identifiers = this.uniqueIdentifiers();\n\n this.service.importedData()?.forEach((d, i, arr) => {\n if (service.isDuplicate(d, arr, identifiers)) {\n this.duplicateIndexSet.add(i);\n }\n\n // columns\n // .filter(({ validatorFn }) => validatorFn !== undefined)\n // .forEach((column) => {\n // const invalidFields = Object.entries(d).reduce<string[]>(\n // (f, [k, v], i) => {\n // if (\n // column.validatorFn &&\n // !column.validatorFn(v as T[keyof T])\n // ) {\n // f.push(column.id);\n // }\n // return f;\n // },\n // []\n // );\n\n // if (invalidFields.length > 0) {\n // this.invalidIndexSet.set(i, invalidFields);\n // }\n // });\n });\n });\n\n this.previewColumnsList = computed(() => {\n return this.previewColumns()\n .filter((col) => col.importKey || col.formControlName)\n .map((column) => {\n const matchingTemplate = this.columnTemplates().find(\n (t) => t.columnId === column.id\n );\n if (matchingTemplate) {\n return {\n ...column,\n // accessorKey: column.importKey,\n cellTemplate: matchingTemplate.cellTemplate,\n cellEditTemplate: matchingTemplate.cellEditTemplate,\n headerTemplate: matchingTemplate.headerTemplate,\n footerTemplate: matchingTemplate.footerTemplate,\n };\n }\n return column;\n })\n .concat([\n {\n id: 'actions',\n header: 'Actions',\n },\n ]);\n });\n\n this.headers = computed(() => {\n return (\n this.fields() ??\n this.previewColumnsList()\n .filter((col) => col.importKey)\n .map((col) => col.header.toString())\n );\n });\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n this.isDragging = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n this.files = Array.from(event.dataTransfer!.files);\n\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n onFileSelected(event: any) {\n this.files = Array.from(event.target.files);\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n reset() {\n this.files = [];\n }\n\n save() {\n // console.log('PREVDATA', this.service.importedData());\n const onComplete = this.onImportComplete();\n if (onComplete) {\n onComplete(this.service.importedData()).then((success) => {\n if (success) {\n this.showPreview = false;\n }\n });\n } else {\n this.importEventData.emit(this.service.importedData() || []);\n this.showPreview = false;\n }\n }\n\n getControlNames() {\n const controls = this.formGroupConfig()?.controls;\n if (controls) {\n return Object.keys(controls);\n }\n return [];\n }\n\n handleTemplateExport() {\n this.service.handleTemplateExport(this.headers(), this.title());\n // this.exportTemplateEvent.emit(this.headers());\n }\n\n // getFormControl(index: number, field: string) {\n // const control = this..get(index)?.get(field) as FormControl<any>;\n // console.log(control);\n // return control;\n // }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Import</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <div class=\"flex gap-4 justify-between\">\n <button class=\"export-button\" (click)=\"handleTemplateExport()\">\n Download Template\n </button>\n <label for=\"fileInput\" class=\"export-button\">Upload File</label>\n </div>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div\n class=\"drop-area\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <p>\n Drag and drop files here or\n <label for=\"fileInput\">click to browse</label>\n </p>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\n multiple\n />\n </div>\n <div *ngIf=\"files.length > 0\">\n <h3>Uploaded Files:</h3>\n <ul>\n <li *ngFor=\"let file of files\">{{ file.name }}</li>\n </ul>\n </div>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"save()\">Import</button>\n </div>\n</verben-card>\n\n<!-- Modal Component -->\n<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'large'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'my-modal-custom-class'\"\n [disableFooter]=\"false\"\n [modalData]=\"[{ data: {} }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n dialogueWidth=\"85%\"\n>\n <a download=\"\"></a>\n</verben-dialogue>\n\n<!-- Define templates -->\n<ng-template #headerTemplate>\n <h2>Upload Preview</h2>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"flex gap-4 items-center justify-between my-4\">\n <p class=\"\">Total Items: {{ service.importedData().length }}</p>\n\n <p class=\"\">Duplicates: {{ duplicateIndexSet.size }}</p>\n\n <p class=\"\">Invalid Items: {{ invalidIndexSet.size }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"headers()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <div style=\"max-height: min(75vh, 780px); overflow: auto\">\n <lib-data-table\n [data]=\"service.importedData()\"\n [columns]=\"previewColumnsList()\"\n [formGroupConfig]=\"formGroupConfig()\"\n [useVirtualScroll]=\"true\"\n (rowSave)=\"service.addRow($event)\"\n >\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"footer-buttons flex gap-4 items-center justify-between my-4\">\n <button\n class=\"btn btn-secondary cancel-button\"\n (click)=\"showPreview = false\"\n >\n Cancel\n </button>\n <button class=\"btn btn-primary export-button\" (click)=\"save()\">\n Complete\n </button>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenDialogueComponent } from './verben-dialogue.component';\nimport { SvgModule } from '../svg/svg.module';\nimport {VerbenaButtonModule} from \"../../verbena-button/verbena-button.module\"\n@NgModule({\n declarations:[VerbenDialogueComponent],\n imports: [CommonModule,SvgModule,VerbenaButtonModule],\n exports: [VerbenDialogueComponent]\n})\nexport class VerbenDialogueModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataImportComponent } from './data-import.component';\nimport { CardModule } from '../card/card.module';\nimport { VerbenDialogueModule } from '../verben-dialogue/verben-dialogue.module';\nimport { DataTableModule } from '../data-table/data-table.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\n\n@NgModule({\n declarations: [DataImportComponent],\n imports: [\n CommonModule,\n CardModule,\n VerbenDialogueModule,\n DataTableModule,\n VerbenaInputModule,\n DropDownModule,\n ReactiveFormsModule,\n FormsModule,\n SvgModule,\n ],\n exports: [DataImportComponent],\n})\nexport class DataImportModule {}\n","export interface DataExtendItem {\n Name: string;\n DataType: DataType;\n MaxValue: number;\n MinValue: number;\n IsRequired: boolean;\n DefaultValue: any;\n Value: any;\n Options: string;\n Id: string;\n}\n\nexport enum DataType {\n Text = 'Text',\n MultilineText = 'MultilineText',\n MailAddress = 'MailAddress',\n PhoneNumber = 'PhoneNumber',\n Number = 'Number',\n Decimal = 'Decimal',\n YesNo = 'YesNo',\n URL = 'URL',\n Image = 'Image',\n SingleSelection = 'SingleSelection',\n MultiSelection = 'MultiSelection',\n Colour = 'Colour',\n Video = 'Video',\n Audio = 'Audio',\n SingleFileSelection = 'SingleFileSelection',\n MultiFileSelection = 'MultiFileSelection',\n}\n","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'verbena-switch',\n templateUrl: './verbena-switch.component.html',\n styleUrls: ['./verbena-switch.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VerbenaSwitchComponent),\n multi: true\n }\n ]\n})\nexport class VerbenaSwitchComponent implements ControlValueAccessor {\n @Input() label: string = '';\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() offColor: string = '#ccc'; // Default off color\n @Input() onColor: string = '#4caf50'; // Default on color\n @Input() onText: string = 'On'; // Text for ON state\n @Input() offText: string = 'Off'; // Text for OFF state\n @Input() width: string = '80px'; // Width of the switch\n @Input() height: string = '30px'; // Height of the switch\n @Input() customStyles: string = ''; // Accepts user-defined class for extra styling\n\n @Output() change = new EventEmitter<boolean>();\n\n // Function to call when the toggle changes\n public onChange: (value: boolean) => void = () => {};\n\n // Function to call when the component is touched\n private onTouched: () => void = () => {};\n\n // Toggle function to handle switch changes\n toggleSwitch() {\n if (!this.disabled) {\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n }\n }\n\n // ControlValueAccessor: Write a new value to the element\n writeValue(value: boolean): void {\n this.checked = value;\n }\n\n // ControlValueAccessor: Set the function to be called when the control value changes\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n // ControlValueAccessor: Set the function to be called when the control is touched\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // ControlValueAccessor: Set the disabled state\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Method to handle input change directly from template\n onChangeEvent(event: Event): void {\n if (!this.disabled) {\n const checked = (event.target as HTMLInputElement).checked;\n this.checked = checked;\n this.onChange(checked); // Call the onChange function with a boolean\n this.change.emit(checked); // Emit the change event\n }\n }\n\n}\n","<div class=\"switch\"\n [ngClass]=\"{'disabled': disabled}\"\n [ngStyle]=\"{ 'width': width, 'height': height }\"\n (click)=\"toggleSwitch()\">\n <input type=\"checkbox\" [checked]=\"checked\" class=\"check\" (change)=\"onChangeEvent($event)\" [disabled]=\"disabled\" />\n <span class=\"slider\" \n [ngStyle]=\"{ 'background-color': checked ? onColor : offColor }\">\n <span class=\"slider-label\">{{ checked ? onText : offText }}</span>\n <span class=\"slider-knob\"></span>\n </span>\n</div>","import {\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { DataExtendItem, DataType } from './data-extend.types';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'lib-data-extend',\n templateUrl: './data-extend.component.html',\n styleUrl: './data-extend.component.css',\n})\nexport class DataExtendComponent {\n properties = input<DataExtendItem[]>([]);\n extendDataEvent = output<DataExtendItem[]>();\n\n items: WritableSignal<DataExtendItem[]> = signal<DataExtendItem[]>([]);\n showAll: WritableSignal<boolean> = signal<boolean>(false);\n visibleItems: Signal<DataExtendItem[]>;\n form: FormGroup;\n selectedItem: DataExtendItem | null = null;\n\n dataTypes = Object.values(DataType);\n\n constructor(private fb: FormBuilder) {\n this.visibleItems = computed(() =>\n this.showAll() ? this.items() : this.items().slice(0, 3)\n );\n effect(() => {\n this.items.set(this.properties());\n });\n\n this.form = this.fb.group({\n Name: ['', Validators.required],\n DefaultValue: [''],\n DataType: ['', Validators.required],\n MaxValue: [0],\n MinValue: [0],\n IsRequired: [false],\n Options: [''],\n });\n\n this.form.get('DataType')?.valueChanges.subscribe((value) => {\n if (\n value === DataType.SingleSelection ||\n value === DataType.MultiSelection\n ) {\n this.form.get('Options')?.enable();\n this.form.get('Options')?.setValue('');\n this.form.get('Options')?.setValidators([Validators.required]);\n } else {\n this.form.get('Options')?.clearValidators();\n this.form.get('Options')?.disable();\n }\n\n if (\n value === DataType.Number ||\n value === DataType.Decimal ||\n value === DataType.SingleSelection ||\n value === DataType.MultiSelection\n ) {\n this.form.get('MaxValue')?.setValidators([Validators.required]);\n this.form.get('MinValue')?.setValidators([Validators.required]);\n }\n if (value === DataType.Text) {\n this.form.get('MaxValue')?.clearValidators();\n this.form.get('MinValue')?.clearValidators();\n this.form.get('MaxValue')?.disable();\n this.form.get('MinValue')?.disable();\n } else {\n this.form.get('MaxValue')?.enable();\n this.form.get('MinValue')?.enable();\n }\n\n this.form.get('Options')?.updateValueAndValidity();\n });\n }\n\n toggleShowAll() {\n this.showAll.update((prev) => !prev);\n }\n\n addItem() {\n const newItem = this.form.value;\n if (this.selectedItem) {\n const index = this.items().indexOf(this.selectedItem);\n this.items.update((prev) => {\n const updatedItems = [...prev];\n updatedItems[index] = newItem;\n return updatedItems;\n });\n this.selectedItem = null;\n } else {\n this.items.update((prev) => [...prev, newItem]);\n }\n this.form.reset();\n }\n\n removeItem(index: number) {\n this.items.update((prev) => prev.filter((_, i) => i !== index));\n }\n\n save() {\n this.extendDataEvent.emit(this.items());\n }\n\n cancel() {\n this.items.set(this.properties());\n }\n\n reset() {\n this.items.set([]);\n this.form.reset();\n }\n\n editItem(index: number) {\n const item = this.items()[index];\n this.form.patchValue(item);\n this.selectedItem = item;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Expand</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Entity</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let item of visibleItems(); let i = index\" class=\"item\">\n <div class=\"item-label\">\n <!-- <input\n type=\"checkbox\"\n [id]=\"'item-' + i\"\n [(ngModel)]=\"item.selected\"\n /> -->\n <label [for]=\"'item-' + i\" class=\"checkbox-label\">\n {{ item.Name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editItem(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeItem(i)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"items().length > 3\"\n (click)=\"toggleShowAll()\"\n class=\"show-more\"\n >\n <span>{{ showAll() ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"form\" (ngSubmit)=\"addItem()\">\n <div class=\"\">\n <p class=\"\">Name</p>\n <verbena-input\n placeholder=\"Enter property name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"Name\"\n ></verbena-input>\n </div>\n\n <div>\n <label for=\"DataType\">Data Type</label>\n <verben-drop-down\n id=\"DataType\"\n width=\"'100%'\"\n height=\"'1.25rem'\"\n placeholder=\"Select type\"\n [options]=\"dataTypes\"\n formControlName=\"DataType\"\n >\n </verben-drop-down>\n </div>\n\n <div>\n <label htmlFor=\"Options\" class=\"mb-2\">Enter Options</label>\n <verben-chip\n label=\"Options\"\n id=\"Options\"\n [placeholder]=\"'Enter Options'\"\n formControlName=\"Options\"\n ></verben-chip>\n </div>\n\n <div>\n <label for=\"DefaultValue\">Default Value</label>\n\n <verbena-input\n [placeHolder]=\"'Enter default text'\"\n formControlName=\"DefaultValue\"\n id=\"DefaultValue\"\n label=\"Default Value (optional)\"\n />\n </div>\n\n <div>\n <p class=\"mb-2\">Required</p>\n\n <verbena-switch\n label=\"Required\"\n [onColor]=\"'#1A237E'\"\n formControlName=\"IsRequired\"\n ></verbena-switch>\n </div>\n\n <div class=\"value-range\">\n <verbena-input\n [type]=\"'number'\"\n name=\"minValue\"\n label=\"Min Value\"\n formControlName=\"MinValue\"\n />\n <verbena-input\n [type]=\"'number'\"\n name=\"maxValue\"\n label=\"Max Value\"\n formControlName=\"MinValue\"\n />\n </div>\n\n <button\n [disabled]=\"!form.valid\"\n class=\"add-button ml-auto\"\n type=\"submit\"\n >\n + Add\n </button>\n </form>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"save()\">Extend</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaSwitchComponent } from './verbena-switch.component';\n\n@NgModule({\n declarations: [VerbenaSwitchComponent],\n imports: [CommonModule],\n exports: [VerbenaSwitchComponent]\n})\nexport class VerbenaSwitchModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataExtendComponent } from './data-extend.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { VerbenaSwitchModule } from '../../verbena-switch/verbena-switch.module';\nimport { ChipModule } from '../chip/chip.module';\n\n@NgModule({\n declarations: [DataExtendComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n VerbenaSwitchModule,\n ChipModule,\n ],\n exports: [DataExtendComponent],\n})\nexport class DataExtendModule {}\n","import { Injectable } from '@angular/core';\nimport {\n ExportProfile,\n Operation,\n ExportItem,\n ExportItemType,\n ArithmeticOperation,\n StringOperation,\n} from './data-xport.types';\nimport { ColumnDefinition } from '../data-table/data-table.types';\n\n@Injectable()\nexport class DataXportService<T> {\n private profiles: ExportProfile[] = [];\n private operations: Operation[] = [];\n private columns: ColumnDefinition<T>[] = [];\n\n constructor() {\n this.initializeDefaultProfile();\n }\n\n private initializeDefaultProfile() {\n this.profiles = [\n {\n id: 'default',\n name: 'All',\n items: [],\n },\n ];\n }\n\n setColumns(columns: ColumnDefinition<T>[]) {\n this.columns = columns;\n this.updateDefaultProfile();\n }\n\n getColumns(): ColumnDefinition<T>[] {\n return this.columns;\n }\n\n addProfile(profile: ExportProfile): void {\n this.profiles.push(profile);\n }\n\n getProfiles(): ExportProfile[] {\n return this.profiles;\n }\n\n updateProfile(id: string, updatedProfile: ExportProfile): void {\n const index = this.profiles.findIndex((p) => p.id === id);\n if (index !== -1) {\n this.profiles[index] = updatedProfile;\n }\n }\n\n removeProfile(id: string): void {\n this.profiles = this.profiles.filter((p) => p.id !== id);\n }\n\n addOperation(operation: Operation): void {\n this.operations.unshift(operation);\n this.updateDefaultProfile();\n }\n\n getOperations(): Operation[] {\n return this.operations;\n }\n\n updateOperation(id: string, updatedOperation: Operation): void {\n const index = this.operations.findIndex((o) => o.id === id);\n if (index !== -1) {\n this.operations[index] = updatedOperation;\n this.updateDefaultProfile();\n }\n }\n\n removeOperation(id: string): void {\n this.operations = this.operations.filter((o) => o.id !== id);\n this.updateDefaultProfile();\n // Remove operation from all profiles\n this.profiles.forEach((profile) => {\n profile.items = profile.items.filter((item) => item.id !== id);\n });\n }\n\n resetAll(): void {\n this.operations = [];\n this.columns = [];\n this.initializeDefaultProfile();\n }\n\n getAllItems(): ExportItem[] {\n return [\n ...this.operations.map((op) => ({\n id: op.id,\n name: op.name,\n exportKey: op.name,\n type: 'operation' as ExportItemType,\n })),\n ...this.columns.map((col) => ({\n id: col.id,\n name: col.header instanceof Function ? col.header({}) : col.header,\n exportKey: col.header instanceof Function ? col.header({}) : col.header,\n type: 'property' as ExportItemType,\n })),\n ];\n }\n\n exportData(\n data: T[],\n selectedProfiles: ExportProfile[]\n ): Record<string, any>[] {\n const uniqueItems = new Set<ExportItem>();\n selectedProfiles.forEach((profile) => {\n profile.items.forEach((item) => uniqueItems.add(item));\n });\n\n const records = data.map((item) => {\n const exportedItem: Record<string, any> = {};\n uniqueItems.forEach((exportItem) => {\n if (exportItem.type === 'property') {\n const column = this.columns.find((col) => col.id === exportItem.id);\n if (column) {\n exportedItem[exportItem.name] = column.accessorFn\n ? column.accessorFn(item)\n : column.accessorKey\n ? item[column.accessorKey]\n : null;\n }\n } else {\n const operation = this.operations.find((o) => o.id === exportItem.id);\n if (operation) {\n exportedItem[exportItem.name] = this.calculateOperation(\n item,\n operation\n );\n }\n }\n });\n return exportedItem;\n });\n\n this.downloadCSV(records);\n return records;\n }\n\n downloadCSV(data: Partial<any>[]) {\n const headers = Object.keys(data[0]);\n const csvContent = [\n headers.join(','),\n ...data.map((row) =>\n headers\n .map((header) => row[header])\n .map((datum) => `\"${datum}\"`)\n .join(',')\n ),\n ].join('\\n');\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', 'export.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n private calculateOperation(item: T, operation: Operation): number | string {\n const column1 = this.columns.find((col) => col.id === operation.field1);\n const column2 = this.columns.find((col) => col.id === operation.field2);\n\n if (!column1 || !column2) return '';\n\n const value1 = column1.accessorFn\n ? column1.accessorFn(item)\n : column1.accessorKey\n ? item[column1.accessorKey]\n : '';\n\n const value2 = column2.accessorFn\n ? column2.accessorFn(item)\n : column2.accessorKey\n ? item[column2.accessorKey]\n : '';\n\n if (operation.type === 'arithmetic') {\n const num1 = Number(value1);\n const num2 = Number(value2);\n\n switch (operation.operator) {\n case 'add':\n return num1 + num2;\n case 'subtract':\n return num1 - num2;\n case 'multiply':\n return num1 * num2;\n case 'divide':\n return num2 !== 0 ? num1 / num2 : NaN;\n }\n } else {\n return `${value1}${operation.joinBy}${value2}`;\n }\n }\n\n private updateDefaultProfile(): void {\n this.profiles[0].items = this.getAllItems();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n ArithmeticOperation,\n ExportItem,\n ExportProfile,\n Operation,\n StringOperation,\n} from './data-xport.types';\nimport { ColumnDefinition } from '../data-table/data-table.types';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DataXportService } from './data-xport.service';\n\n@Component({\n selector: 'lib-data-xport',\n templateUrl: './data-xport.component.html',\n styleUrl: './data-xport.component.css',\n})\nexport class DataXportComponent<T> {\n @Input() data!: T[];\n @Input() columns!: ColumnDefinition<T>[];\n /**\n * @deprecated will be removed in the near future\n */\n @Input() useImportKey: boolean = false;\n @Output() exportDataEvent = new EventEmitter<Record<string, any>[]>();\n\n profiles: (ExportProfile & { selected: boolean })[] = [];\n groupItems: (ExportItem & { selected: boolean })[] = [];\n newGroupForm: FormGroup;\n newOperation: Partial<Operation> = {\n id: '',\n name: '',\n field1: '',\n field2: '',\n type: 'arithmetic',\n } as ArithmeticOperation;\n\n numericColumns: ColumnDefinition<T>[] = [];\n stringColumns: ColumnDefinition<T>[] = [];\n isEditingOperation: boolean = false;\n showAllProfiles: boolean = false;\n showAllGroups: boolean = false;\n\n arithmeticOperators = [\n { value: 'add', label: '+' },\n { value: 'subtract', label: '-' },\n { value: 'multiply', label: '×' },\n { value: 'divide', label: '÷' },\n ];\n\n constructor(\n private exportService: DataXportService<T>,\n private fb: FormBuilder\n ) {\n this.newGroupForm = this.fb.group({\n name: ['', Validators.required],\n });\n }\n\n ngOnInit() {\n this.initializeColumns();\n this.updateProfiles();\n }\n\n ngOnChanges() {\n if (this.columns) {\n this.initializeColumns();\n }\n }\n\n get visibleProfiles() {\n return this.showAllProfiles ? this.profiles : this.profiles.slice(0, 3);\n }\n\n get visibleGroups() {\n return this.showAllGroups ? this.groupItems : this.groupItems.slice(0, 3);\n }\n\n initializeColumns() {\n const validColumns = this.columns.filter(\n (col) =>\n col.accessorKey ||\n col.accessorFn ||\n (this.useImportKey && col.importKey)\n );\n if (validColumns?.length) {\n this.exportService.setColumns(validColumns);\n this.updateColumnTypes();\n this.updateGroupItems();\n }\n }\n\n private updateColumnTypes() {\n if (this.data?.length && this.columns?.length) {\n const sampleData = this.data[0];\n\n this.numericColumns = this.columns.filter((col) => {\n /**\n * Remove the entire first part of the tenery on deprecation of this.useImportKey\n */\n const value = this.useImportKey\n ? col.accessorFn && typeof col.accessorFn(sampleData) === 'number'\n ? col.accessorFn(sampleData)\n : col.importKey\n ? sampleData[col.importKey]\n : null\n : col.accessorFn\n ? col.accessorFn(sampleData)\n : col.accessorKey\n ? sampleData[col.accessorKey]\n : null;\n return typeof value === 'number';\n });\n\n this.stringColumns = this.columns.filter((col) => {\n /**\n * Remove the entire first part of the tenery on deprecation of this.useImportKey\n */\n const value = this.useImportKey\n ? col.accessorFn && typeof col.accessorFn(sampleData) === 'string'\n ? col.accessorFn(sampleData)\n : col.importKey\n ? sampleData[col.importKey]\n : null\n : col.accessorFn\n ? col.accessorFn(sampleData)\n : col.accessorKey\n ? sampleData[col.accessorKey]\n : null;\n return typeof value === 'string';\n });\n }\n }\n\n updateProfiles() {\n this.profiles = this.exportService.getProfiles().map((profile) => ({\n ...profile,\n selected: false,\n }));\n }\n\n updateGroupItems() {\n this.groupItems = this.exportService.getAllItems().map((item) => ({\n ...item,\n selected: false,\n }));\n }\n\n addGroup() {\n if (this.newGroupForm.valid) {\n const selectedItems = this.groupItems.filter((item) => item.selected);\n if (selectedItems.length > 0) {\n const newProfile: ExportProfile = {\n id: Date.now().toString(),\n name: this.newGroupForm.get('name')?.value,\n items: selectedItems,\n };\n this.exportService.addProfile(newProfile);\n this.updateProfiles();\n this.groupItems.forEach((item) => (item.selected = false));\n this.newGroupForm.reset();\n }\n }\n }\n\n editProfile(profile: ExportProfile & { selected: boolean }) {\n this.groupItems.forEach((item) => {\n item.selected = profile.items.some(\n (profileItem) => profileItem.id === item.id\n );\n });\n this.removeProfile(profile);\n }\n\n removeProfile(profile: ExportProfile & { selected: boolean }) {\n this.exportService.removeProfile(profile.id);\n this.updateProfiles();\n }\n\n addOrUpdateOperation() {\n if (\n this.newOperation.name &&\n this.newOperation.field1 &&\n this.newOperation.field2\n ) {\n const operation: Operation =\n this.newOperation.type === 'arithmetic'\n ? {\n id: this.isEditingOperation\n ? this.newOperation.id!\n : Date.now().toString(),\n name: this.newOperation.name,\n field1: this.newOperation.field1,\n field2: this.newOperation.field2,\n type: 'arithmetic',\n operator:\n (this.newOperation as ArithmeticOperation).operator || 'add',\n }\n : {\n id: this.isEditingOperation\n ? this.newOperation.id!\n : Date.now().toString(),\n name: this.newOperation.name,\n field1: this.newOperation.field1,\n field2: this.newOperation.field2,\n type: 'string',\n joinBy: (this.newOperation as StringOperation).joinBy || ' ',\n };\n\n if (this.isEditingOperation) {\n this.exportService.updateOperation(operation.id, operation);\n } else {\n this.exportService.addOperation(operation);\n }\n this.updateGroupItems();\n this.resetOperationForm();\n }\n }\n\n editOperation(operation: ExportItem & { selected: boolean }) {\n const foundOperation = this.exportService\n .getOperations()\n .find((op) => op.id === operation.id);\n if (foundOperation) {\n this.newOperation = { ...foundOperation };\n this.isEditingOperation = true;\n }\n }\n\n removeOperation(operation: ExportItem & { selected: boolean }) {\n this.exportService.removeOperation(operation.id);\n this.updateGroupItems();\n }\n\n resetOperationForm() {\n this.newOperation = {\n id: '',\n name: '',\n field1: '',\n field2: '',\n type: 'arithmetic',\n operator: 'add',\n } as ArithmeticOperation;\n this.isEditingOperation = false;\n }\n\n resetAll() {\n this.exportService.resetAll();\n this.initializeColumns();\n this.updateProfiles();\n this.resetOperationForm();\n this.newGroupForm.reset();\n }\n\n exportData() {\n const selectedProfiles = this.profiles.filter(\n (profile) => profile.selected\n );\n if (selectedProfiles.length > 0) {\n this.exportService.exportData(this.data, selectedProfiles);\n // console.log(exportedData);\n // this.exportDataEvent.emit(exportedData);\n }\n }\n\n isAnyProfileSelected(): boolean {\n return this.profiles.some((profile) => profile.selected);\n }\n\n onField1Change() {\n this.newOperation.field2 = '';\n const isNumeric = this.numericColumns.some(\n (col) => col.id === this.newOperation.field1\n );\n this.newOperation.type = isNumeric ? 'arithmetic' : 'string';\n if (isNumeric) {\n (this.newOperation as ArithmeticOperation).operator = 'add';\n } else {\n (this.newOperation as StringOperation).joinBy = ' ';\n }\n }\n\n private transformColumnToOption(column: ColumnDefinition<T>) {\n return {\n id: column.id,\n label:\n typeof column.header === 'function' ? column.header({}) : column.header,\n originalColumn: column,\n };\n }\n\n get columnOptions() {\n return [...this.numericColumns, ...this.stringColumns].map((col) =>\n this.transformColumnToOption(col)\n );\n }\n\n get availableFields2() {\n const columns =\n this.newOperation.type === 'arithmetic'\n ? this.numericColumns\n : this.stringColumns;\n return columns.map((col) => this.transformColumnToOption(col));\n }\n\n toggleShowAllProfiles() {\n this.showAllProfiles = !this.showAllProfiles;\n }\n\n toggleShowAllGroups() {\n this.showAllGroups = !this.showAllGroups;\n }\n\n getColumnHeader(column: ColumnDefinition<T>): string {\n return typeof column.header === 'function'\n ? column.header({})\n : column.header;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center justify-between\">\n <button\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n fontSize=\"11px\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n\n <div class=\"operation-grid\">\n <!-- First Field Selection -->\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n fontSize=\"11px\"\n placeholder=\"Select field\"\n [options]=\"columnOptions\"\n optionLabel=\"label\"\n optionValue=\"id\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n\n <!-- Operator/Join Selection -->\n <ng-container *ngIf=\"newOperation.type === 'arithmetic'\">\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n placeholder=\"Select operator\"\n [options]=\"arithmeticOperators\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [(ngModel)]=\"newOperation.operator\"\n fontSize=\"11px\"\n >\n </verben-drop-down>\n </ng-container>\n <ng-container *ngIf=\"newOperation.type === 'string'\">\n <verbena-input\n placeholder=\"Join by\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n fontSize=\"11px\"\n width=\"100%\"\n height=\"1.025rem\"\n pd=\"2px 6px\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [(ngModel)]=\"newOperation.joinBy\"\n ></verbena-input>\n </ng-container>\n\n <!-- Second Field Selection -->\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n optionLabel=\"label\"\n optionValue=\"id\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button ml-auto\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button\n class=\"export-button\"\n [disabled]=\"!isAnyProfileSelected()\"\n (click)=\"exportData()\"\n >\n Export\n </button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { DataXportService } from './data-xport.service';\nimport { DataXportComponent } from './data-xport.component';\n\n@NgModule({\n declarations: [DataXportComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n ],\n providers: [DataXportService],\n exports: [DataXportComponent],\n})\nexport class DataXportModule {}\n","export type FilterOperatorType = 'string' | 'number' | 'date';\n\nexport interface FilterOperator {\n label: string;\n value: string;\n type: FilterOperatorType;\n}\n\nexport const STRING_OPERATORS: FilterOperator[] = [\n { label: 'Starts With', value: 'startsWith', type: 'string' },\n { label: 'Ends With', value: 'endsWith', type: 'string' },\n { label: 'Contains', value: 'contains', type: 'string' },\n { label: 'Equals', value: 'equals', type: 'string' },\n];\n\nexport const NUMBER_OPERATORS: FilterOperator[] = [\n { label: 'Equal', value: 'equal', type: 'number' },\n { label: 'Greater Than', value: 'greaterThan', type: 'number' },\n { label: 'Less Than', value: 'lessThan', type: 'number' },\n];\n\nexport const DATE_OPERATORS: FilterOperator[] = [\n { label: 'On', value: 'on', type: 'date' },\n { label: 'Before', value: 'before', type: 'date' },\n { label: 'After', value: 'after', type: 'date' },\n];\n\nexport interface FilterCondition {\n columnId: string;\n operator: string;\n value: string | number | Date;\n}\n\nexport interface FilterGroup {\n id: string;\n name: string;\n conditions: FilterCondition[];\n}\n\nexport interface FilterState {\n groups: FilterGroup[];\n activeFilters: FilterCondition[];\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { ColumnDefinition } from '../data-table/data-table.types';\nimport {\n FilterOperator,\n FilterCondition,\n FilterGroup,\n STRING_OPERATORS,\n NUMBER_OPERATORS,\n DATE_OPERATORS,\n} from './data-filter.types';\n\n@Component({\n selector: 'lib-data-filter',\n templateUrl: './data-filter.component.html',\n styleUrl: './data-filter.component.css',\n})\nexport class DataFilterComponent<T> implements OnInit {\n @Input() columns!: ColumnDefinition<T>[];\n @Input() data!: T[];\n @Output() filterApplied = new EventEmitter<FilterCondition[]>();\n @Output() resetFilter = new EventEmitter();\n filterableColumns: ColumnDefinition<T>[] = [];\n availableOperators: FilterOperator[] = [];\n savedFilters: (FilterCondition & { selected: boolean })[] = [];\n currentFilter: Partial<FilterCondition> = {};\n showAllFilters = false;\n maxVisibleItems = 3;\n currentColumnType: 'string' | 'number' | 'date' | null = null;\n\n ngOnInit() {\n this.initializeFilterableColumns();\n }\n\n private initializeFilterableColumns() {\n this.filterableColumns = this.columns.filter((col) => col.accessorKey);\n }\n\n onColumnSelect(columnId: string) {\n const column = this.filterableColumns.find((col) => col.id === columnId);\n if (!column) return;\n\n this.currentFilter.columnId = columnId;\n\n // Reset other values\n this.currentFilter.operator = undefined;\n this.currentFilter.value = undefined;\n\n // Determine column type and set available operators\n this.currentColumnType = this.determineColumnType(column);\n\n switch (this.currentColumnType) {\n case 'string':\n this.availableOperators = STRING_OPERATORS;\n break;\n case 'number':\n this.availableOperators = NUMBER_OPERATORS;\n break;\n case 'date':\n this.availableOperators = DATE_OPERATORS;\n break;\n default:\n this.availableOperators = [];\n }\n }\n\n addFilter() {\n if (\n !this.currentFilter.columnId ||\n !this.currentFilter.operator ||\n !this.currentFilter.value\n ) {\n return;\n }\n\n const newFilter: FilterCondition & { selected: boolean } = {\n columnId: this.currentFilter.columnId!,\n operator: this.currentFilter.operator,\n value: this.currentFilter.value,\n selected: true,\n };\n\n this.savedFilters.unshift(newFilter);\n this.resetCurrentFilter();\n }\n\n getFilterDescription(filter: FilterCondition): string {\n const column = this.filterableColumns.find(\n (col) => col.id === filter.columnId\n );\n if (!column) return '';\n\n const columnName =\n typeof column.header === 'function' ? column.header({}) : column.header;\n\n const operator = this.getOperatorLabel(filter.operator);\n\n let value = filter.value;\n if (value instanceof Date) {\n value = (value as Date).toLocaleDateString();\n }\n\n return `${columnName} ${operator} ${value}`;\n }\n\n private getOperatorLabel(operatorValue: string): string {\n const operator = [\n ...STRING_OPERATORS,\n ...NUMBER_OPERATORS,\n ...DATE_OPERATORS,\n ].find((op) => op.value === operatorValue);\n return operator ? operator.label.toLowerCase() : operatorValue;\n }\n\n private determineColumnType(\n column: ColumnDefinition<T>\n ): 'string' | 'number' | 'date' | null {\n if (!this.data.length) return null;\n\n const sampleValue = column.accessorKey\n ? this.data[0][column.accessorKey]\n : column.accessorFn\n ? column.accessorFn(this.data[0])\n : null;\n\n if (sampleValue === null) return null;\n\n if (sampleValue instanceof Date) return 'date';\n if (typeof sampleValue === 'number') return 'number';\n return 'string';\n }\n\n private resetCurrentFilter() {\n this.currentFilter = {};\n this.availableOperators = [];\n }\n\n resetAll() {\n \n this.savedFilters = [];\n this.resetCurrentFilter();\n this.resetFilter.emit()\n }\n\n applyFilters() {\n const activeFilters = this.savedFilters\n .filter((filter) => filter.selected)\n .map(({ columnId, operator, value }) => ({\n columnId,\n operator,\n value,\n }));\n this.filterApplied.emit(activeFilters);\n }\n\n getColumnLabel(columnId: string): string {\n const column = this.filterableColumns.find((col) => col.id === columnId);\n return column\n ? typeof column.header === 'function'\n ? column.header({})\n : column.header\n : columnId;\n }\n\n get visibleFilters() {\n return this.showAllFilters\n ? this.savedFilters\n : this.savedFilters.slice(0, this.maxVisibleItems);\n }\n\n get activeFilterCount(): number {\n return this.savedFilters.filter((filter) => filter.selected).length;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">\n Filter <sup>({{ activeFilterCount }})</sup>\n </h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n\n <div card-body class=\"card-body\">\n <!-- Saved Filters Section -->\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Filters</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n\n <div *ngFor=\"let filter of visibleFilters\" class=\"item\">\n <div class=\"item-label\">\n <input type=\"checkbox\" [(ngModel)]=\"filter.selected\" />\n <label>{{ getFilterDescription(filter) }}</label>\n </div>\n </div>\n\n <div\n *ngIf=\"savedFilters.length > maxVisibleItems\"\n class=\"show-more\"\n (click)=\"showAllFilters = !showAllFilters\"\n >\n {{ showAllFilters ? \"Show Less\" : \"Show More\" }}\n </div>\n </section>\n\n <hr class=\"divider\" />\n\n <!-- New Filter Operation -->\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n\n <div class=\"operation-grid\">\n <!-- Column Selection -->\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n placeholder=\"Select column\"\n [options]=\"filterableColumns\"\n optionLabel=\"header\"\n optionValue=\"id\"\n [(ngModel)]=\"currentFilter.columnId\"\n (ngModelChange)=\"onColumnSelect($event)\"\n ></verben-drop-down>\n\n <!-- Operator Selection -->\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [(ngModel)]=\"currentFilter.operator\"\n ></verben-drop-down>\n\n <!-- Value Input based on type -->\n <ng-container [ngSwitch]=\"currentColumnType\">\n <!-- Date Input -->\n <verbena-input\n *ngSwitchCase=\"'date'\"\n type=\"date\"\n placeholder=\"Select date\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"1.025rem\"\n pd=\"2px 6px\"\n [(ngModel)]=\"currentFilter.value\"\n ></verbena-input>\n\n <!-- Number Input -->\n <verbena-input\n *ngSwitchCase=\"'number'\"\n type=\"number\"\n placeholder=\"Enter number\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"1.025rem\"\n pd=\"2px 6px\"\n [(ngModel)]=\"currentFilter.value\"\n ></verbena-input>\n\n <!-- Text Input (default) -->\n <verbena-input\n *ngSwitchCase=\"'string'\"\n type=\"text\"\n placeholder=\"Enter text\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"1.025rem\"\n pd=\"2px 6px\"\n [(ngModel)]=\"currentFilter.value\"\n ></verbena-input>\n </ng-container>\n </div>\n\n <button class=\"add-button ml-auto\" (click)=\"addFilter()\">+ Add</button>\n </section>\n </div>\n\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"applyFilters()\">Filter</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { DataFilterComponent } from './data-filter.component';\n\n@NgModule({\n declarations: [DataFilterComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n ],\n exports: [DataFilterComponent],\n})\nexport class DataFilterModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataFilterService {\n\n constructor() { }\n}\n","export type SortDirection = 'asc' | 'desc';\n\nexport interface SortCondition {\n columnId: string;\n direction: SortDirection;\n}\n\nexport interface SortOperator {\n label: string;\n value: SortDirection;\n type: 'string' | 'number' | 'date';\n}\n\nexport const STRING_SORT_OPERATORS: SortOperator[] = [\n { label: 'A to Z', value: 'asc', type: 'string' },\n { label: 'Z to A', value: 'desc', type: 'string' },\n];\n\nexport const NUMBER_SORT_OPERATORS: SortOperator[] = [\n { label: '1 to 100', value: 'asc', type: 'number' },\n { label: '100 to 1', value: 'desc', type: 'number' },\n];\n\nexport const DATE_SORT_OPERATORS: SortOperator[] = [\n { label: 'Oldest First', value: 'asc', type: 'date' },\n { label: 'Newest First', value: 'desc', type: 'date' },\n];\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ColumnDefinition } from '../data-table/data-table.types';\nimport {\n SortCondition,\n SortOperator,\n STRING_SORT_OPERATORS,\n NUMBER_SORT_OPERATORS,\n DATE_SORT_OPERATORS,\n} from './data-sort.types';\n\n@Component({\n selector: 'lib-data-sort',\n templateUrl: './data-sort.component.html',\n styleUrls: ['./data-sort.component.css'],\n})\nexport class DataSortComponent<T> implements OnInit {\n @Input() columns!: ColumnDefinition<T>[];\n @Input() data!: T[];\n @Input() enableDragAndDrop: boolean = true;\n @Output() sortApplied = new EventEmitter<SortCondition[]>();\n @Output() resetFilter = new EventEmitter();\n sortableColumns: ColumnDefinition<T>[] = [];\n selectedSorts: Map<string, 'asc' | 'desc'> = new Map();\n showAllProperties = false;\n maxVisibleItems = 3;\n draggedIndex: number | null = null;\n checkAll: boolean = false;\n selectedColumns: Set<string> = new Set();\n\n ngOnInit() {\n this.initializeSortableColumns();\n }\n\n private initializeSortableColumns() {\n this.sortableColumns = this.columns.filter((col) => col.accessorKey);\n }\n\n get visibleColumns() {\n return this.showAllProperties\n ? this.sortableColumns\n : this.sortableColumns.slice(0, this.maxVisibleItems);\n }\n\n // Drag and Drop functionality\n onDragStart(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n this.draggedIndex = index;\n event.dataTransfer?.setData('text/plain', String(index));\n }\n\n onDragOver(event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n }\n\n onDrop(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n if (this.draggedIndex !== null && this.draggedIndex !== index) {\n this.swapColumns(this.draggedIndex, index);\n }\n this.draggedIndex = null;\n }\n\n private swapColumns(fromIndex: number, toIndex: number) {\n const temp = this.sortableColumns[fromIndex];\n this.sortableColumns[fromIndex] = this.sortableColumns[toIndex];\n this.sortableColumns[toIndex] = temp;\n }\n\n // Column Selection functionality\n toggleSelectAll() {\n this.checkAll = !this.checkAll;\n if (this.checkAll) {\n this.sortableColumns.forEach((column) =>\n this.selectedColumns.add(column.id)\n );\n } else {\n this.selectedColumns.clear();\n }\n }\n\n toggleColumnSelection(columnId: string) {\n if (this.selectedColumns.has(columnId)) {\n this.selectedColumns.delete(columnId);\n this.checkAll = false;\n } else {\n this.selectedColumns.add(columnId);\n if (this.selectedColumns.size === this.sortableColumns.length) {\n this.checkAll = true;\n }\n }\n }\n\n isColumnSelected(columnId: string): boolean {\n return this.selectedColumns.has(columnId);\n }\n\n // Existing sort functionality...\n getSortOperators(column: ColumnDefinition<T>): SortOperator[] {\n const columnType = this.determineColumnType(column);\n\n switch (columnType) {\n case 'string':\n return STRING_SORT_OPERATORS;\n case 'number':\n return NUMBER_SORT_OPERATORS;\n case 'date':\n return DATE_SORT_OPERATORS;\n default:\n return STRING_SORT_OPERATORS;\n }\n }\n\n private determineColumnType(\n column: ColumnDefinition<T>\n ): 'string' | 'number' | 'date' {\n if (!this.data.length) return 'string';\n\n const sampleValue = column.accessorKey\n ? this.data[0][column.accessorKey]\n : column.accessorFn\n ? column.accessorFn(this.data[0])\n : null;\n\n if (sampleValue instanceof Date) return 'date';\n if (typeof sampleValue === 'number') return 'number';\n return 'string';\n }\n\n updateSort(columnId: string, direction: 'asc' | 'desc') {\n if (direction) {\n this.selectedSorts.set(columnId, direction);\n } else {\n this.selectedSorts.delete(columnId);\n }\n }\n\n isColumnSorted(columnId: string, direction: 'asc' | 'desc'): boolean {\n return this.selectedSorts.get(columnId) === direction;\n }\n\n getColumnHeader(column: ColumnDefinition<T>): string {\n return typeof column.header === 'function'\n ? column.header({})\n : column.header;\n }\n\n resetAll() {\n this.resetFilter.emit()\n this.selectedSorts.clear();\n this.selectedColumns.clear();\n this.checkAll = false;\n }\n\n applySorts() {\n // Only emit sorts for selected columns\n const sorts: SortCondition[] = Array.from(this.selectedSorts.entries())\n .filter(([columnId]) => this.selectedColumns.has(columnId))\n .map(([columnId, direction]) => ({\n columnId,\n direction,\n }));\n this.sortApplied.emit(sorts);\n }\n\n get activeSortCount(): number {\n return Array.from(this.selectedSorts.entries()).filter(([columnId]) =>\n this.selectedColumns.has(columnId)\n ).length;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n [height]=\"'32rem'\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">\n Sort <sup>({{ activeSortCount }})</sup>\n </h4>\n <button class=\"reset-button\" (click)=\"resetAll()\">Reset</button>\n </div>\n\n <div card-body class=\"card-body\">\n <!-- Column Sort Options -->\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n\n <!-- Select All -->\n <div class=\"select-all-wrapper\">\n <label class=\"select-all\">\n <input\n type=\"checkbox\"\n [checked]=\"checkAll\"\n (change)=\"toggleSelectAll()\"\n />\n <span>Select All</span>\n </label>\n </div>\n\n @for (column of visibleColumns; track column.id) {\n <div\n class=\"sort-option\"\n [attr.draggable]=\"enableDragAndDrop\"\n (dragstart)=\"onDragStart($index, $event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($index, $event)\"\n >\n <div class=\"sort-option-header\">\n @if (enableDragAndDrop) {\n <verben-svg\n icon=\"square-dot\"\n [width]=\"21\"\n [height]=\"21\"\n fill=\"black\"\n class=\"drag-handle\"\n ></verben-svg>\n }\n <input\n type=\"checkbox\"\n [checked]=\"isColumnSelected(column.id)\"\n (change)=\"toggleColumnSelection(column.id)\"\n width=\"16px\"\n height=\"16px\"\n />\n <span>{{ getColumnHeader(column) }}</span>\n </div>\n\n <div class=\"sort-operators\">\n @for (operator of getSortOperators(column); track operator.value) {\n <label class=\"sort-operator\">\n <input\n type=\"radio\"\n [name]=\"'sort_' + column.id\"\n [value]=\"operator.value\"\n (change)=\"updateSort(column.id, operator.value)\"\n [checked]=\"isColumnSorted(column.id, operator.value)\"\n />\n {{ operator.label }}\n </label>\n }\n </div>\n </div>\n } @if (sortableColumns.length > maxVisibleItems) {\n <button\n (click)=\"showAllProperties = !showAllProperties\"\n class=\"show-more\"\n >\n <span>{{ showAllProperties ? \"Show Less\" : \"Show More\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n }\n </section>\n </div>\n\n <div card-footer class=\"card-footer\">\n <button class=\"apply-button\" (click)=\"applySorts()\">Sort</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { DataSortComponent } from './data-sort.component';\n\n@NgModule({\n declarations: [DataSortComponent],\n imports: [\n CommonModule,\n SvgModule,\n CardModule,\n TooltipModule,\n ],\n exports: [DataSortComponent],\n})\nexport class DataSortModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataSortService {\n\n constructor() { }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ColumnDefinition } from '../data-table/data-table.types';\n\n@Component({\n selector: 'lib-data-columns',\n templateUrl: './data-columns.component.html',\n styleUrl: './data-columns.component.css'\n})\nexport class DataColumnsComponent<T> implements OnInit {\n @Input() columns!: ColumnDefinition<T>[];\n @Input() enableDragAndDrop: boolean = true;\n @Input() maxVisibleItems: number = 5;\n @Output() columnsUpdated = new EventEmitter<ColumnDefinition<T>[]>();\n\n visibleColumns: ColumnDefinition<T>[] = [];\n showAllColumns = false;\n draggedIndex: number | null = null;\n selectAll: boolean = false;\n columnVisibility: Map<string, boolean> = new Map();\n\n ngOnInit() {\n this.initializeColumns();\n }\n\n private initializeColumns() {\n this.visibleColumns = [...this.columns];\n // Initialize visibility map with current column states\n this.visibleColumns.forEach(column => {\n this.columnVisibility.set(column.id, true);\n });\n this.updateSelectAllStatus();\n }\n\n get columnsToShow() {\n return this.showAllColumns \n ? this.visibleColumns \n : this.visibleColumns.slice(0, this.maxVisibleItems);\n }\n\n // Drag and Drop functionality\n onDragStart(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n this.draggedIndex = index;\n event.dataTransfer?.setData('text/plain', String(index));\n }\n\n onDragOver(event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n }\n\n onDrop(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n if (this.draggedIndex !== null && this.draggedIndex !== index) {\n this.swapColumns(this.draggedIndex, index);\n }\n this.draggedIndex = null;\n }\n\n private swapColumns(fromIndex: number, toIndex: number) {\n const temp = this.visibleColumns[fromIndex];\n this.visibleColumns[fromIndex] = this.visibleColumns[toIndex];\n this.visibleColumns[toIndex] = temp;\n this.emitUpdatedColumns();\n }\n\n // Column Selection functionality\n toggleSelectAll() {\n this.selectAll = !this.selectAll;\n const newValue = this.selectAll;\n this.visibleColumns.forEach(column => {\n this.columnVisibility.set(column.id, newValue);\n });\n this.emitUpdatedColumns();\n }\n\n toggleColumnVisibility(columnId: string) {\n const currentValue = this.columnVisibility.get(columnId);\n this.columnVisibility.set(columnId, !currentValue);\n this.updateSelectAllStatus();\n this.emitUpdatedColumns();\n }\n\n isColumnVisible(columnId: string): boolean {\n return this.columnVisibility.get(columnId) ?? false;\n }\n\n private updateSelectAllStatus() {\n this.selectAll = Array.from(this.columnVisibility.values()).every(value => value);\n }\n\n getColumnHeader(column: ColumnDefinition<T>): string {\n return typeof column.header === 'function' \n ? column.header({}) \n : column.header;\n }\n\n resetColumns() {\n this.initializeColumns();\n this.emitUpdatedColumns();\n }\n\n emitUpdatedColumns() {\n const updatedColumns = this.visibleColumns.filter(column => \n this.columnVisibility.get(column.id)\n );\n this.columnsUpdated.emit(updatedColumns);\n }\n\n get activeColumnCount(): number {\n return Array.from(this.columnVisibility.values()).filter(value => value).length;\n }\n}\n","<verben-card width=\"24rem\" borderRadius=\"1rem\" [border]=\"'1px solid #D4A007'\" bgColor=\"#FFFFFF\">\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Column <sup>({{ activeColumnCount }})</sup></h4>\n <button class=\"reset-button\" (click)=\"resetColumns()\">Reset</button>\n </div>\n \n <div card-body class=\"card-body\">\n <!-- Column Options -->\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg icon=\"info\" [width]=\"15\" [height]=\"15\" fill=\"grey\"></verben-svg>\n </div>\n \n <!-- Select All -->\n <div class=\"select-all-wrapper\">\n <label class=\"select-all\">\n <input \n type=\"checkbox\" \n [checked]=\"selectAll\"\n (change)=\"toggleSelectAll()\"\n />\n <span>Select All</span>\n </label>\n </div>\n \n @for (column of columnsToShow; track column.id) {\n <div \n class=\"column-option\"\n [attr.draggable]=\"enableDragAndDrop\"\n (dragstart)=\"onDragStart($index, $event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($index, $event)\"\n >\n <div class=\"column-option-content\">\n @if (enableDragAndDrop) {\n <verben-svg\n icon=\"square-dot\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"black\"\n class=\"drag-handle\"\n ></verben-svg>\n }\n <input \n type=\"checkbox\" \n [checked]=\"isColumnVisible(column.id)\"\n (change)=\"toggleColumnVisibility(column.id)\"\n />\n <span>{{ getColumnHeader(column) }}</span>\n </div>\n </div>\n }\n \n @if (visibleColumns.length > maxVisibleItems) {\n <button\n (click)=\"showAllColumns = !showAllColumns\"\n class=\"show-more\"\n >\n <span>{{ showAllColumns ? \"Show Less\" : \"Show More\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n }\n </section>\n </div>\n \n <div card-footer class=\"card-footer\">\n <button class=\"save-button\" (click)=\"emitUpdatedColumns()\">Save</button>\n </div>\n </verben-card>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataColumnsComponent } from './data-columns.component';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\n\n\n\n@NgModule({\n declarations: [DataColumnsComponent],\n imports: [\n CommonModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n ],\n exports: [DataColumnsComponent]\n})\nexport class DataColumnsModule { }\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataColumnsService {\n\n constructor() { }\n}\n","import { Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[controlOptions]'\n})\nexport class ControlOptionsDirective implements OnChanges {\n \n // Inputs for various control options\n @Input() hidden: boolean = false;\n @Input() disabled: boolean = false;\n @Input() height: string | null = null; \n @Input() width: string | null = null; \n @Input() minHeight: string | null = null;\n @Input() minWidth: string | null = null; \n @Input() maxHeight: string | null = null;\n @Input() maxWidth: string | null = null; \n @Input() position: 'center' | 'left' | 'right' | 'top' | 'bottom' | null = null;\n @Input() scrollable: boolean = false;\n @Input() singleLine: boolean = false;\n @Input() multiLine: boolean = false;\n @Input() border: string | null = null; \n @Input() borderRadius: string | null = null;\n @Input() textColor: string | null = null; \n @Input() backgroundColor: string | null = null;\n @Input() hoverStyles: { [key: string]: string } | null = null;\n \n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.applyStyles();\n }\n\n private applyStyles(): void {\n const nativeElement = this.el.nativeElement;\n\n // Handle hidden property\n this.renderer.setStyle(nativeElement, 'display', this.hidden ? 'none' : 'block');\n\n // Handle disabled property\n if (this.disabled) {\n this.renderer.setAttribute(nativeElement, 'disabled', 'true');\n this.renderer.setStyle(nativeElement, 'pointer-events', 'none');\n this.renderer.setStyle(nativeElement, 'opacity', '0.6');\n } else {\n this.renderer.removeAttribute(nativeElement, 'disabled');\n this.renderer.setStyle(nativeElement, 'pointer-events', 'auto');\n this.renderer.setStyle(nativeElement, 'opacity', '1');\n }\n\n // Apply height, width, min/max constraints\n this.applyDimension(nativeElement, 'height', this.height);\n this.applyDimension(nativeElement, 'width', this.width);\n this.applyDimension(nativeElement, 'min-height', this.minHeight);\n this.applyDimension(nativeElement, 'min-width', this.minWidth);\n this.applyDimension(nativeElement, 'max-height', this.maxHeight);\n this.applyDimension(nativeElement, 'max-width', this.maxWidth);\n\n // Handle position\n this.handlePosition();\n\n // Scrollable property\n this.renderer.setStyle(nativeElement, 'overflow', this.scrollable ? 'auto' : 'hidden');\n\n // Single-line or multi-line\n if (this.singleLine) {\n this.renderer.setStyle(nativeElement, 'white-space', 'nowrap');\n } else if (this.multiLine) {\n this.renderer.setStyle(nativeElement, 'white-space', 'normal');\n }\n\n // Apply border and border-radius\n this.applyStyle(nativeElement, 'border', this.border);\n this.applyStyle(nativeElement, 'border-radius', this.borderRadius);\n\n // Apply text color and background color\n this.applyStyle(nativeElement, 'color', this.textColor);\n this.applyStyle(nativeElement, 'background-color', this.backgroundColor);\n }\n\n // Helper function to apply height, width, and similar styles\n private applyDimension(element: any, style: string, value: string | null): void {\n if (value) {\n this.renderer.setStyle(element, style, value);\n } else {\n this.renderer.removeStyle(element, style);\n }\n }\n\n // Generalized style application\n private applyStyle(element: any, style: string, value: string | null): void {\n if (value) {\n this.renderer.setStyle(element, style, value);\n } else {\n this.renderer.removeStyle(element, style);\n }\n }\n\n // Handle position based on the input\n private handlePosition(): void {\n const nativeElement = this.el.nativeElement;\n\n switch (this.position) {\n case 'center':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'top', '50%');\n this.renderer.setStyle(nativeElement, 'left', '50%');\n this.renderer.setStyle(nativeElement, 'transform', 'translate(-50%, -50%)');\n break;\n case 'left':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'left', '0');\n break;\n case 'right':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'right', '0');\n break;\n case 'top':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'top', '0');\n break;\n case 'bottom':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'bottom', '0');\n break;\n default:\n this.renderer.setStyle(nativeElement, 'position', 'static');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlOptionsDirective } from './control-options.directive';\n\n@NgModule({\n declarations: [ControlOptionsDirective],\n imports: [CommonModule],\n exports: [ControlOptionsDirective]\n})\nexport class ControlOptionsModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'verbena-badge',\n templateUrl: './verbena-badge.component.html',\n styleUrls: ['./verbena-badge.component.css']\n})\nexport class VerbenaBadgeComponent {\n // Badge text and customization properties\n @Input() text: string = ''; // Text or number inside the badge\n @Input() bgColor: string = '#ff4757'; // Background color (default red)\n @Input() textColor: string = '#fff'; // Text color (default white)\n @Input() borderRadius: string = '12px'; // Border radius (default round)\n @Input() pd: string = '5px 10px'; // Padding inside the badge\n @Input() fontSize: string = '14px'; // Font size for the badge text\n @Input() width: string = '';\n @Input() height: string = '';\n}\n","<span [ngStyle]=\"{\n 'background-color': bgColor,\n 'color': textColor,\n 'border-radius': borderRadius,\n 'padding': pd,\n 'width': width,\n 'height': height,\n 'font-size': fontSize\n}\"\nclass=\"verbena-badge\"\n>\n{{ text }}\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaBadgeComponent } from './verbena-badge.component';\n\n@NgModule({\n declarations: [VerbenaBadgeComponent],\n imports: [CommonModule],\n exports: [VerbenaBadgeComponent]\n})\nexport class VerbenaBadgeModule {}\n","import { \n Component, \n Input, \n Output, \n EventEmitter, \n OnInit, \n Optional, \n Self, \n Inject, \n forwardRef \n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n@Component({\n selector: 'verbena-textarea',\n templateUrl: './verbena-textarea.component.html',\n styleUrls: ['./verbena-textarea.component.css']\n})\nexport class VerbenaTextareaComponent implements ControlValueAccessor, OnInit {\n @Input() label: string = '';\n @Input() required: boolean = false;\n @Input() rows: number = 5;\n @Input() cols: number = 40;\n @Input() bgColor: string = '#fff';\n @Input() textColor: string = '#000';\n @Input() border: string = '1px solid #ccc';\n @Input() borderRadius: string = '4px';\n @Input() pd: string = '10px';\n @Input() width: string = '100%';\n @Input() height: string = 'auto';\n @Input() value: string = '';\n @Input() errorMessageColor: string = 'red';\n\n @Output() valueChange = new EventEmitter<string>();\n\n errorMessage: string | undefined;\n textareaId: string = '';\n isInvalid: boolean = false;\n\n onChange: any = () => {};\n onTouch: any = () => {};\n\n constructor(@Optional() @Self() @Inject(forwardRef(() => NgControl)) private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n\n ngOnInit() {\n this.textareaId = `verbena-textarea-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n onInput(event: Event) {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value.trim();\n this.validate();\n this.onChange(this.value); // Notify form control of value change\n this.onTouch(); // Mark as touched\n this.valueChange.emit(this.value); // Emit the value change\n }\n\n validate() {\n if (this.required && !this.value) {\n this.errorMessage = 'This field is required';\n this.isInvalid = true;\n } else {\n this.errorMessage = undefined;\n this.isInvalid = false;\n }\n }\n\n writeValue(value: any): void {\n this.value = value ? value.trim() : '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n const textarea = document.getElementById(this.textareaId) as HTMLTextAreaElement | null;\n if (textarea) {\n textarea.disabled = isDisabled;\n }\n }\n\n //newly added\n onValueChange(newValue: string) {\n this.value = newValue;\n this.valueChange.emit(this.value); // Emit the value when it changes\n this.validate(); // Optional: Re-validate on each change\n }\n}\n","<label [for]=\"textareaId\">{{ label }}</label>\n<textarea\n [id]=\"textareaId\"\n [required]=\"required\"\n [attr.rows]=\"rows\"\n [attr.cols]=\"cols\"\n [ngStyle]=\"{\n 'background-color': bgColor,\n 'color': textColor,\n 'border': border,\n 'border-radius': borderRadius,\n 'padding': pd,\n 'width': width,\n 'height': height\n }\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\" \n></textarea>\n<span *ngIf=\"errorMessage\" class=\"error\">{{ errorMessage }}</span>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaTextareaComponent } from './verbena-textarea.component';\n\n@NgModule({\n declarations: [VerbenaTextareaComponent],\n imports: [CommonModule, FormsModule],\n exports: [VerbenaTextareaComponent]\n})\nexport class VerbenaTextareaModule {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MailPayload } from '../../models/mail-model';\n\n@Component({\n selector: 'verben-mail-template',\n templateUrl: './verben-mail.component.html',\n styleUrls: ['./verben-mail.component.css'],\n})\nexport class VerbenMailTemplate {\n @Input() containerWidth: string = '500px';\n @Input() borderRadius: string = '10px';\n @Input() primaryColor: string = '#FFE681';\n @Input() secondaryColor: string = '';\n @Input() tetiaryColor: string = '';\n @Input() border: string = '1px solid gray';\n @Input() pd: string = '20px';\n @Input() m: string = '';\n @Input() max: number = 10;\n mailForm: FormGroup;\n isRichText: boolean = false;\n isUploading: boolean = false;\n uploadedFileName: string | null = null;\n fileUploadError: string | null = null;\n toEmails: string[] = [];\n ccEmails: string[] = [];\n bccEmails: string[] = [];\n toEmailInput: string = '';\n ccEmailInput: string = '';\n bccEmailInput: string = '';\n mailData: any;\n toEmailError: string | null = null;\n ccEmailError: string | null = null;\n bccEmailError: string | null = null;\n @Output() mailPayload = new EventEmitter<MailPayload>();\n constructor(private fb: FormBuilder) {\n this.mailForm = this.fb.group({\n subject: ['', Validators.required],\n body: ['', Validators.required],\n toEmails: [[], Validators.required],\n ccEmails: [[]],\n bccEmails: [[]],\n });\n }\n\n onToChange(): void {\n const newValues = this.mailForm.get('toEmails')?.value || [];\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const validEmails: string[] = [];\n\n newValues.forEach((email: string) => {\n if (emailRegex.test(email)) {\n validEmails.push(email);\n } else {\n if (!emailRegex.test(email)) {\n this.toEmailError = 'email must be valid';\n }\n }\n });\n if (validEmails.length === 0) {\n this.toEmailError = 'email must be valid';\n } else {\n this.toEmailError = '';\n }\n\n this.toEmails = validEmails;\n }\n\n onCcChange(): void {\n const newValues = this.mailForm.get('ccEmails')?.value||[];\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const validEmails = newValues.filter((email: string) =>\n emailRegex.test(email)\n );\n this.ccEmails = validEmails;\n }\n onBccChange(): void {\n const newValues = this.mailForm.get('bccEmails')?.value||[];\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const validEmails = newValues.filter((email: string) =>\n emailRegex.test(email)\n );\n this.bccEmails = validEmails;\n }\n validateEmail(email: string): boolean {\n const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n return emailRegex.test(email);\n }\n\n onFileSelected(event: Event) {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n const file = input.files[0];\n this.fileUploadError = null;\n if (!file) {\n this.isUploading = true;\n }\n if (file.size > 5000000) {\n this.fileUploadError = 'File size exceeds 5MB limit.';\n this.uploadedFileName = null;\n this.isUploading = false; // Reset isUploading state\n } else {\n this.uploadedFileName = file.name;\n }\n } else {\n this.isUploading = false;\n }\n }\n\n removeFile() {\n this.uploadedFileName = null;\n this.fileUploadError = null;\n const fileInput = document.getElementById('attachment') as HTMLInputElement;\n if (fileInput) {\n fileInput.value = '';\n }\n }\n\n toggleEditor() {\n this.isRichText = !this.isRichText;\n }\n\n sendEmail() {\n if (this.mailForm.valid) {\n const emailData: MailPayload = {\n subject: this.mailForm.value.subject,\n body: this.mailForm.value.body,\n to: this.mailForm.get('toEmails')?.value,\n cc: this.mailForm.get('ccEmails')?.value,\n bcc: this.mailForm.get('bccEmails')?.value,\n attachment: this.uploadedFileName,\n };\n this.mailPayload.emit(emailData);\n this.resetForm();\n }\n }\n resetForm() {\n this.mailForm.get('toEmails')?.reset('');\n this.mailForm.get('ccEmails')?.reset('');\n this.mailForm.get('bccEmails')?.reset('');\n this.mailForm.get(\"subject\")?.reset('')\n this.mailForm.get(\"body\")?.reset('')\n this.toEmailError = null;\n this.ccEmailError = null;\n this.bccEmailError = null;\n this.uploadedFileName = null;\n this.fileUploadError = null;\n this.isUploading = false;\n this.isRichText = false;\n }\n}\n","<form\n [style.width]=\"containerWidth\"\n [formGroup]=\"mailForm\"\n (ngSubmit)=\"sendEmail()\"\n>\n <div\n class=\"button-container flex flex-end gap\"\n [style.margin-bottom]=\"'10px'\"\n >\n <button class=\"button\" type=\"button\" (click)=\"toggleEditor()\">\n {{ isRichText ? \"Switch to Plain\" : \"View Designer\" }}\n </button>\n <button\n type=\"submit\"\n [style.background-color]=\"primaryColor\"\n [style.padding]=\"'0px 10px'\"\n [ngClass]=\"{\n disabled: mailForm.invalid,\n enabled: !mailForm.invalid\n }\"\n [disabled]=\"mailForm.invalid\"\n >\n Send\n </button>\n </div>\n <div\n class=\"container\"\n [style.border-radius]=\"borderRadius\"\n [style.border]=\"border\"\n [style.padding]=\"pd\"\n >\n <div class=\"verben-mail-container\">\n <div class=\"verben-mail-form\">\n <!-- Subject Field -->\n <div class=\"form-element subject\">\n <label for=\"subject\">Subject:</label>\n <input id=\"subject\" type=\"text\" formControlName=\"subject\" />\n </div>\n\n <!-- To Field with verben-chip -->\n <div class=\"form-element\">\n <label for=\"to\">TO:</label>\n <div class=\"email-tags-container\">\n <verben-chip\n [required]=\"true\"\n [invalidMessage]=\"toEmailError || 'email must be provided'\"\n (onChange)=\"onToChange()\"\n formControlName=\"Groups\"\n [max]=\"max\"\n [ngModel]=\"toEmails\"\n >\n </verben-chip>\n </div>\n </div>\n\n <!-- CC Field with verben-chip -->\n <div class=\"form-element\">\n <label for=\"cc\">CC:</label>\n <div class=\"email-tags-container\">\n <verben-chip\n (onChange)=\"onCcChange()\"\n formControlName=\"ccEmails\"\n [ngModel]=\"ccEmails\"\n >\n <ng-template let-item vTemplate=\"item\">\n {{ item }}\n </ng-template>\n </verben-chip>\n </div>\n </div>\n\n <!-- BCC Field with verben-chip -->\n <div class=\"form-element\">\n <label for=\"bcc\">BCC:</label>\n <div class=\"email-tags-container\">\n <verben-chip\n (onChange)=\"onBccChange()\"\n [ngModel]=\"bccEmails\"\n formControlName=\"bccEmails\"\n >\n <ng-template let-item vTemplate=\"item\">\n {{ item }}\n </ng-template>\n </verben-chip>\n </div>\n </div>\n\n <!-- Attachments Section -->\n <div class=\"form-element attachment\">\n <label\n *ngIf=\"!uploadedFileName && !isUploading\"\n for=\"attachment\"\n class=\"flex items-center gap cursor-pointer\"\n >\n <verben-svg [width]=\"20\" fill=\"black\" icon=\"attach\"></verben-svg\n >Attach file\n </label>\n <input\n id=\"attachment\"\n type=\"file\"\n (change)=\"onFileSelected($event)\"\n class=\"none\"\n />\n <div *ngIf=\"isUploading\" class=\"loader\">Uploading...</div>\n <div *ngIf=\"uploadedFileName\" class=\"flex items-center gap\">\n <span>{{ uploadedFileName }}</span>\n <button\n [style.color]=\"'black'\"\n type=\"button\"\n (click)=\"removeFile()\"\n >\n ✕\n </button>\n </div>\n <div *ngIf=\"fileUploadError\" class=\"error\">{{ fileUploadError }}</div>\n </div>\n\n <!-- Email Body -->\n\n <hr [style.color]=\"'#00000066'\" />\n <div class=\"form-element quill\" [style.margin-top]=\"'30px'\">\n <div *ngIf=\"isRichText; else textArea\">\n <ng-content select=\"[rich-text]\">widget should appear here </ng-content>\n </div>\n <ng-template #textArea>\n <ng-content select=\"[text-arae]\">\n <textarea\n formControlName=\"body\"\n class=\"block\"\n rows=\"10\"\n cols=\"50\"\n ></textarea>\n </ng-content>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { VerbenMailTemplate } from './verben-mail.component';\nimport { ChipModule } from '../chip/chip.module';\nimport { SvgModule } from '../svg/svg.module';\n@NgModule({\n declarations: [VerbenMailTemplate],\n imports: [\n FormsModule,\n CommonModule,\n ChipModule,\n ReactiveFormsModule,\n SvgModule,\n ],\n exports: [VerbenMailTemplate],\n})\nexport class VerbenaMailTemplateModule {}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'verben-time-picker',\n templateUrl: './verben-time-picker.component.html',\n styleUrls: ['./verben-time-picker.component.css']\n})\nexport class VerbenTimePickerComponent {\n @Input() model: Date = new Date();\n @Output() modelChange = new EventEmitter<Date>(); // Add this line\n @Input() format24: boolean = false; // Toggle between 12h and 24h format\n @Output() timeChange = new EventEmitter<{ hours: number; minutes: number; meridiem: string }>();\n \n hours!: number;\n minutes!: number;\n meridiem: string = 'AM';\n\n constructor() {\n this.initializeTime();\n }\n\n initializeTime() {\n this.hours = this.format24 ? this.model.getHours() : this.get12HourFormat(this.model.getHours());\n this.minutes = this.model.getMinutes();\n if (!this.format24) {\n this.meridiem = this.model.getHours() >= 12 ? 'PM' : 'AM';\n }\n }\n\n get12HourFormat(hours: number): number {\n return hours % 12 || 12;\n }\n\n onTimeChange() {\n const newDate = new Date(this.model);\n newDate.setHours(this.format24 ? this.hours : this.meridiem === 'PM' ? this.hours + 12 : this.hours);\n newDate.setMinutes(this.minutes);\n\n this.modelChange.emit(newDate); // Emit the updated date\n this.timeChange.emit({\n hours: this.hours,\n minutes: this.minutes,\n meridiem: this.format24 ? '' : this.meridiem\n });\n }\n \n\n setMeridiem(value: string) {\n this.meridiem = value;\n this.onTimeChange();\n }\n}\n","<div class=\" max\">\n <div class=\"time-picker\">\n <div>\n <input class=\"input-field verben-input\" type=\"text\" [(ngModel)]=\"hours\" (change)=\"onTimeChange()\" [min]=\"format24 ? 0 : 1\" [max]=\"format24 ? 23 : 12\">\n <p>\n Hour\n </p>\n </div>\n <span>:</span>\n <div>\n <input type=\"text\" [(ngModel)]=\"minutes\" (change)=\"onTimeChange()\" min=\"0\" max=\"59\">\n <p>\n Minute\n </p>\n </div>\n \n <div *ngIf=\"!format24\" class=\"meridiem-toggle gap-0\">\n <button [class.active]=\"meridiem === 'AM'\" (click)=\"setMeridiem('AM')\">AM</button>\n <button [class.active]=\"meridiem === 'PM'\" (click)=\"setMeridiem('PM')\">PM</button>\n </div>\n </div>\n\n \n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenTimePickerComponent } from './verben-time-picker.component';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [VerbenTimePickerComponent],\n imports: [CommonModule, FormsModule],\n exports: [VerbenTimePickerComponent]\n})\nexport class VerbenTimePickerModule {}","import { InjectionToken } from '@angular/core';\n\nexport const UTIL_SERVICE = new InjectionToken<any>('UTIL_SERVICE');\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconService {\n constructor(private http: HttpClient) {}\n\n getIcon(iconName: string): Observable<string> {\n return this.http.get(`/icons/${iconName}.svg`, { responseType: 'text' }).pipe(\n catchError(() => of('')) // Handle errors (e.g., if the SVG doesn't exist)\n );\n }\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { IconService } from '../../services/icon.service';\n\n@Component({\n selector: 'lib-icon',\n templateUrl: './icons.component.html',\n styleUrls: ['./icons.component.css'],\n})\nexport class IconsComponent implements OnInit {\n @Input() iconName: string = '';\n svgContent: SafeHtml = '';\n\n constructor(\n private iconService: IconService,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.iconService.getIcon(this.iconName).subscribe((svg) => {\n this.svgContent = this.sanitizer.bypassSecurityTrustHtml(svg);\n });\n }\n}\n","<div [innerHTML]=\"svgContent\"></div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http'; // Import HttpClientModule\nimport { IconsComponent } from './icons.component';\nimport { IconService } from '../../services/icon.service';\n\n@NgModule({\n declarations: [IconsComponent], // Declare the IconComponent\n imports: [CommonModule, HttpClientModule], // Import CommonModule and HttpClientModule\n exports: [IconsComponent], // Export the IconComponent so it can be used in other modules\n providers: [IconService], // Provide the IconService\n})\nexport class IconModule {}\n","import { Component, Input, TemplateRef, ViewChild, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'lib-tab-item',\n template: `\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n `\n})\nexport class TabItemComponent {\n @Input() title: string = '';\n @Input() id: string = '';\n @Input() \n set active(value: boolean) {\n if (this._active !== value) {\n this._active = value;\n this.activeChange.emit(value);\n }\n }\n get active(): boolean {\n return this._active;\n }\n\n @Output() activeChange = new EventEmitter<boolean>();\n\n @Input() disabled: boolean = false;\n @Input() tabColor: string = ''; // Tab background color\n @Input() activeTabBgColor: string = ''; // Active tab background color\n @Input() textColor: string = ''; // Tab text color\n @Input() hoverColor: string = ''; // Hover color\n @Input() badgeCount: number | null = null;\n @Input() badgeColor: string = '#ff4081'; // Badge background color\n\n @ViewChild('content', { static: true }) content!: TemplateRef<any>;\n\n private _active: boolean = false;\n}\n","import { Component, ContentChildren, QueryList, AfterContentInit, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\nimport { TabItemComponent } from './tab-item.component';\n\n@Component({\n selector: 'verben-tab',\n templateUrl: './verbena-tab.component.html',\n styleUrls: ['./verbena-tab.component.css']\n})\nexport class VerbenaTabComponent implements AfterContentInit {\n @ContentChildren(TabItemComponent) tabs!: QueryList<TabItemComponent>;\n @Output() tabChange = new EventEmitter<TabItemComponent>();\n\n @Input() backgroundColor: string = ''; // Global background color\n @Input() activeTabBgColor: string = ''; // Global active tab background\n @Input() textColor: string = ''; // Global text color\n @Input() hoverColor: string = ''; // Global hover color\n\n activeTab: TabItemComponent | null = null;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterContentInit() {\n if (this.tabs.length && !this.tabs.find(tab => tab.active)) {\n this.selectTab(this.tabs.first);\n } else {\n const activeTab = this.tabs.find(tab => tab.active);\n if (activeTab) {\n this.selectTab(activeTab);\n }\n }\n\n this.tabs.changes.subscribe(() => {\n if (!this.activeTab || !this.tabs.find(tab => tab === this.activeTab)) {\n if (this.tabs.length) {\n this.selectTab(this.tabs.first);\n } else {\n this.activeTab = null;\n }\n }\n this.cdr.markForCheck();\n });\n }\n\n selectTab(tab: TabItemComponent) {\n if (tab.disabled) return;\n\n if (this.activeTab) {\n this.activeTab.active = false;\n }\n\n this.activeTab = tab;\n tab.active = true;\n this.tabChange.emit(tab);\n }\n}\n","<div \n class=\"tab-container\" \n [ngStyle]=\"{'background-color': backgroundColor}\"\n>\n <div class=\"tab-header\">\n <div \n *ngFor=\"let tab of tabs\" \n class=\"tab-item\" \n [ngClass]=\"{'active': tab.active, 'disabled': tab.disabled}\"\n [ngStyle]=\"{\n 'background-color': tab.active ? (tab.activeTabBgColor || activeTabBgColor) : tab.tabColor,\n 'color': tab.textColor || textColor,\n 'border-color': !tab.tabColor? activeTabBgColor : tab.tabColor\n }\"\n (click)=\"!tab.disabled && selectTab(tab)\"\n >\n {{ tab.title }}\n <span \n class=\"tab-badge\" \n *ngIf=\"tab.badgeCount !== null\"\n [ngStyle]=\"{'background-color': tab.badgeColor}\"\n >\n {{ tab.badgeCount }}\n </span>\n </div>\n </div>\n <div class=\"tab-content\" *ngIf=\"activeTab\" [ngStyle]=\"{'background-color': !activeTab.tabColor? activeTabBgColor : activeTab.tabColor}\">\n <ng-container [ngTemplateOutlet]=\"activeTab.content\"></ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaTabComponent } from './verbena-tab.component';\nimport { TabItemComponent } from './tab-item.component';\n\n@NgModule({\n declarations: [\n VerbenaTabComponent,\n TabItemComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n VerbenaTabComponent,\n TabItemComponent\n ]\n})\nexport class VerbenaTabModule { }","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n} from '@angular/forms';\n\nconst NUMBER_INPUT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberInputComponent),\n multi: true,\n};\n\n@Component({\n selector: 'verben-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.css'],\n providers: [NUMBER_INPUT_VALUE_ACCESSOR],\n})\nexport class NumberInputComponent implements ControlValueAccessor {\n @Input() min?: number;\n @Input() max?: number;\n @Input() step: number = 1;\n @Input() value: number = 0;\n @Input() label?: string = '';\n @Input() controlButton: boolean = false;\n @Input() disabled: boolean = false; // ✅ New input\n\n @Output() valueChange = new EventEmitter<number>();\n\n private onChange = (value: number) => {};\n private onTouched = () => {};\n\n errorMessage: string = '';\n inputContainerClass: any;\n inputWrapperClass: any;\n\n increase() {\n if (this.disabled) return; // ✅ Respect disabled state\n if (this.max === undefined || this.value + this.step <= this.max) {\n this.value += this.step;\n this.validateValue();\n this.valueChange.emit(this.value);\n this.notifyValueChange();\n }\n }\n\n decrease() {\n if (this.disabled) return; \n if (this.min === undefined || this.value - this.step >= this.min) {\n this.value -= this.step;\n this.validateValue();\n this.valueChange.emit(this.value);\n this.notifyValueChange();\n }\n }\n\n onInput(event: Event) {\n if (this.disabled) return; \n const inputValue = (event.target as HTMLInputElement).value;\n let newValue = Number(inputValue);\n this.value = newValue;\n this.validateValue();\n this.notifyValueChange();\n }\n\n validateValue() {\n if (this.min !== undefined && this.value < this.min) {\n this.value = this.min;\n this.errorMessage = `Value must be at least ${this.min}`;\n } else if (this.max !== undefined && this.value > this.max) {\n this.value = this.max;\n this.errorMessage = `Value cannot exceed ${this.max}`;\n } else {\n this.errorMessage = '';\n }\n\n this.valueChange.emit(this.value);\n }\n\n notifyValueChange() {\n this.onChange(this.value);\n this.onTouched();\n }\n\n // Control Value Accessor methods\n writeValue(value: number): void {\n this.value = value ?? 0;\n this.validateValue();\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled; // ✅ Sync with external state\n }\n}\n","<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n </div>\n\n <input\n type=\"number\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\" \n (blur)=\"validateValue()\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n</div>\n\n<p class=\"error-message\" *ngIf=\"errorMessage\">{{ errorMessage }}</p>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NumberInputComponent } from './number-input.component';\n\n@NgModule({\n declarations: [NumberInputComponent],\n imports: [CommonModule],\n exports: [NumberInputComponent],\n})\nexport class NumberInputModule {}\n","/*\n * Public API Surface of verben-ng-ui\n */\n\n// export * from './lib/verben-ng-ui.service';\n// export * from './lib/verben-ng-ui.component';\n\n// Exporting modules\nexport * from './lib/components/card-data-view/card-data-view.component';\nexport * from './lib/components/card-data-view/card-data-view.module';\nexport * from './lib/components/card-data-view/card-data';\nexport * from './lib/components/card-data-view/left-card-data/left-card-data.component';\nexport * from './lib/components/card-data-view/left-card-data-view/left-card-data-view.component';\nexport * from './lib/components/card-data-view/right-card-data-view/right-card-data-view.component';\nexport * from './lib/components/card-data-view/card-data-view-header/card-data-view-header.component';\nexport * from './lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component';\n\nexport * from './lib/components/drop-down/DropdownMenuItem';\nexport * from './lib/components/drop-down/DropdownChangeEvent';\nexport * from './lib/components/drop-down/DropdownLoadEvent';\nexport * from './lib/components/chip/ChipChangeEvent';\nexport * from './lib/components/drop-down/drop-down.module';\nexport * from './lib/components/drop-down/drop-down.component';\nexport * from './lib/components/chip/chip.module';\nexport * from './lib/components/chip/chip.component';\nexport * from './lib/components/shared.module';\nexport * from './lib/components/TemplateDirective.directive';\n\nexport * from './lib/components/image/image.module';\nexport * from './lib/components/image/image.component';\n\nexport * from './lib/components/tooltip/tooltip.component';\nexport * from './lib/components/tooltip/tooltip.module';\n\nexport * from './lib/components/svg/svg.module';\nexport * from './lib/components/svg/svg.component';\n\nexport * from './lib/components/table-filter/table-filter.module';\nexport * from './lib/components/table-filter/table-filter.component';\n\nexport * from './lib/components/notification/notification.module';\nexport * from './lib/components/notification/notification.component';\n\nexport * from './lib/components/card/card.module';\nexport * from './lib/components/card/card.component';\n\nexport * from './lib/convert-to-number/convert-to-number.module';\nexport * from './lib/convert-to-integer/convert-to-integer.module';\nexport * from './lib/components/sort-table/sort-table.component';\nexport * from './lib/components/sort-table/sort-table.module';\nexport * from './lib/components/visible-column/visible-column.component';\nexport * from './lib/components/visible-column/visible-column.module';\nexport * from './lib/components/data-view/data-view.component';\nexport * from './lib/components/data-view/data-view.module';\nexport * from './lib/components/date-picker/date-picker.component';\nexport * from './lib/components/date-picker/date-picker.module';\n// export * from './lib/convert-to-decimal/convert-to-decimal.module';\nexport * from './lib/phone-number/phone-number.module';\n\nexport * from './lib/validate-input/validate-input.module';\n\n// Also export the directives if needed directly\nexport * from './lib/convert-to-number/convert-to-number.directive';\nexport * from './lib/convert-to-integer/convert-to-integer.directive';\n// export * from './lib/convert-to-decimal/convert-to-decimal.directive';\nexport * from './lib/phone-number/phone-number.directive';\nexport * from './lib/validate-input/validate-input.directive';\n\n// Exporting MaxNumberModule and MaxNumberDirective\nexport * from './lib/number-range/number-range.module';\nexport * from './lib/number-range/number-range.directive';\n\nexport * from './lib/number-range/number-range.module';\nexport * from './lib/number-range/number-range.directive';\n\n// Exporting RequiredInputModule and RequiredInputDirective\nexport * from './lib/required-input/required-input.module';\nexport * from './lib/required-input/required-input.directive';\n\n// Exporting EmailValidatorModule and EmailValidatorDirective\nexport * from './lib/email-validator/email-validator.module';\nexport * from './lib/email-validator/email-validator.directive';\n\nexport * from './lib/components/data-table/data-table.module';\nexport * from './lib/components/data-table/data-table.component';\nexport * from './lib/components/data-table/column.directive';\nexport * from './lib/components/data-table/data-table.types';\nexport * from './lib/components/data-table/style.types';\n\nexport * from './lib/components/data-export/data-export.module';\nexport * from './lib/components/data-export/data-export.service';\nexport * from './lib/components/data-export/data-export.component';\nexport * from './lib/components/data-export/data-export.types';\n\nexport * from './lib/components/data-import/data-import.module';\n// export * from './lib/components/data-import/data-import.service';\nexport * from './lib/components/data-import/data-import.component';\n// export * from './lib/components/data-import/data-import.types';\n\nexport * from './lib/components/data-extend/data-extend.module';\n// export * from './lib/components/data-extend/data-extend.service';\nexport * from './lib/components/data-extend/data-extend.component';\nexport * from './lib/components/data-extend/data-extend.types';\n\nexport * from './lib/components/data-xport/data-xport.module';\nexport * from './lib/components/data-xport/data-xport.service';\nexport * from './lib/components/data-xport/data-xport.component';\n// export * from './lib/components/data-xport/data-xport.types';\n\nexport * from './lib/components/data-filter/data-filter.module';\nexport * from './lib/components/data-filter/data-filter.service';\nexport * from './lib/components/data-filter/data-filter.component';\nexport * from './lib/components/data-filter/data-filter.types';\n\nexport * from './lib/components/data-sort/data-sort.module';\nexport * from './lib/components/data-sort/data-sort.service';\nexport * from './lib/components/data-sort/data-sort.component';\nexport * from './lib/components/data-sort/data-sort.types';\n\nexport * from './lib/components/data-columns/data-columns.module';\nexport * from './lib/components/data-columns/data-columns.service';\nexport * from './lib/components/data-columns/data-columns.component';\n\n// Exporting ControlOptionModule and ControlOptionDirective\nexport * from './lib/control-options/control-options.module';\nexport * from './lib/control-options/control-options.directive';\n// Exporting Enum type for sort table\nexport * from './lib/models/table-filter';\nexport * from './lib/models/mail-model';\n\nexport * from './lib/validate/error-message.service';\nexport * from './lib/validate/validate.directive';\nexport * from './lib/validate/validate.module';\n\nexport * from './lib/Verbena-input/verbena-input.component';\nexport * from './lib/Verbena-input/verbena-input.module';\n\nexport * from './lib/verbena-button/verbena-button.component';\nexport * from './lib/verbena-button/verbena-button.module';\n\nexport * from './lib/verbena-badge/verbena-badge.component';\nexport * from './lib/verbena-badge/verbena-badge.module';\n\nexport * from './lib/verbena-textarea/verbena-textarea.component';\nexport * from './lib/verbena-textarea/verbena-textarea.module';\n\nexport * from './lib/verbena-switch/verbena-switch.component';\nexport * from './lib/verbena-switch/verbena-switch.module';\n\nexport * from './lib/components/verben-mail/verben-mail.module';\nexport * from './lib/components/verben-mail/verben-mail.component';\n\nexport * from './lib/components/verben-dialogue/verben-dialogue.module';\nexport * from './lib/components/verben-dialogue/verben-dialogue.component';\n\nexport * from './lib/components/verben-time-picker/verben-time-picker.module';\nexport * from './lib/components/verben-time-picker/verben-time-picker.component';\n\n//notification service\nexport * from './lib/services/notification.services';\n\nexport * from './lib/components/pop-up/pop-up.module';\nexport * from './lib/components/pop-up/pop-up.component';\n\nexport * from './lib/tokens';\n\n\nexport * from './lib/components/icons/icons.module'; // Export IconModule\nexport * from './lib/components/icons/icons.component'; // Export IconComponent\nexport * from './lib/services/icon.service'; // Export IconService\n\nexport * from './lib/components/verbena-icon/verbena-icon.component'; // Export IconComponent\nexport * from './lib/components/verbena-icon/verbena-icon.module'; // Export IconService\n\n\n\n\nexport * from './lib/components/verbena-tab/verbena-tab.module'; \nexport * from './lib/components/verbena-tab/verbena-tab.component'; \nexport * from './lib/components/verbena-tab/tab-item.component'; \n\n\nexport * from './lib/components/number-input/number-input.component'\nexport * from './lib/components/number-input/number-input.module'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SvgComponent","i2","i3","i5.TooltipComponent","i3.SvgComponent","i1.ErrorMessageService","i3.DropDownComponent","i4.VerbenaInputComponent","i5.ValidateDirective","i6.TooltipComponent","i7.SvgComponent","i3.VerbenaIconComponent","i1.NotificationService","i4.VerbenaButtonComponent","debounceTime","i3.VerbenaButtonComponent","i4.OutSideClickDirective","i4.DropDownComponent","i5.OutSideClickDirective","i1.DataExportService","i4.SvgComponent","i5.CardComponent","i6.DropDownComponent","i7.VerbenaInputComponent","i1.DataImportService","i3.CardComponent","i4.VerbenDialogueComponent","i5.DataTableComponent","i6.ColumnDirective","i7.DropDownComponent","i8","i9.SvgComponent","i4.CardComponent","i5.DropDownComponent","i6.VerbenaInputComponent","i7.VerbenaSwitchComponent","i8.ChipComponent","i1.DataXportService","i1.SvgComponent","i2.CardComponent","i3.ChipComponent","i1.IconService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verben-ng-ui.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/card-data-view/right-card-data-view/right-card-data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/right-card-data-view/right-card-data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/svg/svg.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/card-data-view/left-card-data/left-card-data.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/left-card-data/left-card-data.component.html","../../../projects/verben-ng-ui/src/lib/components/card-data-view/left-card-data-view/left-card-data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/left-card-data-view/left-card-data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component.html","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view-header/card-data-view-header.component.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view-header/card-data-view-header.component.html","../../../projects/verben-ng-ui/src/lib/components/svg/svg.module.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data-view.module.ts","../../../projects/verben-ng-ui/src/lib/components/card-data-view/card-data.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/DropdownLoadEvent.ts","../../../projects/verben-ng-ui/src/lib/components/TemplateDirective.directive.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down-item/drop-down-item.component.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down-item/drop-down-item.component.html","../../../projects/verben-ng-ui/src/lib/components/shared.module.ts","../../../projects/verben-ng-ui/src/lib/components/tooltip/tooltip.component.ts","../../../projects/verben-ng-ui/src/lib/components/tooltip/tooltip.component.html","../../../projects/verben-ng-ui/src/lib/components/tooltip/tooltip.module.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down.component.ts","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down.component.html","../../../projects/verben-ng-ui/src/lib/components/drop-down/drop-down.module.ts","../../../projects/verben-ng-ui/src/lib/components/chip/chip.component.ts","../../../projects/verben-ng-ui/src/lib/components/chip/chip.component.html","../../../projects/verben-ng-ui/src/lib/components/chip/chip.module.ts","../../../projects/verben-ng-ui/src/lib/components/image/image.component.ts","../../../projects/verben-ng-ui/src/lib/components/image/image.component.html","../../../projects/verben-ng-ui/src/lib/Verbena-input/verbena-input.component.ts","../../../projects/verben-ng-ui/src/lib/Verbena-input/verbena-input.component.html","../../../projects/verben-ng-ui/src/lib/Verbena-input/verbena-input.module.ts","../../../projects/verben-ng-ui/src/lib/components/image/image.module.ts","../../../projects/verben-ng-ui/src/lib/models/table-filter.ts","../../../projects/verben-ng-ui/src/lib/config.ts","../../../projects/verben-ng-ui/src/lib/validate/error-message.service.ts","../../../projects/verben-ng-ui/src/lib/validate/validate.directive.ts","../../../projects/verben-ng-ui/src/lib/components/table-filter/table-filter.component.ts","../../../projects/verben-ng-ui/src/lib/components/table-filter/table-filter.component.html","../../../projects/verben-ng-ui/src/lib/validate/validate.module.ts","../../../projects/verben-ng-ui/src/lib/components/table-filter/table-filter.module.ts","../../../projects/verben-ng-ui/src/lib/services/notification.services.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-icon/verbena-icon.component.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-icon/verbena-icon.component.html","../../../projects/verben-ng-ui/src/lib/verbena-button/verbena-button.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-button/verbena-button.component.html","../../../projects/verben-ng-ui/src/lib/components/notification/notification.component.ts","../../../projects/verben-ng-ui/src/lib/components/notification/notification.component.html","../../../projects/verben-ng-ui/src/lib/components/verbena-icon/verbena-icon.module.ts","../../../projects/verben-ng-ui/src/lib/verbena-button/verbena-button.module.ts","../../../projects/verben-ng-ui/src/lib/components/notification/notification.module.ts","../../../projects/verben-ng-ui/src/lib/components/card/card.component.ts","../../../projects/verben-ng-ui/src/lib/components/card/card.component.html","../../../projects/verben-ng-ui/src/lib/components/card/card.module.ts","../../../projects/verben-ng-ui/src/lib/convert-to-number/convert-to-number.directive.ts","../../../projects/verben-ng-ui/src/lib/convert-to-number/convert-to-number.module.ts","../../../projects/verben-ng-ui/src/lib/convert-to-integer/convert-to-integer.directive.ts","../../../projects/verben-ng-ui/src/lib/convert-to-integer/convert-to-integer.module.ts","../../../projects/verben-ng-ui/src/lib/components/sort-table/sort-table.component.ts","../../../projects/verben-ng-ui/src/lib/components/sort-table/sort-table.component.html","../../../projects/verben-ng-ui/src/lib/components/sort-table/sort-table.module.ts","../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.component.ts","../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.component.html","../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view-click-outside.directive.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.component.html","../../../projects/verben-ng-ui/src/lib/components/data-table/column.directive.ts","../../../projects/verben-ng-ui/src/lib/components/data-table/data-table.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-table/data-table.component.html","../../../projects/verben-ng-ui/src/lib/components/data-table/data-table.module.ts","../../../projects/verben-ng-ui/src/lib/components/pop-up/pop-up.component.ts","../../../projects/verben-ng-ui/src/lib/components/pop-up/pop-up.component.html","../../../projects/verben-ng-ui/src/lib/components/pop-up/pop-up.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-view/data-view.module.ts","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.component.ts","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.component.html","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.module.ts","../../../projects/verben-ng-ui/src/lib/phone-number/phone-number.directive.ts","../../../projects/verben-ng-ui/src/lib/phone-number/phone-number.module.ts","../../../projects/verben-ng-ui/src/lib/validate-input/validate-input.directive.ts","../../../projects/verben-ng-ui/src/lib/validate-input/validate-input.module.ts","../../../projects/verben-ng-ui/src/lib/number-range/number-range.directive.ts","../../../projects/verben-ng-ui/src/lib/number-range/number-range.module.ts","../../../projects/verben-ng-ui/src/lib/required-input/required-input.directive.ts","../../../projects/verben-ng-ui/src/lib/required-input/required-input.module.ts","../../../projects/verben-ng-ui/src/lib/email-validator/email-validator.directive.ts","../../../projects/verben-ng-ui/src/lib/email-validator/email-validator.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-table/data-table.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.component.html","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.service.ts","../../../projects/verben-ng-ui/src/lib/components/verben-dialogue/verben-dialogue.component.ts","../../../projects/verben-ng-ui/src/lib/components/verben-dialogue/verben-dialogue.component.html","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.html","../../../projects/verben-ng-ui/src/lib/components/verben-dialogue/verben-dialogue.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.types.ts","../../../projects/verben-ng-ui/src/lib/verbena-switch/verbena-switch.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-switch/verbena-switch.component.html","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.component.html","../../../projects/verben-ng-ui/src/lib/verbena-switch/verbena-switch.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-xport/data-xport.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-xport/data-xport.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-xport/data-xport.component.html","../../../projects/verben-ng-ui/src/lib/components/data-xport/data-xport.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.component.html","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-filter/data-filter.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.component.html","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-sort/data-sort.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-columns/data-columns.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-columns/data-columns.component.html","../../../projects/verben-ng-ui/src/lib/components/data-columns/data-columns.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-columns/data-columns.service.ts","../../../projects/verben-ng-ui/src/lib/control-options/control-options.directive.ts","../../../projects/verben-ng-ui/src/lib/control-options/control-options.module.ts","../../../projects/verben-ng-ui/src/lib/verbena-badge/verbena-badge.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-badge/verbena-badge.component.html","../../../projects/verben-ng-ui/src/lib/verbena-badge/verbena-badge.module.ts","../../../projects/verben-ng-ui/src/lib/verbena-textarea/verbena-textarea.component.ts","../../../projects/verben-ng-ui/src/lib/verbena-textarea/verbena-textarea.component.html","../../../projects/verben-ng-ui/src/lib/verbena-textarea/verbena-textarea.module.ts","../../../projects/verben-ng-ui/src/lib/components/verben-mail/verben-mail.component.ts","../../../projects/verben-ng-ui/src/lib/components/verben-mail/verben-mail.component.html","../../../projects/verben-ng-ui/src/lib/components/verben-mail/verben-mail.module.ts","../../../projects/verben-ng-ui/src/lib/components/verben-time-picker/verben-time-picker.component.ts","../../../projects/verben-ng-ui/src/lib/components/verben-time-picker/verben-time-picker.component.html","../../../projects/verben-ng-ui/src/lib/components/verben-time-picker/verben-time-picker.module.ts","../../../projects/verben-ng-ui/src/lib/tokens.ts","../../../projects/verben-ng-ui/src/lib/services/icon.service.ts","../../../projects/verben-ng-ui/src/lib/components/icons/icons.component.ts","../../../projects/verben-ng-ui/src/lib/components/icons/icons.component.html","../../../projects/verben-ng-ui/src/lib/components/icons/icons.module.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-tab/tab-item.component.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-tab/verbena-tab.component.ts","../../../projects/verben-ng-ui/src/lib/components/verbena-tab/verbena-tab.component.html","../../../projects/verben-ng-ui/src/lib/components/verbena-tab/verbena-tab.module.ts","../../../projects/verben-ng-ui/src/lib/components/number-input/number-input.component.ts","../../../projects/verben-ng-ui/src/lib/components/number-input/number-input.component.html","../../../projects/verben-ng-ui/src/lib/components/number-input/number-input.module.ts","../../../projects/verben-ng-ui/src/public-api.ts","../../../projects/verben-ng-ui/src/verben-ng-ui.ts"],"sourcesContent":["import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { CardData } from '../card-data';\n\n@Component({\n selector: 'verben-right-card-data-view',\n templateUrl: './right-card-data-view.component.html',\n styleUrl: './right-card-data-view.component.css'\n})\nexport class RightCardDataViewComponent {\n @ContentChild('parent') parent!: TemplateRef<any>;\n @ContentChild('child') child!: TemplateRef<any>;\n @Input() parentData! :CardData\n @Input() chilData! :CardData\n @Input() meth(d:any)\n {\n console.log(this.parent)\n console.log(this.chilData)\n }\n // currentData && currentData.title\n\n}\n"," <ng-container *ngIf=\"parentData && !chilData\">\n <ng-content *ngTemplateOutlet=\"parent\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"chilData\">\n <ng-content *ngTemplateOutlet=\"child\"></ng-content> \n </ng-container>\n","import {\n Component,\n Input,\n OnInit,\n ElementRef,\n ViewChild,\n OnChanges,\n} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'verben-svg',\n template: '<span #svgContainer></span>',\n styleUrls: ['./svg.component.css'],\n})\nexport class SvgComponent implements OnInit, OnChanges {\n @Input() icon: string = '';\n @Input() width: number = 24;\n @Input() height: number = 24;\n color: string = '';\n @Input() fill: string = '';\n @Input() stroke: string = '';\n @Input() type: 'default' | 'outline' | 'solid' = 'default';\n\n @Input() size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n\n @ViewChild('svgContainer', { static: true }) svgContainer!: ElementRef;\n\n constructor(private http: HttpClient, private sanitizer: DomSanitizer) {}\n\n ngOnInit(): void {\n this.color = this.fill.length > 0 ? this.fill : this.stroke;\n this.loadSvgIcon(this.icon);\n }\n\n ngOnChanges(): void {\n this.color = this.fill.length > 0 ? this.fill : this.stroke;\n this.loadSvgIcon(this.icon);\n }\n\n private getIconDimensions(): { width: number; height: number } {\n let width = this.width;\n let height = this.height;\n\n if (this.size) {\n switch (this.size) {\n case 'sm':\n width = height = 16;\n break;\n case 'md':\n width = height = 24;\n break;\n case 'lg':\n width = height = 32;\n break;\n case 'xl':\n width = height = 48;\n break;\n case '2xl':\n width = height = 52;\n break;\n case '3xl':\n width = height = 64;\n break;\n case '4xl':\n width = height = 80;\n break;\n default:\n width = height = 16;\n break;\n }\n }\n\n return { width, height };\n }\n\n loadSvgIcon(iconName: string): void {\n this.http\n .get(`assets/lib-icons/${this.type}/${iconName}.svg`, {\n responseType: 'text',\n })\n .subscribe(\n (svgContent: string | null) => {\n if (svgContent && svgContent.includes('<svg')) {\n try {\n this.updateSvg(svgContent);\n } catch (err: any) {\n // console.log({ Error: err });\n }\n } else {\n // If response is not a valid SVG, try loading from project assets\n this.fallbackLoad(iconName);\n }\n },\n (error) => {\n this.fallbackLoad(iconName);\n }\n );\n }\n\n private fallbackLoad(iconName: string): void {\n this.http\n .get(`assets/icons/${iconName}.svg`, { responseType: 'text' })\n .subscribe(\n (svgContent: string | null) => {\n if (svgContent && svgContent.includes('<svg')) {\n try {\n this.updateSvg(svgContent);\n } catch (err: any) {\n // console.log({ Error: err });\n }\n } else {\n //console.error(`Invalid SVG response for ${iconName}`);\n }\n },\n (error) => {\n // console.error(`Error loading SVG icon: ${error}`);\n }\n );\n }\n\n // loadSvgIcon(iconName: string): void {\n // this.http\n // .get(`assets/lib-icons/${this.type}/${iconName}.svg`, {\n // responseType: 'text',\n // })\n // .subscribe(\n // (svgContent: string | null) => {\n // //console.log({SvgContent: svgContent});\n // if (svgContent) {\n // try {\n // this.updateSvg(svgContent);\n // } catch (err: any) {\n // console.log({ Error: err });\n // }\n // }\n // },\n // (error) => {\n // this.http\n // .get(`assets/icons/${iconName}.svg`, { responseType: 'text' })\n // .subscribe(\n // (svgContent: string | null) => {\n // //console.log({SvgContent: svgContent});\n // if (svgContent) {\n // try {\n // this.updateSvg(svgContent);\n // } catch (err: any) {\n // console.log({ Error: err });\n // }\n // }\n // },\n // (error) => {\n // console.error(`Error loading SVG icon: ${error}`);\n // }\n // );\n // }\n // );\n // }\n\n private updateSvg(svgContent: string): void {\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgContent, 'image/svg+xml');\n const svgElement = svgDoc.documentElement;\n\n const { width, height } = this.getIconDimensions();\n\n svgElement.setAttribute('width', width.toString());\n svgElement.setAttribute('height', height.toString());\n\n const elementsToUpdate = [\n 'path',\n 'circle',\n 'line',\n 'rect',\n 'polygon',\n 'polyline',\n 'ellipse',\n ];\n\n elementsToUpdate.forEach((tag) => {\n const elements = svgElement.querySelectorAll(tag);\n elements.forEach((element) => {\n const hasStroke =\n element.hasAttribute('stroke') &&\n element.getAttribute('stroke') !== 'none';\n const hasFill =\n element.hasAttribute('fill') &&\n element.getAttribute('fill') !== 'none';\n\n // if (this.icon == 'academic-cap') {\n // console.log({\n // Element: element,\n // hasStroke: hasStroke,\n // hasFill: hasFill,\n // Stroke: element.getAttribute('stroke'),\n // Fill: element.getAttribute('fill'),\n // });\n // }\n if (this.color && hasFill) {\n element.setAttribute('fill', this.color);\n }\n if (this.color && hasStroke) {\n element.setAttribute('stroke', this.color);\n }\n });\n });\n\n const masks = svgElement.querySelectorAll('mask');\n masks.forEach((mask, index) => {\n const newMaskId = `mask_${this.icon}_${index}`;\n mask.setAttribute('id', newMaskId);\n\n const maskReferences = svgElement.querySelectorAll(\n `[mask=\"url(#${mask.id})\"]`\n );\n maskReferences.forEach((ref) => {\n ref.setAttribute('mask', `url(#${newMaskId})`);\n });\n });\n\n const svgContainerEl = this.svgContainer.nativeElement;\n svgContainerEl.innerHTML = '';\n svgContainerEl.appendChild(svgElement);\n }\n}\n","import {\n AfterContentInit,\n Component,\n contentChild,\n ContentChild,\n effect,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n viewChild,\n ViewChild,\n} from '@angular/core';\nimport { CardData } from './card-data';\nimport { Title } from '@angular/platform-browser';\nimport { RightCardDataViewComponent } from './right-card-data-view/right-card-data-view.component';\nimport { LeftCardDataComponent } from './left-card-data/left-card-data.component';\n\n@Component({\n selector: 'verben-card-data-view',\n templateUrl: './card-data-view.component.html',\n styleUrl: './card-data-view.component.css',\n})\nexport class CardDataViewComponent {\n @Input() pd = '10px';\n @Input() mg = '0px';\n @Input() lHeight?: string = '100%';\n @Input() rHeight?: string = '100%';\n @Input() rWidth?: string = '70%';\n @Input() lWidth?: string = '30%';\n @Input() textColor?: string;\n @Input() lbgColor?: string;\n @Input() rbgColor?: string;\n @Input() border?: string;\n @Input() display?: string;\n @Input() borderRadius?: string = '12px';\n @Input() activeCss?: string;\n @Input() inActiveCss?: string;\n @Input() displayAsRow?: boolean = true;\n @Input() cardDataList: CardData[] = [];\n @Input() dataId!: string; //what to use to identify each data\n @Input() totalRecords: number = 0;\n @Input() footer: boolean = false;\n @Input() noOfVisibleChildren: number = 3;\n @Input() showEditIcon: boolean = false;\n @Output() editClicked: EventEmitter<void> = new EventEmitter();\n @ContentChild(RightCardDataViewComponent)\n rightContent!: RightCardDataViewComponent;\n // @ContentChild(LeftCardDataComponent) left!:LeftCardDataComponent;\n @ContentChild('card') card!: TemplateRef<any>;\n // @ContentChild('content') content!: TemplateRef<any>;\n currentItem: any = {};\n currentChildItem: any = {};\n\n hasCurrentItem() {\n return (\n !!Object.keys(this.currentItem ?? {}).length ||\n !!Object.keys(this.currentChildItem ?? {}).length\n );\n }\n clearData() {\n this.currentItem = {} as CardData;\n this.currentChildItem = {} as CardData;\n this.cardDataList.forEach((_) => {\n _.selected = false;\n _.children.forEach((c) => {\n c.selected = false;\n c.isChildrenExpanded = false;\n });\n _.isChildrenExpanded = false;\n });\n }\n setDetailData() {\n this.rightContent.parentData = this.currentItem;\n this.rightContent.chilData = this.currentChildItem;\n }\n @Input() onItemClick(item: CardData) {\n this.resetChildren(item);\n item.selected = true;\n this.cardDataList.forEach((element) => {\n if (element.data[this.dataId] == item.data[this.dataId]) {\n this.currentItem = item;\n } else {\n element.selected = false;\n }\n });\n this.setDetailData();\n return this.currentItem;\n }\n resetChildren(newSelect: CardData) {\n if (this.currentItem && this.currentItem.children?.length) {\n (this.currentItem.children as any[]).forEach((c) => {\n c.selected = false;\n });\n if (newSelect.data[this.dataId] != this.currentItem.data[this.dataId])\n this.currentItem.isChildrenExpanded = false;\n }\n this.currentChildItem = null;\n }\n @Input() onCardChildClick(childIndex: number) {\n var item = this.currentItem.children[childIndex];\n (this.currentItem.children as any[]).forEach((element) => {\n if (element.data[this.dataId] == item.data[this.dataId]) {\n this.currentChildItem = item;\n } else {\n element.selected = false;\n }\n });\n this.currentChildItem.selected = true;\n this.setDetailData();\n return this.currentChildItem;\n }\n showChildren(item: CardData) {\n var currToggleState = item.isChildrenExpanded;\n this.cardDataList.forEach((_) => {\n _.isChildrenExpanded = false;\n _.selected = false;\n });\n item.selected = true;\n item.isChildrenExpanded = !currToggleState;\n }\n\n @Output() loadMoreClick = new EventEmitter();\n onLoadMoreClick() {\n this.loadMoreClick.emit();\n }\n\n onEditClicked() {\n this.editClicked.emit();\n }\n}\n","<div #main class=\"flex-col\" [style.display]=\"'flex'\">\n <!-- Header -->\n <ng-container ngProjectAs=\"verben-card-data-view-header\">\n <ng-content select=\"verben-card-data-view-header\"></ng-content>\n </ng-container>\n\n <div\n [ngClass]=\"\n !hasCurrentItem() ? 'master-only-container' : 'master-detail-container'\n \"\n >\n <!-- Card and Footer -->\n <div\n [style.borderRadius]=\"borderRadius\"\n [style.backgroundColor]=\"lbgColor\"\n class=\"flex-col\"\n >\n <!-- Card section -->\n <ng-container ngProjectAs=\"verben-left-card-data-view\">\n <ng-content select=\"verben-left-card-data-view\"></ng-content>\n </ng-container>\n\n <!-- Footer-->\n <ng-container ngProjectAs=\"verben-card-data-view-footer\">\n <ng-content select=\"verben-card-data-view-footer\"></ng-content>\n </ng-container>\n </div>\n <!-- Detail Section-->\n <div\n class=\"card-detail-section\"\n [style.backgroundColor]=\"rbgColor\"\n *ngIf=\"hasCurrentItem()\"\n [style.borderRadius]=\"borderRadius\"\n >\n <div class=\"flex justify-between items-center\">\n <div>\n <verben-svg\n *ngIf=\"this.showEditIcon\"\n (click)=\"onEditClicked()\"\n class=\"cursor-pointer\"\n icon=\"edit\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <verben-svg\n (click)=\"clearData()\"\n class=\"cursor-pointer toRight\"\n icon=\"close\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n </div>\n <ng-container #right ngProjectAs=\"verben-right-card-data-view\">\n <ng-content\n #rightContent\n select=\"verben-right-card-data-view\"\n ></ng-content>\n </ng-container>\n </div>\n </div>\n</div>\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { CardData } from '../card-data';\nimport { CardDataViewComponent } from '../card-data-view.component';\n\n@Component({\n selector: 'verben-left-card-data',\n templateUrl: './left-card-data.component.html',\n styleUrl: './left-card-data.component.css',\n})\nexport class LeftCardDataComponent {\n @Input() pd = '10px';\n @Input() mg = '0px';\n @Input() height?: string = '100%';\n @Input() weight?: string = '100%';\n @Input() activeCss?: string;\n @Input() inActiveCss?: string;\n @Input() cardDataList: CardData[] = [];\n @Input() iconCollapse: string = 'plus';\n @Input() iconExpanded: string = 'minus';\n @Input() parent!: CardDataViewComponent;\n @ContentChild('card') card!: TemplateRef<any>;\n @ContentChild('cardChild') cardChild!: TemplateRef<any>;\n @ContentChild('cardFooter') cardFooter!: TemplateRef<any>;\n @Input() dataId!: string; //what to use to identify each data\n // currentItem:any={};\n showToggle(item: CardData) {\n // showToggle() && item.children.length>0\n return (\n this.cardDataList.filter((_) => _.selected).length > 0 &&\n item.children.length > 0\n );\n }\n showChildren(item: CardData) {\n var currToggleState = item.isChildrenExpanded;\n this.cardDataList.forEach((_) => {\n _.isChildrenExpanded = false;\n _.selected = false;\n });\n this.parent.onItemClick(item);\n item.isChildrenExpanded = !currToggleState;\n }\n}\n","@for (item of cardDataList; track $index) {\n<div class=\"flex\">\n <div class=\"flex-col full-width\">\n <ng-content\n *ngTemplateOutlet=\"card; context: { $implicit: item }\"\n ></ng-content>\n <!-- children -->\n <div\n class=\"childrenPadding flex-col flex\"\n *ngIf=\"item.children.length > 0 && item.isChildrenExpanded\"\n >\n @for (child of item.children; track $index) {\n <ng-content\n *ngTemplateOutlet=\"\n cardChild;\n context: { index: $index, $implicit: child }\n \"\n ></ng-content>\n }\n </div>\n <div *ngIf=\"item.isChildrenExpanded\" class=\"false-padding\">\n <ng-content\n *ngTemplateOutlet=\"\n cardFooter;\n context: { index: $index, $implicit: item }\n \"\n ></ng-content>\n </div>\n </div>\n</div>\n\n}\n","import { Component, Input } from '@angular/core';\nimport { CardData } from '../card-data';\n\n@Component({\n selector: 'verben-left-card-data-view',\n templateUrl: './left-card-data-view.component.html',\n styleUrl: './left-card-data-view.component.css'\n})\nexport class LeftCardDataViewComponent {\n @Input() cardDataList:CardData[]=[];\n\n}\n"," <ng-container ngProjectAs=\"verben-left-card-data\">\n <ng-content select=\"verben-left-card-data\"></ng-content> \n </ng-container>\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'verben-card-data-view-footer',\n templateUrl: './card-data-view-footer.component.html',\n styleUrl: './card-data-view-footer.component.css'\n})\nexport class CardDataViewFooterComponent {\n\n}\n"," <ng-content></ng-content> \n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'verben-card-data-view-header',\n templateUrl: './card-data-view-header.component.html',\n styleUrl: './card-data-view-header.component.css'\n})\nexport class CardDataViewHeaderComponent {\n\n}\n"," <ng-content></ng-content> \n","import { NgModule } from '@angular/core';\nimport { SvgComponent } from './svg.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [SvgComponent],\n imports: [CommonModule], \n exports: [SvgComponent]\n})\nexport class SvgModule {}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CardDataViewComponent } from './card-data-view.component';\nimport { LeftCardDataComponent } from './left-card-data/left-card-data.component';\nimport { LeftCardDataViewComponent } from './left-card-data-view/left-card-data-view.component';\nimport { RightCardDataViewComponent } from './right-card-data-view/right-card-data-view.component';\nimport { CardDataViewFooterComponent } from './card-data-view-footer/card-data-view-footer.component';\nimport { CardDataViewHeaderComponent } from './card-data-view-header/card-data-view-header.component';\nimport { SvgModule } from \"../svg/svg.module\";\n\n@NgModule({\n declarations:[CardDataViewComponent,LeftCardDataComponent,\n LeftCardDataViewComponent,RightCardDataViewComponent,CardDataViewFooterComponent,\n CardDataViewHeaderComponent],\n imports: [CommonModule, SvgModule],\n exports: [CardDataViewComponent,LeftCardDataComponent,\n LeftCardDataViewComponent,RightCardDataViewComponent,CardDataViewFooterComponent,\n CardDataViewHeaderComponent]\n})\nexport class CardDataViewModule {}\n","export class CardData\n{\n selected:boolean=false;\n title:string='';\n body:{title:string,value:string}[]=[];\n data?:any;\n children:CardData[]=[]\n isChildrenExpanded?:boolean=false\n}","export class DropdownLoadEvent {\n private _loadTimes: number;\n\n get loadTimes(): number {\n return this._loadTimes;\n }\n\n constructor() {\n this._loadTimes = 0;\n }\n\n increaseLoadTime() {\n this._loadTimes += 1;\n }\n\n reset() {\n this._loadTimes = 0;\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[vTemplate]',\n})\nexport class TemplateDirective {\n @Input() vTemplate!: string; // The name of the template\n\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n Input,\n OnInit,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { TemplateDirective } from '../../TemplateDirective.directive';\nimport { DropdownMenuItemWrapper } from '../drop-down.component';\nimport { CommonModule } from '@angular/common';\nimport { isEqual } from 'lodash';\nimport { FormsModule } from '@angular/forms';\n// import { SvgModule } from 'verben-ng-ui/src/public-api';\nimport { SvgModule } from '../../../components/svg/svg.module';\n\n@Component({\n selector: 'drop-down-item',\n standalone: true,\n imports: [CommonModule, FormsModule, SvgModule],\n templateUrl: './drop-down-item.component.html',\n styleUrl: './drop-down-item.component.css',\n})\nexport class DropDownItemComponent implements OnInit {\n @Input() itemTemplate: TemplateRef<any> | null = null; // Allow null for custom item template\n @Input() groupTemplate: TemplateRef<any> | null = null;\n\n @Input() activeItem?: any;\n @Input() activeItems?: any;\n @Input() selectKey: string | null = null;\n @Input() optionValue?: string;\n @Input() optionLabel?: string;\n @Input() optionSubLabel?: string;\n @Input() loadMoreCaption?: string;\n @Input() multiselect: boolean = false;\n @Input() options: any[] = [];\n @Input() group: boolean = false;\n @Input() onExpand?: (\n item: DropdownMenuItemWrapper,\n siblings: DropdownMenuItemWrapper[]\n ) => Promise<void>;\n @Input() onLoadMore?: (item: DropdownMenuItemWrapper) => Promise<void>;\n @Input() onSelect?: (value: any, event: Event) => void;\n\n constructor() {}\n ngOnInit(): void {}\n\n isEqual(value: any, other: any): boolean {\n return this.selectKey\n ? isEqual((value && value[this.selectKey]) || null, other[this.selectKey])\n : isEqual(value, other);\n }\n\n isSelected(value: any[], other: any): boolean {\n for (let val of value) {\n const equalityCheck = this.selectKey\n ? isEqual(val[this.selectKey], other[this.selectKey])\n : isEqual(val, other);\n if (equalityCheck) {\n return true;\n }\n }\n return false;\n }\n\n getValue(item: any): any {\n if (!this.optionValue) {\n return this.group ? item.value : item;\n }\n return this.group ? item.value[this.optionValue] : item[this.optionValue];\n }\n\n getOptionLabel(item: any): any {\n if (this.group) {\n return item.label;\n }\n if (!this.optionLabel) {\n return item;\n }\n return typeof item === 'string' ? item : item[this.optionLabel];\n }\n\n getOptionSubLabel(item: any): any {\n if (this.group) {\n return item.subLabel;\n }\n if (!this.optionSubLabel) {\n return item;\n }\n return typeof item === 'string' ? item : item[this.optionSubLabel];\n }\n}\n","<!-- If group mode is false, display a flat list -->\n<ng-container *ngIf=\"!group\">\n <div class=\"option-items-container flex flex-col\">\n <ng-container *ngFor=\"let item of options\">\n <ng-container *ngIf=\"itemTemplate; else defaultItem\">\n <div\n *ngIf=\"!multiselect\"\n [ngClass]=\"{\n 'active-item': isEqual(this.activeItem, this.getValue(item))\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"item-wrapper\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n <div\n *ngIf=\"multiselect\"\n [ngClass]=\"{\n 'multi-select-active-item': isSelected(\n this.activeItems,\n this.getValue(item)\n )\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"item-wrapper multi-select flex\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(this.activeItems, this.getValue(item))\"\n class=\"custom-checkbox\"\n />\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n\n <ng-template #defaultItem>\n <div\n *ngIf=\"!multiselect\"\n [ngClass]=\"{\n 'active-item': isEqual(this.activeItem, this.getValue(item))\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"default-item item-wrapper flex flex-col\"\n >\n <div\n [ngClass]=\"{ 'has-sub-label': optionSubLabel }\"\n class=\"item-label\"\n >\n {{ this.getOptionLabel(item) }}\n </div>\n <div\n *ngIf=\"optionSubLabel || (group && item.subLabel)\"\n class=\"item-sub-label\"\n >\n {{ this.getOptionSubLabel(item) }}\n </div>\n </div>\n <div\n *ngIf=\"multiselect\"\n [ngClass]=\"{\n 'multi-select-active-item': isSelected(\n this.activeItems,\n this.getValue(item)\n )\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"default-item item-wrapper multi-select flex\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(this.activeItems, this.getValue(item))\"\n class=\"custom-checkbox\"\n />\n <div class=\"flex flex-col\">\n <div\n [ngClass]=\"{ 'has-sub-label': optionSubLabel }\"\n class=\"item-label\"\n >\n {{ this.getOptionLabel(item) }}\n </div>\n <div\n *ngIf=\"optionSubLabel || (group && item.subLabel)\"\n class=\"item-sub-label\"\n >\n {{ this.getOptionSubLabel(item) }}\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</ng-container>\n\n<!-- If group mode is true, display groups and sub-groups recursively -->\n<ng-container *ngIf=\"group\">\n <div class=\"option-items-container flex flex-col\">\n <ng-container *ngFor=\"let item of options\">\n <!-- Display as group header if the item has children -->\n <div *ngIf=\"!item.items\">\n <ng-container *ngIf=\"itemTemplate; else defaultItem\">\n <div\n *ngIf=\"!multiselect\"\n [ngClass]=\"{\n 'active-item': isEqual(this.activeItem, this.getValue(item))\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"item-wrapper\"\n >\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n <div\n *ngIf=\"multiselect\"\n [ngClass]=\"{\n 'multi-select-active-item': isSelected(\n this.activeItems,\n this.getValue(item)\n )\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"item-wrapper multi-select flex\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(this.activeItems, this.getValue(item))\"\n class=\"custom-checkbox\"\n />\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n\n <ng-template #defaultItem>\n <div\n *ngIf=\"!multiselect\"\n [ngClass]=\"{\n 'active-item': isEqual(this.activeItem, this.getValue(item))\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"default-item item-wrapper flex flex-col\"\n >\n <div\n [ngClass]=\"{ 'has-sub-label': item.subLabel }\"\n class=\"item-label\"\n >\n {{ item.label }}\n </div>\n <div *ngIf=\"item.subLabel\" class=\"item-sub-label\">\n {{ item.subLabel }}\n </div>\n </div>\n <div\n *ngIf=\"multiselect\"\n [ngClass]=\"{\n 'multi-select-active-item': isSelected(\n this.activeItems,\n this.getValue(item)\n )\n }\"\n (click)=\"onSelect && onSelect(item, $event)\"\n class=\"default-item item-wrapper multi-select flex\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(this.activeItems, this.getValue(item))\"\n class=\"custom-checkbox\"\n />\n <div class=\"flex flex-col\">\n <div\n [ngClass]=\"{ 'has-sub-label': item.subLabel }\"\n class=\"item-label\"\n >\n {{ item.label }}\n </div>\n <div *ngIf=\"item.subLabel\" class=\"item-sub-label\">\n {{ item.subLabel }}\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n\n <!-- Display as normal item if it doesn't have children -->\n <div class=\"flex flex-col\" *ngIf=\"item.items\">\n <ng-container *ngIf=\"groupTemplate; else defaultGroup\">\n <div\n class=\"group-wrapper\"\n (click)=\"onExpand && onExpand(item, options)\"\n >\n <ng-container\n *ngTemplateOutlet=\"groupTemplate; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n\n <ng-template #defaultGroup>\n <div\n (click)=\"onExpand && onExpand(item, options)\"\n class=\"default-group group-wrapper flex\"\n >\n <span *ngIf=\"!item.expanded\">\n <verben-svg\n icon=\"plus\"\n fill=\"#5d6674\"\n [width]=\"15\"\n [height]=\"15\"\n ></verben-svg>\n <!-- <svg class=\"plus-minus-icon\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.33214 6.66578H5.26102C3.95858 6.66578 2.65614 6.6663 1.35371 6.66544C1.06528 6.66527 0.850553 6.53571 0.728192 6.27369C0.525115 5.83859 0.844383 5.33734 1.32491 5.33322C1.64624 5.33031 1.96756 5.33271 2.28889 5.33271C3.28285 5.33271 4.27682 5.33271 5.27079 5.33271H5.33214V5.27633C5.33214 3.96674 5.33214 2.65714 5.33214 1.34755C5.33214 1.03086 5.53162 0.767472 5.82998 0.688643C6.25515 0.576225 6.66577 0.896512 6.66645 1.34327C6.66748 1.96311 6.66679 2.58294 6.66679 3.20278C6.66679 3.89254 6.66679 4.58229 6.66679 5.27222V5.33305H6.7242C8.0323 5.33305 9.34056 5.33305 10.6487 5.33305C10.933 5.33305 11.1737 5.48848 11.2788 5.73902C11.4659 6.18527 11.1431 6.66475 10.6533 6.66595C10.1549 6.66698 9.6564 6.66612 9.15805 6.66612C8.34968 6.66612 7.54148 6.66612 6.73311 6.66612H6.66679V6.72713C6.66679 8.03535 6.66679 9.34357 6.66679 10.6516C6.66679 10.9808 6.45343 11.2475 6.13485 11.3177C5.75989 11.4003 5.38252 11.1309 5.33899 10.749C5.33471 10.7107 5.33231 10.6722 5.33231 10.6336C5.33197 9.33123 5.33197 8.02867 5.33197 6.72627V6.66612L5.33214 6.66578Z\"\n fill=\"currentColor\" />\n </svg> -->\n </span>\n <span *ngIf=\"item.expanded\">\n <verben-svg\n icon=\"minus\"\n fill=\"#5d6674\"\n [width]=\"15\"\n [height]=\"2\"\n ></verben-svg>\n <!-- <svg class=\"plus-minus-icon\" width=\"10\" height=\"2\" viewBox=\"0 0 10 2\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.333984 0.332031H9.66732V1.66536H0.333984V0.332031Z\" fill=\"currentColor\" />\n </svg> -->\n </span>\n <div class=\"default-item flex flex-col\">\n <div\n [ngClass]=\"{ 'has-sub-label': item.subLabel }\"\n class=\"item-label\"\n >\n {{ item.label }}\n </div>\n <div *ngIf=\"item.subLabel\" class=\"item-sub-label\">\n {{ item.subLabel }}\n </div>\n </div>\n </div>\n </ng-template>\n <!-- Recursive rendering of sub-items (groups or individual items) -->\n <ng-container *ngIf=\"item.expanded\">\n <div class=\"group-wrapper-items flex flex-col\">\n <drop-down-item\n [itemTemplate]=\"itemTemplate\"\n [groupTemplate]=\"groupTemplate\"\n [activeItem]=\"activeItem\"\n [activeItems]=\"activeItems\"\n [selectKey]=\"selectKey\"\n [multiselect]=\"multiselect\"\n [optionValue]=\"optionValue\"\n [optionLabel]=\"optionLabel\"\n [optionSubLabel]=\"optionSubLabel\"\n [loadMoreCaption]=\"loadMoreCaption\"\n [options]=\"item.items\"\n [group]=\"group\"\n [onExpand]=\"onExpand\"\n [onLoadMore]=\"onLoadMore\"\n [onSelect]=\"onSelect\"\n ></drop-down-item>\n <div *ngIf=\"item.lazyLoad\" class=\"see-more-container flex\">\n <span\n class=\"see-more-caption\"\n (click)=\"onLoadMore && onLoadMore(item)\"\n >{{ loadMoreCaption }}</span\n >\n </div>\n <div *ngIf=\"item.isLoading\" class=\"loading-overlay\">\n <div class=\"loader\"></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</ng-container>\n","import { forwardRef, NgModule } from '@angular/core';\nimport { TemplateDirective } from './TemplateDirective.directive';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n declarations: [TemplateDirective],\n imports: [OverlayModule],\n exports: [TemplateDirective, OverlayModule],\n})\nexport class SharedModule {}\n","import { Component, Input, HostListener, TemplateRef, ElementRef, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'verben-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.css']\n})\nexport class TooltipComponent {\n @Input() tooltipContent!: TemplateRef<any>;\n @Input() customClass: string = ''; \n @Input() backgroundColor: string = 'black'; \n @Input() textColor: string = 'white'; \n @Input() padding: string = '5px 10px'; \n @Input() borderRadius: string = '4px'; \n @Input() zIndex: string = ''; \n @Input() border: string = '';\n @Input() width: string = '';\n @Input() top?: string; \n @Input() bottom?: string; \n @Input() left?: string; \n @Input() right?: string; \n visible = false;\n\n tooltipPosition = { top: '', left: '' };\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n onMouseEnter(event: MouseEvent) {\n this.visible = true;\n this.updateTooltipPosition(event);\n }\n\n onMouseLeave() {\n this.visible = false;\n }\n\n private updateTooltipPosition(event: MouseEvent) {\n const tooltipElement = this.elementRef.nativeElement.querySelector('.tooltip-box');\n const triggerElement = event.target as HTMLElement;\n\n if (tooltipElement && triggerElement) {\n\n const triggerRect = triggerElement.getBoundingClientRect();\n\n const tooltipRect = tooltipElement.getBoundingClientRect();\n\n const availableSpaceAbove = triggerRect.top;\n const availableSpaceBelow = window.innerHeight - triggerRect.bottom;\n const availableSpaceLeft = triggerRect.left;\n const availableSpaceRight = window.innerWidth - triggerRect.right;\n\n let top = triggerRect.bottom + 'px';\n let left = (triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2) + 'px'; \n\n if (availableSpaceBelow < tooltipRect.height && availableSpaceAbove >= tooltipRect.height) {\n top = (triggerRect.top - tooltipRect.height) + 'px';\n }\n\n if (availableSpaceRight < tooltipRect.width && availableSpaceLeft >= tooltipRect.width) {\n left = (triggerRect.left - tooltipRect.width) + 'px';\n } else if (availableSpaceLeft < tooltipRect.width && availableSpaceRight >= tooltipRect.width) {\n left = (triggerRect.right) + 'px';\n }\n\n this.tooltipPosition = { top, left };\n }\n }\n\n get tooltipStyles() {\n return {\n 'background-color':this.backgroundColor,\n 'width': this.width,\n 'color': this.textColor,\n 'padding': this.padding,\n 'border-radius': this.borderRadius,\n 'border': this.border,\n 'position': 'absolute',\n 'z-index': this.zIndex || '9999',\n 'top': this.top || this.tooltipPosition.top,\n 'left': this.left || this.tooltipPosition.left,\n 'right': this.right,\n 'bottom': this.bottom,\n };\n }\n}\n","<span class=\"tooltip-container\" \n(mouseenter)=\"onMouseEnter($event)\" \n(mouseleave)=\"onMouseLeave()\"\n>\n <ng-content></ng-content>\n <div [ngStyle]=\"tooltipStyles\" [ngClass]=\"customClass\" *ngIf=\"visible\">\n <ng-container *ngIf=\"tooltipContent\" >\n <ng-template [ngTemplateOutlet]=\"tooltipContent\"></ng-template>\n </ng-container>\n </div>\n</span>\n\n\n","import { NgModule } from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\nimport { SvgModule } from '../svg/svg.module';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations:[TooltipComponent],\n imports: [SvgModule,CommonModule],\n exports: [TooltipComponent]\n})\nexport class TooltipModule {}\n ","import {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownLoadEvent } from './DropdownLoadEvent';\nimport { TemplateDirective } from '../TemplateDirective.directive';\nimport { DropdownChangeEvent } from './DropdownChangeEvent';\nimport { DropDownItemComponent } from './drop-down-item/drop-down-item.component';\nimport { isEqual, cloneDeep } from 'lodash';\nimport { debounceTime, Subject } from 'rxjs';\nimport { SharedModule } from '../shared.module';\nimport { SvgModule } from '../svg/svg.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\n\nexport interface DropdownMenuItemWrapper extends DropdownMenuItem {\n expanded: boolean;\n items?: DropdownMenuItemWrapper[];\n isLoading: boolean;\n copy: DropdownMenuItemWrapper[];\n loadTimes?: DropdownLoadEvent;\n loadTimesCopy?: DropdownLoadEvent;\n}\n\n@Component({\n selector: 'verben-drop-down',\n standalone: true,\n imports: [\n CommonModule,\n DropDownItemComponent,\n SharedModule,\n FormsModule,\n SvgModule,\n TooltipModule,\n ],\n templateUrl: './drop-down.component.html',\n styleUrl: './drop-down.component.css',\n})\nexport class DropDownComponent\n implements ControlValueAccessor, OnInit, AfterContentInit\n{\n // INTERNAL\n private _options: any[] = []; // Internal variable for options\n\n private ignoreSet = false;\n // INPUTS\n @Input()\n set options(value: any[]) {\n if (this.group) {\n if (this.isDropdownMenuItemWrapperArray(value)) {\n this._options = value;\n } else {\n this._options = this.convertToExpandable(value); // Set the internal options variable\n }\n } else {\n this._options = value;\n }\n if (!this.ignoreSet) {\n this.firstSearch = false;\n } else {\n this.ignoreSet = false;\n }\n }\n\n get options(): any[] {\n return this._options; // Return the internal options variable\n }\n\n @Input() width: string = '12rem';\n @Input() showHorizontalLine: boolean = true;\n @Input() horizontalLineColor: string = 'rgba(255, 230, 129, 1)';\n @Input() optionLabel?: string;\n @Input() optionSubLabel?: string;\n @Input() optionValue?: string;\n @Input() placeholder?: string;\n @Input() invalidMessage?: string;\n @Input() errorPosition: string = '';\n @Input() loadMoreCaption: string = 'See more';\n @Input() display: 'default' | 'chip' = 'chip';\n @Input() showClear: boolean = false;\n @Input() lazyLoad: boolean = false;\n @Input() selectKey: string | null = null;\n @Input() styleClass: string = '';\n @Input() group: boolean = false;\n @Input() multiselect: boolean = false;\n @Input() filter: boolean = false;\n @Input() avoidDuplication: boolean = false;\n @Input() filterBy?: string;\n @Input() debounceTime: number = 500;\n @Input() minChar: number = 0;\n @Input() disabled: boolean = false;\n @Input() required: boolean = false;\n @Input() load?: (context: DropdownLoadEvent) => Promise<any[]>;\n @Input() asyncLabel?: (context: any) => Promise<string | null>;\n @Input() search?: (data: any, context: DropdownLoadEvent) => Promise<any[]>;\n\n // OUTPUTS\n @Output() optionsChange: EventEmitter<any[]> = new EventEmitter();\n @Output() onChange: EventEmitter<DropdownChangeEvent> = new EventEmitter();\n @Output() onClick: EventEmitter<Event> = new EventEmitter();\n @Output() onClear: EventEmitter<Event> = new EventEmitter();\n\n onItemChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n isInvalid: boolean = false;\n firstSearch: boolean = false;\n\n //TEMPLATING\n @ViewChild('dropdownContainer', { static: true })\n dropdownContainer!: ElementRef;\n @ViewChild('dropdownExpansion', { static: false })\n dropdownExpansion!: ElementRef;\n @ContentChildren(TemplateDirective) templates!: QueryList<TemplateDirective>;\n\n @HostBinding('class.focused') isFocused = false;\n isInputFocused = false;\n\n selectedItemTemplate: TemplateRef<any> | null = null;\n itemTemplate: TemplateRef<any> | null = null; // Allow null for custom item template\n groupTemplate: TemplateRef<any> | null = null;\n\n //VARIABLES\n isExpanded: boolean = false;\n loadTimes: DropdownLoadEvent = new DropdownLoadEvent();\n initialIncrement: boolean = false;\n selectedOption: any;\n selectedOptions: any[] = [];\n selectedOptionLabel: any;\n selectedOptionLabels: any[] = [];\n isLoading: boolean = false;\n optionsCopy: any[] = [];\n loadTimesCopy: DropdownLoadEvent = new DropdownLoadEvent();\n selectedContexts: any[] = [];\n searchHistory: string[] = [];\n searchTerm$ = new Subject<string>();\n searchContext: string = '';\n allowSelectAll: boolean = false;\n selectedAll: boolean = false;\n\n constructor(@Optional() @Self() private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this; // Assign this component as the value accessor\n this.ngControl?.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n ngOnInit(): void {\n if (this.multiselect) {\n if (!this.lazyLoad) {\n if (!this.group) {\n this.allowSelectAll = true;\n } else {\n let isAllowed = true;\n for (let item of this.options) {\n if (item.lazyLoad) {\n isAllowed = false;\n break;\n }\n }\n this.allowSelectAll = isAllowed;\n }\n }\n }\n if (this.filter) {\n this.optionsCopy = cloneDeep(this._options);\n this.searchTerm$\n .pipe(debounceTime(this.debounceTime)) // Adjust debounce time here (in ms)\n .subscribe(async (searchTerm) => {\n if (searchTerm.length < this.minChar) {\n return;\n }\n if (this.selectedContexts.length > 0) {\n const item = this.selectedContexts[\n this.selectedContexts.length - 1\n ] as DropdownMenuItemWrapper;\n if (item.search && item.loadTimes) {\n item.loadTimes.reset();\n item.isLoading = true;\n const result = await item.search(searchTerm, item.loadTimes);\n item.isLoading = false;\n if (this.searchContext.length > 0) {\n item.loadTimes.increaseLoadTime();\n item.items = this.convertToExpandable(result);\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n } else {\n if (this.search && this.loadTimes) {\n this.isLoading = true;\n this.loadTimes.reset();\n const result = await this.search(searchTerm, this.loadTimes);\n this.isLoading = false;\n if (this.searchContext.length > 0) {\n this._options = this.convertToExpandable(result);\n this.ignoreSet = true;\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n }\n });\n }\n }\n ngAfterContentInit(): void {\n this.templates.forEach((templateDirective) => {\n if (templateDirective.vTemplate === 'selected') {\n this.selectedItemTemplate = templateDirective.template;\n }\n if (templateDirective.vTemplate === 'item') {\n this.itemTemplate = templateDirective.template;\n }\n if (templateDirective.vTemplate === 'group') {\n this.groupTemplate = templateDirective.template;\n }\n });\n }\n\n @HostListener('focus') onFocus() {\n this.isFocused = true;\n }\n\n @HostListener('blur') onBlur() {\n this.isFocused = false;\n }\n\n onSearchFocus() {\n this.isInputFocused = true;\n }\n\n onSearchBlur() {\n this.isInputFocused = false;\n }\n\n onInputFocus() {\n this.isInputFocused = true;\n }\n\n onInputBlur() {\n this.isInputFocused = false;\n }\n\n updateOptionsCopy() {\n this.optionsCopy = cloneDeep(this._options);\n }\n\n onSearch(event: any) {\n if (this.disabled) {\n return;\n }\n const searchTerm = event.target.value;\n if (this.selectedContexts.length > 0) {\n const item = this.selectedContexts[\n this.selectedContexts.length - 1\n ] as DropdownMenuItemWrapper;\n if (searchTerm.trim().length == 0) {\n item.items = cloneDeep(item.copy);\n item.loadTimes = cloneDeep(item.loadTimesCopy);\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n return;\n }\n if (item.lazyLoad) {\n this.searchTerm$.next(searchTerm);\n } else {\n if (item.filterBy) {\n if (!item.items) {\n return;\n }\n item.items = item.items.filter(\n (x) =>\n typeof x.value[item.filterBy!] == 'string' &&\n new RegExp(searchTerm, 'i').test(x.value[item.filterBy!])\n );\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n } else {\n if (!item.items) {\n return;\n }\n item.items = item.copy.filter(\n (x) =>\n typeof x.value == 'string' &&\n new RegExp(searchTerm, 'i').test(x.value)\n );\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n } else {\n if (this.firstSearch == false) {\n this.optionsCopy = cloneDeep(this._options);\n this.firstSearch = true;\n }\n if (searchTerm.trim().length == 0) {\n this._options = cloneDeep(this.optionsCopy);\n this.loadTimes = cloneDeep(this.loadTimesCopy);\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n this.firstSearch = false;\n return;\n }\n if (this.lazyLoad) {\n this.searchTerm$.next(searchTerm);\n } else {\n if (this.filterBy) {\n this._options = this.optionsCopy.filter(\n (x) =>\n typeof x[this.filterBy!] == 'string' &&\n new RegExp(searchTerm, 'i').test(x[this.filterBy!])\n );\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n } else {\n this._options = this.optionsCopy.filter(\n (x) => typeof x == 'string' && new RegExp(searchTerm, 'i').test(x)\n );\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n }\n }\n\n onDropdownClick(event: Event) {\n if (this.disabled) {\n return;\n }\n this.toggleDropdown();\n this.onClick.emit(event);\n }\n\n toggleDropdown() {\n this.isExpanded = !this.isExpanded;\n }\n\n hasSibling(siblings: DropdownMenuItemWrapper[]): number | null {\n for (let i = 0; i < siblings.length; i++) {\n const index = this.selectedContexts.indexOf(siblings[i]);\n if (index > -1) {\n return index;\n }\n }\n return null;\n }\n\n async expandMenu(\n item: DropdownMenuItemWrapper,\n siblings: DropdownMenuItemWrapper[]\n ) {\n if (item.items) {\n if (this.filter) {\n for (let it of siblings.filter((x) => x !== item)) {\n if (it.expanded) {\n it.expanded = false;\n it.loadTimes && it.loadTimes.reset();\n }\n }\n }\n item.expanded = !item.expanded;\n if (item.expanded) {\n if (this.filter) {\n const siblingCheck = this.hasSibling(siblings);\n if (this.selectedContexts.length > 0 && siblingCheck !== null) {\n const contextsLength = this.selectedContexts.length;\n this.selectedContexts.splice(\n siblingCheck,\n contextsLength - siblingCheck\n );\n }\n this.selectedContexts.push(item);\n if (siblingCheck == null) {\n this.searchHistory.push(this.searchContext);\n }\n this.searchContext = '';\n }\n if (item.lazyLoad && item.loadMore && item.loadTimes) {\n item.isLoading = true;\n var result = await item.loadMore(item.loadTimes);\n item.isLoading = false;\n if (result.length > 0) {\n item.loadTimes.increaseLoadTime();\n }\n item.items = this.convertToExpandable(result);\n if (this.filter) {\n item.copy = cloneDeep(item.items);\n item.loadTimesCopy = cloneDeep(item.loadTimes);\n }\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n } else {\n if (this.filter) {\n const index = this.selectedContexts.indexOf(item);\n const contextsLength = this.selectedContexts.length;\n if (index > -1) {\n this.selectedContexts.splice(index, contextsLength - index);\n }\n }\n if (item.loadTimes) {\n item.loadTimes.reset();\n if (this.filter) {\n item.loadTimesCopy = cloneDeep(item.loadTimes);\n }\n }\n if (this.filter) {\n if (this.searchHistory.length > 0) {\n this.searchContext =\n this.searchHistory[this.searchHistory.length - 1];\n this.searchHistory.splice(this.searchHistory.length - 1, 1);\n }\n }\n }\n }\n }\n\n async loadMoreMenuItems(item: DropdownMenuItemWrapper) {\n if (item.loadMore && item.loadTimes && item.items) {\n const searchContext = this.searchContext.trim();\n item.isLoading = true;\n var result =\n searchContext.length > 0 && item.search\n ? await item.search(searchContext, item.loadTimes)\n : await item.loadMore(item.loadTimes);\n item.isLoading = false;\n if (result.length > 0) {\n item.loadTimes.increaseLoadTime();\n }\n const converted = this.convertToExpandable(result);\n for (let res of converted) {\n item.items.push(res);\n }\n if (this.filter) {\n if (searchContext.length == 0 || !item.search) {\n item.copy = cloneDeep(item.items);\n item.loadTimesCopy = cloneDeep(item.loadTimes);\n }\n }\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n\n async loadMore() {\n if (this.load) {\n if (this.options.length > 0 && !this.initialIncrement) {\n this.loadTimes.increaseLoadTime();\n if (this.filter) {\n this.loadTimesCopy = cloneDeep(this.loadTimes);\n }\n this.initialIncrement = true;\n }\n const searchContext = this.searchContext.trim();\n this.isLoading = true;\n var result =\n searchContext.length > 0 && this.search\n ? await this.search(searchContext, this.loadTimes)\n : await this.load(this.loadTimes);\n this.isLoading = false;\n if (this.group) {\n result = this.convertToExpandable(result);\n }\n if (result.length > 0) {\n this.loadTimes.increaseLoadTime();\n }\n for (let item of result) {\n this._options.push(item);\n }\n if (this.filter) {\n if (searchContext.length == 0 || !this.search) {\n this.optionsCopy = cloneDeep(this.options);\n this.loadTimesCopy = cloneDeep(this.loadTimes);\n }\n }\n this.group\n ? this.optionsChange.emit(this.options as DropdownMenuItem[])\n : this.optionsChange.emit(this.options);\n }\n }\n\n convertToExpandable(items: DropdownMenuItem[]): DropdownMenuItemWrapper[] {\n const wrapper: DropdownMenuItemWrapper[] = [];\n for (let item of items) {\n const convertedItem: DropdownMenuItemWrapper = {\n ...item,\n isLoading: false,\n expanded: false,\n loadTimes: item.items ? new DropdownLoadEvent() : undefined,\n loadTimesCopy: item.items ? new DropdownLoadEvent() : undefined,\n items: item.items ? this.convertToExpandable(item.items) : undefined,\n copy: item.items ? cloneDeep(this.convertToExpandable(item.items)) : [],\n };\n wrapper.push(convertedItem);\n }\n return wrapper;\n }\n\n onSelectAll(event: Event) {\n if (this.selectedAll) {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n this.onItemChange([]);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: [] });\n if (this.required) {\n this.isInvalid = true;\n }\n return;\n }\n if (!this.group) {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n for (let option of this.options) {\n const index = this.checkMultiselectValue(option);\n if (index == null) {\n this.selectedOptions.push(this.getValue(option));\n this.selectedOptionLabels.push(this.getOptionLabel(option));\n }\n }\n } else {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n for (let option of this.options) {\n for (let item of option.items) {\n const index = this.checkMultiselectValue(item);\n if (index == null) {\n this.selectedOptions.push(this.getValue(item));\n this.selectedOptionLabels.push(this.getOptionLabel(item));\n }\n }\n }\n }\n this.onItemChange(this.selectedOptions);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.selectedOptions });\n }\n\n clearSelection(event: Event) {\n if (!this.multiselect) {\n this.selectedOption = null;\n this.selectedOptionLabel = null;\n this.onItemChange(null);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: null });\n } else {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n this.onItemChange([]);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: [] });\n }\n if (this.required) {\n this.isInvalid = true;\n }\n this.selectedAll = false;\n this.onClear.emit(event);\n }\n\n onSelect(value: any, event: Event) {\n if (!this.multiselect) {\n this.selectedOption = this.getValue(value);\n this.selectedOptionLabel = this.getOptionLabel(value);\n this.onItemChange(this.getValue(value));\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.getValue(value) });\n this.toggleDropdown();\n } else {\n const exists = this.checkMultiselectValue(value);\n if (exists == null) {\n const newSelectedOptions = [\n ...this.selectedOptions,\n this.getValue(value),\n ];\n const newSelectedOptionLabels = [\n ...this.selectedOptionLabels,\n this.getOptionLabel(value),\n ];\n this.selectedOptions = newSelectedOptions;\n this.selectedOptionLabels = newSelectedOptionLabels;\n this.onItemChange(this.selectedOptions);\n this.onTouched();\n this.onChange.emit({\n originalEvent: event,\n value: this.selectedOptions,\n });\n } else {\n this.selectedAll = false;\n const newSelectedOptions = [...this.selectedOptions];\n newSelectedOptions.splice(exists, 1);\n const newSelectedOptionLabels = [...this.selectedOptionLabels];\n newSelectedOptionLabels.splice(exists, 1);\n this.selectedOptions = newSelectedOptions;\n this.selectedOptionLabels = newSelectedOptionLabels;\n this.onItemChange(this.selectedOptions);\n this.onTouched();\n this.onChange.emit({\n originalEvent: event,\n value: this.selectedOptions,\n });\n }\n }\n }\n\n onMultiselectItemClosed(index: number, event: Event) {\n const newSelectedOptions = [...this.selectedOptions];\n newSelectedOptions.splice(index, 1);\n const newSelectedOptionLabels = [...this.selectedOptionLabels];\n newSelectedOptionLabels.splice(index, 1);\n this.selectedOptions = newSelectedOptions;\n this.selectedOptionLabels = newSelectedOptionLabels;\n this.onItemChange(this.selectedOptions);\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.selectedOptions });\n }\n\n checkMultiselectValue(value: any): number | null {\n for (let i = 0; i < this.selectedOptions.length; i++) {\n if (isEqual(this.selectedOptions[i], this.getValue(value))) {\n return i;\n }\n }\n return null;\n }\n\n async writeValue(obj: any): Promise<void> {\n if (!this.multiselect) {\n if (obj == null || obj == undefined) {\n this.selectedOption = obj;\n this.selectedOptionLabel = obj;\n return;\n }\n this.selectedOption = null;\n this.selectedOptionLabel = null;\n if (!this.group && !this.lazyLoad) {\n for (let option of this.options) {\n const equalityCheck = this.selectKey\n ? isEqual(\n this.getValue(option)[this.selectKey],\n (obj && obj[this.selectKey]) || null\n )\n : isEqual(this.getValue(option), obj);\n if (equalityCheck) {\n this.selectedOption = this.getValue(option);\n this.selectedOptionLabel = this.asyncLabel\n ? await this.asyncLabel(option)\n : this.getOptionLabel(option);\n break;\n }\n }\n this.onTouched();\n this.onChange.emit({ value: this.selectedOption });\n return;\n }\n this.selectedOption = obj;\n if (this.asyncLabel) {\n this.selectedOptionLabel = await this.asyncLabel(obj);\n } else {\n const item = this.options.find((option) =>\n this.selectKey\n ? isEqual(\n this.getValue(option)[this.selectKey],\n (obj && obj[this.selectKey]) || null\n )\n : isEqual(this.getValue(option), obj)\n );\n if (item) {\n this.selectedOptionLabel = this.getOptionLabel(item);\n } else {\n this.selectedOptionLabel = obj;\n }\n }\n // this.selectedOptionLabel = this.asyncLabel\n // ? await this.asyncLabel(obj)\n // : this.getOptionLabel(obj);\n this.onTouched();\n this.onChange.emit({ value: this.selectedOption });\n } else {\n if (!Array.isArray(obj)) {\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n return;\n }\n this.selectedOptions = [];\n this.selectedOptionLabels = [];\n if (!this.group && !this.lazyLoad) {\n for (let option of this.options) {\n for (let object of obj) {\n const equalityCheck = this.selectKey\n ? isEqual(\n this.getValue(option)[this.selectKey],\n object[this.selectKey]\n )\n : isEqual(this.getValue(option), object);\n if (equalityCheck) {\n this.selectedOptions.push(this.getValue(option));\n this.selectedOptionLabels.push(\n this.asyncLabel\n ? await this.asyncLabel(object)\n : this.getOptionLabel(option)\n );\n break;\n }\n }\n }\n this.onTouched();\n this.onChange.emit({ value: this.selectedOptions });\n return;\n }\n this.selectedOptions = obj;\n for (let object of obj) {\n this.selectedOptionLabels.push(\n this.asyncLabel\n ? await this.asyncLabel(object)\n : this.getOptionLabel(object)\n );\n }\n this.onTouched();\n this.onChange.emit({ value: this.selectedOptions });\n }\n }\n\n getOptionFromValue(value: any): any {\n if (!this.optionValue) {\n return this.group ? value.value : value;\n }\n const index = this.group\n ? this.options.findIndex(\n (x) =>\n x.value[this.optionValue!] && x.value[this.optionValue!] == value\n )\n : this.options.findIndex(\n (x) => x[this.optionValue!] && x[this.optionValue!] == value\n );\n if (index < 0) {\n return this.group ? value.value : value;\n }\n return this.options[index];\n }\n\n registerOnChange(fn: any): void {\n this.onItemChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n getValue(item: any): any {\n if (!this.optionValue) {\n return this.group ? item.value : item;\n }\n return this.group ? item.value[this.optionValue] : item[this.optionValue];\n }\n getOptionLabel(item: any): any {\n if (this.group) {\n return item.label;\n }\n if (!this.optionLabel) {\n return item;\n }\n return typeof item === 'string' ? item : item[this.optionLabel];\n }\n\n private isDropdownMenuItemWrapperArray(value: any[]): boolean {\n return (\n Array.isArray(value) &&\n value.every((item) => this.isDropdownMenuItemWrapper(item))\n );\n }\n\n // Type guard function to check if an object is of type DropdownMenuItem\n private isDropdownMenuItemWrapper(item: any): boolean {\n return 'expanded' in item;\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: Event) {\n if (!this.isExpanded) {\n return;\n }\n if (\n !this.dropdownContainer.nativeElement.contains(event.target) &&\n this.isExpanded &&\n this.dropdownExpansion &&\n !this.dropdownExpansion.nativeElement.contains(event.target)\n ) {\n this.isExpanded = false;\n }\n }\n}\n","<div #dropdownContainer [ngClass]=\"styleClass\" [style.width]=\"width\" class=\"drop-down\">\n <div\n [ngClass]=\"{'right-error': errorPosition == 'right', 'left-error': errorPosition == 'left', 'top-error': errorPosition == 'top'}\"\n class=\"drop-down-input-wrapper\">\n <div (click)=\"onDropdownClick($event)\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\" [class.focused]=\"isFocused\"\n [ngClass]=\"{'ng-invalid': isInvalid, 'disabled': disabled}\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" tabindex=\"0\"\n class=\"drop-down-input verben-input flex\">\n <div class=\"drop-down-main-content\">\n <ng-container\n *ngIf=\"(selectedItemTemplate && selectedOption) || (selectedItemTemplate && selectedOptions.length > 0); else defaultItem\">\n <div *ngIf=\"!multiselect\">\n <ng-container\n *ngTemplateOutlet=\"selectedItemTemplate; context: { $implicit: selectedOption }\"></ng-container>\n </div>\n <div *ngIf=\"multiselect\">\n <ng-container\n *ngTemplateOutlet=\"selectedItemTemplate; context: { $implicit: selectedOptions }\"></ng-container>\n </div>\n </ng-container>\n\n <ng-template #defaultItem>\n <div *ngIf=\"!multiselect\" class=\"default-item flex\">\n <div class=\"dropdown-label place-holder\" *ngIf=\"!this.selectedOption\">{{placeholder}}</div>\n <div *ngIf=\"this.selectedOption\" class=\"item-label dropdown-label\">\n {{this.selectedOptionLabel}}</div>\n </div>\n <div *ngIf=\"multiselect\" class=\"default-item multi-select flex\">\n <div class=\"dropdown-label place-holder\" *ngIf=\"this.selectedOptions.length == 0\">{{placeholder}}</div>\n <verben-tooltip customClass=\"custom-tooltip-width\" border=\"1px solid #334155\" backgroundColor=\"white\"\n [tooltipContent]=\"multiselectTooltip\">\n <div *ngIf=\"this.selectedOptions.length > 0\" class=\"item-label dropdown-label\">\n <div *ngIf=\"display == 'chip'\" class=\"multiselect-items-container-two chip\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\"\n class=\"multiselect-item-chip multi-select flex\">\n <span>{{item}}</span>\n <verben-svg (click)=\"onMultiselectItemClosed(i, $event); $event.stopPropagation();\"\n icon=\"close-circle-full\" [width]=\"15\" [height]=\"15\"></verben-svg>\n <!-- <svg (click)=\"onMultiselectItemClosed(i, $event); $event.stopPropagation();\" width=\"10\" height=\"10\"\n viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z\"\n stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M6.25 3.91797L3.75 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M3.75 3.91797L6.25 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n </div>\n <div *ngIf=\"display != 'chip'\" class=\"multiselect-items-container-two normal\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\" class=\"multiselect-item\">\n {{i !== selectedOptionLabels.length - 1? item + ', ':item}}\n </span>\n </div>\n </div>\n </verben-tooltip>\n <ng-template #multiselectTooltip>\n <div class=\"multi-select-full-view\">\n <div *ngIf=\"this.selectedOptions.length > 0\" class=\"item-label dropdown-label\">\n <div *ngIf=\"display == 'chip'\" class=\"multiselect-items-container-two-tooltip chip\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\"\n class=\"multiselect-item-chip multi-select flex\">\n <span>{{item}}</span>\n <verben-svg (click)=\"onMultiselectItemClosed(i, $event); $event.stopPropagation();\"\n icon=\"close-circle-full\" [width]=\"15\" [height]=\"15\"></verben-svg>\n <!-- <svg (click)=\"onMultiselectItemClosed(i, $event); $event.stopPropagation();\" width=\"10\" height=\"10\"\n viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z\"\n stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M6.25 3.91797L3.75 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M3.75 3.91797L6.25 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n </div>\n <div *ngIf=\"display != 'chip'\" class=\"multiselect-items-container-two-tooltip-normal\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\" class=\"multiselect-item\">\n {{i !== selectedOptionLabels.length - 1? item + ', ':item}}\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </div>\n <span\n *ngIf=\"(showClear && this.selectedOption && !multiselect) || (showClear && this.selectedOptions.length > 0 && multiselect)\"\n (click)=\"this.clearSelection($event); $event.stopPropagation()\"\n class=\"drop-down-icon-item drop-down-clear-button\">\n <verben-svg icon=\"close-no-circle\" stroke=\"#94a3b8\" [width]=\"13\" [height]=\"13\"></verben-svg>\n <!-- <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.84375 0.84375L8.15625 8.15625\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M0.84375 8.15625L8.15625 0.84375\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n <span class=\"drop-down-icon-item drop-down-expand-button\">\n <verben-svg icon=\"chevron-down\" fill=\"#94a3b8\" [width]=\"15\" [height]=\"8\"></verben-svg>\n <!-- <svg width=\"12\" height=\"7\" viewBox=\"0 0 12 7\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6.00507 4.88027C6.20205 4.62775 6.30683 4.4622 6.44095 4.32704C7.74334 3.01731 9.05202 1.71387 10.3576 0.406242C10.5713 0.192495 10.7882 0.00913367 11.1193 0.0101814C11.4692 0.0112292 11.7228 0.15792 11.8884 0.456537C12.057 0.760394 12.0309 1.06111 11.8349 1.34296C11.7658 1.4425 11.6767 1.52737 11.5908 1.61433C9.98873 3.21639 8.37305 4.80483 6.793 6.42784C6.29111 6.94335 5.68759 6.92344 5.21399 6.43832C3.63184 4.8174 2.01826 3.22687 0.414109 1.62691C0.116539 1.32934 -0.116067 1.0192 0.0620561 0.565507C0.271612 0.031139 0.883519 -0.167941 1.35502 0.157919C1.49647 0.255363 1.61592 0.387385 1.73955 0.509975C3.02204 1.79036 4.30452 3.07075 5.58386 4.35533C5.70645 4.47792 5.80284 4.62671 6.00611 4.88132L6.00507 4.88027Z\"\n fill=\"currentColor\" />\n </svg> -->\n </span>\n </div>\n <div *ngIf=\"this.isInvalid && this.invalidMessage\" class=\"verben-error-message error-message\">{{invalidMessage}}\n </div>\n </div>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayWidth]=\"dropdownContainer.offsetWidth\"\n [cdkConnectedOverlayLockPosition]=\"false\" [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayPositions]=\"[\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n ]\" [cdkConnectedOverlayOpen]=\"isExpanded\" (detach)=\"isExpanded = false\">\n <div #dropdownExpansion class=\"drop-down-menu-item-wrapper\">\n <div *ngIf=\"multiselect && this.selectedOptions.length > 0\">\n <div *ngIf=\"display == 'chip'\" class=\"multiselect-items-container chip flex\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\" class=\"multiselect-item-chip flex\">\n <span>{{item}}</span>\n <verben-svg (click)=\"onMultiselectItemClosed(i, $event)\" icon=\"close-circle-full\" [width]=\"15\"\n [height]=\"15\"></verben-svg>\n <!-- <svg (click)=\"onMultiselectItemClosed(i, $event)\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z\"\n stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M6.25 3.91797L3.75 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M3.75 3.91797L6.25 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n </div>\n <div *ngIf=\"display != 'chip'\" class=\"multiselect-items-container normal\">\n <span *ngFor=\"let item of selectedOptionLabels; index as i\" class=\"multiselect-item\">\n {{i !== selectedOptionLabels.length - 1? item + ', ':item}}\n </span>\n </div>\n </div>\n <div *ngIf=\"allowSelectAll || filter\" class=\"actions-section flex\">\n <input *ngIf=\"allowSelectAll\" (click)=\"onSelectAll($event)\" type=\"checkbox\" [(ngModel)]=\"selectedAll\"\n class=\"custom-checkbox\" />\n <span class=\"select-all-caption\" *ngIf=\"allowSelectAll && !filter\">Select All</span>\n <div *ngIf=\"filter\" [ngClass]=\"{'focused': isInputFocused}\" tabindex=\"0\" (focus)=\"onSearchFocus()\"\n (blur)=\"onSearchBlur()\" class=\"search-section flex\">\n <span class=\"search-icon flex\">\n <verben-svg icon=\"search\" stroke=\"#64748b\" [width]=\"15\" [height]=\"15\"></verben-svg>\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"9\" cy=\"9\" r=\"8\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"></circle>\n <line x1=\"14\" y1=\"14\" x2=\"19\" y2=\"19\" stroke=\"currentColor\" stroke-width=\"2\"></line>\n </svg> -->\n </span>\n <span *ngIf=\"this.selectedContexts[this.selectedContexts.length - 1]\" class=\"search-context\">\n {{this.getOptionLabel(this.selectedContexts[this.selectedContexts.length - 1])}}\n </span>\n <div class=\"search-input-container\">\n <input (input)=\"onSearch($event)\" [(ngModel)]=\"searchContext\" (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur()\" placeholder=\"Search...\" class=\"search-input\" />\n </div>\n </div>\n </div>\n <div *ngIf=\"showHorizontalLine\" class=\"colored-underline-section\">\n <hr [style.background-color]=\"horizontalLineColor\" class=\"colored-underline\" />\n </div>\n <div class=\"drop-down-menu-item\">\n <drop-down-item [itemTemplate]=\"itemTemplate\" [groupTemplate]=\"groupTemplate\" [activeItem]=\"selectedOption\"\n [activeItems]=\"selectedOptions\" [multiselect]=\"multiselect\" [optionValue]=\"optionValue\"\n [optionLabel]=\"optionLabel\" [optionSubLabel]=\"optionSubLabel\" [selectKey]=\"selectKey\"\n [loadMoreCaption]=\"loadMoreCaption\" [options]=\"options\" [group]=\"group\" [onExpand]=\"expandMenu.bind(this)\"\n [onLoadMore]=\"loadMoreMenuItems.bind(this)\" [onSelect]=\"onSelect.bind(this)\"></drop-down-item>\n <div *ngIf=\"lazyLoad\">\n <div class=\"see-more-container flex justify-end\">\n <span class=\"see-more-caption\" (click)=\"loadMore()\">{{loadMoreCaption}}</span>\n </div>\n </div>\n <div *ngIf=\"isLoading\" class=\"loading-overlay\">\n <div class=\"loader\"></div>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { forwardRef, NgModule } from '@angular/core';\nimport { DropDownComponent } from './drop-down.component';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DropDownItemComponent } from './drop-down-item/drop-down-item.component';\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [],\n imports: [DropDownComponent, DropDownItemComponent, SharedModule],\n exports: [DropDownComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DropDownComponent),\n multi: true,\n },\n ],\n})\nexport class DropDownModule {}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output,\n QueryList,\n Self,\n TemplateRef,\n} from '@angular/core';\nimport { DropDownItemComponent } from '../drop-down/drop-down-item/drop-down-item.component';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ChipChangeEvent } from './ChipChangeEvent';\nimport { SharedModule } from '../shared.module';\nimport { TemplateDirective } from '../TemplateDirective.directive';\nimport { SvgModule } from '../svg/svg.module';\n\n@Component({\n selector: 'verben-chip',\n standalone: true,\n imports: [\n CommonModule,\n DropDownItemComponent,\n SharedModule,\n FormsModule,\n SvgModule,\n ],\n templateUrl: './chip.component.html',\n styleUrl: './chip.component.css',\n})\nexport class ChipComponent\n implements ControlValueAccessor, OnInit, AfterContentInit\n{\n // INPUTS\n @Input() width: string = '100%';\n @Input() placeholder: string = '';\n @Input() max?: number;\n @Input() styleClass: string = '';\n @Input() separator: string = ',';\n @Input() disabled: boolean = false;\n @Input() required: boolean = false;\n @Input() invalidMessage?: string;\n @Input() errorPosition: string = '';\n\n // OUTPUTS\n @Output() onChange: EventEmitter<ChipChangeEvent> = new EventEmitter();\n // @Output() onClear: EventEmitter<Event> = new EventEmitter();\n\n onItemChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n isInvalid: boolean = false;\n\n //TEMPLATING\n @ContentChildren(TemplateDirective) templates!: QueryList<TemplateDirective>;\n @HostBinding('class.focused') isFocused = false;\n isInputFocused = false;\n\n @HostListener('focus') onFocus() {\n this.isFocused = true;\n }\n\n @HostListener('blur') onBlur() {\n this.isFocused = false;\n }\n\n onInputFocus() {\n this.isFocused = true;\n }\n\n onInputBlur() {\n this.isFocused = false;\n }\n\n itemTemplate: TemplateRef<any> | null = null;\n\n chips: string[] = [];\n chipInput: string = '';\n\n constructor(@Self() private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this; // Assign this component as the value accessor\n this.ngControl?.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n\n ngOnInit(): void {}\n ngAfterContentInit(): void {\n this.templates.forEach((templateDirective) => {\n if (templateDirective.vTemplate === 'item') {\n this.itemTemplate = templateDirective.template;\n }\n });\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled) {\n return;\n }\n const inputValue = (event.target as HTMLInputElement).value;\n // Check for 'Enter' key or custom separator\n if (event.key === 'Enter' || event.key == this.separator) {\n event.preventDefault();\n this.addChips(inputValue);\n }\n\n // Handle 'Backspace' key when input is empty\n if (\n event.key === 'Backspace' &&\n inputValue.length === 0 &&\n this.chips.length > 0\n ) {\n this.removeLastChip();\n }\n }\n\n addChips(inputValue: string): void {\n if (this.disabled) {\n return;\n }\n // Split by separator and trim each part\n const values = inputValue\n .split(this.separator)\n .map((value) => value.trim());\n\n values.forEach((value) => {\n if (value.length > 0) {\n if (this.max && this.chips.length == this.max) {\n return;\n }\n this.chips.push(value); // Add chip\n }\n });\n if (this.isInvalid) {\n this.isInvalid = false;\n }\n\n this.chipInput = ''; // Clear input\n this.onTouched();\n this.onChange.emit({ value: this.chips });\n }\n\n removeChip(index: number, event: Event): void {\n if (this.disabled) {\n return;\n }\n this.chips.splice(index, 1);\n if (this.chips.length == 0) {\n if (this.required == true) {\n this.isInvalid = true;\n }\n }\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.chips });\n }\n\n removeLastChip(): void {\n if (this.disabled) {\n return;\n }\n this.chips.pop(); // Remove the last chip\n if (this.chips.length == 0) {\n if (this.required == true) {\n this.isInvalid = true;\n }\n }\n this.onTouched();\n this.onChange.emit({ originalEvent: event, value: this.chips });\n }\n\n // clearSelection(event: Event) {\n // if (this.disabled) {\n // return;\n // }\n // this.chips = [];\n // if (this.required == true) {\n // this.isInvalid = true;\n // }\n // this.onTouched();\n // this.onChange.emit({ originalEvent: event, value: this.chips });\n // }\n\n writeValue(obj: string[]): void {\n this.chips = obj;\n this.onTouched();\n this.onChange.emit({ value: this.chips });\n }\n registerOnChange(fn: any): void {\n this.onItemChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get placeholderState(): string | undefined {\n return this.chips && this.chips.length == 0 ? this.placeholder : '';\n }\n}\n","<div [ngClass]=\"styleClass\" [style.width]=\"width\"\n [ngClass]=\"{'right-error': errorPosition == 'right', 'left-error': errorPosition == 'left', 'top-error': errorPosition == 'top'}\"\n class=\"chip\">\n <div [class.focused]=\"isFocused\" [ngClass]=\"{'ng-invalid': isInvalid, 'disabled': disabled}\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\" tabindex=\"0\" class=\"chip-content-input verben-input flex\">\n <div class=\"chip-main-content\">\n <div class=\"default-item flex\">\n <!-- <div class=\"dropdown-label place-holder\" *ngIf=\"this.chips.length == 0\">{{placeholder}}</div> -->\n <div *ngIf=\"chips && this.chips.length > 0\" class=\"chips-container flex\">\n <span *ngFor=\"let item of chips; index as i\" class=\"item-chip flex\">\n <ng-container *ngIf=\"itemTemplate; else defaultItem\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n </ng-container>\n <ng-template #defaultItem>\n <span>{{item}}</span>\n </ng-template>\n <verben-svg (click)=\"removeChip(i, $event);\" icon=\"close-circle-full\" [width]=\"15\"\n [height]=\"15\"></verben-svg>\n <!-- <svg (click)=\"removeChip(i, $event);\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.00065 9.33333C7.30184 9.33333 9.16732 7.46785 9.16732 5.16667C9.16732 2.86548 7.30184 1 5.00065 1C2.69946 1 0.833984 2.86548 0.833984 5.16667C0.833984 7.46785 2.69946 9.33333 5.00065 9.33333Z\"\n stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M6.25 3.91797L3.75 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M3.75 3.91797L6.25 6.41797\" stroke=\"currentColor\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg> -->\n </span>\n </div>\n </div>\n </div>\n <div class=\"input-container\">\n <input [disabled]=\"this.max != null && chips && this.chips.length == max\" (keydown)=\"onKeyDown($event)\"\n [placeholder]=\"placeholderState\" [(ngModel)]=\"chipInput\" (focus)=\"onInputFocus()\" (blur)=\"onInputBlur()\"\n class=\"chip-input\" />\n </div>\n </div>\n <div *ngIf=\"this.isInvalid && this.invalidMessage\" class=\"verben-error-message error-message\">{{invalidMessage}}\n </div>\n</div>","import { forwardRef, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChipComponent } from './chip.component';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [],\n imports: [ChipComponent],\n exports: [ChipComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ChipComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ChipComponent),\n multi: true,\n },\n ],\n})\nexport class ChipModule {}\n","import { Component, Input, OnInit, ElementRef, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'verben-image',\n templateUrl: './image.component.html',\n styleUrl: './image.component.css',\n})\n\nexport class ImageComponent implements OnInit, AfterViewInit {\n @Input() url: string = '';\n @Input() placeholder: string = 'assets/placeholder.png';\n @Input() lazyLoad: boolean = false;\n @Input() width: string = '100%'; \n @Input() height: string = 'auto'; \n\n isLoaded: boolean = false;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {\n if (this.lazyLoad) {\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n const img: HTMLImageElement = this.el.nativeElement.querySelector('img[data-src]');\n img.src = img.getAttribute('data-src')!;\n this.isLoaded = true;\n observer.unobserve(entry.target);\n }\n });\n });\n observer.observe(this.el.nativeElement);\n }else { \n const img: HTMLImageElement = this.el.nativeElement.querySelector('img');\n img.onload = () => {\n this.isLoaded = true; \n };\n }\n }\n}\n\n\n\n","<div>\n <img [src]=\"url\"\n [attr.data-src]=\"lazyLoad ? url : null\"\n (load)=\"isLoaded = true\"\n (error)=\"isLoaded = true; url = placeholder\"\n [ngClass]=\"{'loaded': isLoaded}\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n alt=\"Image\"/>\n <ng-container *ngIf=\"!isLoaded\">\n <img\n [src]=\"placeholder\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n alt=\"Placeholder Image\"\n />\n </ng-container>\n </div>\n","import { Component, Input, Output, EventEmitter, OnInit, Optional, Self, Inject, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n\n@Component({\n selector: 'verbena-input',\n templateUrl: './verbena-input.component.html',\n styleUrls: ['./verbena-input.component.css']\n})\nexport class VerbenaInputComponent implements ControlValueAccessor, OnInit {\n @Input() label: string = '';\n @Input() placeHolder: string = '';\n @Input() required: boolean = false;\n @Input() svgPosition: 'left' | 'right' = 'left';\n @Input() minLength?: number;\n @Input() maxLength?: number;\n @Input() type: 'text' | 'password' | 'integer' | 'number' | 'decimal' | 'email' | 'date' | 'tel' | 'url' | 'file' | 'color' | 'search' = 'text';\n @Input() bgColor: string = '#f9f9f9';\n @Input() border: string = '';\n @Input() borderRadius: string = '5px';\n @Input() textColor: string = '#333';\n @Input() value: string = '';\n @Input() labelPosition: string = 'start';\n @Input() labelColor: string = 'black';\n @Input() disable: boolean = false; // Disable input\n @Input() readOnly: boolean = false; // Read-only input\n @Input() min?: number;\n @Input() max?: number;\n @Input() showBorder: boolean = true;\n @Input() showErrorMessage: boolean = true;\n @Input() errorMessageColor: string = 'red';\n @Input() errorBorderColor?: string;\n @Input() errorPosition: 'left' | 'right' | 'top' | 'bottom' = 'bottom';\n @Input() svg: string = '';\n @Input() fontSize: string = '';\n @Input() svgWidth: number = 20;\n @Input() svgHeight: number = 20;\n @Input() svgColor: string = '';\n @Input() capitalization: 'none' | 'uppercase' | 'lowercase' | 'sentencecase' | 'pascalcase' | 'camelcase' = 'none';\n @Input() inputContainerClass: string = '';\n @Input() inputFieldClass: string = '';\n @Input() passLength: number = 8;\n @Input() inputWrapperClass: string = '';\n @Input() passwordToggle?: boolean = false;\n @Input() customErrorMessages: {\n required?: string;\n minLength?: string;\n maxLength?: string;\n minValue?: string;\n maxValue?: string;\n integer?: string;\n number?: string;\n decimal?: string;\n email?: string;\n password?: string;\n tel?: string;\n url?: string;\n } = {};\n\n @Output() valueChange = new EventEmitter<string | FileList>();\n\n errorMessage: string | undefined;\n inputId: string = '';\n onChange: any = () => {};\n onTouch: any = () => {};\n isInvalid: boolean = false;\n\n\n @Input() icon: string = 'eye';\n @Input() textPass: string = 'Show';\n\n\n toggleIcon(): void {\n this.icon = this.icon === 'eye' ? 'eye-closed' : 'eye';\n this.textPass = this.textPass === 'Show' ? 'Hide' : 'Show';\n this.type = this.type === 'password' ? 'text' : 'password';\n\n }\n\n constructor(@Optional() @Self() @Inject(forwardRef(() => NgControl)) private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl?.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n\n ngOnInit() {\n this.inputId = `verbena-input-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n onInput(event: Event) {\n const target = event.target as HTMLInputElement;\n\n if (this.type === 'file' && target.files) {\n const files = target.files;\n this.onChange(files);\n this.valueChange.emit(files);\n } else {\n this.value = target.value.trim();\n this.value = this.applyCapitalization(this.value, this.capitalization);\n this.validate();\n const sanitizedValue = this.sanitizeValue(this.value);\n this.onChange(sanitizedValue);\n this.valueChange.emit(sanitizedValue);\n }\n\n this.validate();\n \n }\n\n applyCapitalization(value: string, format: string): string {\n switch (format) {\n case 'uppercase': return value.toUpperCase();\n case 'lowercase': return value.toLowerCase();\n case 'sentencecase': return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n case 'pascalcase': return value.replace(/\\w+/g, (w) => w[0].toUpperCase() + w.slice(1).toLowerCase());\n case 'camelcase': return value.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, (match, index) =>\n index === 0 ? match.toLowerCase() : match.toUpperCase()).replace(/\\s+/g, '');\n default: return value;\n }\n }\n\n sanitizeValue(value: string): string {\n if (['number', 'decimal', 'integer'].includes(this.type)) {\n return value.replace(/,/g, '');\n }\n return value;\n }\n\n validate() {\n this.errorMessage = '';\n\n if (this.required && !this.value) {\n this.errorMessage = this.customErrorMessages.required || 'This field is required.';\n this.isInvalid = true;\n return;\n }\n\n if (this.minLength && this.value.length < this.minLength) {\n this.errorMessage = this.customErrorMessages.minLength || `Minimum length is ${this.minLength}.`;\n this.isInvalid = true;\n return;\n }\n\n if (this.maxLength && this.value.length > this.maxLength) {\n this.errorMessage = this.customErrorMessages.maxLength || `Maximum length is ${this.maxLength}.`;\n this.isInvalid = true;\n return;\n }\n\n const sanitizedValue = this.sanitizeValue(this.value);\n const numericValue = parseFloat(sanitizedValue);\n\n if (['integer', 'number', 'decimal'].includes(this.type)) {\n if (this.min !== undefined && numericValue < this.min) {\n this.errorMessage = this.customErrorMessages.minValue || `Minimum value is ${this.min}.`;\n this.isInvalid = true;\n return;\n } else if (this.max !== undefined && numericValue > this.max) {\n this.errorMessage = this.customErrorMessages.maxValue || `Maximum value is ${this.max}.`;\n this.isInvalid = true;\n return;\n }\n }\n\n if (this.type === 'integer' && !/^\\d+$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.integer || 'Please enter a valid integer.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'number' && !/^\\d+(\\.\\d+)?$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.number || 'Please enter a valid number.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'decimal' && !/^\\d+(\\.\\d+)?$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.decimal || 'Please enter a valid decimal.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'email' && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.email || 'Please enter a valid email address.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'password' && this.value.length < this.passLength) {\n this.errorMessage = this.customErrorMessages.password || `Password must be at least ${this.passLength} characters long.`;\n this.isInvalid = true;\n return;\n }\n \n if (this.type === 'tel' && !/^\\+?[1-9]\\d{1,14}$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.tel || 'Please enter a valid telephone number.';\n this.isInvalid = true;\n return;\n }\n\n if (this.type === 'url' && !/^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/.test(this.value)) {\n this.errorMessage = this.customErrorMessages.url || 'Please enter a valid URL.';\n this.isInvalid = true;\n return;\n }\n\n this.isInvalid = false;\n }\n\n writeValue(value: any): void {\n this.value = value ? this.applyCapitalization(value.trim(), this.capitalization) : '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disable = isDisabled;\n }\n\n onBlur() {\n this.onTouch(); // for ControlValueAccessor\n this.validate(); // for manual validation\n }\n}\n","<div class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n 'display': 'flex',\n 'justify-content': labelPosition,\n 'color': labelColor,\n 'padding': '0'\n }\"\n class=\"input-field\"\n >\n <div [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content':'space-between'\n\n }\">\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper \">\n <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n\n </div>\n <input\n [ngClass]=\"{'ng-invalid': isInvalid}\"\n (blur)=\"onBlur()\"\n [id]=\"label\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeHolder\"\n [attr.minlength]=\"minLength?.toString()\"\n [attr.maxlength]=\"maxLength?.toString()\"\n [attr.disabled]=\"disable ? true : null\"\n [attr.readOnly]=\"readOnly ? true : null\"\n (input)=\"onInput($event)\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div *ngIf=\"isInvalid && showErrorMessage\" class=\"error-message\" [ngStyle]=\"{\n 'color': errorMessageColor,\n 'position': errorPosition\n }\">\n {{ errorMessage }}\n </div>\n</div>\n","import { forwardRef, NgModule } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { TooltipModule } from '../components/tooltip/tooltip.module';\nimport { VerbenaInputComponent } from './verbena-input.component';\nimport { SvgModule } from '../components/svg/svg.module';\n\n@NgModule({\n declarations: [VerbenaInputComponent],\n imports: [CommonModule, FormsModule, TooltipModule, SvgModule],\n exports: [VerbenaInputComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VerbenaInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => VerbenaInputComponent),\n multi: true,\n },\n ],\n})\nexport class VerbenaInputModule {}\n","import { NgModule } from '@angular/core';\nimport { ImageComponent } from './image.component';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaInputModule } from \"../../Verbena-input/verbena-input.module\";\n\n@NgModule({\n declarations: [ImageComponent],\n imports: [CommonModule, VerbenaInputModule,CommonModule],\n exports: [ImageComponent],\n})\nexport class ImageModule {}\n","export enum DataFilterType {\n String = 'String',\n Integer = 'Integer',\n Decimal = 'Decimal',\n Credit= 'Credit',\n Date = 'Date',\n Bool = \"Bool\",\n Number=\"Number\"\n}\n\nexport interface IDataFilter {\n name:string,\n type: DataFilterType;\n value?:any; \n checked: boolean;\n condition?:string;\n}\n\nexport enum ConditionalOptions {\n GreaterThanAndEqual = 'GTE',\n LessThanAndEqual = 'LTE',\n NotEqual = 'NEQ',\n On = 'On',\n Before = 'Before',\n After = 'After',\n Yes = 'Yes',\n No = 'No',\n }\n\nexport interface ITypeOption {\n type: DataFilterType;\n options: string[];\n}\n","import { ConditionalOptions, DataFilterType, ITypeOption } from \"./models/table-filter\";\n\nexport class Config {\n typeOptions: ITypeOption[] = [\n {\n type: DataFilterType.String,\n options: [ConditionalOptions.On,ConditionalOptions.NotEqual]\n },\n {\n type: DataFilterType.Integer,\n options: [ConditionalOptions.On, ConditionalOptions.Before,ConditionalOptions.LessThanAndEqual, ConditionalOptions.After,ConditionalOptions.GreaterThanAndEqual]\n },\n {\n type: DataFilterType.Decimal,\n options: [ConditionalOptions.On, ConditionalOptions.Before,ConditionalOptions.LessThanAndEqual, ConditionalOptions.After,ConditionalOptions.GreaterThanAndEqual]\n },\n {\n type: DataFilterType.Credit,\n options:[ConditionalOptions.On, ConditionalOptions.Before,ConditionalOptions.LessThanAndEqual, ConditionalOptions.After,ConditionalOptions.GreaterThanAndEqual]\n },\n {\n type: DataFilterType.Date,\n options: [ConditionalOptions.On,ConditionalOptions.Before,ConditionalOptions.After]\n },\n {\n type: DataFilterType.Bool,\n options: [ConditionalOptions.Yes,ConditionalOptions.No]\n }\n ];\n\n getConditionOptions(filterType: DataFilterType): string[] | null {\n const typeOption = this.typeOptions.find(option => option.type === filterType);\n return typeOption ? typeOption.options : null;\n } \n}\n\n\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ErrorMessageService {\n public createErrorMessage(\n inputElement: HTMLInputElement,\n message: string,\n position: 'above' | 'below',\n color: string,\n showErrorIcon: boolean,\n tooltipPosition: 'top' | 'bottom' | 'left' | 'right'\n ) {\n this.removeErrorMessage(inputElement);\n\n // Error message element\n if (message) {\n const errorElement = document.createElement('span');\n errorElement.textContent = message;\n errorElement.style.color = color;\n errorElement.style.fontSize = '12px';\n errorElement.classList.add('error-message');\n\n if (position === 'above') {\n inputElement.parentNode?.insertBefore(errorElement, inputElement);\n } else {\n inputElement.parentNode?.insertBefore(errorElement, inputElement.nextSibling);\n }\n }\n\n // Tooltip behavior for the error icon\n if (showErrorIcon) {\n const errorDot = document.createElement('div');\n errorDot.style.width = '8px';\n errorDot.style.height = '8px';\n errorDot.style.backgroundColor = 'red';\n errorDot.style.borderRadius = '50%';\n errorDot.style.position = 'absolute';\n errorDot.style.top = '50%';\n errorDot.style.right = '10px';\n errorDot.style.transform = 'translateY(-50%)';\n errorDot.style.cursor = 'pointer';\n errorDot.classList.add('error-dot');\n\n // Tooltip element\n const tooltip = document.createElement('span');\n tooltip.textContent = message;\n tooltip.style.position = 'absolute';\n tooltip.style.padding = '5px';\n tooltip.style.backgroundColor = 'red';\n tooltip.style.color = 'white';\n tooltip.style.borderRadius = '4px';\n tooltip.style.fontSize = '10px';\n tooltip.style.whiteSpace = 'nowrap';\n tooltip.style.visibility = 'hidden'; // Hidden until hover/click\n tooltip.classList.add('error-tooltip');\n\n this.setTooltipPosition(tooltip, errorDot, tooltipPosition);\n\n // Show tooltip on hover/click\n errorDot.addEventListener('mouseenter', () => (tooltip.style.visibility = 'visible'));\n errorDot.addEventListener('mouseleave', () => (tooltip.style.visibility = 'hidden'));\n errorDot.addEventListener('click', () => (tooltip.style.visibility = 'visible'));\n\n inputElement.parentNode?.appendChild(errorDot);\n inputElement.parentNode?.appendChild(tooltip);\n }\n }\n\n private setTooltipPosition(tooltip: HTMLElement, errorDot: HTMLElement, position: 'top' | 'bottom' | 'left' | 'right') {\n switch (position) {\n case 'top':\n tooltip.style.bottom = '20px';\n tooltip.style.left = '50%';\n tooltip.style.transform = 'translateX(-50%)';\n break;\n case 'bottom':\n tooltip.style.top = '20px';\n tooltip.style.left = '50%';\n tooltip.style.transform = 'translateX(-50%)';\n break;\n case 'left':\n tooltip.style.right = '20px';\n tooltip.style.top = '50%';\n tooltip.style.transform = 'translateY(-50%)';\n break;\n case 'right':\n tooltip.style.left = '20px';\n tooltip.style.top = '50%';\n tooltip.style.transform = 'translateY(-50%)';\n break;\n }\n }\n\n public removeErrorMessage(inputElement: HTMLInputElement) {\n const errorElements = inputElement.parentNode?.querySelectorAll('.error-message, .error-dot, .error-tooltip');\n if (errorElements) {\n errorElements.forEach((errorElement) => {\n errorElement.remove();\n });\n }\n }\n}\n","import { Directive, ElementRef, Input, HostListener, Renderer2 } from '@angular/core';\nimport { ErrorMessageService } from './error-message.service';\n\n@Directive({\n selector: '[appValidate]'\n})\nexport class ValidateDirective {\n @Input('appValidate') validationType: 'text' | 'number' | 'decimal' | 'integer' | 'email' = 'text';\n @Input() required: boolean = false;\n @Input() showBorder: boolean = true; // The controlling factor for the error icon\n @Input() showErrorMessage: boolean = true;\n\n @Input() errorBorderColor: string = 'red'; // Border color for errors\n @Input() errorMessageColor: string = 'red'; // Color for error message\n @Input() errorIconTooltipPosition: 'top' | 'bottom' | 'left' | 'right' = 'top'; // Tooltip position for error dot\n @Input() showErrorIcon: boolean = true;\n\n constructor(\n private el: ElementRef,\n private errorMessageService: ErrorMessageService,\n private renderer: Renderer2\n ) {}\n\n @HostListener('input', ['$event.target']) onInput(inputElement: any) {\n const value = inputElement.value.trim();\n\n switch (this.validationType) {\n case 'text':\n this.validateText(inputElement, value);\n break;\n case 'number':\n this.validateNumber(inputElement, value);\n break;\n case 'decimal':\n this.validateDecimal(inputElement, value);\n break;\n case 'integer':\n this.validateInteger(inputElement, value);\n break;\n case 'email':\n this.validateEmail(inputElement, value);\n break;\n }\n }\n\n private validateText(input: any, value: string) {\n if (this.required && value === '') {\n this.showError(input, 'Text is required');\n } else {\n this.clearError(input);\n }\n }\n\n private validateNumber(input: any, value: string) {\n if (isNaN(+value)) {\n this.blockInvalidInput(input, 'Please enter a valid number');\n } else {\n this.clearError(input);\n }\n }\n\n private validateDecimal(input: any, value: string) {\n const regex = /^\\d*\\.?\\d*$/;\n if (!regex.test(value)) {\n this.showError(input, 'Please enter a valid decimal number');\n } else {\n this.clearError(input);\n }\n }\n\n private validateInteger(input: any, value: string) {\n const regex = /^\\d+$/;\n if (!regex.test(value)) {\n this.blockInvalidInput(input, 'Please enter a valid integer');\n } else {\n this.clearError(input);\n }\n }\n\n private validateEmail(input: any, value: string) {\n const regex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!regex.test(value)) {\n this.blockInvalidInput(input, 'Please enter a valid email address');\n } else {\n this.clearError(input);\n }\n }\n\n private blockInvalidInput(input: any, message: string) {\n input.value = '';\n this.showError(input, message);\n }\n\n private showError(input: any, message: string) {\n if (this.showBorder) {\n this.renderer.setStyle(input, 'borderColor', this.errorBorderColor);\n this.renderer.addClass(input, 'error-with-dot'); // Add error class\n\n\n }\n }\n\n private clearError(input: any) {\n if (this.showBorder) {\n this.renderer.removeStyle(input, 'borderColor');\n this.renderer.removeClass(input, 'error-with-dot'); // Remove error class\n }\n this.errorMessageService.removeErrorMessage(input);\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { DataFilterType, IDataFilter } from '../../models/table-filter';\nimport { Config } from '../../config';\n\n@Component({\n selector: 'verben-table-filter',\n templateUrl: './table-filter.component.html',\n styleUrls: ['./table-filter.component.css'],\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filterOptions: IDataFilter[] = [];\n @Input() pd?: string;\n @Input() mg?: string;\n @Input() height?: string;\n @Input() width?: string;\n @Input() bgColor?: string;\n @Input() boxShadow?: string;\n @Input() textColor?: string;\n @Input() primaryColor?: string;\n @Input() secondaryColor?: string;\n @Input() tertiaryColor?: string;\n @Input() border?: string;\n @Input() borderRadius?: string;\n @Input() selectWidth?: string;\n @Input() maxFilterLength: number = 3;\n @Input() tooltip: boolean = false;\n @Output() filtersApplied = new EventEmitter<any>();\n @Output() resetSortData = new EventEmitter<any>();\n filterArray: string[] = [];\n selectedFilterValue: string = '';\n selectedFilterType?: any;\n conditionOptions: string[] = [];\n selectedCondition: string | undefined = '';\n inputValue?: string | number;\n savedFilters: IDataFilter[] = [];\n selectedFilters: IDataFilter[] = [];\n showAllFilters: boolean = false;\n editIndex: number | null = null;\n checkAll: boolean = false;\n isDuplicateFilter: boolean = false;\n disableAddFilterBtn: boolean = false;\n disableApplyFilterBtn: boolean = true;\n duplicateMessage?: string = '';\n configInstance: Config;\n storageKey: string = 'savedFilters';\n filterCount: number = 0;\n\n constructor() {\n this.configInstance = new Config();\n }\n\n ngOnInit(): void {\n this.filterArray = this.filterOptions.map((item) => item.name);\n }\n\n onFilterNameChange(selectedFilterValue: string) {\n const selectedFilter = this.filterOptions.find(\n (option) => option.name === selectedFilterValue\n );\n\n if (selectedFilter) {\n this.selectedFilterType = selectedFilter.type;\n this.conditionOptions =\n this.configInstance.getConditionOptions(this.selectedFilterType) || [];\n this.selectedCondition = '';\n }\n }\n\n resetFilters() {\n this.selectedFilterType = null;\n this.selectedCondition = '';\n this.inputValue = '';\n this.savedFilters = [];\n this.editIndex = null;\n this.checkAll = false;\n this.isDuplicateFilter = false;\n this.disableApplyFilterBtn = true;\n this.duplicateMessage = '';\n localStorage.removeItem(this.storageKey);\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n this.resetSortData.emit();\n }\n\n addFilter() {\n if (\n !this.selectedFilterValue ||\n !this.selectedCondition ||\n !this.inputValue\n ) {\n return;\n }\n\n if (this.editIndex === null && this.isDuplicateFilter) {\n return;\n }\n // 00:00 23:59\n if (\n (this.selectedFilterType as DataFilterType) == DataFilterType.Date &&\n this.selectedCondition == 'On'\n ) {\n const leftFilter: IDataFilter = {\n name: this.selectedFilterValue,\n type: this.selectedFilterType,\n condition: 'After',\n value: (this.inputValue as string).concat(' 00:00'),\n checked: true,\n };\n\n const rightFilter: IDataFilter = {\n name: this.selectedFilterValue,\n type: this.selectedFilterType,\n condition: 'Before',\n value: (this.inputValue as string).concat(' 23:59'),\n checked: true,\n };\n\n const filters = [leftFilter, rightFilter];\n\n for (let newFilter of filters) {\n if (this.editIndex !== null) {\n const isDuplicate = this.savedFilters.some(\n (filter, index) =>\n filter.name === newFilter.name &&\n filter.condition === newFilter.condition &&\n index !== this.editIndex\n );\n\n if (isDuplicate) {\n continue;\n }\n this.savedFilters[this.editIndex] = newFilter;\n this.editIndex = null;\n } else {\n if (\n this.savedFilters.some(\n (filter) =>\n filter.name === newFilter.name &&\n filter.condition === newFilter.condition\n )\n ) {\n continue;\n }\n this.savedFilters.push(newFilter);\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n }\n }\n } else {\n const newFilter: IDataFilter = {\n name: this.selectedFilterValue,\n type: this.selectedFilterType,\n condition: this.selectedCondition,\n value: this.inputValue,\n checked: true,\n };\n\n if (this.editIndex !== null) {\n const isDuplicate = this.savedFilters.some(\n (filter, index) =>\n filter.name === newFilter.name &&\n filter.condition === newFilter.condition &&\n index !== this.editIndex\n );\n\n if (isDuplicate) {\n return;\n }\n this.savedFilters[this.editIndex] = newFilter;\n this.editIndex = null;\n } else {\n if (\n this.savedFilters.some(\n (filter) =>\n filter.name === newFilter.name &&\n filter.condition === newFilter.condition\n )\n ) {\n return;\n }\n this.savedFilters.push(newFilter);\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n }\n }\n\n this.clearOperationSection();\n this.checkFilterButton();\n }\n\n toggleCheckbox(index: number) {\n this.savedFilters[index].checked = !this.savedFilters[index].checked;\n this.checkAll = this.savedFilters.every((item) => item.checked);\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n }\n\n deleteFilter(index: number) {\n this.savedFilters.splice(index, 1);\n this.checkDuplicateFilter();\n this.checkFilterButton();\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n if (this.savedFilters.length === 0) {\n this.checkAll = false;\n }\n }\n\n editFilter(index: number) {\n const filter = this.savedFilters[index];\n this.selectedFilterType = filter.type;\n this.selectedFilterValue = filter.name;\n this.onFilterNameChange(this.selectedFilterValue);\n this.selectedCondition = filter.condition;\n this.inputValue = filter.value;\n this.editIndex = index;\n }\n\n applyFilters() {\n this.selectedFilters = this.savedFilters.filter((filter) => filter.checked);\n this.filtersApplied.emit(this.selectedFilters);\n this.filtersApplied.emit(this.storageKey);\n }\n\n toggleShowMore() {\n this.showAllFilters = !this.showAllFilters;\n }\n\n get visibleFilters() {\n return this.showAllFilters\n ? this.savedFilters\n : this.savedFilters.slice(0, this.maxFilterLength);\n }\n\n clearOperationSection() {\n this.selectedFilterValue = '';\n this.selectedCondition = '';\n this.inputValue = '';\n }\n\n checkFilterButton() {\n this.disableApplyFilterBtn = this.savedFilters.length === 0;\n }\n\n toggleSelectAll(): void {\n this.checkAll = !this.checkAll;\n this.savedFilters.forEach((filter) => (filter.checked = this.checkAll));\n this.filterCount = this.savedFilters.filter(\n (item) => item.checked === true\n ).length;\n }\n\n checkDuplicateFilter(): void {\n if (this.editIndex !== null) {\n const exists = this.savedFilters.some(\n (filter, index) =>\n filter.name === this.selectedFilterValue &&\n filter.condition === this.selectedCondition &&\n index !== this.editIndex\n );\n this.disableAddFilterBtn = exists;\n this.isDuplicateFilter = exists;\n this.duplicateMessage = exists\n ? 'This entry is a duplicate and cannot be added.'\n : '';\n } else {\n const exists = this.savedFilters.some(\n (filter) =>\n filter.name === this.selectedFilterValue &&\n filter.condition === this.selectedCondition\n );\n this.disableAddFilterBtn = exists;\n this.isDuplicateFilter = exists;\n this.duplicateMessage = exists\n ? 'This entry is a duplicate and cannot be added.'\n : '';\n }\n }\n}\n","<section\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n>\n <div class=\"top\">\n <h3 [style.color]=\"tertiaryColor\" [style.font-size]=\"'14px'\">\n Filters\n <span [style.color]=\"secondaryColor\"\n ><sup>({{ filterCount }})</sup></span\n >\n </h3>\n <button\n [style.color]=\"secondaryColor\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetFilters()\"\n >\n Reset\n </button>\n </div>\n <hr />\n\n <!-- Saved Filters Section -->\n <div class=\"center\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Saved Filters</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div class=\"selectAllWrapper\" *ngIf=\"savedFilters.length\">\n <input\n type=\"checkbox\"\n [checked]=\"checkAll\"\n (change)=\"toggleSelectAll()\"\n />\n <p [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">Select All</p>\n </div>\n <div\n *ngFor=\"let filter of visibleFilters; let i = index\"\n class=\"centerInnerWrapper\"\n >\n <div class=\"checkboxWrapper\">\n <span\n ><input\n type=\"checkbox\"\n [checked]=\"filter.checked\"\n (click)=\"toggleCheckbox(i)\"\n /></span>\n <p\n [style.font-size]=\"'13px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ filter.name }} {{ filter.condition }} {{ filter.value}}\n </p>\n </div>\n <div class=\"iconWrapper\">\n <verben-svg\n icon=\"pencil\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editFilter(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"trash\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"deleteFilter(i)\"\n ></verben-svg>\n </div>\n </div>\n\n <div\n class=\"moreWrapper\"\n *ngIf=\"savedFilters.length > maxFilterLength\"\n (click)=\"toggleShowMore()\"\n >\n <p\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [style.color]=\"tertiaryColor\"\n >\n {{ showAllFilters ? \"Show less\" : \"Show more\" }}\n </p>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </div>\n <hr />\n\n <!-- Operation Section -->\n <div class=\"bottom\">\n <div class=\"savedWrapper\">\n <h3 [style.font-size]=\"'13px'\">Operation</h3>\n <div [ngStyle]=\"{'position':'relative'}\"> \n \n <verben-tooltip \n [tooltipContent]=\"tooltipTemplate\"\n [backgroundColor]=\"'grey'\"\n width=\"200px\" \n [top]=\"'20px'\" \n [right]=\"'0px'\" \n >\n <verben-svg \n icon=\"info\" \n [width]=\"15\" \n [height]=\"15\" \n *ngIf=\"isDuplicateFilter\"\n fill=\"red\"\n >\n </verben-svg>\n </verben-tooltip>\n \n <ng-template #tooltipTemplate>\n {{duplicateMessage}}\n </ng-template>\n <!-- <verben-tooltip\n [backgroundColor]=\"'grey'\"\n [textColor]=\"'white'\"\n [padding]=\"'10px'\"\n [borderRadius]=\"'8px'\"\n [top]=\"'20px'\" \n [right]=\"'0px'\" \n width=\"250px\" \n #tooltip \n *ngIf=\"tooltip\"\n >\n <h3>{{duplicateMessage}}</h3>\n </verben-tooltip> -->\n </div>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n *ngIf=\"!isDuplicateFilter\"\n ></verben-svg>\n </div>\n\n <div class=\"inputsWrapper\">\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n [options]=\"filterArray\"\n [(ngModel)]=\"selectedFilterValue\"\n (ngModelChange)=\"onFilterNameChange(selectedFilterValue)\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"7rem\"\n placeholder=\"Select value\"\n placeholder=\"Select value\"\n [options]=\"conditionOptions\"\n (onChange)=\"checkDuplicateFilter()\"\n [(ngModel)]=\"selectedCondition\"\n >\n </verben-drop-down>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Date'\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"80px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [type]=\"'date'\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Credit' || selectedFilterType === 'Integer'\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input integer\"\n [showBorder]=\"true\"\n\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n\n appValidate=\"integer\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType === 'Decimal'\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n placeHolder=\"input a decimal\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"false\"\n [errorPosition]=\"'bottom'\"\n appValidate=\"decimal\"\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n <verbena-input\n *ngIf=\"selectedFilterType !== 'Credit' && selectedFilterType !== 'Date' && selectedFilterType !== 'Integer' && selectedFilterType !== 'Decimal'\"\n border=\"1px solid #ccc\"\n placeHolder=\"input value\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100px\"\n height=\"25px\"\n pd=\"6px\"\n [showBorder]=\"true\"\n\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n\n [(ngModel)]=\"inputValue\"\n ></verbena-input>\n\n </div>\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.border-radius]=\"borderRadius\"\n [style.background-color]=\"'transparent'\"\n [style.color]=\"secondaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'500'\"\n [disabled]=\"disableAddFilterBtn\"\n [ngClass]=\"{\n disablebtn: disableAddFilterBtn,\n enableBtn: !disableAddFilterBtn\n }\"\n (click)=\"addFilter()\"\n >\n + Add\n </button>\n </div>\n <hr />\n\n <div class=\"btnWrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\"\n (click)=\"applyFilters()\"\n [disabled]=\"disableApplyFilterBtn\"\n [ngClass]=\"{\n disablebtn: disableApplyFilterBtn,\n enableBtn: !disableApplyFilterBtn\n }\"\n >\n Filter\n </button>\n </div>\n\n\n </div>\n\n</section>\n","import { NgModule } from '@angular/core';\nimport { ValidateDirective } from './validate.directive';\nimport { ErrorMessageService } from './error-message.service';\n\n\n@NgModule({\n declarations: [\n ValidateDirective\n ],\n providers: [\n ErrorMessageService\n ],\n exports: [\n ValidateDirective\n ]\n})\nexport class ValidationModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableFilterComponent } from './table-filter.component';\nimport { FormsModule } from '@angular/forms';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { ValidationModule } from '../../validate/validate.module';\nimport { SvgModule } from '../svg/svg.module';\n\n\n@NgModule({\n declarations:[TableFilterComponent],\n imports: [\n CommonModule,\n FormsModule,\n DropDownModule,\n VerbenaInputModule,\n ValidationModule,\n TooltipModule,\n SvgModule\n ],\n exports: [TableFilterComponent]\n})\nexport class TableFilterModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\ninterface NotificationOptions {\n timeout?: number;\n position?: string;\n buttons?: { text: string; bgColor?: string; primaryColor?: string }[];\n type: 'success' | 'error' | 'warning' | 'info';\n}\n\ninterface NotificationStyles {\n backgroundColor: string;\n textColor: string;\n iconName: string;\n iconWidth: number;\n iconHeight: number;\n stroke: string;\n fill: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotificationService {\n private notificationSubject = new BehaviorSubject<{\n message: string;\n options: NotificationOptions & NotificationStyles;\n } | null>(null);\n notification$ = this.notificationSubject.asObservable();\n\n private getDefaultOptions(\n type: NotificationOptions['type']\n ): NotificationStyles {\n const typeStyles: Record<NotificationOptions['type'], NotificationStyles> =\n {\n success: {\n backgroundColor: '#D6F3E6',\n textColor: '#2DB76F',\n iconName: 'success',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '',\n fill: '',\n },\n error: {\n backgroundColor: '#FFE681',\n textColor: '#E20000',\n iconName: 'warning',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '#E20000',\n fill: '#E20000',\n },\n warning: {\n backgroundColor: '#eda73f1a',\n textColor: '#EDA73F',\n iconName: 'dangerInfo',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '#EDA73F',\n fill: '#EDA73F',\n },\n info: {\n backgroundColor: '#E7F1FF',\n textColor: '#0552B5',\n iconName: 'dangerInfo',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '#0552B5',\n fill: '#0552B5',\n },\n };\n\n return (\n typeStyles[type] || {\n backgroundColor: '#333',\n textColor: '#fff',\n iconName: '',\n iconWidth: 20,\n iconHeight: 20,\n stroke: '',\n fill: '',\n }\n );\n }\n\n showNotification(\n type: NotificationOptions['type'],\n message: string,\n options: Partial<NotificationOptions> = {}\n ) {\n const defaultOptions: NotificationOptions & NotificationStyles = {\n timeout: 2000,\n position: 'top-right',\n ...this.getDefaultOptions(type),\n type,\n };\n this.notificationSubject.next({\n message,\n options: { ...defaultOptions, ...options },\n });\n }\n\n clearNotification() {\n this.notificationSubject.next(null);\n }\n\n success(message: string, options?: Partial<NotificationOptions>) {\n this.showNotification('success', message, options);\n }\n\n warning(message: string, options?: Partial<NotificationOptions>) {\n this.showNotification('warning', message, options);\n }\n\n error(message: string, options?: Partial<NotificationOptions>) {\n this.showNotification('error', message, options);\n }\n\n info(message: string, options?: Partial<NotificationOptions>) {\n this.showNotification('info', message, options);\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n OnChanges,\n SimpleChanges,\n AfterViewInit\n} from '@angular/core';\n\n@Component({\n selector: 'verbena-icon',\n templateUrl: './verbena-icon.component.html',\n styleUrls: ['./verbena-icon.component.css']\n})\nexport class VerbenaIconComponent implements OnInit, OnChanges, AfterViewInit {\n @Input() icon: string = '';\n @Input() variant: 'outlined' | 'rounded' | 'sharp' = 'outlined';\n @Input() size: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | number = 'md';\n @Input() fill: boolean = false;\n @Input() weight: number = 400; // Changed to number type to accommodate both property binding and string input\n @Input() color: string = '';\n\n iconName: string = '';\n iconStyles: any = {};\n fillClass: string = '';\n\n constructor() {}\n\n ngOnInit(): void {\n this.updateIcon();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updateIcon();\n }\n\n ngAfterViewInit(): void {\n this.ensureGoogleIconsLoaded();\n }\n\n private ensureGoogleIconsLoaded(): void {\n // Check if Google Icons stylesheet is already loaded\n const linkExists = document.querySelector('link[href*=\"material-symbols\"]');\n \n if (!linkExists) {\n const linkElement = document.createElement('link');\n linkElement.rel = 'stylesheet';\n linkElement.href = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200&family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200&family=Material+Symbols+Sharp:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200';\n document.head.appendChild(linkElement);\n }\n }\n\n private updateIcon(): void {\n // Set the icon name from the input\n this.iconName = this.icon;\n this.updateStyles();\n this.fillClass = this.fill ? 'material-fill-1' : 'material-fill-0';\n }\n\n private updateStyles(): void {\n const sizeMap: { [key: string]: number } = {\n 'sm': 18,\n 'md': 24,\n 'lg': 36,\n 'xl': 48,\n '2xl': 60,\n '3xl': 72,\n '4xl': 96\n };\n\n const iconSize = typeof this.size === 'number' \n ? this.size \n : sizeMap[this.size as string] || 24;\n \n // Ensure weight is a valid number between 100-700 and is a multiple of 100\n let weightValue = Number(this.weight);\n weightValue = !isNaN(weightValue) ? weightValue : 400;\n weightValue = Math.min(700, Math.max(100, Math.round(weightValue / 100) * 100));\n\n this.iconStyles = {\n 'font-size': `${iconSize}px`,\n 'font-variation-settings': `'FILL' ${this.fill ? 1 : 0}, 'wght' ${weightValue}, 'GRAD' 0`,\n 'color': this.color || 'inherit'\n };\n }\n}","<span \n class=\"material-symbols-{{ variant }}\"\n [ngStyle]=\"iconStyles\"\n [ngClass]=\"fillClass\">\n {{ iconName }}\n</span>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'verbena-button',\n templateUrl: './verbena-button.component.html',\n styleUrls: ['./verbena-button.component.css']\n})\nexport class VerbenaButtonComponent {\n @Input() text: string = '';\n @Input() icon: string = '';\n @Input() useIcon: boolean = false;\n\n @Input() svgPosition: 'left' | 'right' = 'left';\n @Input() iconPosition: 'left' | 'right' = 'left';\n @Input() bgColor?: string = '';\n @Input() textColor?: string = '';\n @Input() border: string = '';\n @Input() borderRadius: string = '';\n @Input() pd: string = '';\n @Input() width: string = '';\n @Input() height: string = '';\n @Input() fontSize: string = '14px';\n @Input() fontWeight: string = '500';\n @Input() disable: boolean = false;\n @Input() svgSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' = 'md';\n @Input() weight: number = 400;\n @Input() variant: 'outlined' | 'rounded' | 'sharp' = 'outlined';\n @Input() styleType: 'primary' | 'secondary' | 'danger' | 'small' | 'outline' | 'grey' | 'ylw-outline' = 'primary'; // Predefined styles\n\n @Input() svg: string = '';\n @Input() svgWidth: number = 20;\n @Input() svgHeight: number = 20;\n @Input() iconColor: string = '';\n @Input() svgColor: string = '';\n\n\n @Input() buttonClass: string = ''; // Custom class for button\n @Input() buttonTextClass: string = ''; // Custom class for button\n @Input() isLoading: any;\n @Input() spinnerSize: any;\n @Input() spinnerColor: any;\n\n get buttonStyles() {\n switch (this.styleType) {\n case 'primary':\n return {\n bgColor: this.bgColor || 'lightgrey',\n textColor: this.textColor || '#000000',\n border: this.border || 'none',\n borderRadius: this.borderRadius || '4px',\n pd: this.pd || '10px 15px'\n };\n case 'secondary':\n return {\n bgColor: this.bgColor || '#FFE681',\n textColor: this.textColor || '#404040',\n border: this.border || 'none',\n borderRadius: this.borderRadius || '4px',\n pd: this.pd || '10px 15px'\n };\n case 'danger':\n return {\n bgColor: this.bgColor || '#dc3545',\n textColor: this.textColor || '#ffffff',\n border: this.border || 'none',\n borderRadius: this.borderRadius || '4px',\n pd: this.pd || '8px 10px'\n };\n case 'small':\n return {\n bgColor: this.bgColor || '#fff',\n textColor: this.textColor || '#000',\n border: this.border || '1px solid grey',\n borderRadius: this.borderRadius || '7px',\n pd: this.pd || '0px 10px'\n };\n\n case 'outline':\n return {\n bgColor: this.bgColor || 'none',\n textColor: this.textColor || '#000',\n border: this.border || '1px solid #404040',\n borderRadius: this.borderRadius || '5px',\n pd: this.pd || '0px 8px'\n };\n case 'ylw-outline':\n return {\n bgColor: this.bgColor || '#FFFBEB',\n textColor: this.textColor || '#404040',\n border: this.border || '1px solid #FFE681',\n borderRadius: this.borderRadius || '5px',\n pd: this.pd || '10px 15px'\n };\n case 'grey':\n return {\n bgColor: this.bgColor || 'none',\n textColor: this.textColor || '#D9D9D940',\n border: this.border || '2px solid grey',\n borderRadius: this.borderRadius || '4px',\n pd: this.pd || '10px 15px'\n };\n default:\n return {};\n }\n }\n}\n","<button [ngStyle]=\"{\n 'background-color': buttonStyles.bgColor,\n 'color': buttonStyles.textColor,\n 'border': buttonStyles.border,\n 'border-radius': buttonStyles.borderRadius,\n 'padding': buttonStyles.pd,\n 'width': width,\n 'height': height,\n 'font-size': fontSize,\n 'display': 'flex',\n 'align-items': 'center',\n 'justify-content': 'center',\n 'cursor': isLoading ? 'not-allowed' : 'pointer',\n 'gap': '6px'\n}\"\n[disabled]=\"disable || isLoading\"\nclass=\"verbena-button {{ buttonClass }}\"\n>\n <!-- Loading Spinner -->\n <ng-container *ngIf=\"isLoading\">\n <div class=\"loading-spinner\" [ngStyle]=\"{'width': spinnerSize, 'height': spinnerSize, 'border-color': spinnerColor, 'border-top-color': 'transparent'}\"></div>\n <span *ngIf=\"text\" class=\"{{ buttonTextClass }}\" [ngStyle]=\"{'font-size': fontSize, 'font-weight': fontWeight}\">{{ text }}</span>\n\n </ng-container>\n\n <ng-container *ngIf=\"!isLoading\">\n <ng-container *ngIf=\"!useIcon && svg && svgPosition === 'left'\">\n <verben-svg [icon]=\"svg\" [width]=\"svgWidth\" [height]=\"svgHeight\" [size]=\"svgSize\" [stroke]=\"svgColor\"></verben-svg>\n </ng-container>\n <ng-container *ngIf=\"useIcon && icon && iconPosition === 'left'\">\n <verbena-icon [icon]=\"icon\" [variant]=\"variant\" [size]=\"svgSize\" [weight]=\"weight\" [color]=\"svgColor\"></verbena-icon>\n </ng-container>\n \n <span *ngIf=\"text\" class=\"{{ buttonTextClass }}\" [ngStyle]=\"{'font-size': fontSize, 'font-weight': fontWeight}\">{{ text }}</span>\n \n <ng-container *ngIf=\"!useIcon && svg && svgPosition === 'right'\">\n <verben-svg [icon]=\"svg\" [width]=\"svgWidth\" [height]=\"svgHeight\" [size]=\"svgSize\" [stroke]=\"svgColor\"></verben-svg>\n </ng-container>\n <ng-container *ngIf=\"useIcon && icon && iconPosition === 'right'\">\n <verbena-icon [icon]=\"icon\" [variant]=\"variant\" [size]=\"svgSize\" [weight]=\"weight\" [color]=\"svgColor\"></verbena-icon>\n </ng-container>\n </ng-container>\n \n</button>\n","import { Component, Input, EventEmitter, Output,OnInit, OnDestroy } from '@angular/core';\nimport { NotificationService } from '../../services/notification.services';\nimport { Subscription} from 'rxjs';\n\ninterface Button {\n text: string;\n bgColor?: string; \n primarycolor?: string; \n secondarycolor?: string;\n fontSize?:string; \n fontWeight?:string; \n}\n\n@Component({\n selector: 'verben-notification',\n templateUrl: './notification.component.html',\n styleUrl: './notification.component.css',\n})\n\nexport class NotificationComponent implements OnInit, OnDestroy {\n @Input() width?: string = '400px'; \n height?: string = '50px'; \n borderRadius: string = '15px';\nfontSize: string = '20px';\nfontWeight: string = '700';\n padding: string = '10px 2.5rem 10px 1.5rem';\n @Input() content?: string;\n top: string = '';\n bottom: string = '';\n @Input() buttons: Button[] = [];\n @Input() timeout: number = 10000; \n @Input() position: string = 'top-left';\n transition: string = '0.6s ease-in-out';\n\n showNotification = false;\n notificationContent = '';\n notificationOptions: any = {};\n subscription:Subscription\n \n constructor(\n private notificationService: NotificationService,\n ) {\n this.subscription = new Subscription();\n }\n\n ngOnInit() {\n this.subscription = this.notificationService.notification$.subscribe(notification => {\n if (notification) {\n this.showNotification = true;\n this.notificationContent = notification.message;\n this.notificationOptions = notification.options;\n\n setTimeout(() => {\n this.closeNotification();\n }, this.notificationOptions.timeout);\n } else {\n this.showNotification = false;\n }\n });\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n closeNotification() {\n this.showNotification = false;\n this.notificationService.clearNotification();\n }\n \n @Output() buttonClick = new EventEmitter<Button>();\n @Output() close = new EventEmitter();\n\n get notificationStyles() {\n return {\n 'background-color': this.notificationOptions.backgroundColor,\n 'color': this.notificationOptions.textColor,\n 'padding': this.padding,\n 'border-radius': this.borderRadius,\n 'border': '1px solid transparent',\n 'width': this.width,\n 'font-size':this.fontSize,\n 'font-weight':this.fontWeight,\n 'display':'flex',\n 'align-items':'center',\n 'justify-content':'space-between',\n ...this.getPositionStyles(), \n 'position': 'fixed',\n 'z-index': '9999',\n 'transition': this.transition,\n };\n };\n \n getPositionStyles() {\n const positions: { [key: string]: any } = {\n 'top-left': {\n top: this.top || '1rem' ,\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'top-right': {\n top: this.top || '1rem' ,\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'middle-left': {\n top: this.top || '45%' ,\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'middle-right': {\n top: this.top || '45%' ,\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'bottom-left': {\n bottom: this.bottom || '1rem',\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'bottom 0.5s ease-in-out',\n },\n 'bottom-right': {\n bottom: this.bottom || '1rem',\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'bottom 0.5s ease-in-out',\n },\n };\n \n return positions[this.position] || positions['top-left'];\n }\n \n get btnWrapperStyle(){ \n return { \n 'display':'flex',\n 'align-items':'center',\n 'gap':'0.2rem',\n }\n }\n\n get innerWrapperStyles(){ \n return { \n 'display':'flex',\n 'align-items':'center',\n 'gap':'1.5rem'\n }\n }\n\n onButtonClick(button: Button) {\n this.buttonClick.emit(button);\n }\n\n}\n\n\n\n","<div \n[ngStyle]=\"notificationStyles\"\nclass=\"mainwrapper\"\n>\n <div [ngStyle]=\"innerWrapperStyles\">\n <verben-svg\n [icon]=\"notificationOptions.iconName\"\n [width]=\"notificationOptions.iconWidth\"\n [height]=\"notificationOptions.iconHeight\"\n [stroke]=\"notificationOptions.stroke\"\n [fill]=\"notificationOptions.fill\"\n ></verben-svg>\n <p>{{ notificationContent }}</p>\n </div>\n <div>\n <div [ngStyle]=\"btnWrapperStyle\" *ngIf=\"buttons.length\">\n <verbena-button\n *ngFor=\"let button of buttons\"\n [text]=\"button.text\"\n [bgColor]=\"button.bgColor\"\n [textColor]=\"button.primarycolor || button.secondarycolor\"\n [borderRadius]=\"'8px'\"\n [pd]=\"'0px 8px'\"\n [fontSize]=\"'14px'\"\n (click)=\"onButtonClick(button)\"\n ></verbena-button>\n </div>\n <verben-svg\n class=\"closeSvg\"\n [icon]=\"'close'\"\n [size]=\"'sm'\"\n [stroke]=\"'grey'\"\n (click) = \"closeNotification()\"\n ></verben-svg>\n </div>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaIconComponent } from './verbena-icon.component';\n\n@NgModule({\n declarations: [VerbenaIconComponent],\n imports: [CommonModule],\n exports: [VerbenaIconComponent]\n})\nexport class VerbenaIconModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaButtonComponent } from './verbena-button.component';\nimport { SvgModule } from '../components/svg/svg.module';\nimport { VerbenaIconModule } from '../components/verbena-icon/verbena-icon.module';\n\n@NgModule({\n declarations: [VerbenaButtonComponent],\n imports: [CommonModule, SvgModule, VerbenaIconModule],\n exports: [VerbenaButtonComponent]\n})\nexport class VerbenaButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { NotificationComponent } from '../notification/notification.component';\nimport { CommonModule } from '@angular/common'\nimport { SvgModule } from '../svg/svg.module';\nimport { VerbenaButtonModule } from '../../verbena-button/verbena-button.module';\n\n\n@NgModule({\n declarations: [NotificationComponent],\n imports: [CommonModule,SvgModule,VerbenaButtonModule],\n exports: [NotificationComponent],\n})\nexport class NotificationModule {}\n\n\n\n","import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, ElementRef, AfterContentInit, Input } from '@angular/core';\n\n@Component({\n selector: 'verben-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.css']\n})\n\nexport class CardComponent implements AfterContentInit {\n hasHeader = false;\n hasFooter = false;\n hasBody = false;\n @Input() pd = '10px';\n @Input() mg = '0px';\n @Input() height?:string ;\n @Input() width?:string ;\n @Input() textColor?:string ;\n @Input() bgColor?:string ;\n @Input() border?:string ;\n @Input() borderRadius?:string ;\n @Input() disabled:boolean=false ;\n @Input() aspectRatio?:number ;\n @ContentChild('card-header', { static: false }) cardHeader: ElementRef | undefined;\n @ContentChild('card-body', { static: false }) cardBody: ElementRef | undefined;\n @ContentChild('card-footer', { static: false }) cardFooter: ElementRef | undefined;\n\n ngAfterContentInit() {\n this.hasHeader = !this.cardHeader;\n this.hasBody = !this.cardBody;\n this.hasFooter = !this.cardFooter;\n }\n}"," <div class=\"card\"\n [style.background-color]=\"bgColor\"\n [style.margin]=\"mg\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [ngClass]=\"disabled?'disable':''\"\n [style.aspect-ratio]=\"aspectRatio\"\n [style.padding]=\"pd\"\n >\n <div class=\"card-header\" *ngIf=\"hasHeader\">\n <ng-content select=\"[card-header]\"></ng-content>\n </div>\n <div class=\"card-body\" *ngIf=\"hasBody\">\n <ng-content select=\"[card-body]\"></ng-content>\n </div>\n <div class=\"card-footer\" *ngIf=\"hasFooter\">\n <ng-content select=\"[card-footer]\"></ng-content>\n </div>\n </div>\n ","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CardComponent } from './card.component';\n\n@NgModule({\n declarations:[CardComponent],\n imports: [ CommonModule],\n exports: [CardComponent]\n})\nexport class CardModule {}\n","import { Directive, ElementRef, HostListener, Renderer2, Output, EventEmitter } from '@angular/core';\n\n@Directive({\n selector: '[appConvertToNumber]'\n})\nexport class ConvertToNumberDirective {\n\n @Output() numberValue = new EventEmitter<number | null>();\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const num = Number(value);\n if (!isNaN(num)) {\n this.numberValue.emit(num);\n this.renderer.setProperty(this.el.nativeElement, 'value', num);\n } else {\n this.numberValue.emit(null);\n }\n console.log(`this is ${num}`)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ConvertToNumberDirective } from './convert-to-number.directive';\n\n@NgModule({\n declarations: [ConvertToNumberDirective],\n exports: [ConvertToNumberDirective]\n})\nexport class ConvertToNumberModule {}\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[appConvertToInteger]'\n})\nexport class ConvertToIntegerDirective {\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event): void {\n const inputValue = (event.target as HTMLInputElement).value;\n const integerValue = this.formatToInteger(inputValue);\n this.renderer.setProperty(this.el.nativeElement, 'value', integerValue);\n console.log(`this is ${integerValue}`)\n }\n\n private formatToInteger(value: string): string {\n if (!value) {\n return '';\n }\n const numericValue = parseInt(value, 10);\n if (isNaN(numericValue)) {\n return '';\n }\n return numericValue.toString();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConvertToIntegerDirective } from './convert-to-integer.directive';\n\n@NgModule({\n declarations: [ConvertToIntegerDirective],\n imports: [CommonModule],\n exports: [ConvertToIntegerDirective]\n})\nexport class ConvertToIntegerModule {}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { DataFilterType } from '../../models/table-filter';\nimport { IDataFilter } from '../../models/data-filter';\n\n@Component({\n selector: 'verben-sort-table',\n templateUrl: './sort-table.component.html',\n styleUrls: ['./sort-table.component.css'],\n\n})\nexport class SortTableComponent {\n @Input() enableDragAndDrop: boolean = false;\n @Input() sortOptions: IDataFilter[] = [];\n @Input() resetText: string = 'Reset';\n @Input() displayedOptions: number = 4;\n @Input() propertyText: string = 'Property';\n @Input() showMoreText: string = 'Show more';\n @Input() sortButtonText: string = 'Sort';\n @Input() pd?: string;\n @Input() mg?: string;\n @Input() height?: string;\n @Input() width?: string;\n @Input() bgColor?: string;\n @Input() boxShadow?: string;\n @Input() textColor?: string;\n @Input() primaryColor?: string;\n @Input() secondaryColor?: string;\n @Input() tertiaryColor?: string;\n @Input() border?: string=\"\";\n @Input() borderRadius?: string;\n @Input() selectWidth?: string;\n @Input() containerHeight?:string=\"400px\"\n @Output() selectedOptions = new EventEmitter<IDataFilter[]>();\n @Output() resetSortData = new EventEmitter();\n draggedIndex: number | null = null;\n visibleSortOptions: IDataFilter[]= [];\n hiddenSortOptions: IDataFilter[] = [];\n showMore: boolean = false;\n disableSortButton: boolean = false;\n selectedOrders: Map<number, 'asc' | 'desc'> = new Map();\n defaultSortOptions: IDataFilter[] = [];\n checkAll: boolean = false;\n ngOnInit() {\n this.defaultSortOptions = [...this.sortOptions];\n this.updateVisibleOptions();\n this.updateSortButtonState();\n }\n\n updateVisibleOptions() {\n if (this.sortOptions.length > this.displayedOptions) {\n this.visibleSortOptions = this.sortOptions.slice(\n 0,\n this.displayedOptions\n );\n this.hiddenSortOptions = this.sortOptions.slice(this.displayedOptions);\n this.showMore = true;\n } else {\n this.visibleSortOptions = this.sortOptions;\n this.showMore = false;\n }\n }\n\n toggleShowMore() {\n if (this.showMoreText === 'Show more') {\n this.visibleSortOptions.push(...this.hiddenSortOptions);\n this.showMoreText = 'Show less';\n } else {\n this.updateVisibleOptions();\n this.showMoreText = 'Show more';\n }\n }\n applySort() {\n const selectedSorts = this.sortOptions.filter((option) => option.checked);\n const selectedSortDetails = selectedSorts.map((sort, index) => {\n return {\n name:sort.name,\n type: sort.type || 'String',\n value:\n this.getSortOrder(\n sort.type,\n this.selectedOrders.get(index) || 'asc'\n ) || '',\n checked: sort.checked || false,\n };\n });\n this.selectedOptions.emit(selectedSortDetails);\n return selectedSortDetails;\n }\n getSortOrder(type: DataFilterType, selectedOrder: 'asc' | 'desc') {\n if (type === 'Number') {\n return selectedOrder === 'asc' ? 'asc' : 'desc';\n } else if (type === 'String') {\n return selectedOrder === 'asc' ? 'asc' : 'desc';\n } else if (type === 'Date') {\n return selectedOrder === 'asc' ? 'asc' : 'desc';\n }\n return null;\n }\n\n toggleSort(index: number) {\n const option = this.sortOptions[index];\n option.checked = !option.checked;\n if (!option.checked) {\n this.checkAll = false; \n } else if (this.sortOptions.every(option => option.checked)) {\n this.checkAll = true; \n }\n \n if (option.checked) {\n this.selectedOrders.set(index, 'asc');\n } else {\n this.selectedOrders.delete(index);\n }\n this.updateSortButtonState();\n }\n toggleSelectAll() {\n this.checkAll = !this.checkAll; // Toggle checkAll state\n \n // Set all options to checked/unchecked and assign default sort order when checked\n this.sortOptions.forEach((option, index) => {\n option.checked = this.checkAll;\n \n if (this.checkAll) {\n // If checked, set the default sort order to 'asc' for all\n this.selectedOrders.set(index, 'asc');\n } else {\n // If unchecked, remove the sort order\n this.selectedOrders.delete(index);\n }\n });\n \n this.updateSortButtonState(); // Update the state of the sort button\n }\n \n resetSort() {\n this.sortOptions.forEach((option, index) => {\n option.checked = false;\n this.selectedOrders.delete(index);\n });\n \n this.sortOptions = [...this.defaultSortOptions];\n this.updateVisibleOptions();\n this.updateSortButtonState();\n this.checkAll=false\n this.resetSortData.emit()\n }\n\n updateSortButtonState() {\n this.disableSortButton = this.countSelectedSorts() === 0;\n }\n\n countSelectedSorts(): number {\n return this.sortOptions.filter((option) => option.checked).length;\n }\n\n setSortOrder(index: number, order: 'asc' | 'desc') {\n this.selectedOrders.set(index, order);\n }\n\n onDragStart(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n this.draggedIndex = index;\n event.dataTransfer?.setData('text/plain', String(index));\n }\n\n onDragOver(event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n }\n\n onDrop(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n if (this.draggedIndex !== null) {\n this.swapColumns(this.draggedIndex, index);\n }\n }\n\n swapColumns(fromIndex: number, toIndex: number) {\n if (\n fromIndex < this.visibleSortOptions.length &&\n toIndex < this.visibleSortOptions.length\n ) {\n const temp = this.visibleSortOptions[fromIndex];\n this.visibleSortOptions[fromIndex] = this.visibleSortOptions[toIndex];\n this.visibleSortOptions[toIndex] = temp;\n\n const globalFromIndex = this.sortOptions.indexOf(temp);\n const globalToIndex = this.sortOptions.indexOf(\n this.visibleSortOptions[fromIndex]\n );\n\n if (globalFromIndex !== -1 && globalToIndex !== -1) {\n const tempGlobal = this.sortOptions[globalFromIndex];\n this.sortOptions[globalFromIndex] = this.sortOptions[globalToIndex];\n this.sortOptions[globalToIndex] = tempGlobal;\n }\n }\n this.draggedIndex = null;\n }\n}\n","<div\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n class=\"sort-wrapper\"\n>\n <!-- Header Section -->\n <div class=\"sort-header flex justify-between text-sm\">\n <span class=\"sort-title font-semibold\">\n Sort\n <sup [style.color]=\"secondaryColor\">[{{ countSelectedSorts() }}]</sup>\n </span>\n <span\n [style.color]=\"secondaryColor\"\n [style.font-size]=\"'12px'\"\n class=\"cursor-pointer\"\n (click)=\"resetSort()\"\n >\n {{ resetText }}\n </span>\n </div>\n\n <hr />\n\n <!-- Sort Options (Scrollable Section) -->\n <div class=\"sort-options flex-grow overflow-y-auto my-2\">\n <p class=\"pd\">{{ propertyText }}</p>\n\n <div class=\"flex items-center gap\" [style.padding]=\"'4px 10px'\">\n <label [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">\n <input type=\"checkbox\" [checked]=\"checkAll\" (change)=\"toggleSelectAll()\" />\n Select All\n </label>\n </div>\n\n <div\n *ngFor=\"let option of visibleSortOptions; let i = index\"\n [attr.draggable]=\"enableDragAndDrop\"\n (dragstart)=\"onDragStart(i, $event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(i, $event)\"\n class=\"sort-option\"\n >\n <div [style.font-size]=\"'14px'\" [style.margin-top]=\"'13px'\">\n <div class=\"flex items-center gap-md\">\n <verben-svg\n *ngIf=\"enableDragAndDrop\"\n fill=\"black\"\n [width]=\"25\"\n class=\"svg\"\n icon=\"square-dot\"\n ></verben-svg>\n <div class=\"flex items-center gap\">\n <input\n type=\"checkbox\"\n [checked]=\"option.checked\"\n (change)=\"toggleSort(i)\"\n />\n <span>{{ option.name }}</span>\n </div>\n </div>\n\n <!-- Sorting Controls -->\n <div class=\"flex items-center gap\" [style.margin-left]=\"'35px'\">\n <label\n class=\"flex items-center gap-sm\"\n *ngIf=\"option.type === 'Number'\"\n >\n <input\n type=\"radio\"\n name=\"sortOrder{{ i }}\"\n value=\"asc\"\n [checked]=\"selectedOrders.get(i) === 'asc'\"\n [disabled]=\"!option.checked\"\n (change)=\"setSortOrder(i, 'asc')\"\n />\n 1-100\n </label>\n <label\n class=\"flex items-center gap-sm\"\n *ngIf=\"option.type === 'Number'\"\n >\n <input\n type=\"radio\"\n name=\"sortOrder{{ i }}\"\n value=\"desc\"\n [checked]=\"selectedOrders.get(i) === 'desc'\"\n [disabled]=\"!option.checked\"\n (change)=\"setSortOrder(i, 'desc')\"\n />\n 100-1\n </label>\n <label\n class=\"flex items-center gap-sm\"\n *ngIf=\"option.type === 'String' || option.type === 'Date'\"\n >\n <input\n type=\"radio\"\n name=\"sortOrder{{ i }}\"\n value=\"asc\"\n [checked]=\"selectedOrders.get(i) === 'asc'\"\n [disabled]=\"!option.checked\"\n (change)=\"setSortOrder(i, 'asc')\"\n />\n A-Z\n </label>\n <label\n class=\"flex items-center gap-sm\"\n *ngIf=\"option.type === 'String' || option.type === 'Date'\"\n >\n <input\n type=\"radio\"\n name=\"sortOrder{{ i }}\"\n value=\"desc\"\n [checked]=\"selectedOrders.get(i) === 'desc'\"\n [disabled]=\"!option.checked\"\n (change)=\"setSortOrder(i, 'desc')\"\n />\n Z-A\n </label>\n </div>\n </div>\n </div>\n\n <!-- Show More -->\n <div *ngIf=\"showMore && hiddenSortOptions.length > 0\">\n <span\n [style.padding]=\"'20px 10px 0px 10px'\"\n [style.color]=\"'black'\"\n class=\"cursor-pointer block\"\n (click)=\"toggleShowMore()\"\n >\n {{ showMoreText }}\n </span>\n </div>\n </div>\n\n <hr />\n\n <!-- Sort Button -->\n <div class=\"btn-wrapper mt-2 flex-shrink-0\">\n <button\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\"\n [disabled]=\"countSelectedSorts() === 0\"\n [ngClass]=\"{\n disabledBtn: countSelectedSorts() === 0,\n enableBtn: countSelectedSorts() !== 0\n }\"\n (click)=\"applySort()\"\n >\n {{ sortButtonText }}\n </button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms'\nimport { CommonModule } from '@angular/common';\nimport { SortTableComponent } from './sort-table.component';\nimport { SvgModule } from '../svg/svg.module';\n@NgModule({\n declarations:[SortTableComponent],\n imports: [FormsModule,CommonModule,CommonModule, FormsModule, SvgModule],\n exports: [SortTableComponent]\n})\nexport class SortTableModule {}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { IDataFilter } from '../../models/data-filter';\n\ninterface Item {\n [key: string]: any;\n}\n\n@Component({\n selector: 'verben-visible-column',\n templateUrl: './visible-column.component.html',\n styleUrls: ['./visible-column.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VisibleColumnComponent {\n @Input() columns: IDataFilter[] = [];\n @Input() items: Item[] = [];\n @Input() enableDragAndDrop: boolean = true;\n @Input() displayedColumns: number = 5;\n @Input() showMore: boolean = false;\n @Input() pd?: string;\n @Input() mg?: string;\n @Input() height?: string;\n @Input() width?: string;\n @Input() bgColor?: string;\n @Input() boxShadow?: string;\n @Input() textColor?: string;\n @Input() primaryColor?: string;\n @Input() secondaryColor?: string;\n @Input() tertiaryColor?: string;\n @Input() border?: string;\n @Input() borderRadius?: string;\n @Input() selectWidth?: string;\n @Input() closeColumn?: boolean;\n @Output() columnsUpdated = new EventEmitter<IDataFilter[]>();\n @Output() resetFilter = new EventEmitter();\n originalColumnOrder: IDataFilter[] = [];\n visibleColumns: boolean[] = [];\n draggedIndex: number | null = null;\n selectAll: boolean = false;\n\n ngOnInit() {\n this.originalColumnOrder = [...this.columns];\n this.initializeColumnVisibility();\n }\n\n private initializeColumnVisibility() {\n this.visibleColumns = this.columns.map((column) => column.checked);\n this.updateSelectAllStatus();\n }\n\n resetColumns() {\n \n this.columns = JSON.parse(JSON.stringify(this.originalColumnOrder)); // Ensure it's a deep copy\n this.initializeColumnVisibility();\n this.selectAll = false; // Reset select all\n this.updateSelectAllStatus();\n this.resetFilter.emit()\n }\n\n getSelectedColumnCount(): number {\n return this.visibleColumns.filter((isVisible) => isVisible).length;\n }\n\n saveColumnVisibility() {\n \n this.columns.forEach((column, index) => {\n column.checked = this.visibleColumns[index];\n });\n \n const selectedColumns = this.columns.filter(column => column.checked);\n this.columnsUpdated.emit(selectedColumns);\n }\n\n toggleShowMore() {\n this.showMore = !this.showMore;\n this.displayedColumns = this.showMore ? this.columns.length : 5;\n }\n\n toggleSelectAll() {\n this.selectAll = !this.selectAll;\n this.visibleColumns = this.visibleColumns.map(() => this.selectAll);\n }\n\n updateSelectAllStatus() {\n this.selectAll = this.visibleColumns.every(isVisible => isVisible);\n }\n\n onDragStart(index: number, event: DragEvent) {\n this.draggedIndex = index;\n event.dataTransfer?.setData('text/plain', String(index));\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n\n onDrop(index: number, event: DragEvent) {\n event.preventDefault();\n if (this.draggedIndex !== null && this.draggedIndex !== index) {\n this.swapColumns(this.draggedIndex, index);\n }\n this.draggedIndex = null;\n }\n\n private swapColumns(fromIndex: number, toIndex: number) {\n [this.columns[fromIndex], this.columns[toIndex]] = [this.columns[toIndex], this.columns[fromIndex]];\n [this.visibleColumns[fromIndex], this.visibleColumns[toIndex]] = [this.visibleColumns[toIndex], this.visibleColumns[fromIndex]];\n }\n}\n","<div\n [style.background-color]=\"bgColor\"\n [style.box-shadow]=\"boxShadow\"\n [style.border]=\"border\"\n [style.border-radius]=\"borderRadius\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.padding]=\"pd\"\n class=\"column-control\"\n>\n <div class=\"visible-column-header flex justify-between text-sm\">\n <span class=\"column-title\">\n Column <sup>[{{ getSelectedColumnCount() }}]</sup>\n </span>\n <span class=\"column-reset\" (click)=\"resetColumns()\">Reset</span>\n </div>\n <hr />\n\n <!-- Select All Checkbox -->\n <div class=\"flex items-center gap\" [style.padding]=\"'4px 10px'\">\n <label [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">\n <input type=\"checkbox\" [checked]=\"selectAll\" (change)=\"toggleSelectAll()\" />\n Select All\n </label>\n </div>\n\n <div class=\"center\">\n <ul *ngFor=\"let column of columns; let i = index\" class=\"column-options-container\">\n <li\n [attr.draggable]=\"enableDragAndDrop\"\n (dragstart)=\"onDragStart(i, $event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop(i, $event)\"\n *ngIf=\"i < displayedColumns\"\n [style.font-size]=\"'14px'\"\n [style.margin-top]=\"'14px'\"\n class=\"flex gap-sm items-center\"\n >\n <verben-svg *ngIf=\"enableDragAndDrop\" fill=\"black\" class=\"svg\" icon=\"square-dot\"></verben-svg>\n <label class=\"flex gap-md items-center\">\n <input type=\"checkbox\" [(ngModel)]=\"visibleColumns[i]\" (ngModelChange)=\"updateSelectAllStatus()\" />\n {{ column.name }}\n </label>\n </li>\n </ul>\n\n <!-- Show More / Show Less -->\n <div *ngIf=\"displayedColumns <= columns.length\" class=\"cursor-pointer\" [style.padding]=\"'20px 10px 0px 10px'\">\n <span (click)=\"toggleShowMore()\">\n {{ displayedColumns === columns.length ? \"Show Less\" : \"Show More\" }}\n </span>\n </div>\n </div>\n\n <hr />\n\n <!-- Save Button -->\n <div class=\"btn-wrapper\">\n <button\n [style.margin-top]=\"'0.5rem'\"\n [style.outline]=\"'none'\"\n [style.border]=\"'none'\"\n [style.padding]=\"'0.2rem 1.6rem'\"\n [style.background-color]=\"primaryColor\"\n [style.color]=\"tertiaryColor\"\n [style.font-size]=\"'12px'\"\n [style.font-weight]=\"'600'\" \n [disabled]=\"getSelectedColumnCount() === 0\"\n [ngClass]=\"{\n disabledBtn: getSelectedColumnCount() === 0,\n enableBtn: getSelectedColumnCount() !== 0\n }\"\n (click)=\"saveColumnVisibility()\"\n >\n Save\n </button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms'\nimport { CommonModule } from '@angular/common';\nimport { VisibleColumnComponent } from './visible-column.component';\nimport { SvgModule } from '../svg/svg.module';\n@NgModule({\n declarations:[VisibleColumnComponent],\n imports: [CommonModule, FormsModule,SvgModule],\n exports: [VisibleColumnComponent]\n})\nexport class VisibleColumnModule {}\n","// directives/outside-click.directive.ts\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n } from '@angular/core';\n \n @Directive({\n selector: '[appOutSideClick]',\n standalone: true,\n })\n export class OutSideClickDirective implements OnInit, OnDestroy {\n @Input() appOutSideClick!: boolean\n @Output() outSideClick: EventEmitter<void> = new EventEmitter();\n constructor(private element: ElementRef, private renderer: Renderer2) {}\n \n private listener: (() => void) | undefined;\n \n onDocumentClick = (event: Event) => {\n const target=event.target as HTMLElement\n const isInsidePane = target.closest('.cdk-overlay-pane') !== null;\n if (!this.element.nativeElement.parentElement.contains(event.target)&& !isInsidePane) {\n this.outSideClick.emit();\n }\n };\n \n ngOnInit(): void {\n this.listener = this.renderer.listen(\n 'document',\n 'click',\n this.onDocumentClick\n );\n }\n \n ngOnDestroy(): void {\n if (this.listener) {\n this.listener();\n }\n }\n }","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\ninterface ViewState {\n isSearch?: boolean;\n isColumn?: boolean;\n isFilter?: boolean;\n isSort?: boolean;\n isExport?: boolean;\n isSelect?: boolean;\n isCreate?:boolean\n isToggle?:boolean\n isImport?:boolean\n isExtend?:boolean\n}\n\n@Component({\n selector: 'verben-data-view',\n templateUrl: './data-view.component.html',\n styleUrls: ['./data-view.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataViewComponent implements OnInit {\n @Input() buttonClass?: string;\n @Input() iconClass?: string;\n @Input() activeIconClass?: string=\"\"\n @Input() columnCustomClass?:string=''\n @Input() filterCustomClass?:string=''\n @Input() sortCustomClass?:string=''\n @Input() extendCustomClass?:string=''\n @Input() exportCustomClass?:string=''\n @Input() selectCustomClass?:string=''\n @Input() importCustomClass?:string=''\n @Input() zIndex?:number=5\n @Input() createCustomClass:string=''\n @Input() tableIcon: string = 'grid-3';\n @Input() cardIcon: string = 'list-view';\n @Input() cardClass: string = '';\n @Input() tableClass: string = '';\n @Input() searchKey:string='search';\n @Input() searchValue:string='';\n private searchSubject = new Subject<string>();\n @Input() viewState: ViewState = {\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate:true,\n isToggle:true,\n isExtend:true,\n isImport:true\n };\n\n @Input() searchTemplate?: Node;\n @Input() importTemplate?: Node;\n @Input() columnTemplate?: Node;\n @Input() extendTemplate?: Node;\n @Input() filterTemplate?: Node;\n @Input() sortTemplate?: Node;\n @Input() children?: Node;\n @Input() exportTemplate?: Node;\n @Input() createTemplate?: Node;\n @Input() selectedColumnCount?: number = 0;\n @Input() selectedSortCount: number = 0;\n @Input() selectedFilterTableCount: number = 0;\n @Input() inputWidth: string=\"100%\";\n @Input() milliseconds: number=400;\n @Input()showColumnChild: boolean = false;\n @Input() showSortChild: boolean = false;\n @Input() showFilterChild: boolean = false;\n @Input() showImportChild:boolean=false\n @Input() showExportChild: boolean = false;\n @Input() showExtendChild:boolean=false\n @Input() create: boolean = false;\n @Input() showSelected: boolean = false;\n \n @Input() isTableView: boolean = false;\n @Output() viewChange = new EventEmitter<boolean>();\n @Output() stateChange = new EventEmitter<{ key: string; value: boolean }>();\n @Output() onSearchChange=new EventEmitter<{ key: string; value: string }>()\n @ViewChild('filterContentWrapper') filterContentWrapper!: ElementRef;\n\n \n\n \n ngOnInit(): void {}\n constructor(private renderer: Renderer2) {\n this.searchSubject.pipe(debounceTime(this.milliseconds)).subscribe((value) => {\n this.onSearchChange.emit({ key: this.searchKey, value });\n });\n \n }\n \n toggleView(): void {\n this.isTableView = !this.isTableView;\n this.viewChange.emit(this.isTableView);\n }\n\n onSearch(event: any): void {\n this.searchValue = event.target.value;\n this.searchSubject.next(this.searchValue); \n }\nstopPropagation(event:Event) {\n event.stopPropagation(); \n}\n\n \nonClearSearch(){\n this.searchValue=\"\"\n this.onSearchChange.emit({ key: this.searchKey, value: this.searchValue });\n}\n toggleChildView(viewType: string): void {\n switch (viewType) {\n case 'column':\n this.showColumnChild = !this.showColumnChild;\n this.resetChildViewsExcept('column');\n break;\n case 'filter':\n this.showFilterChild = !this.showFilterChild;\n this.resetChildViewsExcept('filter');\n break;\n case 'sort':\n this.showSortChild = !this.showSortChild;\n this.resetChildViewsExcept('sort');\n break;\n case 'select':\n this.showSelected = !this.showSelected;\n this.resetChildViewsExcept('select');\n break;\n case 'export':\n this.showExportChild = !this.showExportChild;\n this.resetChildViewsExcept('export');\n break;\n case 'import':\n this.showImportChild = !this.showImportChild;\n this.resetChildViewsExcept('import');\n break;\n case 'extend':\n this.showExtendChild = !this.showExtendChild;\n this.resetChildViewsExcept('extend');\n break;\n case 'create':\n this.create = !this.create;\n this.resetChildViewsExcept('create');\n break;\n }\n this.stateChange.emit({ key: viewType, value: this.getChildViewState(viewType) });\n \n }\n resetChildViewsExcept(viewType: string): void {\n if (viewType !== 'column') this.showColumnChild = false;\n if (viewType !== 'filter') this.showFilterChild = false;\n if (viewType !== 'sort') this.showSortChild = false;\n if (viewType !== 'select') this.showSelected = false;\n if (viewType !== 'export') this.showExportChild = false;\n if (viewType !== 'import') this.showImportChild = false;\n if (viewType !== 'extend') this.showExtendChild = false;\n if (viewType !== 'create') this.create = false;\n }\n\n // Helper method to get the state of a specific child view\n getChildViewState(viewType: string): boolean {\n switch (viewType) {\n case 'column':\n return this.showColumnChild;\n case 'filter':\n return this.showFilterChild;\n case 'sort':\n return this.showSortChild;\n case 'select':\n return this.showSelected;\n case 'export':\n return this.showExportChild;\n case 'import':\n return this.showImportChild;\n case 'extend':\n return this.showExtendChild;\n case 'create':\n return this.create;\n default:\n return false;\n }\n }\n}\n","<div class=\"toolbar flex gap justify-between items-center \">\n <div class=\"flex items-center gap flex-1 justify-end\">\n <div *ngIf=\"viewState.isToggle\" class=\"toggle-button-container\">\n <button type=\"button\" (click)=\"toggleView()\" [ngClass]=\"buttonClass\">\n <verben-svg\n [icon]=\"tableIcon\"\n [class.active]=\"!isTableView\"\n [ngClass]=\"!isTableView ? activeIconClass : iconClass\"\n ></verben-svg>\n <verben-svg\n [icon]=\"cardIcon\"\n [class.active]=\"isTableView\"\n [ngClass]=\"isTableView ? activeIconClass : iconClass\"\n [width]=\"25\"\n [height]=\"25\"\n ></verben-svg>\n </button>\n </div>\n <!-- Search Input -->\n <div\n [style.width]=\"inputWidth\"\n class=\"search-input\"\n *ngIf=\"viewState.isSearch\"\n >\n <verben-svg\n [icon]=\"'search2'\"\n [width]=\"20\"\n [height]=\"20\"\n ></verben-svg>\n <input\n [type]=\"'text'\"\n [placeholder]=\"'Search'\"\n (input)=\"onSearch($event)\"\n [style.border]=\"'0'\"\n [value]=\"searchValue\"\n />\n <verben-svg\n *ngIf=\"searchValue.length > 0\"\n [icon]=\"'close'\"\n [width]=\"15\"\n (click)=\"onClearSearch()\"\n class=\"close-icon-class\"\n [height]=\"15\"\n ></verben-svg>\n </div>\n </div>\n<div class=\"relative flex items-center gap-2\">\n <!-- Column Section -->\n <ng-container\n [appOutSideClick]=\"showColumnChild\"\n (outSideClick)=\"resetChildViewsExcept('column')\"\n *ngIf=\"viewState.isColumn && isTableView\"\n >\n <ng-container *ngIf=\"columnTemplate; else defaultColumn\"></ng-container>\n <ng-template #defaultColumn>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n columnCustomClass ? columnCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('column')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'column'\"></verben-svg>\n <span\n >Columns <sup>({{ selectedColumnCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"showColumnChild\" select=\"[column-content]\">\n </ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Filter Section -->\n <ng-container\n [appOutSideClick]=\"showFilterChild\"\n (outSideClick)=\"resetChildViewsExcept('filter')\"\n *ngIf=\"viewState.isFilter\"\n (click)=\"stopPropagation($event)\"\n >\n <ng-container *ngIf=\"filterTemplate; else defaultFilter\"></ng-container>\n <ng-template #defaultFilter>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n filterCustomClass ? filterCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('filter')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'filter'\"></verben-svg>\n <span\n >Filter <sup>({{ selectedFilterTableCount }})</sup></span\n >\n </span>\n <div (click)=\"stopPropagation($event)\" [style.z-index]=\"zIndex\" class=\"data-view-element\">\n\n <ng-content *ngIf=\"showFilterChild\" select=\"[filter-content]\"></ng-content>\n \n \n </div>\n </ng-template>\n </ng-container>\n <!--import Section-->\n <ng-container\n [appOutSideClick]=\"showImportChild\"\n (outSideClick)=\"resetChildViewsExcept('import')\"\n *ngIf=\"viewState.isImport\"\n (click)=\"stopPropagation($event)\"\n >\n <ng-container *ngIf=\"importTemplate; else defaultImport\"></ng-container>\n <ng-template #defaultImport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n importCustomClass ? importCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('import')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'file'\"></verben-svg>\n <span\n >Import</span\n >\n </span>\n <div (click)=\"stopPropagation($event)\" [style.z-index]=\"zIndex\" class=\"data-view-element\">\n\n <ng-content *ngIf=\"showImportChild\" select=\"[import-content]\"></ng-content>\n \n \n </div>\n </ng-template>\n </ng-container>\n <!-- Sort Section -->\n <ng-container\n [appOutSideClick]=\"showSortChild\"\n (outSideClick)=\"resetChildViewsExcept('sort')\"\n *ngIf=\"viewState.isSort\"\n >\n <ng-container *ngIf=\"sortTemplate; else defaultSort\"></ng-container>\n <ng-template #defaultSort>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n sortCustomClass ? sortCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('sort')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'sort'\"></verben-svg>\n <span\n >Sort <sup>({{ selectedSortCount }})</sup></span\n >\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showSortChild\"\n select=\"[sort-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n<!--Extend Section-->\n<ng-container\n[appOutSideClick]=\"showExtendChild\"\n(outSideClick)=\"resetChildViewsExcept('extend')\"\n*ngIf=\"viewState.isExtend\"\n(click)=\"stopPropagation($event)\"\n>\n<ng-container *ngIf=\"extendTemplate; else defaultExtend\"></ng-container>\n<ng-template #defaultExtend>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n importCustomClass ? extendCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('extend')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'extend'\"></verben-svg>\n <span\n >Extend</span\n >\n </span>\n <div (click)=\"stopPropagation($event)\" [style.z-index]=\"zIndex\" class=\"data-view-element\">\n\n <ng-content *ngIf=\"showImportChild\" select=\"[extend-content]\"></ng-content>\n \n \n </div>\n</ng-template>\n</ng-container>\n <!-- Export Section -->\n <ng-container\n [appOutSideClick]=\"showExportChild\"\n (outSideClick)=\"resetChildViewsExcept('export')\"\n *ngIf=\"viewState.isExport\"\n >\n <ng-container *ngIf=\"exportTemplate; else defaultExport\"></ng-container>\n <ng-template #defaultExport>\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n exportCustomClass ? exportCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('export')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'export'\"></verben-svg>\n Export\n </span>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content\n *ngIf=\"showExportChild\"\n select=\"[export-content]\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Select Section -->\n <!-- <div *ngIf=\"viewState.isSelect\">\n <span\n [ngClass]=\"[\n 'flex gap text-xs items-center pd rounded cursor-pointer',\n selectCustomClass ? selectCustomClass : ''\n ]\"\n [style.background-color]=\"'#D9D9D940'\"\n (click)=\"toggleChildView('select')\"\n >\n <verben-svg [width]=\"15\" [icon]=\"'select'\"></verben-svg>\n <span>Select</span>\n <verben-svg [width]=\"6\" [icon]=\"'chevron-down'\"></verben-svg>\n </span>\n </div> -->\n\n <!-- Create Button jj-->\n\n <div\n [appOutSideClick]=\"create\"\n (outSideClick)=\"resetChildViewsExcept('create')\"\n *ngIf=\"viewState.isCreate\"\n >\n <verbena-button\n class=\"text-sm font-semibold\"\n [bgColor]=\"'#FFE681'\"\n [buttonClass]=\"createCustomClass\"\n [pd]=\"'6px'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#000'\"\n [svg]=\"'add'\"\n [svgPosition]=\"'right'\"\n [text]=\"'Create New'\"\n (click)=\"toggleChildView('create')\"\n >\n </verbena-button>\n <ng-container *ngIf=\"createTemplate; else defaultCreate\"></ng-container>\n <ng-template #defaultCreate>\n <div [style.z-index]=\"zIndex\" class=\"data-view-element\">\n <ng-content *ngIf=\"create\" select=\"[create-content]\"></ng-content>\n </div>\n </ng-template>\n </div>\n</div>\n \n \n <div>\n <ng-container *ngIf=\"children; else defaultChildren\"></ng-container>\n <ng-template #defaultChildren>\n <div>\n <ng-content select=\"[children]\"></ng-content>\n </div>\n </ng-template>\n </div>\n \n</div>\n\n<!-- Grid and List View Handling -->\n<div *ngIf=\"isTableView; else listViewTemplate\">\n \n <div [style.overflow]=\"'auto'\" [class]=\"tableClass\">\n <ng-content select=\"[table-content]\"></ng-content>\n </div>\n</div>\n<ng-template #listViewTemplate>\n <div [class]=\"cardClass\">\n <ng-content select=\"[card-content]\"></ng-content>\n </div>\n</ng-template>\n","import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[libColumn]',\n})\nexport class ColumnDirective {\n @Input('libColumn') columnId!: string;\n\n @ContentChild('cell', { static: true }) cellTemplate?: TemplateRef<any>;\n @ContentChild('cellEdit', { static: true })\n cellEditTemplate?: TemplateRef<any>;\n @ContentChild('header', { static: true }) headerTemplate?: TemplateRef<any>;\n @ContentChild('footer', { static: true }) footerTemplate?: TemplateRef<any>;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n EventEmitter,\n input,\n Input,\n Output,\n Signal,\n signal,\n} from '@angular/core';\nimport {\n ColumnDefinition,\n DataWithKey,\n FormGroupConfig,\n GroupedDataRow,\n} from './data-table.types';\nimport { ColumnDirective } from './column.directive';\nimport { TableStyles } from './style.types';\nimport { AbstractControl, FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'lib-data-table',\n templateUrl: './data-table.component.html',\n styleUrl: './data-table.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableComponent<T> {\n // Modify data input to use grouped data\n data = input.required<T[]>();\n columns = input.required<ColumnDefinition<T>[]>();\n dataKey = input<keyof T>(); // New required input for unique identifier\n formGroupConfig = input<\n FormGroupConfig<{\n [K in keyof T]: AbstractControl;\n }>\n >();\n\n groupBy = input<keyof T | ((row: T) => any)>();\n useVirtualScroll = input<boolean>(false);\n virtualScrollItemSize = input<number>(48);\n\n @Input() styleConfig: TableStyles = defaultTableStyles;\n\n columnTemplates = contentChildren(ColumnDirective);\n\n @Output() rowEdit = new EventEmitter<T>();\n @Output() rowSave = new EventEmitter<{\n index: number;\n key: number | string;\n data: Partial<T>;\n }>();\n @Output() rowRevert = new EventEmitter<{\n index: number;\n key: number | string;\n data: T;\n }>();\n @Output() rowDelete = new EventEmitter<T>();\n @Output() selectionChange = new EventEmitter<T[]>();\n\n /** Internally maintained data, with guaranteed uniqueness due to key property */\n tableData: Signal<DataWithKey<T>[]>;\n\n private editingRowsSignal = signal<Set<string | number>>(new Set());\n private selectedRowsSignal = signal<Set<string | number>>(new Set());\n // private editedDataSignal = signal<Map<string | number, EditedData<T>>>(\n // new Map()\n // );\n private unEditedDataSignal = signal<Map<string | number, T>>(new Map());\n private formGroupsSignal = signal<Map<string | number, FormGroup>>(new Map());\n\n // columnsSignal = computed(() => this.columns());\n\n displayColumns: Signal<ColumnDefinition<T>[]>;\n\n constructor() {\n this.displayColumns = computed(() => {\n return this.columns().map((column) => {\n const matchingTemplate = this.columnTemplates().find(\n (t) => t.columnId === column.id\n );\n if (matchingTemplate) {\n console.log('Found matching template:', matchingTemplate);\n return {\n ...column,\n cellTemplate: matchingTemplate.cellTemplate ?? column.cellTemplate,\n cellEditTemplate:\n matchingTemplate.cellEditTemplate ?? column.cellEditTemplate,\n headerTemplate:\n matchingTemplate.headerTemplate ?? column.headerTemplate,\n footerTemplate:\n matchingTemplate.footerTemplate ?? column.footerTemplate,\n };\n }\n return column;\n });\n });\n\n this.tableData = computed(() => {\n return this.data().map((item, index) => {\n let key;\n const dataKey = this._getRowIdByDataKey(item);\n if (dataKey) {\n key = dataKey;\n } else {\n key = index as DataWithKey<T>['_key'];\n }\n return {\n originalData: item,\n _key: key,\n _key_prop: this.dataKey() ?? '_index',\n };\n });\n });\n }\n\n hasFooter = computed(() =>\n this.displayColumns().some((col) => col.footerTemplate !== undefined)\n );\n\n // Helper method to get unique identifier for a row\n private _getRowIdByDataKey(row: T): string | number | undefined {\n const key = this.dataKey();\n if (key) {\n const value = row[key];\n\n // Convert to string or number if possible, otherwise stringify\n if (typeof value === 'string' || typeof value === 'number') {\n return value;\n }\n return JSON.stringify(value);\n }\n return;\n }\n\n // Type guard method to check for group rows\n isGroupRow(row: T): row is T & { isGroupRow: true; groupTitle: any } {\n return !!(row as any).isGroupRow;\n }\n\n trackByRowKey(index: number, row: any) {\n return row._key;\n }\n\n // Computed property for grouped data\n\n groupedData = computed(() => {\n if (!this.groupBy()) return this.tableData() as GroupedDataRow<T>[];\n\n const getGroupValue =\n typeof this.groupBy() === 'function'\n ? (this.groupBy() as (row: T) => any)\n : (row: T) => row[this.groupBy() as keyof T];\n\n const groups = new Map<any, DataWithKey<T>[]>();\n\n this.tableData().forEach((row) => {\n if (getGroupValue !== undefined) {\n const groupValue = getGroupValue(row.originalData);\n const existingGroup = groups.get(groupValue) || [];\n groups.set(groupValue, [...existingGroup, row]);\n }\n });\n\n const groupedDataArray: GroupedDataRow<T>[] = [];\n\n groups.forEach((groupRows, groupValue) => {\n // Create group header row\n const groupRow: GroupedDataRow<T> = {\n ...({} as DataWithKey<T>), // Create empty object of type T as base\n _key: `group-${groupValue}`,\n isGroupRow: true,\n groupValue,\n groupTitle: groupValue,\n };\n\n groupedDataArray.push(groupRow);\n // Add regular rows with the optional isGroupRow property (undefined by default)\n groupedDataArray.push(...(groupRows as GroupedDataRow<T>[]));\n });\n\n return groupedDataArray;\n });\n\n getCellValue = (row: T, column: ColumnDefinition<T>): any => {\n // For group rows, return the group title if it exists\n if (this.isGroupRow(row)) {\n return (row as any).groupTitle;\n }\n\n // Existing logic for normal rows\n if (column.accessorKey) {\n return row[column.accessorKey];\n }\n return column.accessorFn ? column.accessorFn(row) : undefined;\n };\n\n public isRowEditing = (rowKey: DataWithKey<T>['_key']): boolean => {\n return this.editingRowsSignal().has(rowKey);\n };\n\n public toggleRowEdit = (rowId: DataWithKey<T>['_key']) => {\n let data: DataWithKey<T> | undefined = undefined;\n let index: number = -1;\n\n this.tableData().forEach((datum, i) => {\n if (datum._key === rowId) {\n data = datum;\n index = i;\n }\n });\n\n if (data !== undefined && index >= 0) {\n this.toggleRowEditInternal(data, index);\n }\n };\n\n private toggleRowEditInternal = (row: DataWithKey<T>, index: number) => {\n this.editingRowsSignal.update((set) => {\n const newSet = new Set(set);\n if (newSet.has(row._key)) {\n newSet.delete(row._key);\n this.saveRow(row._key, index);\n } else {\n newSet.add(row._key);\n this.initializeEditedData(row);\n }\n return newSet;\n });\n };\n\n private initializeEditedData(row: DataWithKey<T>) {\n const rowId = row._key;\n this.unEditedDataSignal.update((map) => {\n const newMap = new Map(map);\n newMap.set(rowId, { ...row.originalData });\n return newMap;\n });\n const formGroupConfig = this.formGroupConfig();\n if (formGroupConfig) {\n const formGroup = new FormGroup(\n formGroupConfig.controls,\n formGroupConfig.validatorOrOpts,\n formGroupConfig.asyncValidator\n );\n formGroup.patchValue(row.originalData as any);\n this.formGroupsSignal.update((map) => {\n const newMap = new Map(map);\n newMap.set(rowId, formGroup);\n return newMap;\n });\n }\n }\n\n private saveRow(rowId: string | number, rowIndex: number) {\n const editedForm = this.formGroupsSignal().get(rowId);\n const unEditedData = this.unEditedDataSignal().get(rowId);\n\n // if (editedData) {\n // const originalRow = this.tableData().find((row) => row._key === rowId);\n // if (originalRow) {\n // const updatedRow = { ...originalRow, ...editedData };\n // this.rowSave.emit(updatedRow);\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // newMap.delete(rowId);\n // return newMap;\n // });\n // }\n // }\n\n // console.log(this.formGroupConfig());\n // console.log(editedForm);\n // console.log(unEditedData);\n\n if (editedForm) {\n editedForm.markAsPristine();\n editedForm.markAsUntouched();\n this.formGroupsSignal.update((map) => {\n const newMap = new Map(map);\n newMap.delete(rowId);\n return newMap;\n });\n this.rowSave.emit({\n index: rowIndex,\n key: rowId,\n data: editedForm.value,\n });\n }\n\n if (unEditedData) {\n this.unEditedDataSignal.update((map) => {\n const newMap = new Map(map);\n newMap.delete(rowId);\n return newMap;\n });\n this.rowRevert.emit({\n index: rowIndex,\n key: rowId,\n data: unEditedData,\n });\n }\n }\n\n private isRowSelected = (rowId: string | number): boolean => {\n return this.selectedRowsSignal().has(rowId);\n };\n\n private toggleRowSelection = (rowId: string | number) => {\n this.selectedRowsSignal.update((set) => {\n const newSet = new Set(set);\n if (newSet.has(rowId)) {\n newSet.delete(rowId);\n } else {\n newSet.add(rowId);\n }\n this.emitSelectionChange();\n return newSet;\n });\n };\n\n private allRowsSelected = (): boolean => {\n const nonGroupRows = this.data().filter((row) => !this.isGroupRow(row));\n return (\n nonGroupRows.length > 0 &&\n this.selectedRowsSignal().size === nonGroupRows.length\n );\n };\n\n private someRowsSelected = (): boolean => {\n const nonGroupRows = this.data().filter((row) => !this.isGroupRow(row));\n return (\n this.selectedRowsSignal().size > 0 &&\n this.selectedRowsSignal().size < nonGroupRows.length\n );\n };\n\n private toggleAllRows = () => {\n if (this.allRowsSelected()) {\n this.selectedRowsSignal.set(new Set());\n } else {\n const nonGroupRows = this.tableData().filter(\n (row) => !this.isGroupRow(row.originalData)\n );\n this.selectedRowsSignal.set(new Set(nonGroupRows.map((row) => row._key)));\n }\n this.emitSelectionChange();\n };\n\n private emitSelectionChange() {\n const selectedRows = this.tableData().filter((row) =>\n this.selectedRowsSignal().has(row._key)\n );\n this.selectionChange.emit(\n selectedRows.map(({ originalData }) => originalData)\n );\n }\n\n getHeaderContext(column: ColumnDefinition<T>) {\n return {\n $implicit: column,\n column,\n allRowsSelected: this.allRowsSelected,\n someRowsSelected: this.someRowsSelected,\n toggleAllRows: this.toggleAllRows,\n };\n }\n\n updateEditedValue(\n rowId: string | number,\n column: ColumnDefinition<T>,\n value: any\n ) {\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // const rowData = newMap.get(rowId) || ({} as EditedData<T>);\n // if (column.accessorKey) {\n // newMap.set(rowId, { ...rowData, [column.accessorKey]: value });\n // } else {\n // console.warn(\n // 'Cannot update value for column without accessorKey:',\n // column.id\n // );\n // }\n // return newMap;\n // });\n }\n\n updateEditedValueFn(\n rowId: string | number,\n valueFn: (value: any) => T,\n value: any\n ) {\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // const rowData = newMap.get(rowId) || ({} as EditedData<T>);\n // newMap.set(rowId, { ...rowData, ...valueFn(value) });\n // return newMap;\n // });\n }\n\n updateEditedData(rowId: string | number, data: Partial<T>) {\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // const rowData = newMap.get(rowId) || ({} as EditedData<T>);\n // newMap.set(rowId, { ...rowData, ...data });\n // return newMap;\n // });\n }\n\n updateNestedEditedValue(\n rowId: string | number,\n column: ColumnDefinition<T>,\n nestedField: string,\n value: any\n ) {\n // this.editedDataSignal.update((map) => {\n // const newMap = new Map(map);\n // const rowData = newMap.get(rowId) || ({} as EditedData<T>);\n // if (column.accessorKey) {\n // const columnData = (rowData[column.accessorKey] as any) || {};\n // newMap.set(rowId, {\n // ...rowData,\n // [column.accessorKey]: {\n // ...columnData,\n // [nestedField]: value,\n // },\n // });\n // } else {\n // console.warn(\n // 'Cannot update nested value for column without accessorKey:',\n // column.id\n // );\n // }\n // return newMap;\n // });\n }\n\n getCellContext(\n row: DataWithKey<T>,\n column: ColumnDefinition<T>,\n rowIndex: number\n ) {\n const rowId = row._key;\n const isEditing = this.isRowEditing(row._key);\n // const editedData = this.editedDataSignal().get(rowId);\n const editedForm = this.formGroupsSignal().get(rowId);\n const formControl = editedForm?.get(column.formControlName || '');\n\n let value: any;\n if (isEditing) {\n if (formControl) {\n value = formControl.value;\n } else {\n value = this.getCellValue(row.originalData, column);\n }\n // else if (editedData) {\n // if (column.accessorKey && column.accessorKey in editedData) {\n // // If column has an accessorKey and it exists in edited data, use that\n // value = editedData[column.accessorKey];\n // } else if (column.accessorFn) {\n // // If column has an accessorFn, apply it to the edited data\n // value = column.accessorFn({ ...row, ...editedData });\n // } else {\n // // Fallback to getting the value from the original row\n // value = this.getCellValue(row, column);\n // }\n // }\n } else {\n value = this.getCellValue(row.originalData, column);\n }\n\n return {\n $implicit: value,\n value,\n row: row.originalData,\n column,\n rowIndex,\n rowId,\n isEditing,\n formControl,\n isSelected: this.isRowSelected(rowId),\n toggleRowSelection: () => this.toggleRowSelection(rowId),\n toggleRowEdit: () => this.toggleRowEditInternal(row, rowIndex),\n deleteRow: () => this.deleteRow(rowId),\n updateValue: (newValue: any) =>\n this.updateEditedValue(rowId, column, newValue),\n updateNestedValue: (nestedField: string, newValue: any) =>\n this.updateNestedEditedValue(rowId, column, nestedField, newValue),\n updateValueFn: (valueFn: (value: any) => T, newValue: any) =>\n this.updateEditedValueFn(rowId, valueFn, newValue),\n updateData: (newData: Partial<T>) =>\n this.updateEditedData(rowId, newData),\n };\n }\n\n deleteRow = (rowId: string | number) => {\n const rowToDelete = this.tableData().find((row) => row._key === rowId);\n if (rowToDelete) {\n this.rowDelete.emit(rowToDelete.originalData);\n }\n };\n\n getFooterContext(column: ColumnDefinition<T>) {\n return {\n $implicit: column,\n column,\n data: this.data,\n };\n }\n\n getTableStyle(): any {\n return {\n ...this.styleConfig,\n fontFamily: this.styleConfig.fontFamily,\n fontSize: this.styleConfig.fontSize,\n whiteSpace: this.styleConfig.whiteSpace,\n margin: this.styleConfig.margin,\n border: this.styleConfig.border,\n borderCollapse: this.styleConfig.borderCollapse,\n borderSpacing: this.styleConfig.borderSpacing,\n tableLayout: this.styleConfig.tableLayout,\n width: this.styleConfig.width,\n };\n }\n\n getHeaderStyle(): any {\n return {\n ...this.styleConfig.header,\n position: this.styleConfig.header?.stickyTop ? 'sticky' : 'static',\n top: this.styleConfig.header?.stickyTop ? '0' : 'auto',\n zIndex: this.styleConfig.header?.zIndex || 'auto',\n };\n }\n\n getFooterStyle(): any {\n return {\n ...this.styleConfig.footer,\n position: this.styleConfig.footer?.stickyBottom ? 'sticky' : 'static',\n bottom: this.styleConfig.footer?.stickyBottom ? '0' : 'auto',\n zIndex: this.styleConfig.footer?.zIndex || 'auto',\n };\n }\n\n getRowStyle(rowIndex: number): any {\n const rowStyles = this.styleConfig.rows;\n if (rowStyles && 'even' in rowStyles && 'odd' in rowStyles) {\n return rowIndex % 2 === 0 ? rowStyles.even : rowStyles.odd;\n } else if (rowStyles && 'nth' in rowStyles && rowStyles.nth) {\n const { interval, style } = rowStyles.nth;\n return (rowIndex + 1) % (interval || 1) === 0 ? style : {};\n } else {\n return rowStyles || {};\n }\n }\n\n getCellStyle(rowIndex: number, colIndex: number): any {\n const isFirstColumn = colIndex === 0;\n const isLastColumn = colIndex === this.displayColumns().length - 1;\n\n let cellStyle = { ...this.styleConfig.cells };\n\n if (isFirstColumn) {\n cellStyle = {\n ...cellStyle,\n ...this.styleConfig.firstColumn,\n position: this.styleConfig.firstColumn?.stickyLeft\n ? 'sticky'\n : 'static',\n left: this.styleConfig.firstColumn?.stickyLeft ? '0' : 'auto',\n zIndex: this.styleConfig.firstColumn?.zIndex || 'auto',\n };\n } else if (isLastColumn) {\n cellStyle = {\n ...cellStyle,\n ...this.styleConfig.lastColumn,\n position: this.styleConfig.lastColumn?.stickyRight\n ? 'sticky'\n : 'static',\n right: this.styleConfig.lastColumn?.stickyRight ? '0' : 'auto',\n zIndex: this.styleConfig.lastColumn?.zIndex || 'auto',\n };\n }\n\n if (rowIndex >= 0) {\n // Apply body styles to all cells\n cellStyle = { ...cellStyle, ...this.styleConfig.body };\n } else {\n cellStyle = { ...this.styleConfig.header };\n }\n\n return cellStyle;\n }\n}\n\n// Default styles\nconst defaultTableStyles: TableStyles = {\n border: '1px solid #e0e0e0',\n borderRadius: '4px',\n overflow: 'hidden',\n boxShadow: '0 2px 4px rgba(0,0,0,0.1)',\n width: '100%',\n header: {\n backgroundColor: '#f5f5f5',\n fontWeight: 'bold',\n color: '#333',\n textAlign: 'left',\n padding: '12px 16px',\n borderBottom: '2px solid #e0e0e0',\n },\n rows: {\n even: {\n backgroundColor: '#ffffff',\n },\n odd: {\n backgroundColor: '#f9f9f9',\n },\n nth: {\n interval: 5,\n style: {\n backgroundColor: '#f0f0f0',\n },\n },\n },\n cells: {\n padding: '12px 16px',\n borderBottom: '1px solid #e0e0e0',\n },\n footer: {\n backgroundColor: '#f5f5f5',\n fontWeight: 'bold',\n color: '#333',\n textAlign: 'left',\n padding: '12px 16px',\n borderTop: '2px solid #e0e0e0',\n },\n};\n","@if (useVirtualScroll()) {\n<cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"virtual-scroll-viewport\"\n [style.height.px]=\"virtualScrollItemSize() * 10\"\n>\n <table [ngStyle]=\"getTableStyle()\">\n <thead>\n <!-- <tr [ngStyle]=\"getHeaderStyle()\">\n <th colspan=\"2\" scope=\"colgroup\">Group 1</th>\n <th colspan=\"1\" scope=\"colgroup\">Group 2</th>\n </tr> -->\n\n <tr [ngStyle]=\"getHeaderStyle()\">\n @for (column of displayColumns(); track column.id) {\n <th [ngStyle]=\"getCellStyle(-1, $index)\">\n @if (column.headerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"getHeaderContext(column)\"\n ></ng-container>\n } @else {\n {{ column.header }}\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <tr\n *cdkVirtualFor=\"\n let row of tableData();\n trackBy: trackByRowKey;\n let rowIndex = index\n \"\n [ngStyle]=\"getRowStyle(rowIndex)\"\n >\n @for (column of displayColumns(); track column.id; let colIndex =\n $index) {\n <td [ngStyle]=\"getCellStyle(rowIndex, colIndex)\">\n @if (isRowEditing(row._key) && column.cellEditTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellEditTemplate\"\n [ngTemplateOutletContext]=\"getCellContext(row, column, rowIndex)\"\n ></ng-container>\n } @else if (column.cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"getCellContext(row, column, rowIndex)\"\n ></ng-container>\n } @else {\n {{ getCellValue(row.originalData, column) }}\n }\n </td>\n }\n </tr>\n </tbody>\n\n @if (hasFooter()) {\n <tfoot>\n <tr [ngStyle]=\"getFooterStyle()\">\n @for (column of displayColumns(); track column.id) {\n <td [ngStyle]=\"getCellStyle(-1, $index)\">\n @if (column.footerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.footerTemplate\"\n [ngTemplateOutletContext]=\"getFooterContext(column)\"\n ></ng-container>\n }\n </td>\n }\n </tr>\n </tfoot>\n\n }\n </table>\n</cdk-virtual-scroll-viewport>\n} @else {\n<table [ngStyle]=\"getTableStyle()\">\n <thead>\n <!-- <tr [ngStyle]=\"getHeaderStyle()\">\n <th colspan=\"2\" scope=\"colgroup\">Group 1</th>\n <th colspan=\"1\" scope=\"colgroup\">Group 2</th>\n </tr> -->\n\n <tr [ngStyle]=\"getHeaderStyle()\">\n @for (column of displayColumns(); track column.id) {\n <th [ngStyle]=\"getCellStyle(-1, $index)\">\n @if (column.headerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"getHeaderContext(column)\"\n ></ng-container>\n } @else {\n {{ column.header }}\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of tableData(); track row._key; let rowIndex = $index) { @if\n (isGroupRow(row.originalData)) {\n <tr class=\"group-row\" [ngStyle]=\"getRowStyle(rowIndex)\">\n <td\n [attr.colspan]=\"displayColumns().length\"\n [ngStyle]=\"getCellStyle(rowIndex, 0)\"\n >\n {{ getCellValue(row.originalData, displayColumns()[0]) }}\n </td>\n </tr>\n } @else {\n <tr [ngStyle]=\"getRowStyle(rowIndex)\">\n @for (column of displayColumns(); track column.id; let colIndex = $index)\n {\n <td [ngStyle]=\"getCellStyle(rowIndex, colIndex)\">\n @if (isRowEditing(row._key) && column.cellEditTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellEditTemplate\"\n [ngTemplateOutletContext]=\"getCellContext(row, column, rowIndex)\"\n ></ng-container>\n } @else if (column.cellTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"getCellContext(row, column, rowIndex)\"\n ></ng-container>\n } @else {\n {{ getCellValue(row.originalData, column) }}\n }\n </td>\n }\n </tr>\n } }\n </tbody>\n\n @if (hasFooter()) {\n <tfoot>\n <tr [ngStyle]=\"getFooterStyle()\">\n @for (column of displayColumns(); track column.id) {\n <td [ngStyle]=\"getCellStyle(-1, $index)\">\n @if (column.footerTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.footerTemplate\"\n [ngTemplateOutletContext]=\"getFooterContext(column)\"\n ></ng-container>\n }\n </td>\n }\n </tr>\n </tfoot>\n\n }\n</table>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ColumnDirective } from './column.directive';\nimport { DataTableComponent } from './data-table.component';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [DataTableComponent, ColumnDirective],\n imports: [CommonModule, ScrollingModule],\n exports: [DataTableComponent, ColumnDirective],\n})\nexport class DataTableModule {}\n","import { Overlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n HostListener,\n ElementRef,\n Renderer2,\n AfterViewChecked,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'verben-pop-Up',\n templateUrl: './pop-up.component.html',\n styleUrls: ['./pop-up.component.css'],\n})\nexport class VerbenPopUpComponent implements AfterViewChecked {\n @Input() dropdownOpen: boolean = false;\n @Output() dropdownOpenChange: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n @Input() dropdownWidth: string = '';\n @Input() color: string = 'black';\n @Input() customStyles: { [key: string]: string } = {};\n @Input() popUpClass: string = '';\n @Input() border: string = '';\n @Input() borderRadius: string = '';\n @Input() enableMouseLeave: boolean = true;\n @Input() cdkPosition: any[] | null = null;\n @Output() close: EventEmitter<Event> = new EventEmitter();\n @ViewChild('expansion', { static: false })\n expansion!: ElementRef;\n scrollStrategy: ScrollStrategy;\n defaultPositions = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ];\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private overlay: Overlay\n ) {\n this.scrollStrategy = this.overlay.scrollStrategies.reposition();\n }\n\n toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n this.dropdownOpenChange.emit(this.dropdownOpen);\n\n // if (this.dropdownOpen) {\n // this.setDropdownPosition();\n // }\n }\n\n onMouseOut() {\n if (this.enableMouseLeave) {\n this.close.emit();\n this.dropdownOpen = false;\n this.dropdownOpenChange.emit(this.dropdownOpen);\n }\n }\n\n onClose() {\n this.close.emit();\n }\n\n get dropdownStyles() {\n return {\n width: this.dropdownWidth,\n border: this.border,\n borderRadius: this.borderRadius,\n };\n }\n\n get yourStyles() {\n return {\n ...this.customStyles,\n };\n }\n\n @HostListener('document:click', ['$event.target'])\n onClickOutside(targetElement: HTMLElement) {\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n const isInsidePane = targetElement.closest('.cdk-overlay-pane') !== null;\n if (\n !clickedInside &&\n this.dropdownOpen &&\n this.expansion &&\n !this.expansion.nativeElement.contains(targetElement) &&\n !isInsidePane\n ) {\n this.dropdownOpen = false;\n this.dropdownOpenChange.emit(this.dropdownOpen);\n }\n }\n\n // private setDropdownPosition(): void {\n // const dropdown = this.elementRef.nativeElement.querySelector('.dropdown-menu');\n // const dropdownRect = dropdown.getBoundingClientRect();\n // const parentRect = this.elementRef.nativeElement.getBoundingClientRect();\n // const viewportHeight = window.innerHeight;\n // const viewportWidth = window.innerWidth;\n\n // console.log('Dropdown Rect:', dropdownRect);\n // console.log('Parent Rect:', parentRect);\n // console.log('Viewport:', { width: viewportWidth, height: viewportHeight });\n\n // // Check vertical space\n // if (viewportHeight - parentRect.bottom < dropdownRect.height) {\n // // Position above\n // this.renderer.setStyle(dropdown, 'top', 'auto');\n // this.renderer.setStyle(dropdown, 'bottom', `${parentRect.height}px`);\n // } else {\n // // Position below\n // this.renderer.setStyle(dropdown, 'top', `${parentRect.height}px`);\n // this.renderer.setStyle(dropdown, 'bottom', 'auto');\n // }\n\n // // Check horizontal space\n // if (parentRect.left + dropdownRect.width > viewportWidth) {\n // // Position to the left\n // this.renderer.setStyle(dropdown, 'left', 'auto');\n // this.renderer.setStyle(dropdown, 'right', '0');\n // } else if (parentRect.right - dropdownRect.width < 0) {\n // // Position to the right\n // this.renderer.setStyle(dropdown, 'left', '0');\n // this.renderer.setStyle(dropdown, 'right', 'auto');\n // } else {\n // // Default alignment\n // this.renderer.setStyle(dropdown, 'left', '0');\n // this.renderer.setStyle(dropdown, 'right', 'auto');\n // }\n // }\n\n ngAfterViewChecked() {\n // if (this.dropdownOpen) {\n // this.setDropdownPosition();\n // }\n }\n\n private setDropdownPosition(): void {\n const dropdown = this.elementRef.nativeElement.querySelector(\n '.dropdown-container > div'\n );\n // const triggerElement = this.elementRef.nativeElement.querySelector('dropdown-menu')\n\n if (!dropdown) {\n console.warn('Dropdown element not found.');\n return;\n }\n\n const dropdownRect = dropdown.getBoundingClientRect();\n const parentRect = this.elementRef.nativeElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n\n console.log('Dropdown Rect:', dropdownRect);\n console.log('Parent Rect:', parentRect);\n console.log('Viewport:', { width: viewportWidth, height: viewportHeight });\n\n // Vertical Positioning\n if (viewportHeight - parentRect.bottom < dropdownRect.height) {\n // Not enough space below, position above\n console.log('not enough space below');\n const topPosition = parentRect.top - dropdownRect.height;\n console.log('top pos:', topPosition);\n this.renderer.setStyle(dropdown, 'top', `auto`);\n this.renderer.setStyle(dropdown, 'bottom', '15px');\n } else {\n // Enough space below, position below\n console.log('Enough space below');\n const topPosition = parentRect.bottom;\n this.renderer.setStyle(dropdown, 'top', `20px`);\n this.renderer.setStyle(dropdown, 'bottom', 'auto');\n }\n\n // Horizontal Positioning\n if (parentRect.left + dropdownRect.width > viewportWidth) {\n console.log('not Enough space right');\n const leftPosition = viewportWidth - dropdownRect.width - 10;\n this.renderer.setStyle(dropdown, 'left', `auto`);\n // this.renderer.setStyle(dropdown, 'left', `${Math.max(leftPosition, 0)}px`);\n this.renderer.setStyle(dropdown, 'right', '10px');\n } else {\n console.log('Enough space right');\n const leftPosition = parentRect.left;\n this.renderer.setStyle(dropdown, 'left', `${10}px`);\n this.renderer.setStyle(dropdown, 'right', 'auto');\n }\n }\n}\n","<span class=\"relative dropdown-container\" [ngStyle]=\"dropdownStyles\">\n <span\n (click)=\"toggleDropdown()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"dropdown-menu\"\n >\n <ng-content select=\"[dropdown-trigger]\"></ng-content>\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayLockPosition]=\"false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayPositions]=\"\n cdkPosition ? cdkPosition : defaultPositions\n \"\n [cdkConnectedOverlayOpen]=\"dropdownOpen\"\n (detach)=\"dropdownOpen = false\"\n >\n <div\n #expansion\n (mouseleave)=\"onMouseOut()\"\n [attr.aria-hidden]=\"!dropdownOpen\"\n class=\"{{ popUpClass }}\"\n [ngStyle]=\"yourStyles\"\n >\n <ng-content select=\"[dropdown-content]\"></ng-content>\n </div>\n </ng-template>\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenPopUpComponent } from './pop-up.component';\nimport { SharedModule } from '../shared.module';\n\n@NgModule({\n declarations: [VerbenPopUpComponent],\n imports: [CommonModule, SharedModule],\n exports: [VerbenPopUpComponent],\n})\nexport class VerbenPopUpModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataViewComponent } from './data-view.component';\nimport { CardDataViewModule } from '../card-data-view/card-data-view.module';\n\nimport { SvgModule } from '../svg/svg.module';\nimport { DataTableModule } from '../data-table/data-table.module';\nimport { OutSideClickDirective } from './data-view-click-outside.directive';\nimport {VerbenaInputModule} from \"../../Verbena-input/verbena-input.module\"\nimport {VerbenaButtonModule} from \"../../verbena-button/verbena-button.module\"\nimport {VisibleColumnModule} from \"../../components/visible-column/visible-column.module\"\nimport { VerbenPopUpModule } from '../pop-up/pop-up.module';\n@NgModule({\n declarations:[DataViewComponent],\n imports: [CommonModule,CardDataViewModule,DataTableModule,SvgModule,VerbenaInputModule,VerbenaButtonModule,OutSideClickDirective,VisibleColumnModule, VerbenPopUpModule],\n exports: [DataViewComponent]\n})\nexport class DataViewModule {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DropdownChangeEvent } from '../drop-down/DropdownChangeEvent';\n\n@Component({\n selector: 'app-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.css'],\n})\nexport class DatePickerComponent {\n @Input() placeholder = 'Select date';\n @Input() format = 'MM/DD/YYYY';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() bgColor?: string='#fff'\n @Input() border?: string=''\n @Input() useDropdowns: boolean = true;\n @Input() yearPlaceholder: string = 'Select a year';\n @Input() monthPlaceholder: string = 'Select a month';\n @Input() date: Date | null|string = null; // Two-way binding support\n @Output() dateChange = new EventEmitter<Date>(); // Emit date changes\n yearRange: number[] = [];\n filteredYearRange: number[] = [];\n selectedDate: Date = new Date();\n tempSelectedDate: Date = new Date();\n showCalendar = false;\n\n weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat','Sun'];\n months = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'\n ];\n\n\n \n selectedMonth: number = 1;\n selectedMonthString:string=''\n selectedYear: number = new Date().getFullYear();\n\n ngOnChanges() {\n if (this.date) {\n const parsedDate = typeof this.date === 'string' ? new Date(this.date) : this.date;\n this.selectedDate = new Date(parsedDate);\n this.tempSelectedDate = new Date(parsedDate);\n this.selectedMonth = this.selectedDate.getMonth();\n this.selectedYear = this.selectedDate.getFullYear();\n }\n }\n ngOnInit() {\n const currentYear = new Date().getFullYear();\n const endYear = currentYear + 10;\n this.yearRange = Array.from({ length: endYear - 1960 + 1 }, (_, i) => 1960 + i);\n this.yearRange.sort((a, b) => b - a);\n }\n get displayDate(): string {\n const parsedDate = typeof this.date === 'string' ? new Date(this.date) : this.date;\n return parsedDate ? this.formatDate(parsedDate, this.format) : '';\n }\n \n\n toggleCalendar() {\n this.showCalendar = !this.showCalendar;\n this.tempSelectedDate = new Date(this.date || new Date());\n this.selectedMonth = this.tempSelectedDate.getMonth();\n this.selectedMonthString=this.months[this.selectedMonth]\n this.selectedYear = this.tempSelectedDate.getFullYear();\n }\n\n previousMonth() {\n this.selectedMonth--;\n if (this.selectedMonth < 0) {\n this.selectedMonth = 11;\n this.selectedYear--;\n }\n this.updateTempSelectedDate();\n }\n\n nextMonth() {\n this.selectedMonth++;\n if (this.selectedMonth > 11) {\n this.selectedMonth = 0;\n this.selectedYear++;\n }\n this.updateTempSelectedDate();\n }\n\n onDropdownYearChange(event: DropdownChangeEvent): void {\n this.selectedYear = event.value;\n this.updateTempSelectedDate();\n }\n\n onDropdownMonthChange(event: DropdownChangeEvent): void {\n \n this.selectedMonth = this.months.indexOf(event.value)\n this.updateTempSelectedDate();\n }\n\n updateTempSelectedDate() {\n this.tempSelectedDate.setMonth(this.selectedMonth);\n this.tempSelectedDate.setFullYear(this.selectedYear);\n }\n\n getDaysInMonth(): (Date | null)[] {\n const days: (Date | null)[] = [];\n const year = this.selectedYear;\n const month = this.selectedMonth;\n \n const firstDayOfMonth = new Date(year, month, 1).getDay();\n const offset = (firstDayOfMonth === 0 ? 6 : firstDayOfMonth - 1); \n \n for (let i = 0; i < offset; i++) {\n days.push(null);\n }\n \n const totalDays = new Date(year, month + 1, 0).getDate(); \n \n // Add the actual days of the month\n for (let i = 1; i <= totalDays; i++) {\n days.push(new Date(year, month, i));\n }\n \n return days;\n }\n \n \n\n selectTemporaryDate(day: Date) {\n this.tempSelectedDate = day;\n }\n\n isSelected(day: Date): boolean {\n return (\n day.getDate() === this.tempSelectedDate.getDate() &&\n day.getMonth() === this.tempSelectedDate.getMonth() &&\n day.getFullYear() === this.tempSelectedDate.getFullYear()\n );\n }\n\n formatDate(date: Date, format: string): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n\n switch (format) {\n case 'DD/MM/YYYY':\n return `${day}/${month}/${year}`;\n case 'MM/DD/YYYY':\n default:\n return `${month}/${day}/${year}`;\n }\n }\n\n confirm() {\n this.tempSelectedDate.setHours(12, 0, 0, 0);\n this.selectedDate = new Date(this.tempSelectedDate);\n this.dateChange.emit(this.selectedDate);\n this.showCalendar = false;\n }\n\n cancel() {\n this.showCalendar = false;\n }\n \n \n}\n","<div class=\"date-picker\">\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"displayDate\"\n (click)=\"toggleCalendar()\"\n class=\"w-full block\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"border\"\n readonly\n />\n\n <div *ngIf=\"showCalendar\" [appOutSideClick]=\"showCalendar\" (outSideClick)=\"showCalendar=false\" class=\"calendar\">\n <div class=\"calendar-header\">\n <ng-container *ngIf=\"!useDropdowns; else dropdowns\">\n <button (click)=\"previousMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-left'\"></verben-svg>\n </button>\n <span>{{ months[selectedMonth] }} {{ selectedYear }}</span>\n <button (click)=\"nextMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-right'\"></verben-svg>\n </button>\n </ng-container>\n\n <ng-template #dropdowns>\n <verben-drop-down\n \n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n \n [(ngModel)]=\"selectedYear\"\n ></verben-drop-down>\n\n <verben-drop-down\n [placeholder]=\"monthPlaceholder\"\n (onChange)=\"onDropdownMonthChange($event)\"\n [options]=\"months\"\n [(ngModel)]=\"selectedMonthString\"\n ></verben-drop-down>\n </ng-template>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <span *ngFor=\"let day of weekDays\">{{ day }}</span>\n </div>\n <div class=\"dates\">\n <ng-container *ngFor=\"let day of getDaysInMonth()\">\n <button\n *ngIf=\"day; else empty\"\n [class.selected]=\"isSelected(day)\"\n (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span> <!-- or use a styled placeholder -->\n </ng-template>\n </ng-container>\n </div>\n</div>\n\n\n <div class=\"calendar-footer\">\n <button (click)=\"cancel()\">Cancel</button>\n <button (click)=\"confirm()\">OK</button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms'\nimport { CommonModule } from '@angular/common';\nimport { DatePickerComponent } from './date-picker.component';\nimport { SvgModule } from \"../svg/svg.module\";\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { VerbenPopUpModule } from '../pop-up/pop-up.module';\nimport { OutSideClickDirective } from '../data-view/data-view-click-outside.directive';\n@NgModule({\n declarations:[DatePickerComponent],\n imports: [FormsModule, CommonModule, SvgModule,DropDownModule, VerbenPopUpModule,OutSideClickDirective],\n exports: [DatePickerComponent]\n})\nexport class DatePickerModule {}\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[appPhoneNumber]'\n})\nexport class PhoneNumberDirective {\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event): void {\n let inputValue = (event.target as HTMLInputElement).value;\n const numericValue = this.formatToNumeric(inputValue);\n this.renderer.setProperty(this.el.nativeElement, 'value', numericValue);\n console.log(`Formatted phone number: ${numericValue}`);\n }\n\n private formatToNumeric(value: string): string {\n // Remove all non-numeric characters except leading zeros\n return value.replace(/[^0-9]/g, '');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PhoneNumberDirective } from './phone-number.directive';\n\n@NgModule({\n declarations: [PhoneNumberDirective],\n imports: [CommonModule],\n exports: [PhoneNumberDirective]\n})\nexport class PhoneNumberModule {}\n","import { Directive, ElementRef, Renderer2, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[validateInput]'\n})\nexport class ValidateInputDirective {\n // Directive logic here\n}\n","import { NgModule } from '@angular/core';\nimport { ValidateInputDirective } from './validate-input.directive';\n\n@NgModule({\n declarations: [ValidateInputDirective],\n exports: [ValidateInputDirective]\n})\nexport class ValidateInputModule {}\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[appNumberRange]'\n})\nexport class NumberRangeDirective {\n @Input() maxNumber!: number;\n @Input() minNumber!: number;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n const numberValue = parseFloat(value);\n let borderStyle = 'none';\n\n if (isNaN(numberValue)) {\n borderStyle = 'none';\n } else if (this.maxNumber !== undefined && numberValue > this.maxNumber) {\n borderStyle = '1px solid red';\n } else if (this.minNumber !== undefined && numberValue < this.minNumber) {\n borderStyle = '1px solid red';\n }\n\n this.renderer.setStyle(this.el.nativeElement, 'border', borderStyle);\n }\n}\n\n\n\n// <input type=\"number\" appNumberRange [maxNumber]=\"10\">\n// <input type=\"number\" appNumberRange [minNumber]=\"5\">\n// <input type=\"number\" appNumberRange [maxNumber]=\"10\" [minNumber]=\"5\">\n\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NumberRangeDirective } from './number-range.directive';\n\n@NgModule({\n declarations: [NumberRangeDirective],\n imports: [CommonModule],\n exports: [NumberRangeDirective]\n})\nexport class NumberRangeModule {}\n\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[requiredInput]'\n})\nexport class RequiredInputDirective {\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input') onInput() {\n const value = this.el.nativeElement.value.trim();\n if (value === '') {\n this.renderer.setStyle(this.el.nativeElement, 'border', '2px solid red');\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'border', 'none');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RequiredInputDirective } from './required-input.directive';\n\n@NgModule({\n declarations: [RequiredInputDirective],\n exports: [RequiredInputDirective]\n}) \nexport class RequiredInputModule {}\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[validateEmail]'\n})\nexport class EmailValidatorDirective {\n\n private emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('input', ['$event.target.value']) onInput(value: string) {\n if (!this.emailRegex.test(value)) {\n this.renderer.setStyle(this.el.nativeElement, 'border', '2px solid red');\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'border', 'none');\n }\n }\n}\n\n// import { MaxNumberModule } from 'verbena-ui-peace22/max-number';\n// import { MinNumberModule } from 'verbena-ui-peace22/min-number';\n// import { RequiredInputModule } from 'verbena-ui-peace22/required-input';\n// import { EmailValidatorModule } from 'verbena-ui-peace22/email-validator';\n","import { NgModule } from '@angular/core';\nimport { EmailValidatorDirective } from './email-validator.directive';\n\n@NgModule({\n declarations: [EmailValidatorDirective],\n exports: [EmailValidatorDirective]\n})\nexport class EmailValidatorModule {}\n\n\n// import { MaxNumberModule } from 'verbena-ui-peace22/max-number';\n// import { MinNumberModule } from 'verbena-ui-peace22/min-number';\n// import { RequiredInputModule } from 'verbena-ui-peace22/required-input';\n// import { EmailValidatorModule } from 'verbena-ui-peace22/email-validator';\n","import { TemplateRef } from '@angular/core';\nimport {\n AbstractControl,\n AbstractControlOptions,\n AsyncValidatorFn,\n FormControl,\n ValidatorFn,\n} from '@angular/forms';\n\nexport interface ColumnDefinition<T> {\n id: string;\n header: string | ((context: any) => any);\n accessorKey?: keyof T;\n accessorFn?: (row: T) => any;\n cellTemplate?: TemplateRef<any>;\n cellEditTemplate?: TemplateRef<any>;\n headerTemplate?: TemplateRef<any>;\n footerTemplate?: TemplateRef<any>;\n sortAction?: 'ASC' | 'DESC';\n formControlName?: string;\n groupName?: string;\n validatorFn?: (value: T[keyof T]) => boolean;\n importKey?: keyof T;\n}\n\n// Define a type that extends T with a _key property\nexport type DataWithKey<T> = {\n _key: string | number;\n _key_prop: keyof T | '_index';\n originalData: T;\n};\n\nexport type GroupedDataRow<T> = DataWithKey<T> & {\n isGroupRow?: boolean;\n groupValue?: any;\n groupTitle?: any;\n};\n\nexport type FormControlOf<T> = {\n [K in keyof T]?: FormControl;\n};\n\nexport interface FormGroupConfig<\n TControl extends { [key: string]: AbstractControl }\n> {\n controls: TControl;\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null;\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null;\n}\n\nexport type EditedData<T> = {\n [K in keyof T]?: T[K] extends object ? Partial<T[K]> : T[K];\n};\n\n// ====================================\n\n// export type ColumnDefinitionBase<T> = {\n// id: string;\n// header: string | ((context: any) => any);\n// cellTemplate?: TemplateRef<any>;\n// cellEditTemplate?: TemplateRef<any>;\n// headerTemplate?: TemplateRef<any>;\n// footerTemplate?: TemplateRef<any>;\n// sortAction?: 'ASC' | 'DESC';\n// formControlName?: string;\n// groupName?: string;\n// };\n\n// // Helper type to create a column definition with a specific accessor key\n// export type ColumnDefinitionWithKey<\n// T,\n// K extends keyof T\n// > = ColumnDefinitionBase<T> & {\n// accessorKey: K;\n// accessorFn?: never;\n// validatorFn?: (value: T[K]) => boolean;\n// };\n\n// export type ColumnDefinitionWithFn<T, R = any> = ColumnDefinitionBase<T> & {\n// accessorKey?: never;\n// accessorFn: (row: T) => R;\n// validatorFn?: (value: R) => boolean;\n// };\n\n// export type ColumnDefinitionWithNeither<T> = ColumnDefinitionBase<T> & {\n// accessorKey?: never;\n// accessorFn?: never;\n// validatorFn?: never;\n// };\n\n// // Union type that represents all possible column definition variants\n// export type ColumnDefinition<T> =\n// | { [K in keyof T]: ColumnDefinitionWithKey<T, K> }[keyof T]\n// | ColumnDefinitionWithFn<T>\n// | ColumnDefinitionWithNeither<T>;\n","export type ExportItemType = 'property' | 'operation';\n\nexport interface ExportItem {\n id: string;\n name: string;\n type: ExportItemType;\n}\n\nexport interface ExportProfile {\n id: string;\n name: string;\n items: ExportItem[];\n}\n\nexport interface Operation {\n id: string;\n name: string;\n field1: string;\n operator: Operators;\n field2: string;\n}\n\nexport enum Operators {\n add = 'add',\n subtract = 'subtract',\n multiply = 'multiply',\n divide = 'divide',\n concatenateSpace = 'concatenateSpace',\n concatenateCommaSpace = 'concatenateCommaSpace',\n concatenateComma = 'concatenateComma',\n}\n","import { Injectable } from '@angular/core';\nimport {\n ExportProfile,\n Operation,\n ExportItem,\n ExportItemType,\n Operators,\n} from './data-export.types';\n\n@Injectable()\nexport class DataExportService {\n private profiles: ExportProfile[] = [];\n private operations: Operation[] = [];\n private baseProperties: string[] = [];\n\n constructor() {\n this.initializeDefaultProfile();\n }\n\n private initializeDefaultProfile() {\n this.profiles = [\n {\n id: 'default',\n name: 'All',\n items: this.baseProperties.map((prop) => ({\n id: prop,\n name: prop,\n type: 'property' as ExportItemType,\n })),\n },\n ];\n }\n\n addProfile(profile: ExportProfile): void {\n this.profiles.push(profile);\n }\n\n getProfiles(): ExportProfile[] {\n return this.profiles;\n }\n\n updateProfile(id: string, updatedProfile: ExportProfile): void {\n const index = this.profiles.findIndex((p) => p.id === id);\n if (index !== -1) {\n this.profiles[index] = updatedProfile;\n }\n }\n\n removeProfile(id: string): void {\n this.profiles = this.profiles.filter((p) => p.id !== id);\n }\n\n addOperation(operation: Operation): void {\n this.operations.unshift(operation);\n this.updateDefaultProfile();\n }\n\n getOperations(): Operation[] {\n return this.operations;\n }\n\n updateOperation(id: string, updatedOperation: Operation): void {\n const index = this.operations.findIndex((o) => o.id === id);\n if (index !== -1) {\n this.operations[index] = updatedOperation;\n this.updateDefaultProfile();\n }\n }\n\n removeOperation(id: string): void {\n this.operations = this.operations.filter((o) => o.id !== id);\n this.updateDefaultProfile();\n // Remove operation from all profiles\n this.profiles.forEach((profile) => {\n profile.items = profile.items.filter((item) => item.id !== id);\n });\n }\n\n resetAll(): void {\n this.operations = [];\n this.baseProperties = [];\n this.initializeDefaultProfile();\n }\n\n getAllItems(): ExportItem[] {\n return [\n ...this.operations.map((op) => ({\n id: op.id,\n name: op.name,\n type: 'operation' as ExportItemType,\n })),\n ...this.baseProperties.map((prop) => ({\n id: prop,\n name: prop,\n type: 'property' as ExportItemType,\n })),\n ];\n }\n\n getBaseProperties(): string[] {\n return this.baseProperties;\n }\n\n setBaseProperties(properties: string[]): void {\n this.baseProperties = properties;\n this.updateDefaultProfile();\n }\n\n private updateDefaultProfile(): void {\n this.profiles[0].items = this.getAllItems();\n }\n\n exportData<T>(\n data: T[],\n selectedProfiles: ExportProfile[]\n ): Record<string, any>[] {\n const uniqueItems = new Set<ExportItem>();\n selectedProfiles.forEach((profile) => {\n profile.items.forEach((item) => uniqueItems.add(item));\n });\n\n return data.map((item) => {\n const exportedItem: Record<string, any> = {};\n uniqueItems.forEach((exportItem) => {\n if (exportItem.type === 'property') {\n exportedItem[exportItem.id] = (item as any)[exportItem.id];\n } else {\n const operation = this.operations.find((o) => o.id === exportItem.id);\n if (operation) {\n exportedItem[exportItem.id] = this.calculateOperation(\n item,\n operation\n );\n }\n }\n });\n return exportedItem;\n });\n }\n\n private calculateOperation<T>(\n item: T,\n operation: Operation\n ): number | string {\n const value1 = Number((item as any)[operation.field1]);\n const value2 = Number((item as any)[operation.field2]);\n switch (operation.operator) {\n case Operators.add:\n return value1 + value2;\n case Operators.subtract:\n return value1 - value2;\n case Operators.multiply:\n return value1 * value2;\n case Operators.divide:\n return value2 !== 0 ? value1 / value2 : NaN;\n case Operators.concatenateSpace:\n return `${value1} ${value2}`;\n case Operators.concatenateCommaSpace:\n return `${value1}, ${value2}`;\n case Operators.concatenateComma:\n return `${value1},${value2}`;\n default:\n return NaN;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DataExportService } from './data-export.service';\nimport {\n ExportItem,\n ExportProfile,\n Operation,\n Operators,\n} from './data-export.types';\nimport { ColumnDefinition } from '../data-table/data-table.types';\n\n@Component({\n selector: 'lib-data-export',\n templateUrl: './data-export.component.html',\n styleUrl: './data-export.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataExportComponent<T extends { id: string | number }> {\n @Input() columns!: ColumnDefinition<T>;\n @Input() data!: any[];\n @Output() exportDataEvent = new EventEmitter<Record<string, any>[]>();\n\n profiles: (ExportProfile & { selected: boolean })[] = [];\n groupItems: (ExportItem & { selected: boolean })[] = [];\n newGroupForm: FormGroup;\n newOperation: Operation = {\n id: '',\n name: '',\n field1: '',\n operator: Operators.add,\n field2: '',\n };\n numericProperties: string[] = [];\n stringProperties: string[] = [];\n isEditingOperation: boolean = false;\n showAllProfiles: boolean = false;\n showAllGroups: boolean = false;\n\n operatorsNumeric: Operators[] = [\n Operators.add,\n Operators.subtract,\n Operators.multiply,\n Operators.divide,\n ];\n operatorsString: Operators[] = [\n Operators.concatenateSpace,\n Operators.concatenateCommaSpace,\n Operators.concatenateComma,\n ];\n\n constructor(\n private exportService: DataExportService,\n private fb: FormBuilder\n ) {\n this.newGroupForm = this.fb.group({\n name: ['', Validators.required],\n });\n }\n\n ngOnInit() {\n this.initializeGroupItems();\n this.updateProfiles();\n }\n\n ngOnChanges() {\n if (this.data) {\n this.initializeGroupItems();\n }\n }\n\n get visibleProfiles() {\n return this.showAllProfiles ? this.profiles : this.profiles.slice(0, 3);\n }\n\n get visibleGroups() {\n return this.showAllGroups ? this.groupItems : this.groupItems.slice(0, 3);\n }\n\n initializeGroupItems() {\n if (this.data && this.data.length > 0) {\n const properties = Object.keys(this.data[0]).filter((k) => k !== 'id');\n this.exportService.setBaseProperties(properties);\n this.numericProperties = properties.filter(\n (prop) => typeof this.data[0][prop] === 'number'\n );\n this.stringProperties = properties.filter(\n (prop) => typeof this.data[0][prop] === 'string'\n );\n this.updateGroupItems();\n }\n }\n\n updateProfiles() {\n this.profiles = this.exportService.getProfiles().map((profile) => ({\n ...profile,\n selected: false,\n }));\n }\n\n updateGroupItems() {\n this.groupItems = this.exportService.getAllItems().map((item) => ({\n ...item,\n selected: false,\n }));\n }\n\n addGroup() {\n console.log('in');\n if (this.newGroupForm.valid) {\n const selectedItems = this.groupItems.filter((item) => item.selected);\n if (selectedItems.length > 0) {\n const newProfile: ExportProfile = {\n id: Date.now().toString(),\n name: this.newGroupForm.get('name')?.value,\n items: selectedItems,\n };\n this.exportService.addProfile(newProfile);\n this.updateProfiles();\n this.groupItems.forEach((item) => (item.selected = false));\n this.newGroupForm.reset();\n console.log('SELECTED');\n }\n console.log('VALID');\n }\n }\n\n editProfile(profile: ExportProfile & { selected: boolean }) {\n this.groupItems.forEach((item) => {\n item.selected = profile.items.some(\n (profileItem) => profileItem.id === item.id\n );\n });\n this.removeProfile(profile);\n }\n\n removeProfile(profile: ExportProfile & { selected: boolean }) {\n this.exportService.removeProfile(profile.id);\n this.updateProfiles();\n }\n\n addOrUpdateOperation() {\n if (\n this.newOperation.name &&\n this.newOperation.field1 &&\n this.newOperation.field2\n ) {\n if (this.isEditingOperation) {\n this.exportService.updateOperation(\n this.newOperation.id,\n this.newOperation\n );\n } else {\n const operation: Operation = {\n ...this.newOperation,\n id: Date.now().toString(),\n };\n this.exportService.addOperation(operation);\n }\n this.updateGroupItems();\n this.resetOperationForm();\n }\n }\n\n editOperation(operation: ExportItem & { selected: boolean }) {\n this.newOperation = { ...(operation as unknown as Operation) };\n this.isEditingOperation = true;\n }\n\n removeOperation(operation: ExportItem & { selected: boolean }) {\n this.exportService.removeOperation(operation.id);\n this.updateGroupItems();\n }\n\n resetOperationForm() {\n this.newOperation = {\n id: '',\n name: '',\n field1: '',\n operator: Operators.add,\n field2: '',\n };\n this.isEditingOperation = false;\n }\n\n resetAll() {\n this.exportService.resetAll();\n this.initializeGroupItems();\n this.updateProfiles();\n this.resetOperationForm();\n this.newGroupForm.reset();\n }\n\n exportData() {\n const selectedProfiles = this.profiles.filter(\n (profile) => profile.selected\n );\n if (selectedProfiles.length > 0) {\n const exportedData = this.exportService.exportData(\n this.data,\n selectedProfiles\n );\n this.exportDataEvent.emit(exportedData);\n } else {\n console.log('No profiles selected for export');\n }\n }\n\n onField1Change() {\n this.newOperation.field2 = '';\n this.newOperation.operator = this.isNumericField(this.newOperation.field1)\n ? Operators.add\n : Operators.concatenateSpace;\n }\n\n isNumericField(field: string): boolean {\n return this.numericProperties.includes(field);\n }\n\n get availableOperators(): Operators[] {\n return this.isNumericField(this.newOperation.field1)\n ? this.operatorsNumeric\n : this.operatorsString;\n }\n\n get availableFields2(): string[] {\n return this.isNumericField(this.newOperation.field1)\n ? this.numericProperties\n : this.stringProperties;\n }\n\n toggleShowAllProfiles() {\n this.showAllProfiles = !this.showAllProfiles;\n }\n\n toggleShowAllGroups() {\n this.showAllGroups = !this.showAllGroups;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center justify-between\">\n <button\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n fontSize=\"11px\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n <div class=\"operation-grid\">\n <verben-drop-down\n width=\"'8rem'\"\n height=\"'1.25rem'\"\n placeholder=\"Select field\"\n [options]=\"numericProperties.concat(stringProperties)\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n height=\"'1.25rem'\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n [(ngModel)]=\"newOperation.operator\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button ml-auto\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"exportData()\">Export</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataExportService } from './data-export.service';\nimport { DataExportComponent } from './data-export.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\n\n@NgModule({\n declarations: [DataExportComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n ],\n providers: [DataExportService],\n exports: [DataExportComponent],\n})\nexport class DataExportModule {}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { read, utils, writeFile } from 'xlsx';\nimport { ColumnDefinition } from '../data-table/data-table.types';\n\n@Injectable()\nexport class DataImportService<T> {\n importedData: WritableSignal<T[]> = signal([]);\n\n constructor() {}\n\n // Function to transform imported data to match your model structure\n transformImportData<T>(\n importedData: Record<string, any>[],\n columnDefinitions: ColumnDefinition<T>[]\n ): Partial<T>[] {\n // Create a mapping from header to importKey\n const headerToImportKeyMap = new Map<string, keyof T>();\n\n // Filter column definitions to only those with importKey and populate the map\n columnDefinitions\n .filter((col) => col.importKey)\n .forEach((col) => {\n const header =\n typeof col.header === 'string'\n ? col.header\n : col.header({}).toString();\n headerToImportKeyMap.set(header, col.importKey as keyof T);\n });\n\n // Transform each row in the imported data\n return importedData.map((row) => {\n const transformedRow: Partial<T> = {};\n\n // Process each key in the row\n Object.entries(row).forEach(([key, value]) => {\n // Find the corresponding import key for this header/key\n const importKey = headerToImportKeyMap.get(key);\n\n // Only add the field if there's a matching import key\n if (importKey) {\n transformedRow[importKey] = value;\n }\n });\n\n return transformedRow;\n });\n }\n\n handleImport(\n file: File,\n // previewer?: (data: any[]) => void,\n columnDefinitions: ColumnDefinition<T>[],\n parseImport?: (data: any) => Partial<T>[]\n ) {\n const reader = new FileReader();\n reader.onload = (event: any) => {\n // const wb = read(event.target.result, {\n // type: 'string',\n // raw: true,\n // cellText: true,\n // cellFormula: false,\n // cellNF: false,\n // });\n // console.time('Begin');\n let imported: any[] = [];\n const wb = read(event.target.result, { raw: true });\n const sheets = wb.SheetNames;\n if (sheets.length) {\n const rows = utils.sheet_to_json(wb.Sheets[sheets[0]], {\n raw: false,\n // defval: '',\n // rawNumbers: true,\n // dateNF: 'dd/mm/yyyy',\n }) as Record<string, any>[];\n\n imported = this.transformImportData(rows, columnDefinitions) as T[];\n if (parseImport) {\n imported = parseImport(rows);\n }\n // previewer(imported);\n }\n // console.log('Imported data:', JSON.stringify(imported, null, 2));\n // console.time('Start Process');\n this.importedData.set(imported);\n // console.timeEnd('Begin');\n return imported;\n };\n return reader.readAsArrayBuffer(file);\n }\n\n handleTemplateExport(fields: string[], title: string) {\n console.log(fields);\n const wb = utils.book_new();\n const ws: any = utils.json_to_sheet([]);\n utils.sheet_add_aoa(ws, [fields]);\n // utils.sheet_add_json(ws, this._data, { origin: 'A2', skipHeader: true });\n utils.book_append_sheet(wb, ws, title);\n writeFile(wb, title + '-template.' + 'xlsx');\n }\n\n addRow(event: { index: number; key: string | number; data: Partial<T> }) {\n // console.log(event);\n this.importedData.update((dat) => {\n // dat[event.index] = { ...dat[event.index], ...event.data };\n return dat.map((d, i) => {\n if (i === event.index) {\n return { ...d, ...event.data };\n }\n return d;\n });\n });\n // console.log(this.importedData());\n }\n\n isDuplicate(datum: Partial<T>, array: Partial<T>[], identifiers: string[]) {\n return (\n array.filter(\n (dat) =>\n identifiers.length > 0 &&\n identifiers.every(\n (identifier) =>\n datum[identifier as keyof T] &&\n datum[identifier as keyof T] === dat[identifier as keyof T]\n )\n ).length > 1\n );\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n HostListener,\n TemplateRef,\n} from '@angular/core';\n\n@Component({\n selector: 'verben-dialogue',\n templateUrl: './verben-dialogue.component.html',\n styleUrls: ['./verben-dialogue.component.css'],\n})\nexport class VerbenDialogueComponent {\n @Input() dialogueWidth: string = '';\n @Input() headerTemplate: TemplateRef<any> | null = null;\n @Input() bodyTemplate: TemplateRef<any> | null = null;\n @Input() footerTemplate: TemplateRef<any> | null = null;\n @Input() showCloseIcon: boolean = true;\n @Input() dismissOutsideClick: boolean = true;\n @Input() closeOnEscape: boolean = true;\n @Input() isVisible: boolean = false;\n @Input() size: 'small' | 'medium' | 'large'|'any' = 'small';\n @Input() backdropColor: string = '#0000005d';\n @Input() customClass: string = '';\n @Input() disableFooter: boolean = false;\n @Input() margin: string = '';\n @Input() padding: string = '10px';\n @Input() borderRadius: string = '10px';\n @Input() dialogueBgColor: string = '#fff';\n @Input() width: string = 'max-w-[100px]';\n @Input() closeIconClass: string = 'closeIconClass';\n @Input() boxShadow: string = 'box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1)';\n @Input() enableTransition: boolean = true;\n @Input() modalData: any;\n\n // New inputs for drawer mode\n @Input() mode: 'dialogue' | 'drawer' = 'dialogue';\n @Input() position: 'left' | 'right' = 'right';\n @Input() drawerWidth: string = '500px';\n @Output() openModal = new EventEmitter<any>();\n @Output() closeModal = new EventEmitter<any>();\n\n ngOnChanges() {\n if (this.isVisible) {\n this.openModal.emit(this.modalData);\n }\n }\n \n\n @HostListener('document:keydown.escape', ['$event'])\n onKeydownHandler(event: KeyboardEvent) {\n if (this.closeOnEscape && this.isVisible) {\n this.onClose();\n }\n }\n\n @HostListener('document:click', ['$event'])\n onOutsideClick(event: MouseEvent) {\n if (this.dismissOutsideClick && this.isVisible) {\n const target = event.target as HTMLElement;\n const isInsidePane = target.closest('.cdk-overlay-pane') !== null;\n if (target.classList.contains('modal-wrapper')&& !isInsidePane) {\n this.onClose();\n }\n }\n }\n setStyles() {\n const isDialogue = this.mode === 'dialogue';\n const noCustomWidth = !this.dialogueWidth;\n \n return {\n 'modal-content p-4': isDialogue,\n 'max-w-sm': isDialogue && this.size === 'small' && noCustomWidth,\n 'max-w-md': isDialogue && this.size === 'medium' && noCustomWidth,\n 'max-w-lg': isDialogue && this.size === 'large' && noCustomWidth,\n 'drawer-left': this.mode === 'drawer' && this.position === 'left',\n 'drawer-right': this.mode === 'drawer' && this.position === 'right',\n 'drawer-show-left': this.mode === 'drawer' && this.position === 'left' && this.isVisible,\n 'drawer-show-right': this.mode === 'drawer' && this.position === 'right' && this.isVisible\n };\n }\n \n \n onClose() {\n this.isVisible = false;\n this.closeModal.emit(this.modalData);\n }\n}\n","<div class=\"modal-wrapper fixed inset-0 flex justify-center items-center\" [ngClass]=\"{\n 'visible opacity-100': isVisible,\n 'invisible opacity-0': !isVisible,\n 'justify-start': mode === 'drawer' && position === 'left',\n 'justify-end': mode === 'drawer' && position === 'right'\n }\" [ngStyle]=\"{ 'background-color': backdropColor, 'transition': 'opacity 0.3s ease' }\">\n <div\n [style.padding]=\"padding\"\n [style.margin]=\"margin\"\n [style.background-color]=\"dialogueBgColor\"\n [style.border-radius]=\"mode === 'dialogue' && borderRadius\"\n [style.box-shadow]=\"boxShadow\"\n [style.width]=\"mode === 'dialogue' ? dialogueWidth :drawerWidth\"\n [class]=\"customClass\"\n [ngClass]=\"setStyles()\"\n>\n <!-- Close Icon -->\n <verben-svg *ngIf=\"showCloseIcon\" [class]=\"closeIconClass\" (click)=\"onClose()\" icon=\"close\" [width]=\"20\"\n [height]=\"20\" fill=\"white\" stroke=\"#000\"></verben-svg>\n\n <!-- Modal Header -->\n <div class=\"modal-header text-lg font-semibold mb-4\">\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Body -->\n <div class=\"modal-body mb-4\">\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <!-- Modal Footer -->\n <div *ngIf=\"!disableFooter\" class=\"modal-footer flex justify-end space-x-2\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n ColumnDefinition,\n FormGroupConfig,\n} from '../data-table/data-table.types';\nimport {\n AbstractControl,\n FormArray,\n FormControl,\n FormGroup,\n} from '@angular/forms';\nimport { ColumnDirective } from '../data-table/column.directive';\nimport { DataImportService } from './data-import.service';\n\n@Component({\n selector: 'lib-data-import',\n templateUrl: './data-import.component.html',\n styleUrl: './data-import.component.css',\n providers: [DataImportService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataImportComponent<T extends {}> {\n previewColumns = input.required<ColumnDefinition<T>[]>();\n formGroupConfig = input<\n FormGroupConfig<{\n [K in keyof T]: AbstractControl;\n }>\n >();\n /**\n * @deprecated Use importKey of previewColumns instead\n */\n fields = input<string[]>();\n title = input<string>('export-template');\n columnTemplates = input<readonly ColumnDirective[]>([]);\n parser = input<(data: any) => Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n previewData = input<T[]>();\n /**\n * Pass the method to use the imported data,\n * and eventually returns true if successfully used\n */\n onImportComplete = input<(data: Partial<T>[]) => Promise<boolean>>();\n /**\n * @deprecated Please remove, now handled internally\n */\n exportTemplateEvent = output<string[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n importEvent = output<File>();\n /**\n * @deprecated Use the onImportComplete input instead\n */\n importEventData = output<Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n rowSave = output<{\n index: number;\n key: number | string;\n data: Partial<T>;\n }>();\n\n // data: Signal<(T & { isDuplicate: boolean })[]>;\n previewColumnsList: Signal<ColumnDefinition<T>[]>;\n forms = new FormArray<FormGroup>([]);\n uniqueIdentifiers: WritableSignal<string[]> = signal([]);\n // duplicateDataMap: Map<string, number> = new Map();\n duplicateIndexSet = new Set<number>();\n invalidIndexSet = new Map<number, ColumnDirective['columnId'][]>();\n\n headers: Signal<string[]>;\n\n private _ext: 'xlsx' | 'xls' | 'csv' = 'xlsx';\n\n files: File[] = [];\n isDragging = false;\n showPreview = false;\n\n constructor(public service: DataImportService<T>) {\n effect(() => {\n // const columns = this.previewColumnsList();\n\n const identifiers = this.uniqueIdentifiers();\n\n this.service.importedData()?.forEach((d, i, arr) => {\n if (service.isDuplicate(d, arr, identifiers)) {\n this.duplicateIndexSet.add(i);\n }\n\n // columns\n // .filter(({ validatorFn }) => validatorFn !== undefined)\n // .forEach((column) => {\n // const invalidFields = Object.entries(d).reduce<string[]>(\n // (f, [k, v], i) => {\n // if (\n // column.validatorFn &&\n // !column.validatorFn(v as T[keyof T])\n // ) {\n // f.push(column.id);\n // }\n // return f;\n // },\n // []\n // );\n\n // if (invalidFields.length > 0) {\n // this.invalidIndexSet.set(i, invalidFields);\n // }\n // });\n });\n });\n\n this.previewColumnsList = computed(() => {\n return this.previewColumns()\n .filter((col) => col.importKey || col.formControlName)\n .map((column) => {\n const matchingTemplate = this.columnTemplates().find(\n (t) => t.columnId === column.id\n );\n if (matchingTemplate) {\n return {\n ...column,\n // accessorKey: column.importKey,\n cellTemplate: matchingTemplate.cellTemplate,\n cellEditTemplate: matchingTemplate.cellEditTemplate,\n headerTemplate: matchingTemplate.headerTemplate,\n footerTemplate: matchingTemplate.footerTemplate,\n };\n }\n return column;\n })\n .concat([\n {\n id: 'actions',\n header: 'Actions',\n },\n ]);\n });\n\n this.headers = computed(() => {\n return (\n this.fields() ??\n this.previewColumnsList()\n .filter((col) => col.importKey)\n .map((col) => col.header.toString())\n );\n });\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n this.isDragging = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n this.files = Array.from(event.dataTransfer!.files);\n\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n onFileSelected(event: any) {\n this.files = Array.from(event.target.files);\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n reset() {\n this.files = [];\n }\n\n save() {\n // console.log('PREVDATA', this.service.importedData());\n const onComplete = this.onImportComplete();\n if (onComplete) {\n onComplete(this.service.importedData()).then((success) => {\n if (success) {\n this.showPreview = false;\n }\n });\n } else {\n this.importEventData.emit(this.service.importedData() || []);\n this.showPreview = false;\n }\n }\n\n getControlNames() {\n const controls = this.formGroupConfig()?.controls;\n if (controls) {\n return Object.keys(controls);\n }\n return [];\n }\n\n handleTemplateExport() {\n this.service.handleTemplateExport(this.headers(), this.title());\n // this.exportTemplateEvent.emit(this.headers());\n }\n\n // getFormControl(index: number, field: string) {\n // const control = this..get(index)?.get(field) as FormControl<any>;\n // console.log(control);\n // return control;\n // }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Import</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <div class=\"flex gap-4 justify-between\">\n <button class=\"export-button\" (click)=\"handleTemplateExport()\">\n Download Template\n </button>\n <label for=\"fileInput\" class=\"export-button\">Upload File</label>\n </div>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div\n class=\"drop-area\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <p>\n Drag and drop files here or\n <label for=\"fileInput\">click to browse</label>\n </p>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\n multiple\n />\n </div>\n <div *ngIf=\"files.length > 0\">\n <h3>Uploaded Files:</h3>\n <ul>\n <li *ngFor=\"let file of files\">{{ file.name }}</li>\n </ul>\n </div>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"save()\">Import</button>\n </div>\n</verben-card>\n\n<!-- Modal Component -->\n<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'large'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'my-modal-custom-class'\"\n [disableFooter]=\"false\"\n [modalData]=\"[{ data: {} }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n dialogueWidth=\"85%\"\n>\n <a download=\"\"></a>\n</verben-dialogue>\n\n<!-- Define templates -->\n<ng-template #headerTemplate>\n <h2>Upload Preview</h2>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"flex gap-4 items-center justify-between my-4\">\n <p class=\"\">Total Items: {{ service.importedData().length }}</p>\n\n <p class=\"\">Duplicates: {{ duplicateIndexSet.size }}</p>\n\n <p class=\"\">Invalid Items: {{ invalidIndexSet.size }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"headers()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <div style=\"max-height: min(75vh, 780px); overflow: auto\">\n <lib-data-table\n [data]=\"service.importedData()\"\n [columns]=\"previewColumnsList()\"\n [formGroupConfig]=\"formGroupConfig()\"\n [useVirtualScroll]=\"true\"\n (rowSave)=\"service.addRow($event)\"\n >\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"footer-buttons flex gap-4 items-center justify-between my-4\">\n <button\n class=\"btn btn-secondary cancel-button\"\n (click)=\"showPreview = false\"\n >\n Cancel\n </button>\n <button class=\"btn btn-primary export-button\" (click)=\"save()\">\n Complete\n </button>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenDialogueComponent } from './verben-dialogue.component';\nimport { SvgModule } from '../svg/svg.module';\nimport {VerbenaButtonModule} from \"../../verbena-button/verbena-button.module\"\n@NgModule({\n declarations:[VerbenDialogueComponent],\n imports: [CommonModule,SvgModule,VerbenaButtonModule],\n exports: [VerbenDialogueComponent]\n})\nexport class VerbenDialogueModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataImportComponent } from './data-import.component';\nimport { CardModule } from '../card/card.module';\nimport { VerbenDialogueModule } from '../verben-dialogue/verben-dialogue.module';\nimport { DataTableModule } from '../data-table/data-table.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\n\n@NgModule({\n declarations: [DataImportComponent],\n imports: [\n CommonModule,\n CardModule,\n VerbenDialogueModule,\n DataTableModule,\n VerbenaInputModule,\n DropDownModule,\n ReactiveFormsModule,\n FormsModule,\n SvgModule,\n ],\n exports: [DataImportComponent],\n})\nexport class DataImportModule {}\n","export interface DataExtendItem {\n Name: string;\n DataType: DataType;\n MaxValue: number;\n MinValue: number;\n IsRequired: boolean;\n DefaultValue: any;\n Value: any;\n Options: string;\n Id: string;\n}\n\nexport enum DataType {\n Text = 'Text',\n MultilineText = 'MultilineText',\n MailAddress = 'MailAddress',\n PhoneNumber = 'PhoneNumber',\n Number = 'Number',\n Decimal = 'Decimal',\n YesNo = 'YesNo',\n URL = 'URL',\n Image = 'Image',\n SingleSelection = 'SingleSelection',\n MultiSelection = 'MultiSelection',\n Colour = 'Colour',\n Video = 'Video',\n Audio = 'Audio',\n SingleFileSelection = 'SingleFileSelection',\n MultiFileSelection = 'MultiFileSelection',\n}\n","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'verbena-switch',\n templateUrl: './verbena-switch.component.html',\n styleUrls: ['./verbena-switch.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VerbenaSwitchComponent),\n multi: true\n }\n ]\n})\nexport class VerbenaSwitchComponent implements ControlValueAccessor {\n @Input() label: string = '';\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() offColor: string = '#ccc'; // Default off color\n @Input() onColor: string = '#4caf50'; // Default on color\n @Input() onText: string = 'On'; // Text for ON state\n @Input() offText: string = 'Off'; // Text for OFF state\n @Input() width: string = '80px'; // Width of the switch\n @Input() height: string = '30px'; // Height of the switch\n @Input() customStyles: string = ''; // Accepts user-defined class for extra styling\n\n @Output() change = new EventEmitter<boolean>();\n\n // Function to call when the toggle changes\n public onChange: (value: boolean) => void = () => {};\n\n // Function to call when the component is touched\n private onTouched: () => void = () => {};\n\n // Toggle function to handle switch changes\n toggleSwitch() {\n if (!this.disabled) {\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n }\n }\n\n // ControlValueAccessor: Write a new value to the element\n writeValue(value: boolean): void {\n this.checked = value;\n }\n\n // ControlValueAccessor: Set the function to be called when the control value changes\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n // ControlValueAccessor: Set the function to be called when the control is touched\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // ControlValueAccessor: Set the disabled state\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Method to handle input change directly from template\n onChangeEvent(event: Event): void {\n if (!this.disabled) {\n const checked = (event.target as HTMLInputElement).checked;\n this.checked = checked;\n this.onChange(checked); // Call the onChange function with a boolean\n this.change.emit(checked); // Emit the change event\n }\n }\n\n}\n","<div class=\"switch\"\n [ngClass]=\"{'disabled': disabled}\"\n [ngStyle]=\"{ 'width': width, 'height': height }\"\n (click)=\"toggleSwitch()\">\n <input type=\"checkbox\" [checked]=\"checked\" class=\"check\" (change)=\"onChangeEvent($event)\" [disabled]=\"disabled\" />\n <span class=\"slider\" \n [ngStyle]=\"{ 'background-color': checked ? onColor : offColor }\">\n <span class=\"slider-label\">{{ checked ? onText : offText }}</span>\n <span class=\"slider-knob\"></span>\n </span>\n</div>","import {\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { DataExtendItem, DataType } from './data-extend.types';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'lib-data-extend',\n templateUrl: './data-extend.component.html',\n styleUrl: './data-extend.component.css',\n})\nexport class DataExtendComponent {\n properties = input<DataExtendItem[]>([]);\n extendDataEvent = output<DataExtendItem[]>();\n\n items: WritableSignal<DataExtendItem[]> = signal<DataExtendItem[]>([]);\n showAll: WritableSignal<boolean> = signal<boolean>(false);\n visibleItems: Signal<DataExtendItem[]>;\n form: FormGroup;\n selectedItem: DataExtendItem | null = null;\n\n dataTypes = Object.values(DataType);\n\n constructor(private fb: FormBuilder) {\n this.visibleItems = computed(() =>\n this.showAll() ? this.items() : this.items().slice(0, 3)\n );\n effect(() => {\n this.items.set(this.properties());\n });\n\n this.form = this.fb.group({\n Name: ['', Validators.required],\n DefaultValue: [''],\n DataType: ['', Validators.required],\n MaxValue: [0],\n MinValue: [0],\n IsRequired: [false],\n Options: [''],\n });\n\n this.form.get('DataType')?.valueChanges.subscribe((value) => {\n if (\n value === DataType.SingleSelection ||\n value === DataType.MultiSelection\n ) {\n this.form.get('Options')?.enable();\n this.form.get('Options')?.setValue('');\n this.form.get('Options')?.setValidators([Validators.required]);\n } else {\n this.form.get('Options')?.clearValidators();\n this.form.get('Options')?.disable();\n }\n\n if (\n value === DataType.Number ||\n value === DataType.Decimal ||\n value === DataType.SingleSelection ||\n value === DataType.MultiSelection\n ) {\n this.form.get('MaxValue')?.setValidators([Validators.required]);\n this.form.get('MinValue')?.setValidators([Validators.required]);\n }\n if (value === DataType.Text) {\n this.form.get('MaxValue')?.clearValidators();\n this.form.get('MinValue')?.clearValidators();\n this.form.get('MaxValue')?.disable();\n this.form.get('MinValue')?.disable();\n } else {\n this.form.get('MaxValue')?.enable();\n this.form.get('MinValue')?.enable();\n }\n\n this.form.get('Options')?.updateValueAndValidity();\n });\n }\n\n toggleShowAll() {\n this.showAll.update((prev) => !prev);\n }\n\n addItem() {\n const newItem = this.form.value;\n if (this.selectedItem) {\n const index = this.items().indexOf(this.selectedItem);\n this.items.update((prev) => {\n const updatedItems = [...prev];\n updatedItems[index] = newItem;\n return updatedItems;\n });\n this.selectedItem = null;\n } else {\n this.items.update((prev) => [...prev, newItem]);\n }\n this.form.reset();\n }\n\n removeItem(index: number) {\n this.items.update((prev) => prev.filter((_, i) => i !== index));\n }\n\n save() {\n this.extendDataEvent.emit(this.items());\n }\n\n cancel() {\n this.items.set(this.properties());\n }\n\n reset() {\n this.items.set([]);\n this.form.reset();\n }\n\n editItem(index: number) {\n const item = this.items()[index];\n this.form.patchValue(item);\n this.selectedItem = item;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Expand</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Entity</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let item of visibleItems(); let i = index\" class=\"item\">\n <div class=\"item-label\">\n <!-- <input\n type=\"checkbox\"\n [id]=\"'item-' + i\"\n [(ngModel)]=\"item.selected\"\n /> -->\n <label [for]=\"'item-' + i\" class=\"checkbox-label\">\n {{ item.Name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editItem(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeItem(i)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"items().length > 3\"\n (click)=\"toggleShowAll()\"\n class=\"show-more\"\n >\n <span>{{ showAll() ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"form\" (ngSubmit)=\"addItem()\">\n <div class=\"\">\n <p class=\"\">Name</p>\n <verbena-input\n placeholder=\"Enter property name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"Name\"\n ></verbena-input>\n </div>\n\n <div>\n <label for=\"DataType\">Data Type</label>\n <verben-drop-down\n id=\"DataType\"\n width=\"'100%'\"\n height=\"'1.25rem'\"\n placeholder=\"Select type\"\n [options]=\"dataTypes\"\n formControlName=\"DataType\"\n >\n </verben-drop-down>\n </div>\n\n <div>\n <label htmlFor=\"Options\" class=\"mb-2\">Enter Options</label>\n <verben-chip\n label=\"Options\"\n id=\"Options\"\n [placeholder]=\"'Enter Options'\"\n formControlName=\"Options\"\n ></verben-chip>\n </div>\n\n <div>\n <label for=\"DefaultValue\">Default Value</label>\n\n <verbena-input\n [placeHolder]=\"'Enter default text'\"\n formControlName=\"DefaultValue\"\n id=\"DefaultValue\"\n label=\"Default Value (optional)\"\n />\n </div>\n\n <div>\n <p class=\"mb-2\">Required</p>\n\n <verbena-switch\n label=\"Required\"\n [onColor]=\"'#1A237E'\"\n formControlName=\"IsRequired\"\n ></verbena-switch>\n </div>\n\n <div class=\"value-range\">\n <verbena-input\n [type]=\"'number'\"\n name=\"minValue\"\n label=\"Min Value\"\n formControlName=\"MinValue\"\n />\n <verbena-input\n [type]=\"'number'\"\n name=\"maxValue\"\n label=\"Max Value\"\n formControlName=\"MinValue\"\n />\n </div>\n\n <button\n [disabled]=\"!form.valid\"\n class=\"add-button ml-auto\"\n type=\"submit\"\n >\n + Add\n </button>\n </form>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"save()\">Extend</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaSwitchComponent } from './verbena-switch.component';\n\n@NgModule({\n declarations: [VerbenaSwitchComponent],\n imports: [CommonModule],\n exports: [VerbenaSwitchComponent]\n})\nexport class VerbenaSwitchModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataExtendComponent } from './data-extend.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { VerbenaSwitchModule } from '../../verbena-switch/verbena-switch.module';\nimport { ChipModule } from '../chip/chip.module';\n\n@NgModule({\n declarations: [DataExtendComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n VerbenaSwitchModule,\n ChipModule,\n ],\n exports: [DataExtendComponent],\n})\nexport class DataExtendModule {}\n","import { Injectable } from '@angular/core';\nimport {\n ExportProfile,\n Operation,\n ExportItem,\n ExportItemType,\n ArithmeticOperation,\n StringOperation,\n} from './data-xport.types';\nimport { ColumnDefinition } from '../data-table/data-table.types';\n\n@Injectable()\nexport class DataXportService<T> {\n private profiles: ExportProfile[] = [];\n private operations: Operation[] = [];\n private columns: ColumnDefinition<T>[] = [];\n\n constructor() {\n this.initializeDefaultProfile();\n }\n\n private initializeDefaultProfile() {\n this.profiles = [\n {\n id: 'default',\n name: 'All',\n items: [],\n },\n ];\n }\n\n setColumns(columns: ColumnDefinition<T>[]) {\n this.columns = columns;\n this.updateDefaultProfile();\n }\n\n getColumns(): ColumnDefinition<T>[] {\n return this.columns;\n }\n\n addProfile(profile: ExportProfile): void {\n this.profiles.push(profile);\n }\n\n getProfiles(): ExportProfile[] {\n return this.profiles;\n }\n\n updateProfile(id: string, updatedProfile: ExportProfile): void {\n const index = this.profiles.findIndex((p) => p.id === id);\n if (index !== -1) {\n this.profiles[index] = updatedProfile;\n }\n }\n\n removeProfile(id: string): void {\n this.profiles = this.profiles.filter((p) => p.id !== id);\n }\n\n addOperation(operation: Operation): void {\n this.operations.unshift(operation);\n this.updateDefaultProfile();\n }\n\n getOperations(): Operation[] {\n return this.operations;\n }\n\n updateOperation(id: string, updatedOperation: Operation): void {\n const index = this.operations.findIndex((o) => o.id === id);\n if (index !== -1) {\n this.operations[index] = updatedOperation;\n this.updateDefaultProfile();\n }\n }\n\n removeOperation(id: string): void {\n this.operations = this.operations.filter((o) => o.id !== id);\n this.updateDefaultProfile();\n // Remove operation from all profiles\n this.profiles.forEach((profile) => {\n profile.items = profile.items.filter((item) => item.id !== id);\n });\n }\n\n resetAll(): void {\n this.operations = [];\n this.columns = [];\n this.initializeDefaultProfile();\n }\n\n getAllItems(): ExportItem[] {\n return [\n ...this.operations.map((op) => ({\n id: op.id,\n name: op.name,\n exportKey: op.name,\n type: 'operation' as ExportItemType,\n })),\n ...this.columns.map((col) => ({\n id: col.id,\n name: col.header instanceof Function ? col.header({}) : col.header,\n exportKey: col.header instanceof Function ? col.header({}) : col.header,\n type: 'property' as ExportItemType,\n })),\n ];\n }\n\n exportData(\n data: T[],\n selectedProfiles: ExportProfile[]\n ): Record<string, any>[] {\n const uniqueItems = new Set<ExportItem>();\n selectedProfiles.forEach((profile) => {\n profile.items.forEach((item) => uniqueItems.add(item));\n });\n\n const records = data.map((item) => {\n const exportedItem: Record<string, any> = {};\n uniqueItems.forEach((exportItem) => {\n if (exportItem.type === 'property') {\n const column = this.columns.find((col) => col.id === exportItem.id);\n if (column) {\n exportedItem[exportItem.name] = column.accessorFn\n ? column.accessorFn(item)\n : column.accessorKey\n ? item[column.accessorKey]\n : null;\n }\n } else {\n const operation = this.operations.find((o) => o.id === exportItem.id);\n if (operation) {\n exportedItem[exportItem.name] = this.calculateOperation(\n item,\n operation\n );\n }\n }\n });\n return exportedItem;\n });\n\n this.downloadCSV(records);\n return records;\n }\n\n downloadCSV(data: Partial<any>[]) {\n const headers = Object.keys(data[0]);\n const csvContent = [\n headers.join(','),\n ...data.map((row) =>\n headers\n .map((header) => row[header])\n .map((datum) => `\"${datum}\"`)\n .join(',')\n ),\n ].join('\\n');\n\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n if (link.download !== undefined) {\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', 'export.csv');\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n\n private calculateOperation(item: T, operation: Operation): number | string {\n const column1 = this.columns.find((col) => col.id === operation.field1);\n const column2 = this.columns.find((col) => col.id === operation.field2);\n\n if (!column1 || !column2) return '';\n\n const value1 = column1.accessorFn\n ? column1.accessorFn(item)\n : column1.accessorKey\n ? item[column1.accessorKey]\n : '';\n\n const value2 = column2.accessorFn\n ? column2.accessorFn(item)\n : column2.accessorKey\n ? item[column2.accessorKey]\n : '';\n\n if (operation.type === 'arithmetic') {\n const num1 = Number(value1);\n const num2 = Number(value2);\n\n switch (operation.operator) {\n case 'add':\n return num1 + num2;\n case 'subtract':\n return num1 - num2;\n case 'multiply':\n return num1 * num2;\n case 'divide':\n return num2 !== 0 ? num1 / num2 : NaN;\n }\n } else {\n return `${value1}${operation.joinBy}${value2}`;\n }\n }\n\n private updateDefaultProfile(): void {\n this.profiles[0].items = this.getAllItems();\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n ArithmeticOperation,\n ExportItem,\n ExportProfile,\n Operation,\n StringOperation,\n} from './data-xport.types';\nimport { ColumnDefinition } from '../data-table/data-table.types';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DataXportService } from './data-xport.service';\n\n@Component({\n selector: 'lib-data-xport',\n templateUrl: './data-xport.component.html',\n styleUrl: './data-xport.component.css',\n})\nexport class DataXportComponent<T> {\n @Input() data!: T[];\n @Input() columns!: ColumnDefinition<T>[];\n /**\n * @deprecated will be removed in the near future\n */\n @Input() useImportKey: boolean = false;\n @Output() exportDataEvent = new EventEmitter<Record<string, any>[]>();\n\n profiles: (ExportProfile & { selected: boolean })[] = [];\n groupItems: (ExportItem & { selected: boolean })[] = [];\n newGroupForm: FormGroup;\n newOperation: Partial<Operation> = {\n id: '',\n name: '',\n field1: '',\n field2: '',\n type: 'arithmetic',\n } as ArithmeticOperation;\n\n numericColumns: ColumnDefinition<T>[] = [];\n stringColumns: ColumnDefinition<T>[] = [];\n isEditingOperation: boolean = false;\n showAllProfiles: boolean = false;\n showAllGroups: boolean = false;\n\n arithmeticOperators = [\n { value: 'add', label: '+' },\n { value: 'subtract', label: '-' },\n { value: 'multiply', label: '×' },\n { value: 'divide', label: '÷' },\n ];\n\n constructor(\n private exportService: DataXportService<T>,\n private fb: FormBuilder\n ) {\n this.newGroupForm = this.fb.group({\n name: ['', Validators.required],\n });\n }\n\n ngOnInit() {\n this.initializeColumns();\n this.updateProfiles();\n }\n\n ngOnChanges() {\n if (this.columns) {\n this.initializeColumns();\n }\n }\n\n get visibleProfiles() {\n return this.showAllProfiles ? this.profiles : this.profiles.slice(0, 3);\n }\n\n get visibleGroups() {\n return this.showAllGroups ? this.groupItems : this.groupItems.slice(0, 3);\n }\n\n initializeColumns() {\n const validColumns = this.columns.filter(\n (col) =>\n col.accessorKey ||\n col.accessorFn ||\n (this.useImportKey && col.importKey)\n );\n if (validColumns?.length) {\n this.exportService.setColumns(validColumns);\n this.updateColumnTypes();\n this.updateGroupItems();\n }\n }\n\n private updateColumnTypes() {\n if (this.data?.length && this.columns?.length) {\n const sampleData = this.data[0];\n\n this.numericColumns = this.columns.filter((col) => {\n /**\n * Remove the entire first part of the tenery on deprecation of this.useImportKey\n */\n const value = this.useImportKey\n ? col.accessorFn && typeof col.accessorFn(sampleData) === 'number'\n ? col.accessorFn(sampleData)\n : col.importKey\n ? sampleData[col.importKey]\n : null\n : col.accessorFn\n ? col.accessorFn(sampleData)\n : col.accessorKey\n ? sampleData[col.accessorKey]\n : null;\n return typeof value === 'number';\n });\n\n this.stringColumns = this.columns.filter((col) => {\n /**\n * Remove the entire first part of the tenery on deprecation of this.useImportKey\n */\n const value = this.useImportKey\n ? col.accessorFn && typeof col.accessorFn(sampleData) === 'string'\n ? col.accessorFn(sampleData)\n : col.importKey\n ? sampleData[col.importKey]\n : null\n : col.accessorFn\n ? col.accessorFn(sampleData)\n : col.accessorKey\n ? sampleData[col.accessorKey]\n : null;\n return typeof value === 'string';\n });\n }\n }\n\n updateProfiles() {\n this.profiles = this.exportService.getProfiles().map((profile) => ({\n ...profile,\n selected: false,\n }));\n }\n\n updateGroupItems() {\n this.groupItems = this.exportService.getAllItems().map((item) => ({\n ...item,\n selected: false,\n }));\n }\n\n addGroup() {\n if (this.newGroupForm.valid) {\n const selectedItems = this.groupItems.filter((item) => item.selected);\n if (selectedItems.length > 0) {\n const newProfile: ExportProfile = {\n id: Date.now().toString(),\n name: this.newGroupForm.get('name')?.value,\n items: selectedItems,\n };\n this.exportService.addProfile(newProfile);\n this.updateProfiles();\n this.groupItems.forEach((item) => (item.selected = false));\n this.newGroupForm.reset();\n }\n }\n }\n\n editProfile(profile: ExportProfile & { selected: boolean }) {\n this.groupItems.forEach((item) => {\n item.selected = profile.items.some(\n (profileItem) => profileItem.id === item.id\n );\n });\n this.removeProfile(profile);\n }\n\n removeProfile(profile: ExportProfile & { selected: boolean }) {\n this.exportService.removeProfile(profile.id);\n this.updateProfiles();\n }\n\n addOrUpdateOperation() {\n if (\n this.newOperation.name &&\n this.newOperation.field1 &&\n this.newOperation.field2\n ) {\n const operation: Operation =\n this.newOperation.type === 'arithmetic'\n ? {\n id: this.isEditingOperation\n ? this.newOperation.id!\n : Date.now().toString(),\n name: this.newOperation.name,\n field1: this.newOperation.field1,\n field2: this.newOperation.field2,\n type: 'arithmetic',\n operator:\n (this.newOperation as ArithmeticOperation).operator || 'add',\n }\n : {\n id: this.isEditingOperation\n ? this.newOperation.id!\n : Date.now().toString(),\n name: this.newOperation.name,\n field1: this.newOperation.field1,\n field2: this.newOperation.field2,\n type: 'string',\n joinBy: (this.newOperation as StringOperation).joinBy || ' ',\n };\n\n if (this.isEditingOperation) {\n this.exportService.updateOperation(operation.id, operation);\n } else {\n this.exportService.addOperation(operation);\n }\n this.updateGroupItems();\n this.resetOperationForm();\n }\n }\n\n editOperation(operation: ExportItem & { selected: boolean }) {\n const foundOperation = this.exportService\n .getOperations()\n .find((op) => op.id === operation.id);\n if (foundOperation) {\n this.newOperation = { ...foundOperation };\n this.isEditingOperation = true;\n }\n }\n\n removeOperation(operation: ExportItem & { selected: boolean }) {\n this.exportService.removeOperation(operation.id);\n this.updateGroupItems();\n }\n\n resetOperationForm() {\n this.newOperation = {\n id: '',\n name: '',\n field1: '',\n field2: '',\n type: 'arithmetic',\n operator: 'add',\n } as ArithmeticOperation;\n this.isEditingOperation = false;\n }\n\n resetAll() {\n this.exportService.resetAll();\n this.initializeColumns();\n this.updateProfiles();\n this.resetOperationForm();\n this.newGroupForm.reset();\n }\n\n exportData() {\n const selectedProfiles = this.profiles.filter(\n (profile) => profile.selected\n );\n if (selectedProfiles.length > 0) {\n this.exportService.exportData(this.data, selectedProfiles);\n // console.log(exportedData);\n // this.exportDataEvent.emit(exportedData);\n }\n }\n\n isAnyProfileSelected(): boolean {\n return this.profiles.some((profile) => profile.selected);\n }\n\n onField1Change() {\n this.newOperation.field2 = '';\n const isNumeric = this.numericColumns.some(\n (col) => col.id === this.newOperation.field1\n );\n this.newOperation.type = isNumeric ? 'arithmetic' : 'string';\n if (isNumeric) {\n (this.newOperation as ArithmeticOperation).operator = 'add';\n } else {\n (this.newOperation as StringOperation).joinBy = ' ';\n }\n }\n\n private transformColumnToOption(column: ColumnDefinition<T>) {\n return {\n id: column.id,\n label:\n typeof column.header === 'function' ? column.header({}) : column.header,\n originalColumn: column,\n };\n }\n\n get columnOptions() {\n return [...this.numericColumns, ...this.stringColumns].map((col) =>\n this.transformColumnToOption(col)\n );\n }\n\n get availableFields2() {\n const columns =\n this.newOperation.type === 'arithmetic'\n ? this.numericColumns\n : this.stringColumns;\n return columns.map((col) => this.transformColumnToOption(col));\n }\n\n toggleShowAllProfiles() {\n this.showAllProfiles = !this.showAllProfiles;\n }\n\n toggleShowAllGroups() {\n this.showAllGroups = !this.showAllGroups;\n }\n\n getColumnHeader(column: ColumnDefinition<T>): string {\n return typeof column.header === 'function'\n ? column.header({})\n : column.header;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center justify-between\">\n <button\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n fontSize=\"11px\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n\n <div class=\"operation-grid\">\n <!-- First Field Selection -->\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n fontSize=\"11px\"\n placeholder=\"Select field\"\n [options]=\"columnOptions\"\n optionLabel=\"label\"\n optionValue=\"id\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n\n <!-- Operator/Join Selection -->\n <ng-container *ngIf=\"newOperation.type === 'arithmetic'\">\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n placeholder=\"Select operator\"\n [options]=\"arithmeticOperators\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [(ngModel)]=\"newOperation.operator\"\n fontSize=\"11px\"\n >\n </verben-drop-down>\n </ng-container>\n <ng-container *ngIf=\"newOperation.type === 'string'\">\n <verbena-input\n placeholder=\"Join by\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n fontSize=\"11px\"\n width=\"100%\"\n height=\"1.025rem\"\n pd=\"2px 6px\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [(ngModel)]=\"newOperation.joinBy\"\n ></verbena-input>\n </ng-container>\n\n <!-- Second Field Selection -->\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n optionLabel=\"label\"\n optionValue=\"id\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button ml-auto\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button\n class=\"export-button\"\n [disabled]=\"!isAnyProfileSelected()\"\n (click)=\"exportData()\"\n >\n Export\n </button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { DataXportService } from './data-xport.service';\nimport { DataXportComponent } from './data-xport.component';\n\n@NgModule({\n declarations: [DataXportComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n ],\n providers: [DataXportService],\n exports: [DataXportComponent],\n})\nexport class DataXportModule {}\n","export type FilterOperatorType = 'string' | 'number' | 'date';\n\nexport interface FilterOperator {\n label: string;\n value: string;\n type: FilterOperatorType;\n}\n\nexport const STRING_OPERATORS: FilterOperator[] = [\n { label: 'Starts With', value: 'startsWith', type: 'string' },\n { label: 'Ends With', value: 'endsWith', type: 'string' },\n { label: 'Contains', value: 'contains', type: 'string' },\n { label: 'Equals', value: 'equals', type: 'string' },\n];\n\nexport const NUMBER_OPERATORS: FilterOperator[] = [\n { label: 'Equal', value: 'equal', type: 'number' },\n { label: 'Greater Than', value: 'greaterThan', type: 'number' },\n { label: 'Less Than', value: 'lessThan', type: 'number' },\n];\n\nexport const DATE_OPERATORS: FilterOperator[] = [\n { label: 'On', value: 'on', type: 'date' },\n { label: 'Before', value: 'before', type: 'date' },\n { label: 'After', value: 'after', type: 'date' },\n];\n\nexport interface FilterCondition {\n columnId: string;\n operator: string;\n value: string | number | Date;\n}\n\nexport interface FilterGroup {\n id: string;\n name: string;\n conditions: FilterCondition[];\n}\n\nexport interface FilterState {\n groups: FilterGroup[];\n activeFilters: FilterCondition[];\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { ColumnDefinition } from '../data-table/data-table.types';\nimport {\n FilterOperator,\n FilterCondition,\n FilterGroup,\n STRING_OPERATORS,\n NUMBER_OPERATORS,\n DATE_OPERATORS,\n} from './data-filter.types';\n\n@Component({\n selector: 'lib-data-filter',\n templateUrl: './data-filter.component.html',\n styleUrl: './data-filter.component.css',\n})\nexport class DataFilterComponent<T> implements OnInit {\n @Input() columns!: ColumnDefinition<T>[];\n @Input() data!: T[];\n @Output() filterApplied = new EventEmitter<FilterCondition[]>();\n @Output() resetFilter = new EventEmitter();\n filterableColumns: ColumnDefinition<T>[] = [];\n availableOperators: FilterOperator[] = [];\n savedFilters: (FilterCondition & { selected: boolean })[] = [];\n currentFilter: Partial<FilterCondition> = {};\n showAllFilters = false;\n maxVisibleItems = 3;\n currentColumnType: 'string' | 'number' | 'date' | null = null;\n\n ngOnInit() {\n this.initializeFilterableColumns();\n }\n\n private initializeFilterableColumns() {\n this.filterableColumns = this.columns.filter((col) => col.accessorKey);\n }\n\n onColumnSelect(columnId: string) {\n const column = this.filterableColumns.find((col) => col.id === columnId);\n if (!column) return;\n\n this.currentFilter.columnId = columnId;\n\n // Reset other values\n this.currentFilter.operator = undefined;\n this.currentFilter.value = undefined;\n\n // Determine column type and set available operators\n this.currentColumnType = this.determineColumnType(column);\n\n switch (this.currentColumnType) {\n case 'string':\n this.availableOperators = STRING_OPERATORS;\n break;\n case 'number':\n this.availableOperators = NUMBER_OPERATORS;\n break;\n case 'date':\n this.availableOperators = DATE_OPERATORS;\n break;\n default:\n this.availableOperators = [];\n }\n }\n\n addFilter() {\n if (\n !this.currentFilter.columnId ||\n !this.currentFilter.operator ||\n !this.currentFilter.value\n ) {\n return;\n }\n\n const newFilter: FilterCondition & { selected: boolean } = {\n columnId: this.currentFilter.columnId!,\n operator: this.currentFilter.operator,\n value: this.currentFilter.value,\n selected: true,\n };\n\n this.savedFilters.unshift(newFilter);\n this.resetCurrentFilter();\n }\n\n getFilterDescription(filter: FilterCondition): string {\n const column = this.filterableColumns.find(\n (col) => col.id === filter.columnId\n );\n if (!column) return '';\n\n const columnName =\n typeof column.header === 'function' ? column.header({}) : column.header;\n\n const operator = this.getOperatorLabel(filter.operator);\n\n let value = filter.value;\n if (value instanceof Date) {\n value = (value as Date).toLocaleDateString();\n }\n\n return `${columnName} ${operator} ${value}`;\n }\n\n private getOperatorLabel(operatorValue: string): string {\n const operator = [\n ...STRING_OPERATORS,\n ...NUMBER_OPERATORS,\n ...DATE_OPERATORS,\n ].find((op) => op.value === operatorValue);\n return operator ? operator.label.toLowerCase() : operatorValue;\n }\n\n private determineColumnType(\n column: ColumnDefinition<T>\n ): 'string' | 'number' | 'date' | null {\n if (!this.data.length) return null;\n\n const sampleValue = column.accessorKey\n ? this.data[0][column.accessorKey]\n : column.accessorFn\n ? column.accessorFn(this.data[0])\n : null;\n\n if (sampleValue === null) return null;\n\n if (sampleValue instanceof Date) return 'date';\n if (typeof sampleValue === 'number') return 'number';\n return 'string';\n }\n\n private resetCurrentFilter() {\n this.currentFilter = {};\n this.availableOperators = [];\n }\n\n resetAll() {\n \n this.savedFilters = [];\n this.resetCurrentFilter();\n this.resetFilter.emit()\n }\n\n applyFilters() {\n const activeFilters = this.savedFilters\n .filter((filter) => filter.selected)\n .map(({ columnId, operator, value }) => ({\n columnId,\n operator,\n value,\n }));\n this.filterApplied.emit(activeFilters);\n }\n\n getColumnLabel(columnId: string): string {\n const column = this.filterableColumns.find((col) => col.id === columnId);\n return column\n ? typeof column.header === 'function'\n ? column.header({})\n : column.header\n : columnId;\n }\n\n get visibleFilters() {\n return this.showAllFilters\n ? this.savedFilters\n : this.savedFilters.slice(0, this.maxVisibleItems);\n }\n\n get activeFilterCount(): number {\n return this.savedFilters.filter((filter) => filter.selected).length;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">\n Filter <sup>({{ activeFilterCount }})</sup>\n </h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n\n <div card-body class=\"card-body\">\n <!-- Saved Filters Section -->\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Filters</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n\n <div *ngFor=\"let filter of visibleFilters\" class=\"item\">\n <div class=\"item-label\">\n <input type=\"checkbox\" [(ngModel)]=\"filter.selected\" />\n <label>{{ getFilterDescription(filter) }}</label>\n </div>\n </div>\n\n <div\n *ngIf=\"savedFilters.length > maxVisibleItems\"\n class=\"show-more\"\n (click)=\"showAllFilters = !showAllFilters\"\n >\n {{ showAllFilters ? \"Show Less\" : \"Show More\" }}\n </div>\n </section>\n\n <hr class=\"divider\" />\n\n <!-- New Filter Operation -->\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n\n <div class=\"operation-grid\">\n <!-- Column Selection -->\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n placeholder=\"Select column\"\n [options]=\"filterableColumns\"\n optionLabel=\"header\"\n optionValue=\"id\"\n [(ngModel)]=\"currentFilter.columnId\"\n (ngModelChange)=\"onColumnSelect($event)\"\n ></verben-drop-down>\n\n <!-- Operator Selection -->\n <verben-drop-down\n width=\"100%\"\n height=\"1.025rem\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [(ngModel)]=\"currentFilter.operator\"\n ></verben-drop-down>\n\n <!-- Value Input based on type -->\n <ng-container [ngSwitch]=\"currentColumnType\">\n <!-- Date Input -->\n <verbena-input\n *ngSwitchCase=\"'date'\"\n type=\"date\"\n placeholder=\"Select date\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"1.025rem\"\n pd=\"2px 6px\"\n [(ngModel)]=\"currentFilter.value\"\n ></verbena-input>\n\n <!-- Number Input -->\n <verbena-input\n *ngSwitchCase=\"'number'\"\n type=\"number\"\n placeholder=\"Enter number\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"1.025rem\"\n pd=\"2px 6px\"\n [(ngModel)]=\"currentFilter.value\"\n ></verbena-input>\n\n <!-- Text Input (default) -->\n <verbena-input\n *ngSwitchCase=\"'string'\"\n type=\"text\"\n placeholder=\"Enter text\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"1.025rem\"\n pd=\"2px 6px\"\n [(ngModel)]=\"currentFilter.value\"\n ></verbena-input>\n </ng-container>\n </div>\n\n <button class=\"add-button ml-auto\" (click)=\"addFilter()\">+ Add</button>\n </section>\n </div>\n\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"applyFilters()\">Filter</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';\nimport { DataFilterComponent } from './data-filter.component';\n\n@NgModule({\n declarations: [DataFilterComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n ],\n exports: [DataFilterComponent],\n})\nexport class DataFilterModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataFilterService {\n\n constructor() { }\n}\n","export type SortDirection = 'asc' | 'desc';\n\nexport interface SortCondition {\n columnId: string;\n direction: SortDirection;\n}\n\nexport interface SortOperator {\n label: string;\n value: SortDirection;\n type: 'string' | 'number' | 'date';\n}\n\nexport const STRING_SORT_OPERATORS: SortOperator[] = [\n { label: 'A to Z', value: 'asc', type: 'string' },\n { label: 'Z to A', value: 'desc', type: 'string' },\n];\n\nexport const NUMBER_SORT_OPERATORS: SortOperator[] = [\n { label: '1 to 100', value: 'asc', type: 'number' },\n { label: '100 to 1', value: 'desc', type: 'number' },\n];\n\nexport const DATE_SORT_OPERATORS: SortOperator[] = [\n { label: 'Oldest First', value: 'asc', type: 'date' },\n { label: 'Newest First', value: 'desc', type: 'date' },\n];\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ColumnDefinition } from '../data-table/data-table.types';\nimport {\n SortCondition,\n SortOperator,\n STRING_SORT_OPERATORS,\n NUMBER_SORT_OPERATORS,\n DATE_SORT_OPERATORS,\n} from './data-sort.types';\n\n@Component({\n selector: 'lib-data-sort',\n templateUrl: './data-sort.component.html',\n styleUrls: ['./data-sort.component.css'],\n})\nexport class DataSortComponent<T> implements OnInit {\n @Input() columns!: ColumnDefinition<T>[];\n @Input() data!: T[];\n @Input() enableDragAndDrop: boolean = true;\n @Output() sortApplied = new EventEmitter<SortCondition[]>();\n @Output() resetFilter = new EventEmitter();\n sortableColumns: ColumnDefinition<T>[] = [];\n selectedSorts: Map<string, 'asc' | 'desc'> = new Map();\n showAllProperties = false;\n maxVisibleItems = 3;\n draggedIndex: number | null = null;\n checkAll: boolean = false;\n selectedColumns: Set<string> = new Set();\n\n ngOnInit() {\n this.initializeSortableColumns();\n }\n\n private initializeSortableColumns() {\n this.sortableColumns = this.columns.filter((col) => col.accessorKey);\n }\n\n get visibleColumns() {\n return this.showAllProperties\n ? this.sortableColumns\n : this.sortableColumns.slice(0, this.maxVisibleItems);\n }\n\n // Drag and Drop functionality\n onDragStart(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n this.draggedIndex = index;\n event.dataTransfer?.setData('text/plain', String(index));\n }\n\n onDragOver(event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n }\n\n onDrop(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n if (this.draggedIndex !== null && this.draggedIndex !== index) {\n this.swapColumns(this.draggedIndex, index);\n }\n this.draggedIndex = null;\n }\n\n private swapColumns(fromIndex: number, toIndex: number) {\n const temp = this.sortableColumns[fromIndex];\n this.sortableColumns[fromIndex] = this.sortableColumns[toIndex];\n this.sortableColumns[toIndex] = temp;\n }\n\n // Column Selection functionality\n toggleSelectAll() {\n this.checkAll = !this.checkAll;\n if (this.checkAll) {\n this.sortableColumns.forEach((column) =>\n this.selectedColumns.add(column.id)\n );\n } else {\n this.selectedColumns.clear();\n }\n }\n\n toggleColumnSelection(columnId: string) {\n if (this.selectedColumns.has(columnId)) {\n this.selectedColumns.delete(columnId);\n this.checkAll = false;\n } else {\n this.selectedColumns.add(columnId);\n if (this.selectedColumns.size === this.sortableColumns.length) {\n this.checkAll = true;\n }\n }\n }\n\n isColumnSelected(columnId: string): boolean {\n return this.selectedColumns.has(columnId);\n }\n\n // Existing sort functionality...\n getSortOperators(column: ColumnDefinition<T>): SortOperator[] {\n const columnType = this.determineColumnType(column);\n\n switch (columnType) {\n case 'string':\n return STRING_SORT_OPERATORS;\n case 'number':\n return NUMBER_SORT_OPERATORS;\n case 'date':\n return DATE_SORT_OPERATORS;\n default:\n return STRING_SORT_OPERATORS;\n }\n }\n\n private determineColumnType(\n column: ColumnDefinition<T>\n ): 'string' | 'number' | 'date' {\n if (!this.data.length) return 'string';\n\n const sampleValue = column.accessorKey\n ? this.data[0][column.accessorKey]\n : column.accessorFn\n ? column.accessorFn(this.data[0])\n : null;\n\n if (sampleValue instanceof Date) return 'date';\n if (typeof sampleValue === 'number') return 'number';\n return 'string';\n }\n\n updateSort(columnId: string, direction: 'asc' | 'desc') {\n if (direction) {\n this.selectedSorts.set(columnId, direction);\n } else {\n this.selectedSorts.delete(columnId);\n }\n }\n\n isColumnSorted(columnId: string, direction: 'asc' | 'desc'): boolean {\n return this.selectedSorts.get(columnId) === direction;\n }\n\n getColumnHeader(column: ColumnDefinition<T>): string {\n return typeof column.header === 'function'\n ? column.header({})\n : column.header;\n }\n\n resetAll() {\n this.resetFilter.emit()\n this.selectedSorts.clear();\n this.selectedColumns.clear();\n this.checkAll = false;\n }\n\n applySorts() {\n // Only emit sorts for selected columns\n const sorts: SortCondition[] = Array.from(this.selectedSorts.entries())\n .filter(([columnId]) => this.selectedColumns.has(columnId))\n .map(([columnId, direction]) => ({\n columnId,\n direction,\n }));\n this.sortApplied.emit(sorts);\n }\n\n get activeSortCount(): number {\n return Array.from(this.selectedSorts.entries()).filter(([columnId]) =>\n this.selectedColumns.has(columnId)\n ).length;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n [height]=\"'32rem'\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">\n Sort <sup>({{ activeSortCount }})</sup>\n </h4>\n <button class=\"reset-button\" (click)=\"resetAll()\">Reset</button>\n </div>\n\n <div card-body class=\"card-body\">\n <!-- Column Sort Options -->\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n\n <!-- Select All -->\n <div class=\"select-all-wrapper\">\n <label class=\"select-all\">\n <input\n type=\"checkbox\"\n [checked]=\"checkAll\"\n (change)=\"toggleSelectAll()\"\n />\n <span>Select All</span>\n </label>\n </div>\n\n @for (column of visibleColumns; track column.id) {\n <div\n class=\"sort-option\"\n [attr.draggable]=\"enableDragAndDrop\"\n (dragstart)=\"onDragStart($index, $event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($index, $event)\"\n >\n <div class=\"sort-option-header\">\n @if (enableDragAndDrop) {\n <verben-svg\n icon=\"square-dot\"\n [width]=\"21\"\n [height]=\"21\"\n fill=\"black\"\n class=\"drag-handle\"\n ></verben-svg>\n }\n <input\n type=\"checkbox\"\n [checked]=\"isColumnSelected(column.id)\"\n (change)=\"toggleColumnSelection(column.id)\"\n width=\"16px\"\n height=\"16px\"\n />\n <span>{{ getColumnHeader(column) }}</span>\n </div>\n\n <div class=\"sort-operators\">\n @for (operator of getSortOperators(column); track operator.value) {\n <label class=\"sort-operator\">\n <input\n type=\"radio\"\n [name]=\"'sort_' + column.id\"\n [value]=\"operator.value\"\n (change)=\"updateSort(column.id, operator.value)\"\n [checked]=\"isColumnSorted(column.id, operator.value)\"\n />\n {{ operator.label }}\n </label>\n }\n </div>\n </div>\n } @if (sortableColumns.length > maxVisibleItems) {\n <button\n (click)=\"showAllProperties = !showAllProperties\"\n class=\"show-more\"\n >\n <span>{{ showAllProperties ? \"Show Less\" : \"Show More\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n }\n </section>\n </div>\n\n <div card-footer class=\"card-footer\">\n <button class=\"apply-button\" (click)=\"applySorts()\">Sort</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\nimport { DataSortComponent } from './data-sort.component';\n\n@NgModule({\n declarations: [DataSortComponent],\n imports: [\n CommonModule,\n SvgModule,\n CardModule,\n TooltipModule,\n ],\n exports: [DataSortComponent],\n})\nexport class DataSortModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataSortService {\n\n constructor() { }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ColumnDefinition } from '../data-table/data-table.types';\n\n@Component({\n selector: 'lib-data-columns',\n templateUrl: './data-columns.component.html',\n styleUrl: './data-columns.component.css'\n})\nexport class DataColumnsComponent<T> implements OnInit {\n @Input() columns!: ColumnDefinition<T>[];\n @Input() enableDragAndDrop: boolean = true;\n @Input() maxVisibleItems: number = 5;\n @Output() columnsUpdated = new EventEmitter<ColumnDefinition<T>[]>();\n\n visibleColumns: ColumnDefinition<T>[] = [];\n showAllColumns = false;\n draggedIndex: number | null = null;\n selectAll: boolean = false;\n columnVisibility: Map<string, boolean> = new Map();\n\n ngOnInit() {\n this.initializeColumns();\n }\n\n private initializeColumns() {\n this.visibleColumns = [...this.columns];\n // Initialize visibility map with current column states\n this.visibleColumns.forEach(column => {\n this.columnVisibility.set(column.id, true);\n });\n this.updateSelectAllStatus();\n }\n\n get columnsToShow() {\n return this.showAllColumns \n ? this.visibleColumns \n : this.visibleColumns.slice(0, this.maxVisibleItems);\n }\n\n // Drag and Drop functionality\n onDragStart(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n this.draggedIndex = index;\n event.dataTransfer?.setData('text/plain', String(index));\n }\n\n onDragOver(event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n }\n\n onDrop(index: number, event: DragEvent) {\n if (!this.enableDragAndDrop) return;\n event.preventDefault();\n if (this.draggedIndex !== null && this.draggedIndex !== index) {\n this.swapColumns(this.draggedIndex, index);\n }\n this.draggedIndex = null;\n }\n\n private swapColumns(fromIndex: number, toIndex: number) {\n const temp = this.visibleColumns[fromIndex];\n this.visibleColumns[fromIndex] = this.visibleColumns[toIndex];\n this.visibleColumns[toIndex] = temp;\n this.emitUpdatedColumns();\n }\n\n // Column Selection functionality\n toggleSelectAll() {\n this.selectAll = !this.selectAll;\n const newValue = this.selectAll;\n this.visibleColumns.forEach(column => {\n this.columnVisibility.set(column.id, newValue);\n });\n this.emitUpdatedColumns();\n }\n\n toggleColumnVisibility(columnId: string) {\n const currentValue = this.columnVisibility.get(columnId);\n this.columnVisibility.set(columnId, !currentValue);\n this.updateSelectAllStatus();\n this.emitUpdatedColumns();\n }\n\n isColumnVisible(columnId: string): boolean {\n return this.columnVisibility.get(columnId) ?? false;\n }\n\n private updateSelectAllStatus() {\n this.selectAll = Array.from(this.columnVisibility.values()).every(value => value);\n }\n\n getColumnHeader(column: ColumnDefinition<T>): string {\n return typeof column.header === 'function' \n ? column.header({}) \n : column.header;\n }\n\n resetColumns() {\n this.initializeColumns();\n this.emitUpdatedColumns();\n }\n\n emitUpdatedColumns() {\n const updatedColumns = this.visibleColumns.filter(column => \n this.columnVisibility.get(column.id)\n );\n this.columnsUpdated.emit(updatedColumns);\n }\n\n get activeColumnCount(): number {\n return Array.from(this.columnVisibility.values()).filter(value => value).length;\n }\n}\n","<verben-card width=\"24rem\" borderRadius=\"1rem\" [border]=\"'1px solid #D4A007'\" bgColor=\"#FFFFFF\">\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Column <sup>({{ activeColumnCount }})</sup></h4>\n <button class=\"reset-button\" (click)=\"resetColumns()\">Reset</button>\n </div>\n \n <div card-body class=\"card-body\">\n <!-- Column Options -->\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg icon=\"info\" [width]=\"15\" [height]=\"15\" fill=\"grey\"></verben-svg>\n </div>\n \n <!-- Select All -->\n <div class=\"select-all-wrapper\">\n <label class=\"select-all\">\n <input \n type=\"checkbox\" \n [checked]=\"selectAll\"\n (change)=\"toggleSelectAll()\"\n />\n <span>Select All</span>\n </label>\n </div>\n \n @for (column of columnsToShow; track column.id) {\n <div \n class=\"column-option\"\n [attr.draggable]=\"enableDragAndDrop\"\n (dragstart)=\"onDragStart($index, $event)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($index, $event)\"\n >\n <div class=\"column-option-content\">\n @if (enableDragAndDrop) {\n <verben-svg\n icon=\"square-dot\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"black\"\n class=\"drag-handle\"\n ></verben-svg>\n }\n <input \n type=\"checkbox\" \n [checked]=\"isColumnVisible(column.id)\"\n (change)=\"toggleColumnVisibility(column.id)\"\n />\n <span>{{ getColumnHeader(column) }}</span>\n </div>\n </div>\n }\n \n @if (visibleColumns.length > maxVisibleItems) {\n <button\n (click)=\"showAllColumns = !showAllColumns\"\n class=\"show-more\"\n >\n <span>{{ showAllColumns ? \"Show Less\" : \"Show More\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n }\n </section>\n </div>\n \n <div card-footer class=\"card-footer\">\n <button class=\"save-button\" (click)=\"emitUpdatedColumns()\">Save</button>\n </div>\n </verben-card>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataColumnsComponent } from './data-columns.component';\nimport { SvgModule } from '../svg/svg.module';\nimport { CardModule } from '../card/card.module';\nimport { DropDownModule } from '../drop-down/drop-down.module';\nimport { TooltipModule } from '../tooltip/tooltip.module';\n\n\n\n@NgModule({\n declarations: [DataColumnsComponent],\n imports: [\n CommonModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n ],\n exports: [DataColumnsComponent]\n})\nexport class DataColumnsModule { }\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataColumnsService {\n\n constructor() { }\n}\n","import { Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[controlOptions]'\n})\nexport class ControlOptionsDirective implements OnChanges {\n \n // Inputs for various control options\n @Input() hidden: boolean = false;\n @Input() disabled: boolean = false;\n @Input() height: string | null = null; \n @Input() width: string | null = null; \n @Input() minHeight: string | null = null;\n @Input() minWidth: string | null = null; \n @Input() maxHeight: string | null = null;\n @Input() maxWidth: string | null = null; \n @Input() position: 'center' | 'left' | 'right' | 'top' | 'bottom' | null = null;\n @Input() scrollable: boolean = false;\n @Input() singleLine: boolean = false;\n @Input() multiLine: boolean = false;\n @Input() border: string | null = null; \n @Input() borderRadius: string | null = null;\n @Input() textColor: string | null = null; \n @Input() backgroundColor: string | null = null;\n @Input() hoverStyles: { [key: string]: string } | null = null;\n \n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.applyStyles();\n }\n\n private applyStyles(): void {\n const nativeElement = this.el.nativeElement;\n\n // Handle hidden property\n this.renderer.setStyle(nativeElement, 'display', this.hidden ? 'none' : 'block');\n\n // Handle disabled property\n if (this.disabled) {\n this.renderer.setAttribute(nativeElement, 'disabled', 'true');\n this.renderer.setStyle(nativeElement, 'pointer-events', 'none');\n this.renderer.setStyle(nativeElement, 'opacity', '0.6');\n } else {\n this.renderer.removeAttribute(nativeElement, 'disabled');\n this.renderer.setStyle(nativeElement, 'pointer-events', 'auto');\n this.renderer.setStyle(nativeElement, 'opacity', '1');\n }\n\n // Apply height, width, min/max constraints\n this.applyDimension(nativeElement, 'height', this.height);\n this.applyDimension(nativeElement, 'width', this.width);\n this.applyDimension(nativeElement, 'min-height', this.minHeight);\n this.applyDimension(nativeElement, 'min-width', this.minWidth);\n this.applyDimension(nativeElement, 'max-height', this.maxHeight);\n this.applyDimension(nativeElement, 'max-width', this.maxWidth);\n\n // Handle position\n this.handlePosition();\n\n // Scrollable property\n this.renderer.setStyle(nativeElement, 'overflow', this.scrollable ? 'auto' : 'hidden');\n\n // Single-line or multi-line\n if (this.singleLine) {\n this.renderer.setStyle(nativeElement, 'white-space', 'nowrap');\n } else if (this.multiLine) {\n this.renderer.setStyle(nativeElement, 'white-space', 'normal');\n }\n\n // Apply border and border-radius\n this.applyStyle(nativeElement, 'border', this.border);\n this.applyStyle(nativeElement, 'border-radius', this.borderRadius);\n\n // Apply text color and background color\n this.applyStyle(nativeElement, 'color', this.textColor);\n this.applyStyle(nativeElement, 'background-color', this.backgroundColor);\n }\n\n // Helper function to apply height, width, and similar styles\n private applyDimension(element: any, style: string, value: string | null): void {\n if (value) {\n this.renderer.setStyle(element, style, value);\n } else {\n this.renderer.removeStyle(element, style);\n }\n }\n\n // Generalized style application\n private applyStyle(element: any, style: string, value: string | null): void {\n if (value) {\n this.renderer.setStyle(element, style, value);\n } else {\n this.renderer.removeStyle(element, style);\n }\n }\n\n // Handle position based on the input\n private handlePosition(): void {\n const nativeElement = this.el.nativeElement;\n\n switch (this.position) {\n case 'center':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'top', '50%');\n this.renderer.setStyle(nativeElement, 'left', '50%');\n this.renderer.setStyle(nativeElement, 'transform', 'translate(-50%, -50%)');\n break;\n case 'left':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'left', '0');\n break;\n case 'right':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'right', '0');\n break;\n case 'top':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'top', '0');\n break;\n case 'bottom':\n this.renderer.setStyle(nativeElement, 'position', 'absolute');\n this.renderer.setStyle(nativeElement, 'bottom', '0');\n break;\n default:\n this.renderer.setStyle(nativeElement, 'position', 'static');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlOptionsDirective } from './control-options.directive';\n\n@NgModule({\n declarations: [ControlOptionsDirective],\n imports: [CommonModule],\n exports: [ControlOptionsDirective]\n})\nexport class ControlOptionsModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'verbena-badge',\n templateUrl: './verbena-badge.component.html',\n styleUrls: ['./verbena-badge.component.css']\n})\nexport class VerbenaBadgeComponent {\n // Badge text and customization properties\n @Input() text: string = ''; // Text or number inside the badge\n @Input() bgColor: string = '#ff4757'; // Background color (default red)\n @Input() textColor: string = '#fff'; // Text color (default white)\n @Input() borderRadius: string = '12px'; // Border radius (default round)\n @Input() pd: string = '5px 10px'; // Padding inside the badge\n @Input() fontSize: string = '14px'; // Font size for the badge text\n @Input() width: string = '';\n @Input() height: string = '';\n}\n","<span [ngStyle]=\"{\n 'background-color': bgColor,\n 'color': textColor,\n 'border-radius': borderRadius,\n 'padding': pd,\n 'width': width,\n 'height': height,\n 'font-size': fontSize\n}\"\nclass=\"verbena-badge\"\n>\n{{ text }}\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaBadgeComponent } from './verbena-badge.component';\n\n@NgModule({\n declarations: [VerbenaBadgeComponent],\n imports: [CommonModule],\n exports: [VerbenaBadgeComponent]\n})\nexport class VerbenaBadgeModule {}\n","import { \n Component, \n Input, \n Output, \n EventEmitter, \n OnInit, \n Optional, \n Self, \n Inject, \n forwardRef \n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n@Component({\n selector: 'verbena-textarea',\n templateUrl: './verbena-textarea.component.html',\n styleUrls: ['./verbena-textarea.component.css']\n})\nexport class VerbenaTextareaComponent implements ControlValueAccessor, OnInit {\n @Input() label: string = '';\n @Input() required: boolean = false;\n @Input() rows: number = 5;\n @Input() cols: number = 40;\n @Input() bgColor: string = '#fff';\n @Input() textColor: string = '#000';\n @Input() border: string = '1px solid #ccc';\n @Input() borderRadius: string = '4px';\n @Input() pd: string = '10px';\n @Input() width: string = '100%';\n @Input() height: string = 'auto';\n @Input() value: string = '';\n @Input() errorMessageColor: string = 'red';\n\n @Output() valueChange = new EventEmitter<string>();\n\n errorMessage: string | undefined;\n textareaId: string = '';\n isInvalid: boolean = false;\n\n onChange: any = () => {};\n onTouch: any = () => {};\n\n constructor(@Optional() @Self() @Inject(forwardRef(() => NgControl)) private ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n this.ngControl.statusChanges?.subscribe((status) => {\n this.isInvalid = this.ngControl.touched\n ? status === 'INVALID' && this.ngControl.touched\n : false;\n });\n }\n }\n\n ngOnInit() {\n this.textareaId = `verbena-textarea-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n onInput(event: Event) {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value.trim();\n this.validate();\n this.onChange(this.value); // Notify form control of value change\n this.onTouch(); // Mark as touched\n this.valueChange.emit(this.value); // Emit the value change\n }\n\n validate() {\n if (this.required && !this.value) {\n this.errorMessage = 'This field is required';\n this.isInvalid = true;\n } else {\n this.errorMessage = undefined;\n this.isInvalid = false;\n }\n }\n\n writeValue(value: any): void {\n this.value = value ? value.trim() : '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n const textarea = document.getElementById(this.textareaId) as HTMLTextAreaElement | null;\n if (textarea) {\n textarea.disabled = isDisabled;\n }\n }\n\n //newly added\n onValueChange(newValue: string) {\n this.value = newValue;\n this.valueChange.emit(this.value); // Emit the value when it changes\n this.validate(); // Optional: Re-validate on each change\n }\n}\n","<label [for]=\"textareaId\">{{ label }}</label>\n<textarea\n [id]=\"textareaId\"\n [required]=\"required\"\n [attr.rows]=\"rows\"\n [attr.cols]=\"cols\"\n [ngStyle]=\"{\n 'background-color': bgColor,\n 'color': textColor,\n 'border': border,\n 'border-radius': borderRadius,\n 'padding': pd,\n 'width': width,\n 'height': height\n }\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\" \n></textarea>\n<span *ngIf=\"errorMessage\" class=\"error\">{{ errorMessage }}</span>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaTextareaComponent } from './verbena-textarea.component';\n\n@NgModule({\n declarations: [VerbenaTextareaComponent],\n imports: [CommonModule, FormsModule],\n exports: [VerbenaTextareaComponent]\n})\nexport class VerbenaTextareaModule {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MailPayload } from '../../models/mail-model';\n\n@Component({\n selector: 'verben-mail-template',\n templateUrl: './verben-mail.component.html',\n styleUrls: ['./verben-mail.component.css'],\n})\nexport class VerbenMailTemplate {\n @Input() containerWidth: string = '500px';\n @Input() borderRadius: string = '10px';\n @Input() primaryColor: string = '#FFE681';\n @Input() secondaryColor: string = '';\n @Input() tetiaryColor: string = '';\n @Input() border: string = '1px solid gray';\n @Input() pd: string = '20px';\n @Input() m: string = '';\n @Input() max: number = 10;\n mailForm: FormGroup;\n isRichText: boolean = false;\n isUploading: boolean = false;\n uploadedFileName: string | null = null;\n fileUploadError: string | null = null;\n toEmails: string[] = [];\n ccEmails: string[] = [];\n bccEmails: string[] = [];\n toEmailInput: string = '';\n ccEmailInput: string = '';\n bccEmailInput: string = '';\n mailData: any;\n toEmailError: string | null = null;\n ccEmailError: string | null = null;\n bccEmailError: string | null = null;\n @Output() mailPayload = new EventEmitter<MailPayload>();\n constructor(private fb: FormBuilder) {\n this.mailForm = this.fb.group({\n subject: ['', Validators.required],\n body: ['', Validators.required],\n toEmails: [[], Validators.required],\n ccEmails: [[]],\n bccEmails: [[]],\n });\n }\n\n onToChange(): void {\n const newValues = this.mailForm.get('toEmails')?.value || [];\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const validEmails: string[] = [];\n\n newValues.forEach((email: string) => {\n if (emailRegex.test(email)) {\n validEmails.push(email);\n } else {\n if (!emailRegex.test(email)) {\n this.toEmailError = 'email must be valid';\n }\n }\n });\n if (validEmails.length === 0) {\n this.toEmailError = 'email must be valid';\n } else {\n this.toEmailError = '';\n }\n\n this.toEmails = validEmails;\n }\n\n onCcChange(): void {\n const newValues = this.mailForm.get('ccEmails')?.value||[];\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const validEmails = newValues.filter((email: string) =>\n emailRegex.test(email)\n );\n this.ccEmails = validEmails;\n }\n onBccChange(): void {\n const newValues = this.mailForm.get('bccEmails')?.value||[];\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const validEmails = newValues.filter((email: string) =>\n emailRegex.test(email)\n );\n this.bccEmails = validEmails;\n }\n validateEmail(email: string): boolean {\n const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n return emailRegex.test(email);\n }\n\n onFileSelected(event: Event) {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n const file = input.files[0];\n this.fileUploadError = null;\n if (!file) {\n this.isUploading = true;\n }\n if (file.size > 5000000) {\n this.fileUploadError = 'File size exceeds 5MB limit.';\n this.uploadedFileName = null;\n this.isUploading = false; // Reset isUploading state\n } else {\n this.uploadedFileName = file.name;\n }\n } else {\n this.isUploading = false;\n }\n }\n\n removeFile() {\n this.uploadedFileName = null;\n this.fileUploadError = null;\n const fileInput = document.getElementById('attachment') as HTMLInputElement;\n if (fileInput) {\n fileInput.value = '';\n }\n }\n\n toggleEditor() {\n this.isRichText = !this.isRichText;\n }\n\n sendEmail() {\n if (this.mailForm.valid) {\n const emailData: MailPayload = {\n subject: this.mailForm.value.subject,\n body: this.mailForm.value.body,\n to: this.mailForm.get('toEmails')?.value,\n cc: this.mailForm.get('ccEmails')?.value,\n bcc: this.mailForm.get('bccEmails')?.value,\n attachment: this.uploadedFileName,\n };\n this.mailPayload.emit(emailData);\n this.resetForm();\n }\n }\n resetForm() {\n this.mailForm.get('toEmails')?.reset('');\n this.mailForm.get('ccEmails')?.reset('');\n this.mailForm.get('bccEmails')?.reset('');\n this.mailForm.get(\"subject\")?.reset('')\n this.mailForm.get(\"body\")?.reset('')\n this.toEmailError = null;\n this.ccEmailError = null;\n this.bccEmailError = null;\n this.uploadedFileName = null;\n this.fileUploadError = null;\n this.isUploading = false;\n this.isRichText = false;\n }\n}\n","<form\n [style.width]=\"containerWidth\"\n [formGroup]=\"mailForm\"\n (ngSubmit)=\"sendEmail()\"\n>\n <div\n class=\"button-container flex flex-end gap\"\n [style.margin-bottom]=\"'10px'\"\n >\n <button class=\"button\" type=\"button\" (click)=\"toggleEditor()\">\n {{ isRichText ? \"Switch to Plain\" : \"View Designer\" }}\n </button>\n <button\n type=\"submit\"\n [style.background-color]=\"primaryColor\"\n [style.padding]=\"'0px 10px'\"\n [ngClass]=\"{\n disabled: mailForm.invalid,\n enabled: !mailForm.invalid\n }\"\n [disabled]=\"mailForm.invalid\"\n >\n Send\n </button>\n </div>\n <div\n class=\"container\"\n [style.border-radius]=\"borderRadius\"\n [style.border]=\"border\"\n [style.padding]=\"pd\"\n >\n <div class=\"verben-mail-container\">\n <div class=\"verben-mail-form\">\n <!-- Subject Field -->\n <div class=\"form-element subject\">\n <label for=\"subject\">Subject:</label>\n <input id=\"subject\" type=\"text\" formControlName=\"subject\" />\n </div>\n\n <!-- To Field with verben-chip -->\n <div class=\"form-element\">\n <label for=\"to\">TO:</label>\n <div class=\"email-tags-container\">\n <verben-chip\n [required]=\"true\"\n [invalidMessage]=\"toEmailError || 'email must be provided'\"\n (onChange)=\"onToChange()\"\n formControlName=\"Groups\"\n [max]=\"max\"\n [ngModel]=\"toEmails\"\n >\n </verben-chip>\n </div>\n </div>\n\n <!-- CC Field with verben-chip -->\n <div class=\"form-element\">\n <label for=\"cc\">CC:</label>\n <div class=\"email-tags-container\">\n <verben-chip\n (onChange)=\"onCcChange()\"\n formControlName=\"ccEmails\"\n [ngModel]=\"ccEmails\"\n >\n <ng-template let-item vTemplate=\"item\">\n {{ item }}\n </ng-template>\n </verben-chip>\n </div>\n </div>\n\n <!-- BCC Field with verben-chip -->\n <div class=\"form-element\">\n <label for=\"bcc\">BCC:</label>\n <div class=\"email-tags-container\">\n <verben-chip\n (onChange)=\"onBccChange()\"\n [ngModel]=\"bccEmails\"\n formControlName=\"bccEmails\"\n >\n <ng-template let-item vTemplate=\"item\">\n {{ item }}\n </ng-template>\n </verben-chip>\n </div>\n </div>\n\n <!-- Attachments Section -->\n <div class=\"form-element attachment\">\n <label\n *ngIf=\"!uploadedFileName && !isUploading\"\n for=\"attachment\"\n class=\"flex items-center gap cursor-pointer\"\n >\n <verben-svg [width]=\"20\" fill=\"black\" icon=\"attach\"></verben-svg\n >Attach file\n </label>\n <input\n id=\"attachment\"\n type=\"file\"\n (change)=\"onFileSelected($event)\"\n class=\"none\"\n />\n <div *ngIf=\"isUploading\" class=\"loader\">Uploading...</div>\n <div *ngIf=\"uploadedFileName\" class=\"flex items-center gap\">\n <span>{{ uploadedFileName }}</span>\n <button\n [style.color]=\"'black'\"\n type=\"button\"\n (click)=\"removeFile()\"\n >\n ✕\n </button>\n </div>\n <div *ngIf=\"fileUploadError\" class=\"error\">{{ fileUploadError }}</div>\n </div>\n\n <!-- Email Body -->\n\n <hr [style.color]=\"'#00000066'\" />\n <div class=\"form-element quill\" [style.margin-top]=\"'30px'\">\n <div *ngIf=\"isRichText; else textArea\">\n <ng-content select=\"[rich-text]\">widget should appear here </ng-content>\n </div>\n <ng-template #textArea>\n <ng-content select=\"[text-arae]\">\n <textarea\n formControlName=\"body\"\n class=\"block\"\n rows=\"10\"\n cols=\"50\"\n ></textarea>\n </ng-content>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { VerbenMailTemplate } from './verben-mail.component';\nimport { ChipModule } from '../chip/chip.module';\nimport { SvgModule } from '../svg/svg.module';\n@NgModule({\n declarations: [VerbenMailTemplate],\n imports: [\n FormsModule,\n CommonModule,\n ChipModule,\n ReactiveFormsModule,\n SvgModule,\n ],\n exports: [VerbenMailTemplate],\n})\nexport class VerbenaMailTemplateModule {}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'verben-time-picker',\n templateUrl: './verben-time-picker.component.html',\n styleUrls: ['./verben-time-picker.component.css']\n})\nexport class VerbenTimePickerComponent {\n @Input() model: Date = new Date();\n @Output() modelChange = new EventEmitter<Date>(); // Add this line\n @Input() format24: boolean = false; // Toggle between 12h and 24h format\n @Output() timeChange = new EventEmitter<{ hours: number; minutes: number; meridiem: string }>();\n \n hours!: number;\n minutes!: number;\n meridiem: string = 'AM';\n\n constructor() {\n this.initializeTime();\n }\n\n initializeTime() {\n this.hours = this.format24 ? this.model.getHours() : this.get12HourFormat(this.model.getHours());\n this.minutes = this.model.getMinutes();\n if (!this.format24) {\n this.meridiem = this.model.getHours() >= 12 ? 'PM' : 'AM';\n }\n }\n\n get12HourFormat(hours: number): number {\n return hours % 12 || 12;\n }\n\n onTimeChange() {\n const newDate = new Date(this.model);\n newDate.setHours(this.format24 ? this.hours : this.meridiem === 'PM' ? this.hours + 12 : this.hours);\n newDate.setMinutes(this.minutes);\n\n this.modelChange.emit(newDate); // Emit the updated date\n this.timeChange.emit({\n hours: this.hours,\n minutes: this.minutes,\n meridiem: this.format24 ? '' : this.meridiem\n });\n }\n \n\n setMeridiem(value: string) {\n this.meridiem = value;\n this.onTimeChange();\n }\n}\n","<div class=\" max\">\n <div class=\"time-picker\">\n <div>\n <input class=\"input-field verben-input\" type=\"text\" [(ngModel)]=\"hours\" (change)=\"onTimeChange()\" [min]=\"format24 ? 0 : 1\" [max]=\"format24 ? 23 : 12\">\n <p>\n Hour\n </p>\n </div>\n <span>:</span>\n <div>\n <input type=\"text\" [(ngModel)]=\"minutes\" (change)=\"onTimeChange()\" min=\"0\" max=\"59\">\n <p>\n Minute\n </p>\n </div>\n \n <div *ngIf=\"!format24\" class=\"meridiem-toggle gap-0\">\n <button [class.active]=\"meridiem === 'AM'\" (click)=\"setMeridiem('AM')\">AM</button>\n <button [class.active]=\"meridiem === 'PM'\" (click)=\"setMeridiem('PM')\">PM</button>\n </div>\n </div>\n\n \n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenTimePickerComponent } from './verben-time-picker.component';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [VerbenTimePickerComponent],\n imports: [CommonModule, FormsModule],\n exports: [VerbenTimePickerComponent]\n})\nexport class VerbenTimePickerModule {}","import { InjectionToken } from '@angular/core';\n\nexport const UTIL_SERVICE = new InjectionToken<any>('UTIL_SERVICE');\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconService {\n constructor(private http: HttpClient) {}\n\n getIcon(iconName: string): Observable<string> {\n return this.http.get(`/icons/${iconName}.svg`, { responseType: 'text' }).pipe(\n catchError(() => of('')) // Handle errors (e.g., if the SVG doesn't exist)\n );\n }\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { IconService } from '../../services/icon.service';\n\n@Component({\n selector: 'lib-icon',\n templateUrl: './icons.component.html',\n styleUrls: ['./icons.component.css'],\n})\nexport class IconsComponent implements OnInit {\n @Input() iconName: string = '';\n svgContent: SafeHtml = '';\n\n constructor(\n private iconService: IconService,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.iconService.getIcon(this.iconName).subscribe((svg) => {\n this.svgContent = this.sanitizer.bypassSecurityTrustHtml(svg);\n });\n }\n}\n","<div [innerHTML]=\"svgContent\"></div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http'; // Import HttpClientModule\nimport { IconsComponent } from './icons.component';\nimport { IconService } from '../../services/icon.service';\n\n@NgModule({\n declarations: [IconsComponent], // Declare the IconComponent\n imports: [CommonModule, HttpClientModule], // Import CommonModule and HttpClientModule\n exports: [IconsComponent], // Export the IconComponent so it can be used in other modules\n providers: [IconService], // Provide the IconService\n})\nexport class IconModule {}\n","import { Component, Input, TemplateRef, ViewChild, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'lib-tab-item',\n template: `\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n `\n})\nexport class TabItemComponent {\n @Input() title: string = '';\n @Input() id: string = '';\n @Input() \n set active(value: boolean) {\n if (this._active !== value) {\n this._active = value;\n this.activeChange.emit(value);\n }\n }\n get active(): boolean {\n return this._active;\n }\n\n @Output() activeChange = new EventEmitter<boolean>();\n\n @Input() disabled: boolean = false;\n @Input() tabColor: string = ''; // Tab background color\n @Input() activeTabBgColor: string = ''; // Active tab background color\n @Input() textColor: string = ''; // Tab text color\n @Input() hoverColor: string = ''; // Hover color\n @Input() badgeCount: number | null = null;\n @Input() badgeColor: string = '#ff4081'; // Badge background color\n\n @ViewChild('content', { static: true }) content!: TemplateRef<any>;\n\n private _active: boolean = false;\n}\n","import { Component, ContentChildren, QueryList, AfterContentInit, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\nimport { TabItemComponent } from './tab-item.component';\n\n@Component({\n selector: 'verben-tab',\n templateUrl: './verbena-tab.component.html',\n styleUrls: ['./verbena-tab.component.css']\n})\nexport class VerbenaTabComponent implements AfterContentInit {\n @ContentChildren(TabItemComponent) tabs!: QueryList<TabItemComponent>;\n @Output() tabChange = new EventEmitter<TabItemComponent>();\n\n @Input() backgroundColor: string = ''; // Global background color\n @Input() activeTabBgColor: string = ''; // Global active tab background\n @Input() textColor: string = ''; // Global text color\n @Input() hoverColor: string = ''; // Global hover color\n\n activeTab: TabItemComponent | null = null;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterContentInit() {\n if (this.tabs.length && !this.tabs.find(tab => tab.active)) {\n this.selectTab(this.tabs.first);\n } else {\n const activeTab = this.tabs.find(tab => tab.active);\n if (activeTab) {\n this.selectTab(activeTab);\n }\n }\n\n this.tabs.changes.subscribe(() => {\n if (!this.activeTab || !this.tabs.find(tab => tab === this.activeTab)) {\n if (this.tabs.length) {\n this.selectTab(this.tabs.first);\n } else {\n this.activeTab = null;\n }\n }\n this.cdr.markForCheck();\n });\n }\n\n selectTab(tab: TabItemComponent) {\n if (tab.disabled) return;\n\n if (this.activeTab) {\n this.activeTab.active = false;\n }\n\n this.activeTab = tab;\n tab.active = true;\n this.tabChange.emit(tab);\n }\n}\n","<div \n class=\"tab-container\" \n [ngStyle]=\"{'background-color': backgroundColor}\"\n>\n <div class=\"tab-header\">\n <div \n *ngFor=\"let tab of tabs\" \n class=\"tab-item\" \n [ngClass]=\"{'active': tab.active, 'disabled': tab.disabled}\"\n [ngStyle]=\"{\n 'background-color': tab.active ? (tab.activeTabBgColor || activeTabBgColor) : tab.tabColor,\n 'color': tab.textColor || textColor,\n 'border-color': !tab.tabColor? activeTabBgColor : tab.tabColor\n }\"\n (click)=\"!tab.disabled && selectTab(tab)\"\n >\n {{ tab.title }}\n <span \n class=\"tab-badge\" \n *ngIf=\"tab.badgeCount !== null\"\n [ngStyle]=\"{'background-color': tab.badgeColor}\"\n >\n {{ tab.badgeCount }}\n </span>\n </div>\n </div>\n <div class=\"tab-content\" *ngIf=\"activeTab\" [ngStyle]=\"{'background-color': !activeTab.tabColor? activeTabBgColor : activeTab.tabColor}\">\n <ng-container [ngTemplateOutlet]=\"activeTab.content\"></ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerbenaTabComponent } from './verbena-tab.component';\nimport { TabItemComponent } from './tab-item.component';\n\n@NgModule({\n declarations: [\n VerbenaTabComponent,\n TabItemComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n VerbenaTabComponent,\n TabItemComponent\n ]\n})\nexport class VerbenaTabModule { }","import {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n} from '@angular/forms';\n\nconst NUMBER_INPUT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberInputComponent),\n multi: true,\n};\n\n@Component({\n selector: 'verben-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.css'],\n providers: [NUMBER_INPUT_VALUE_ACCESSOR],\n})\nexport class NumberInputComponent implements ControlValueAccessor {\n @Input() min?: number;\n @Input() max?: number;\n @Input() step: number = 1;\n @Input() value: number = 0;\n @Input() label?: string = '';\n @Input() controlButton: boolean = false;\n @Input() disabled: boolean = false; // ✅ New input\n\n @Output() valueChange = new EventEmitter<number>();\n\n private onChange = (value: number) => {};\n private onTouched = () => {};\n\n errorMessage: string = '';\n inputContainerClass: any;\n inputWrapperClass: any;\n\n increase() {\n if (this.disabled) return; // ✅ Respect disabled state\n if (this.max === undefined || this.value + this.step <= this.max) {\n this.value += this.step;\n this.validateValue();\n this.valueChange.emit(this.value);\n this.notifyValueChange();\n }\n }\n\n decrease() {\n if (this.disabled) return; \n if (this.min === undefined || this.value - this.step >= this.min) {\n this.value -= this.step;\n this.validateValue();\n this.valueChange.emit(this.value);\n this.notifyValueChange();\n }\n }\n\n onInput(event: Event) {\n if (this.disabled) return; \n const inputValue = (event.target as HTMLInputElement).value;\n let newValue = Number(inputValue);\n this.value = newValue;\n this.validateValue();\n this.notifyValueChange();\n }\n\n validateValue() {\n if (this.min !== undefined && this.value < this.min) {\n this.value = this.min;\n this.errorMessage = `Value must be at least ${this.min}`;\n } else if (this.max !== undefined && this.value > this.max) {\n this.value = this.max;\n this.errorMessage = `Value cannot exceed ${this.max}`;\n } else {\n this.errorMessage = '';\n }\n\n this.valueChange.emit(this.value);\n }\n\n notifyValueChange() {\n this.onChange(this.value);\n this.onTouched();\n }\n\n // Control Value Accessor methods\n writeValue(value: number): void {\n this.value = value ?? 0;\n this.validateValue();\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled; // ✅ Sync with external state\n }\n}\n","<div\n class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content': 'space-between'\n }\"\n >\n <label [for]=\"label\">{{ label }}</label>\n </div>\n\n <input\n type=\"number\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\" \n (blur)=\"validateValue()\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n</div>\n\n<p class=\"error-message\" *ngIf=\"errorMessage\">{{ errorMessage }}</p>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NumberInputComponent } from './number-input.component';\n\n@NgModule({\n declarations: [NumberInputComponent],\n imports: [CommonModule],\n exports: [NumberInputComponent],\n})\nexport class NumberInputModule {}\n","/*\n * Public API Surface of verben-ng-ui\n */\n\n// export * from './lib/verben-ng-ui.service';\n// export * from './lib/verben-ng-ui.component';\n\n// Exporting modules\nexport * from './lib/components/card-data-view/card-data-view.component';\nexport * from './lib/components/card-data-view/card-data-view.module';\nexport * from './lib/components/card-data-view/card-data';\nexport * from './lib/components/card-data-view/left-card-data/left-card-data.component';\nexport * from './lib/components/card-data-view/left-card-data-view/left-card-data-view.component';\nexport * from './lib/components/card-data-view/right-card-data-view/right-card-data-view.component';\nexport * from './lib/components/card-data-view/card-data-view-header/card-data-view-header.component';\nexport * from './lib/components/card-data-view/card-data-view-footer/card-data-view-footer.component';\n\nexport * from './lib/components/drop-down/DropdownMenuItem';\nexport * from './lib/components/drop-down/DropdownChangeEvent';\nexport * from './lib/components/drop-down/DropdownLoadEvent';\nexport * from './lib/components/chip/ChipChangeEvent';\nexport * from './lib/components/drop-down/drop-down.module';\nexport * from './lib/components/drop-down/drop-down.component';\nexport * from './lib/components/chip/chip.module';\nexport * from './lib/components/chip/chip.component';\nexport * from './lib/components/shared.module';\nexport * from './lib/components/TemplateDirective.directive';\n\nexport * from './lib/components/image/image.module';\nexport * from './lib/components/image/image.component';\n\nexport * from './lib/components/tooltip/tooltip.component';\nexport * from './lib/components/tooltip/tooltip.module';\n\nexport * from './lib/components/svg/svg.module';\nexport * from './lib/components/svg/svg.component';\n\nexport * from './lib/components/table-filter/table-filter.module';\nexport * from './lib/components/table-filter/table-filter.component';\n\nexport * from './lib/components/notification/notification.module';\nexport * from './lib/components/notification/notification.component';\n\nexport * from './lib/components/card/card.module';\nexport * from './lib/components/card/card.component';\n\nexport * from './lib/convert-to-number/convert-to-number.module';\nexport * from './lib/convert-to-integer/convert-to-integer.module';\nexport * from './lib/components/sort-table/sort-table.component';\nexport * from './lib/components/sort-table/sort-table.module';\nexport * from './lib/components/visible-column/visible-column.component';\nexport * from './lib/components/visible-column/visible-column.module';\nexport * from './lib/components/data-view/data-view.component';\nexport * from './lib/components/data-view/data-view.module';\nexport * from './lib/components/date-picker/date-picker.component';\nexport * from './lib/components/date-picker/date-picker.module';\n// export * from './lib/convert-to-decimal/convert-to-decimal.module';\nexport * from './lib/phone-number/phone-number.module';\n\nexport * from './lib/validate-input/validate-input.module';\n\n// Also export the directives if needed directly\nexport * from './lib/convert-to-number/convert-to-number.directive';\nexport * from './lib/convert-to-integer/convert-to-integer.directive';\n// export * from './lib/convert-to-decimal/convert-to-decimal.directive';\nexport * from './lib/phone-number/phone-number.directive';\nexport * from './lib/validate-input/validate-input.directive';\n\n// Exporting MaxNumberModule and MaxNumberDirective\nexport * from './lib/number-range/number-range.module';\nexport * from './lib/number-range/number-range.directive';\n\nexport * from './lib/number-range/number-range.module';\nexport * from './lib/number-range/number-range.directive';\n\n// Exporting RequiredInputModule and RequiredInputDirective\nexport * from './lib/required-input/required-input.module';\nexport * from './lib/required-input/required-input.directive';\n\n// Exporting EmailValidatorModule and EmailValidatorDirective\nexport * from './lib/email-validator/email-validator.module';\nexport * from './lib/email-validator/email-validator.directive';\n\nexport * from './lib/components/data-table/data-table.module';\nexport * from './lib/components/data-table/data-table.component';\nexport * from './lib/components/data-table/column.directive';\nexport * from './lib/components/data-table/data-table.types';\nexport * from './lib/components/data-table/style.types';\n\nexport * from './lib/components/data-export/data-export.module';\nexport * from './lib/components/data-export/data-export.service';\nexport * from './lib/components/data-export/data-export.component';\nexport * from './lib/components/data-export/data-export.types';\n\nexport * from './lib/components/data-import/data-import.module';\n// export * from './lib/components/data-import/data-import.service';\nexport * from './lib/components/data-import/data-import.component';\n// export * from './lib/components/data-import/data-import.types';\n\nexport * from './lib/components/data-extend/data-extend.module';\n// export * from './lib/components/data-extend/data-extend.service';\nexport * from './lib/components/data-extend/data-extend.component';\nexport * from './lib/components/data-extend/data-extend.types';\n\nexport * from './lib/components/data-xport/data-xport.module';\nexport * from './lib/components/data-xport/data-xport.service';\nexport * from './lib/components/data-xport/data-xport.component';\n// export * from './lib/components/data-xport/data-xport.types';\n\nexport * from './lib/components/data-filter/data-filter.module';\nexport * from './lib/components/data-filter/data-filter.service';\nexport * from './lib/components/data-filter/data-filter.component';\nexport * from './lib/components/data-filter/data-filter.types';\n\nexport * from './lib/components/data-sort/data-sort.module';\nexport * from './lib/components/data-sort/data-sort.service';\nexport * from './lib/components/data-sort/data-sort.component';\nexport * from './lib/components/data-sort/data-sort.types';\n\nexport * from './lib/components/data-columns/data-columns.module';\nexport * from './lib/components/data-columns/data-columns.service';\nexport * from './lib/components/data-columns/data-columns.component';\n\n// Exporting ControlOptionModule and ControlOptionDirective\nexport * from './lib/control-options/control-options.module';\nexport * from './lib/control-options/control-options.directive';\n// Exporting Enum type for sort table\nexport * from './lib/models/table-filter';\nexport * from './lib/models/mail-model';\n\nexport * from './lib/validate/error-message.service';\nexport * from './lib/validate/validate.directive';\nexport * from './lib/validate/validate.module';\n\nexport * from './lib/Verbena-input/verbena-input.component';\nexport * from './lib/Verbena-input/verbena-input.module';\n\nexport * from './lib/verbena-button/verbena-button.component';\nexport * from './lib/verbena-button/verbena-button.module';\n\nexport * from './lib/verbena-badge/verbena-badge.component';\nexport * from './lib/verbena-badge/verbena-badge.module';\n\nexport * from './lib/verbena-textarea/verbena-textarea.component';\nexport * from './lib/verbena-textarea/verbena-textarea.module';\n\nexport * from './lib/verbena-switch/verbena-switch.component';\nexport * from './lib/verbena-switch/verbena-switch.module';\n\nexport * from './lib/components/verben-mail/verben-mail.module';\nexport * from './lib/components/verben-mail/verben-mail.component';\n\nexport * from './lib/components/verben-dialogue/verben-dialogue.module';\nexport * from './lib/components/verben-dialogue/verben-dialogue.component';\n\nexport * from './lib/components/verben-time-picker/verben-time-picker.module';\nexport * from './lib/components/verben-time-picker/verben-time-picker.component';\n\n//notification service\nexport * from './lib/services/notification.services';\n\nexport * from './lib/components/pop-up/pop-up.module';\nexport * from './lib/components/pop-up/pop-up.component';\n\nexport * from './lib/tokens';\n\n\nexport * from './lib/components/icons/icons.module'; // Export IconModule\nexport * from './lib/components/icons/icons.component'; // Export IconComponent\nexport * from './lib/services/icon.service'; // Export IconService\n\nexport * from './lib/components/verbena-icon/verbena-icon.component'; // Export IconComponent\nexport * from './lib/components/verbena-icon/verbena-icon.module'; // Export IconService\n\n\n\n\nexport * from './lib/components/verbena-tab/verbena-tab.module'; \nexport * from './lib/components/verbena-tab/verbena-tab.component'; \nexport * from './lib/components/verbena-tab/tab-item.component'; \n\n\nexport * from './lib/components/number-input/number-input.component'\nexport * from './lib/components/number-input/number-input.module'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SvgComponent","i2","i3","i5.TooltipComponent","i3.SvgComponent","i1.ErrorMessageService","i3.DropDownComponent","i4.VerbenaInputComponent","i5.ValidateDirective","i6.TooltipComponent","i7.SvgComponent","i3.VerbenaIconComponent","i1.NotificationService","i4.VerbenaButtonComponent","debounceTime","i3.VerbenaButtonComponent","i4.OutSideClickDirective","i4.DropDownComponent","i5.OutSideClickDirective","i1.DataExportService","i4.SvgComponent","i5.CardComponent","i6.DropDownComponent","i7.VerbenaInputComponent","i1.DataImportService","i3.CardComponent","i4.VerbenDialogueComponent","i5.DataTableComponent","i6.ColumnDirective","i7.DropDownComponent","i8","i9.SvgComponent","i4.CardComponent","i5.DropDownComponent","i6.VerbenaInputComponent","i7.VerbenaSwitchComponent","i8.ChipComponent","i1.DataXportService","i1.SvgComponent","i2.CardComponent","i3.ChipComponent","i1.IconService"],"mappings":"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"}
|