cps-ui-kit 0.40.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"cps-ui-kit.mjs","sources":["../../../projects/cps-ui-kit/src/lib/utils/internal/size-utils.ts","../../../projects/cps-ui-kit/src/lib/utils/colors-utils.ts","../../../projects/cps-ui-kit/src/lib/components/cps-icon/cps-icon.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-icon/cps-icon.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-progress-linear/cps-progress-linear.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-progress-linear/cps-progress-linear.component.html","../../../projects/cps-ui-kit/src/lib/directives/cps-tooltip.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-info-circle/cps-info-circle.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-info-circle/cps-info-circle.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-input/cps-input.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-input/cps-input.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.html","../../../projects/cps-ui-kit/src/lib/directives/internal/click-outside.directive.ts","../../../projects/cps-ui-kit/src/lib/pipes/internal/label-by-value.pipe.ts","../../../projects/cps-ui-kit/src/lib/pipes/internal/combine-labels.pipe.ts","../../../projects/cps-ui-kit/src/lib/pipes/internal/check-option-selected.pipe.ts","../../../projects/cps-ui-kit/src/lib/utils/internal/position-utils.ts","../../../projects/cps-ui-kit/src/lib/components/cps-select/cps-select.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-select/cps-select.component.html","../../../projects/cps-ui-kit/src/lib/base_components/cps-tree-dropdown-base.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-select/cps-tree-select.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-select/cps-tree-select.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-autocomplete/cps-autocomplete.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-autocomplete/cps-autocomplete.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-progress-circular/cps-progress-circular.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-progress-circular/cps-progress-circular.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-button/cps-button.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-button/cps-button.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-checkbox/cps-checkbox.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-checkbox/cps-checkbox.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-radio/cps-radio.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-radio/cps-radio.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/table-unsort.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/cps-table.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/cps-table.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/cps-table-column-sortable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tag/cps-tag.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tag/cps-tag.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-menu/cps-menu.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-menu/cps-menu.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-paginator/cps-paginator.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-paginator/cps-paginator.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-loader/cps-loader.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-loader/cps-loader.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-expansion-panel/cps-expansion-panel.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-expansion-panel/cps-expansion-panel.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-datepicker/cps-datepicker.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-datepicker/cps-datepicker.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-textarea/cps-textarea.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-textarea/cps-textarea.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-button-toggle/cps-button-toggle.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-button-toggle/cps-button-toggle.component.html","../../../projects/cps-ui-kit/src/public-api.ts","../../../projects/cps-ui-kit/src/cps-ui-kit.ts"],"sourcesContent":["export const convertSize = (size: number | string): string => {\n const res = String(size).trim();\n if (!res) {\n return '';\n }\n if (/^\\d+(\\.\\d+)?$/i.test(res)) {\n return res + 'px';\n }\n if (/^\\d+(\\.\\d+)?(px|rem|em|%)$/i.test(res)) {\n return res;\n }\n\n throw new Error(`Invalid size value: ${size}`);\n};\n\nexport const parseSize = (size: string): { value: number; unit: string } => {\n const match = size.match(/^(\\d+(?:\\.\\d+)?)(px|rem|em|%)$/);\n if (!match) throw new Error(`Invalid size value: ${size}`);\n const value = parseFloat(match[1]);\n const unit = match[2];\n return { value, unit };\n};\n","const isSameDomain = (styleSheet: any): boolean => {\n if (!styleSheet.href) {\n return true;\n }\n\n return styleSheet.href.indexOf(window.location.origin) === 0;\n};\n\nconst isStyleRule = (rule: any): boolean => rule.type === 1;\n\nconst isValidCSSColor = (val: string): boolean => {\n if (val === 'currentColor') return true;\n const element = document.createElement('div');\n element.style.backgroundColor = val;\n return element && element.style.backgroundColor !== '';\n};\n\nconst isDark = (color: string): boolean => {\n let r = 0;\n let g = 0;\n let b = 0;\n if (color.match(/^rgb/)) {\n const colorMatched = color.match(\n /^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/\n ) as any;\n r = colorMatched[1];\n g = colorMatched[2];\n b = colorMatched[3];\n } else {\n const colorNum = +(\n '0x' + color.slice(1).replace(color.length < 5 && (/./g as any), '$&$&')\n );\n\n r = colorNum >> 16;\n g = (colorNum >> 8) & 255;\n b = colorNum & 255;\n }\n\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n\n // Using the HSP value, determine whether the color is light or dark\n return hsp <= 127.5;\n};\n\nexport const getCpsColors = (): [string, string][] =>\n [...(document.styleSheets as any)].filter(isSameDomain).reduce(\n (finalArr, sheet) =>\n finalArr.concat(\n [...sheet.cssRules].filter(isStyleRule).reduce((propValArr, rule) => {\n const props = [...rule.style]\n .map((propName) => [\n propName.trim(),\n rule.style.getPropertyValue(propName).trim()\n ])\n .filter(([propName]) => propName.indexOf('--cps-color') === 0);\n\n return [...propValArr, ...props];\n }, [])\n ),\n []\n );\n\nexport const getCSSColor = (val: string): string => {\n if (!val) return '';\n return isValidCSSColor(val) ? val : `var(--cps-color-${val})`;\n};\n\nexport const getTextColor = (backgroundColor: string): string => {\n if (isDark(backgroundColor)) {\n return '#FFFFFF';\n } else {\n return '#000000';\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges } from '@angular/core';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { getCSSColor } from '../../utils/colors-utils';\n\nexport const iconNames = [\n 'access',\n 'access-denied',\n 'access-menu',\n 'access-unlock',\n 'add',\n 'add-domain',\n 'avatar',\n 'avatar-top-menu',\n 'bell',\n 'book',\n 'bookmark',\n 'browse',\n 'burger-arrow',\n 'caret-down',\n 'change',\n 'checked',\n 'chevron-down',\n 'chevron-down-2',\n 'circle',\n 'cleansing',\n 'close-x',\n 'close-x-2',\n 'community',\n 'construction',\n 'controls',\n 'csv',\n 'cub',\n 'database',\n 'datepicker',\n 'delete',\n 'dislike',\n 'dots',\n 'download',\n 'dq',\n 'dropdown-menu',\n 'edit',\n 'expand',\n 'export',\n 'eye',\n 'filter',\n 'filter_2',\n 'follow',\n 'glossary',\n 'graph',\n 'grid',\n 'grid-view',\n 'health',\n 'heart',\n 'help-circle',\n 'home',\n 'info-circle',\n 'insight',\n 'issues',\n 'jpeg',\n 'kris',\n 'last-seen-product',\n 'like',\n 'line-vertical',\n 'lock',\n 'logout',\n 'menu-expand',\n 'menu-shrink',\n 'minus',\n 'move-grabber',\n 'multiple_users',\n 'open',\n 'path',\n 'pdf',\n 'plus',\n 'projects',\n 'question',\n 'questions',\n 'rectangle-rounded',\n 'refresh-browse',\n 'remove',\n 'right',\n 'schema_filter',\n 'search',\n 'settings',\n 'smart',\n 'sort-icon-asc',\n 'sort-icon-desc',\n 'star',\n 'stepper-completed',\n 'success',\n 'suggestion',\n 'survivorship',\n 'table-row-error',\n 'table-row-success',\n 'table-row-warning',\n 'toast-error',\n 'toast-info',\n 'toast-success',\n 'toast-warning',\n 'tools',\n 'user',\n 'users',\n 'vector',\n 'vector-down',\n 'vector-right',\n 'vector-up',\n 'wallet',\n 'warning',\n 'widget-button-icon',\n 'xls'\n];\n\nexport type IconType = (typeof iconNames)[number];\n\nexport type iconSizeType =\n | number\n | string\n | 'fill'\n | 'xsmall'\n | 'small'\n | 'normal'\n | 'large';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-icon',\n templateUrl: './cps-icon.component.html',\n styleUrls: ['./cps-icon.component.scss']\n})\nexport class CpsIconComponent implements OnChanges {\n @Input() icon: IconType = '';\n @Input() size: iconSizeType = 'small';\n\n @Input() color = 'currentColor';\n\n iconColor = 'currentColor';\n url = '../../../../assets/';\n cvtSize = '';\n\n classesList: string[] = ['cps-icon'];\n\n ngOnChanges(): void {\n this.iconColor = getCSSColor(this.color);\n this.setClasses();\n }\n\n setClasses(): void {\n switch (this.size) {\n case 'fill': {\n this.classesList.push('cps-icon--fill');\n break;\n }\n case 'xsmall': {\n this.classesList.push('cps-icon--xsmall');\n break;\n }\n case 'small': {\n this.classesList.push('cps-icon--small');\n break;\n }\n case 'normal': {\n this.classesList.push('cps-icon--normal');\n break;\n }\n case 'large': {\n this.classesList.push('cps-icon--large');\n break;\n }\n default:\n this.cvtSize = convertSize(this.size);\n break;\n }\n }\n}\n","<i\n *ngIf=\"icon\"\n [ngClass]=\"classesList\"\n [style.color]=\"iconColor\"\n [ngStyle]=\"{ width: cvtSize || 'none', height: cvtSize || 'none' }\">\n <svg>\n <use attr.xlink:href=\"{{ url }}icons.svg#{{ icon }}\"></use>\n </svg>\n</i>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-progress-linear',\n templateUrl: './cps-progress-linear.component.html',\n styleUrls: ['./cps-progress-linear.component.scss']\n})\nexport class CpsProgressLinearComponent implements OnInit {\n @Input() width: number | string = '100%';\n @Input() height: number | string = '0.5rem';\n @Input() color = 'calm';\n @Input() bgColor = 'white';\n @Input() opacity: number | string = 1;\n @Input() radius: number | string = 0;\n\n ngOnInit(): void {\n this.width = convertSize(this.width);\n this.height = convertSize(this.height);\n this.radius = convertSize(this.radius);\n\n this.color = getCSSColor(this.color);\n this.bgColor = getCSSColor(this.bgColor);\n }\n}\n","<div\n class=\"cps-progress-linear\"\n [ngStyle]=\"{\n 'max-width': width,\n height: height,\n 'border-radius': radius,\n background: bgColor\n }\">\n <div\n class=\"cps-progress-linear-line inc\"\n [style.background]=\"color\"\n [style.opacity]=\"opacity\"></div>\n <div\n class=\"cps-progress-linear-line dec\"\n [style.background]=\"color\"\n [style.opacity]=\"opacity\"></div>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy\n} from '@angular/core';\nimport { convertSize } from '../utils/internal/size-utils';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipOpenOn = 'hover' | 'click' | 'focus';\n\n@Directive({\n selector: '[cpsTooltip]',\n standalone: true\n})\nexport class CpsTooltipDirective implements OnDestroy {\n @Input('cpsTooltip') tooltip!: string;\n\n @Input() tooltipOpenDelay: string | number = 300;\n @Input() tooltipCloseDelay: string | number = 300;\n @Input() tooltipOpenOn: TooltipOpenOn = 'hover';\n @Input() tooltipPosition: TooltipPosition = 'top';\n @Input() tooltipPersistent = false;\n @Input() tooltipDisabled = false;\n @Input() tooltipMaxWidth: number | string = '100%';\n @Input() tooltipContentClass = 'cps-tooltip-content';\n\n private _popup?: HTMLDivElement;\n private _showTimeout?: any;\n private _hideTimeout?: any;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private _elementRef: ElementRef<HTMLElement>) {}\n\n ngOnDestroy(): void {\n this._destroyTooltip();\n }\n\n private _createTooltip = () => {\n if (this._popup) return;\n\n if (this.tooltipDisabled) return;\n\n this._popup = document.createElement('div');\n this._constructElement(this._popup);\n\n if (this.tooltipPersistent)\n this._popup.addEventListener('click', this._destroyTooltip);\n\n window.addEventListener('scroll', this._destroyTooltip, true);\n };\n\n private _destroyTooltip = (event: any = undefined) => {\n const removeFromDOM = () => {\n this._popup?.remove();\n this._popup = undefined;\n };\n\n window.removeEventListener('scroll', this._destroyTooltip, true);\n if (!this._popup) return;\n\n this._popup.removeEventListener('click', this._destroyTooltip);\n\n const noAnimation = ['scroll', 'resize'].includes(event?.type);\n\n if (noAnimation) {\n removeFromDOM();\n } else {\n const popup = this._popup as HTMLDivElement;\n requestAnimationFrame(function () {\n popup.style.opacity = '0';\n });\n\n setTimeout(() => {\n removeFromDOM();\n }, 200);\n }\n };\n\n private _constructElement(popup: HTMLDivElement) {\n const popupContent = document.createElement('div');\n popupContent.innerHTML = this.tooltip || 'Add your text to this tooltip';\n popupContent.classList.add(this.tooltipContentClass);\n popup.appendChild(popupContent);\n\n popup.classList.add('cps-tooltip');\n popup.style.maxWidth = convertSize(this.tooltipMaxWidth);\n\n document.body.appendChild(popup);\n requestAnimationFrame(function () {\n popup.style.opacity = '1';\n });\n\n const coords = this._getCoords();\n if (!coords) {\n this._destroyTooltip();\n throw new Error('Not enough space on the screen for the tooltip!');\n }\n\n popup.style.left = coords.left.toString() + 'px';\n popup.style.top = coords.top.toString() + 'px';\n }\n\n private _getCoords(): { left: number; top: number } | undefined {\n function isInsideScreen(coords: { left: number; top: number }): boolean {\n return (\n coords.top >= 0 &&\n coords.left >= 0 &&\n coords.left + popupRect.width <= window.innerWidth &&\n coords.top + popupRect.height <= window.innerHeight\n );\n }\n\n let positions = ['top', 'bottom', 'left', 'right'] as TooltipPosition[];\n positions = positions.filter((item) => item !== this.tooltipPosition);\n positions.unshift(this.tooltipPosition);\n\n const targetEl = this._elementRef.nativeElement;\n const targetElRect = targetEl.getBoundingClientRect();\n const popupRect = (this._popup as HTMLDivElement).getBoundingClientRect();\n\n for (const pos of positions) {\n const coords = this._getCoordsForPosition(\n pos as TooltipPosition,\n targetEl,\n targetElRect,\n popupRect\n );\n\n if (isInsideScreen(coords)) {\n return coords;\n }\n }\n\n return undefined;\n }\n\n private _getCoordsForPosition(\n position: TooltipPosition,\n targetEl: HTMLElement,\n targetElRect: DOMRect,\n popupRect: DOMRect\n ): {\n left: number;\n top: number;\n } {\n switch (position) {\n case 'bottom':\n return {\n left:\n targetElRect.left +\n window.scrollX +\n (targetEl.offsetWidth - popupRect.width) / 2,\n top: targetElRect.bottom + window.scrollY + 8\n };\n case 'left':\n return {\n left: targetElRect.left - window.scrollX - popupRect.width - 8,\n top:\n targetElRect.top +\n window.scrollY +\n (targetEl.offsetHeight - popupRect.height) / 2\n };\n case 'right':\n return {\n left: targetElRect.right + window.scrollX + 8,\n top:\n targetElRect.top +\n window.scrollY +\n (targetEl.offsetHeight - popupRect.height) / 2\n };\n default:\n return {\n left:\n targetElRect.left +\n window.scrollX +\n (targetEl.offsetWidth - popupRect.width) / 2,\n top: targetElRect.top + window.scrollY - popupRect.height - 8\n };\n }\n }\n\n @HostListener('mouseenter') onMouseEnter() {\n if (this.tooltipOpenOn === 'hover') {\n clearTimeout(this._hideTimeout);\n\n this._showTimeout = setTimeout(\n this._createTooltip,\n this.tooltipOpenDelay as number\n );\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n clearTimeout(this._showTimeout);\n\n if (!this.tooltipPersistent) {\n this._hideTimeout = setTimeout(\n this._destroyTooltip,\n this.tooltipCloseDelay as number\n );\n }\n }\n\n @HostListener('focus') onFocus() {\n if (this.tooltipOpenOn === 'focus') {\n clearTimeout(this._hideTimeout);\n\n this._showTimeout = setTimeout(\n this._createTooltip,\n this.tooltipOpenDelay as number\n );\n }\n }\n\n @HostListener('blur') onBlur() {\n clearTimeout(this._showTimeout);\n if (!this.tooltipPersistent && this.tooltipOpenOn === 'focus') {\n this._hideTimeout = setTimeout(\n this._destroyTooltip,\n this.tooltipCloseDelay as number\n );\n }\n }\n\n @HostListener('click') onClick() {\n if (this.tooltipOpenOn === 'click') {\n clearTimeout(this._hideTimeout);\n\n this._showTimeout = setTimeout(this._createTooltip, 0);\n }\n }\n\n @HostListener('document:click', ['$event.target'])\n onDocumentClick(target: any) {\n if (this.tooltipPersistent && this._popup) {\n if (!target?.isConnected) {\n return;\n }\n const clickedInside = this._elementRef?.nativeElement?.contains(target);\n if (!clickedInside) {\n this._destroyTooltip();\n }\n }\n }\n\n @HostListener('window:resize', ['$event']) onPageResize(event: Event) {\n if (this._popup) this._destroyTooltip(event);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CpsIconComponent, iconSizeType } from '../cps-icon/cps-icon.component';\nimport {\n CpsTooltipDirective,\n TooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\n@Component({\n selector: 'cps-info-circle',\n standalone: true,\n imports: [CpsIconComponent, CpsTooltipDirective],\n templateUrl: './cps-info-circle.component.html',\n styleUrls: ['./cps-info-circle.component.scss']\n})\nexport class CpsInfoCircleComponent {\n @Input() size: iconSizeType = 'small';\n @Input() tooltipText = '';\n @Input() tooltipPosition: TooltipPosition = 'top';\n @Input() tooltipContentClass = 'cps-tooltip-content';\n @Input() tooltipMaxWidth: number | string = '100%';\n @Input() tooltipPersistent = false;\n}\n","<cps-icon\n icon=\"info-circle\"\n [size]=\"size\"\n color=\"info\"\n [cpsTooltip]=\"tooltipText\"\n tooltipOpenDelay=\"0\"\n tooltipCloseDelay=\"100\"\n [tooltipPosition]=\"tooltipPosition\"\n [tooltipMaxWidth]=\"tooltipMaxWidth\"\n [tooltipPersistent]=\"tooltipPersistent\"\n [tooltipContentClass]=\"tooltipContentClass\">\n</cps-icon>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport {\n CpsIconComponent,\n IconType,\n iconSizeType\n} from '../cps-icon/cps-icon.component';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CpsIconComponent,\n CpsInfoCircleComponent,\n CpsProgressLinearComponent\n ],\n selector: 'cps-input',\n templateUrl: './cps-input.component.html',\n styleUrls: ['./cps-input.component.scss']\n})\nexport class CpsInputComponent\n implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy\n{\n @Input() label = '';\n @Input() hint = '';\n @Input() placeholder = 'Please enter';\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() type: 'text' | 'number' | 'password' = 'text';\n @Input() loading = false;\n @Input() clearable = false;\n @Input() prefixIcon: IconType = '';\n @Input() prefixIconClickable = false;\n @Input() prefixIconSize: iconSizeType = '18px';\n @Input() prefixText = '';\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() error = '';\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set value(value: string) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): string {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<string>();\n @Output() focused = new EventEmitter();\n @Output() prefixIconClicked = new EventEmitter();\n @Output() blurred = new EventEmitter();\n\n @ViewChild('prefixTextSpan') prefixTextSpan: ElementRef | undefined;\n\n currentType = '';\n prefixWidth = '';\n cvtWidth = '';\n\n private _statusChangesSubscription: Subscription = new Subscription();\n private _value = '';\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private _elementRef: ElementRef<HTMLElement>,\n private cdRef: ChangeDetectorRef\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.currentType = this.type;\n this.cvtWidth = convertSize(this.width);\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngAfterViewInit() {\n let w = 0;\n if (this.prefixText) {\n w = this.prefixTextSpan?.nativeElement?.offsetWidth + 22;\n }\n if (this.prefixIcon) {\n w += 38 - (this.prefixText ? 14 : 0);\n }\n this.prefixWidth = w > 0 ? `${w}px` : '';\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n private _checkErrors() {\n if (!this._control) return;\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n if ('minlength' in errors) {\n // eslint-disable-next-line dot-notation\n this.error = `Field must contain at least ${errors['minlength'].requiredLength} characters`;\n return;\n }\n\n if ('maxlength' in errors) {\n // eslint-disable-next-line dot-notation\n this.error = `Field must contain ${errors['maxlength'].requiredLength} characters maximum`;\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this.error = message || 'Unknown error';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: string) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n const value = event?.target?.value || '';\n this._updateValue(value);\n }\n\n private _updateValue(value: string) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n clear() {\n if (this.value !== '') this._updateValue('');\n }\n\n togglePassword() {\n this.currentType = this.currentType === 'password' ? 'text' : 'password';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n this.blurred.emit();\n }\n\n onClickPrefixIcon() {\n if (!this.prefixIconClickable) return;\n this.prefixIconClicked.emit();\n }\n\n onFocus() {\n this.focused.emit();\n }\n\n focus() {\n this._elementRef?.nativeElement?.querySelector('input')?.focus();\n }\n}\n","<div class=\"cps-input-container\" [ngStyle]=\"{ width: cvtWidth }\">\n <div\n class=\"cps-input-label\"\n [ngClass]=\"{ 'cps-input-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-input-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n\n <div\n class=\"cps-input-wrap\"\n [ngClass]=\"{\n password: type === 'password',\n 'cps-input-wrap-error': error,\n clearable: clearable,\n 'persistent-clear': persistentClear\n }\">\n <input\n spellcheck=\"false\"\n [type]=\"currentType\"\n [value]=\"value\"\n (input)=\"updateValueEvent($event)\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\" />\n\n <div class=\"cps-input-prefix\">\n <span *ngIf=\"prefixIcon\" class=\"cps-input-prefix-icon\">\n <cps-icon\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n [style.cursor]=\"\n prefixIconClickable && !disabled ? 'pointer' : 'default'\n \"\n (click)=\"onClickPrefixIcon()\">\n </cps-icon>\n </span>\n\n <span *ngIf=\"prefixText\" class=\"cps-input-prefix-text\" #prefixTextSpan>\n {{ prefixText }}\n </span>\n </div>\n\n <div class=\"cps-input-action-btns\" *ngIf=\"!disabled\">\n <span\n *ngIf=\"clearable\"\n [style.visibility]=\"\n persistentClear || (!persistentClear && value) ? 'visible' : 'hidden'\n \"\n class=\"clear-btn\">\n <cps-icon icon=\"delete\" size=\"small\" (click)=\"clear()\"></cps-icon>\n </span>\n\n <span\n *ngIf=\"type === 'password'\"\n class=\"password-show-btn\"\n [ngClass]=\"{ 'password-show-btn-active': currentType === 'text' }\">\n <cps-icon icon=\"eye\" size=\"18px\" (click)=\"togglePassword()\"></cps-icon>\n </span>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-input-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-input-hint-text\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-input-error-text\">\n {{ error }}\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output\n} from '@angular/core';\nimport { CpsIconComponent, IconType } from '../cps-icon/cps-icon.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsIconComponent],\n selector: 'cps-chip',\n templateUrl: './cps-chip.component.html',\n styleUrls: ['./cps-chip.component.scss']\n})\nexport class CpsChipComponent implements OnChanges {\n @Input() label = '';\n @Input() icon: IconType = '';\n @Input() iconPosition: 'before' | 'after' = 'before';\n @Input() closable = false;\n @Input() disabled = false;\n\n @Output() closed = new EventEmitter();\n\n classesList = ['cps-chip'];\n\n ngOnChanges() {\n this.setClasses();\n }\n\n setClasses() {\n if (this.disabled) this.classesList.push('cps-chip-disabled');\n\n if (this.icon && this.label) {\n switch (this.iconPosition) {\n case 'before': {\n this.classesList.push('cps-chip--icon-before');\n break;\n }\n case 'after': {\n this.classesList.push('cps-chip--icon-after');\n break;\n }\n }\n }\n }\n\n onCloseClick(event: any) {\n event.stopPropagation();\n this.closed.emit();\n }\n}\n","<div [ngClass]=\"classesList\">\n <cps-icon\n *ngIf=\"icon\"\n class=\"cps-chip-icon\"\n [icon]=\"icon\"\n color=\"text-darkest\"></cps-icon>\n <span class=\"cps-chip-label\">{{ label }}</span>\n <cps-icon\n *ngIf=\"closable\"\n class=\"cps-chip-close-icon\"\n icon=\"close-x\"\n size=\"xsmall\"\n color=\"text-darkest\"\n (click)=\"onCloseClick($event)\"></cps-icon>\n</div>\n","import {\n Directive,\n Output,\n EventEmitter,\n ElementRef,\n HostListener,\n Input\n} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n @Input() skipTargets: string[] = [];\n @Output() clickOutside = new EventEmitter<void>();\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private elementRef: ElementRef) {}\n\n @HostListener('document:click', ['$event.target'])\n public onClick(target: any) {\n if (!this.elementRef?.nativeElement?.classList?.contains('focused')) return;\n\n for (const clss of this.skipTargets) {\n if (target?.classList?.contains(clss)) {\n this.clickOutside.emit();\n return;\n }\n }\n\n // if an element was detached from the dom, we are not clicking outside\n if (!target?.isConnected) {\n return;\n }\n const clickedInside = this.elementRef?.nativeElement?.contains(target);\n if (!clickedInside) {\n this.clickOutside.emit();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\n@Pipe({ standalone: true, name: 'labelByValue' })\nexport class LabelByValuePipe implements PipeTransform {\n transform(\n value: any,\n options: any[],\n valueKey: string,\n labelKey: string\n ): string {\n const option = options.find((opt) => isEqual(opt[valueKey], value));\n return option ? option[labelKey] : 'unknown';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\n@Pipe({ standalone: true, name: 'combineLabels' })\nexport class CombineLabelsPipe implements PipeTransform {\n transform(\n values: any[],\n options: any[],\n valueKey: string,\n labelKey: string,\n returnObject: boolean\n ): string {\n return values\n .map((v) => {\n if (returnObject) {\n return v[labelKey];\n } else {\n const option = options.find((opt) => isEqual(opt[valueKey], v));\n return option ? option[labelKey] : 'unknown';\n }\n })\n .join(', ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { find, isEqual } from 'lodash-es';\n\n@Pipe({ standalone: true, name: 'checkOptionSelected' })\nexport class CheckOptionSelectedPipe implements PipeTransform {\n transform(\n option: any,\n value: any,\n multiple: boolean,\n returnObject: boolean,\n optionValue: string\n ): boolean {\n function includes(array: any[], val: any): boolean {\n return array ? !!find(array, (item) => isEqual(item, val)) : false;\n }\n\n return multiple\n ? returnObject\n ? includes(value, option)\n : includes(value, option[optionValue])\n : returnObject\n ? isEqual(option, value)\n : isEqual(option[optionValue], value);\n }\n}\n","export const hasSpaceBelow = (box: any, optionsClass: string): boolean => {\n const containerRect = box?.nativeElement?.getBoundingClientRect();\n if (!containerRect) return true;\n\n const optionsRect = box?.nativeElement\n ?.querySelector(optionsClass)\n ?.getBoundingClientRect();\n\n if (!optionsRect) return true;\n\n return window.innerHeight - containerRect.bottom >= optionsRect.height;\n};\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport {\n CpsIconComponent,\n iconSizeType,\n IconType\n} from '../cps-icon/cps-icon.component';\nimport { CpsChipComponent } from '../cps-chip/cps-chip.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { LabelByValuePipe } from '../../pipes/internal/label-by-value.pipe';\nimport { CombineLabelsPipe } from '../../pipes/internal/combine-labels.pipe';\nimport { CheckOptionSelectedPipe } from '../../pipes/internal/check-option-selected.pipe';\nimport { find, isEqual } from 'lodash-es';\nimport {\n VirtualScroller,\n VirtualScrollerModule\n} from 'primeng/virtualscroller';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { hasSpaceBelow } from '../../utils/internal/position-utils';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ClickOutsideDirective,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n LabelByValuePipe,\n CombineLabelsPipe,\n CheckOptionSelectedPipe,\n VirtualScrollerModule\n ],\n providers: [LabelByValuePipe, CombineLabelsPipe, CheckOptionSelectedPipe],\n selector: 'cps-select',\n templateUrl: './cps-select.component.html',\n styleUrls: ['./cps-select.component.scss']\n})\nexport class CpsSelectComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() label = '';\n @Input() placeholder = 'Please select';\n @Input() hint = '';\n @Input() returnObject = true; // if false, value will be option[optionValue]\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() selectAll = true; // doesn't work with virtual scroll\n @Input() chips = true;\n @Input() closableChips = true;\n @Input() clearable = false;\n @Input() openOnClear = true;\n @Input() options = [] as any[];\n @Input() optionLabel = 'label';\n @Input() optionValue = 'value'; // needed only if returnObject === false\n @Input() optionInfo = 'info';\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() prefixIcon: IconType = '';\n @Input() prefixIconSize: iconSizeType = '18px';\n @Input() loading = false;\n @Input() virtualScroll = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input('value') _value: any = undefined;\n\n set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<any>();\n\n @ViewChild('selectContainer')\n selectContainer!: ElementRef;\n\n @ViewChild('virtualList')\n virtualList!: VirtualScroller;\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n error = '';\n cvtWidth = '';\n\n isOpened = false;\n\n optionHighlightedIndex = -1;\n\n virtualListHeight = 240;\n virtualScrollItemSize = 42;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.cvtWidth = convertSize(this.width);\n if (this.multiple && !this._value) {\n this._value = [];\n }\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n\n this._recalcVirtualListHeight();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n private _toggleOptions(dd: HTMLElement, show?: boolean): void {\n if (this.disabled || !dd || this.isOpened === show) return;\n\n if (typeof show === 'boolean') {\n if (show) dd.classList.add('active');\n else dd.classList.remove('active');\n } else dd.classList.toggle('active');\n\n this.isOpened = dd.classList.contains('active');\n\n dd.classList.remove('top-open');\n if (\n this.isOpened &&\n !hasSpaceBelow(this.selectContainer, '.cps-select-options')\n ) {\n dd.classList.add('top-open');\n }\n\n if (this.isOpened && this.options.length > 0) {\n const selected =\n this.selectContainer.nativeElement.querySelector('.selected');\n if (selected) {\n selected.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'center'\n });\n } else if (this.virtualScroll && this.value) {\n let v: any;\n if (this.multiple) {\n if (this.value.length > 0) {\n v = this.value[0];\n }\n } else v = this.value;\n const idx = this.options.findIndex((o) => isEqual(o, v));\n if (idx >= 0) this.virtualList.scrollToIndex(idx);\n }\n }\n }\n\n private _recalcVirtualListHeight() {\n if (!this.virtualScroll) return;\n const currentLen = this.options?.length || 0;\n this.virtualListHeight = Math.min(\n this.virtualScrollItemSize * currentLen,\n 240\n );\n }\n\n select(option: any, byValue: boolean): void {\n function includes(array: any[], val: any): boolean {\n return array ? !!find(array, (item) => isEqual(item, val)) : false;\n }\n const val = byValue\n ? option\n : this.returnObject\n ? option\n : option[this.optionValue];\n if (this.multiple) {\n let res = [] as any;\n if (includes(this.value, val)) {\n res = this.value.filter((v: any) => !isEqual(v, val));\n } else {\n this.options.forEach((o) => {\n const ov = this.returnObject ? o : o[this.optionValue];\n if (this.value.some((v: any) => isEqual(v, ov)) || isEqual(val, ov)) {\n res.push(ov);\n }\n });\n }\n this.updateValue(res);\n } else {\n this.updateValue(val);\n }\n }\n\n onOptionClick(option: any, dd: HTMLElement) {\n this._clickOption(option, dd);\n }\n\n private _clickOption(option: any, dd: HTMLElement) {\n this.select(option, false);\n if (!this.multiple) {\n this._toggleOptions(dd, false);\n }\n }\n\n private _getHTMLOptions() {\n return (\n this.selectContainer?.nativeElement?.querySelectorAll(\n '.cps-select-options-option'\n ) || []\n );\n }\n\n private _dehighlightOption(el?: HTMLElement) {\n if (el) el.classList.remove('highlighten');\n else {\n if (this.optionHighlightedIndex < 0) return;\n const optionItems = this._getHTMLOptions();\n optionItems[this.optionHighlightedIndex].classList.remove('highlighten');\n this.optionHighlightedIndex = -1;\n }\n }\n\n private _highlightOption(el: HTMLElement) {\n el.classList.add('highlighten');\n const parent = el.parentElement;\n if (!parent) return;\n const parentRect = parent.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n if (elRect.top < parentRect.top || elRect.bottom > parentRect.bottom) {\n el.scrollIntoView({\n block: 'nearest',\n inline: 'center'\n });\n }\n }\n\n private _navigateOptionsByArrows(up: boolean) {\n if (!this.isOpened) return;\n\n const optionItems = this._getHTMLOptions();\n const len = optionItems.length;\n if (len < 1) return;\n\n if (len === 1) {\n this._highlightOption(optionItems[0]);\n return;\n }\n\n if (up) {\n this._dehighlightOption(optionItems[this.optionHighlightedIndex]);\n this.optionHighlightedIndex =\n this.optionHighlightedIndex < 1\n ? len - 1\n : this.optionHighlightedIndex - 1;\n this._highlightOption(optionItems[this.optionHighlightedIndex]);\n } else {\n this._dehighlightOption(optionItems[this.optionHighlightedIndex]);\n this.optionHighlightedIndex = [-1, len - 1].includes(\n this.optionHighlightedIndex\n )\n ? 0\n : this.optionHighlightedIndex + 1;\n this._highlightOption(optionItems[this.optionHighlightedIndex]);\n }\n }\n\n onClickOutside(dd: HTMLElement) {\n this._toggleOptions(dd, false);\n this._dehighlightOption();\n }\n\n onBoxClick(dd: HTMLElement) {\n this._toggleOptions(dd);\n this._dehighlightOption();\n }\n\n onKeyDown(event: any, dd: HTMLElement) {\n event.preventDefault();\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._toggleOptions(dd, false);\n this._dehighlightOption();\n }\n // enter\n else if (code === 13) {\n let idx = this.optionHighlightedIndex;\n if (idx < 0) return;\n if (this.multiple && this.selectAll && !this.virtualScroll) {\n if (idx === 0) {\n this.toggleAll();\n return;\n } else idx--;\n }\n\n this._clickOption(this.options[idx], dd);\n }\n // vertical arrows\n else if ([38, 40].includes(code)) {\n // Arrows navigation doesn't work with virtual scroll\n if (!this.virtualScroll) this._navigateOptionsByArrows(code === 38);\n }\n }\n\n toggleAll() {\n let res = [];\n if (this.value.length < this.options.length) {\n if (this.returnObject) {\n res = this.options;\n } else {\n this.options.forEach((o) => {\n res.push(o[this.optionValue]);\n });\n }\n }\n this.updateValue(res);\n }\n\n private _checkErrors(): void {\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this.error = message || 'Unknown error';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n private updateValue(value: any): void {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n clear(dd: HTMLElement, event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && this.value) ||\n (this.multiple && this.value?.length > 0)\n ) {\n if (this.openOnClear) {\n this._toggleOptions(dd, true);\n }\n const val = this.multiple ? [] : this.returnObject ? undefined : '';\n this.updateValue(val);\n }\n this._dehighlightOption();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n }\n\n focus() {\n this.selectContainer?.nativeElement?.focus();\n this._toggleOptions(this.selectContainer?.nativeElement, true);\n }\n}\n","<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-select\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #selectContainer\n (keydown)=\"onKeyDown($event, selectContainer)\"\n (blur)=\"onBlur()\">\n <div class=\"cps-select-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-select-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n class=\"cps-select-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(selectContainer)\">\n <div class=\"cps-select-box\" (click)=\"onBoxClick(selectContainer)\">\n <div class=\"cps-select-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-select-box-placeholder\"\n *ngIf=\"(!value && !multiple) || (value?.length < 1 && multiple)\">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-select-box-items\"\n *ngIf=\"(value && !multiple) || (value?.length > 0 && multiple)\">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n {{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span\n >\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <span class=\"text-group-item\">\n {{\n value\n | combineLabels\n : options\n : optionValue\n : optionLabel\n : returnObject\n }}\n </span>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n </div>\n </div>\n </div>\n <span class=\"cps-select-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && value)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-select-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(selectContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-select-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n\n <div class=\"cps-select-options\">\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-select-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"multiple && selectAll\"\n (click)=\"toggleAll()\">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\">\n </span>\n <span class=\"cps-select-options-option-label\">Select all</span>\n </span>\n </div>\n <ng-container *ngFor=\"let item of options\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"options\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: 3 }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"select-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-select-hint\">{{ hint }}</div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-select-error\">{{ error }}</div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-select-options-option\"\n (click)=\"onOptionClick(item, selectContainer)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\"> </span>\n <span\n class=\"cps-select-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-select-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { TreeNode } from 'primeng/api';\nimport {\n IconType,\n iconSizeType\n} from '../components/cps-icon/cps-icon.component';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../utils/internal/size-utils';\nimport { Tree } from 'primeng/tree';\nimport { isEqual } from 'lodash-es';\nimport { TooltipPosition } from '../directives/cps-tooltip.directive';\nimport { hasSpaceBelow } from '../utils/internal/position-utils';\n\n@Component({\n template: ''\n})\nexport class CpsTreeDropdownBaseComponent\n implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy\n{\n @Input() label = '';\n @Input() placeholder = 'Please enter';\n @Input() hint = '';\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() chips = true;\n @Input() closableChips = true;\n @Input() clearable = false;\n @Input() openOnClear = true;\n @Input() optionLabel = 'label';\n @Input() optionInfo = 'info';\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() prefixIcon: IconType = '';\n @Input() prefixIconSize: iconSizeType = '18px';\n @Input() loading = false;\n @Input() virtualScroll = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set options(options: any[]) {\n if (options?.some((o) => o.inner)) {\n this._options = options;\n return;\n }\n\n this._options = this._toInnerOptions(options);\n }\n\n get options(): TreeNode[] {\n return this._options;\n }\n\n @Input('value') _value: any = undefined;\n\n set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<any>();\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n treeContainer!: ElementRef;\n treeList!: Tree;\n\n _options: TreeNode[] = [];\n optionsMap = new Map<string, TreeNode>();\n originalOptionsMap = new Map<string, any>();\n\n treeSelection: any;\n\n virtualListHeight = 240;\n virtualScrollItemSize = 40;\n\n error = '';\n cvtWidth = '';\n isOpened = false;\n treeContainerElement!: HTMLElement;\n optionFocused = false;\n isAutocomplete = false;\n\n constructor(\n @Self() @Optional() public control: NgControl,\n public cdRef: ChangeDetectorRef\n ) {\n if (this.control) {\n this.control.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.cvtWidth = convertSize(this.width);\n if (!this._value) {\n if (this.multiple) {\n this._value = [];\n this.treeSelection = [];\n }\n } else {\n this.treeSelection = this._valueToTreeSelection(this.value);\n }\n\n this._statusChangesSubscription = this.control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngAfterViewInit() {\n this._initContainerClickListener();\n this.recalcVirtualListHeight();\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n if (this.treeContainerElement)\n this.treeContainerElement.removeEventListener(\n 'click',\n this._handleOnContainerClick.bind(this)\n );\n }\n\n private _initContainerClickListener() {\n this.treeContainerElement =\n this.treeList?.el?.nativeElement?.querySelector('.p-tree-container');\n if (this.treeContainerElement) {\n this.treeContainerElement.addEventListener(\n 'click',\n this._handleOnContainerClick.bind(this)\n );\n }\n }\n\n private _handleOnContainerClick(event: any) {\n function getParentWithClass(\n element: HTMLElement | null,\n className: string\n ) {\n let currentElement = element;\n while (currentElement) {\n if (currentElement.classList.contains(className)) {\n return currentElement;\n }\n currentElement = currentElement.parentElement;\n }\n return null;\n }\n\n this.optionFocused = true;\n\n const parent = event.target.classList.contains('p-treenode-content')\n ? event.target\n : getParentWithClass(event.target, 'p-treenode-content');\n\n if (\n parent?.parentElement?.classList?.contains(\n 'cps-tree-node-fully-expandable'\n )\n ) {\n this.onClickFullyExpandable(event, parent.parentElement);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n updateValue(value: any): void {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n onSelectNode() {\n if (!this.multiple) {\n this.toggleOptions(this.treeContainer?.nativeElement, false);\n }\n }\n\n onClickFullyExpandable(event: any, elem: HTMLElement) {\n const key = this._getHTMLElementKey(elem);\n if (!key) return;\n\n const treeNode = this.options.find((o) => o.key === key);\n if (!treeNode) return;\n\n treeNode.expanded = !treeNode.expanded;\n this.updateOptions();\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n private _getHTMLElementKey(elem: any): string {\n if (!elem?.classList) return '';\n const classList = [...elem.classList];\n const key = classList.find((className: string) => {\n return className.startsWith('key-');\n });\n if (!key) return '';\n return key.replace('key-', '');\n }\n\n treeSelectionChanged(selection: any) {\n this.updateValue(this.treeSelectionToValue(selection));\n }\n\n recalcVirtualListHeight() {\n if (!this.virtualScroll) return;\n const currentLen = this.treeList?.serializedValue?.length || 0;\n this.virtualListHeight = Math.min(\n this.virtualScrollItemSize * currentLen,\n 240\n );\n }\n\n toggleOptions(dd: HTMLElement, show?: boolean): void {\n const optionsClassName = this.isAutocomplete\n ? '.cps-treeautocomplete-options'\n : '.cps-treeselect-options';\n\n const repositionDropdown = () => {\n if (\n this.isOpened &&\n !hasSpaceBelow(this.treeContainer, optionsClassName)\n ) {\n dd.classList.add('top-open');\n }\n };\n\n if (this.disabled || !dd || this.isOpened === show) return;\n\n if (typeof show === 'boolean') {\n if (show) dd.classList.add('active');\n else dd.classList.remove('active');\n } else dd.classList.toggle('active');\n\n this.isOpened = dd.classList.contains('active');\n\n dd.classList.remove('top-open');\n repositionDropdown();\n\n this.optionFocused = false;\n\n if (this.isOpened && this.treeSelection) {\n const optionsList = dd?.querySelector(optionsClassName) as any;\n if (optionsList) optionsList.style.opacity = '0';\n\n this._expandToNodes(\n this.multiple ? this.treeSelection : [this.treeSelection]\n );\n this.updateOptions();\n\n setTimeout(() => {\n this.recalcVirtualListHeight();\n repositionDropdown();\n if (optionsList) optionsList.style.opacity = null;\n\n const selected =\n this.treeContainer.nativeElement.querySelector('.p-highlight');\n if (selected) {\n selected.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'center'\n });\n } else if (this.virtualScroll && this.treeSelection) {\n let key = '';\n if (this.multiple) {\n if (this.treeSelection.length > 0) key = this.treeSelection[0].key;\n } else key = this.treeSelection.key;\n if (key) {\n const idx =\n this.treeList?.serializedValue?.findIndex(\n (v) => v.node.key === key\n ) || -1;\n if (idx >= 0) this.treeList.scrollToVirtualIndex(idx);\n }\n }\n });\n }\n }\n\n remove(option: TreeNode): void {\n if (!this.multiple) return;\n\n this.treeSelection = this.treeSelection.filter(\n (v: TreeNode) => !isEqual(v, option)\n );\n this.updateValue(this.treeSelectionToValue(this.treeSelection));\n }\n\n initArrowsNavigaton() {\n if (!this.isOpened) return;\n\n if (!this.optionFocused) {\n const firstElem = this.treeContainerElement?.querySelector(\n '.p-treenode-content'\n );\n if (firstElem) (firstElem as HTMLElement).focus();\n this.optionFocused = true;\n }\n }\n\n clear(dd: HTMLElement, event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && this.treeSelection) ||\n (this.multiple && this.treeSelection?.length > 0)\n ) {\n if (this.openOnClear) {\n this.toggleOptions(dd, true);\n }\n const val = this.multiple ? [] : undefined;\n this.treeSelection = val;\n this.updateValue(val);\n }\n this.optionFocused = false;\n }\n\n private _checkErrors(): void {\n const errors = this.control?.errors;\n\n if (!this.control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n console.log('message', message);\n this.error = message || 'Unknown error';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this.control?.control?.markAsTouched();\n this._checkErrors();\n }\n\n focus() {\n this.treeContainer?.nativeElement?.focus();\n this.toggleOptions(this.treeContainer?.nativeElement, true);\n }\n\n private _expandToNodes(nodes: any[]) {\n function getParentKey(key: string): string {\n const lastSeparatorIndex = key.lastIndexOf('-');\n if (lastSeparatorIndex !== -1) {\n return key.substring(0, lastSeparatorIndex);\n }\n return '';\n }\n\n nodes.forEach((node) => {\n const parentNodeKey = getParentKey(node.key);\n const parentNode = this.optionsMap.get(parentNodeKey) || null;\n\n if (parentNode) {\n parentNode.expanded = true;\n this._expandToNodes([parentNode]);\n }\n });\n }\n\n private _toInnerOptions(_options: any[]): TreeNode[] {\n function mapOption(\n o: any,\n optionLabel: string,\n optionInfo: string,\n key: string,\n originalOptionsMap: any\n ) {\n const inner = {\n inner: true,\n label: o[optionLabel],\n info: o[optionInfo],\n key,\n styleClass: 'key-' + key\n } as TreeNode;\n if (o.isDirectory) {\n inner.type = 'directory';\n inner.selectable = false;\n inner.styleClass += ' cps-tree-node-fully-expandable';\n }\n if (o.children) {\n inner.children = o.children.map((c: any, index: number) => {\n return mapOption(\n c,\n optionLabel,\n optionInfo,\n key + '-' + index,\n originalOptionsMap\n );\n });\n }\n originalOptionsMap.set(key, o);\n return inner;\n }\n\n const res = _options.map((option, index) => {\n return mapOption(\n option,\n this.optionLabel,\n this.optionInfo,\n '' + index,\n this.originalOptionsMap\n );\n });\n\n this.optionsMap = this._buildOptionsMap(res);\n\n return res;\n }\n\n private _buildOptionsMap(options: any[]): Map<string, any> {\n const nodeMap = new Map<string, any>();\n for (const option of options) {\n nodeMap.set(option.key, option);\n if (option.children) {\n const childNodeMap = this._buildOptionsMap(option.children);\n childNodeMap.forEach((value, key) => nodeMap.set(key, value));\n }\n }\n return nodeMap;\n }\n\n treeSelectionToValue(selection: any) {\n if (!selection) return this.multiple ? [] : undefined;\n if (this.multiple) {\n return selection.map((s: any) => this.originalOptionsMap.get(s.key));\n } else {\n return this.originalOptionsMap.get(selection.key);\n }\n }\n\n private _valueToTreeSelection(value: any) {\n function getKey(v: any, map: Map<string, any>): string {\n for (const [key, val] of map.entries()) {\n if (isEqual(v, val)) {\n return key;\n }\n }\n return '';\n }\n\n if (!value) return this.multiple ? [] : undefined;\n\n if (this.multiple) {\n const res = [] as TreeNode[];\n value.forEach((v: any) => {\n const key = getKey(v, this.originalOptionsMap);\n if (key) res.push(this.optionsMap.get(key) as TreeNode);\n });\n return res;\n } else {\n const key = getKey(value, this.originalOptionsMap);\n return key ? this.optionsMap.get(key) : undefined;\n }\n }\n\n // this is a fix of primeng change detection bug when virtual scroller is enabled\n updateOptions() {\n if (!this.virtualScroll) return;\n this.options = [...this.options];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { FormsModule, NgControl } from '@angular/forms';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsChipComponent } from '../cps-chip/cps-chip.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { CombineLabelsPipe } from '../../pipes/internal/combine-labels.pipe';\nimport { Tree, TreeModule } from 'primeng/tree';\nimport { CpsTreeDropdownBaseComponent } from '../../base_components/cps-tree-dropdown-base.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TreeModule,\n ClickOutsideDirective,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n CombineLabelsPipe\n ],\n providers: [CombineLabelsPipe],\n selector: 'cps-tree-select',\n templateUrl: './cps-tree-select.component.html',\n styleUrls: ['./cps-tree-select.component.scss']\n})\nexport class CpsTreeSelectComponent\n extends CpsTreeDropdownBaseComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n @ViewChild('treeSelectContainer')\n treeSelectContainer!: ElementRef;\n\n @ViewChild('treeSelectList') treeSelectList!: Tree;\n\n constructor(\n @Optional() public override control: NgControl,\n public override cdRef: ChangeDetectorRef\n ) {\n super(control, cdRef);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngAfterViewInit() {\n this.treeContainer = this.treeSelectContainer;\n this.treeList = this.treeSelectList;\n super.ngAfterViewInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n onClickOutside(dd: HTMLElement) {\n this.toggleOptions(dd, false);\n }\n\n onBoxClick(dd: HTMLElement) {\n this.toggleOptions(dd);\n }\n\n onKeyDown(event: any, dd: HTMLElement) {\n event.preventDefault();\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this.toggleOptions(dd, false);\n }\n // click down arrow\n else if (code === 40) {\n this.initArrowsNavigaton();\n }\n }\n}\n","<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeselect\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #treeSelectContainer\n (keydown)=\"onKeyDown($event, treeSelectContainer)\"\n (blur)=\"onBlur()\">\n <div class=\"cps-treeselect-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-treeselect-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n class=\"cps-treeselect-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(treeSelectContainer)\">\n <div class=\"cps-treeselect-box\" (click)=\"onBoxClick(treeSelectContainer)\">\n <div class=\"cps-treeselect-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-treeselect-box-placeholder\"\n *ngIf=\"\n (!treeSelection && !multiple) ||\n (treeSelection?.length < 1 && multiple)\n \">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-treeselect-box-items\"\n *ngIf=\"\n (treeSelection && !multiple) ||\n (treeSelection?.length > 0 && multiple)\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n {{ treeSelection.label }}</span\n >\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <span class=\"text-group-item\">\n {{\n treeSelection | combineLabels : options : '' : 'label' : true\n }}\n </span>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of treeSelection\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"remove(val)\"\n [label]=\"val.label\">\n </cps-chip>\n </div>\n </div>\n </div>\n <span class=\"cps-treeselect-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && treeSelection?.length) ||\n (!multiple && treeSelection)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-treeselect-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(treeSelectContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-treeselect-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n\n <div class=\"cps-treeselect-options\">\n <p-tree\n #treeSelectList\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"recalcVirtualListHeight()\"\n (onNodeCollapse)=\"recalcVirtualListHeight()\"\n [value]=\"options\"\n [(selection)]=\"treeSelection\"\n (selectionChange)=\"treeSelectionChanged($event)\"\n [metaKeySelection]=\"multiple ? false : true\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\">\n <ng-template let-node pTemplate=\"directory\">\n <span class=\"cps-treeselect-directory-elem\">{{ node.label }}</span>\n </ng-template>\n <ng-template let-node pTemplate=\"default\">\n <span class=\"cps-treeselect-option\">\n <span class=\"cps-treeselect-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-treeselect-option-check\">\n </span>\n <span\n class=\"cps-treeselect-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.label }}</span\n >\n </span>\n <span\n class=\"cps-treeselect-option-info\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.info }}</span\n >\n </span>\n </ng-template>\n </p-tree>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-treeselect-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-treeselect-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-treeselect-error\">\n {{ error }}\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport {\n CpsIconComponent,\n IconType,\n iconSizeType\n} from '../cps-icon/cps-icon.component';\nimport { CpsChipComponent } from '../cps-chip/cps-chip.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { LabelByValuePipe } from '../../pipes/internal/label-by-value.pipe';\nimport { CheckOptionSelectedPipe } from '../../pipes/internal/check-option-selected.pipe';\nimport { find, isEqual } from 'lodash-es';\nimport {\n VirtualScroller,\n VirtualScrollerModule\n} from 'primeng/virtualscroller';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { hasSpaceBelow } from '../../utils/internal/position-utils';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ClickOutsideDirective,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n LabelByValuePipe,\n CheckOptionSelectedPipe,\n VirtualScrollerModule\n ],\n providers: [LabelByValuePipe, CheckOptionSelectedPipe],\n selector: 'cps-autocomplete',\n templateUrl: './cps-autocomplete.component.html',\n styleUrls: ['./cps-autocomplete.component.scss']\n})\nexport class CpsAutocompleteComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() label = '';\n @Input() placeholder = 'Please enter';\n @Input() hint = '';\n @Input() returnObject = true; // if false, value will be option[optionValue]\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() selectAll = true; // doesn't work with virtual scroll\n @Input() chips = true;\n @Input() closableChips = true;\n @Input() clearable = false;\n @Input() openOnClear = true;\n @Input() options = [] as any[];\n @Input() optionLabel = 'label';\n @Input() optionValue = 'value'; // needed only if returnObject === false\n @Input() optionInfo = 'info';\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() prefixIcon: IconType = '';\n @Input() prefixIconSize: iconSizeType = '18px';\n @Input() loading = false;\n @Input() emptyMessage = 'No results found';\n @Input() virtualScroll = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input('value') _value: any = undefined;\n\n get value(): any {\n return this._value;\n }\n\n set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n @Output() valueChanged = new EventEmitter<any>();\n\n @ViewChild('autocompleteContainer')\n autocompleteContainer!: ElementRef;\n\n @ViewChild('virtualList')\n virtualList!: VirtualScroller;\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n error = '';\n cvtWidth = '';\n isOpened = false;\n inputText = '';\n filteredOptions = [] as any[];\n backspaceClickedOnce = false;\n activeSingle = false;\n optionHighlightedIndex = -1;\n\n virtualListHeight = 240;\n virtualScrollItemSize = 42;\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private _labelByValue: LabelByValuePipe\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.filteredOptions = this.options;\n this.cvtWidth = convertSize(this.width);\n if (this.multiple && !this._value) {\n this._value = [];\n }\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n\n this.recalcVirtualListHeight();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n select(option: any, byValue: boolean): void {\n function includes(array: any[], val: any): boolean {\n return array ? !!find(array, (item) => isEqual(item, val)) : false;\n }\n\n this.backspaceClickedOnce = false;\n const val = byValue\n ? option\n : this.returnObject\n ? option\n : option[this.optionValue];\n if (this.multiple) {\n let res = [] as any;\n if (includes(this.value, val)) {\n res = this.value.filter((v: any) => !isEqual(v, val));\n } else {\n this.options.forEach((o) => {\n const ov = this.returnObject ? o : o[this.optionValue];\n if (this.value.some((v: any) => isEqual(v, ov)) || isEqual(val, ov)) {\n res.push(ov);\n }\n });\n }\n this.updateValue(res);\n } else {\n this.updateValue(val);\n }\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n onOptionClick(option: any, dd: HTMLElement) {\n this._clickOption(option, dd);\n }\n\n toggleAll() {\n let res = [];\n if (this.value.length < this.options.length) {\n if (this.returnObject) {\n res = this.options;\n } else {\n this.options.forEach((o) => {\n res.push(o[this.optionValue]);\n });\n }\n }\n this.updateValue(res);\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n filterOptions(event: any) {\n if (!this.isOpened) {\n this._toggleOptions(this.autocompleteContainer?.nativeElement, true);\n }\n this._dehighlightOption();\n this.backspaceClickedOnce = false;\n const searchVal = (event?.target?.value || '').toLowerCase();\n\n this.filteredOptions = this.options.filter((o: any) =>\n o[this.optionLabel].toLowerCase().includes(searchVal)\n );\n\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n clear(dd: HTMLElement, event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && this.value) ||\n (this.multiple && this.value?.length > 0)\n ) {\n if (this.openOnClear) {\n this._toggleOptions(dd, true);\n }\n const val = this.multiple ? [] : this.returnObject ? undefined : '';\n this.updateValue(val);\n }\n this._clearInput();\n this._dehighlightOption();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n }\n\n onClickOutside(dd: HTMLElement) {\n this._closeAndClear(dd);\n }\n\n onBoxClick() {\n if (!this.multiple) {\n this.activeSingle = true;\n this.inputText = this._getValueLabel();\n this.filteredOptions = this.options;\n }\n this.focus();\n this._dehighlightOption();\n }\n\n onContainerKeyDown(event: any, dd: HTMLElement) {\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._closeAndClear(dd);\n }\n // enter\n else if (code === 13) {\n let idx = this.optionHighlightedIndex;\n if (\n this.multiple &&\n this.selectAll &&\n this.filteredOptions.length === this.options.length &&\n !this.virtualScroll\n ) {\n if (idx === 0) {\n this.toggleAll();\n return;\n } else idx--;\n }\n const option = this.filteredOptions[idx];\n if (this.filteredOptions.length !== this.options.length)\n this._dehighlightOption();\n this._clickOption(option, dd);\n }\n // vertical arrows\n else if ([38, 40].includes(code)) {\n // Arrows navigation doesn't work with virtual scroll\n if (!this.virtualScroll) this._navigateOptionsByArrows(code === 38);\n }\n }\n\n onInputKeyDown(event: any) {\n const code = event.keyCode;\n // backspace\n if (code === 8) {\n this._removeLastValue();\n event.stopPropagation();\n }\n // enter\n else if (code === 13) {\n if (this.optionHighlightedIndex < 0) {\n this._confirmInput(event?.target?.value || '');\n event.stopPropagation();\n }\n } else if ([38, 40].includes(code)) {\n event.preventDefault();\n }\n }\n\n focusInput() {\n this.autocompleteContainer?.nativeElement?.querySelector('input')?.focus();\n }\n\n focus() {\n this.autocompleteContainer?.nativeElement?.focus();\n this.focusInput();\n this._toggleOptions(this.autocompleteContainer?.nativeElement, true);\n }\n\n recalcVirtualListHeight() {\n if (!this.virtualScroll) return;\n const currentLen = this.filteredOptions?.length || 0;\n this.virtualListHeight = Math.min(\n this.virtualScrollItemSize * currentLen,\n 240\n );\n }\n\n private _toggleOptions(dd: HTMLElement, show?: boolean): void {\n if (this.disabled || !dd || this.isOpened === show) return;\n\n this.backspaceClickedOnce = false;\n if (typeof show === 'boolean') {\n if (show) dd.classList.add('active');\n else dd.classList.remove('active');\n } else dd.classList.toggle('active');\n\n this.isOpened = dd.classList.contains('active');\n\n dd.classList.remove('top-open');\n if (\n this.isOpened &&\n !hasSpaceBelow(this.autocompleteContainer, '.cps-autocomplete-options')\n ) {\n dd.classList.add('top-open');\n }\n\n setTimeout(() => {\n if (this.isOpened && this.filteredOptions.length > 0) {\n this.recalcVirtualListHeight();\n\n const selected =\n this.autocompleteContainer.nativeElement.querySelector('.selected');\n if (selected) {\n selected.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'center'\n });\n } else if (this.virtualScroll && this.value) {\n let v: any;\n if (this.multiple) {\n if (this.value.length > 0) {\n v = this.value[0];\n }\n } else v = this.value;\n const idx = this.filteredOptions.findIndex((o) => isEqual(o, v));\n if (idx >= 0) this.virtualList.scrollToIndex(idx);\n }\n }\n });\n }\n\n private _clickOption(option: any, dd: HTMLElement) {\n this.select(option, false);\n if (!this.multiple) {\n this._toggleOptions(dd, false);\n }\n }\n\n private _checkErrors(): void {\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n console.log('message', message);\n this.error = message || 'Unknown error';\n }\n\n private updateValue(value: any): void {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n private _getValueLabel() {\n return this.value\n ? this.returnObject\n ? this.value[this.optionLabel]\n : this._labelByValue.transform(\n this.value,\n this.options,\n this.optionValue,\n this.optionLabel\n )\n : '';\n }\n\n private _clearInput() {\n this.filteredOptions = this.options;\n this.inputText = '';\n this.activeSingle = false;\n this.recalcVirtualListHeight();\n }\n\n private _closeAndClear(dd: HTMLElement) {\n this._clearInput();\n this._toggleOptions(dd, false);\n this._dehighlightOption();\n }\n\n private _getHTMLOptions() {\n return (\n this.autocompleteContainer?.nativeElement?.querySelectorAll(\n '.cps-autocomplete-options-option'\n ) || []\n );\n }\n\n private _dehighlightOption(el?: HTMLElement) {\n if (el) el.classList.remove('highlighten');\n else {\n if (this.optionHighlightedIndex < 0) return;\n const optionItems = this._getHTMLOptions();\n optionItems[this.optionHighlightedIndex].classList.remove('highlighten');\n this.optionHighlightedIndex = -1;\n }\n }\n\n private _highlightOption(el: HTMLElement) {\n el.classList.add('highlighten');\n const parent = el.parentElement;\n if (!parent) return;\n const parentRect = parent.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n if (elRect.top < parentRect.top || elRect.bottom > parentRect.bottom) {\n el.scrollIntoView({\n block: 'nearest',\n inline: 'center'\n });\n }\n }\n\n private _navigateOptionsByArrows(up: boolean) {\n if (!this.isOpened) return;\n\n const optionItems = this._getHTMLOptions();\n const len = optionItems.length;\n if (len < 1) return;\n\n if (len === 1) {\n this.optionHighlightedIndex = 0;\n this._highlightOption(optionItems[0]);\n return;\n }\n\n if (up) {\n this._dehighlightOption(optionItems[this.optionHighlightedIndex]);\n this.optionHighlightedIndex =\n this.optionHighlightedIndex < 1\n ? len - 1\n : this.optionHighlightedIndex - 1;\n this._highlightOption(optionItems[this.optionHighlightedIndex]);\n } else {\n this._dehighlightOption(optionItems[this.optionHighlightedIndex]);\n this.optionHighlightedIndex = [-1, len - 1].includes(\n this.optionHighlightedIndex\n )\n ? 0\n : this.optionHighlightedIndex + 1;\n this._highlightOption(optionItems[this.optionHighlightedIndex]);\n }\n }\n\n private _confirmInput(searchVal: string) {\n if (!this.isOpened) return;\n searchVal = searchVal.toLowerCase();\n if (!searchVal) {\n if (this.multiple) return;\n const val = this.returnObject ? undefined : '';\n this.updateValue(val);\n this._closeAndClear(this.autocompleteContainer?.nativeElement);\n return;\n }\n\n const found = this.filteredOptions.find(\n (o: any) => o[this.optionLabel].toLowerCase() === searchVal\n );\n if (found) {\n this.select(found, false);\n this._toggleOptions(\n this.autocompleteContainer?.nativeElement,\n this.multiple\n );\n } else {\n if (!this.multiple) {\n this.inputText = this._getValueLabel();\n this.filteredOptions = this.options;\n return;\n }\n }\n\n this._clearInput();\n }\n\n private _removeLastValue() {\n if (!this.multiple || this.inputText) return;\n\n if (this.value?.length) {\n if (this.backspaceClickedOnce) {\n this.updateValue(\n this.value.filter(\n (v: any, index: number) => index !== this.value.length - 1\n )\n );\n\n this.backspaceClickedOnce = false;\n } else this.backspaceClickedOnce = true;\n } else this.backspaceClickedOnce = false;\n\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n}\n","<div\n data-cy-id=\"cps-autocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-autocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #autocompleteContainer>\n <div class=\"cps-autocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-autocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event, autocompleteContainer)\"\n class=\"cps-autocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(autocompleteContainer)\">\n <div class=\"cps-autocomplete-box\" (click)=\"onBoxClick()\">\n <div class=\"cps-autocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-autocomplete-box-items\"\n *ngIf=\"\n (value && !multiple) || (value?.length > 0 && multiple);\n else autocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of value; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n }}{{ !last ? ',' : '' }}\n </div>\n <ng-container *ngTemplateOutlet=\"autocompleteInput\"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n <ng-container *ngTemplateOutlet=\"autocompleteInput\"></ng-container>\n </div>\n </div>\n <span class=\"cps-autocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && value)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-autocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(autocompleteContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-autocomplete-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"cps-autocomplete-options\">\n <div\n *ngIf=\"filteredOptions.length < 1\"\n class=\"cps-autocomplete-options-empty\">\n {{ emptyMessage }}\n </div>\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-autocomplete-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"\n multiple && selectAll && filteredOptions.length === options.length\n \"\n (click)=\"toggleAll()\">\n <span class=\"cps-autocomplete-options-option-left\">\n <span\n *ngIf=\"multiple\"\n class=\"cps-autocomplete-options-option-check\">\n </span>\n <span class=\"cps-autocomplete-options-option-label\"\n >Select all</span\n >\n </span>\n </div>\n <ng-container *ngFor=\"let item of filteredOptions\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"filteredOptions\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: 3 }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"autocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-autocomplete-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-autocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #autocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-autocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!value && !multiple) || (value?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-autocomplete-options-option\"\n (click)=\"onOptionClick(item, autocompleteContainer)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-autocomplete-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-autocomplete-options-option-check\">\n </span>\n <span\n data-cy-id=\"cps-autocomplete-options\"\n class=\"cps-autocomplete-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-autocomplete-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { FormsModule, NgControl } from '@angular/forms';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsChipComponent } from '../cps-chip/cps-chip.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { find, isEqual } from 'lodash-es';\nimport { Tree, TreeModule } from 'primeng/tree';\nimport { TreeNode } from 'primeng/api';\nimport { CpsTreeDropdownBaseComponent } from '../../base_components/cps-tree-dropdown-base.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TreeModule,\n ClickOutsideDirective,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent\n ],\n selector: 'cps-tree-autocomplete',\n templateUrl: './cps-tree-autocomplete.component.html',\n styleUrls: ['./cps-tree-autocomplete.component.scss']\n})\nexport class CpsTreeAutocompleteComponent\n extends CpsTreeDropdownBaseComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n @Input() emptyMessage = 'No results found';\n\n @ViewChild('treeAutocompleteContainer')\n treeAutocompleteContainer!: ElementRef;\n\n @ViewChild('treeAutocompleteList') treeAutocompleteList!: Tree;\n\n inputText = '';\n backspaceClickedOnce = false;\n activeSingle = false;\n\n constructor(\n @Optional() public override control: NgControl,\n public override cdRef: ChangeDetectorRef\n ) {\n super(control, cdRef);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngAfterViewInit() {\n this.treeContainer = this.treeAutocompleteContainer;\n this.treeList = this.treeAutocompleteList;\n this.isAutocomplete = true;\n super.ngAfterViewInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n override onSelectNode() {\n this.backspaceClickedOnce = false;\n this._clearInput();\n super.onSelectNode();\n }\n\n onClickOutside(dd: HTMLElement) {\n this._closeAndClear(dd);\n }\n\n onBoxClick() {\n if (!this.multiple) {\n this.activeSingle = true;\n this.inputText = this._getValueLabel();\n this.treeAutocompleteList.resetFilter();\n }\n this.focus();\n this.optionFocused = false;\n }\n\n onContainerKeyDown(event: any, dd: HTMLElement) {\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._closeAndClear(dd);\n }\n // click down arrow\n else if (code === 40) {\n this.initArrowsNavigaton();\n }\n }\n\n onInputKeyDown(event: any) {\n const code = event.keyCode;\n // backspace\n if (code === 8) {\n this._removeLastValue();\n event.stopPropagation();\n }\n // enter\n else if (code === 13) {\n if (!this.optionFocused) {\n this._confirmInput(event?.target?.value || '');\n event.stopPropagation();\n }\n }\n }\n\n override remove(option: TreeNode): void {\n super.remove(option);\n\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n private _select(option: TreeNode): void {\n function includes(array: any[], val: any): boolean {\n return array ? !!find(array, (item) => isEqual(item, val)) : false;\n }\n\n this.backspaceClickedOnce = false;\n\n if (this.multiple) {\n if (includes(this.treeSelection, option)) {\n this.treeSelection = this.treeSelection.filter(\n (v: TreeNode) => !isEqual(v, option)\n );\n } else {\n this.treeSelection.push(option);\n }\n } else {\n this.treeSelection = option;\n }\n this.updateValue(this.treeSelectionToValue(this.treeSelection));\n\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n override clear(dd: HTMLElement, event: any): void {\n super.clear(dd, event);\n\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n focusInput() {\n this.treeAutocompleteContainer?.nativeElement\n ?.querySelector('input')\n ?.focus();\n }\n\n override focus() {\n super.focus();\n this.focusInput();\n }\n\n onFilterOptions() {\n this.recalcVirtualListHeight();\n }\n\n filterOptions(event: any) {\n if (!this.isOpened) {\n this.toggleOptions(this.treeAutocompleteContainer?.nativeElement, true);\n }\n this.backspaceClickedOnce = false;\n const searchVal = (event?.target?.value || '').toLowerCase();\n\n if (!searchVal) this.treeAutocompleteList.resetFilter();\n else this.treeAutocompleteList._filter(searchVal);\n }\n\n private _getValueLabel() {\n return this.treeSelection?.label || '';\n }\n\n private _clearInput() {\n this.treeAutocompleteList.resetFilter();\n this.inputText = '';\n this.activeSingle = false;\n this.updateOptions();\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n private _closeAndClear(dd: HTMLElement) {\n this._clearInput();\n this.toggleOptions(dd, false);\n }\n\n private _confirmInput(searchVal: string) {\n if (!this.isOpened) return;\n searchVal = searchVal.toLowerCase();\n if (!searchVal) {\n if (this.multiple) return;\n this.treeSelection = undefined;\n this.updateValue(undefined);\n this._closeAndClear(this.treeAutocompleteContainer?.nativeElement);\n return;\n }\n\n const found = this.treeAutocompleteList?.serializedValue?.find(\n (sv: any) => sv?.node?.label?.toLowerCase() === searchVal\n );\n if (found) {\n this._select(found.node);\n this.toggleOptions(\n this.treeAutocompleteContainer?.nativeElement,\n this.multiple\n );\n } else {\n if (!this.multiple) {\n this.inputText = this._getValueLabel();\n this.treeAutocompleteList.resetFilter();\n return;\n }\n }\n\n this._clearInput();\n }\n\n private _removeLastValue() {\n if (!this.multiple || this.inputText) return;\n\n if (this.treeSelection?.length) {\n if (this.backspaceClickedOnce) {\n this.treeSelection = this.treeSelection.filter(\n (v: TreeNode, index: number) =>\n index !== this.treeSelection.length - 1\n );\n this.updateValue(this.treeSelectionToValue(this.treeSelection));\n\n this.backspaceClickedOnce = false;\n } else this.backspaceClickedOnce = true;\n } else this.backspaceClickedOnce = false;\n\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n}\n","<div\n data-cy-id=\"cps-treeautocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeautocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #treeAutocompleteContainer>\n <div class=\"cps-treeautocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-treeautocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event, treeAutocompleteContainer)\"\n class=\"cps-treeautocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(treeAutocompleteContainer)\">\n <div class=\"cps-treeautocomplete-box\" (click)=\"onBoxClick()\">\n <div class=\"cps-treeautocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-treeautocomplete-box-items\"\n *ngIf=\"\n (treeSelection && !multiple) ||\n (treeSelection?.length > 0 && multiple);\n else treeAutocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n treeSelection.label\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of treeSelection; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{ val.label }}{{ !last ? ',' : '' }}\n </div>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of treeSelection; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"remove(val)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"val.label\">\n </cps-chip>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n </div>\n <span class=\"cps-treeautocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && treeSelection?.length) ||\n (!multiple && treeSelection)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-treeautocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(treeAutocompleteContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-treeautocomplete-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"cps-treeautocomplete-options\">\n <p-tree\n #treeAutocompleteList\n [emptyMessage]=\"emptyMessage\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"recalcVirtualListHeight()\"\n (onNodeCollapse)=\"recalcVirtualListHeight()\"\n (onFilter)=\"onFilterOptions()\"\n [value]=\"options\"\n [(selection)]=\"treeSelection\"\n (selectionChange)=\"treeSelectionChanged($event)\"\n [metaKeySelection]=\"multiple ? false : true\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\">\n <ng-template let-node pTemplate=\"directory\">\n <span class=\"cps-treeautocomplete-directory-elem\">{{\n node.label\n }}</span>\n </ng-template>\n <ng-template let-node pTemplate=\"default\">\n <span class=\"cps-treeautocomplete-option\">\n <span class=\"cps-treeautocomplete-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-treeautocomplete-option-check\">\n </span>\n <span\n class=\"cps-treeautocomplete-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.label }}</span\n >\n </span>\n <span\n class=\"cps-treeautocomplete-option-info\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.info }}</span\n >\n </span>\n </ng-template>\n </p-tree>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-treeautocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-treeautocomplete-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-treeautocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #treeAutocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-treeautocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!treeSelection && !multiple) || (treeSelection?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-progress-circular',\n templateUrl: './cps-progress-circular.component.html',\n styleUrls: ['./cps-progress-circular.component.scss']\n})\nexport class CpsProgressCircularComponent implements OnInit {\n @Input() diameter: number | string = 40;\n @Input() strokeWidth: number | string = 4;\n @Input() color = 'calm';\n\n ngOnInit(): void {\n this.diameter = convertSize(this.diameter);\n this.strokeWidth = convertSize(this.strokeWidth);\n\n this.color = getCSSColor(this.color);\n }\n}\n","<div\n class=\"cps-progress-circular\"\n [style.width]=\"diameter\"\n [style.border]=\"strokeWidth + ' solid ' + color\"></div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { getCSSColor } from '../../utils/colors-utils';\nimport { CpsIconComponent, IconType } from '../cps-icon/cps-icon.component';\nimport { CpsProgressCircularComponent } from '../cps-progress-circular/cps-progress-circular.component';\nimport { convertSize, parseSize } from '../../utils/internal/size-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsIconComponent, CpsProgressCircularComponent],\n selector: 'cps-button',\n templateUrl: './cps-button.component.html',\n styleUrls: ['./cps-button.component.scss']\n})\nexport class CpsButtonComponent implements OnInit {\n @Input() color = 'calm';\n @Input() contentColor = 'white'; // works only with solid type\n @Input() type: 'solid' | 'outlined' | 'borderless' = 'solid';\n @Input() label = '';\n @Input() icon: IconType = '';\n @Input() iconPosition: 'before' | 'after' = 'before';\n @Input() size: 'xsmall' | 'small' | 'normal' | 'large' = 'normal';\n @Input() width: number | string = 0;\n @Input() height: number | string = 0;\n @Input() disabled = false;\n @Input() loading = false;\n\n @Output() clicked = new EventEmitter();\n\n buttonColor = '';\n textColor = '';\n\n @HostBinding('style.width')\n cvtWidth = '';\n\n cvtHeight = '';\n cvtFontSize = '';\n cvtIconSize = '';\n\n classesList: string[] = [];\n\n ngOnInit(): void {\n this.buttonColor = getCSSColor(this.color);\n this.textColor =\n this.type === 'solid' ? getCSSColor(this.contentColor) : this.buttonColor;\n this.setClasses();\n }\n\n setClasses() {\n this.classesList = ['cps-button'];\n\n if (this.width) {\n this.cvtWidth = convertSize(this.width);\n }\n\n if (this.height) {\n this.cvtHeight = convertSize(this.height);\n if (this.cvtHeight) {\n const parsedHeight = parseSize(this.cvtHeight);\n const unit = parsedHeight.unit;\n const size = parsedHeight.value * 0.4;\n const isPx = unit === 'px';\n\n this.cvtFontSize = `${isPx ? Math.floor(size) : size}${unit}`;\n this.cvtIconSize = `${isPx ? Math.ceil(size) : size}${unit}`;\n }\n } else {\n switch (this.size) {\n case 'normal': {\n this.classesList.push('cps-button--normal');\n break;\n }\n case 'large': {\n this.classesList.push('cps-button--large');\n break;\n }\n case 'small': {\n this.classesList.push('cps-button--small');\n break;\n }\n case 'xsmall': {\n this.classesList.push('cps-button--xsmall');\n break;\n }\n }\n }\n\n switch (this.type) {\n case 'solid': {\n this.classesList.push('cps-button--solid');\n break;\n }\n case 'outlined': {\n this.classesList.push('cps-button--outlined');\n break;\n }\n case 'borderless': {\n this.classesList.push('cps-button--borderless');\n break;\n }\n }\n\n if (this.icon && this.label) {\n switch (this.iconPosition) {\n case 'before': {\n this.classesList.push('cps-button--icon-before');\n break;\n }\n case 'after': {\n this.classesList.push('cps-button--icon-after');\n break;\n }\n }\n }\n }\n\n onClick(event: Event) {\n this.clicked.emit(event);\n }\n}\n","<div>\n <button\n type=\"button\"\n [ngClass]=\"classesList\"\n [disabled]=\"disabled || loading\"\n (click)=\"onClick($event)\"\n [class.loading]=\"loading\"\n [ngStyle]=\"{\n 'background-color': type==='solid' ? buttonColor : 'transparent',\n color: textColor,\n height: cvtHeight || 'none',\n }\">\n <div class=\"cps-button__spinner\">\n <cps-progress-circular\n *ngIf=\"loading\"\n color=\"currentColor\"\n [diameter]=\"cvtIconSize\"\n strokeWidth=\"2\">\n </cps-progress-circular>\n </div>\n <div\n class=\"cps-button__content\"\n [style.visibility]=\"loading ? 'hidden' : 'visible'\">\n <cps-icon\n *ngIf=\"icon\"\n class=\"cps-button__icon\"\n [icon]=\"icon\"\n [color]=\"disabled ? 'text-light' : textColor\"\n [size]=\"cvtIconSize\">\n </cps-icon>\n <span\n class=\"cps-button__text\"\n *ngIf=\"label\"\n [ngStyle]=\"{ 'font-size': cvtFontSize || null }\"\n >{{ label }}</span\n >\n </div>\n </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsInfoCircleComponent],\n selector: 'cps-checkbox',\n templateUrl: './cps-checkbox.component.html',\n styleUrls: ['./cps-checkbox.component.scss']\n})\nexport class CpsCheckboxComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() disabled = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set value(value: boolean) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): boolean {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<boolean>();\n\n private _value = false;\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private _elementRef: ElementRef<HTMLElement>\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: boolean) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n event.preventDefault();\n if (this.disabled) return;\n this._updateValue(!this.value);\n }\n\n private _updateValue(value: boolean) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n focus() {\n this._elementRef?.nativeElement?.querySelector('input')?.focus();\n }\n}\n","<div class=\"cps-checkbox-container\">\n <label\n class=\"cps-checkbox\"\n [ngStyle]=\"{ cursor: disabled ? 'default' : 'pointer' }\">\n <span\n class=\"cps-checkbox-label\"\n [ngClass]=\"{ 'cps-checkbox-label-disabled': disabled }\"\n >{{ label }}</span\n >\n <input\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"value\"\n (change)=\"updateValueEvent($event)\" />\n <span class=\"cps-checkbox-indicator\"></span>\n </label>\n <cps-info-circle\n *ngIf=\"infoTooltip && label\"\n class=\"cps-checkbox-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport {\n CpsTooltipDirective,\n TooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\nexport type RadioOption = {\n value: any;\n label: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsInfoCircleComponent, CpsTooltipDirective],\n selector: 'cps-radio',\n templateUrl: './cps-radio.component.html',\n styleUrls: ['./cps-radio.component.scss']\n})\nexport class CpsRadioComponent implements ControlValueAccessor {\n @Input() options = [] as RadioOption[];\n @Input() groupLabel = '';\n @Input() vertical = false;\n @Input() disabled = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<boolean>();\n\n private _value: any = undefined;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n event.preventDefault();\n if (this.disabled) return;\n const value = event?.target?.value || '';\n this._updateValue(value);\n }\n\n private _updateValue(value: any) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n}\n","<div class=\"cps-radio-group\">\n <div class=\"cps-radio-group-label\" *ngIf=\"groupLabel\">\n <span>{{ groupLabel }}</span>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-radio-group-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n\n <div\n class=\"cps-radio-group-content\"\n [ngClass]=\"\n vertical\n ? 'cps-radio-group-content-vertical'\n : 'cps-radio-group-content-horizontal'\n \">\n <ng-container *ngFor=\"let option of options\">\n <ng-container\n *ngTemplateOutlet=\"\n optionContainerTemplate;\n context: {\n option: option,\n tooltip: option.tooltip\n }\n \"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #optionContainerTemplate let-option=\"option\" let-tooltip=\"tooltip\">\n <label\n *ngIf=\"tooltip\"\n class=\"cps-radio-group-content-button\"\n [cpsTooltip]=\"option.tooltip\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\"\n [ngStyle]=\"{\n cursor: option.disabled || disabled ? 'default' : 'pointer'\n }\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n </label>\n <label\n *ngIf=\"!tooltip\"\n class=\"cps-radio-group-content-button\"\n [ngStyle]=\"{\n cursor: option.disabled || disabled ? 'default' : 'pointer'\n }\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n </label>\n</ng-template>\n\n<ng-template #optionRadioTemplate let-option=\"option\">\n <input\n type=\"radio\"\n [disabled]=\"option.disabled || disabled\"\n [value]=\"option.value\"\n [checked]=\"value === option.value\"\n (change)=\"updateValueEvent($event)\" />\n <span class=\"cps-radio-group-content-button-label\">{{ option.label }}</span>\n</ng-template>\n","import { Directive, Host, Self, Optional } from '@angular/core';\nimport { Table } from 'primeng/table';\n\n@Directive({\n standalone: true,\n selector: '[withUnsort]'\n})\nexport class TableUnsortDirective {\n defaultSortOrderInitialized = false;\n\n constructor(@Host() @Self() @Optional() public pTable: Table) {\n pTable.tableService.valueSource$.subscribe((val: any[]) => {\n if (val != null && val.length > 0 && !this.defaultSortOrderInitialized) {\n let i = 0;\n val.forEach((v) => {\n v._defaultSortOrder = i++;\n });\n this.defaultSortOrderInitialized = true;\n }\n });\n\n pTable.sort = (event: any) => {\n if (pTable.sortMode === 'single') {\n if (pTable.sortField === event.field && pTable.sortOrder === -1) {\n event.field = '_defaultSortOrder';\n }\n\n pTable._sortOrder =\n pTable.sortField === event.field\n ? pTable.sortOrder * -1\n : pTable.defaultSortOrder;\n pTable._sortField = event.field;\n pTable.sortSingle();\n }\n if (pTable.sortMode === 'multiple') {\n let resetIndex = false;\n const sortMeta = pTable.getSortMeta(event.field);\n\n if (sortMeta) {\n for (let i = 0; i < pTable._multiSortMeta.length; i++) {\n if (pTable._multiSortMeta[i].field === sortMeta.field) {\n pTable._multiSortMeta.splice(i, 1);\n }\n }\n if (sortMeta.order === 1) {\n sortMeta.order = sortMeta.order * -1;\n pTable.multiSortMeta.push(sortMeta);\n }\n if (pTable._multiSortMeta?.length === 0) {\n pTable.multiSortMeta.push({\n field: '_defaultSortOrder',\n order: pTable.defaultSortOrder\n });\n resetIndex = true;\n }\n } else {\n if (!pTable.multiSortMeta) {\n pTable._multiSortMeta = [];\n }\n pTable.multiSortMeta.push({\n field: event.field,\n order: pTable.defaultSortOrder\n });\n }\n\n pTable.sortMultiple();\n if (resetIndex) pTable._multiSortMeta = [];\n }\n\n if (pTable.isStateful()) {\n pTable.saveState();\n }\n\n pTable.anchorRowIndex = 0;\n };\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Table, TableService, TableModule } from 'primeng/table';\nimport { TableUnsortDirective } from './table-unsort.directive';\nimport { SortEvent } from 'primeng/api';\nimport { CpsInputComponent } from '../cps-input/cps-input.component';\nimport { CpsButtonComponent } from '../cps-button/cps-button.component';\nimport { CpsSelectComponent } from '../cps-select/cps-select.component';\n\nexport function tableFactory(tableComponent: CpsTableComponent) {\n return tableComponent.primengTable;\n}\n\n@Component({\n selector: 'cps-table',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n TableModule,\n TableUnsortDirective,\n CpsInputComponent,\n CpsButtonComponent,\n CpsSelectComponent\n ],\n templateUrl: './cps-table.component.html',\n styleUrls: ['./cps-table.component.scss'],\n providers: [\n TableService,\n {\n provide: Table,\n useFactory: tableFactory,\n // eslint-disable-next-line no-use-before-define\n deps: [CpsTableComponent]\n }\n ]\n})\nexport class CpsTableComponent implements OnInit, AfterViewInit {\n @Input() headers: string[] = [];\n @Input() data: any[] = [];\n\n @Input() columns: { [key: string]: any }[] = [];\n @Input() colHeaderName = 'header';\n @Input() colFieldName = 'field';\n\n @Input() striped = true;\n @Input() bordered = true;\n @Input() size: 'small' | 'normal' | 'large' = 'normal';\n @Input() selectable = false;\n @Input() emptyMessage = 'No data';\n @Input() hasToolbar = true;\n @Input() toolbarSize: 'small' | 'normal' = 'normal';\n @Input() toolbarTitle = '';\n @Input() sortMode: 'single' | 'multiple' = 'multiple';\n @Input() customSort = false;\n @Input() rowHover = true;\n @Input() scrollable = true;\n @Input() scrollHeight = '';\n @Input() virtualScroll = false; // works only if scrollable is true\n\n @Input() paginator = false;\n @Input() alwaysShowPaginator = true;\n @Input() rowsPerPageOptions: number[] = [];\n @Input() first = 0;\n @Input() rows = 0;\n @Input() totalRecords = 0;\n\n @Input() lazy = false;\n @Input() lazyLoadOnInit = true;\n\n @Input() showGlobalFilter = false;\n @Input() globalFilterPlaceholder = 'Search';\n @Input() globalFilterFields: string[] = [];\n\n @Input() showRemoveBtnOnSelect = true;\n @Input() showActionBtn = false;\n @Input() actionBtnTitle = 'Action';\n\n @Input() reorderableRows = false;\n // @Input() columnsToggle = false; TODO\n // @Input() export = false; TODO\n /* @Input() */ resizableColumns = false; // TODO\n /* @Input() */ reorderableColumns = false; // TODO\n // TODO CpsTableColumnFilterDirective (type date, text, boolean, range, categories, numeric)\n\n @Output() selectionChanged = new EventEmitter<any[]>();\n @Output() actionBtnClicked = new EventEmitter<void>();\n\n /**\n * A function to implement custom sorting. customSort must be true.\n * @param {any} any - sort meta.\n * @group Emits\n */\n @Output() customSortFunction: EventEmitter<any> = new EventEmitter<any>();\n\n @ContentChild('toolbar', { static: false })\n public toolbarTemplate!: TemplateRef<any>;\n\n @ContentChild('header', { static: false })\n public headerTemplate!: TemplateRef<any>;\n\n @ContentChild('body', { static: false })\n public bodyTemplate!: TemplateRef<any>;\n\n @ViewChild('primengTable', { static: true })\n primengTable!: Table;\n\n styleClass = '';\n selectedRows: any[] = [];\n\n virtualScrollItemSize = 0;\n\n rowOptions: { label: string; value: number }[] = [];\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (!this.scrollable) this.virtualScroll = false;\n\n if (this.paginator) {\n if (this.rowsPerPageOptions.length < 1)\n this.rowsPerPageOptions = [5, 10, 25, 50];\n\n if (!this.rows) this.rows = this.rowsPerPageOptions[0];\n else {\n if (!this.rowsPerPageOptions.includes(this.rows)) {\n throw new Error('rowsPerPageOptions must include rows');\n }\n }\n\n this.rowOptions = this.rowsPerPageOptions.map((v) => ({\n label: '' + v,\n value: v\n }));\n }\n\n if (\n this.showGlobalFilter &&\n this.globalFilterFields?.length < 1 &&\n this.data?.length > 0\n ) {\n this.globalFilterFields = Object.keys(this.data[0]);\n }\n switch (this.size) {\n case 'small':\n this.styleClass = 'p-datatable-sm';\n break;\n case 'large':\n this.styleClass = 'p-datatable-lg';\n break;\n }\n switch (this.toolbarSize) {\n case 'small':\n this.styleClass += ' cps-tbar-small';\n break;\n case 'normal':\n this.styleClass += ' cps-tbar-normal';\n break;\n }\n if (this.striped) {\n this.styleClass += ' p-datatable-striped';\n }\n if (this.bordered) {\n this.styleClass += ' p-datatable-gridlines';\n }\n }\n\n ngAfterViewInit() {\n this.virtualScrollItemSize =\n this.primengTable?.el?.nativeElement\n ?.querySelector('.p-datatable-tbody')\n ?.querySelector('tr')?.clientHeight || 0;\n this.cdRef.detectChanges();\n }\n\n onSelectionChanged(selection: any[]) {\n this.selectionChanged.emit(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n selection.map(({ _defaultSortOrder, ...rest }) => rest)\n );\n }\n\n onSortFunction(event: SortEvent) {\n this.customSortFunction.emit(event);\n }\n\n onFilterGlobal(value: string) {\n this.primengTable.filterGlobal(value, 'contains');\n }\n\n removeSelected() {\n const indexes: number[] = this.primengTable.selection.map(\n (s: any) => s._defaultSortOrder\n );\n indexes.sort((a, b) => b - a);\n\n this.data = this.data.filter(\n (v: any) => !indexes.includes(v._defaultSortOrder)\n );\n\n this.selectedRows = [];\n }\n\n onClickActionBtn() {\n this.actionBtnClicked.emit();\n }\n\n onRowsPerPageChanged() {\n this.first = 0;\n this.primengTable.first = this.first;\n }\n}\n","<p-table\n #primengTable\n withUnsort\n [styleClass]=\"styleClass\"\n [value]=\"data\"\n [columns]=\"columns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [resizableColumns]=\"resizableColumns\"\n [reorderableColumns]=\"reorderableColumns\"\n [globalFilterFields]=\"globalFilterFields\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [lazy]=\"lazy\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n (sortFunction)=\"onSortFunction($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n <div class=\"cps-table-tbar-left\">\n <div>{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-table-tbar-global-filter\">\n <cps-input\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-table-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-remove-btn\">\n <cps-button\n label=\"Remove\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-table-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n color=\"prepared\"\n type=\"outlined\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th>\n <th style=\"width: 4rem\" *ngIf=\"selectable\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"headers.length > 0 && columns.length < 1\">\n <th *ngFor=\"let h of headers\">{{ h }}</th>\n </ng-container>\n </ng-container>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns=\"columns\"\n let-item\n let-rowIndex=\"rowIndex\">\n <tr\n [pReorderableRow]=\"rowIndex\"\n [ngClass]=\"{\n 'cps-table-row-selected': selectable && primengTable.isSelected(item)\n }\">\n <td *ngIf=\"reorderableRows\">\n <span pReorderableRowHandle>☰</span>\n </td>\n <td *ngIf=\"selectable\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n pTemplate=\"body\"\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: { $implicit: item, rowIndex: rowIndex }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <td *ngFor=\"let col of columns\">\n {{ rowData[col[colFieldName]] }}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"cps-table-empty-message-td\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n <div class=\"cps-table-paginator-itms-per-page\">\n <span class=\"cps-table-paginator-items-per-page-title\"\n >Items per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\">\n </cps-select>\n </div>\n </ng-template>\n</p-table>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { SortIcon, SortableColumn, Table } from 'primeng/table';\n\n@Directive({\n standalone: true,\n selector: '[cpsColSortable]'\n})\nexport class CpsTableColumnSortableDirective\n extends SortableColumn\n implements OnInit, OnDestroy\n{\n @Input('cpsColSortable') override field = '';\n sortIconRef: ComponentRef<SortIcon>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n public override dt: Table\n ) {\n super(dt);\n this.sortIconRef = this.viewContainerRef.createComponent(SortIcon);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.sortIconRef.setInput('field', this.field);\n this.elementRef.nativeElement.firstChild.after(\n this.sortIconRef.location.nativeElement\n );\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.sortIconRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { getCSSColor } from '../../utils/colors-utils';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-tag',\n templateUrl: './cps-tag.component.html',\n styleUrls: ['./cps-tag.component.scss']\n})\nexport class CpsTagComponent implements ControlValueAccessor, OnChanges {\n @Input() type: 'security' | 'classification' | 'custom' = 'custom'; // higher precedence over color\n @Input() label = '';\n @Input() color = '';\n @Input() disabled = false;\n @Input() selectable = false;\n @Input() set value(value: boolean) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): boolean {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<boolean>();\n\n classesList: string[] = [];\n tagColor = '';\n\n private _value = false;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnChanges(): void {\n this.setClasses();\n }\n\n setClasses(): void {\n this.classesList = ['cps-tag'];\n\n if (this.selectable) {\n this.classesList.push('cps-tag--selectable');\n }\n if (this.disabled) {\n this.classesList.push('cps-tag--disabled');\n }\n switch (this.type) {\n case 'security': {\n this.classesList.push('cps-tag--security');\n break;\n }\n case 'classification': {\n this.classesList.push('cps-tag--classification');\n break;\n }\n default:\n if (this.color) this.tagColor = getCSSColor(this.color);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: boolean) {\n this.value = value;\n }\n\n toggleSelected() {\n if (this.disabled || !this.selectable) return;\n this._updateValue(!this.value);\n }\n\n private _updateValue(value: boolean) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n}\n","<div\n [ngClass]=\"classesList\"\n [class.unselected]=\"!value && selectable\"\n [ngStyle]=\"{ 'border-color': tagColor || 'none' }\"\n (click)=\"toggleSelected()\">\n <p>{{ label }}</p>\n</div>\n","import {\n animate,\n AnimationEvent,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\nimport { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n PLATFORM_ID,\n Renderer2,\n ViewEncapsulation,\n ViewRef\n} from '@angular/core';\nimport { OverlayService, PrimeNGConfig, SharedModule } from 'primeng/api';\nimport { ConnectedOverlayScrollHandler, DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { Subscription } from 'rxjs';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\n\ntype Nullable<T = void> = T | null | undefined;\ntype VoidListener = () => void | null | undefined;\n\nexport type CpsMenuItem = {\n title: string;\n action?: (event?: any) => void;\n icon?: string;\n desc?: string;\n disabled?: boolean;\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, SharedModule, CpsIconComponent],\n selector: 'cps-menu',\n templateUrl: './cps-menu.component.html',\n styleUrls: ['./cps-menu.component.scss'],\n animations: [\n trigger('animation', [\n state(\n 'void',\n style({\n transform: 'scaleY(0.8)',\n opacity: 0\n })\n ),\n state(\n 'close',\n style({\n opacity: 0\n })\n ),\n state(\n 'open',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('void => open', animate('{{showTransitionParams}}')),\n transition('open => close', animate('{{hideTransitionParams}}'))\n ])\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class CpsMenuComponent implements OnDestroy {\n @Input() header = '';\n @Input() items: CpsMenuItem[] = [];\n @Input() withArrow = true;\n @Input() compressed = false; // prepared-colored, without header and items description\n @Input() focusOnShow = true;\n\n @Output() menuShown = new EventEmitter();\n @Output() menuHidden = new EventEmitter();\n\n withIcons = true;\n autoZIndex = true;\n baseZIndex = 0;\n showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n hideTransitionOptions = '.1s linear';\n dismissable = true;\n container: Nullable<HTMLDivElement>;\n overlayVisible = false;\n render = false;\n isOverlayAnimationInProgress = false;\n selfClick = false;\n target: any;\n scrollHandler: Nullable<ConnectedOverlayScrollHandler>;\n\n documentResizeListener!: VoidListener | null;\n overlayEventListener: Nullable<(event?: any) => void>;\n documentClickListener!: VoidListener | null;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n destroyCallback: Nullable<Function>;\n overlaySubscription: Subscription | undefined;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: any,\n public el: ElementRef,\n public renderer: Renderer2,\n public cd: ChangeDetectorRef,\n private zone: NgZone,\n public config: PrimeNGConfig,\n public overlayService: OverlayService\n ) {}\n\n toggle(event: any, target?: any) {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n if (this.overlayVisible) {\n if (this.hasTargetChanged(event, target)) {\n this.destroyCallback = () => {\n this.show(null, target || event.currentTarget || event.target);\n };\n }\n\n this.hide();\n } else {\n this.show(event, target);\n }\n }\n\n show(event: any, target?: any) {\n target && event && event.stopPropagation();\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n this.target = target || event.currentTarget || event.target;\n this.overlayVisible = true;\n this.render = true;\n this.cd.markForCheck();\n }\n\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n onItemClick(event: any, item: CpsMenuItem) {\n if (item.disabled) return;\n if (item.action) {\n item.action({\n originalEvent: event,\n item\n });\n }\n this.hide();\n }\n\n bindDocumentClickListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentClickListener && this.dismissable) {\n this.zone.runOutsideAngular(() => {\n const documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';\n const documentTarget: any = this.el\n ? this.el.nativeElement.ownerDocument\n : this.document;\n\n this.documentClickListener = this.renderer.listen(\n documentTarget,\n documentEvent,\n (event) => {\n if (\n !this.container?.contains(event.target) &&\n this.target !== event.target &&\n !this.target.contains(event.target) &&\n !this.selfClick\n ) {\n this.zone.run(() => {\n this.hide();\n });\n }\n\n this.selfClick = false;\n this.cd.markForCheck();\n }\n );\n });\n }\n }\n }\n\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n this.selfClick = false;\n }\n }\n\n onOverlayClick(event: MouseEvent) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n\n this.selfClick = true;\n }\n\n onContentClick() {\n this.selfClick = true;\n }\n\n hasTargetChanged(event: any, target: any) {\n return (\n this.target != null &&\n this.target !== (target || event.currentTarget || event.target)\n );\n }\n\n appendContainer() {\n this.renderer.appendChild(this.document.body, this.container);\n }\n\n restoreAppend() {\n if (this.container) {\n this.renderer.appendChild(this.el.nativeElement, this.container);\n }\n }\n\n align() {\n if (this.autoZIndex) {\n ZIndexUtils.set(\n 'overlay',\n this.container,\n this.baseZIndex + this.config.zIndex.overlay\n );\n }\n\n DomHandler.absolutePosition(this.container, this.target);\n\n const containerOffset = DomHandler.getOffset(this.container);\n const targetOffset = DomHandler.getOffset(this.target);\n\n if (this.withArrow) {\n const borderRadius =\n this.document.defaultView\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n ?.getComputedStyle(this.container!)\n ?.getPropertyValue('border-radius') || '0';\n\n let arrowLeft = 0;\n\n if (containerOffset.left < targetOffset.left) {\n arrowLeft =\n 20 +\n targetOffset.left -\n containerOffset.left -\n parseFloat(borderRadius) * 2;\n } else {\n const containerWidth = this.container?.offsetWidth || 0;\n const targetWidth = this.target?.offsetWidth || 0;\n arrowLeft = Math.min(targetWidth / 2, containerWidth / 2);\n }\n arrowLeft = Math.max(arrowLeft, 12);\n this.container?.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n }\n\n if (containerOffset.top < targetOffset.top) {\n DomHandler.addClass(this.container, 'cps-menu-container-flipped');\n }\n }\n\n onAnimationStart(event: AnimationEvent) {\n if (event.toState === 'open') {\n if (this.compressed) this.withIcons = this.items.some((itm) => itm.icon);\n this.container = event.element;\n this.appendContainer();\n this.align();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n\n if (this.focusOnShow) {\n this.focus();\n }\n\n this.overlayEventListener = (e) => {\n if (this.container && this.container.contains(e.target)) {\n this.selfClick = true;\n }\n };\n\n this.overlaySubscription = this.overlayService.clickObservable.subscribe(\n this.overlayEventListener\n );\n this.menuShown.emit(null);\n }\n\n this.isOverlayAnimationInProgress = true;\n }\n\n onAnimationEnd(event: AnimationEvent) {\n switch (event.toState) {\n case 'void':\n if (this.destroyCallback) {\n this.destroyCallback();\n this.destroyCallback = null;\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n break;\n\n case 'close':\n if (this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n\n this.onContainerDestroy();\n this.menuHidden.emit({});\n this.render = false;\n break;\n }\n\n this.isOverlayAnimationInProgress = false;\n }\n\n focus() {\n const focusable = DomHandler.findSingle(this.container, '[autofocus]');\n if (focusable) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable.focus(), 5);\n });\n }\n }\n\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n }\n\n bindDocumentResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentResizeListener) {\n const window = this.document.defaultView as Window;\n this.documentResizeListener = this.renderer.listen(\n window,\n 'resize',\n this.onWindowResize.bind(this)\n );\n }\n }\n }\n\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n\n bindScrollListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(\n this.target,\n () => {\n if (this.overlayVisible) {\n this.hide();\n }\n }\n );\n }\n\n this.scrollHandler.bindScrollListener();\n }\n }\n\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n onContainerDestroy() {\n if (!(this.cd as ViewRef).destroyed) {\n this.target = null;\n }\n\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n }\n\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n\n if (!(this.cd as ViewRef).destroyed) {\n this.target = null;\n }\n\n this.destroyCallback = null;\n if (this.container) {\n this.restoreAppend();\n this.onContainerDestroy();\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n}\n","<div\n *ngIf=\"render\"\n class=\"cps-menu-container\"\n [ngClass]=\"{ 'cps-menu-no-arrow': !withArrow }\"\n (click)=\"onOverlayClick($event)\"\n [@animation]=\"{\n value: overlayVisible ? 'open' : 'close',\n params: {\n showTransitionParams: showTransitionOptions,\n hideTransitionParams: hideTransitionOptions\n }\n }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\">\n <div (click)=\"onContentClick()\" (mousedown)=\"onContentClick()\">\n <ng-container *ngIf=\"items.length < 1\">\n <ng-content></ng-content>\n </ng-container>\n <div\n *ngIf=\"items.length > 0\"\n class=\"cps-menu-content\"\n [ngClass]=\"{ 'cps-menu-content-compressed': compressed }\">\n <div *ngIf=\"header && !compressed\" class=\"cps-menu-header\">\n {{ header }}\n </div>\n <div\n *ngFor=\"let item of items; let i = index\"\n (click)=\"onItemClick($event, item)\"\n [ngClass]=\"{\n 'cps-menu-item-disabled': item.disabled,\n 'cps-menu-item-first': i === 0,\n 'cps-menu-item-compressed': compressed\n }\"\n class=\"cps-menu-item\">\n <div class=\"cps-menu-item-icon\" *ngIf=\"withIcons\">\n <cps-icon\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.disabled ? 'text-light' : 'text-dark'\"\n [size]=\"compressed ? 'small' : 'normal'\"></cps-icon>\n </div>\n <div class=\"cps-menu-item-content\">\n <span class=\"cps-menu-item-content-title\">{{ item.title }}</span>\n <span\n *ngIf=\"item.desc && !compressed\"\n class=\"cps-menu-item-content-desc\"\n >{{ item.desc }}</span\n >\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { CpsSelectComponent } from '../cps-select/cps-select.component';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n@Component({\n selector: 'cps-paginator',\n standalone: true,\n imports: [CommonModule, PaginatorModule, CpsSelectComponent],\n templateUrl: './cps-paginator.component.html',\n styleUrls: ['./cps-paginator.component.scss']\n})\nexport class CpsPaginatorComponent implements OnInit {\n @Input() first = 0;\n @Input() rows = 0;\n @Input() totalRecords = 0;\n @Input() rowsPerPageOptions: number[] = [];\n @Input() alwaysShow = true;\n @Input() backgroundColor = 'transparent';\n\n @Output() pageChanged = new EventEmitter<any>();\n\n rowOptions: { label: string; value: number }[] = [];\n\n ngOnInit(): void {\n this.backgroundColor = getCSSColor(this.backgroundColor);\n if (this.rowsPerPageOptions.length < 1)\n this.rowsPerPageOptions = [5, 10, 25, 50];\n\n if (!this.rows) this.rows = this.rowsPerPageOptions[0];\n else {\n if (!this.rowsPerPageOptions.includes(this.rows)) {\n throw new Error('rowsPerPageOptions must include rows');\n }\n }\n\n this.rowOptions = this.rowsPerPageOptions.map((v) => ({\n label: '' + v,\n value: v\n }));\n }\n\n onPageChange(event: any) {\n this.first = event.first;\n this.rows = event.rows;\n this.pageChanged.emit(event);\n }\n}\n","<p-paginator\n (onPageChange)=\"onPageChange($event)\"\n [first]=\"first\"\n [rows]=\"rows\"\n [style]=\"{ background: backgroundColor }\"\n [totalRecords]=\"totalRecords\"\n [showFirstLastIcon]=\"true\"\n [showCurrentPageReport]=\"true\"\n [alwaysShow]=\"alwaysShow\"\n [templateLeft]=\"itemsPerPageTemplate\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\">\n</p-paginator>\n\n<ng-template #itemsPerPageTemplate>\n <div class=\"cps-paginator-itms-per-page\">\n <span class=\"cps-paginator-items-per-page-title\">Items per page: </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"first = 0\"\n [returnObject]=\"false\"></cps-select>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-loader',\n templateUrl: './cps-loader.component.html',\n styleUrls: ['./cps-loader.component.scss']\n})\nexport class CpsLoaderComponent implements OnInit {\n @Input() fullScreen = true;\n @Input() opacity: number | string = 0.1;\n @Input() labelColor = 'depth';\n @Input() showLabel = true;\n\n backgroundColor = 'rgba(0, 0, 0, 0.1)';\n\n ngOnInit(): void {\n this.backgroundColor = `rgba(0, 0, 0, ${this.opacity})`;\n this.labelColor = getCSSColor(this.labelColor);\n }\n}\n","<div\n class=\"cps-loader-overlay\"\n [ngStyle]=\"{\n 'background-color': backgroundColor,\n position: fullScreen ? 'fixed' : 'relative'\n }\">\n <div class=\"cps-loader-overlay-content\">\n <label\n *ngIf=\"showLabel\"\n class=\"cps-loader-overlay-content-text\"\n [style.color]=\"labelColor\"\n >Loading...\n </label>\n <div class=\"cps-loader-overlay-content-circles\">\n <div class=\"cps-loader-overlay-content-circles-circle cps-sp1\">\n <div class=\"cps-loader-overlay-content-circles-circle cps-sp2\">\n <div class=\"cps-loader-overlay-content-circles-circle cps-sp3\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CpsIconComponent, IconType } from '../cps-icon/cps-icon.component';\nimport { getCSSColor } from '../../utils/colors-utils';\nimport { convertSize } from '../../utils/internal/size-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsIconComponent],\n selector: 'cps-expansion-panel',\n templateUrl: './cps-expansion-panel.component.html',\n styleUrls: ['./cps-expansion-panel.component.scss']\n})\nexport class CpsExpansionPanelComponent implements OnInit {\n @Input() headerTitle = '';\n @Input() backgroundColor = 'transparent';\n @Input() showChevron = true;\n @Input() isExpanded = false;\n @Input() disabled = false;\n @Input() bordered = true;\n @Input() borderRadius: number | string = '4px';\n @Input() width: number | string = '100%';\n @Input() prefixIcon: IconType = '';\n\n @Output() afterCollapse: EventEmitter<void> = new EventEmitter<void>();\n @Output() afterExpand: EventEmitter<void> = new EventEmitter<void>();\n\n ngOnInit(): void {\n this.backgroundColor = getCSSColor(this.backgroundColor);\n this.borderRadius = convertSize(this.borderRadius);\n this.width = convertSize(this.width);\n }\n\n toggleExpansion(): void {\n if (!this.disabled) {\n this.isExpanded = !this.isExpanded;\n if (this.isExpanded) {\n this.afterExpand.emit();\n }\n if (!this.isExpanded) {\n this.afterCollapse.emit();\n }\n }\n }\n}\n","<div\n class=\"cps-expansion-panel\"\n [class.expanded]=\"isExpanded\"\n [class.bordered]=\"bordered\"\n [ngStyle]=\"{\n 'background-color': backgroundColor,\n 'border-radius': borderRadius,\n width: width\n }\">\n <div\n class=\"cps-expansion-panel-header\"\n [ngClass]=\"{ disabled: disabled }\"\n [style.cursor]=\"disabled ? 'default' : 'pointer'\"\n (click)=\"toggleExpansion()\">\n <span class=\"cps-expansion-panel-prefix-icon\" *ngIf=\"prefixIcon\">\n <cps-icon\n [icon]=\"prefixIcon\"\n size=\"small\"\n [color]=\"disabled ? 'text-mild' : 'text-dark'\">\n </cps-icon>\n </span>\n <div class=\"cps-expansion-panel-title\">{{ headerTitle }}</div>\n <span class=\"cps-expansion-panel-chevron\" *ngIf=\"showChevron && !disabled\">\n <cps-icon icon=\"chevron-down\" size=\"small\" color=\"text-dark\"> </cps-icon>\n </span>\n </div>\n <div class=\"cps-expansion-panel-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { CalendarModule } from 'primeng/calendar';\nimport { CpsInputComponent } from '../cps-input/cps-input.component';\nimport { Subscription } from 'rxjs';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { hasSpaceBelow } from '../../utils/internal/position-utils';\n\n@Component({\n standalone: true,\n imports: [\n CpsInputComponent,\n CalendarModule,\n CommonModule,\n FormsModule,\n ClickOutsideDirective\n ],\n selector: 'cps-datepicker',\n templateUrl: './cps-datepicker.component.html',\n styleUrls: ['./cps-datepicker.component.scss']\n})\nexport class CpsDatepickerComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() label = '';\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() hint = '';\n @Input() clearable = true;\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() showTodayButton = true;\n @Input() openOnInputFocus = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input()\n minDate!: Date;\n\n @Input()\n maxDate!: Date;\n\n @Input() set value(value: Date | null) {\n this._value = value;\n this.stringDate = this._dateToString(value);\n this.onChange(value);\n }\n\n get value(): Date | null {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<Date | null>();\n\n @ViewChild('datepickerContainer')\n datepickerContainer!: ElementRef;\n\n stringDate = '';\n isOpened = false;\n topPos = '57px';\n error = '';\n cvtWidth = '';\n\n private _statusChangesSubscription: Subscription = new Subscription();\n private _value!: Date | null;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n if (!this.label) this.topPos = '37px';\n\n this.cvtWidth = convertSize(this.width);\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n onInputValueChanged(val: string) {\n this.stringDate = val;\n if (!val) {\n this._updateValue(null);\n return;\n }\n const dt = this._stringToDate(val);\n if (dt) this._updateValue(dt);\n }\n\n writeValue(value: Date | null) {\n this.value = value;\n }\n\n private _updateValue(value: Date | null) {\n if (this.value === value) return;\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n private _updateValueFromInputString() {\n if (!this.stringDate) {\n this._updateValue(null);\n } else {\n this._updateValue(this._stringToDate(this.stringDate));\n }\n }\n\n private _checkDateFormat(dateString: string): boolean {\n if (!/^\\d\\d\\/\\d\\d\\/\\d\\d\\d\\d$/.test(dateString)) {\n return false;\n }\n const parts = dateString.split('/').map((p) => parseInt(p, 10));\n parts[0] -= 1;\n const d = new Date(parts[2], parts[0], parts[1]);\n return (\n d.getMonth() === parts[0] &&\n d.getDate() === parts[1] &&\n d.getFullYear() === parts[2]\n );\n }\n\n private _checkDateInRange(date: Date, minDate: Date, maxDate: Date): boolean {\n if (!minDate && !maxDate) return true;\n if (minDate && maxDate) {\n return (\n date.getTime() >= minDate.getTime() &&\n date.getTime() <= maxDate.getTime()\n );\n }\n if (minDate) {\n return date.getTime() >= minDate.getTime();\n }\n return date.getTime() <= maxDate.getTime();\n }\n\n private _dateToString(dateVal: Date | null): string {\n if (!dateVal) return '';\n let month = '' + (dateVal.getMonth() + 1);\n if (month.length < 2) month = '0' + month;\n let day = '' + dateVal.getDate();\n if (day.length < 2) day = '0' + day;\n const year = dateVal.getFullYear();\n return `${month}/${day}/${year}`;\n }\n\n private _stringToDate(dateString: string): Date | null {\n if (!this._checkDateFormat(dateString)) return null;\n const [month, day, year] = dateString.split('/');\n const dt = new Date(`${year}-${month}-${day}`);\n const inRange = this._checkDateInRange(dt, this.minDate, this.maxDate);\n return inRange ? dt : null;\n }\n\n private _checkErrors() {\n if (this.stringDate && !this._stringToDate(this.stringDate)) {\n this.error = 'Date is invalid';\n return;\n }\n\n const errors = this._control?.errors;\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this.error = message || 'Unknown error';\n }\n\n onSelectCalendarDate(dateVal: Date) {\n this.toggleCalendar(false);\n this._dateToString(dateVal);\n }\n\n onInputBlur() {\n if (this.isOpened) return;\n this._control?.control?.markAsTouched();\n this._updateValueFromInputString();\n this._checkErrors();\n }\n\n onClickCalendarIcon() {\n if (this.disabled) return;\n if (this.isOpened) this._updateValueFromInputString();\n this.toggleCalendar();\n }\n\n onClickOutside() {\n if (this.disabled || !this.isOpened) return;\n this._updateValueFromInputString();\n this.toggleCalendar(false);\n }\n\n onInputFocus() {\n if (this.openOnInputFocus) this.toggleCalendar(true);\n }\n\n toggleCalendar(show?: boolean) {\n if (this.disabled || this.isOpened === show) return;\n\n const el = this.datepickerContainer?.nativeElement;\n if (!el) return;\n\n if (typeof show === 'boolean') {\n if (show) el.classList.add('active');\n else el.classList.remove('active');\n } else el.classList.toggle('active');\n\n this.isOpened = el.classList.contains('active');\n\n el.classList.remove('top-open');\n if (\n this.isOpened &&\n !hasSpaceBelow(this.datepickerContainer, '.cps-datepicker-calendar')\n ) {\n el.classList.add('top-open');\n }\n\n if (!this.isOpened) {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n }\n }\n}\n","<div\n class=\"cps-datepicker\"\n #datepickerContainer\n [ngStyle]=\"{ width: cvtWidth }\"\n [class.focused]=\"isOpened\"\n (clickOutside)=\"onClickOutside()\"\n [skipTargets]=\"['label-text', 'error-text', 'hint-text']\">\n <cps-input\n [disabled]=\"disabled\"\n [value]=\"stringDate\"\n [label]=\"label\"\n prefixIcon=\"datepicker\"\n [placeholder]=\"placeholder\"\n (prefixIconClicked)=\"onClickCalendarIcon()\"\n [prefixIconClickable]=\"true\"\n (focused)=\"onInputFocus()\"\n (valueChanged)=\"onInputValueChanged($event)\"\n [clearable]=\"clearable\"\n (blurred)=\"onInputBlur()\"\n [width]=\"width\"\n [hint]=\"hint\"\n [hideDetails]=\"hideDetails\"\n [infoTooltip]=\"infoTooltip\"\n [infoTooltipClass]=\"infoTooltipClass\"\n [infoTooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [infoTooltipPersistent]=\"infoTooltipPersistent\"\n [persistentClear]=\"persistentClear\"\n [error]=\"error\"></cps-input>\n <div class=\"cps-datepicker-calendar\" [style.top]=\"topPos\">\n <p-calendar\n [(ngModel)]=\"value\"\n [showIcon]=\"true\"\n [showButtonBar]=\"showTodayButton\"\n [inline]=\"true\"\n (onSelect)=\"onSelectCalendarDate($event)\"\n [showOtherMonths]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\">\n </p-calendar>\n </div>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\n\n@Component({\n standalone: true,\n selector: 'cps-textarea',\n imports: [CommonModule, CpsIconComponent, CpsInfoCircleComponent],\n templateUrl: './cps-textarea.component.html',\n styleUrls: ['./cps-textarea.component.scss']\n})\nexport class CpsTextareaComponent implements OnInit, OnDestroy {\n @Input() label = '';\n @Input() placeholder = 'Please enter';\n @Input() rows = 5;\n @Input() cols = 20;\n @Input() autofocus = false;\n @Input() hint = '';\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() clearable = false;\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() error = '';\n @Input() resizable: 'vertical' | 'none' = 'vertical';\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set value(value: string) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): string {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<string>();\n @Output() focused = new EventEmitter();\n @Output() prefixIconClicked = new EventEmitter();\n @Output() blurred = new EventEmitter();\n\n private _statusChangesSubscription: Subscription = new Subscription();\n private _value = '';\n\n cvtWidth = '';\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private _elementRef: ElementRef<HTMLElement>\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.cvtWidth = convertSize(this.width);\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n private _checkErrors() {\n if (!this._control) return;\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n if ('minlength' in errors) {\n // eslint-disable-next-line dot-notation\n this.error = `Field must contain at least ${errors['minlength'].requiredLength} characters`;\n return;\n }\n\n if ('maxlength' in errors) {\n // eslint-disable-next-line dot-notation\n this.error = `Field must contain ${errors['maxlength'].requiredLength} characters maximum`;\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this.error = message || 'Unknown error';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: string) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n const value = event?.target?.value || '';\n this._updateValue(value);\n }\n\n private _updateValue(value: string) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n clear() {\n if (this.value !== '') this._updateValue('');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n this.blurred.emit();\n }\n\n onFocus() {\n this.focused.emit();\n }\n\n focus() {\n this._elementRef?.nativeElement?.querySelector('textarea')?.focus();\n }\n}\n","<div class=\"cps-textarea-container\" [ngStyle]=\"{ width: cvtWidth }\">\n <div\n class=\"cps-textarea-label\"\n [ngClass]=\"{ 'cps-textarea-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-textarea-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n\n <div\n class=\"cps-textarea-wrap\"\n [ngClass]=\"{\n 'cps-textarea-wrap-error': error,\n clearable: clearable,\n 'persistent-clear': persistentClear\n }\">\n <textarea\n spellcheck=\"false\"\n [cols]=\"cols\"\n [rows]=\"rows\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [ngStyle]=\"{\n width: cvtWidth,\n resize: resizable\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n (input)=\"updateValueEvent($event)\"></textarea>\n\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear || (!persistentClear && value) ? 'visible' : 'hidden'\n \"\n class=\"clear-btn\">\n <cps-icon icon=\"delete\" size=\"small\" (click)=\"clear()\"></cps-icon>\n </span>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-textarea-hint-text\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-textarea-error-text\">\n {{ error }}\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { isEqual } from 'lodash-es';\nimport { CheckOptionSelectedPipe } from '../../pipes/internal/check-option-selected.pipe';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport {\n CpsTooltipDirective,\n TooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\nexport type BtnToggleOption = {\n value: any;\n label: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CheckOptionSelectedPipe,\n CpsInfoCircleComponent,\n CpsTooltipDirective\n ],\n providers: [CheckOptionSelectedPipe],\n selector: 'cps-button-toggle',\n templateUrl: './cps-button-toggle.component.html',\n styleUrls: ['./cps-button-toggle.component.scss']\n})\nexport class CpsButtonToggleComponent implements ControlValueAccessor, OnInit {\n @Input() label = '';\n @Input() options = [] as BtnToggleOption[];\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() mandatory = true; // at least one of the options is mandatory\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input('value') _value: any = undefined;\n\n set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<any>();\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n if (this.multiple && !this._value) {\n this._value = [];\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n if (this.disabled) return;\n const check = event?.target?.checked || false;\n\n if (this.mandatory && this.multiple && !check && this.value.length < 2) {\n event.target.checked = true;\n return;\n }\n\n const val = event?.target?.value || undefined;\n\n if (this.multiple) {\n let res = [] as any;\n if (!check) {\n res = this.value.filter((v: any) => !isEqual(v, val));\n } else {\n this.options.forEach((o) => {\n if (\n this.value.some((v: any) => isEqual(v, o.value)) ||\n isEqual(val, o.value)\n ) {\n res.push(o.value);\n }\n });\n }\n this._updateValue(res);\n } else {\n if (this.mandatory) {\n this._updateValue(val); // radio\n } else {\n this._updateValue(check ? val : undefined);\n }\n }\n }\n\n private _updateValue(value: any) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n}\n","<div class=\"cps-btn-toggle\">\n <div class=\"cps-btn-toggle-label\" *ngIf=\"label\">\n <span>{{ label }}</span>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-btn-toggle-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div class=\"cps-btn-toggle-content\">\n <ng-container *ngFor=\"let option of options\">\n <ng-container\n *ngTemplateOutlet=\"\n optionContainerTemplate;\n context: {\n option: option,\n tooltip: option.tooltip\n }\n \"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #optionContainerTemplate let-option=\"option\" let-tooltip=\"tooltip\">\n <label\n class=\"cps-btn-toggle-content-option\"\n *ngIf=\"tooltip\"\n [cpsTooltip]=\"option.tooltip\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n </label>\n <label class=\"cps-btn-toggle-content-option\" *ngIf=\"!tooltip\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n </label>\n</ng-template>\n\n<ng-template #optionRadioTemplate let-option=\"option\">\n <input\n class=\"cps-btn-toggle-content-option-input\"\n [type]=\"!multiple && mandatory ? 'radio' : 'checkbox'\"\n [disabled]=\"option.disabled || disabled\"\n [value]=\"option.value\"\n [checked]=\"\n option.value | checkOptionSelected : value : multiple : true : ''\n \"\n (change)=\"updateValueEvent($event)\" />\n <span class=\"cps-btn-toggle-content-option-content\">\n <span>{{ option.label }}</span>\n </span>\n</ng-template>\n","/*\n * Public API Surface of cps-ui-kit\n */\n\nexport * from './lib/components/cps-icon/cps-icon.component';\nexport * from './lib/components/cps-input/cps-input.component';\nexport * from './lib/components/cps-select/cps-select.component';\nexport * from './lib/components/cps-tree-select/cps-tree-select.component';\nexport * from './lib/components/cps-autocomplete/cps-autocomplete.component';\nexport * from './lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component';\nexport * from './lib/components/cps-info-circle/cps-info-circle.component';\nexport * from './lib/components/cps-button/cps-button.component';\nexport * from './lib/components/cps-checkbox/cps-checkbox.component';\nexport * from './lib/components/cps-radio/cps-radio.component';\nexport * from './lib/components/cps-table/cps-table.component';\nexport * from './lib/components/cps-table/cps-table-column-sortable.directive';\nexport * from './lib/components/cps-tag/cps-tag.component';\nexport * from './lib/components/cps-chip/cps-chip.component';\nexport * from './lib/components/cps-menu/cps-menu.component';\nexport * from './lib/components/cps-paginator/cps-paginator.component';\nexport * from './lib/components/cps-loader/cps-loader.component';\nexport * from './lib/components/cps-expansion-panel/cps-expansion-panel.component';\nexport * from './lib/components/cps-progress-circular/cps-progress-circular.component';\nexport * from './lib/components/cps-progress-linear/cps-progress-linear.component';\nexport * from './lib/components/cps-datepicker/cps-datepicker.component';\nexport * from './lib/components/cps-textarea/cps-textarea.component';\nexport * from './lib/components/cps-button-toggle/cps-button-toggle.component';\n\nexport * from './lib/directives/cps-tooltip.directive';\n\nexport * from './lib/utils/colors-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2.LabelByValuePipe","i4","i5","i2"],"mappings":"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"}
1
+ {"version":3,"file":"cps-ui-kit.mjs","sources":["../../../projects/cps-ui-kit/src/lib/utils/internal/size-utils.ts","../../../projects/cps-ui-kit/src/lib/utils/colors-utils.ts","../../../projects/cps-ui-kit/src/lib/components/cps-icon/cps-icon.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-icon/cps-icon.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-progress-linear/cps-progress-linear.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-progress-linear/cps-progress-linear.component.html","../../../projects/cps-ui-kit/src/lib/directives/cps-tooltip.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-info-circle/cps-info-circle.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-info-circle/cps-info-circle.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-input/cps-input.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-input/cps-input.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-chip/cps-chip.component.html","../../../projects/cps-ui-kit/src/lib/directives/internal/click-outside.directive.ts","../../../projects/cps-ui-kit/src/lib/pipes/internal/label-by-value.pipe.ts","../../../projects/cps-ui-kit/src/lib/pipes/internal/combine-labels.pipe.ts","../../../projects/cps-ui-kit/src/lib/pipes/internal/check-option-selected.pipe.ts","../../../projects/cps-ui-kit/src/lib/utils/internal/position-utils.ts","../../../projects/cps-ui-kit/src/lib/components/cps-select/cps-select.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-select/cps-select.component.html","../../../projects/cps-ui-kit/src/lib/base_components/cps-tree-dropdown-base.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-select/cps-tree-select.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-select/cps-tree-select.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-autocomplete/cps-autocomplete.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-autocomplete/cps-autocomplete.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-progress-circular/cps-progress-circular.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-progress-circular/cps-progress-circular.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-button/cps-button.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-button/cps-button.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-checkbox/cps-checkbox.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-checkbox/cps-checkbox.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-radio/cps-radio.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-radio/cps-radio.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/table-unsort.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/cps-table.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/cps-table.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/cps-table-column-sortable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tag/cps-tag.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tag/cps-tag.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-menu/cps-menu.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-menu/cps-menu.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-paginator/cps-paginator.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-paginator/cps-paginator.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-loader/cps-loader.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-loader/cps-loader.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-expansion-panel/cps-expansion-panel.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-expansion-panel/cps-expansion-panel.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-datepicker/cps-datepicker.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-datepicker/cps-datepicker.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-textarea/cps-textarea.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-textarea/cps-textarea.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-button-toggle/cps-button-toggle.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-button-toggle/cps-button-toggle.component.html","../../../projects/cps-ui-kit/src/public-api.ts","../../../projects/cps-ui-kit/src/cps-ui-kit.ts"],"sourcesContent":["export const convertSize = (size: number | string): string => {\n const res = String(size).trim();\n if (!res) {\n return '';\n }\n if (/^\\d+(\\.\\d+)?$/i.test(res)) {\n return res + 'px';\n }\n if (/^\\d+(\\.\\d+)?(px|rem|em|%)$/i.test(res)) {\n return res;\n }\n\n throw new Error(`Invalid size value: ${size}`);\n};\n\nexport const parseSize = (size: string): { value: number; unit: string } => {\n const match = size.match(/^(\\d+(?:\\.\\d+)?)(px|rem|em|%)$/);\n if (!match) throw new Error(`Invalid size value: ${size}`);\n const value = parseFloat(match[1]);\n const unit = match[2];\n return { value, unit };\n};\n","const isSameDomain = (styleSheet: any): boolean => {\n if (!styleSheet.href) {\n return true;\n }\n\n return styleSheet.href.indexOf(window.location.origin) === 0;\n};\n\nconst isStyleRule = (rule: any): boolean => rule.type === 1;\n\nconst isValidCSSColor = (val: string): boolean => {\n if (val === 'currentColor') return true;\n const element = document.createElement('div');\n element.style.backgroundColor = val;\n return element && element.style.backgroundColor !== '';\n};\n\nconst isDark = (color: string): boolean => {\n let r = 0;\n let g = 0;\n let b = 0;\n if (color.match(/^rgb/)) {\n const colorMatched = color.match(\n /^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/\n ) as any;\n r = colorMatched[1];\n g = colorMatched[2];\n b = colorMatched[3];\n } else {\n const colorNum = +(\n '0x' + color.slice(1).replace(color.length < 5 && (/./g as any), '$&$&')\n );\n\n r = colorNum >> 16;\n g = (colorNum >> 8) & 255;\n b = colorNum & 255;\n }\n\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n\n // Using the HSP value, determine whether the color is light or dark\n return hsp <= 127.5;\n};\n\nexport const getCpsColors = (): [string, string][] =>\n [...(document.styleSheets as any)].filter(isSameDomain).reduce(\n (finalArr, sheet) =>\n finalArr.concat(\n [...sheet.cssRules].filter(isStyleRule).reduce((propValArr, rule) => {\n const props = [...rule.style]\n .map((propName) => [\n propName.trim(),\n rule.style.getPropertyValue(propName).trim()\n ])\n .filter(([propName]) => propName.indexOf('--cps-color') === 0);\n\n return [...propValArr, ...props];\n }, [])\n ),\n []\n );\n\nexport const getCSSColor = (val: string): string => {\n if (!val) return '';\n return isValidCSSColor(val) ? val : `var(--cps-color-${val})`;\n};\n\nexport const getTextColor = (backgroundColor: string): string => {\n if (isDark(backgroundColor)) {\n return '#FFFFFF';\n } else {\n return '#000000';\n }\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges } from '@angular/core';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { getCSSColor } from '../../utils/colors-utils';\n\nexport const iconNames = [\n 'access',\n 'access-denied',\n 'access-menu',\n 'access-unlock',\n 'add',\n 'add-domain',\n 'avatar',\n 'avatar-top-menu',\n 'bell',\n 'book',\n 'bookmark',\n 'browse',\n 'burger-arrow',\n 'caret-down',\n 'change',\n 'checked',\n 'chevron-down',\n 'chevron-down-2',\n 'circle',\n 'cleansing',\n 'close-x',\n 'close-x-2',\n 'community',\n 'construction',\n 'controls',\n 'csv',\n 'cub',\n 'database',\n 'datepicker',\n 'delete',\n 'dislike',\n 'dots',\n 'download',\n 'dq',\n 'dropdown-menu',\n 'edit',\n 'expand',\n 'export',\n 'eye',\n 'filter',\n 'filter_2',\n 'follow',\n 'glossary',\n 'graph',\n 'grid',\n 'grid-view',\n 'health',\n 'heart',\n 'help-circle',\n 'home',\n 'info-circle',\n 'insight',\n 'issues',\n 'jpeg',\n 'kris',\n 'last-seen-product',\n 'like',\n 'line-vertical',\n 'lock',\n 'logout',\n 'menu-expand',\n 'menu-shrink',\n 'minus',\n 'move-grabber',\n 'multiple_users',\n 'open',\n 'path',\n 'pdf',\n 'plus',\n 'projects',\n 'question',\n 'questions',\n 'rectangle-rounded',\n 'refresh-browse',\n 'remove',\n 'right',\n 'schema_filter',\n 'search',\n 'settings',\n 'smart',\n 'sort-icon-asc',\n 'sort-icon-desc',\n 'star',\n 'stepper-completed',\n 'success',\n 'suggestion',\n 'survivorship',\n 'table-row-error',\n 'table-row-success',\n 'table-row-warning',\n 'toast-error',\n 'toast-info',\n 'toast-success',\n 'toast-warning',\n 'tools',\n 'user',\n 'users',\n 'vector',\n 'vector-down',\n 'vector-right',\n 'vector-up',\n 'wallet',\n 'warning',\n 'widget-button-icon',\n 'xls'\n];\n\nexport type IconType = (typeof iconNames)[number];\n\nexport type iconSizeType =\n | number\n | string\n | 'fill'\n | 'xsmall'\n | 'small'\n | 'normal'\n | 'large';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-icon',\n templateUrl: './cps-icon.component.html',\n styleUrls: ['./cps-icon.component.scss']\n})\nexport class CpsIconComponent implements OnChanges {\n @Input() icon: IconType = '';\n @Input() size: iconSizeType = 'small';\n\n @Input() color = 'currentColor';\n\n iconColor = 'currentColor';\n url = '../../../../assets/';\n cvtSize = '';\n\n classesList: string[] = ['cps-icon'];\n\n ngOnChanges(): void {\n this.iconColor = getCSSColor(this.color);\n this.setClasses();\n }\n\n setClasses(): void {\n switch (this.size) {\n case 'fill': {\n this.classesList.push('cps-icon--fill');\n break;\n }\n case 'xsmall': {\n this.classesList.push('cps-icon--xsmall');\n break;\n }\n case 'small': {\n this.classesList.push('cps-icon--small');\n break;\n }\n case 'normal': {\n this.classesList.push('cps-icon--normal');\n break;\n }\n case 'large': {\n this.classesList.push('cps-icon--large');\n break;\n }\n default:\n this.cvtSize = convertSize(this.size);\n break;\n }\n }\n}\n","<i\n *ngIf=\"icon\"\n [ngClass]=\"classesList\"\n [style.color]=\"iconColor\"\n [ngStyle]=\"{ width: cvtSize || 'none', height: cvtSize || 'none' }\">\n <svg>\n <use attr.xlink:href=\"{{ url }}icons.svg#{{ icon }}\"></use>\n </svg>\n</i>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-progress-linear',\n templateUrl: './cps-progress-linear.component.html',\n styleUrls: ['./cps-progress-linear.component.scss']\n})\nexport class CpsProgressLinearComponent implements OnInit {\n @Input() width: number | string = '100%';\n @Input() height: number | string = '0.5rem';\n @Input() color = 'calm';\n @Input() bgColor = 'white';\n @Input() opacity: number | string = 1;\n @Input() radius: number | string = 0;\n\n ngOnInit(): void {\n this.width = convertSize(this.width);\n this.height = convertSize(this.height);\n this.radius = convertSize(this.radius);\n\n this.color = getCSSColor(this.color);\n this.bgColor = getCSSColor(this.bgColor);\n }\n}\n","<div\n class=\"cps-progress-linear\"\n [ngStyle]=\"{\n 'max-width': width,\n height: height,\n 'border-radius': radius,\n background: bgColor\n }\">\n <div\n class=\"cps-progress-linear-line inc\"\n [style.background]=\"color\"\n [style.opacity]=\"opacity\"></div>\n <div\n class=\"cps-progress-linear-line dec\"\n [style.background]=\"color\"\n [style.opacity]=\"opacity\"></div>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy\n} from '@angular/core';\nimport { convertSize } from '../utils/internal/size-utils';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipOpenOn = 'hover' | 'click' | 'focus';\n\n@Directive({\n selector: '[cpsTooltip]',\n standalone: true\n})\nexport class CpsTooltipDirective implements OnDestroy {\n @Input('cpsTooltip') tooltip!: string;\n\n @Input() tooltipOpenDelay: string | number = 300;\n @Input() tooltipCloseDelay: string | number = 300;\n @Input() tooltipOpenOn: TooltipOpenOn = 'hover';\n @Input() tooltipPosition: TooltipPosition = 'top';\n @Input() tooltipPersistent = false;\n @Input() tooltipDisabled = false;\n @Input() tooltipMaxWidth: number | string = '100%';\n @Input() tooltipContentClass = 'cps-tooltip-content';\n\n private _popup?: HTMLDivElement;\n private _showTimeout?: any;\n private _hideTimeout?: any;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private _elementRef: ElementRef<HTMLElement>) {}\n\n ngOnDestroy(): void {\n this._destroyTooltip();\n }\n\n private _createTooltip = () => {\n if (this._popup) return;\n\n if (this.tooltipDisabled) return;\n\n this._popup = document.createElement('div');\n this._constructElement(this._popup);\n\n if (this.tooltipPersistent)\n this._popup.addEventListener('click', this._destroyTooltip);\n\n window.addEventListener('scroll', this._destroyTooltip, true);\n };\n\n private _destroyTooltip = (event: any = undefined) => {\n const removeFromDOM = () => {\n this._popup?.remove();\n this._popup = undefined;\n };\n\n window.removeEventListener('scroll', this._destroyTooltip, true);\n if (!this._popup) return;\n\n this._popup.removeEventListener('click', this._destroyTooltip);\n\n const noAnimation = ['scroll', 'resize'].includes(event?.type);\n\n if (noAnimation) {\n removeFromDOM();\n } else {\n const popup = this._popup as HTMLDivElement;\n requestAnimationFrame(function () {\n popup.style.opacity = '0';\n });\n\n setTimeout(() => {\n removeFromDOM();\n }, 200);\n }\n };\n\n private _constructElement(popup: HTMLDivElement) {\n const popupContent = document.createElement('div');\n popupContent.innerHTML = this.tooltip || 'Add your text to this tooltip';\n popupContent.classList.add(this.tooltipContentClass);\n popup.appendChild(popupContent);\n\n popup.classList.add('cps-tooltip');\n popup.style.maxWidth = convertSize(this.tooltipMaxWidth);\n\n document.body.appendChild(popup);\n requestAnimationFrame(function () {\n popup.style.opacity = '1';\n });\n\n const coords = this._getCoords();\n if (!coords) {\n this._destroyTooltip();\n throw new Error('Not enough space on the screen for the tooltip!');\n }\n\n popup.style.left = coords.left.toString() + 'px';\n popup.style.top = coords.top.toString() + 'px';\n }\n\n private _getCoords(): { left: number; top: number } | undefined {\n function isInsideScreen(coords: { left: number; top: number }): boolean {\n return (\n coords.top >= 0 &&\n coords.left >= 0 &&\n coords.left + popupRect.width <= window.innerWidth &&\n coords.top + popupRect.height <= window.innerHeight\n );\n }\n\n let positions = ['top', 'bottom', 'left', 'right'] as TooltipPosition[];\n positions = positions.filter((item) => item !== this.tooltipPosition);\n positions.unshift(this.tooltipPosition);\n\n const targetEl = this._elementRef.nativeElement;\n const targetElRect = targetEl.getBoundingClientRect();\n const popupRect = (this._popup as HTMLDivElement).getBoundingClientRect();\n\n for (const pos of positions) {\n const coords = this._getCoordsForPosition(\n pos as TooltipPosition,\n targetEl,\n targetElRect,\n popupRect\n );\n\n if (isInsideScreen(coords)) {\n return coords;\n }\n }\n\n return undefined;\n }\n\n private _getCoordsForPosition(\n position: TooltipPosition,\n targetEl: HTMLElement,\n targetElRect: DOMRect,\n popupRect: DOMRect\n ): {\n left: number;\n top: number;\n } {\n switch (position) {\n case 'bottom':\n return {\n left:\n targetElRect.left +\n window.scrollX +\n (targetEl.offsetWidth - popupRect.width) / 2,\n top: targetElRect.bottom + window.scrollY + 8\n };\n case 'left':\n return {\n left: targetElRect.left - window.scrollX - popupRect.width - 8,\n top:\n targetElRect.top +\n window.scrollY +\n (targetEl.offsetHeight - popupRect.height) / 2\n };\n case 'right':\n return {\n left: targetElRect.right + window.scrollX + 8,\n top:\n targetElRect.top +\n window.scrollY +\n (targetEl.offsetHeight - popupRect.height) / 2\n };\n default:\n return {\n left:\n targetElRect.left +\n window.scrollX +\n (targetEl.offsetWidth - popupRect.width) / 2,\n top: targetElRect.top + window.scrollY - popupRect.height - 8\n };\n }\n }\n\n @HostListener('mouseenter') onMouseEnter() {\n if (this.tooltipOpenOn === 'hover') {\n clearTimeout(this._hideTimeout);\n\n this._showTimeout = setTimeout(\n this._createTooltip,\n this.tooltipOpenDelay as number\n );\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n clearTimeout(this._showTimeout);\n\n if (!this.tooltipPersistent) {\n this._hideTimeout = setTimeout(\n this._destroyTooltip,\n this.tooltipCloseDelay as number\n );\n }\n }\n\n @HostListener('focus') onFocus() {\n if (this.tooltipOpenOn === 'focus') {\n clearTimeout(this._hideTimeout);\n\n this._showTimeout = setTimeout(\n this._createTooltip,\n this.tooltipOpenDelay as number\n );\n }\n }\n\n @HostListener('blur') onBlur() {\n clearTimeout(this._showTimeout);\n if (!this.tooltipPersistent && this.tooltipOpenOn === 'focus') {\n this._hideTimeout = setTimeout(\n this._destroyTooltip,\n this.tooltipCloseDelay as number\n );\n }\n }\n\n @HostListener('click') onClick() {\n if (this.tooltipOpenOn === 'click') {\n clearTimeout(this._hideTimeout);\n\n this._showTimeout = setTimeout(this._createTooltip, 0);\n }\n }\n\n @HostListener('document:click', ['$event.target'])\n onDocumentClick(target: any) {\n if (this.tooltipPersistent && this._popup) {\n if (!target?.isConnected) {\n return;\n }\n const clickedInside = this._elementRef?.nativeElement?.contains(target);\n if (!clickedInside) {\n this._destroyTooltip();\n }\n }\n }\n\n @HostListener('window:resize', ['$event']) onPageResize(event: Event) {\n if (this._popup) this._destroyTooltip(event);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CpsIconComponent, iconSizeType } from '../cps-icon/cps-icon.component';\nimport {\n CpsTooltipDirective,\n TooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\n@Component({\n selector: 'cps-info-circle',\n standalone: true,\n imports: [CpsIconComponent, CpsTooltipDirective],\n templateUrl: './cps-info-circle.component.html',\n styleUrls: ['./cps-info-circle.component.scss']\n})\nexport class CpsInfoCircleComponent {\n @Input() size: iconSizeType = 'small';\n @Input() tooltipText = '';\n @Input() tooltipPosition: TooltipPosition = 'top';\n @Input() tooltipContentClass = 'cps-tooltip-content';\n @Input() tooltipMaxWidth: number | string = '100%';\n @Input() tooltipPersistent = false;\n}\n","<cps-icon\n icon=\"info-circle\"\n [size]=\"size\"\n color=\"info\"\n [cpsTooltip]=\"tooltipText\"\n tooltipOpenDelay=\"0\"\n tooltipCloseDelay=\"100\"\n [tooltipPosition]=\"tooltipPosition\"\n [tooltipMaxWidth]=\"tooltipMaxWidth\"\n [tooltipPersistent]=\"tooltipPersistent\"\n [tooltipContentClass]=\"tooltipContentClass\">\n</cps-icon>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport {\n CpsIconComponent,\n IconType,\n iconSizeType\n} from '../cps-icon/cps-icon.component';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CpsIconComponent,\n CpsInfoCircleComponent,\n CpsProgressLinearComponent\n ],\n selector: 'cps-input',\n templateUrl: './cps-input.component.html',\n styleUrls: ['./cps-input.component.scss']\n})\nexport class CpsInputComponent\n implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy\n{\n @Input() label = '';\n @Input() hint = '';\n @Input() placeholder = 'Please enter';\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() type: 'text' | 'number' | 'password' = 'text';\n @Input() loading = false;\n @Input() clearable = false;\n @Input() prefixIcon: IconType = '';\n @Input() prefixIconClickable = false;\n @Input() prefixIconSize: iconSizeType = '18px';\n @Input() prefixText = '';\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() error = '';\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set value(value: string) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): string {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<string>();\n @Output() focused = new EventEmitter();\n @Output() prefixIconClicked = new EventEmitter();\n @Output() blurred = new EventEmitter();\n\n @ViewChild('prefixTextSpan') prefixTextSpan: ElementRef | undefined;\n\n currentType = '';\n prefixWidth = '';\n cvtWidth = '';\n\n private _statusChangesSubscription: Subscription = new Subscription();\n private _value = '';\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private _elementRef: ElementRef<HTMLElement>,\n private cdRef: ChangeDetectorRef\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.currentType = this.type;\n this.cvtWidth = convertSize(this.width);\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngAfterViewInit() {\n let w = 0;\n if (this.prefixText) {\n w = this.prefixTextSpan?.nativeElement?.offsetWidth + 22;\n }\n if (this.prefixIcon) {\n w += 38 - (this.prefixText ? 14 : 0);\n }\n this.prefixWidth = w > 0 ? `${w}px` : '';\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n private _checkErrors() {\n if (!this._control) return;\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n if ('minlength' in errors) {\n // eslint-disable-next-line dot-notation\n this.error = `Field must contain at least ${errors['minlength'].requiredLength} characters`;\n return;\n }\n\n if ('maxlength' in errors) {\n // eslint-disable-next-line dot-notation\n this.error = `Field must contain ${errors['maxlength'].requiredLength} characters maximum`;\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this.error = message || 'Unknown error';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: string) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n const value = event?.target?.value || '';\n this._updateValue(value);\n }\n\n private _updateValue(value: string) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n clear() {\n if (this.value !== '') this._updateValue('');\n }\n\n togglePassword() {\n this.currentType = this.currentType === 'password' ? 'text' : 'password';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n this.blurred.emit();\n }\n\n onClickPrefixIcon() {\n if (!this.prefixIconClickable) return;\n this.prefixIconClicked.emit();\n }\n\n onFocus() {\n this.focused.emit();\n }\n\n focus() {\n this._elementRef?.nativeElement?.querySelector('input')?.focus();\n }\n}\n","<div class=\"cps-input-container\" [ngStyle]=\"{ width: cvtWidth }\">\n <div\n class=\"cps-input-label\"\n [ngClass]=\"{ 'cps-input-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-input-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n\n <div\n class=\"cps-input-wrap\"\n [ngClass]=\"{\n password: type === 'password',\n 'cps-input-wrap-error': error,\n clearable: clearable,\n 'persistent-clear': persistentClear\n }\">\n <input\n spellcheck=\"false\"\n [type]=\"currentType\"\n [value]=\"value\"\n (input)=\"updateValueEvent($event)\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\" />\n\n <div class=\"cps-input-prefix\">\n <span *ngIf=\"prefixIcon\" class=\"cps-input-prefix-icon\">\n <cps-icon\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n [style.cursor]=\"\n prefixIconClickable && !disabled ? 'pointer' : 'default'\n \"\n (click)=\"onClickPrefixIcon()\">\n </cps-icon>\n </span>\n\n <span *ngIf=\"prefixText\" class=\"cps-input-prefix-text\" #prefixTextSpan>\n {{ prefixText }}\n </span>\n </div>\n\n <div class=\"cps-input-action-btns\" *ngIf=\"!disabled\">\n <span\n *ngIf=\"clearable\"\n [style.visibility]=\"\n persistentClear || (!persistentClear && value) ? 'visible' : 'hidden'\n \"\n class=\"clear-btn\">\n <cps-icon icon=\"delete\" size=\"small\" (click)=\"clear()\"></cps-icon>\n </span>\n\n <span\n *ngIf=\"type === 'password'\"\n class=\"password-show-btn\"\n [ngClass]=\"{ 'password-show-btn-active': currentType === 'text' }\">\n <cps-icon icon=\"eye\" size=\"18px\" (click)=\"togglePassword()\"></cps-icon>\n </span>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-input-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-input-hint-text\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-input-error-text\">\n {{ error }}\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output\n} from '@angular/core';\nimport { CpsIconComponent, IconType } from '../cps-icon/cps-icon.component';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsIconComponent],\n selector: 'cps-chip',\n templateUrl: './cps-chip.component.html',\n styleUrls: ['./cps-chip.component.scss']\n})\nexport class CpsChipComponent implements OnChanges {\n @Input() label = '';\n @Input() icon: IconType = '';\n @Input() iconPosition: 'before' | 'after' = 'before';\n @Input() closable = false;\n @Input() disabled = false;\n\n @Output() closed = new EventEmitter();\n\n classesList = ['cps-chip'];\n\n ngOnChanges() {\n this.setClasses();\n }\n\n setClasses() {\n if (this.disabled) this.classesList.push('cps-chip-disabled');\n\n if (this.icon && this.label) {\n switch (this.iconPosition) {\n case 'before': {\n this.classesList.push('cps-chip--icon-before');\n break;\n }\n case 'after': {\n this.classesList.push('cps-chip--icon-after');\n break;\n }\n }\n }\n }\n\n onCloseClick(event: any) {\n event.stopPropagation();\n this.closed.emit();\n }\n}\n","<div [ngClass]=\"classesList\">\n <cps-icon\n *ngIf=\"icon\"\n class=\"cps-chip-icon\"\n [icon]=\"icon\"\n color=\"text-darkest\"></cps-icon>\n <span class=\"cps-chip-label\">{{ label }}</span>\n <cps-icon\n *ngIf=\"closable\"\n class=\"cps-chip-close-icon\"\n icon=\"close-x\"\n size=\"xsmall\"\n color=\"text-darkest\"\n (click)=\"onCloseClick($event)\"></cps-icon>\n</div>\n","import {\n Directive,\n Output,\n EventEmitter,\n ElementRef,\n HostListener,\n Input\n} from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n @Input() skipTargets: string[] = [];\n @Output() clickOutside = new EventEmitter<void>();\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private elementRef: ElementRef) {}\n\n @HostListener('document:click', ['$event.target'])\n public onClick(target: any) {\n if (!this.elementRef?.nativeElement?.classList?.contains('focused')) return;\n\n for (const clss of this.skipTargets) {\n if (target?.classList?.contains(clss)) {\n this.clickOutside.emit();\n return;\n }\n }\n\n // if an element was detached from the dom, we are not clicking outside\n if (!target?.isConnected) {\n return;\n }\n const clickedInside = this.elementRef?.nativeElement?.contains(target);\n if (!clickedInside) {\n this.clickOutside.emit();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\n@Pipe({ standalone: true, name: 'labelByValue' })\nexport class LabelByValuePipe implements PipeTransform {\n transform(\n value: any,\n options: any[],\n valueKey: string,\n labelKey: string\n ): string {\n const option = options.find((opt) => isEqual(opt[valueKey], value));\n return option ? option[labelKey] : 'unknown';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\n@Pipe({ standalone: true, name: 'combineLabels' })\nexport class CombineLabelsPipe implements PipeTransform {\n transform(\n values: any[],\n options: any[],\n valueKey: string,\n labelKey: string,\n returnObject: boolean\n ): string {\n return values\n .map((v) => {\n if (returnObject) {\n return v[labelKey];\n } else {\n const option = options.find((opt) => isEqual(opt[valueKey], v));\n return option ? option[labelKey] : 'unknown';\n }\n })\n .join(', ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { find, isEqual } from 'lodash-es';\n\n@Pipe({ standalone: true, name: 'checkOptionSelected' })\nexport class CheckOptionSelectedPipe implements PipeTransform {\n transform(\n option: any,\n value: any,\n multiple: boolean,\n returnObject: boolean,\n optionValue: string\n ): boolean {\n function includes(array: any[], val: any): boolean {\n return array ? !!find(array, (item) => isEqual(item, val)) : false;\n }\n\n return multiple\n ? returnObject\n ? includes(value, option)\n : includes(value, option[optionValue])\n : returnObject\n ? isEqual(option, value)\n : isEqual(option[optionValue], value);\n }\n}\n","export const hasSpaceBelow = (box: any, optionsClass: string): boolean => {\n const containerRect = box?.nativeElement?.getBoundingClientRect();\n if (!containerRect) return true;\n\n const optionsRect = box?.nativeElement\n ?.querySelector(optionsClass)\n ?.getBoundingClientRect();\n\n if (!optionsRect) return true;\n\n return window.innerHeight - containerRect.bottom >= optionsRect.height;\n};\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport {\n CpsIconComponent,\n iconSizeType,\n IconType\n} from '../cps-icon/cps-icon.component';\nimport { CpsChipComponent } from '../cps-chip/cps-chip.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { LabelByValuePipe } from '../../pipes/internal/label-by-value.pipe';\nimport { CombineLabelsPipe } from '../../pipes/internal/combine-labels.pipe';\nimport { CheckOptionSelectedPipe } from '../../pipes/internal/check-option-selected.pipe';\nimport { find, isEqual } from 'lodash-es';\nimport {\n VirtualScroller,\n VirtualScrollerModule\n} from 'primeng/virtualscroller';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { hasSpaceBelow } from '../../utils/internal/position-utils';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ClickOutsideDirective,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n LabelByValuePipe,\n CombineLabelsPipe,\n CheckOptionSelectedPipe,\n VirtualScrollerModule\n ],\n providers: [LabelByValuePipe, CombineLabelsPipe, CheckOptionSelectedPipe],\n selector: 'cps-select',\n templateUrl: './cps-select.component.html',\n styleUrls: ['./cps-select.component.scss']\n})\nexport class CpsSelectComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() label = '';\n @Input() placeholder = 'Please select';\n @Input() hint = '';\n @Input() returnObject = true; // if false, value will be option[optionValue]\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() selectAll = true; // doesn't work with virtual scroll\n @Input() chips = true;\n @Input() closableChips = true;\n @Input() clearable = false;\n @Input() openOnClear = true;\n @Input() options = [] as any[];\n @Input() optionLabel = 'label';\n @Input() optionValue = 'value'; // needed only if returnObject === false\n @Input() optionInfo = 'info';\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() prefixIcon: IconType = '';\n @Input() prefixIconSize: iconSizeType = '18px';\n @Input() loading = false;\n @Input() virtualScroll = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input('value') _value: any = undefined;\n\n set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<any>();\n\n @ViewChild('selectContainer')\n selectContainer!: ElementRef;\n\n @ViewChild('virtualList')\n virtualList!: VirtualScroller;\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n error = '';\n cvtWidth = '';\n\n isOpened = false;\n\n optionHighlightedIndex = -1;\n\n virtualListHeight = 240;\n virtualScrollItemSize = 42;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.cvtWidth = convertSize(this.width);\n if (this.multiple && !this._value) {\n this._value = [];\n }\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n\n this._recalcVirtualListHeight();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n private _toggleOptions(dd: HTMLElement, show?: boolean): void {\n if (this.disabled || !dd || this.isOpened === show) return;\n\n if (typeof show === 'boolean') {\n if (show) dd.classList.add('active');\n else dd.classList.remove('active');\n } else dd.classList.toggle('active');\n\n this.isOpened = dd.classList.contains('active');\n\n dd.classList.remove('top-open');\n if (\n this.isOpened &&\n !hasSpaceBelow(this.selectContainer, '.cps-select-options')\n ) {\n dd.classList.add('top-open');\n }\n\n if (this.isOpened && this.options.length > 0) {\n const selected =\n this.selectContainer.nativeElement.querySelector('.selected');\n if (selected) {\n selected.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'center'\n });\n } else if (this.virtualScroll && this.value) {\n let v: any;\n if (this.multiple) {\n if (this.value.length > 0) {\n v = this.value[0];\n }\n } else v = this.value;\n const idx = this.options.findIndex((o) => isEqual(o, v));\n if (idx >= 0) this.virtualList.scrollToIndex(idx);\n }\n }\n }\n\n private _recalcVirtualListHeight() {\n if (!this.virtualScroll) return;\n const currentLen = this.options?.length || 0;\n this.virtualListHeight = Math.min(\n this.virtualScrollItemSize * currentLen,\n 240\n );\n }\n\n select(option: any, byValue: boolean): void {\n function includes(array: any[], val: any): boolean {\n return array ? !!find(array, (item) => isEqual(item, val)) : false;\n }\n const val = byValue\n ? option\n : this.returnObject\n ? option\n : option[this.optionValue];\n if (this.multiple) {\n let res = [] as any;\n if (includes(this.value, val)) {\n res = this.value.filter((v: any) => !isEqual(v, val));\n } else {\n this.options.forEach((o) => {\n const ov = this.returnObject ? o : o[this.optionValue];\n if (this.value.some((v: any) => isEqual(v, ov)) || isEqual(val, ov)) {\n res.push(ov);\n }\n });\n }\n this.updateValue(res);\n } else {\n this.updateValue(val);\n }\n }\n\n onOptionClick(option: any, dd: HTMLElement) {\n this._clickOption(option, dd);\n }\n\n private _clickOption(option: any, dd: HTMLElement) {\n this.select(option, false);\n if (!this.multiple) {\n this._toggleOptions(dd, false);\n }\n }\n\n private _getHTMLOptions() {\n return (\n this.selectContainer?.nativeElement?.querySelectorAll(\n '.cps-select-options-option'\n ) || []\n );\n }\n\n private _dehighlightOption(el?: HTMLElement) {\n if (el) el.classList.remove('highlighten');\n else {\n if (this.optionHighlightedIndex < 0) return;\n const optionItems = this._getHTMLOptions();\n optionItems[this.optionHighlightedIndex].classList.remove('highlighten');\n this.optionHighlightedIndex = -1;\n }\n }\n\n private _highlightOption(el: HTMLElement) {\n el.classList.add('highlighten');\n const parent = el.parentElement;\n if (!parent) return;\n const parentRect = parent.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n if (elRect.top < parentRect.top || elRect.bottom > parentRect.bottom) {\n el.scrollIntoView({\n block: 'nearest',\n inline: 'center'\n });\n }\n }\n\n private _navigateOptionsByArrows(up: boolean) {\n if (!this.isOpened) return;\n\n const optionItems = this._getHTMLOptions();\n const len = optionItems.length;\n if (len < 1) return;\n\n if (len === 1) {\n this._highlightOption(optionItems[0]);\n return;\n }\n\n if (up) {\n this._dehighlightOption(optionItems[this.optionHighlightedIndex]);\n this.optionHighlightedIndex =\n this.optionHighlightedIndex < 1\n ? len - 1\n : this.optionHighlightedIndex - 1;\n this._highlightOption(optionItems[this.optionHighlightedIndex]);\n } else {\n this._dehighlightOption(optionItems[this.optionHighlightedIndex]);\n this.optionHighlightedIndex = [-1, len - 1].includes(\n this.optionHighlightedIndex\n )\n ? 0\n : this.optionHighlightedIndex + 1;\n this._highlightOption(optionItems[this.optionHighlightedIndex]);\n }\n }\n\n onClickOutside(dd: HTMLElement) {\n this._toggleOptions(dd, false);\n this._dehighlightOption();\n }\n\n onBoxClick(dd: HTMLElement) {\n this._toggleOptions(dd);\n this._dehighlightOption();\n }\n\n onKeyDown(event: any, dd: HTMLElement) {\n event.preventDefault();\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._toggleOptions(dd, false);\n this._dehighlightOption();\n }\n // enter\n else if (code === 13) {\n let idx = this.optionHighlightedIndex;\n if (idx < 0) return;\n if (this.multiple && this.selectAll && !this.virtualScroll) {\n if (idx === 0) {\n this.toggleAll();\n return;\n } else idx--;\n }\n\n this._clickOption(this.options[idx], dd);\n }\n // vertical arrows\n else if ([38, 40].includes(code)) {\n // Arrows navigation doesn't work with virtual scroll\n if (!this.virtualScroll) this._navigateOptionsByArrows(code === 38);\n }\n }\n\n toggleAll() {\n let res = [];\n if (this.value.length < this.options.length) {\n if (this.returnObject) {\n res = this.options;\n } else {\n this.options.forEach((o) => {\n res.push(o[this.optionValue]);\n });\n }\n }\n this.updateValue(res);\n }\n\n private _checkErrors(): void {\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this.error = message || 'Unknown error';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n private updateValue(value: any): void {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n clear(dd: HTMLElement, event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && this.value) ||\n (this.multiple && this.value?.length > 0)\n ) {\n if (this.openOnClear) {\n this._toggleOptions(dd, true);\n }\n const val = this.multiple ? [] : this.returnObject ? undefined : '';\n this.updateValue(val);\n }\n this._dehighlightOption();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n }\n\n focus() {\n this.selectContainer?.nativeElement?.focus();\n this._toggleOptions(this.selectContainer?.nativeElement, true);\n }\n}\n","<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-select\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #selectContainer\n (keydown)=\"onKeyDown($event, selectContainer)\"\n (blur)=\"onBlur()\">\n <div class=\"cps-select-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-select-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n class=\"cps-select-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(selectContainer)\">\n <div class=\"cps-select-box\" (click)=\"onBoxClick(selectContainer)\">\n <div class=\"cps-select-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-select-box-placeholder\"\n *ngIf=\"(!value && !multiple) || (value?.length < 1 && multiple)\">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-select-box-items\"\n *ngIf=\"(value && !multiple) || (value?.length > 0 && multiple)\">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n {{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span\n >\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <span class=\"text-group-item\">\n {{\n value\n | combineLabels\n : options\n : optionValue\n : optionLabel\n : returnObject\n }}\n </span>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n </div>\n </div>\n </div>\n <span class=\"cps-select-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && value)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-select-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(selectContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-select-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n\n <div class=\"cps-select-options\">\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-select-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"multiple && selectAll\"\n (click)=\"toggleAll()\">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\">\n </span>\n <span class=\"cps-select-options-option-label\">Select all</span>\n </span>\n </div>\n <ng-container *ngFor=\"let item of options\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"options\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: 3 }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"select-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-select-hint\">{{ hint }}</div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-select-error\">{{ error }}</div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-select-options-option\"\n (click)=\"onOptionClick(item, selectContainer)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\"> </span>\n <span\n class=\"cps-select-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-select-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { TreeNode } from 'primeng/api';\nimport {\n IconType,\n iconSizeType\n} from '../components/cps-icon/cps-icon.component';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../utils/internal/size-utils';\nimport { Tree } from 'primeng/tree';\nimport { isEqual } from 'lodash-es';\nimport { TooltipPosition } from '../directives/cps-tooltip.directive';\nimport { hasSpaceBelow } from '../utils/internal/position-utils';\n\n@Component({\n template: ''\n})\nexport class CpsTreeDropdownBaseComponent\n implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy\n{\n @Input() label = '';\n @Input() placeholder = 'Please enter';\n @Input() hint = '';\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() chips = true;\n @Input() closableChips = true;\n @Input() clearable = false;\n @Input() openOnClear = true;\n @Input() optionLabel = 'label';\n @Input() optionInfo = 'info';\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() prefixIcon: IconType = '';\n @Input() prefixIconSize: iconSizeType = '18px';\n @Input() loading = false;\n @Input() virtualScroll = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set options(options: any[]) {\n if (options?.some((o) => o.inner)) {\n this._options = options;\n return;\n }\n\n this._options = this._toInnerOptions(options);\n }\n\n get options(): TreeNode[] {\n return this._options;\n }\n\n @Input('value') _value: any = undefined;\n\n set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<any>();\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n treeContainer!: ElementRef;\n treeList!: Tree;\n\n _options: TreeNode[] = [];\n optionsMap = new Map<string, TreeNode>();\n originalOptionsMap = new Map<string, any>();\n\n treeSelection: any;\n\n virtualListHeight = 240;\n virtualScrollItemSize = 40;\n\n error = '';\n cvtWidth = '';\n isOpened = false;\n treeContainerElement!: HTMLElement;\n optionFocused = false;\n isAutocomplete = false;\n\n constructor(\n @Self() @Optional() public control: NgControl,\n public cdRef: ChangeDetectorRef\n ) {\n if (this.control) {\n this.control.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.cvtWidth = convertSize(this.width);\n if (!this._value) {\n if (this.multiple) {\n this._value = [];\n this.treeSelection = [];\n }\n } else {\n this.treeSelection = this._valueToTreeSelection(this.value);\n }\n\n this._statusChangesSubscription = this.control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngAfterViewInit() {\n this._initContainerClickListener();\n this.recalcVirtualListHeight();\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n if (this.treeContainerElement)\n this.treeContainerElement.removeEventListener(\n 'click',\n this._handleOnContainerClick.bind(this)\n );\n }\n\n private _initContainerClickListener() {\n this.treeContainerElement =\n this.treeList?.el?.nativeElement?.querySelector('.p-tree-container');\n if (this.treeContainerElement) {\n this.treeContainerElement.addEventListener(\n 'click',\n this._handleOnContainerClick.bind(this)\n );\n }\n }\n\n private _handleOnContainerClick(event: any) {\n function getParentWithClass(\n element: HTMLElement | null,\n className: string\n ) {\n let currentElement = element;\n while (currentElement) {\n if (currentElement.classList.contains(className)) {\n return currentElement;\n }\n currentElement = currentElement.parentElement;\n }\n return null;\n }\n\n this.optionFocused = true;\n\n const parent = event.target.classList.contains('p-treenode-content')\n ? event.target\n : getParentWithClass(event.target, 'p-treenode-content');\n\n if (\n parent?.parentElement?.classList?.contains(\n 'cps-tree-node-fully-expandable'\n )\n ) {\n this.onClickFullyExpandable(event, parent.parentElement);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n updateValue(value: any): void {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n onSelectNode() {\n if (!this.multiple) {\n this.toggleOptions(this.treeContainer?.nativeElement, false);\n }\n }\n\n onClickFullyExpandable(event: any, elem: HTMLElement) {\n const key = this._getHTMLElementKey(elem);\n if (!key) return;\n\n const treeNode = this.options.find((o) => o.key === key);\n if (!treeNode) return;\n\n treeNode.expanded = !treeNode.expanded;\n this.updateOptions();\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n private _getHTMLElementKey(elem: any): string {\n if (!elem?.classList) return '';\n const classList = [...elem.classList];\n const key = classList.find((className: string) => {\n return className.startsWith('key-');\n });\n if (!key) return '';\n return key.replace('key-', '');\n }\n\n treeSelectionChanged(selection: any) {\n this.updateValue(this.treeSelectionToValue(selection));\n }\n\n recalcVirtualListHeight() {\n if (!this.virtualScroll) return;\n const currentLen = this.treeList?.serializedValue?.length || 0;\n this.virtualListHeight = Math.min(\n this.virtualScrollItemSize * currentLen,\n 240\n );\n }\n\n toggleOptions(dd: HTMLElement, show?: boolean): void {\n const optionsClassName = this.isAutocomplete\n ? '.cps-treeautocomplete-options'\n : '.cps-treeselect-options';\n\n const repositionDropdown = () => {\n if (\n this.isOpened &&\n !hasSpaceBelow(this.treeContainer, optionsClassName)\n ) {\n dd.classList.add('top-open');\n }\n };\n\n if (this.disabled || !dd || this.isOpened === show) return;\n\n if (typeof show === 'boolean') {\n if (show) dd.classList.add('active');\n else dd.classList.remove('active');\n } else dd.classList.toggle('active');\n\n this.isOpened = dd.classList.contains('active');\n\n dd.classList.remove('top-open');\n repositionDropdown();\n\n this.optionFocused = false;\n\n if (this.isOpened && this.treeSelection) {\n const optionsList = dd?.querySelector(optionsClassName) as any;\n if (optionsList) optionsList.style.opacity = '0';\n\n this._expandToNodes(\n this.multiple ? this.treeSelection : [this.treeSelection]\n );\n this.updateOptions();\n\n setTimeout(() => {\n this.recalcVirtualListHeight();\n repositionDropdown();\n if (optionsList) optionsList.style.opacity = null;\n\n const selected =\n this.treeContainer.nativeElement.querySelector('.p-highlight');\n if (selected) {\n selected.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'center'\n });\n } else if (this.virtualScroll && this.treeSelection) {\n let key = '';\n if (this.multiple) {\n if (this.treeSelection.length > 0) key = this.treeSelection[0].key;\n } else key = this.treeSelection.key;\n if (key) {\n const idx =\n this.treeList?.serializedValue?.findIndex(\n (v) => v.node.key === key\n ) || -1;\n if (idx >= 0) this.treeList.scrollToVirtualIndex(idx);\n }\n }\n });\n }\n }\n\n remove(option: TreeNode): void {\n if (!this.multiple) return;\n\n this.treeSelection = this.treeSelection.filter(\n (v: TreeNode) => !isEqual(v, option)\n );\n this.updateValue(this.treeSelectionToValue(this.treeSelection));\n }\n\n initArrowsNavigaton() {\n if (!this.isOpened) return;\n\n if (!this.optionFocused) {\n const firstElem = this.treeContainerElement?.querySelector(\n '.p-treenode-content'\n );\n if (firstElem) (firstElem as HTMLElement).focus();\n this.optionFocused = true;\n }\n }\n\n clear(dd: HTMLElement, event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && this.treeSelection) ||\n (this.multiple && this.treeSelection?.length > 0)\n ) {\n if (this.openOnClear) {\n this.toggleOptions(dd, true);\n }\n const val = this.multiple ? [] : undefined;\n this.treeSelection = val;\n this.updateValue(val);\n }\n this.optionFocused = false;\n }\n\n private _checkErrors(): void {\n const errors = this.control?.errors;\n\n if (!this.control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n console.log('message', message);\n this.error = message || 'Unknown error';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this.control?.control?.markAsTouched();\n this._checkErrors();\n }\n\n focus() {\n this.treeContainer?.nativeElement?.focus();\n this.toggleOptions(this.treeContainer?.nativeElement, true);\n }\n\n private _expandToNodes(nodes: any[]) {\n function getParentKey(key: string): string {\n const lastSeparatorIndex = key.lastIndexOf('-');\n if (lastSeparatorIndex !== -1) {\n return key.substring(0, lastSeparatorIndex);\n }\n return '';\n }\n\n nodes.forEach((node) => {\n const parentNodeKey = getParentKey(node.key);\n const parentNode = this.optionsMap.get(parentNodeKey) || null;\n\n if (parentNode) {\n parentNode.expanded = true;\n this._expandToNodes([parentNode]);\n }\n });\n }\n\n private _toInnerOptions(_options: any[]): TreeNode[] {\n function mapOption(\n o: any,\n optionLabel: string,\n optionInfo: string,\n key: string,\n originalOptionsMap: any\n ) {\n const inner = {\n inner: true,\n label: o[optionLabel],\n info: o[optionInfo],\n key,\n styleClass: 'key-' + key\n } as TreeNode;\n if (o.isDirectory) {\n inner.type = 'directory';\n inner.selectable = false;\n inner.styleClass += ' cps-tree-node-fully-expandable';\n }\n if (o.children) {\n inner.children = o.children.map((c: any, index: number) => {\n return mapOption(\n c,\n optionLabel,\n optionInfo,\n key + '-' + index,\n originalOptionsMap\n );\n });\n }\n originalOptionsMap.set(key, o);\n return inner;\n }\n\n const res = _options.map((option, index) => {\n return mapOption(\n option,\n this.optionLabel,\n this.optionInfo,\n '' + index,\n this.originalOptionsMap\n );\n });\n\n this.optionsMap = this._buildOptionsMap(res);\n\n return res;\n }\n\n private _buildOptionsMap(options: any[]): Map<string, any> {\n const nodeMap = new Map<string, any>();\n for (const option of options) {\n nodeMap.set(option.key, option);\n if (option.children) {\n const childNodeMap = this._buildOptionsMap(option.children);\n childNodeMap.forEach((value, key) => nodeMap.set(key, value));\n }\n }\n return nodeMap;\n }\n\n treeSelectionToValue(selection: any) {\n if (!selection) return this.multiple ? [] : undefined;\n if (this.multiple) {\n return selection.map((s: any) => this.originalOptionsMap.get(s.key));\n } else {\n return this.originalOptionsMap.get(selection.key);\n }\n }\n\n private _valueToTreeSelection(value: any) {\n function getKey(v: any, map: Map<string, any>): string {\n for (const [key, val] of map.entries()) {\n if (isEqual(v, val)) {\n return key;\n }\n }\n return '';\n }\n\n if (!value) return this.multiple ? [] : undefined;\n\n if (this.multiple) {\n const res = [] as TreeNode[];\n value.forEach((v: any) => {\n const key = getKey(v, this.originalOptionsMap);\n if (key) res.push(this.optionsMap.get(key) as TreeNode);\n });\n return res;\n } else {\n const key = getKey(value, this.originalOptionsMap);\n return key ? this.optionsMap.get(key) : undefined;\n }\n }\n\n // this is a fix of primeng change detection bug when virtual scroller is enabled\n updateOptions() {\n if (!this.virtualScroll) return;\n this.options = [...this.options];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { FormsModule, NgControl } from '@angular/forms';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsChipComponent } from '../cps-chip/cps-chip.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { CombineLabelsPipe } from '../../pipes/internal/combine-labels.pipe';\nimport { Tree, TreeModule } from 'primeng/tree';\nimport { CpsTreeDropdownBaseComponent } from '../../base_components/cps-tree-dropdown-base.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TreeModule,\n ClickOutsideDirective,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n CombineLabelsPipe\n ],\n providers: [CombineLabelsPipe],\n selector: 'cps-tree-select',\n templateUrl: './cps-tree-select.component.html',\n styleUrls: ['./cps-tree-select.component.scss']\n})\nexport class CpsTreeSelectComponent\n extends CpsTreeDropdownBaseComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n @ViewChild('treeSelectContainer')\n treeSelectContainer!: ElementRef;\n\n @ViewChild('treeSelectList') treeSelectList!: Tree;\n\n constructor(\n @Optional() public override control: NgControl,\n public override cdRef: ChangeDetectorRef\n ) {\n super(control, cdRef);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngAfterViewInit() {\n this.treeContainer = this.treeSelectContainer;\n this.treeList = this.treeSelectList;\n super.ngAfterViewInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n onClickOutside(dd: HTMLElement) {\n this.toggleOptions(dd, false);\n }\n\n onBoxClick(dd: HTMLElement) {\n this.toggleOptions(dd);\n }\n\n onKeyDown(event: any, dd: HTMLElement) {\n event.preventDefault();\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this.toggleOptions(dd, false);\n }\n // click down arrow\n else if (code === 40) {\n this.initArrowsNavigaton();\n }\n }\n}\n","<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeselect\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #treeSelectContainer\n (keydown)=\"onKeyDown($event, treeSelectContainer)\"\n (blur)=\"onBlur()\">\n <div class=\"cps-treeselect-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-treeselect-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n class=\"cps-treeselect-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(treeSelectContainer)\">\n <div class=\"cps-treeselect-box\" (click)=\"onBoxClick(treeSelectContainer)\">\n <div class=\"cps-treeselect-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-treeselect-box-placeholder\"\n *ngIf=\"\n (!treeSelection && !multiple) ||\n (treeSelection?.length < 1 && multiple)\n \">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-treeselect-box-items\"\n *ngIf=\"\n (treeSelection && !multiple) ||\n (treeSelection?.length > 0 && multiple)\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n {{ treeSelection.label }}</span\n >\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <span class=\"text-group-item\">\n {{\n treeSelection | combineLabels : options : '' : 'label' : true\n }}\n </span>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of treeSelection\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"remove(val)\"\n [label]=\"val.label\">\n </cps-chip>\n </div>\n </div>\n </div>\n <span class=\"cps-treeselect-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && treeSelection?.length) ||\n (!multiple && treeSelection)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-treeselect-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(treeSelectContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-treeselect-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n\n <div class=\"cps-treeselect-options\">\n <p-tree\n #treeSelectList\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"recalcVirtualListHeight()\"\n (onNodeCollapse)=\"recalcVirtualListHeight()\"\n [value]=\"options\"\n [(selection)]=\"treeSelection\"\n (selectionChange)=\"treeSelectionChanged($event)\"\n [metaKeySelection]=\"multiple ? false : true\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\">\n <ng-template let-node pTemplate=\"directory\">\n <span class=\"cps-treeselect-directory-elem\">{{ node.label }}</span>\n </ng-template>\n <ng-template let-node pTemplate=\"default\">\n <span class=\"cps-treeselect-option\">\n <span class=\"cps-treeselect-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-treeselect-option-check\">\n </span>\n <span\n class=\"cps-treeselect-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.label }}</span\n >\n </span>\n <span\n class=\"cps-treeselect-option-info\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.info }}</span\n >\n </span>\n </ng-template>\n </p-tree>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-treeselect-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-treeselect-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-treeselect-error\">\n {{ error }}\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport {\n CpsIconComponent,\n IconType,\n iconSizeType\n} from '../cps-icon/cps-icon.component';\nimport { CpsChipComponent } from '../cps-chip/cps-chip.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { LabelByValuePipe } from '../../pipes/internal/label-by-value.pipe';\nimport { CheckOptionSelectedPipe } from '../../pipes/internal/check-option-selected.pipe';\nimport { find, isEqual } from 'lodash-es';\nimport {\n VirtualScroller,\n VirtualScrollerModule\n} from 'primeng/virtualscroller';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { hasSpaceBelow } from '../../utils/internal/position-utils';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ClickOutsideDirective,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n LabelByValuePipe,\n CheckOptionSelectedPipe,\n VirtualScrollerModule\n ],\n providers: [LabelByValuePipe, CheckOptionSelectedPipe],\n selector: 'cps-autocomplete',\n templateUrl: './cps-autocomplete.component.html',\n styleUrls: ['./cps-autocomplete.component.scss']\n})\nexport class CpsAutocompleteComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() label = '';\n @Input() placeholder = 'Please enter';\n @Input() hint = '';\n @Input() returnObject = true; // if false, value will be option[optionValue]\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() selectAll = true; // doesn't work with virtual scroll\n @Input() chips = true;\n @Input() closableChips = true;\n @Input() clearable = false;\n @Input() openOnClear = true;\n @Input() options = [] as any[];\n @Input() optionLabel = 'label';\n @Input() optionValue = 'value'; // needed only if returnObject === false\n @Input() optionInfo = 'info';\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() prefixIcon: IconType = '';\n @Input() prefixIconSize: iconSizeType = '18px';\n @Input() loading = false;\n @Input() emptyMessage = 'No results found';\n @Input() virtualScroll = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input('value') _value: any = undefined;\n\n get value(): any {\n return this._value;\n }\n\n set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n @Output() valueChanged = new EventEmitter<any>();\n\n @ViewChild('autocompleteContainer')\n autocompleteContainer!: ElementRef;\n\n @ViewChild('virtualList')\n virtualList!: VirtualScroller;\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n error = '';\n cvtWidth = '';\n isOpened = false;\n inputText = '';\n filteredOptions = [] as any[];\n backspaceClickedOnce = false;\n activeSingle = false;\n optionHighlightedIndex = -1;\n\n virtualListHeight = 240;\n virtualScrollItemSize = 42;\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private _labelByValue: LabelByValuePipe\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n this.filteredOptions = this.options;\n this.cvtWidth = convertSize(this.width);\n if (this.multiple && !this._value) {\n this._value = [];\n }\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n\n this.recalcVirtualListHeight();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n select(option: any, byValue: boolean): void {\n function includes(array: any[], val: any): boolean {\n return array ? !!find(array, (item) => isEqual(item, val)) : false;\n }\n\n this.backspaceClickedOnce = false;\n const val = byValue\n ? option\n : this.returnObject\n ? option\n : option[this.optionValue];\n if (this.multiple) {\n let res = [] as any;\n if (includes(this.value, val)) {\n res = this.value.filter((v: any) => !isEqual(v, val));\n } else {\n this.options.forEach((o) => {\n const ov = this.returnObject ? o : o[this.optionValue];\n if (this.value.some((v: any) => isEqual(v, ov)) || isEqual(val, ov)) {\n res.push(ov);\n }\n });\n }\n this.updateValue(res);\n } else {\n this.updateValue(val);\n }\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n onOptionClick(option: any, dd: HTMLElement) {\n this._clickOption(option, dd);\n }\n\n toggleAll() {\n let res = [];\n if (this.value.length < this.options.length) {\n if (this.returnObject) {\n res = this.options;\n } else {\n this.options.forEach((o) => {\n res.push(o[this.optionValue]);\n });\n }\n }\n this.updateValue(res);\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n filterOptions(event: any) {\n if (!this.isOpened) {\n this._toggleOptions(this.autocompleteContainer?.nativeElement, true);\n }\n this._dehighlightOption();\n this.backspaceClickedOnce = false;\n const searchVal = (event?.target?.value || '').toLowerCase();\n\n this.filteredOptions = this.options.filter((o: any) =>\n o[this.optionLabel].toLowerCase().includes(searchVal)\n );\n\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n clear(dd: HTMLElement, event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && this.value) ||\n (this.multiple && this.value?.length > 0)\n ) {\n if (this.openOnClear) {\n this._toggleOptions(dd, true);\n }\n const val = this.multiple ? [] : this.returnObject ? undefined : '';\n this.updateValue(val);\n }\n this._clearInput();\n this._dehighlightOption();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n }\n\n onClickOutside(dd: HTMLElement) {\n this._closeAndClear(dd);\n }\n\n onBoxClick() {\n if (!this.multiple) {\n this.activeSingle = true;\n this.inputText = this._getValueLabel();\n this.filteredOptions = this.options;\n }\n this.focus();\n this._dehighlightOption();\n }\n\n onContainerKeyDown(event: any, dd: HTMLElement) {\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._closeAndClear(dd);\n }\n // enter\n else if (code === 13) {\n let idx = this.optionHighlightedIndex;\n if (\n this.multiple &&\n this.selectAll &&\n this.filteredOptions.length === this.options.length &&\n !this.virtualScroll\n ) {\n if (idx === 0) {\n this.toggleAll();\n return;\n } else idx--;\n }\n const option = this.filteredOptions[idx];\n if (this.filteredOptions.length !== this.options.length)\n this._dehighlightOption();\n this._clickOption(option, dd);\n }\n // vertical arrows\n else if ([38, 40].includes(code)) {\n // Arrows navigation doesn't work with virtual scroll\n if (!this.virtualScroll) this._navigateOptionsByArrows(code === 38);\n }\n }\n\n onInputKeyDown(event: any) {\n const code = event.keyCode;\n // backspace\n if (code === 8) {\n this._removeLastValue();\n event.stopPropagation();\n }\n // enter\n else if (code === 13) {\n if (this.optionHighlightedIndex < 0) {\n this._confirmInput(event?.target?.value || '');\n event.stopPropagation();\n }\n } else if ([38, 40].includes(code)) {\n event.preventDefault();\n }\n }\n\n focusInput() {\n this.autocompleteContainer?.nativeElement?.querySelector('input')?.focus();\n }\n\n focus() {\n this.autocompleteContainer?.nativeElement?.focus();\n this.focusInput();\n this._toggleOptions(this.autocompleteContainer?.nativeElement, true);\n }\n\n recalcVirtualListHeight() {\n if (!this.virtualScroll) return;\n const currentLen = this.filteredOptions?.length || 0;\n this.virtualListHeight = Math.min(\n this.virtualScrollItemSize * currentLen,\n 240\n );\n }\n\n private _toggleOptions(dd: HTMLElement, show?: boolean): void {\n if (this.disabled || !dd || this.isOpened === show) return;\n\n this.backspaceClickedOnce = false;\n if (typeof show === 'boolean') {\n if (show) dd.classList.add('active');\n else dd.classList.remove('active');\n } else dd.classList.toggle('active');\n\n this.isOpened = dd.classList.contains('active');\n\n dd.classList.remove('top-open');\n if (\n this.isOpened &&\n !hasSpaceBelow(this.autocompleteContainer, '.cps-autocomplete-options')\n ) {\n dd.classList.add('top-open');\n }\n\n setTimeout(() => {\n if (this.isOpened && this.filteredOptions.length > 0) {\n this.recalcVirtualListHeight();\n\n const selected =\n this.autocompleteContainer.nativeElement.querySelector('.selected');\n if (selected) {\n selected.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'center'\n });\n } else if (this.virtualScroll && this.value) {\n let v: any;\n if (this.multiple) {\n if (this.value.length > 0) {\n v = this.value[0];\n }\n } else v = this.value;\n const idx = this.filteredOptions.findIndex((o) => isEqual(o, v));\n if (idx >= 0) this.virtualList.scrollToIndex(idx);\n }\n }\n });\n }\n\n private _clickOption(option: any, dd: HTMLElement) {\n this.select(option, false);\n if (!this.multiple) {\n this._toggleOptions(dd, false);\n }\n }\n\n private _checkErrors(): void {\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n console.log('message', message);\n this.error = message || 'Unknown error';\n }\n\n private updateValue(value: any): void {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n private _getValueLabel() {\n return this.value\n ? this.returnObject\n ? this.value[this.optionLabel]\n : this._labelByValue.transform(\n this.value,\n this.options,\n this.optionValue,\n this.optionLabel\n )\n : '';\n }\n\n private _clearInput() {\n this.filteredOptions = this.options;\n this.inputText = '';\n this.activeSingle = false;\n this.recalcVirtualListHeight();\n }\n\n private _closeAndClear(dd: HTMLElement) {\n this._clearInput();\n this._toggleOptions(dd, false);\n this._dehighlightOption();\n }\n\n private _getHTMLOptions() {\n return (\n this.autocompleteContainer?.nativeElement?.querySelectorAll(\n '.cps-autocomplete-options-option'\n ) || []\n );\n }\n\n private _dehighlightOption(el?: HTMLElement) {\n if (el) el.classList.remove('highlighten');\n else {\n if (this.optionHighlightedIndex < 0) return;\n const optionItems = this._getHTMLOptions();\n optionItems[this.optionHighlightedIndex].classList.remove('highlighten');\n this.optionHighlightedIndex = -1;\n }\n }\n\n private _highlightOption(el: HTMLElement) {\n el.classList.add('highlighten');\n const parent = el.parentElement;\n if (!parent) return;\n const parentRect = parent.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n if (elRect.top < parentRect.top || elRect.bottom > parentRect.bottom) {\n el.scrollIntoView({\n block: 'nearest',\n inline: 'center'\n });\n }\n }\n\n private _navigateOptionsByArrows(up: boolean) {\n if (!this.isOpened) return;\n\n const optionItems = this._getHTMLOptions();\n const len = optionItems.length;\n if (len < 1) return;\n\n if (len === 1) {\n this.optionHighlightedIndex = 0;\n this._highlightOption(optionItems[0]);\n return;\n }\n\n if (up) {\n this._dehighlightOption(optionItems[this.optionHighlightedIndex]);\n this.optionHighlightedIndex =\n this.optionHighlightedIndex < 1\n ? len - 1\n : this.optionHighlightedIndex - 1;\n this._highlightOption(optionItems[this.optionHighlightedIndex]);\n } else {\n this._dehighlightOption(optionItems[this.optionHighlightedIndex]);\n this.optionHighlightedIndex = [-1, len - 1].includes(\n this.optionHighlightedIndex\n )\n ? 0\n : this.optionHighlightedIndex + 1;\n this._highlightOption(optionItems[this.optionHighlightedIndex]);\n }\n }\n\n private _confirmInput(searchVal: string) {\n if (!this.isOpened) return;\n searchVal = searchVal.toLowerCase();\n if (!searchVal) {\n if (this.multiple) return;\n const val = this.returnObject ? undefined : '';\n this.updateValue(val);\n this._closeAndClear(this.autocompleteContainer?.nativeElement);\n return;\n }\n\n const found = this.filteredOptions.find(\n (o: any) => o[this.optionLabel].toLowerCase() === searchVal\n );\n if (found) {\n this.select(found, false);\n this._toggleOptions(\n this.autocompleteContainer?.nativeElement,\n this.multiple\n );\n } else {\n if (!this.multiple) {\n this.inputText = this._getValueLabel();\n this.filteredOptions = this.options;\n return;\n }\n }\n\n this._clearInput();\n }\n\n private _removeLastValue() {\n if (!this.multiple || this.inputText) return;\n\n if (this.value?.length) {\n if (this.backspaceClickedOnce) {\n this.updateValue(\n this.value.filter(\n (v: any, index: number) => index !== this.value.length - 1\n )\n );\n\n this.backspaceClickedOnce = false;\n } else this.backspaceClickedOnce = true;\n } else this.backspaceClickedOnce = false;\n\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n}\n","<div\n data-cy-id=\"cps-autocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-autocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #autocompleteContainer>\n <div class=\"cps-autocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-autocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event, autocompleteContainer)\"\n class=\"cps-autocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(autocompleteContainer)\">\n <div class=\"cps-autocomplete-box\" (click)=\"onBoxClick()\">\n <div class=\"cps-autocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-autocomplete-box-items\"\n *ngIf=\"\n (value && !multiple) || (value?.length > 0 && multiple);\n else autocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of value; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n }}{{ !last ? ',' : '' }}\n </div>\n <ng-container *ngTemplateOutlet=\"autocompleteInput\"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n <ng-container *ngTemplateOutlet=\"autocompleteInput\"></ng-container>\n </div>\n </div>\n <span class=\"cps-autocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && value)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-autocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(autocompleteContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-autocomplete-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"cps-autocomplete-options\">\n <div\n *ngIf=\"filteredOptions.length < 1\"\n class=\"cps-autocomplete-options-empty\">\n {{ emptyMessage }}\n </div>\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-autocomplete-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"\n multiple && selectAll && filteredOptions.length === options.length\n \"\n (click)=\"toggleAll()\">\n <span class=\"cps-autocomplete-options-option-left\">\n <span\n *ngIf=\"multiple\"\n class=\"cps-autocomplete-options-option-check\">\n </span>\n <span class=\"cps-autocomplete-options-option-label\"\n >Select all</span\n >\n </span>\n </div>\n <ng-container *ngFor=\"let item of filteredOptions\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"filteredOptions\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: 3 }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"autocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-autocomplete-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-autocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #autocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-autocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!value && !multiple) || (value?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-autocomplete-options-option\"\n (click)=\"onOptionClick(item, autocompleteContainer)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-autocomplete-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-autocomplete-options-option-check\">\n </span>\n <span\n data-cy-id=\"cps-autocomplete-options\"\n class=\"cps-autocomplete-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-autocomplete-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { FormsModule, NgControl } from '@angular/forms';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsChipComponent } from '../cps-chip/cps-chip.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { find, isEqual } from 'lodash-es';\nimport { Tree, TreeModule } from 'primeng/tree';\nimport { TreeNode } from 'primeng/api';\nimport { CpsTreeDropdownBaseComponent } from '../../base_components/cps-tree-dropdown-base.component';\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TreeModule,\n ClickOutsideDirective,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent\n ],\n selector: 'cps-tree-autocomplete',\n templateUrl: './cps-tree-autocomplete.component.html',\n styleUrls: ['./cps-tree-autocomplete.component.scss']\n})\nexport class CpsTreeAutocompleteComponent\n extends CpsTreeDropdownBaseComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n @Input() emptyMessage = 'No results found';\n\n @ViewChild('treeAutocompleteContainer')\n treeAutocompleteContainer!: ElementRef;\n\n @ViewChild('treeAutocompleteList') treeAutocompleteList!: Tree;\n\n inputText = '';\n backspaceClickedOnce = false;\n activeSingle = false;\n\n constructor(\n @Optional() public override control: NgControl,\n public override cdRef: ChangeDetectorRef\n ) {\n super(control, cdRef);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngAfterViewInit() {\n this.treeContainer = this.treeAutocompleteContainer;\n this.treeList = this.treeAutocompleteList;\n this.isAutocomplete = true;\n super.ngAfterViewInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n override onSelectNode() {\n this.backspaceClickedOnce = false;\n this._clearInput();\n super.onSelectNode();\n }\n\n onClickOutside(dd: HTMLElement) {\n this._closeAndClear(dd);\n }\n\n onBoxClick() {\n if (!this.multiple) {\n this.activeSingle = true;\n this.inputText = this._getValueLabel();\n this.treeAutocompleteList.resetFilter();\n }\n this.focus();\n this.optionFocused = false;\n }\n\n onContainerKeyDown(event: any, dd: HTMLElement) {\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._closeAndClear(dd);\n }\n // click down arrow\n else if (code === 40) {\n this.initArrowsNavigaton();\n }\n }\n\n onInputKeyDown(event: any) {\n const code = event.keyCode;\n // backspace\n if (code === 8) {\n this._removeLastValue();\n event.stopPropagation();\n }\n // enter\n else if (code === 13) {\n if (!this.optionFocused) {\n this._confirmInput(event?.target?.value || '');\n event.stopPropagation();\n }\n }\n }\n\n override remove(option: TreeNode): void {\n super.remove(option);\n\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n private _select(option: TreeNode): void {\n function includes(array: any[], val: any): boolean {\n return array ? !!find(array, (item) => isEqual(item, val)) : false;\n }\n\n this.backspaceClickedOnce = false;\n\n if (this.multiple) {\n if (includes(this.treeSelection, option)) {\n this.treeSelection = this.treeSelection.filter(\n (v: TreeNode) => !isEqual(v, option)\n );\n } else {\n this.treeSelection.push(option);\n }\n } else {\n this.treeSelection = option;\n }\n this.updateValue(this.treeSelectionToValue(this.treeSelection));\n\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n override clear(dd: HTMLElement, event: any): void {\n super.clear(dd, event);\n\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n focusInput() {\n this.treeAutocompleteContainer?.nativeElement\n ?.querySelector('input')\n ?.focus();\n }\n\n override focus() {\n super.focus();\n this.focusInput();\n }\n\n onFilterOptions() {\n this.recalcVirtualListHeight();\n }\n\n filterOptions(event: any) {\n if (!this.isOpened) {\n this.toggleOptions(this.treeAutocompleteContainer?.nativeElement, true);\n }\n this.backspaceClickedOnce = false;\n const searchVal = (event?.target?.value || '').toLowerCase();\n\n if (!searchVal) this.treeAutocompleteList.resetFilter();\n else this.treeAutocompleteList._filter(searchVal);\n }\n\n private _getValueLabel() {\n return this.treeSelection?.label || '';\n }\n\n private _clearInput() {\n this.treeAutocompleteList.resetFilter();\n this.inputText = '';\n this.activeSingle = false;\n this.updateOptions();\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n private _closeAndClear(dd: HTMLElement) {\n this._clearInput();\n this.toggleOptions(dd, false);\n }\n\n private _confirmInput(searchVal: string) {\n if (!this.isOpened) return;\n searchVal = searchVal.toLowerCase();\n if (!searchVal) {\n if (this.multiple) return;\n this.treeSelection = undefined;\n this.updateValue(undefined);\n this._closeAndClear(this.treeAutocompleteContainer?.nativeElement);\n return;\n }\n\n const found = this.treeAutocompleteList?.serializedValue?.find(\n (sv: any) => sv?.node?.label?.toLowerCase() === searchVal\n );\n if (found) {\n this._select(found.node);\n this.toggleOptions(\n this.treeAutocompleteContainer?.nativeElement,\n this.multiple\n );\n } else {\n if (!this.multiple) {\n this.inputText = this._getValueLabel();\n this.treeAutocompleteList.resetFilter();\n return;\n }\n }\n\n this._clearInput();\n }\n\n private _removeLastValue() {\n if (!this.multiple || this.inputText) return;\n\n if (this.treeSelection?.length) {\n if (this.backspaceClickedOnce) {\n this.treeSelection = this.treeSelection.filter(\n (v: TreeNode, index: number) =>\n index !== this.treeSelection.length - 1\n );\n this.updateValue(this.treeSelectionToValue(this.treeSelection));\n\n this.backspaceClickedOnce = false;\n } else this.backspaceClickedOnce = true;\n } else this.backspaceClickedOnce = false;\n\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n}\n","<div\n data-cy-id=\"cps-treeautocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeautocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error }\"\n #treeAutocompleteContainer>\n <div class=\"cps-treeautocomplete-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-treeautocomplete-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n (keydown)=\"onContainerKeyDown($event, treeAutocompleteContainer)\"\n class=\"cps-treeautocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear\n }\"\n (clickOutside)=\"onClickOutside(treeAutocompleteContainer)\">\n <div class=\"cps-treeautocomplete-box\" (click)=\"onBoxClick()\">\n <div class=\"cps-treeautocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-treeautocomplete-box-items\"\n *ngIf=\"\n (treeSelection && !multiple) ||\n (treeSelection?.length > 0 && multiple);\n else treeAutocompleteInput\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n <div class=\"single-item-selection\">\n <span [style.opacity]=\"activeSingle ? 0 : 1\">{{\n treeSelection.label\n }}</span>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'single-item-input',\n inputStyle: activeSingle ? 'opacity: 1' : null\n }\n \">\n </ng-container>\n </span>\n\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <div\n *ngFor=\"let val of treeSelection; let last = last\"\n class=\"text-group-item\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\">\n {{ val.label }}{{ !last ? ',' : '' }}\n </div>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of treeSelection; let last = last\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"remove(val)\"\n [ngClass]=\"{ 'about-to-remove': last && backspaceClickedOnce }\"\n [label]=\"val.label\">\n </cps-chip>\n <ng-container\n *ngTemplateOutlet=\"treeAutocompleteInput\"></ng-container>\n </div>\n </div>\n <span class=\"cps-treeautocomplete-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && treeSelection?.length) ||\n (!multiple && treeSelection)))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-treeautocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear(treeAutocompleteContainer, $event)\"></cps-icon>\n </span>\n <span class=\"cps-treeautocomplete-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <div class=\"cps-treeautocomplete-options\">\n <p-tree\n #treeAutocompleteList\n [emptyMessage]=\"emptyMessage\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"recalcVirtualListHeight()\"\n (onNodeCollapse)=\"recalcVirtualListHeight()\"\n (onFilter)=\"onFilterOptions()\"\n [value]=\"options\"\n [(selection)]=\"treeSelection\"\n (selectionChange)=\"treeSelectionChanged($event)\"\n [metaKeySelection]=\"multiple ? false : true\"\n [selectionMode]=\"multiple ? 'multiple' : 'single'\">\n <ng-template let-node pTemplate=\"directory\">\n <span class=\"cps-treeautocomplete-directory-elem\">{{\n node.label\n }}</span>\n </ng-template>\n <ng-template let-node pTemplate=\"default\">\n <span class=\"cps-treeautocomplete-option\">\n <span class=\"cps-treeautocomplete-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-treeautocomplete-option-check\">\n </span>\n <span\n class=\"cps-treeautocomplete-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.label }}</span\n >\n </span>\n <span\n class=\"cps-treeautocomplete-option-info\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ node.info }}</span\n >\n </span>\n </ng-template>\n </p-tree>\n </div>\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-treeautocomplete-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-treeautocomplete-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-treeautocomplete-error\">\n {{ error }}\n </div>\n</div>\n\n<ng-template\n #treeAutocompleteInput\n let-inputClass=\"inputClass\"\n let-inputStyle=\"inputStyle\">\n <input\n class=\"cps-treeautocomplete-box-input\"\n spellcheck=\"false\"\n [class]=\"inputClass\"\n [style]=\"inputStyle\"\n [placeholder]=\"\n (!treeSelection && !multiple) || (treeSelection?.length < 1 && multiple)\n ? placeholder\n : ''\n \"\n (input)=\"filterOptions($event)\"\n (keydown)=\"onInputKeyDown($event)\"\n [(ngModel)]=\"inputText\"\n (blur)=\"onBlur()\" />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-progress-circular',\n templateUrl: './cps-progress-circular.component.html',\n styleUrls: ['./cps-progress-circular.component.scss']\n})\nexport class CpsProgressCircularComponent implements OnInit {\n @Input() diameter: number | string = 40;\n @Input() strokeWidth: number | string = 4;\n @Input() color = 'calm';\n\n ngOnInit(): void {\n this.diameter = convertSize(this.diameter);\n this.strokeWidth = convertSize(this.strokeWidth);\n\n this.color = getCSSColor(this.color);\n }\n}\n","<div\n class=\"cps-progress-circular\"\n [style.width]=\"diameter\"\n [style.border]=\"strokeWidth + ' solid ' + color\"></div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { getCSSColor } from '../../utils/colors-utils';\nimport { CpsIconComponent, IconType } from '../cps-icon/cps-icon.component';\nimport { CpsProgressCircularComponent } from '../cps-progress-circular/cps-progress-circular.component';\nimport { convertSize, parseSize } from '../../utils/internal/size-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsIconComponent, CpsProgressCircularComponent],\n selector: 'cps-button',\n templateUrl: './cps-button.component.html',\n styleUrls: ['./cps-button.component.scss']\n})\nexport class CpsButtonComponent implements OnInit {\n @Input() color = 'calm';\n @Input() contentColor = 'white'; // works only with solid type\n @Input() type: 'solid' | 'outlined' | 'borderless' = 'solid';\n @Input() label = '';\n @Input() icon: IconType = '';\n @Input() iconPosition: 'before' | 'after' = 'before';\n @Input() size: 'xsmall' | 'small' | 'normal' | 'large' = 'normal';\n @Input() width: number | string = 0;\n @Input() height: number | string = 0;\n @Input() disabled = false;\n @Input() loading = false;\n\n @Output() clicked = new EventEmitter();\n\n buttonColor = '';\n textColor = '';\n\n @HostBinding('style.width')\n cvtWidth = '';\n\n cvtHeight = '';\n cvtFontSize = '';\n cvtIconSize = '';\n\n classesList: string[] = [];\n\n ngOnInit(): void {\n this.buttonColor = getCSSColor(this.color);\n this.textColor =\n this.type === 'solid' ? getCSSColor(this.contentColor) : this.buttonColor;\n this.setClasses();\n }\n\n setClasses() {\n this.classesList = ['cps-button'];\n\n if (this.width) {\n this.cvtWidth = convertSize(this.width);\n }\n\n if (this.height) {\n this.cvtHeight = convertSize(this.height);\n if (this.cvtHeight) {\n const parsedHeight = parseSize(this.cvtHeight);\n const unit = parsedHeight.unit;\n const size = parsedHeight.value * 0.4;\n const isPx = unit === 'px';\n\n this.cvtFontSize = `${isPx ? Math.floor(size) : size}${unit}`;\n this.cvtIconSize = `${isPx ? Math.ceil(size) : size}${unit}`;\n }\n } else {\n switch (this.size) {\n case 'normal': {\n this.classesList.push('cps-button--normal');\n break;\n }\n case 'large': {\n this.classesList.push('cps-button--large');\n break;\n }\n case 'small': {\n this.classesList.push('cps-button--small');\n break;\n }\n case 'xsmall': {\n this.classesList.push('cps-button--xsmall');\n break;\n }\n }\n }\n\n switch (this.type) {\n case 'solid': {\n this.classesList.push('cps-button--solid');\n break;\n }\n case 'outlined': {\n this.classesList.push('cps-button--outlined');\n break;\n }\n case 'borderless': {\n this.classesList.push('cps-button--borderless');\n break;\n }\n }\n\n if (this.icon && this.label) {\n switch (this.iconPosition) {\n case 'before': {\n this.classesList.push('cps-button--icon-before');\n break;\n }\n case 'after': {\n this.classesList.push('cps-button--icon-after');\n break;\n }\n }\n }\n }\n\n onClick(event: Event) {\n this.clicked.emit(event);\n }\n}\n","<div>\n <button\n type=\"button\"\n [ngClass]=\"classesList\"\n [disabled]=\"disabled || loading\"\n (click)=\"onClick($event)\"\n [class.loading]=\"loading\"\n [ngStyle]=\"{\n 'background-color': type==='solid' ? buttonColor : 'transparent',\n color: textColor,\n height: cvtHeight || 'none',\n }\">\n <div class=\"cps-button__spinner\">\n <cps-progress-circular\n *ngIf=\"loading\"\n color=\"currentColor\"\n [diameter]=\"cvtIconSize\"\n strokeWidth=\"2\">\n </cps-progress-circular>\n </div>\n <div\n class=\"cps-button__content\"\n [style.visibility]=\"loading ? 'hidden' : 'visible'\">\n <cps-icon\n *ngIf=\"icon\"\n class=\"cps-button__icon\"\n [icon]=\"icon\"\n [color]=\"disabled ? 'text-light' : textColor\"\n [size]=\"cvtIconSize\">\n </cps-icon>\n <span\n class=\"cps-button__text\"\n *ngIf=\"label\"\n [ngStyle]=\"{ 'font-size': cvtFontSize || null }\"\n >{{ label }}</span\n >\n </div>\n </button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsInfoCircleComponent],\n selector: 'cps-checkbox',\n templateUrl: './cps-checkbox.component.html',\n styleUrls: ['./cps-checkbox.component.scss']\n})\nexport class CpsCheckboxComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() disabled = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set value(value: boolean) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): boolean {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<boolean>();\n\n private _value = false;\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private _elementRef: ElementRef<HTMLElement>\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: boolean) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n event.preventDefault();\n if (this.disabled) return;\n this._updateValue(!this.value);\n }\n\n private _updateValue(value: boolean) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n focus() {\n this._elementRef?.nativeElement?.querySelector('input')?.focus();\n }\n}\n","<div class=\"cps-checkbox-container\">\n <label\n class=\"cps-checkbox\"\n [ngStyle]=\"{ cursor: disabled ? 'default' : 'pointer' }\">\n <span\n class=\"cps-checkbox-label\"\n [ngClass]=\"{ 'cps-checkbox-label-disabled': disabled }\"\n >{{ label }}</span\n >\n <input\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"value\"\n (change)=\"updateValueEvent($event)\" />\n <span class=\"cps-checkbox-indicator\"></span>\n </label>\n <cps-info-circle\n *ngIf=\"infoTooltip && label\"\n class=\"cps-checkbox-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport {\n CpsTooltipDirective,\n TooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\nexport type RadioOption = {\n value: any;\n label: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsInfoCircleComponent, CpsTooltipDirective],\n selector: 'cps-radio',\n templateUrl: './cps-radio.component.html',\n styleUrls: ['./cps-radio.component.scss']\n})\nexport class CpsRadioComponent implements ControlValueAccessor {\n @Input() options = [] as RadioOption[];\n @Input() groupLabel = '';\n @Input() vertical = false;\n @Input() disabled = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<boolean>();\n\n private _value: any = undefined;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n event.preventDefault();\n if (this.disabled) return;\n const value = event?.target?.value || '';\n this._updateValue(value);\n }\n\n private _updateValue(value: any) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n}\n","<div class=\"cps-radio-group\">\n <div class=\"cps-radio-group-label\" *ngIf=\"groupLabel\">\n <span>{{ groupLabel }}</span>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-radio-group-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n\n <div\n class=\"cps-radio-group-content\"\n [ngClass]=\"\n vertical\n ? 'cps-radio-group-content-vertical'\n : 'cps-radio-group-content-horizontal'\n \">\n <ng-container *ngFor=\"let option of options\">\n <ng-container\n *ngTemplateOutlet=\"\n optionContainerTemplate;\n context: {\n option: option,\n tooltip: option.tooltip\n }\n \"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #optionContainerTemplate let-option=\"option\" let-tooltip=\"tooltip\">\n <label\n *ngIf=\"tooltip\"\n class=\"cps-radio-group-content-button\"\n [cpsTooltip]=\"option.tooltip\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\"\n [ngStyle]=\"{\n cursor: option.disabled || disabled ? 'default' : 'pointer'\n }\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n </label>\n <label\n *ngIf=\"!tooltip\"\n class=\"cps-radio-group-content-button\"\n [ngStyle]=\"{\n cursor: option.disabled || disabled ? 'default' : 'pointer'\n }\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n </label>\n</ng-template>\n\n<ng-template #optionRadioTemplate let-option=\"option\">\n <input\n type=\"radio\"\n [disabled]=\"option.disabled || disabled\"\n [value]=\"option.value\"\n [checked]=\"value === option.value\"\n (change)=\"updateValueEvent($event)\" />\n <span class=\"cps-radio-group-content-button-label\">{{ option.label }}</span>\n</ng-template>\n","import { Directive, Host, Self, Optional } from '@angular/core';\nimport { Table } from 'primeng/table';\n\n@Directive({\n standalone: true,\n selector: '[withUnsort]'\n})\nexport class TableUnsortDirective {\n defaultSortOrderInitialized = false;\n\n constructor(@Host() @Self() @Optional() public pTable: Table) {\n pTable.tableService.valueSource$.subscribe((val: any[]) => {\n if (val != null && val.length > 0 && !this.defaultSortOrderInitialized) {\n let i = 0;\n val.forEach((v) => {\n v._defaultSortOrder = i++;\n });\n this.defaultSortOrderInitialized = true;\n }\n });\n\n pTable.sort = (event: any) => {\n if (pTable.sortMode === 'single') {\n if (pTable.sortField === event.field && pTable.sortOrder === -1) {\n event.field = '_defaultSortOrder';\n }\n\n pTable._sortOrder =\n pTable.sortField === event.field\n ? pTable.sortOrder * -1\n : pTable.defaultSortOrder;\n pTable._sortField = event.field;\n pTable.sortSingle();\n }\n if (pTable.sortMode === 'multiple') {\n let resetIndex = false;\n const sortMeta = pTable.getSortMeta(event.field);\n\n if (sortMeta) {\n for (let i = 0; i < pTable._multiSortMeta.length; i++) {\n if (pTable._multiSortMeta[i].field === sortMeta.field) {\n pTable._multiSortMeta.splice(i, 1);\n }\n }\n if (sortMeta.order === 1) {\n sortMeta.order = sortMeta.order * -1;\n pTable.multiSortMeta.push(sortMeta);\n }\n if (pTable._multiSortMeta?.length === 0) {\n pTable.multiSortMeta.push({\n field: '_defaultSortOrder',\n order: pTable.defaultSortOrder\n });\n resetIndex = true;\n }\n } else {\n if (!pTable.multiSortMeta) {\n pTable._multiSortMeta = [];\n }\n pTable.multiSortMeta.push({\n field: event.field,\n order: pTable.defaultSortOrder\n });\n }\n\n pTable.sortMultiple();\n if (resetIndex) pTable._multiSortMeta = [];\n }\n\n if (pTable.isStateful()) {\n pTable.saveState();\n }\n\n pTable.anchorRowIndex = 0;\n };\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Table, TableService, TableModule } from 'primeng/table';\nimport { TableUnsortDirective } from './table-unsort.directive';\nimport { SortEvent } from 'primeng/api';\nimport { CpsInputComponent } from '../cps-input/cps-input.component';\nimport { CpsButtonComponent } from '../cps-button/cps-button.component';\nimport { CpsSelectComponent } from '../cps-select/cps-select.component';\n\nexport function tableFactory(tableComponent: CpsTableComponent) {\n return tableComponent.primengTable;\n}\n\n@Component({\n selector: 'cps-table',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n TableModule,\n TableUnsortDirective,\n CpsInputComponent,\n CpsButtonComponent,\n CpsSelectComponent\n ],\n templateUrl: './cps-table.component.html',\n styleUrls: ['./cps-table.component.scss'],\n providers: [\n TableService,\n {\n provide: Table,\n useFactory: tableFactory,\n // eslint-disable-next-line no-use-before-define\n deps: [CpsTableComponent]\n }\n ]\n})\nexport class CpsTableComponent implements OnInit, AfterViewInit {\n @Input() headers: string[] = [];\n @Input() data: any[] = [];\n\n @Input() columns: { [key: string]: any }[] = [];\n @Input() colHeaderName = 'header';\n @Input() colFieldName = 'field';\n\n @Input() striped = true;\n @Input() bordered = true;\n @Input() size: 'small' | 'normal' | 'large' = 'normal';\n @Input() selectable = false;\n @Input() emptyMessage = 'No data';\n @Input() hasToolbar = true;\n @Input() toolbarSize: 'small' | 'normal' = 'normal';\n @Input() toolbarTitle = '';\n @Input() sortMode: 'single' | 'multiple' = 'multiple';\n @Input() customSort = false;\n @Input() rowHover = true;\n @Input() scrollable = true;\n @Input() scrollHeight = '';\n @Input() virtualScroll = false; // works only if scrollable is true\n\n @Input() paginator = false;\n @Input() alwaysShowPaginator = true;\n @Input() rowsPerPageOptions: number[] = [];\n @Input() first = 0;\n @Input() rows = 0;\n @Input() totalRecords = 0;\n\n @Input() lazy = false;\n @Input() lazyLoadOnInit = true;\n\n @Input() showGlobalFilter = false;\n @Input() globalFilterPlaceholder = 'Search';\n @Input() globalFilterFields: string[] = [];\n\n @Input() showRemoveBtnOnSelect = true;\n @Input() showActionBtn = false;\n @Input() actionBtnTitle = 'Action';\n\n @Input() reorderableRows = false;\n // @Input() columnsToggle = false; TODO\n // @Input() export = false; TODO\n /* @Input() */ resizableColumns = false; // TODO\n /* @Input() */ reorderableColumns = false; // TODO\n // TODO CpsTableColumnFilterDirective (type date, text, boolean, range, categories, numeric)\n\n @Output() selectionChanged = new EventEmitter<any[]>();\n @Output() actionBtnClicked = new EventEmitter<void>();\n\n /**\n * A function to implement custom sorting. customSort must be true.\n * @param {any} any - sort meta.\n * @group Emits\n */\n @Output() customSortFunction: EventEmitter<any> = new EventEmitter<any>();\n\n @ContentChild('toolbar', { static: false })\n public toolbarTemplate!: TemplateRef<any>;\n\n @ContentChild('header', { static: false })\n public headerTemplate!: TemplateRef<any>;\n\n @ContentChild('body', { static: false })\n public bodyTemplate!: TemplateRef<any>;\n\n @ViewChild('primengTable', { static: true })\n primengTable!: Table;\n\n styleClass = '';\n selectedRows: any[] = [];\n\n virtualScrollItemSize = 0;\n\n rowOptions: { label: string; value: number }[] = [];\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (!this.scrollable) this.virtualScroll = false;\n\n if (this.paginator) {\n if (this.rowsPerPageOptions.length < 1)\n this.rowsPerPageOptions = [5, 10, 25, 50];\n\n if (!this.rows) this.rows = this.rowsPerPageOptions[0];\n else {\n if (!this.rowsPerPageOptions.includes(this.rows)) {\n throw new Error('rowsPerPageOptions must include rows');\n }\n }\n\n this.rowOptions = this.rowsPerPageOptions.map((v) => ({\n label: '' + v,\n value: v\n }));\n }\n\n if (\n this.showGlobalFilter &&\n this.globalFilterFields?.length < 1 &&\n this.data?.length > 0\n ) {\n this.globalFilterFields = Object.keys(this.data[0]);\n }\n switch (this.size) {\n case 'small':\n this.styleClass = 'p-datatable-sm';\n break;\n case 'large':\n this.styleClass = 'p-datatable-lg';\n break;\n }\n switch (this.toolbarSize) {\n case 'small':\n this.styleClass += ' cps-tbar-small';\n break;\n case 'normal':\n this.styleClass += ' cps-tbar-normal';\n break;\n }\n if (this.striped) {\n this.styleClass += ' p-datatable-striped';\n }\n if (this.bordered) {\n this.styleClass += ' p-datatable-gridlines';\n }\n }\n\n ngAfterViewInit() {\n this.virtualScrollItemSize =\n this.primengTable?.el?.nativeElement\n ?.querySelector('.p-datatable-tbody')\n ?.querySelector('tr')?.clientHeight || 0;\n this.cdRef.detectChanges();\n }\n\n onSelectionChanged(selection: any[]) {\n this.selectionChanged.emit(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n selection.map(({ _defaultSortOrder, ...rest }) => rest)\n );\n }\n\n onSortFunction(event: SortEvent) {\n this.customSortFunction.emit(event);\n }\n\n onFilterGlobal(value: string) {\n this.primengTable.filterGlobal(value, 'contains');\n }\n\n removeSelected() {\n const indexes: number[] = this.primengTable.selection.map(\n (s: any) => s._defaultSortOrder\n );\n indexes.sort((a, b) => b - a);\n\n this.data = this.data.filter(\n (v: any) => !indexes.includes(v._defaultSortOrder)\n );\n\n this.selectedRows = [];\n }\n\n onClickActionBtn() {\n this.actionBtnClicked.emit();\n }\n\n onRowsPerPageChanged() {\n this.first = 0;\n this.primengTable.first = this.first;\n }\n}\n","<p-table\n #primengTable\n withUnsort\n [styleClass]=\"styleClass\"\n [value]=\"data\"\n [columns]=\"columns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [resizableColumns]=\"resizableColumns\"\n [reorderableColumns]=\"reorderableColumns\"\n [globalFilterFields]=\"globalFilterFields\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [lazy]=\"lazy\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: 3 }\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n (sortFunction)=\"onSortFunction($event)\">\n <ng-template pTemplate=\"caption\" *ngIf=\"hasToolbar\">\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"toolbarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!toolbarTemplate\">\n <div class=\"cps-table-tbar-left\">\n <div>{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-table-tbar-global-filter\">\n <cps-input\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-table-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-remove-btn\">\n <cps-button\n label=\"Remove\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-table-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n color=\"prepared\"\n type=\"outlined\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th>\n <th style=\"width: 4rem\" *ngIf=\"selectable\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"headers.length > 0 && columns.length < 1\">\n <th *ngFor=\"let h of headers\">{{ h }}</th>\n </ng-container>\n </ng-container>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-columns=\"columns\"\n let-item\n let-rowIndex=\"rowIndex\">\n <tr\n [pReorderableRow]=\"rowIndex\"\n [ngClass]=\"{\n 'cps-table-row-selected': selectable && primengTable.isSelected(item)\n }\">\n <td *ngIf=\"reorderableRows\">\n <span pReorderableRowHandle>☰</span>\n </td>\n <td *ngIf=\"selectable\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n pTemplate=\"body\"\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: { $implicit: item, rowIndex: rowIndex }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <td *ngFor=\"let col of columns\">\n {{ rowData[col[colFieldName]] }}\n </td>\n </ng-container>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"cps-table-empty-message-td\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"paginatorleft\">\n <div class=\"cps-table-paginator-itms-per-page\">\n <span class=\"cps-table-paginator-items-per-page-title\"\n >Items per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\">\n </cps-select>\n </div>\n </ng-template>\n</p-table>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { SortIcon, SortableColumn, Table } from 'primeng/table';\n\n@Directive({\n standalone: true,\n selector: '[cpsColSortable]'\n})\nexport class CpsTableColumnSortableDirective\n extends SortableColumn\n implements OnInit, OnDestroy\n{\n @Input('cpsColSortable') override field = '';\n sortIconRef: ComponentRef<SortIcon>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n public override dt: Table\n ) {\n super(dt);\n this.sortIconRef = this.viewContainerRef.createComponent(SortIcon);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.sortIconRef.setInput('field', this.field);\n this.elementRef.nativeElement.firstChild.after(\n this.sortIconRef.location.nativeElement\n );\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.sortIconRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { getCSSColor } from '../../utils/colors-utils';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-tag',\n templateUrl: './cps-tag.component.html',\n styleUrls: ['./cps-tag.component.scss']\n})\nexport class CpsTagComponent implements ControlValueAccessor, OnChanges {\n @Input() type: 'security' | 'classification' | 'custom' = 'custom'; // higher precedence over color\n @Input() label = '';\n @Input() color = '';\n @Input() disabled = false;\n @Input() selectable = false;\n @Input() set value(value: boolean) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): boolean {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<boolean>();\n\n classesList: string[] = [];\n tagColor = '';\n\n private _value = false;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnChanges(): void {\n this.setClasses();\n }\n\n setClasses(): void {\n this.classesList = ['cps-tag'];\n\n if (this.selectable) {\n this.classesList.push('cps-tag--selectable');\n }\n if (this.disabled) {\n this.classesList.push('cps-tag--disabled');\n }\n switch (this.type) {\n case 'security': {\n this.classesList.push('cps-tag--security');\n break;\n }\n case 'classification': {\n this.classesList.push('cps-tag--classification');\n break;\n }\n default:\n if (this.color) this.tagColor = getCSSColor(this.color);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: boolean) {\n this.value = value;\n }\n\n toggleSelected() {\n if (this.disabled || !this.selectable) return;\n this._updateValue(!this.value);\n }\n\n private _updateValue(value: boolean) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n}\n","<div\n [ngClass]=\"classesList\"\n [class.unselected]=\"!value && selectable\"\n [ngStyle]=\"{ 'border-color': tagColor || 'none' }\"\n (click)=\"toggleSelected()\">\n <p>{{ label }}</p>\n</div>\n","import {\n animate,\n AnimationEvent,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\nimport { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n PLATFORM_ID,\n Renderer2,\n ViewEncapsulation,\n ViewRef\n} from '@angular/core';\nimport { OverlayService, PrimeNGConfig, SharedModule } from 'primeng/api';\nimport { ConnectedOverlayScrollHandler, DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { Subscription } from 'rxjs';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\n\ntype Nullable<T = void> = T | null | undefined;\ntype VoidListener = () => void | null | undefined;\n\nexport type CpsMenuItem = {\n title: string;\n action?: (event?: any) => void;\n icon?: string;\n desc?: string;\n disabled?: boolean;\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, SharedModule, CpsIconComponent],\n selector: 'cps-menu',\n templateUrl: './cps-menu.component.html',\n styleUrls: ['./cps-menu.component.scss'],\n animations: [\n trigger('animation', [\n state(\n 'void',\n style({\n transform: 'scaleY(0.8)',\n opacity: 0\n })\n ),\n state(\n 'close',\n style({\n opacity: 0\n })\n ),\n state(\n 'open',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('void => open', animate('{{showTransitionParams}}')),\n transition('open => close', animate('{{hideTransitionParams}}'))\n ])\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class CpsMenuComponent implements OnDestroy {\n @Input() header = '';\n @Input() items: CpsMenuItem[] = [];\n @Input() withArrow = true;\n @Input() compressed = false; // prepared-colored, without header and items description\n @Input() focusOnShow = true;\n @Input() containerClass = '';\n\n @Output() menuShown = new EventEmitter();\n @Output() menuHidden = new EventEmitter();\n\n withIcons = true;\n autoZIndex = true;\n baseZIndex = 0;\n showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n hideTransitionOptions = '.1s linear';\n dismissable = true;\n container: Nullable<HTMLDivElement>;\n overlayVisible = false;\n render = false;\n isOverlayAnimationInProgress = false;\n selfClick = false;\n target: any;\n scrollHandler: Nullable<ConnectedOverlayScrollHandler>;\n\n documentResizeListener!: VoidListener | null;\n overlayEventListener: Nullable<(event?: any) => void>;\n documentClickListener!: VoidListener | null;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n destroyCallback: Nullable<Function>;\n overlaySubscription: Subscription | undefined;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: any,\n public el: ElementRef,\n public renderer: Renderer2,\n public cd: ChangeDetectorRef,\n private zone: NgZone,\n public config: PrimeNGConfig,\n public overlayService: OverlayService\n ) {}\n\n toggle(event: any, target?: any) {\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n if (this.overlayVisible) {\n if (this.hasTargetChanged(event, target)) {\n this.destroyCallback = () => {\n this.show(null, target || event.currentTarget || event.target);\n };\n }\n\n this.hide();\n } else {\n this.show(event, target);\n }\n }\n\n show(event: any, target?: any) {\n target && event && event.stopPropagation();\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n this.target = target || event.currentTarget || event.target;\n this.overlayVisible = true;\n this.render = true;\n this.cd.markForCheck();\n }\n\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n onItemClick(event: any, item: CpsMenuItem) {\n if (item.disabled) return;\n if (item.action) {\n item.action({\n originalEvent: event,\n item\n });\n }\n this.hide();\n }\n\n bindDocumentClickListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentClickListener && this.dismissable) {\n this.zone.runOutsideAngular(() => {\n const documentEvent = DomHandler.isIOS() ? 'touchstart' : 'click';\n const documentTarget: any = this.el\n ? this.el.nativeElement.ownerDocument\n : this.document;\n\n this.documentClickListener = this.renderer.listen(\n documentTarget,\n documentEvent,\n (event) => {\n if (\n !this.container?.contains(event.target) &&\n this.target !== event.target &&\n !this.target.contains(event.target) &&\n !this.selfClick\n ) {\n this.zone.run(() => {\n this.hide();\n });\n }\n\n this.selfClick = false;\n this.cd.markForCheck();\n }\n );\n });\n }\n }\n }\n\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n this.selfClick = false;\n }\n }\n\n onOverlayClick(event: MouseEvent) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n\n this.selfClick = true;\n }\n\n onContentClick() {\n this.selfClick = true;\n }\n\n hasTargetChanged(event: any, target: any) {\n return (\n this.target != null &&\n this.target !== (target || event.currentTarget || event.target)\n );\n }\n\n appendContainer() {\n this.renderer.appendChild(this.document.body, this.container);\n }\n\n restoreAppend() {\n if (this.container) {\n this.renderer.appendChild(this.el.nativeElement, this.container);\n }\n }\n\n align() {\n if (this.autoZIndex) {\n ZIndexUtils.set(\n 'overlay',\n this.container,\n this.baseZIndex + this.config.zIndex.overlay\n );\n }\n\n DomHandler.absolutePosition(this.container, this.target);\n\n const containerOffset = DomHandler.getOffset(this.container);\n const targetOffset = DomHandler.getOffset(this.target);\n\n if (this.withArrow) {\n const borderRadius =\n this.document.defaultView\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n ?.getComputedStyle(this.container!)\n ?.getPropertyValue('border-radius') || '0';\n\n let arrowLeft = 0;\n\n if (containerOffset.left < targetOffset.left) {\n arrowLeft =\n 20 +\n targetOffset.left -\n containerOffset.left -\n parseFloat(borderRadius) * 2;\n } else {\n const containerWidth = this.container?.offsetWidth || 0;\n const targetWidth = this.target?.offsetWidth || 0;\n arrowLeft = Math.min(targetWidth / 2, containerWidth / 2);\n }\n arrowLeft = Math.max(arrowLeft, 12);\n this.container?.style.setProperty('--overlayArrowLeft', `${arrowLeft}px`);\n }\n\n if (containerOffset.top < targetOffset.top) {\n DomHandler.addClass(this.container, 'cps-menu-container-flipped');\n }\n }\n\n onAnimationStart(event: AnimationEvent) {\n if (event.toState === 'open') {\n if (this.compressed) this.withIcons = this.items.some((itm) => itm.icon);\n this.container = event.element;\n this.appendContainer();\n this.align();\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n\n if (this.focusOnShow) {\n this.focus();\n }\n\n this.overlayEventListener = (e) => {\n if (this.container && this.container.contains(e.target)) {\n this.selfClick = true;\n }\n };\n\n this.overlaySubscription = this.overlayService.clickObservable.subscribe(\n this.overlayEventListener\n );\n this.menuShown.emit(null);\n }\n\n this.isOverlayAnimationInProgress = true;\n }\n\n onAnimationEnd(event: AnimationEvent) {\n switch (event.toState) {\n case 'void':\n if (this.destroyCallback) {\n this.destroyCallback();\n this.destroyCallback = null;\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n break;\n\n case 'close':\n if (this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n\n this.onContainerDestroy();\n this.menuHidden.emit({});\n this.render = false;\n break;\n }\n\n this.isOverlayAnimationInProgress = false;\n }\n\n focus() {\n const focusable = DomHandler.findSingle(this.container, '[autofocus]');\n if (focusable) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable.focus(), 5);\n });\n }\n }\n\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isTouchDevice()) {\n this.hide();\n }\n }\n\n bindDocumentResizeListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentResizeListener) {\n const window = this.document.defaultView as Window;\n this.documentResizeListener = this.renderer.listen(\n window,\n 'resize',\n this.onWindowResize.bind(this)\n );\n }\n }\n }\n\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n this.documentResizeListener();\n this.documentResizeListener = null;\n }\n }\n\n bindScrollListener() {\n if (isPlatformBrowser(this.platformId)) {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(\n this.target,\n () => {\n if (this.overlayVisible) {\n this.hide();\n }\n }\n );\n }\n\n this.scrollHandler.bindScrollListener();\n }\n }\n\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n onContainerDestroy() {\n if (!(this.cd as ViewRef).destroyed) {\n this.target = null;\n }\n\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n }\n\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n if (this.container && this.autoZIndex) {\n ZIndexUtils.clear(this.container);\n }\n\n if (!(this.cd as ViewRef).destroyed) {\n this.target = null;\n }\n\n this.destroyCallback = null;\n if (this.container) {\n this.restoreAppend();\n this.onContainerDestroy();\n }\n\n if (this.overlaySubscription) {\n this.overlaySubscription.unsubscribe();\n }\n }\n}\n","<div\n *ngIf=\"render\"\n class=\"cps-menu-container\"\n [ngClass]=\"{ 'cps-menu-no-arrow': !withArrow }\"\n [class]=\"containerClass\"\n (click)=\"onOverlayClick($event)\"\n [@animation]=\"{\n value: overlayVisible ? 'open' : 'close',\n params: {\n showTransitionParams: showTransitionOptions,\n hideTransitionParams: hideTransitionOptions\n }\n }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\">\n <div (click)=\"onContentClick()\" (mousedown)=\"onContentClick()\">\n <ng-container *ngIf=\"items.length < 1\">\n <ng-content></ng-content>\n </ng-container>\n <div\n *ngIf=\"items.length > 0\"\n class=\"cps-menu-content\"\n [ngClass]=\"{ 'cps-menu-content-compressed': compressed }\">\n <div *ngIf=\"header && !compressed\" class=\"cps-menu-header\">\n {{ header }}\n </div>\n <div\n *ngFor=\"let item of items; let i = index\"\n (click)=\"onItemClick($event, item)\"\n [ngClass]=\"{\n 'cps-menu-item-disabled': item.disabled,\n 'cps-menu-item-first': i === 0,\n 'cps-menu-item-compressed': compressed\n }\"\n class=\"cps-menu-item\">\n <div class=\"cps-menu-item-icon\" *ngIf=\"withIcons\">\n <cps-icon\n *ngIf=\"item.icon\"\n [icon]=\"item.icon\"\n [color]=\"item.disabled ? 'text-light' : 'text-dark'\"\n [size]=\"compressed ? 'small' : 'normal'\"></cps-icon>\n </div>\n <div class=\"cps-menu-item-content\">\n <span class=\"cps-menu-item-content-title\">{{ item.title }}</span>\n <span\n *ngIf=\"item.desc && !compressed\"\n class=\"cps-menu-item-content-desc\"\n >{{ item.desc }}</span\n >\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { CpsSelectComponent } from '../cps-select/cps-select.component';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n@Component({\n selector: 'cps-paginator',\n standalone: true,\n imports: [CommonModule, PaginatorModule, CpsSelectComponent],\n templateUrl: './cps-paginator.component.html',\n styleUrls: ['./cps-paginator.component.scss']\n})\nexport class CpsPaginatorComponent implements OnInit {\n @Input() first = 0;\n @Input() rows = 0;\n @Input() totalRecords = 0;\n @Input() rowsPerPageOptions: number[] = [];\n @Input() alwaysShow = true;\n @Input() backgroundColor = 'transparent';\n\n @Output() pageChanged = new EventEmitter<any>();\n\n rowOptions: { label: string; value: number }[] = [];\n\n ngOnInit(): void {\n this.backgroundColor = getCSSColor(this.backgroundColor);\n if (this.rowsPerPageOptions.length < 1)\n this.rowsPerPageOptions = [5, 10, 25, 50];\n\n if (!this.rows) this.rows = this.rowsPerPageOptions[0];\n else {\n if (!this.rowsPerPageOptions.includes(this.rows)) {\n throw new Error('rowsPerPageOptions must include rows');\n }\n }\n\n this.rowOptions = this.rowsPerPageOptions.map((v) => ({\n label: '' + v,\n value: v\n }));\n }\n\n onPageChange(event: any) {\n this.first = event.first;\n this.rows = event.rows;\n this.pageChanged.emit(event);\n }\n}\n","<p-paginator\n (onPageChange)=\"onPageChange($event)\"\n [first]=\"first\"\n [rows]=\"rows\"\n [style]=\"{ background: backgroundColor }\"\n [totalRecords]=\"totalRecords\"\n [showFirstLastIcon]=\"true\"\n [showCurrentPageReport]=\"true\"\n [alwaysShow]=\"alwaysShow\"\n [templateLeft]=\"itemsPerPageTemplate\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\">\n</p-paginator>\n\n<ng-template #itemsPerPageTemplate>\n <div class=\"cps-paginator-itms-per-page\">\n <span class=\"cps-paginator-items-per-page-title\">Items per page: </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"first = 0\"\n [returnObject]=\"false\"></cps-select>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-loader',\n templateUrl: './cps-loader.component.html',\n styleUrls: ['./cps-loader.component.scss']\n})\nexport class CpsLoaderComponent implements OnInit {\n @Input() fullScreen = true;\n @Input() opacity: number | string = 0.1;\n @Input() labelColor = 'depth';\n @Input() showLabel = true;\n\n backgroundColor = 'rgba(0, 0, 0, 0.1)';\n\n ngOnInit(): void {\n this.backgroundColor = `rgba(0, 0, 0, ${this.opacity})`;\n this.labelColor = getCSSColor(this.labelColor);\n }\n}\n","<div\n class=\"cps-loader-overlay\"\n [ngStyle]=\"{\n 'background-color': backgroundColor,\n position: fullScreen ? 'fixed' : 'relative'\n }\">\n <div class=\"cps-loader-overlay-content\">\n <label\n *ngIf=\"showLabel\"\n class=\"cps-loader-overlay-content-text\"\n [style.color]=\"labelColor\"\n >Loading...\n </label>\n <div class=\"cps-loader-overlay-content-circles\">\n <div class=\"cps-loader-overlay-content-circles-circle cps-sp1\">\n <div class=\"cps-loader-overlay-content-circles-circle cps-sp2\">\n <div class=\"cps-loader-overlay-content-circles-circle cps-sp3\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CpsIconComponent, IconType } from '../cps-icon/cps-icon.component';\nimport { getCSSColor } from '../../utils/colors-utils';\nimport { convertSize } from '../../utils/internal/size-utils';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsIconComponent],\n selector: 'cps-expansion-panel',\n templateUrl: './cps-expansion-panel.component.html',\n styleUrls: ['./cps-expansion-panel.component.scss']\n})\nexport class CpsExpansionPanelComponent implements OnInit {\n @Input() headerTitle = '';\n @Input() backgroundColor = 'transparent';\n @Input() showChevron = true;\n @Input() isExpanded = false;\n @Input() disabled = false;\n @Input() bordered = true;\n @Input() borderRadius: number | string = '4px';\n @Input() width: number | string = '100%';\n @Input() prefixIcon: IconType = '';\n\n @Output() afterCollapse: EventEmitter<void> = new EventEmitter<void>();\n @Output() afterExpand: EventEmitter<void> = new EventEmitter<void>();\n\n ngOnInit(): void {\n this.backgroundColor = getCSSColor(this.backgroundColor);\n this.borderRadius = convertSize(this.borderRadius);\n this.width = convertSize(this.width);\n }\n\n toggleExpansion(): void {\n if (!this.disabled) {\n this.isExpanded = !this.isExpanded;\n if (this.isExpanded) {\n this.afterExpand.emit();\n }\n if (!this.isExpanded) {\n this.afterCollapse.emit();\n }\n }\n }\n}\n","<div\n class=\"cps-expansion-panel\"\n [class.expanded]=\"isExpanded\"\n [class.bordered]=\"bordered\"\n [ngStyle]=\"{\n 'background-color': backgroundColor,\n 'border-radius': borderRadius,\n width: width\n }\">\n <div\n class=\"cps-expansion-panel-header\"\n [ngClass]=\"{ disabled: disabled }\"\n [style.cursor]=\"disabled ? 'default' : 'pointer'\"\n (click)=\"toggleExpansion()\">\n <span class=\"cps-expansion-panel-prefix-icon\" *ngIf=\"prefixIcon\">\n <cps-icon\n [icon]=\"prefixIcon\"\n size=\"small\"\n [color]=\"disabled ? 'text-mild' : 'text-dark'\">\n </cps-icon>\n </span>\n <div class=\"cps-expansion-panel-title\">{{ headerTitle }}</div>\n <span class=\"cps-expansion-panel-chevron\" *ngIf=\"showChevron && !disabled\">\n <cps-icon icon=\"chevron-down\" size=\"small\" color=\"text-dark\"> </cps-icon>\n </span>\n </div>\n <div class=\"cps-expansion-panel-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { CalendarModule } from 'primeng/calendar';\nimport { CpsInputComponent } from '../cps-input/cps-input.component';\nimport { Subscription } from 'rxjs';\nimport { ClickOutsideDirective } from '../../directives/internal/click-outside.directive';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { hasSpaceBelow } from '../../utils/internal/position-utils';\n\n@Component({\n standalone: true,\n imports: [\n CpsInputComponent,\n CalendarModule,\n CommonModule,\n FormsModule,\n ClickOutsideDirective\n ],\n selector: 'cps-datepicker',\n templateUrl: './cps-datepicker.component.html',\n styleUrls: ['./cps-datepicker.component.scss']\n})\nexport class CpsDatepickerComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() label = '';\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() hint = '';\n @Input() clearable = true;\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() showTodayButton = true;\n @Input() openOnInputFocus = false;\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input()\n minDate!: Date;\n\n @Input()\n maxDate!: Date;\n\n @Input() set value(value: Date | null) {\n this._value = value;\n this.stringDate = this._dateToString(value);\n this.onChange(value);\n }\n\n get value(): Date | null {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<Date | null>();\n\n @ViewChild('datepickerContainer')\n datepickerContainer!: ElementRef;\n\n stringDate = '';\n isOpened = false;\n topPos = '57px';\n error = '';\n cvtWidth = '';\n\n private _statusChangesSubscription: Subscription = new Subscription();\n private _value!: Date | null;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n if (!this.label) this.topPos = '37px';\n\n this.cvtWidth = convertSize(this.width);\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n onInputValueChanged(val: string) {\n this.stringDate = val;\n if (!val) {\n this._updateValue(null);\n return;\n }\n const dt = this._stringToDate(val);\n if (dt) this._updateValue(dt);\n }\n\n writeValue(value: Date | null) {\n this.value = value;\n }\n\n private _updateValue(value: Date | null) {\n if (this.value === value) return;\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n private _updateValueFromInputString() {\n if (!this.stringDate) {\n this._updateValue(null);\n } else {\n this._updateValue(this._stringToDate(this.stringDate));\n }\n }\n\n private _checkDateFormat(dateString: string): boolean {\n if (!/^\\d\\d\\/\\d\\d\\/\\d\\d\\d\\d$/.test(dateString)) {\n return false;\n }\n const parts = dateString.split('/').map((p) => parseInt(p, 10));\n parts[0] -= 1;\n const d = new Date(parts[2], parts[0], parts[1]);\n return (\n d.getMonth() === parts[0] &&\n d.getDate() === parts[1] &&\n d.getFullYear() === parts[2]\n );\n }\n\n private _checkDateInRange(date: Date, minDate: Date, maxDate: Date): boolean {\n if (!minDate && !maxDate) return true;\n if (minDate && maxDate) {\n return (\n date.getTime() >= minDate.getTime() &&\n date.getTime() <= maxDate.getTime()\n );\n }\n if (minDate) {\n return date.getTime() >= minDate.getTime();\n }\n return date.getTime() <= maxDate.getTime();\n }\n\n private _dateToString(dateVal: Date | null): string {\n if (!dateVal) return '';\n let month = '' + (dateVal.getMonth() + 1);\n if (month.length < 2) month = '0' + month;\n let day = '' + dateVal.getDate();\n if (day.length < 2) day = '0' + day;\n const year = dateVal.getFullYear();\n return `${month}/${day}/${year}`;\n }\n\n private _stringToDate(dateString: string): Date | null {\n if (!this._checkDateFormat(dateString)) return null;\n const [month, day, year] = dateString.split('/');\n const dt = new Date(`${year}-${month}-${day}`);\n const inRange = this._checkDateInRange(dt, this.minDate, this.maxDate);\n return inRange ? dt : null;\n }\n\n private _checkErrors() {\n if (this.stringDate && !this._stringToDate(this.stringDate)) {\n this.error = 'Date is invalid';\n return;\n }\n\n const errors = this._control?.errors;\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this.error = message || 'Unknown error';\n }\n\n onSelectCalendarDate(dateVal: Date) {\n this.toggleCalendar(false);\n this._dateToString(dateVal);\n }\n\n onInputBlur() {\n if (this.isOpened) return;\n this._control?.control?.markAsTouched();\n this._updateValueFromInputString();\n this._checkErrors();\n }\n\n onClickCalendarIcon() {\n if (this.disabled) return;\n if (this.isOpened) this._updateValueFromInputString();\n this.toggleCalendar();\n }\n\n onClickOutside() {\n if (this.disabled || !this.isOpened) return;\n this._updateValueFromInputString();\n this.toggleCalendar(false);\n }\n\n onInputFocus() {\n if (this.openOnInputFocus) this.toggleCalendar(true);\n }\n\n toggleCalendar(show?: boolean) {\n if (this.disabled || this.isOpened === show) return;\n\n const el = this.datepickerContainer?.nativeElement;\n if (!el) return;\n\n if (typeof show === 'boolean') {\n if (show) el.classList.add('active');\n else el.classList.remove('active');\n } else el.classList.toggle('active');\n\n this.isOpened = el.classList.contains('active');\n\n el.classList.remove('top-open');\n if (\n this.isOpened &&\n !hasSpaceBelow(this.datepickerContainer, '.cps-datepicker-calendar')\n ) {\n el.classList.add('top-open');\n }\n\n if (!this.isOpened) {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n }\n }\n}\n","<div\n class=\"cps-datepicker\"\n #datepickerContainer\n [ngStyle]=\"{ width: cvtWidth }\"\n [class.focused]=\"isOpened\"\n (clickOutside)=\"onClickOutside()\"\n [skipTargets]=\"['label-text', 'error-text', 'hint-text']\">\n <cps-input\n [disabled]=\"disabled\"\n [value]=\"stringDate\"\n [label]=\"label\"\n prefixIcon=\"datepicker\"\n [placeholder]=\"placeholder\"\n (prefixIconClicked)=\"onClickCalendarIcon()\"\n [prefixIconClickable]=\"true\"\n (focused)=\"onInputFocus()\"\n (valueChanged)=\"onInputValueChanged($event)\"\n [clearable]=\"clearable\"\n (blurred)=\"onInputBlur()\"\n [width]=\"width\"\n [hint]=\"hint\"\n [hideDetails]=\"hideDetails\"\n [infoTooltip]=\"infoTooltip\"\n [infoTooltipClass]=\"infoTooltipClass\"\n [infoTooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [infoTooltipPersistent]=\"infoTooltipPersistent\"\n [persistentClear]=\"persistentClear\"\n [error]=\"error\"></cps-input>\n <div class=\"cps-datepicker-calendar\" [style.top]=\"topPos\">\n <p-calendar\n [(ngModel)]=\"value\"\n [showIcon]=\"true\"\n [showButtonBar]=\"showTodayButton\"\n [inline]=\"true\"\n (onSelect)=\"onSelectCalendarDate($event)\"\n [showOtherMonths]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\">\n </p-calendar>\n </div>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport { TooltipPosition } from '../../directives/cps-tooltip.directive';\n\n@Component({\n standalone: true,\n selector: 'cps-textarea',\n imports: [CommonModule, CpsIconComponent, CpsInfoCircleComponent],\n templateUrl: './cps-textarea.component.html',\n styleUrls: ['./cps-textarea.component.scss']\n})\nexport class CpsTextareaComponent implements OnInit, OnDestroy {\n @Input() label = '';\n @Input() placeholder = 'Please enter';\n @Input() rows = 5;\n @Input() cols = 20;\n @Input() autofocus = false;\n @Input() hint = '';\n @Input() disabled = false;\n @Input() width: number | string = '100%';\n @Input() clearable = false;\n @Input() hideDetails = false;\n @Input() persistentClear = false;\n @Input() error = '';\n @Input() resizable: 'vertical' | 'none' = 'vertical';\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input() set value(value: string) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): string {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<string>();\n @Output() focused = new EventEmitter();\n @Output() prefixIconClicked = new EventEmitter();\n @Output() blurred = new EventEmitter();\n\n private _statusChangesSubscription: Subscription = new Subscription();\n private _value = '';\n\n cvtWidth = '';\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private _elementRef: ElementRef<HTMLElement>\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.cvtWidth = convertSize(this.width);\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n }\n\n private _checkErrors() {\n if (!this._control) return;\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this.error = '';\n return;\n }\n\n if ('required' in errors) {\n this.error = 'Field is required';\n return;\n }\n\n if ('minlength' in errors) {\n // eslint-disable-next-line dot-notation\n this.error = `Field must contain at least ${errors['minlength'].requiredLength} characters`;\n return;\n }\n\n if ('maxlength' in errors) {\n // eslint-disable-next-line dot-notation\n this.error = `Field must contain ${errors['maxlength'].requiredLength} characters maximum`;\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this.error = '';\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this.error = message || 'Unknown error';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: string) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n const value = event?.target?.value || '';\n this._updateValue(value);\n }\n\n private _updateValue(value: string) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n clear() {\n if (this.value !== '') this._updateValue('');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n onBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n this.blurred.emit();\n }\n\n onFocus() {\n this.focused.emit();\n }\n\n focus() {\n this._elementRef?.nativeElement?.querySelector('textarea')?.focus();\n }\n}\n","<div class=\"cps-textarea-container\" [ngStyle]=\"{ width: cvtWidth }\">\n <div\n class=\"cps-textarea-label\"\n [ngClass]=\"{ 'cps-textarea-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-textarea-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n\n <div\n class=\"cps-textarea-wrap\"\n [ngClass]=\"{\n 'cps-textarea-wrap-error': error,\n clearable: clearable,\n 'persistent-clear': persistentClear\n }\">\n <textarea\n spellcheck=\"false\"\n [cols]=\"cols\"\n [rows]=\"rows\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [ngStyle]=\"{\n width: cvtWidth,\n resize: resizable\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n (input)=\"updateValueEvent($event)\"></textarea>\n\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear || (!persistentClear && value) ? 'visible' : 'hidden'\n \"\n class=\"clear-btn\">\n <cps-icon icon=\"delete\" size=\"small\" (click)=\"clear()\"></cps-icon>\n </span>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-textarea-hint-text\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-textarea-error-text\">\n {{ error }}\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Self\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { isEqual } from 'lodash-es';\nimport { CheckOptionSelectedPipe } from '../../pipes/internal/check-option-selected.pipe';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\nimport {\n CpsTooltipDirective,\n TooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\nexport type BtnToggleOption = {\n value: any;\n label: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CheckOptionSelectedPipe,\n CpsInfoCircleComponent,\n CpsTooltipDirective\n ],\n providers: [CheckOptionSelectedPipe],\n selector: 'cps-button-toggle',\n templateUrl: './cps-button-toggle.component.html',\n styleUrls: ['./cps-button-toggle.component.scss']\n})\nexport class CpsButtonToggleComponent implements ControlValueAccessor, OnInit {\n @Input() label = '';\n @Input() options = [] as BtnToggleOption[];\n @Input() multiple = false;\n @Input() disabled = false;\n @Input() mandatory = true; // at least one of the options is mandatory\n @Input() infoTooltip = '';\n @Input() infoTooltipClass = 'cps-tooltip-content';\n @Input() infoTooltipMaxWidth: number | string = '100%';\n @Input() infoTooltipPersistent = false;\n @Input() infoTooltipPosition: TooltipPosition = 'top';\n\n @Input('value') _value: any = undefined;\n\n set value(value: any) {\n this._value = value;\n this.onChange(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n @Output() valueChanged = new EventEmitter<any>();\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit() {\n if (this.multiple && !this._value) {\n this._value = [];\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange = (event: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onTouched = () => {};\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n updateValueEvent(event: any) {\n if (this.disabled) return;\n const check = event?.target?.checked || false;\n\n if (this.mandatory && this.multiple && !check && this.value.length < 2) {\n event.target.checked = true;\n return;\n }\n\n const val = event?.target?.value || undefined;\n\n if (this.multiple) {\n let res = [] as any;\n if (!check) {\n res = this.value.filter((v: any) => !isEqual(v, val));\n } else {\n this.options.forEach((o) => {\n if (\n this.value.some((v: any) => isEqual(v, o.value)) ||\n isEqual(val, o.value)\n ) {\n res.push(o.value);\n }\n });\n }\n this._updateValue(res);\n } else {\n if (this.mandatory) {\n this._updateValue(val); // radio\n } else {\n this._updateValue(check ? val : undefined);\n }\n }\n }\n\n private _updateValue(value: any) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n}\n","<div class=\"cps-btn-toggle\">\n <div class=\"cps-btn-toggle-label\" *ngIf=\"label\">\n <span>{{ label }}</span>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-btn-toggle-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div class=\"cps-btn-toggle-content\">\n <ng-container *ngFor=\"let option of options\">\n <ng-container\n *ngTemplateOutlet=\"\n optionContainerTemplate;\n context: {\n option: option,\n tooltip: option.tooltip\n }\n \"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #optionContainerTemplate let-option=\"option\" let-tooltip=\"tooltip\">\n <label\n class=\"cps-btn-toggle-content-option\"\n *ngIf=\"tooltip\"\n [cpsTooltip]=\"option.tooltip\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n </label>\n <label class=\"cps-btn-toggle-content-option\" *ngIf=\"!tooltip\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n </label>\n</ng-template>\n\n<ng-template #optionRadioTemplate let-option=\"option\">\n <input\n class=\"cps-btn-toggle-content-option-input\"\n [type]=\"!multiple && mandatory ? 'radio' : 'checkbox'\"\n [disabled]=\"option.disabled || disabled\"\n [value]=\"option.value\"\n [checked]=\"\n option.value | checkOptionSelected : value : multiple : true : ''\n \"\n (change)=\"updateValueEvent($event)\" />\n <span class=\"cps-btn-toggle-content-option-content\">\n <span>{{ option.label }}</span>\n </span>\n</ng-template>\n","/*\n * Public API Surface of cps-ui-kit\n */\n\nexport * from './lib/components/cps-icon/cps-icon.component';\nexport * from './lib/components/cps-input/cps-input.component';\nexport * from './lib/components/cps-select/cps-select.component';\nexport * from './lib/components/cps-tree-select/cps-tree-select.component';\nexport * from './lib/components/cps-autocomplete/cps-autocomplete.component';\nexport * from './lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component';\nexport * from './lib/components/cps-info-circle/cps-info-circle.component';\nexport * from './lib/components/cps-button/cps-button.component';\nexport * from './lib/components/cps-checkbox/cps-checkbox.component';\nexport * from './lib/components/cps-radio/cps-radio.component';\nexport * from './lib/components/cps-table/cps-table.component';\nexport * from './lib/components/cps-table/cps-table-column-sortable.directive';\nexport * from './lib/components/cps-tag/cps-tag.component';\nexport * from './lib/components/cps-chip/cps-chip.component';\nexport * from './lib/components/cps-menu/cps-menu.component';\nexport * from './lib/components/cps-paginator/cps-paginator.component';\nexport * from './lib/components/cps-loader/cps-loader.component';\nexport * from './lib/components/cps-expansion-panel/cps-expansion-panel.component';\nexport * from './lib/components/cps-progress-circular/cps-progress-circular.component';\nexport * from './lib/components/cps-progress-linear/cps-progress-linear.component';\nexport * from './lib/components/cps-datepicker/cps-datepicker.component';\nexport * from './lib/components/cps-textarea/cps-textarea.component';\nexport * from './lib/components/cps-button-toggle/cps-button-toggle.component';\n\nexport * from './lib/directives/cps-tooltip.directive';\n\nexport * from './lib/utils/colors-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2.LabelByValuePipe","i4","i5","i2"],"mappings":"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"}