cps-ui-kit 0.158.0 → 0.159.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/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/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-select/cps-select.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-select/cps-select.component.html","../../../projects/cps-ui-kit/src/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.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-group/cps-radio-button/cps-radio-button.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio-group.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio-group.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio/cps-radio.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio/cps-radio.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-table/components/internal/table-row-menu/table-row-menu.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/cps-table-column-sortable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/internal/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-column-filter-types.ts","../../../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-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/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/cps-table-column-filter.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/cps-table-header-selectable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/cps-table-row-selectable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/cps-tree-table.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/cps-tree-table.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.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-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-paginator/pipes/cps-paginate.pipe.ts","../../../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-sidebar-menu/cps-sidebar-menu.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-sidebar-menu/cps-sidebar-menu.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-tab-group/cps-tab/cps-tab.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tab-group/cps-tab/cps-tab.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-tab-group/cps-tab-group.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tab-group/cps-tab-group.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-timepicker/cps-timepicker.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-timepicker/cps-timepicker.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-file-upload/cps-file-upload.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-file-upload/cps-file-upload.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/utils/cps-dialog-ref.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/utils/cps-dialog-config.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/directives/cps-dialog-content.directive.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/cps-dialog.service.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/utils/cps-notification-config.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/utils/internal/cps-notification-data.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-notification/cps-notification.service.ts","../../../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\n if (res.startsWith('calc(') && res.endsWith(')')) return res;\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-lock',\n 'access-menu',\n 'access-unlock',\n 'add',\n 'add-domain',\n 'attribute',\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 'columns',\n 'community',\n 'construction',\n 'controls',\n 'csv',\n 'cube',\n 'database',\n 'datafeed',\n 'datepicker',\n 'delete',\n 'dislike',\n 'domain',\n 'dots',\n 'download',\n 'dq',\n 'dropdown-menu',\n 'edit',\n 'expand',\n 'export',\n 'eye',\n 'filter',\n 'filter_2',\n 'filter-funnel',\n 'filter-funnel-filled',\n 'follow',\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 'maximize',\n 'menu-expand',\n 'menu-shrink',\n 'minimize',\n 'minus',\n 'move-grabber',\n 'open',\n 'path',\n 'pdf',\n 'pending',\n 'plus',\n 'projects',\n 'question',\n 'questions',\n 'rectangle-rounded',\n 'refresh',\n 'remove',\n 'right',\n 'schema',\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/**\n * CpsIconComponent is a component that is used for icons.\n * @group Components\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 /**\n * Name of the icon.\n * @group Props\n */\n @Input() icon: IconType = '';\n\n /**\n * Size of the icon, it can be of type number denoting pixels, string or 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() size: iconSizeType = 'small';\n\n /**\n * Color of the icon.\n * @group Props\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]=\"{\n width: cvtSize || 'none',\n height: cvtSize || 'none',\n display: 'flex'\n }\">\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/**\n * CpsProgressLinearComponent is a process status indicator of a rectangular form.\n * @group Components\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 /**\n * Width of the progress bar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Height of the progress bar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() height: number | string = '0.5rem';\n\n /**\n * Color of the progress bar.\n * @group Props\n */\n @Input() color = 'calm';\n\n /**\n * Background color of the progress bar.\n * @group Props\n */\n @Input() bgColor = 'white';\n\n /**\n * Option to control the transparency of the progress bar, of type number or string.\n * @group Props\n */\n @Input() opacity: number | string = 1;\n\n /**\n * Border radius of the progress bar, of type number or string.\n * @group Props\n */\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 CpsTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type CpsTooltipOpenOn = 'hover' | 'click' | 'focus';\n\n/**\n * CpsTooltipDirective provides advisory information for a target element.\n * @group Directives\n */\n@Directive({\n selector: '[cpsTooltip]',\n standalone: true\n})\nexport class CpsTooltipDirective implements OnDestroy {\n /**\n * Tooltip text or html to show.\n * @group Props\n */\n @Input('cpsTooltip') tooltip!: string;\n\n /**\n * Delay to show the tooltip in milliseconds, it can be of type string or number.\n * @group Props\n */\n @Input() tooltipOpenDelay: string | number = 300;\n\n /**\n * Delay to hide the tooltip in milliseconds, it can be of type string or number.\n * @group Props\n */\n @Input() tooltipCloseDelay: string | number = 300;\n\n /**\n * Determines whether the tooltip should open on hover, click or focus.\n * @group Props\n */\n @Input() tooltipOpenOn: CpsTooltipOpenOn = 'hover';\n\n /**\n * Position of the tooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() tooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Determines whether the tooltip is persistent.\n * @group Props\n */\n @Input() tooltipPersistent = false;\n\n /**\n * When present, it specifies that the tooltip should be disabled.\n * @group Props\n */\n @Input() tooltipDisabled = false;\n\n /**\n * Max width of the tooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() tooltipMaxWidth: number | string = '100%';\n\n /**\n * Tooltip content class for styling.\n * @group Props\n */\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 CpsTooltipPosition[];\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 CpsTooltipPosition,\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: CpsTooltipPosition,\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 CpsTooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\n/**\n * CpsInfoCircleComponent is a component that provides information by means of the info icon with the tooltip on hover.\n * @group Components\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 /**\n * Size of the icon, it can be of type number denoting pixels, string or 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() size: iconSizeType = 'small';\n\n /**\n * Tooltip text to provide more info.\n * @group Props\n */\n @Input() tooltipText = '';\n\n /**\n * Position of the tooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() tooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() tooltipContentClass = 'cps-tooltip-content';\n\n /**\n * Max width of the tooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() tooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the tooltip is persistent.\n * @group Props\n */\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 { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\n\nexport type CpsInputAppearanceType = 'outlined' | 'underlined' | 'borderless';\n\n/**\n * CpsInputComponent is used to enter values in a certain formats such as numeric, text or password.\n * @group Components\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 /**\n * Label of the input element.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Bottom hint text for the input field.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Placeholder text for the input field.\n * @group Props\n */\n @Input() placeholder = 'Please enter';\n\n /**\n * Determines whether input is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether input is readonly.\n * @group Props\n */\n @Input() readonly = false;\n\n /**\n * Width of the input field, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Type of the input of type 'text', 'number' or 'password'.\n * @group Props\n */\n @Input() type: 'text' | 'number' | 'password' = 'text';\n\n /**\n * When enabled, a loading bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Icon before input value.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * When enabled, prefixIcon is clickable.\n * @group Props\n */\n @Input() prefixIconClickable = false;\n\n /**\n * Size of icon before input value, of type number or string or it can be a value 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() prefixIconSize: iconSizeType = '18px';\n\n /**\n * Text before input value.\n * @group Props\n */\n @Input() prefixText = '';\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Error message.\n * @group Props\n */\n @Input() error = '';\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Styling appearance of input field, it can be \"outlined\" or \"underlined\" or \"borderless\".\n * @group Props\n */\n @Input() appearance: CpsInputAppearanceType = 'outlined';\n\n /**\n * Readonly value to display inside of input field.\n * @group Props\n */\n @Input() valueToDisplay = '';\n\n /**\n * Value of the input.\n * @group Props\n */\n @Input() set value(value: string) {\n if (!value) value = '';\n this._value = value;\n this.onChange(value);\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Callback to invoke on value change.\n * @param {string} string - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<string>();\n\n /**\n * Callback to invoke when the component receives focus.\n * @param {any}\n * @group Emits\n */\n @Output() focused = new EventEmitter();\n\n /**\n * Callback to invoke when the prefix icon is clicked.\n * @param {any}\n * @group Emits\n */\n @Output() prefixIconClicked = new EventEmitter();\n\n /**\n * Callback to invoke when the component loses focus.\n * @param {any}\n * @group Emits\n */\n @Output() blurred = new EventEmitter();\n\n /**\n * Callback to invoke when x icon is clicked.\n * @param {any}\n * @group Emits\n */\n @Output() cleared = new EventEmitter();\n\n /**\n * Callback to invoke when enter is clicked.\n * @param {any}\n * @group Emits\n */\n @Output() enterClicked = 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 public 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 ('pattern' in errors) {\n this.error = 'Value is invalid';\n return;\n }\n\n if ('email' in errors) {\n this.error = 'Email format is invalid';\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 onInputEnterKeyDown() {\n this.elementRef?.nativeElement?.querySelector('input')?.blur();\n this.enterClicked.emit();\n }\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 onClear() {\n this.clear();\n this.cleared.emit();\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 || this.readonly || this.disabled) 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 && !readonly }\"\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 borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <input\n *ngIf=\"!valueToDisplay\"\n spellcheck=\"false\"\n [type]=\"currentType\"\n [value]=\"value\"\n (input)=\"updateValueEvent($event)\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (keydown.enter)=\"onInputEnterKeyDown()\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\" />\n\n <input\n *ngIf=\"valueToDisplay\"\n [value]=\"valueToDisplay\"\n [disabled]=\"true\"\n [readonly]=\"true\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\" />\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.color]=\"disabled ? '#9a9595' : null\"\n [style.cursor]=\"\n prefixIconClickable && !disabled && !readonly\n ? 'pointer'\n : '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 && !readonly\">\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)=\"onClear()\"></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\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-input-error\">\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/**\n * CpsChipComponent represents a chip element.\n * @group Components\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 /**\n * Label of the chip element.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Name of the icon.\n * @group Props\n */\n @Input() icon: IconType = '';\n\n /**\n * Color of the icon.\n * @group Props\n */\n @Input() iconColor = 'text-darkest';\n\n /**\n * Position of the icon, it can be 'before' or 'after'. Defaults to 'before'.\n * @group Props\n */\n @Input() iconPosition: 'before' | 'after' = 'before';\n\n /**\n * Option for closing a chip element.\n * @group Props\n */\n @Input() closable = false;\n\n /**\n * Determines whether chip is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Callback to invoke on chip close.\n * @param {string} string - Chip closed.\n * @group Emits\n */\n @Output() closed = new EventEmitter<string>();\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(this.label);\n }\n}\n","<div [ngClass]=\"classesList\">\n <cps-icon\n *ngIf=\"icon\"\n class=\"cps-chip-icon\"\n [icon]=\"icon\"\n [color]=\"iconColor\"></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 { 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] : '';\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] : '';\n }\n })\n .join(', ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { 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?.some((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","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 { RouterModule } from '@angular/router';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n PLATFORM_ID,\n Renderer2,\n SimpleChanges,\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 url?: string;\n target?: string;\n disabled?: boolean;\n};\n\nexport type CpsMenuAttachPosition = 'tr' | 'br' | 'tl' | 'bl' | 'default';\n\n/**\n * CpsMenuComponent is a popup element, that contains menu items or arbitrary content.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [CommonModule, SharedModule, CpsIconComponent, RouterModule],\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 transform: 'scaleY(0.8)',\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 AfterViewInit, OnDestroy, OnChanges {\n /**\n * Header title of the menu.\n * @group Props\n */\n @Input() header = '';\n\n /**\n * An array of menu items.\n * @group Props\n */\n @Input() items: CpsMenuItem[] = [];\n\n /**\n * Determines whether to include top pointing arrow on the menu.\n * @group Props\n */\n @Input() withArrow = true;\n\n /**\n * Menu with prepared-colored items, without header and items description.\n * @group Props\n */\n @Input() compressed = false;\n\n /**\n * Determines whether the menu should show on target element focus.\n * @group Props\n */\n @Input() focusOnShow = true;\n\n /**\n * Determines whether the menu should be persistent.\n * @group Props\n */\n @Input() persistent = false;\n\n /**\n * Styling class of the menu container.\n * @group Props\n */\n @Input() containerClass = '';\n\n /**\n * Transition options of the show animation.\n * @group Props\n */\n @Input() showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n @Input() hideTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n /**\n * Callback to invoke when menu is shown.\n * @group Emits\n */\n @Output() menuShown = new EventEmitter();\n\n /**\n * Callback to invoke when menu is hidden.\n * @group Emits\n */\n @Output() menuHidden = new EventEmitter();\n\n /**\n * Callback to invoke before menu is hidden.\n * @group Emits\n */\n @Output() beforeMenuHidden = new EventEmitter();\n\n /**\n * Callback to invoke when content is clicked.\n * @group Emits\n */\n @Output() contentClicked = new EventEmitter();\n\n withIcons = true;\n autoZIndex = true;\n baseZIndex = 0;\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 position: CpsMenuAttachPosition = 'default';\n\n documentResizeListener!: VoidListener | null;\n overlayEventListener: Nullable<(event?: any) => void>;\n documentClickListener!: VoidListener | null;\n documentKeydownListener!: VoidListener | null;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n destroyCallback: Nullable<Function>;\n overlaySubscription: Subscription | undefined;\n\n resizeObserver: ResizeObserver;\n\n itemsClasses: string[] = [];\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 this.resizeObserver = new ResizeObserver((entries) => {\n if (this.target) {\n entries.forEach((entry) => {\n if (entry) this.align();\n });\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.items || changes.compressed) {\n if (this.compressed) this.withIcons = this.items.some((itm) => itm.icon);\n this._setItemsClasses();\n }\n }\n\n ngAfterViewInit(): void {\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\n }\n\n private _setItemsClasses() {\n if (this.items.length < 1) return;\n\n this.itemsClasses = this.items.map((item, index) => {\n const res = ['cps-menu-item'];\n if (item.disabled) res.push('cps-menu-item-disabled');\n if (index === 0) res.push('cps-menu-item-first');\n if (this.compressed) res.push('cps-menu-item-compressed');\n if (this.compressed && this.withIcons)\n res.push('cps-menu-item-compressed-with-icons');\n\n return res.join(' ');\n });\n }\n\n toggle(event?: any, target?: any, pos?: CpsMenuAttachPosition) {\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, pos);\n };\n }\n\n this.hide();\n } else {\n this.show(event, target, pos);\n }\n }\n\n show(event?: any, target?: any, pos?: CpsMenuAttachPosition) {\n target && event && event.stopPropagation();\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n this.target = target || event?.currentTarget || event?.target;\n if (this.target) this.resizeObserver.observe(this.target);\n this.overlayVisible = true;\n this.render = true;\n this.position = pos || 'default';\n this.cd.markForCheck();\n }\n\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n isVisible() {\n return this.overlayVisible;\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 bindDocumentKeydownListener() {\n if (DomHandler.isTouchDevice()) return;\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentKeydownListener && this.dismissable) {\n this.zone.runOutsideAngular(() => {\n const documentTarget: any = this.el\n ? this.el.nativeElement.ownerDocument\n : this.document;\n\n this.documentKeydownListener = this.renderer.listen(\n documentTarget,\n 'keydown',\n (event) => {\n // escape\n if (event.keyCode === 27) {\n this.zone.run(() => {\n if (this.overlayVisible) this.hide();\n });\n }\n }\n );\n });\n }\n }\n }\n\n unbindDocumentKeydownListener() {\n if (this.documentKeydownListener) {\n this.documentKeydownListener();\n this.documentKeydownListener = null;\n }\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' : 'mousedown';\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.persistent &&\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 setTimeout(() => {\n this.contentClicked.emit();\n }, 100);\n }\n\n hasTargetChanged(event?: any, target?: any) {\n return (\n this.target &&\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 private _setPosition(element: any, target: any) {\n const getPos = () => {\n const targetOffset = DomHandler.getOffset(target);\n switch (this.position) {\n case 'bl':\n return {\n top: Math.max(\n targetOffset.top + target.offsetHeight - element.offsetHeight,\n 0\n ),\n left: Math.max(0, targetOffset.left - element.offsetWidth)\n };\n case 'br':\n return {\n top: Math.max(\n targetOffset.top + target.offsetHeight - element.offsetHeight,\n 0\n ),\n left: Math.min(\n targetOffset.left + target.offsetWidth,\n window.innerWidth - element.offsetWidth\n )\n };\n case 'tl':\n return {\n top: Math.min(\n targetOffset.top,\n window.innerHeight - element.offsetHeight\n ),\n left: Math.max(0, targetOffset.left - element.offsetWidth)\n };\n case 'tr':\n return {\n top: Math.min(\n targetOffset.top,\n window.innerHeight - element.offsetHeight\n ),\n left: Math.min(\n targetOffset.left + target.offsetWidth,\n window.innerWidth - element.offsetWidth\n )\n };\n case 'default':\n default:\n DomHandler.absolutePosition(element, target);\n return undefined;\n }\n };\n\n if (!element || !target) return;\n const pos = getPos();\n if (pos) {\n element.style.top = (pos.top || 0) + 'px';\n element.style.left = (pos.left || 0) + 'px';\n }\n }\n\n align() {\n if (!this.target.isConnected) {\n this.hide();\n this._destroy();\n return;\n }\n\n if (this.autoZIndex) {\n ZIndexUtils.set(\n 'overlay',\n this.container,\n this.baseZIndex + this.config.zIndex.overlay\n );\n }\n\n this._setPosition(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 === 'close') {\n this.beforeMenuHidden.emit(null);\n } else if (event.toState === 'open') {\n this.container = event.element;\n if (this.container) this.resizeObserver.observe(this.container);\n this.appendContainer();\n this.align();\n this.bindDocumentClickListener();\n this.bindDocumentKeydownListener();\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.unbindDocumentKeydownListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n }\n\n private _destroy() {\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 this.overlaySubscription?.unsubscribe();\n\n this.resizeObserver?.disconnect();\n }\n\n ngOnDestroy() {\n this._destroy();\n }\n}\n","<div\n *ngIf=\"render\"\n class=\"cps-menu-container\"\n [ngClass]=\"{ 'cps-menu-no-arrow': !withArrow }\"\n [class]=\"containerClass\"\n (mousedown)=\"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 (mousedown)=\"onContentClick()\" (touchstart)=\"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\n <ng-container *ngFor=\"let item of items; let i = index\">\n <a\n *ngIf=\"!item.url\"\n (click)=\"onItemClick($event, item)\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [routerLink]=\"item.url\"\n [target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && !item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [href]=\"item.url\"\n [attr.target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #itemTemplate let-item=\"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 *ngIf=\"item.desc && !compressed\" class=\"cps-menu-item-content-desc\">{{\n item.desc\n }}</span>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\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 { 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 { isEqual } from 'lodash-es';\nimport {\n VirtualScroller,\n VirtualScrollerModule\n} from 'primeng/virtualscroller';\nimport { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\n\nexport type CpsSelectAppearanceType = 'outlined' | 'underlined' | 'borderless';\n\n/**\n * CpsSelectComponent is used to select items from a collection.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n LabelByValuePipe,\n CombineLabelsPipe,\n CheckOptionSelectedPipe,\n VirtualScrollerModule,\n CpsMenuComponent\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, AfterViewInit, OnDestroy\n{\n /**\n * The label of the select component.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Placeholder text for the select component.\n * @group Props\n */\n @Input() placeholder = 'Please select';\n\n /**\n * Bottom hint text for the select component.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Returns the object directly rather than the value specified with optionValue.\n * @group Props\n */\n @Input() returnObject = true;\n\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n @Input() multiple = false;\n\n /**\n * Specifies whether the component is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the select component, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Option for selecting all elements. Doesn't work with virtual scroll.\n * @group Props\n */\n @Input() selectAll = true;\n\n /**\n * When selecting elements, they will appear in a form of a chip.\n * @group Props\n */\n @Input() chips = true;\n\n /**\n * Determines whether the chips can be directly removed.\n * @group Props\n */\n @Input() closableChips = true;\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Determines whether the dropdown list should open on clear.\n * @group Props\n */\n @Input() openOnClear = true;\n\n /**\n * An array of options.\n * @group Props\n */\n @Input() options = [] as any[];\n\n /**\n * If multiple, determines whether selected options should be ordered according to the initial order of the options.\n * @group Props\n */\n @Input() keepInitialOrder = false;\n\n /**\n * Name of the label field of an option.\n * @group Props\n */\n @Input() optionLabel = 'label';\n\n /**\n * Name of the value field of an option. Needed only if returnObject prop is false.\n * @group Props\n */\n @Input() optionValue = 'value';\n\n /**\n * Name of the info field of an option, shows the additional information text.\n * @group Props\n */\n @Input() optionInfo = 'info';\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Icon before input value.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * Size of icon before input value, of type number or string or value 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() prefixIconSize: iconSizeType = '18px';\n\n /**\n * When enabled, a loading bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Class for additional styling of the dropdown list.\n * @group Props\n */\n @Input() optionsClass = '';\n\n /**\n * Styling appearance of select input, it can be 'outlined', 'underlined' or 'borderless'.\n * @group Props\n */\n @Input() appearance: CpsSelectAppearanceType = 'outlined';\n\n /**\n * Value of the select component.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {any} any - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<any>();\n\n @ViewChild('selectBox')\n selectBox!: ElementRef;\n\n @ViewChild('selectContainer')\n selectContainer!: ElementRef;\n\n @ViewChild('virtualList')\n virtualList!: VirtualScroller;\n\n @ViewChild('optionsMenu')\n optionsMenu!: CpsMenuComponent;\n\n @ViewChild('optionsList')\n optionsList!: ElementRef;\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n error = '';\n cvtWidth = '';\n isOpened = false;\n optionHighlightedIndex = -1;\n\n virtualListHeight = 240;\n virtualScrollItemSize = 42;\n\n selectBoxWidth = 0;\n resizeObserver: ResizeObserver;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n this.resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (entry?.target)\n this.selectBoxWidth = (entry.target as any).offsetWidth;\n });\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 ngAfterViewInit(): void {\n this.resizeObserver.observe(this.selectBox.nativeElement);\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n this.resizeObserver?.disconnect();\n }\n\n private _toggleOptions(show?: boolean): void {\n if (this.disabled || this.isOpened === show) return;\n\n if (typeof show === 'boolean') {\n if (show) {\n this.optionsMenu.show({\n target: this.selectBox.nativeElement\n });\n } else {\n this.optionsMenu.hide();\n }\n } else {\n this.optionsMenu.toggle({\n target: this.selectBox.nativeElement\n });\n }\n\n this.isOpened = this.optionsMenu.isVisible();\n\n setTimeout(() => {\n if (this.isOpened && this.options.length > 0) {\n const selected =\n this.optionsList.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.isEmptyValue()) {\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\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?.some((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 if (this.keepInitialOrder) {\n this.options.forEach((o) => {\n const ov = this.returnObject ? o : o[this.optionValue];\n if (\n this.value.some((v: any) => isEqual(v, ov)) ||\n isEqual(val, ov)\n ) {\n res.push(ov);\n }\n });\n } else {\n const opt = this.options.find((o) => {\n return isEqual(val, this.returnObject ? o : o[this.optionValue]);\n });\n if (opt) {\n res = [\n ...this.value,\n this.returnObject ? opt : opt[this.optionValue]\n ];\n }\n }\n }\n this.updateValue(res);\n } else {\n this.updateValue(val);\n }\n }\n\n onOptionClick(option: any) {\n this._clickOption(option);\n }\n\n private _clickOption(option: any) {\n this.select(option, false);\n if (!this.multiple) {\n this._toggleOptions(false);\n }\n }\n\n private _getHTMLOptions() {\n return (this.optionsList.nativeElement.querySelectorAll(\n '.cps-select-options-option'\n ) || []) as any;\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 onBeforeOptionsHidden() {\n this._toggleOptions(false);\n this._dehighlightOption();\n }\n\n onBoxClick() {\n this._toggleOptions();\n this._dehighlightOption();\n }\n\n onKeyDown(event: any) {\n event.preventDefault();\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._toggleOptions(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]);\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(event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && !this.isEmptyValue()) ||\n (this.multiple && this.value?.length > 0)\n ) {\n if (this.openOnClear) {\n this._toggleOptions(true);\n }\n const val = this.multiple ? [] : 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(true);\n }\n\n isEmptyValue(): boolean {\n return (\n this.value === null ||\n this.value === undefined ||\n (typeof this.value === 'string' && this.value.trim() === '') ||\n Number.isNaN(this.value)\n );\n }\n}\n","<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-select\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error, active: isOpened }\"\n #selectContainer\n (keydown)=\"onKeyDown($event)\"\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 borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-select-box\" #selectBox (click)=\"onBoxClick()\">\n <div class=\"cps-select-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-select-box-placeholder\"\n *ngIf=\"\n (!multiple && isEmptyValue()) || (value?.length < 1 && multiple)\n \">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-select-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (value?.length > 0 && multiple)\n \">\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 && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-select-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span class=\"cps-select-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n [containerClass]=\"'cps-select-options-menu ' + optionsClass\">\n <div\n #optionsList\n class=\"cps-select-options\"\n [ngStyle]=\"{\n width: selectBoxWidth + 'px'\n }\">\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 && options.length > 1\"\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: numToleratedItems }\"\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-menu>\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)\"\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 ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { TreeNode } from 'primeng/api';\nimport { Subscription } from 'rxjs';\nimport { Tree } from 'primeng/tree';\nimport { isEqual } from 'lodash-es';\nimport { IconType, iconSizeType } from '../../cps-icon/cps-icon.component';\nimport { convertSize } from '../../../utils/internal/size-utils';\nimport { CpsTooltipPosition } from '../../../directives/cps-tooltip.directive';\nimport { CpsMenuComponent } from '../../cps-menu/cps-menu.component';\n\n/**\n * BaseTreeDropdownComponent is an internal base component to support hierarchical data dropdown.\n * @group Components\n */\n@Component({\n template: ''\n})\nexport class CpsBaseTreeDropdownComponent\n implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy\n{\n /**\n * Label of the component.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Bottom hint text.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n @Input() multiple = false;\n\n /**\n * Determines whether the component is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the component, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * When selecting an element, it will appear in a form of a chip.\n * @group Props\n */\n @Input() chips = true;\n\n /**\n * Determines whether the chips can be directly removed.\n * @group Props\n */\n @Input() closableChips = true;\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Determines whether the dropdown should open on clear.\n * @group Props\n */\n @Input() openOnClear = true;\n\n /**\n * Name of the label field of an option.\n * @group Props\n */\n @Input() optionLabel = 'label';\n\n /**\n * Name of the info field of an option, shows the additional information text.\n * @group Props\n */\n @Input() optionInfo = 'info';\n\n /**\n * Options for hiding details.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Icon before input value.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * Size of icon before input value, of type number, string, 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() prefixIconSize: iconSizeType = '18px';\n\n /**\n * When enabled, a loading bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * When set, it expands all directiories initially.\n * @group Props\n */\n @Input() initialExpandDirectories = false;\n\n /**\n * When set, it expands all options initially.\n * @group Props\n */\n @Input() initialExpandAll = false;\n\n /**\n * An array of objects to display as the available options.\n * @group Props\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 /**\n * Value of the component.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {any} any - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<any>();\n\n @ViewChild('componentContainer')\n componentContainer!: ElementRef;\n\n @ViewChild('optionsMenu')\n optionsMenu!: CpsMenuComponent;\n\n @ViewChild('treeList') treeList!: Tree;\n\n @ViewChild('boxEl')\n boxEl!: ElementRef;\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n _options: TreeNode[] = [];\n optionsMap = new Map<string, TreeNode>();\n originalOptionsMap = new Map<string, any>();\n\n virtualListHeight = 240;\n virtualScrollItemSize = 40;\n\n error = '';\n cvtWidth = '';\n isOpened = false;\n optionFocused = false;\n isAutocomplete = false;\n\n treeContainerElement!: HTMLElement;\n treeSelection: any;\n\n boxWidth = 0;\n resizeObserver: ResizeObserver;\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 this.resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (entry?.target) this.boxWidth = (entry.target as any).offsetWidth;\n });\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.resizeObserver.observe(this.boxEl.nativeElement);\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n\n this.treeContainerElement?.removeEventListener(\n 'click',\n this._handleOnContainerClick.bind(this)\n );\n\n this.resizeObserver?.disconnect();\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 elem = event.target.classList.contains('p-treenode-content')\n ? event.target\n : getParentWithClass(event.target, 'p-treenode-content');\n\n if (\n elem?.parentElement?.classList?.contains('cps-tree-node-fully-expandable')\n ) {\n this.onClickFullyExpandable(elem);\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, internal = false) {\n this.value = value;\n if (!internal && value !== null) {\n this.treeSelection = this._valueToTreeSelection(this.value);\n }\n }\n\n updateValue(value: any): void {\n this.writeValue(value, true);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n onSelectNode() {\n if (!this.multiple) {\n this.toggleOptions(false);\n }\n }\n\n onClickFullyExpandable(elem: HTMLElement) {\n const parent = elem.parentElement;\n const key = this._getHTMLElementKey(parent);\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._nodeToggled(elem);\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(show?: boolean): void {\n if (this.disabled || this.isOpened === show) return;\n\n if (typeof show === 'boolean') {\n if (show) {\n this.optionsMenu.show({\n target: this.boxEl.nativeElement\n });\n } else {\n this.optionsMenu.hide();\n }\n } else {\n this.optionsMenu.toggle({\n target: this.boxEl.nativeElement\n });\n }\n\n this.isOpened = this.optionsMenu.isVisible();\n\n this.optionFocused = false;\n if (this.isOpened && this.treeSelection) {\n this._expandToNodes(\n this.multiple ? this.treeSelection : [this.treeSelection]\n );\n this.updateOptions();\n setTimeout(() => {\n this.recalcVirtualListHeight();\n const selected = this.treeContainerElement.querySelector(\n '.p-highlight'\n ) as any;\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 private _nodeToggled(elem: HTMLElement) {\n this.recalcVirtualListHeight();\n setTimeout(() => {\n this.optionsMenu.align();\n });\n elem?.focus();\n }\n\n private _nodeToggledWithChevron(elem: HTMLElement) {\n this._nodeToggled(elem);\n // fix primeng tree event stop propagation\n this.optionsMenu.selfClick = false;\n }\n\n onNodeExpand(event: any) {\n this._nodeToggledWithChevron(\n event?.originalEvent?.currentTarget?.parentElement\n );\n }\n\n onNodeCollapse(event: any) {\n this._nodeToggledWithChevron(\n event?.originalEvent?.currentTarget?.parentElement\n );\n }\n\n clear(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(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\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.componentContainer?.nativeElement?.focus();\n this.toggleOptions(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 const 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\n if (this.initialExpandAll) {\n inner.expanded = true;\n }\n\n if (o.isDirectory) {\n inner.type = 'directory';\n inner.selectable = false;\n inner.styleClass += ' cps-tree-node-fully-expandable';\n if (this.initialExpandDirectories) {\n inner.expanded = true;\n }\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 Input,\n OnDestroy,\n OnInit,\n Optional\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 { CombineLabelsPipe } from '../../pipes/internal/combine-labels.pipe';\nimport { TreeModule } from 'primeng/tree';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\nimport { CpsBaseTreeDropdownComponent } from '../internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component';\n\nexport type CpsTreeSelectAppearanceType =\n | 'outlined'\n | 'underlined'\n | 'borderless';\n\n/**\n * CpsTreeSelectComponent allows to select items from hierarchical data dropdown.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TreeModule,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n CombineLabelsPipe,\n CpsMenuComponent\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 CpsBaseTreeDropdownComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n /**\n * Styling appearance of tree select, it can be \"outlined\", \"underlined\" or \"borderless\".\n * @group Props\n */\n @Input() appearance: CpsTreeSelectAppearanceType = 'outlined';\n\n /**\n * Placeholder text.\n * @group Props\n */\n @Input() placeholder = 'Please select';\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 super.ngAfterViewInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n onBeforeOptionsHidden() {\n this.toggleOptions(false);\n }\n\n onBoxClick() {\n this.toggleOptions();\n }\n\n onKeyDown(event: any) {\n event.preventDefault();\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this.toggleOptions(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, active: isOpened }\"\n #componentContainer\n (keydown)=\"onKeyDown($event)\"\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 borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-treeselect-box\" #boxEl (click)=\"onBoxClick()\">\n <div class=\"cps-treeselect-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\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($event)\"></cps-icon>\n </span>\n <span class=\"cps-treeselect-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-treeselect-options-menu\">\n <div\n class=\"cps-treeselect-options\"\n [ngStyle]=\"{\n width: boxWidth + 'px'\n }\">\n <p-tree\n #treeList\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"onNodeExpand($event)\"\n (onNodeCollapse)=\"onNodeCollapse($event)\"\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-menu>\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 AfterViewInit,\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 { LabelByValuePipe } from '../../pipes/internal/label-by-value.pipe';\nimport { CheckOptionSelectedPipe } from '../../pipes/internal/check-option-selected.pipe';\nimport { isEqual } from 'lodash-es';\nimport {\n VirtualScroller,\n VirtualScrollerModule\n} from 'primeng/virtualscroller';\nimport { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\n\nexport type CpsAutocompleteAppearanceType =\n | 'outlined'\n | 'underlined'\n | 'borderless';\n\n/**\n * CpsAutocompleteComponent is an input component that provides real-time suggestions when being typed.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n LabelByValuePipe,\n CheckOptionSelectedPipe,\n VirtualScrollerModule,\n CpsMenuComponent\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, AfterViewInit, OnDestroy\n{\n /**\n * Label of the input element.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Placeholder text.\n * @group Props\n */\n @Input() placeholder = 'Please enter';\n\n /**\n * Bottom hint text.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Returns the object directly rather than the value specified with optionValue.\n * @group Props\n */\n @Input() returnObject = true;\n\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n @Input() multiple = false;\n\n /**\n * Determines whether autocomplete is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the input field, a number denoting pixels or a string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Option for selecting all elements. Doesn't work with virtual scroll.\n * @group Props\n */\n @Input() selectAll = true;\n\n /**\n * Determines whether the chevron icon should be displayed.\n * @group Props\n */\n @Input() showChevron = true;\n\n /**\n * Determines whether the options should be filtered by aliases in addition to labels.\n * @group Props\n */\n @Input() withOptionsAliases = false;\n\n /**\n * Determines whether the options should be filtered by aliases in addition to labels only when no label match is found. Works only If withOptionsAliases is true.\n * @group Props\n */\n @Input() useOptionsAliasesWhenNoMatch = false;\n\n /**\n * Name of the alias field of an option. Needed only if withOptionsAliases is true.\n * @group Props\n */\n @Input() optionAlias = 'alias';\n\n /**\n * When selecting elements, they will appear in a form of a chip.\n * @group Props\n */\n @Input() chips = true;\n\n /**\n * Determines whether the chips can be directly removed.\n * @group Props\n */\n @Input() closableChips = true;\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Determines whether the dropdown list should open on clear.\n * @group Props\n */\n @Input() openOnClear = true;\n\n /**\n * An array of options.\n * @group Props\n */\n @Input() options = [] as any[];\n\n /**\n * If multiple, determines whether selected options should be ordered according to the initial order of the options.\n * @group Props\n */\n @Input() keepInitialOrder = false;\n\n /**\n * Name of the label field of an option.\n * @group Props\n */\n @Input() optionLabel = 'label';\n\n /**\n * Name of the value field of an option. Needed only if returnObject prop is false.\n * @group Props\n */\n @Input() optionValue = 'value';\n\n /**\n * Name of the info field of an option, shows the additional information text.\n * @group Props\n */\n @Input() optionInfo = 'info';\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Icon before input value.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * Size of icon before input value, of type number or string or 'fill' or 'xsmall' or 'small' or 'normal' or 'large'.\n * @group Props\n */\n @Input() prefixIconSize: iconSizeType = '18px';\n\n /**\n * When enabled, a loading bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Text to display when there is no data. Defaults to 'No results found'.\n * @group Props\n */\n @Input() emptyMessage = 'No results found';\n\n /**\n * Determines whether the empty message should be displayed.\n * @group Props\n */\n @Input() showEmptyMessage = true;\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * Externally set error message.\n * @group Props\n */\n @Input() externalError = '';\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Styling appearance of autocomplete input, it could be 'outlined', 'underlined' or 'borderless'.\n * @group Props\n */\n @Input() appearance: CpsAutocompleteAppearanceType = 'outlined';\n\n /**\n * Value of the autocomplete.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {any} any - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<any>();\n\n /**\n * Callback to invoke when the component loses focus.\n * @param {any}\n * @group Emits\n */\n @Output() blurred = new EventEmitter();\n\n @ViewChild('autocompleteBox')\n autocompleteBox!: ElementRef;\n\n @ViewChild('autocompleteContainer')\n autocompleteContainer!: ElementRef;\n\n @ViewChild('virtualList')\n virtualList!: VirtualScroller;\n\n @ViewChild('optionsMenu')\n optionsMenu!: CpsMenuComponent;\n\n @ViewChild('optionsList')\n optionsList!: ElementRef;\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 autocompleteBoxWidth = 0;\n resizeObserver: ResizeObserver;\n\n isTimePickerField = false;\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 this.resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (entry?.target)\n this.autocompleteBoxWidth = (entry.target as any).offsetWidth;\n });\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 ngAfterViewInit(): void {\n this.resizeObserver.observe(this.autocompleteBox.nativeElement);\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n this.resizeObserver?.disconnect();\n }\n\n select(\n option: any,\n byValue: boolean,\n needClearInput = true,\n needFocusInput = true\n ): void {\n function includes(array: any[], val: any): boolean {\n return array?.some((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 if (this.keepInitialOrder) {\n this.options.forEach((o) => {\n const ov = this.returnObject ? o : o[this.optionValue];\n if (\n this.value.some((v: any) => isEqual(v, ov)) ||\n isEqual(val, ov)\n ) {\n res.push(ov);\n }\n });\n } else {\n const opt = this.options.find((o) => {\n return isEqual(val, this.returnObject ? o : o[this.optionValue]);\n });\n if (opt) {\n res = [\n ...this.value,\n this.returnObject ? opt : opt[this.optionValue]\n ];\n }\n }\n }\n this.updateValue(res);\n } else {\n this.updateValue(val);\n }\n\n if (needClearInput) {\n this._clearInput();\n }\n if (needFocusInput) {\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n }\n\n onOptionClick(option: any) {\n this._clickOption(option);\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(true);\n }\n this._dehighlightOption();\n this.backspaceClickedOnce = false;\n const searchVal = (event?.target?.value || '').toLowerCase();\n\n let _filteredOptions = this.options.filter((o: any) => {\n let res = o[this.optionLabel].toLowerCase().includes(searchVal);\n if (\n !res &&\n this.withOptionsAliases &&\n !this.useOptionsAliasesWhenNoMatch\n ) {\n res = o[this.optionAlias]?.toLowerCase()?.includes(searchVal) || false;\n }\n return res;\n });\n\n if (\n _filteredOptions.length === 0 &&\n this.withOptionsAliases &&\n this.useOptionsAliasesWhenNoMatch\n ) {\n _filteredOptions = this.options.filter(\n (o: any) =>\n o[this.optionAlias]?.toLowerCase()?.includes(searchVal) || false\n );\n }\n\n this.filteredOptions = _filteredOptions;\n\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n clear(event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && !this.isEmptyValue()) ||\n (this.multiple && this.value?.length > 0)\n ) {\n if (this.openOnClear) {\n this._toggleOptions(true);\n }\n const val = this.multiple ? [] : 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 this.blurred.emit();\n }\n\n onBeforeOptionsHidden() {\n this._confirmInput(this.inputText || '', false);\n this._closeAndClear();\n this.onBlur();\n }\n\n onBoxClick() {\n if (!this.multiple) {\n this.activeSingle = true;\n if (!this.inputText) this.inputText = this._getValueLabel();\n if (!this.isOpened) this.filteredOptions = this.options;\n }\n this._dehighlightOption();\n setTimeout(() => {\n this.focus();\n });\n }\n\n onContainerKeyDown(event: any) {\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._closeAndClear();\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);\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 || '', true);\n event.stopPropagation();\n }\n } else if ([38, 40].includes(code)) {\n event.preventDefault();\n }\n }\n\n onChevronClick(event: any) {\n event.stopPropagation();\n\n if (this.isOpened) {\n this._closeAndClear();\n } else {\n this.onBoxClick();\n }\n }\n\n focusInput() {\n this.autocompleteContainer?.nativeElement?.querySelector('input')?.focus();\n }\n\n focus() {\n this.focusInput();\n this._toggleOptions(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(show?: boolean): void {\n if (this.disabled || this.isOpened === show) return;\n\n this.backspaceClickedOnce = false;\n if (typeof show === 'boolean') {\n if (show) {\n this.optionsMenu.show({\n target: this.autocompleteBox.nativeElement\n });\n } else {\n this.optionsMenu.hide();\n }\n } else {\n this.optionsMenu.toggle({\n target: this.autocompleteBox.nativeElement\n });\n }\n\n this.isOpened = this.optionsMenu.isVisible();\n\n setTimeout(() => {\n if (this.isOpened && this.filteredOptions.length > 0) {\n this.recalcVirtualListHeight();\n\n const selected =\n this.optionsList.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.isEmptyValue()) {\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) {\n this.select(option, false);\n if (!this.multiple) {\n this._toggleOptions(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\n this.error = message || 'Unknown error';\n }\n\n private updateValue(value: any): void {\n if (!this.multiple && isEqual(value, this.value)) return;\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n private _getValueLabel() {\n return !this.isEmptyValue()\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() {\n this._clearInput();\n this._toggleOptions(false);\n this._dehighlightOption();\n }\n\n private _getHTMLOptions() {\n return (this.optionsList.nativeElement.querySelectorAll(\n '.cps-autocomplete-options-option'\n ) || []) as any;\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, needFocusInput: boolean) {\n if (!this.isOpened) return;\n\n searchVal = searchVal.toLowerCase();\n if (!searchVal) {\n if (this.multiple) return;\n this.updateValue(undefined);\n this._closeAndClear();\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, true, needFocusInput);\n this._toggleOptions(this.multiple);\n } else {\n if (!this.multiple) {\n if (this.isTimePickerField && this.filteredOptions.length > 0) {\n this.select(this.filteredOptions[0], false, false, needFocusInput);\n this._toggleOptions(false);\n }\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 isEmptyValue(): boolean {\n return (\n this.value === null ||\n this.value === undefined ||\n (typeof this.value === 'string' && this.value.trim() === '') ||\n Number.isNaN(this.value)\n );\n }\n}\n","<div\n data-cy-id=\"cps-autocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-autocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{\n disabled: disabled,\n error: error || externalError,\n active: isOpened\n }\"\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)\"\n class=\"cps-autocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div\n class=\"cps-autocomplete-box\"\n #autocompleteBox\n (mousedown)=\"onBoxClick()\">\n <div class=\"cps-autocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-autocomplete-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (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\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'multi-item-input'\n }\n \"></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\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'multi-chip-input'\n }\n \"></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 && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-autocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span\n *ngIf=\"showChevron\"\n class=\"cps-autocomplete-box-chevron\"\n (mousedown)=\"onChevronClick($event)\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-autocomplete-options-menu\">\n <div\n #optionsList\n class=\"cps-autocomplete-options\"\n [ngStyle]=\"{\n width: autocompleteBoxWidth + 'px'\n }\">\n <div\n *ngIf=\"showEmptyMessage && 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 &&\n selectAll &&\n filteredOptions.length === options.length &&\n options.length > 1\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: numToleratedItems }\"\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-menu>\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\n *ngIf=\"!error && !externalError && !hideDetails\"\n class=\"cps-autocomplete-hint\">\n {{ hint }}\n </div>\n <div\n *ngIf=\"(error || externalError) && !hideDetails\"\n 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 (!multiple && isEmptyValue()) || (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)\"\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 Input,\n OnDestroy,\n OnInit,\n Optional\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 { isEqual } from 'lodash-es';\nimport { TreeModule } from 'primeng/tree';\nimport { TreeNode } from 'primeng/api';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\nimport { CpsBaseTreeDropdownComponent } from '../internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component';\n\nexport type CpsTreeAutocompleteAppearanceType =\n | 'outlined'\n | 'underlined'\n | 'borderless';\n\n/**\n * CpsTreeAutocompleteComponent allows to choose items from hierarchical data dropdown and provides real-time suggestions when being typed.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TreeModule,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n CpsMenuComponent\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 CpsBaseTreeDropdownComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n /**\n * Message if array of items is empty.\n * @group Props\n */\n @Input() emptyMessage = 'No results found';\n\n /**\n * Styling appearance of tree autocomplete, it can be 'outlined', 'underlined' or 'borderless'.\n * @group Props\n */\n @Input() appearance: CpsTreeAutocompleteAppearanceType = 'outlined';\n\n /**\n * Placeholder text.\n * @group Props\n */\n @Input() placeholder = 'Please enter';\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.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 onBeforeOptionsHidden() {\n this._closeAndClear();\n }\n\n onBoxClick() {\n if (!this.multiple) {\n this.activeSingle = true;\n if (!this.inputText) this.inputText = this._getValueLabel();\n if (!this.isOpened) this.treeList.resetFilter();\n }\n this.focus();\n this.optionFocused = false;\n }\n\n onContainerKeyDown(event: any) {\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._closeAndClear();\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 onChevronClick(event: any) {\n event.stopPropagation();\n\n if (this.isOpened) {\n this._closeAndClear();\n } else {\n this.onBoxClick();\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?.some((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(event: any): void {\n super.clear(event);\n\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n focusInput() {\n this.componentContainer?.nativeElement?.querySelector('input')?.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(true);\n }\n this.backspaceClickedOnce = false;\n const searchVal = (event?.target?.value || '').toLowerCase();\n\n if (!searchVal) this.treeList.resetFilter();\n else this.treeList._filter(searchVal);\n }\n\n private _getValueLabel() {\n return this.treeSelection?.label || '';\n }\n\n private _clearInput() {\n this.treeList.resetFilter();\n this.inputText = '';\n this.activeSingle = false;\n this.updateOptions();\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n private _closeAndClear() {\n this._clearInput();\n this.toggleOptions(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();\n return;\n }\n\n const found = this.treeList?.serializedValue?.find(\n (sv: any) => sv?.node?.label?.toLowerCase() === searchVal\n );\n if (found) {\n this._select(found.node);\n this.toggleOptions(this.multiple);\n } else {\n if (!this.multiple) {\n this.inputText = this._getValueLabel();\n this.treeList.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 [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeautocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error, active: isOpened }\"\n #componentContainer>\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)\"\n class=\"cps-treeautocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-treeautocomplete-box\" #boxEl (mousedown)=\"onBoxClick()\">\n <div class=\"cps-treeautocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\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=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'multi-item-input'\n }\n \"></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=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'multi-chip-input'\n }\n \"></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($event)\"></cps-icon>\n </span>\n <span\n class=\"cps-treeautocomplete-box-chevron\"\n (mousedown)=\"onChevronClick($event)\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-treeautocomplete-options-menu\">\n <div\n class=\"cps-treeautocomplete-options\"\n [ngStyle]=\"{\n width: boxWidth + 'px'\n }\">\n <p-tree\n #treeList\n [emptyMessage]=\"emptyMessage\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"onNodeExpand($event)\"\n (onNodeCollapse)=\"onNodeCollapse($event)\"\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\n *ngIf=\"multiple\"\n 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-menu>\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/**\n * CpsProgressCircularComponent is a process status indicator in a form of a spinner.\n * @group Components\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 /**\n * Diameter of the progress bar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() diameter: number | string = 40;\n\n /**\n * Thickness of the progress bar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() strokeWidth: number | string = 4;\n\n /**\n * Color of the progress bar.\n * @group Props\n */\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/**\n * CpsButtonComponent is a button element.\n * @group Components\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 /**\n * Color of the button.\n * @group Props\n */\n @Input() color = 'calm';\n\n /**\n * Color of content on the button. Works only with 'solid' type.\n * @group Props\n */\n @Input() contentColor = 'white';\n\n /**\n * Type of the button in terms of appearance, it can be 'solid' or 'outlined' or 'borderless'.\n * @group Props\n */\n @Input() type: 'solid' | 'outlined' | 'borderless' = 'solid';\n\n /**\n * Label or text on the button.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Name of the icon on the button.\n * @group Props\n */\n @Input() icon: IconType = '';\n\n /**\n * Position of the icon on the button, it can be 'before' or 'after'.\n * @group Props\n */\n @Input() iconPosition: 'before' | 'after' = 'before';\n\n /**\n * Size on the button, it can be 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() size: 'xsmall' | 'small' | 'normal' | 'large' = 'normal';\n\n /**\n * Width on the button, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = 0;\n\n /**\n * Height on the button, of type number denoting pixels or string.\n * @group Props\n */\n @Input() height: number | string = 0;\n\n /**\n * When present, it specifies that the component should be disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * When enabled, a cps-progress-circular bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Callback to execute when button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\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' : null\">\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 OnInit,\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 { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsIconComponent, IconType } from '../cps-icon/cps-icon.component';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n/**\n * CpsCheckboxComponent is a checkbox element.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [CommonModule, CpsInfoCircleComponent, CpsIconComponent],\n selector: 'cps-checkbox',\n templateUrl: './cps-checkbox.component.html',\n styleUrls: ['./cps-checkbox.component.scss']\n})\nexport class CpsCheckboxComponent implements OnInit, ControlValueAccessor {\n /**\n * Label of the checkbox.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Determines whether checkbox is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Size of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Name of the icon.\n * @group Props\n */\n @Input() icon: IconType = '';\n\n /**\n * Color of the icon.\n * @group Props\n */\n @Input() iconColor = 'text-dark';\n\n /**\n * Value of the checkbox.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {boolean} boolean - value changed.\n * @group Emits\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 ngOnInit(): void {\n this.iconColor = getCSSColor(this.iconColor);\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: 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 [ngClass]=\"{\n 'cps-checkbox-disabled': disabled\n }\">\n <input\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"value\"\n (change)=\"updateValueEvent($event)\" />\n <span class=\"cps-checkbox-indicator\"></span>\n <cps-icon\n class=\"cps-checkbox-icon\"\n *ngIf=\"icon\"\n [icon]=\"icon\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : iconColor\">\n </cps-icon>\n <span *ngIf=\"label\" class=\"cps-checkbox-label\">{{ label }}</span>\n </label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\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 { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CpsRadioOption } from '../cps-radio-group.component';\nimport { CommonModule } from '@angular/common';\nimport { CpsTooltipDirective } from '../../../directives/cps-tooltip.directive';\n\nlet nextUniqueId = 0;\n\n/**\n * CpsRadioButtonComponent is an internal radio button component.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [CommonModule, CpsTooltipDirective],\n selector: 'cps-radio-button',\n templateUrl: './cps-radio-button.component.html',\n styleUrls: ['./cps-radio-button.component.scss']\n})\nexport class CpsRadioButtonComponent {\n private _uniqueId = `cps-radio-button-${++nextUniqueId}`;\n\n /**\n * An option.\n * @group Props\n */\n @Input() option!: CpsRadioOption;\n\n /**\n * Determines whether the radio button is checked.\n * @group Props\n */\n @Input() checked = false;\n\n /**\n * Determines whether the radio button is disabled.\n * @group Props\n */\n @Input() groupDisabled = false;\n\n /**\n * Callback to invoke on value update.\n * @param {Event} event - Custom update value event.\n * @group Emits\n */\n @Output() updateValueEvent = new EventEmitter<Event>();\n\n get inputId(): string {\n return `${this._uniqueId}-input`;\n }\n\n updateValue(event: Event): void {\n event.preventDefault();\n if (this.option.disabled) return;\n this.updateValueEvent.emit(this.option.value);\n }\n}\n","<div\n *ngIf=\"option.tooltip\"\n class=\"cps-radio-group-content-button\"\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</div>\n<div *ngIf=\"!option?.tooltip\" class=\"cps-radio-group-content-button\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n</div>\n\n<ng-template #optionRadioTemplate let-option=\"option\">\n <input\n [id]=\"inputId\"\n type=\"radio\"\n [disabled]=\"option.disabled || groupDisabled\"\n [value]=\"option.value\"\n [checked]=\"checked\"\n (change)=\"updateValue($event)\" />\n <div #contentRef class=\"content\">\n <ng-content></ng-content>\n </div>\n <label\n *ngIf=\"!contentRef.innerHTML.trim()\"\n [for]=\"inputId\"\n class=\"cps-radio-group-content-button-label\"\n [ngStyle]=\"{\n cursor: option.disabled || groupDisabled ? 'default' : 'pointer'\n }\"\n >{{ option.label }}\n </label>\n</ng-template>\n","/* eslint-disable no-use-before-define */\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n InjectionToken,\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 CpsTooltipPosition\n} from '../../directives/cps-tooltip.directive';\nimport { CpsRadioButtonComponent } from './cps-radio-button/cps-radio-button.component';\n\nexport type CpsRadioOption = {\n value: any;\n label?: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\nexport const CPS_RADIO_GROUP = new InjectionToken<CpsRadioGroupComponent>(\n 'CpsRadioGroupComponent'\n);\n\n/**\n * CpsRadioGroupComponent is a radio buttons group.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CpsInfoCircleComponent,\n CpsTooltipDirective,\n CpsRadioButtonComponent\n ],\n selector: 'cps-radio-group',\n templateUrl: './cps-radio-group.component.html',\n styleUrls: ['./cps-radio-group.component.scss'],\n providers: [\n {\n provide: CPS_RADIO_GROUP,\n useExisting: CpsRadioGroupComponent\n }\n ]\n})\nexport class CpsRadioGroupComponent implements ControlValueAccessor {\n /**\n * An array of options.\n * @group Props\n */\n @Input() options = [] as CpsRadioOption[];\n\n /**\n * Label of the radio group.\n * @group Props\n */\n @Input() groupLabel = '';\n\n /**\n * Determines whether the radio group should be vertical.\n * @group Props\n */\n @Input() vertical = false;\n\n /**\n * Determines whether the radio group is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Size of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be \"top\", \"bottom\", \"left\" or \"right\".\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Value of the radio group.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {boolean} boolean - value changed.\n * @group Emits\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(value: any) {\n if (this.disabled) return;\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 #contentRef\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-content></ng-content>\n </div>\n\n <div\n *ngIf=\"!contentRef.innerHTML.trim()\"\n class=\"cps-radio-group-content\"\n [ngClass]=\"\n vertical\n ? 'cps-radio-group-content-vertical'\n : 'cps-radio-group-content-horizontal'\n \">\n <cps-radio-button\n *ngFor=\"let option of options\"\n [option]=\"option\"\n [checked]=\"option.value === value\"\n [groupDisabled]=\"disabled\"\n (updateValueEvent)=\"updateValueEvent($event)\">\n </cps-radio-button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport {\n CPS_RADIO_GROUP,\n CpsRadioGroupComponent,\n CpsRadioOption\n} from '../cps-radio-group.component';\nimport { CpsTooltipDirective } from '../../../directives/cps-tooltip.directive';\nimport { CpsRadioButtonComponent } from '../cps-radio-button/cps-radio-button.component';\n\n/**\n * CpsRadioComponent is a radio button with arbitrary content.\n * @group Components\n */\n@Component({\n standalone: true,\n selector: 'cps-radio',\n imports: [\n CommonModule,\n CpsTooltipDirective,\n CpsRadioGroupComponent,\n CpsRadioButtonComponent\n ],\n templateUrl: './cps-radio.component.html',\n styleUrls: ['./cps-radio.component.scss']\n})\nexport class CpsRadioComponent implements OnInit {\n /**\n * An option.\n * @group Props\n */\n @Input() option!: CpsRadioOption;\n\n radioGroup?: CpsRadioGroupComponent;\n groupDisabled = false;\n\n constructor(\n @Optional() @Inject(CPS_RADIO_GROUP) radioGroup: CpsRadioGroupComponent\n ) {\n this.radioGroup = radioGroup;\n }\n\n ngOnInit(): void {\n this.groupDisabled = this.radioGroup?.disabled ?? false;\n }\n\n updateValueEvent(value: any): void {\n this.radioGroup?.updateValueEvent(value);\n }\n}\n","<cps-radio-button\n [option]=\"option\"\n [groupDisabled]=\"groupDisabled\"\n [checked]=\"radioGroup?.value == option.value\"\n (updateValueEvent)=\"updateValueEvent($event)\">\n <ng-content></ng-content>\n</cps-radio-button>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n/**\n * CpsLoaderComponent is a fetch data indicator.\n * @group Components\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 /**\n * Option for loader component to take up the whole screen.\n * @group Props\n */\n @Input() fullScreen = false;\n\n /**\n * Option to control the transparency of the loader component, of type number or string.\n * @group Props\n */\n @Input() opacity: number | string = 0.1;\n\n /**\n * Color of the label.\n * @group Props\n */\n @Input() labelColor = 'depth';\n\n /**\n * Determines whether to show 'Loading...' label.\n * @group Props\n */\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 { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CpsIconComponent } from '../../../../cps-icon/cps-icon.component';\nimport {\n CpsMenuComponent,\n CpsMenuItem\n} from '../../../../cps-menu/cps-menu.component';\n\n/**\n * TableRowMenuComponent is an internal component which applies the menu to each row.\n * @group Components\n */\n@Component({\n selector: 'table-row-menu',\n standalone: true,\n imports: [CpsIconComponent, CpsMenuComponent],\n templateUrl: './table-row-menu.component.html',\n styleUrls: ['./table-row-menu.component.scss']\n})\nexport class TableRowMenuComponent implements OnInit {\n /**\n * Callback to invoke when edit-row button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\n */\n @Output() editRowBtnClicked = new EventEmitter<any>();\n\n /**\n * Callback to invoke when remove-row button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\n */\n @Output() removeRowBtnClicked = new EventEmitter<any>();\n\n /**\n * Determines whether the 'Remove' button should be displayed in the menu.\n * @group Props\n */\n @Input()\n set showRowRemoveButton(value: boolean) {\n this._showRowRemoveButton = value;\n this.initializeItems();\n }\n\n get showRowRemoveButton(): boolean {\n return this._showRowRemoveButton;\n }\n\n /**\n * Determines whether the 'Edit' button should be displayed in the menu.\n * @group Props\n */\n @Input()\n set showRowEditButton(value: boolean) {\n this._showRowEditButton = value;\n this.initializeItems();\n }\n\n get showRowEditButton(): boolean {\n return this._showRowEditButton;\n }\n\n private _showRowRemoveButton = true;\n private _showRowEditButton = true;\n\n items: CpsMenuItem[] = [];\n\n ngOnInit(): void {\n this.initializeItems();\n }\n\n initializeItems() {\n this.items = [];\n\n if (this.showRowEditButton) {\n this.items.push({\n title: 'Edit',\n icon: 'edit',\n action: (event: any) => {\n this.editRowBtnClicked.emit(event);\n }\n });\n }\n\n if (this.showRowRemoveButton) {\n this.items.push({\n title: 'Remove',\n icon: 'remove',\n action: (event: any) => {\n this.removeRowBtnClicked.emit(event);\n }\n });\n }\n }\n}\n","<cps-menu #rowMenu [items]=\"items\" [compressed]=\"true\" [withArrow]=\"false\">\n</cps-menu>\n<cps-icon\n icon=\"dropdown-menu\"\n size=\"22\"\n (click)=\"rowMenu.toggle($event)\"\n class=\"cps-table-row-menu-icon\">\n</cps-icon>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core';\nimport { Table } from 'primeng/table';\nimport { TreeTable } from 'primeng/treetable';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'cps-sort-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './cps-sort-icon.component.html',\n styleUrls: ['./cps-sort-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CpsSortIconComponent implements OnInit, OnDestroy {\n @Input() field = '';\n\n subscription: Subscription;\n\n sortOrder = 0;\n\n _tableInstance: Table | TreeTable;\n\n constructor(\n @Optional() public dt: Table,\n @Optional() public tt: TreeTable,\n public cd: ChangeDetectorRef\n ) {\n this._tableInstance = dt || tt;\n this.subscription = this._tableInstance.tableService.sortSource$.subscribe(\n () => {\n this.updateSortState();\n }\n );\n }\n\n ngOnInit() {\n this.updateSortState();\n }\n\n onClick(event: Event) {\n event.preventDefault();\n }\n\n updateSortState() {\n if (this._tableInstance.sortMode === 'single') {\n this.sortOrder = this._tableInstance.isSorted(this.field)\n ? this._tableInstance.sortOrder\n : 0;\n } else if (this._tableInstance.sortMode === 'multiple') {\n const sortMeta = this._tableInstance.getSortMeta(this.field);\n this.sortOrder = sortMeta ? sortMeta.order : 0;\n }\n this.cd.markForCheck();\n }\n\n getMultiSortMetaIndex() {\n const multiSortMeta = this._tableInstance._multiSortMeta;\n let index = -1;\n\n if (\n multiSortMeta &&\n this._tableInstance.sortMode === 'multiple' &&\n ((this.dt && this.dt.showInitialSortBadge) || multiSortMeta.length > 1)\n ) {\n for (let i = 0; i < multiSortMeta.length; i++) {\n const meta = multiSortMeta[i];\n if (meta.field === this.field || meta.field === this.field) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n getBadgeValue() {\n const index = this.getMultiSortMetaIndex();\n return this.dt && this.dt.groupRowsBy && index > -1 ? index : index + 1;\n }\n\n isMultiSorted() {\n return (\n this._tableInstance.sortMode === 'multiple' &&\n this.getMultiSortMetaIndex() > -1\n );\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","<div *ngIf=\"sortOrder === 0\" class=\"cps-sortable-column-icon sort-unsorted\">\n <div class=\"sort-unsorted-arrow-up\"></div>\n <div class=\"sort-unsorted-arrow-down\"></div>\n</div>\n<div *ngIf=\"sortOrder === 1\" class=\"cps-sortable-column-icon sort-desc\"></div>\n<div *ngIf=\"sortOrder === -1\" class=\"cps-sortable-column-icon sort-asc\"></div>\n\n<span *ngIf=\"isMultiSorted()\" class=\"cps-sortable-column-badge\">{{\n getBadgeValue()\n}}</span>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { SortableColumn, Table } from 'primeng/table';\nimport { CpsSortIconComponent } from '../components/internal/cps-sort-icon/cps-sort-icon.component';\n\n/**\n * CpsTableColumnSortableDirective is a sorting directive used to sort single or multiple columns in table.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTColSortable]'\n})\nexport class CpsTableColumnSortableDirective\n extends SortableColumn\n implements OnInit, OnDestroy\n{\n /**\n * Name of the column to be sorted.\n * @group Props\n */\n @Input('cpsTColSortable') override field = '';\n\n sortIconRef: ComponentRef<CpsSortIconComponent>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n public override dt: Table\n ) {\n super(dt);\n this.sortIconRef =\n this.viewContainerRef.createComponent(CpsSortIconComponent);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.sortIconRef.setInput('field', this.field);\n this.elementRef.nativeElement.appendChild(\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 { Directive, Host, Self, Optional } from '@angular/core';\nimport { SortMeta } from 'primeng/api';\nimport { Table } from 'primeng/table';\nimport { ObjectUtils } from 'primeng/utils';\n\n@Directive({\n standalone: true,\n selector: '[tWithUnsort]',\n exportAs: 'tWithUnsort'\n})\nexport class TableUnsortDirective {\n resetSorting = false;\n sortIndices: number[] = [];\n\n constructor(@Host() @Self() @Optional() public pTable: Table) {\n pTable.sort = (event: any) => {\n if (pTable.sortMode === 'single') {\n if (pTable.sortField === event.field && pTable.sortOrder === -1) {\n pTable._sortOrder = pTable.defaultSortOrder;\n (pTable._sortField as any) = null;\n this.resetSorting = true;\n } else {\n pTable._sortOrder =\n pTable.sortField === event.field\n ? pTable.sortOrder * -1\n : pTable.defaultSortOrder;\n pTable._sortField = event.field;\n }\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 as any) = null;\n this.resetSorting = true;\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 this.resetSorting = false;\n };\n\n pTable.sortSingle = () => {\n const field = pTable.sortField || pTable.groupRowsBy;\n const order = pTable.sortField\n ? pTable.sortOrder\n : pTable.groupRowsByOrder;\n if (\n pTable.groupRowsBy &&\n pTable.sortField &&\n pTable.groupRowsBy !== pTable.sortField\n ) {\n pTable._multiSortMeta = [\n pTable.getGroupRowsMeta(),\n { field: pTable.sortField, order: pTable.sortOrder }\n ];\n pTable.sortMultiple();\n return;\n }\n\n if (order && (field || this.resetSorting)) {\n if (pTable.restoringSort) {\n pTable.restoringSort = false;\n }\n\n if (pTable.lazy) {\n pTable.onLazyLoad.emit(pTable.createLazyLoadMetadata());\n } else if (pTable.value) {\n if (pTable.customSort) {\n pTable.sortFunction.emit({\n data: pTable.value,\n mode: pTable.sortMode,\n field,\n order\n });\n } else {\n this._sortData(field, order);\n }\n\n if (pTable.hasFilter()) {\n pTable._filter();\n }\n }\n\n const sortMeta: SortMeta = {\n field,\n order\n };\n\n pTable.onSort.emit(sortMeta);\n pTable.tableService.onSort(sortMeta);\n }\n };\n\n pTable.sortMultiple = () => {\n if (pTable.groupRowsBy) {\n if (!pTable._multiSortMeta)\n pTable._multiSortMeta = [pTable.getGroupRowsMeta()];\n else if (pTable.multiSortMeta[0].field !== pTable.groupRowsBy)\n pTable._multiSortMeta = [\n pTable.getGroupRowsMeta(),\n ...pTable._multiSortMeta\n ];\n }\n\n if (\n (pTable.multiSortMeta && pTable.multiSortMeta.length > 0) ||\n this.resetSorting\n ) {\n if (pTable.lazy) {\n pTable.onLazyLoad.emit(pTable.createLazyLoadMetadata());\n } else if (pTable.value) {\n if (pTable.customSort) {\n pTable.sortFunction.emit({\n data: pTable.value,\n mode: pTable.sortMode,\n multiSortMeta: pTable.multiSortMeta\n });\n } else {\n this._sortData();\n }\n\n if (pTable.hasFilter()) {\n pTable._filter();\n }\n }\n\n pTable.onSort.emit({\n multisortmeta: pTable.multiSortMeta\n });\n pTable.tableService.onSort(pTable.multiSortMeta);\n }\n };\n }\n\n resetDefaultSortOrder() {\n this.sortIndices = [];\n }\n\n private _sortData(field?: any, order?: any) {\n // restore default sort order\n if (this.resetSorting && this.sortIndices.length > 0) {\n this.pTable._value = this.sortIndices.map(\n (index) => this.pTable._value[index]\n );\n this.resetDefaultSortOrder();\n } else {\n const toSort: any[] = [];\n if (this.sortIndices.length < 1) {\n this.sortIndices = Array.from(\n { length: this.pTable.value.length },\n (_, index) => index\n );\n }\n\n for (let i = 0; i < this.pTable.value.length; i++) {\n toSort.push([this.pTable.value[i], this.sortIndices.indexOf(i)]);\n }\n\n if (this.pTable.sortMode === 'single') {\n toSort.sort((data1, data2) => {\n const value1 = ObjectUtils.resolveFieldData(data1[0], field);\n const value2 = ObjectUtils.resolveFieldData(data2[0], field);\n return this.pTable.compareValuesOnSort(value1, value2, order);\n });\n } else {\n toSort.sort((data1, data2) => {\n return this._multisortField(data1, data2, 0);\n });\n }\n\n for (let i = 0; i < toSort.length; i++) {\n this.sortIndices[toSort[i][1]] = i;\n this.pTable.value[i] = toSort[i][0];\n }\n }\n\n this.pTable._value = [...this.pTable.value];\n }\n\n private _multisortField(data1: any, data2: any, index: number): number {\n const value1 = ObjectUtils.resolveFieldData(\n data1[0],\n this.pTable.multiSortMeta[index].field\n );\n const value2 = ObjectUtils.resolveFieldData(\n data2[0],\n this.pTable.multiSortMeta[index].field\n );\n if (ObjectUtils.compare(value1, value2, this.pTable.filterLocale) === 0) {\n return this.pTable.multiSortMeta.length - 1 > index\n ? this._multisortField(data1, data2, index + 1)\n : 0;\n }\n return this.pTable.compareValuesOnSort(\n value1,\n value2,\n this.pTable.multiSortMeta[index].order\n );\n }\n}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\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 { 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';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsMenuComponent, CpsMenuItem } from '../cps-menu/cps-menu.component';\nimport { CpsLoaderComponent } from '../cps-loader/cps-loader.component';\nimport { TableRowMenuComponent } from './components/internal/table-row-menu/table-row-menu.component';\nimport { CpsTableColumnSortableDirective } from './directives/cps-table-column-sortable.directive';\nimport { TableUnsortDirective } from './directives/internal/table-unsort.directive';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { isEqual } from 'lodash-es';\n\n// import jsPDF from 'jspdf';\n// import 'jspdf-autotable';\n\nexport function tableFactory(tableComponent: CpsTableComponent) {\n return tableComponent.primengTable;\n}\n\nexport type CpsTableExportFormat = 'csv' | 'xlsx'; // | 'pdf';\nexport type CpsTableSize = 'small' | 'normal' | 'large';\nexport type CpsTableToolbarSize = 'small' | 'normal';\nexport type CpsTableSortMode = 'single' | 'multiple';\n\n/**\n * CpsTableComponent displays data in tabular format.\n * @group Components\n */\n@Component({\n selector: 'cps-table',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n CommonModule,\n TableModule,\n TableUnsortDirective,\n CpsInputComponent,\n CpsButtonComponent,\n CpsSelectComponent,\n CpsIconComponent,\n CpsMenuComponent,\n CpsLoaderComponent,\n TableRowMenuComponent,\n CpsTableColumnSortableDirective\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, AfterViewChecked, OnChanges {\n /**\n * An array of objects to represent dynamic columns.\n * @group Props\n */\n @Input() columns: { [key: string]: any }[] = [];\n\n /**\n * A key used to retrieve the header from columns.\n * @group Props\n */\n @Input() colHeaderName = 'header';\n\n /**\n * A key used to retrieve the field from columns.\n * @group Props\n */\n @Input() colFieldName = 'field';\n\n /**\n * Determines whether the table should have alternating stripes.\n * @group Props\n */\n @Input() striped = true;\n\n /**\n * Determines whether the table should have borders.\n * @group Props\n */\n @Input() bordered = true;\n\n /**\n * Size of table cells, it can be \"small\", \"normal\" or \"large\".\n * @group Props\n */\n @Input() size: CpsTableSize = 'normal';\n\n /**\n * Determines whether the table should have row selection.\n * @group Props\n */\n @Input() selectable = false;\n\n /**\n * Determines whether the table should have rows highlighting on hover.\n * @group Props\n */\n @Input() rowHover = true;\n\n /**\n * Field, that uniquely identifies a record in data (needed for expandable rows).\n * @group Props\n */\n @Input() dataKey = '';\n\n /**\n * Determines whether the table should show row menus.\n * @group Props\n */\n @Input() showRowMenu = false;\n\n /**\n * Determines whether the 'Remove' button should be displayed in the row menu.\n * Note: This setting only takes effect if 'showRowMenu' is true.\n * @group Props\n */\n @Input() showRowRemoveButton = true;\n\n /**\n * Determines whether the 'Edit' button should be displayed in the row menu.\n * Note: This setting only takes effect if 'showRowMenu' is true.\n * @group Props\n */\n @Input() showRowEditButton = true;\n\n /**\n * Determines whether the table should have re-orderable rows.\n * @group Props\n */\n @Input() reorderableRows = false;\n\n /**\n * When enabled, a loader component is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Inline style of the table.\n * @group Props\n */\n @Input() tableStyle = undefined;\n\n /**\n * Style class of the table.\n * @group Props\n */\n @Input() tableStyleClass = '';\n\n /**\n * Makes all columns sortable if columns prop is provided.\n * @group Props\n */\n @Input() sortable = false;\n\n /**\n * Determines whether sorting works on single column or on multiple columns.\n * @group Props\n */\n @Input() sortMode: CpsTableSortMode = 'single';\n\n /**\n * Determines whether to use the default sorting or a custom one using sortFunction.\n * @group Props\n */\n @Input() customSort = false;\n\n /**\n * Determines whether the table has a toolbar.\n * @group Props\n */\n @Input() hasToolbar = true;\n\n /**\n * Toolbar size, it can be \"small\" or \"normal\".\n * @group Props\n */\n @Input() toolbarSize: CpsTableToolbarSize = 'normal';\n\n /**\n * Toolbar title.\n * @group Props\n */\n @Input() toolbarTitle = '';\n\n /**\n * Toolbar icon name.\n * @group Props\n */\n @Input() toolbarIcon = '';\n\n /**\n * Toolbar icon color.\n * @group Props\n */\n @Input() toolbarIconColor = '';\n\n /**\n * Makes table scrollable.\n * @group Props\n */\n @Input() scrollable = true;\n\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n * @group Props\n */\n @Input() scrollHeight = '';\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM. Works only if scrollable prop is true.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * Determines whether the table should have paginator.\n * @group Props\n */\n @Input() paginator = false;\n\n /**\n * Determines whether to show paginator even if there is only one page.\n * @group Props\n */\n @Input() alwaysShowPaginator = true;\n\n /**\n * Array of integer values to display inside rows per page dropdown of paginator.\n * @group Props\n */\n @Input() rowsPerPageOptions: number[] = [];\n\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n @Input() first = 0;\n\n /**\n * Number of rows to display per page.\n * @group Props\n */\n @Input() rows = 0;\n\n /**\n * Determines whether to reset page on rows change.\n * @group Props\n */\n @Input() resetPageOnRowsChange = false;\n\n /**\n * Determines whether to reset page on table data sorting.\n * @group Props\n */\n @Input() resetPageOnSort = true;\n\n /**\n * Number of total records.\n * @group Props\n */\n @Input() totalRecords = 0;\n\n /**\n * Text to display when there is no data.\n * @group Props\n */\n @Input() emptyMessage = 'No data';\n\n /**\n * Height of table's body when there is no data, of type number denoting pixels or string.\n * @group Props\n */\n @Input() emptyBodyHeight: number | string = '';\n\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n @Input() lazy = false;\n\n /**\n * Determines whether to call lazy loading on initialization.\n * @group Props\n */\n @Input() lazyLoadOnInit = true;\n\n /**\n * Determines whether to show global filter in the toolbar.\n * @group Props\n */\n @Input() showGlobalFilter = false;\n\n /**\n * Global filter placeholder.\n * @group Props\n */\n @Input() globalFilterPlaceholder = 'Search';\n\n /**\n * An array of fields to use in global filtering.\n * @group Props\n */\n @Input() globalFilterFields: string[] = [];\n\n /**\n * Determines whether to clear global filter on data loading.\n * @group Props\n */\n @Input() clearGlobalFilterOnLoading = false;\n\n /**\n * Determines whether to show remove button in the toolbar when rows are selected.\n * @group Props\n */\n @Input() showRemoveBtnOnSelect = true;\n\n /**\n * Determines whether removeBtnOnSelect is disabled.\n * @group Props\n */\n @Input() removeBtnOnSelectDisabled = false;\n\n /**\n * Determines whether to show additional button in the toolbar when rows are selected.\n * @group Props\n */\n @Input() showAdditionalBtnOnSelect = false;\n\n /**\n * AdditionalBtnOnSelect title.\n * @group Props\n */\n @Input() additionalBtnOnSelectTitle = 'Select action';\n\n /**\n * Determines whether additionalBtnOnSelect is disabled.\n * @group Props\n */\n @Input() additionalBtnOnSelectDisabled = false;\n\n /**\n * Determines whether to show action button in the toolbar.\n * @group Props\n */\n @Input() showActionBtn = false;\n\n /**\n * Action button title.\n * @group Props\n */\n @Input() actionBtnTitle = 'Action';\n\n /**\n * Determines whether actionBtn is disabled.\n * @group Props\n */\n @Input() actionBtnDisabled = false;\n\n /**\n * Determines whether to show export button in the toolbar.\n * @group Props\n */\n @Input() showExportBtn = false;\n\n /**\n * Determines whether exportBtn is disabled.\n * @group Props\n */\n @Input() exportBtnDisabled = false;\n\n /**\n * Name of the exported file.\n * @group Props\n */\n @Input() exportFilename = 'download';\n\n /**\n * Character to use as the csv separator.\n * @group Props\n */\n @Input() csvSeparator = ',';\n\n /**\n * Determines whether to show data reload button in the toolbar.\n * @group Props\n */\n @Input() showDataReloadBtn = false;\n\n /**\n * Determines whether dataReloadBtn is disabled.\n * @group Props\n */\n @Input() dataReloadBtnDisabled = false;\n\n /**\n * Determines whether the table should show columnsToggle menu, where you can choose which columns to be displayed. If external body template is provided, use columnsSelected event emitter.\n * @group Props\n */\n @Input() showColumnsToggleBtn = false;\n\n /**\n * Determines whether columnsToggle button is disabled.\n * @group Props\n */\n @Input() columnsToggleBtnDisabled = false;\n\n /**\n * Array of initial columns to show in the table. If not provided, all columns are initially visible.\n * @group Props\n */\n @Input() initialColumns: { [key: string]: any }[] = [];\n\n /**\n * An array of objects to display.\n * @group Props\n */\n @Input() set data(value: any[]) {\n this._data = [...value];\n }\n\n get data(): any[] {\n return this._data;\n }\n\n /**\n * Callback to invoke on selection changed. Returns selected rows.\n * @param {any[]} any[] - selected rows.\n * @group Emits\n */\n @Output() rowsSelected = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke on selection changed. Returns selected rows indexes.\n * @param {number[]} number[] - selected rows indexes.\n * @group Emits\n */\n @Output() selectedRowIndexes = new EventEmitter<number[]>();\n\n /**\n * Callback to invoke when action button is clicked.\n * @param {void} void - action button clicked.\n * @group Emits\n */\n @Output() actionBtnClicked = new EventEmitter<void>();\n\n /**\n * Callback to invoke when edit-row button is clicked.\n * @param {{row: any, index: number}} {row: any, index: number} - edit-row button clicked.\n * @group Emits\n */\n @Output() editRowBtnClicked = new EventEmitter<{ row: any; index: number }>();\n\n /**\n * Callback to invoke on rows removal. Returns rows.\n * @param {any[]} any[] - array of rows to remove.\n * @group Emits\n */\n @Output() rowsToRemove = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke on rows removal. Returns rows indexes.\n * @param {number[]} number[] - array of indexes of rows to remove.\n * @group Emits\n */\n @Output() rowIndexesToRemove = new EventEmitter<number[]>();\n\n /**\n * Callback to invoke on page changed.\n * @param {any} any - page changed.\n * @group Emits\n */\n @Output() pageChanged = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data is sorted.\n * @param {any} any - sort meta.\n * @group Emits\n */\n @Output() sorted = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data is filtered.\n * @param {any} any - custom filtering event.\n * @group Emits\n */\n @Output() filtered = new EventEmitter<any>();\n\n /**\n * Callback to invoke when rows are reordered.\n * @param {any} any - rows reordered.\n * @group Emits\n */\n @Output() rowsReordered = new EventEmitter<any>();\n\n /**\n * Callback to invoke on columns selection.\n * @param {object} object - selected column.\n * @group Emits\n */\n @Output() columnsSelected = new EventEmitter<{ [key: string]: any }[]>();\n\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {any} any - custom lazy loading event.\n * @group Emits\n */\n @Output() lazyLoaded = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data-reload button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\n */\n @Output() dataReloadBtnClicked = new EventEmitter<any>();\n\n /**\n * Callback to invoke when additional button on select is clicked.\n * @param {any[]} any[] - selected data.\n * @group Emits\n */\n @Output() additionalBtnOnSelectClicked = new EventEmitter<any[]>();\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('nestedHeader', { static: false })\n public nestedHeaderTemplate!: TemplateRef<any>;\n\n @ContentChild('body', { static: false })\n public bodyTemplate!: TemplateRef<any>;\n\n @ContentChild('rowexpansion', { static: false })\n public rowExpansionTemplate!: TemplateRef<any>;\n\n @ViewChild('primengTable', { static: true })\n primengTable!: Table;\n\n @ViewChild('globalFilterComp')\n globalFilterComp!: CpsInputComponent;\n\n @ViewChild('exportMenu')\n exportMenu!: CpsMenuComponent;\n\n @ViewChild('colToggleMenu')\n colToggleMenu!: CpsMenuComponent;\n\n @ViewChild('tUnsortDirective') tUnsortDirective!: TableUnsortDirective;\n\n _data: any[] = [];\n\n selectedRows: any[] = [];\n\n virtualScrollItemSize = 0;\n\n rowOptions: { label: string; value: number }[] = [];\n\n selectedColumns: { [key: string]: any }[] = [];\n\n exportMenuItems = [\n {\n title: 'CSV',\n icon: 'csv',\n action: () => {\n this.exportTable('csv');\n }\n },\n {\n title: 'XLSX',\n icon: 'xls',\n action: () => {\n this.exportTable('xlsx');\n }\n }\n // {\n // title: 'PDF',\n // icon: 'pdf',\n // action: () => {\n // this.exportTable('pdf');\n // }\n // }\n ] as CpsMenuItem[];\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.emptyBodyHeight = convertSize(this.emptyBodyHeight);\n if (!this.scrollable) this.virtualScroll = false;\n\n if (this.showAdditionalBtnOnSelect) this.showRemoveBtnOnSelect = 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\n this.selectedColumns =\n this.initialColumns.length > 0 ? this.initialColumns : this.columns;\n }\n\n get styleClass() {\n const classesList = [];\n switch (this.size) {\n case 'small':\n classesList.push('p-datatable-sm');\n break;\n case 'large':\n classesList.push('p-datatable-lg');\n break;\n }\n if (this.hasToolbar) {\n switch (this.toolbarSize) {\n case 'small':\n classesList.push('cps-tbar-small');\n break;\n case 'normal':\n classesList.push('cps-tbar-normal');\n break;\n }\n }\n\n if (this.striped) {\n classesList.push('p-datatable-striped');\n }\n if (this.bordered) {\n classesList.push('p-datatable-gridlines');\n }\n\n return classesList.join(' ');\n }\n\n ngAfterViewChecked() {\n if (!this.virtualScroll || this.virtualScrollItemSize) return;\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 ngOnChanges(changes: SimpleChanges): void {\n if (this.loading) {\n this.clearSelection();\n if (this.clearGlobalFilterOnLoading) this.clearGlobalFilter();\n }\n\n if (changes?.data) {\n this.resetSortingState();\n this.selectedRows = this.selectedRows.filter((sr) =>\n this.data.includes(sr)\n );\n }\n }\n\n resetSortingState() {\n this.tUnsortDirective?.resetDefaultSortOrder();\n }\n\n clearSelection() {\n this.selectedRows = [];\n }\n\n clearGlobalFilter() {\n this.globalFilterComp?.clear();\n }\n\n onSelectionChanged(selection: any[]) {\n this.rowsSelected.emit(selection);\n\n const indexes = this._getIndexes(selection);\n this.selectedRowIndexes.emit(indexes);\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 this.rowsToRemove.emit(this.selectedRows);\n\n const indexes = this._getIndexes(this.selectedRows);\n this.rowIndexesToRemove.emit(indexes);\n }\n\n onClickAdditionalBtnOnSelect() {\n this.additionalBtnOnSelectClicked.emit(this.selectedRows);\n }\n\n onClickActionBtn() {\n this.actionBtnClicked.emit();\n }\n\n onRowsPerPageChanged() {\n if (this.resetPageOnRowsChange) {\n this.primengTable.first = 0;\n }\n this.changePage(this.getPage());\n }\n\n getPageCount() {\n return Math.ceil(this.primengTable.totalRecords / this.rows);\n }\n\n getPage(): number {\n return Math.floor(this.primengTable.first / this.rows);\n }\n\n changePage(p: number) {\n const pc = Math.ceil(this.getPageCount());\n\n if (p >= 0 && p < pc) {\n this.first = this.rows * p;\n this.primengTable.onPageChange({ first: this.first, rows: this.rows });\n }\n }\n\n onPageChange(event: any) {\n this.first = event.first;\n this.rows = event.rows;\n\n const state = {\n page: this.getPage(),\n first: this.first,\n rows: this.rows,\n pageCount: Math.ceil(this.getPageCount())\n };\n\n this.pageChanged.emit(state);\n }\n\n toggleAllColumns() {\n this.selectedColumns =\n this.selectedColumns.length < this.columns.length ? this.columns : [];\n this.columnsSelected.emit(this.selectedColumns);\n }\n\n isColumnSelected(col: any) {\n return this.selectedColumns.some((item) => isEqual(item, col));\n }\n\n onSelectColumn(col: any) {\n let res = [] as any;\n if (this.isColumnSelected(col)) {\n res = this.selectedColumns.filter((v: any) => !isEqual(v, col));\n } else {\n this.columns.forEach((o) => {\n if (\n this.selectedColumns.some((v: any) => isEqual(v, o)) ||\n isEqual(col, o)\n ) {\n res.push(o);\n }\n });\n }\n this.selectedColumns = res;\n this.columnsSelected.emit(this.selectedColumns);\n }\n\n onEditRowClicked(row: any) {\n const [index] = this._getIndexes([row]);\n this.editRowBtnClicked.emit({ row, index });\n }\n\n onRemoveRowClicked(item: any) {\n this.rowsToRemove.emit([item]);\n\n const indexes = this._getIndexes([item]);\n this.rowIndexesToRemove.emit(indexes);\n }\n\n onSort(event: any) {\n this.sorted.emit(event);\n }\n\n onFilter(event: any) {\n this.filtered.emit(event);\n }\n\n onRowReorder(event: any) {\n this.rowsReordered.emit(event);\n }\n\n onLazyLoaded(event: any) {\n this.lazyLoaded.emit(event);\n }\n\n onReloadData() {\n if (this.dataReloadBtnDisabled) return;\n this.dataReloadBtnClicked.emit();\n }\n\n onExportData(event: any) {\n if (this.exportBtnDisabled) return;\n this.exportMenu?.toggle(event);\n }\n\n onColumnsToggle(event: any) {\n if (this.columnsToggleBtnDisabled) return;\n this.colToggleMenu?.toggle(event);\n }\n\n private _getIndexes(rows: any[]) {\n let indexes: number[] = rows.map((row) =>\n this.primengTable.value.indexOf(row)\n );\n\n const indexesMap = this.tUnsortDirective?.sortIndices;\n if (indexesMap && indexesMap.length > 0) {\n indexes = indexes.map((i) => indexesMap.indexOf(i));\n }\n\n return indexes;\n }\n\n exportTable(format: CpsTableExportFormat) {\n if (this.columns.length < 1) throw new Error('Columns must be defined!');\n if (this.selectedColumns.length < 1) throw new Error('Nothing to export!');\n\n switch (format) {\n case 'csv':\n this.primengTable.exportCSV();\n break;\n\n case 'xlsx':\n this.exportXLSX();\n break;\n\n // case 'pdf':\n // this.exportPDF();\n // break;\n }\n }\n\n exportXLSX() {\n import('xlsx').then((xlsx) => {\n const sheetData = [\n this.selectedColumns.map(\n (c: { [key: string]: any }) => c[this.colHeaderName]\n ),\n ...this.primengTable.value.map((item: any) =>\n this.selectedColumns.map(\n (c: { [key: string]: any }) => item[c[this.colFieldName]]\n )\n )\n ];\n\n const worksheet = xlsx.utils.json_to_sheet(sheetData, {\n skipHeader: true\n });\n const workbook = {\n Sheets: { [this.exportFilename]: worksheet },\n SheetNames: [this.exportFilename]\n };\n const xlsxBuffer: any = xlsx.write(workbook, {\n bookType: 'xlsx',\n type: 'array'\n });\n\n const EXCEL_TYPE =\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n const blob: Blob = new Blob([xlsxBuffer], {\n type: EXCEL_TYPE\n });\n\n const downloadLink = document.createElement('a');\n downloadLink.href = URL.createObjectURL(blob);\n downloadLink.download = `${this.exportFilename}.xlsx`;\n downloadLink.click();\n });\n }\n\n // exportPDF() {\n // const exportColumns = this.selectedColumns.map((col) => ({\n // title: col[this.colHeaderName],\n // dataKey: col[this.colFieldName]\n // }));\n // // eslint-disable-next-line new-cap\n // const doc = new jsPDF({\n // orientation: this.selectedColumns.length > 3 ? 'l' : 'p',\n // unit: 'px',\n // format: 'a4'\n // });\n // (doc as any).autoTable({\n // headStyles: { fillColor: '#870a3c' },\n // columns: exportColumns,\n // body: this.primengTable.value\n // });\n // doc.save(`${this.exportFilename}.pdf`);\n // }\n}\n","<p-table\n #primengTable\n #tUnsortDirective=\"tWithUnsort\"\n tWithUnsort\n [ngClass]=\"{ 'cps-table-loading': loading }\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [value]=\"data\"\n [dataKey]=\"dataKey\"\n [columns]=\"selectedColumns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [globalFilterFields]=\"globalFilterFields\"\n [showInitialSortBadge]=\"false\"\n [loading]=\"loading\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [lazy]=\"lazy\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [exportFilename]=\"exportFilename\"\n [csvSeparator]=\"csvSeparator\"\n (onPage)=\"onPageChange($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onSort)=\"onSort($event)\"\n (onFilter)=\"onFilter($event)\"\n (onRowReorder)=\"onRowReorder($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 *ngIf=\"toolbarIcon\" class=\"cps-table-tbar-icon\">\n <cps-icon [icon]=\"toolbarIcon\" [color]=\"toolbarIconColor\"></cps-icon>\n </div>\n <div class=\"cps-table-tbar-title\">{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-table-tbar-global-filter\">\n <cps-input\n #globalFilterComp\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\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-btn-on-select\">\n <cps-button\n label=\"Remove\"\n [disabled]=\"removeBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showAdditionalBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n [label]=\"additionalBtnOnSelectTitle\"\n [disabled]=\"additionalBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickAdditionalBtnOnSelect()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-table-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n [disabled]=\"actionBtnDisabled\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggleBtn && columns.length > 0\"\n class=\"cps-table-tbar-coltoggle-btn\"\n [ngClass]=\"{ 'btn-disabled': columnsToggleBtnDisabled }\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n [color]=\"\n columnsToggleBtnDisabled ? 'text-lightest' : 'prepared-lighten1'\n \"\n (click)=\"onColumnsToggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-table-coltoggle-menu\">\n <div\n class=\"cps-table-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-table-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-table-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"></span>\n <span class=\"cps-table-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n <div\n *ngIf=\"showExportBtn\"\n class=\"cps-table-tbar-export-btn\"\n [ngClass]=\"{ 'btn-disabled': exportBtnDisabled }\">\n <cps-icon\n icon=\"export\"\n size=\"20\"\n [color]=\"exportBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onExportData($event)\"></cps-icon>\n <cps-menu\n #exportMenu\n [items]=\"exportMenuItems\"\n [compressed]=\"true\"\n [withArrow]=\"false\">\n </cps-menu>\n </div>\n <div\n *ngIf=\"showDataReloadBtn\"\n class=\"cps-table-tbar-reload-btn\"\n [ngClass]=\"{ 'btn-disabled': dataReloadBtnDisabled }\">\n <cps-icon\n icon=\"refresh\"\n size=\"18\"\n [color]=\"dataReloadBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onReloadData()\">\n </cps-icon>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <th style=\"width: 3rem\" *ngIf=\"rowExpansionTemplate\"></th>\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\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th *ngFor=\"let col of columns\" [cpsTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th\n style=\"width: 2rem\"\n class=\"cps-table-row-menu-cell\"\n *ngIf=\"showRowMenu && (showRowRemoveButton || showRowEditButton)\"></th>\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 let-expanded=\"expanded\">\n <tr\n [pReorderableRow]=\"rowIndex\"\n [ngClass]=\"{\n 'cps-table-row-selected': selectable && primengTable.isSelected(item)\n }\">\n <td *ngIf=\"rowExpansionTemplate\" class=\"cps-table-row-chevron-cell\">\n <div\n class=\"cps-table-row-chevron\"\n [ngClass]=\"{ 'cps-table-row-chevron-expanded': expanded }\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"\n [pRowToggler]=\"item\">\n </cps-icon>\n </div>\n </td>\n <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" 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 *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: item,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\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 <td\n *ngIf=\"showRowMenu && (showRowRemoveButton || showRowEditButton)\"\n class=\"cps-table-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(item)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(item)\"\n [showRowRemoveButton]=\"showRowRemoveButton\"\n [showRowEditButton]=\"showRowEditButton\">\n </table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" *ngIf=\"rowExpansionTemplate\" let-item>\n <tr class=\"cps-table-row-expanded-content\">\n <td colspan=\"100\">\n <ng-container\n *ngTemplateOutlet=\"\n rowExpansionTemplate;\n context: {\n $implicit: item\n }\n \"></ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-table-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\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 >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n</p-table>\n","/* eslint-disable no-unused-vars */\nexport enum CpsColumnFilterMatchMode {\n STARTS_WITH = 'startsWith',\n CONTAINS = 'contains',\n NOT_CONTAINS = 'notContains',\n ENDS_WITH = 'endsWith',\n EQUALS = 'equals',\n NOT_EQUALS = 'notEquals',\n IN = 'in',\n LESS_THAN = 'lt',\n LESS_THAN_OR_EQUAL_TO = 'lte',\n GREATER_THAN = 'gt',\n GREATER_THAN_OR_EQUAL_TO = 'gte',\n BETWEEN = 'between',\n IS = 'is',\n IS_NOT = 'isNot',\n BEFORE = 'before',\n AFTER = 'after',\n DATE_IS = 'dateIs',\n DATE_IS_NOT = 'dateIsNot',\n DATE_BEFORE = 'dateBefore',\n DATE_AFTER = 'dateAfter'\n}\n\nexport type CpsColumnFilterCategoryOption = {\n value: any;\n label?: string;\n icon?: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\nexport type CpsColumnFilterType =\n | 'text'\n | 'number'\n | 'date'\n | 'boolean'\n | 'category';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\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 { convertSize } from '../../utils/internal/size-utils';\nimport { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\n\nexport type CpsDatepickerAppearanceType =\n | 'outlined'\n | 'underlined'\n | 'borderless';\n\n/**\n * CpsDatepickerComponent is an input component to provide date input.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CpsInputComponent,\n CalendarModule,\n CommonModule,\n FormsModule,\n CpsMenuComponent\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 /**\n * Label of the datepicker element.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Determines whether datepicker is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the datepicker of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Placeholder text.\n * @group Props\n */\n @Input() placeholder = 'MM/DD/YYYY';\n\n /**\n * Bottom hint text for the input field.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Determines whether to show button to be able to select today's date.\n * @group Props\n */\n @Input() showTodayButton = true;\n\n /**\n * Determines whether the datepicker dropdown should open on input focus.\n * @group Props\n */\n @Input() openOnInputFocus = false;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Size of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be \"top\", \"bottom\", \"left\" or \"right\".\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Styling appearance of datepicker input, it can be 'outlined', 'underlined' or 'borderless.\n * @group Props\n */\n @Input() appearance: CpsDatepickerAppearanceType = 'outlined';\n\n /**\n * Minimal date availalbe for selection.\n * @group Props\n */\n @Input()\n minDate!: Date;\n\n /**\n * Maximal date availalbe for selection.\n * @group Props\n */\n @Input()\n maxDate!: Date;\n\n /**\n * Value of the datepicker.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {Date | null} value - value change.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<Date | null>();\n\n @ViewChild('datepickerInput')\n datepickerInput!: CpsInputComponent;\n\n @ViewChild('calendarMenu')\n calendarMenu!: CpsMenuComponent;\n\n stringDate = '';\n isOpened = false;\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 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 onClearCalendarDate() {\n this.onSelectCalendarDate(null);\n }\n\n onSelectCalendarDate(dateVal: Date | null) {\n this.toggleCalendar(false);\n this.writeValue(dateVal);\n this.onChange(dateVal);\n this.valueChanged.emit(dateVal);\n }\n\n onInputBlur() {\n if (this.isOpened) return;\n this._control?.control?.markAsTouched();\n this._updateValueFromInputString();\n this._checkErrors();\n }\n\n onInputEnterClicked() {\n if (!this.isOpened) return;\n this._control?.control?.markAsTouched();\n this._updateValueFromInputString();\n this._checkErrors();\n this.toggleCalendar(false);\n }\n\n onClickCalendarIcon() {\n if (this.disabled) return;\n if (this.isOpened) this._updateValueFromInputString();\n this.toggleCalendar();\n }\n\n onBeforeCalendarHidden() {\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 onInputClear() {\n if (this.isOpened) this.focusInput();\n }\n\n onCalendarContentClick() {\n if (this.isOpened) this.focusInput();\n }\n\n focusInput() {\n this.datepickerInput.focus();\n }\n\n toggleCalendar(show?: boolean) {\n if (this.disabled || this.isOpened === show) return;\n\n const target =\n this.datepickerInput.elementRef.nativeElement.querySelector(\n '.cps-input-wrap'\n );\n\n if (typeof show === 'boolean') {\n if (show) {\n this.calendarMenu.show({\n target\n });\n } else {\n this.calendarMenu.hide();\n }\n } else {\n this.calendarMenu.toggle({\n target\n });\n }\n\n this.isOpened = this.calendarMenu.isVisible();\n\n if (!this.isOpened) {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n } else {\n this.focusInput();\n }\n }\n}\n","<div\n class=\"cps-datepicker\"\n [ngStyle]=\"{ width: cvtWidth }\"\n [class.focused]=\"isOpened\">\n <cps-input\n #datepickerInput\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 (cleared)=\"onInputClear()\"\n (enterClicked)=\"onInputEnterClicked()\"\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 [appearance]=\"appearance\"\n [error]=\"error\"></cps-input>\n <cps-menu\n #calendarMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeCalendarHidden()\"\n (contentClicked)=\"onCalendarContentClick()\"\n [focusOnShow]=\"false\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-datepicker-calendar-menu\">\n <div class=\"cps-datepicker-calendar\">\n <p-calendar\n [(ngModel)]=\"value\"\n [showIcon]=\"true\"\n [showButtonBar]=\"showTodayButton\"\n [inline]=\"true\"\n (onSelect)=\"onSelectCalendarDate($event)\"\n (onClearClick)=\"onClearCalendarDate()\"\n [showOtherMonths]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\">\n </p-calendar>\n </div>\n </cps-menu>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Renderer2,\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 { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport {\n CpsTooltipDirective,\n CpsTooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\nexport type CpsButtonToggleOption = {\n value: any;\n label?: string;\n icon?: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\n/**\n * CpsButtonToggleComponent is used to select values using buttons.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CheckOptionSelectedPipe,\n CpsInfoCircleComponent,\n CpsIconComponent,\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 /**\n * Label of the toggle buttons.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * An array of options.\n * @group Props\n */\n @Input() options = [] as CpsButtonToggleOption[];\n\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n @Input() multiple = false;\n\n /**\n * Specifies that the component should be disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether at least one of the options is mandatory.\n * @group Props\n */\n @Input() mandatory = true;\n\n /**\n * Determines whether all buttons should have equal widths.\n * @group Props\n */\n @Input() equalWidths = true;\n\n /**\n * Position of the option tooltip, can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() optionTooltipPosition: CpsTooltipPosition = 'bottom';\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Size of infoTooltip, of type number or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Value of the component.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {any} any - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<any>();\n\n largestButtonWidth = 0;\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private renderer: Renderer2\n ) {\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 this._setEqualWidths();\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, val: 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 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 private _setEqualWidths() {\n if (!this.equalWidths) return;\n\n const hiddenSpan = this.renderer.createElement('span');\n this.renderer.setStyle(hiddenSpan, 'visibility', 'hidden');\n this.renderer.setStyle(hiddenSpan, 'position', 'absolute');\n this.renderer.setStyle(hiddenSpan, 'left', '-9999px');\n this.renderer.setStyle(hiddenSpan, 'font-size', '16px');\n this.renderer.setStyle(hiddenSpan, 'letter-spacing', '0.05em');\n this.renderer.setStyle(\n hiddenSpan,\n 'font-family',\n '\"Source Sans Pro\", sans-serif'\n );\n\n this.renderer.appendChild(document.body, hiddenSpan);\n\n this.largestButtonWidth = 0;\n this.options.forEach((opt) => {\n const text = this.renderer.createText(opt.label || '');\n this.renderer.appendChild(hiddenSpan, text);\n\n let width = hiddenSpan.offsetWidth || 0;\n width += 26;\n if (opt.icon) {\n width += 16;\n if (opt.label) width += 8;\n }\n if (width > this.largestButtonWidth) {\n this.largestButtonWidth = width;\n }\n this.renderer.removeChild(hiddenSpan, text);\n });\n\n this.renderer.removeChild(document.body, hiddenSpan);\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]=\"optionTooltipPosition\">\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, option.value)\" />\n <span\n class=\"cps-btn-toggle-content-option-content\"\n [ngStyle]=\"{\n 'min-width': largestButtonWidth ? largestButtonWidth + 'px' : 'none'\n }\">\n <cps-icon\n *ngIf=\"option.icon\"\n [ngClass]=\"{ 'me-2': !!option.label }\"\n [icon]=\"option.icon\">\n </cps-icon>\n <span *ngIf=\"option.label\">{{ option.label }}</span>\n </span>\n</ng-template>\n","import {\n Component,\n Input,\n OnChanges,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FilterMetadata } from 'primeng/api';\nimport { Table } from 'primeng/table';\nimport { TreeTable } from 'primeng/treetable';\nimport { CpsInputComponent } from '../../../../cps-input/cps-input.component';\nimport { CpsDatepickerComponent } from '../../../../cps-datepicker/cps-datepicker.component';\nimport {\n CpsButtonToggleComponent,\n CpsButtonToggleOption\n} from '../../../../cps-button-toggle/cps-button-toggle.component';\nimport { CpsAutocompleteComponent } from '../../../../cps-autocomplete/cps-autocomplete.component';\nimport {\n CpsColumnFilterCategoryOption,\n CpsColumnFilterType\n} from '../../../cps-column-filter-types';\n\n/**\n * TableColumnFilterConstraintComponent is an internal filtering constraint component in table and treetable.\n * @group Components\n */\n@Component({\n selector: 'table-column-filter-constraint',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsInputComponent,\n CpsDatepickerComponent,\n CpsButtonToggleComponent,\n CpsAutocompleteComponent\n ],\n templateUrl: './table-column-filter-constraint.component.html',\n styleUrls: ['./table-column-filter-constraint.component.scss']\n})\nexport class TableColumnFilterConstraintComponent implements OnChanges {\n /**\n * Type of filter constraint.\n * @group Props\n */\n @Input() type: CpsColumnFilterType = 'text';\n\n /**\n * Column name.\n * @group Props\n */\n @Input() field: string | undefined;\n\n /**\n * Constraint data.\n * @group Props\n */\n @Input() filterConstraint: FilterMetadata | undefined;\n\n /**\n * An array of category options.\n * @group Props\n */\n @Input() categoryOptions: CpsColumnFilterCategoryOption[] | string[] = [];\n\n /**\n * Determines whether to show category filter as button toggles.\n * @group Props\n */\n @Input() asButtonToggle = false;\n\n /**\n * Single selection for category filter.\n * @group Props\n */\n @Input() singleSelection = false;\n\n /**\n * Placeholder for input field.\n * @group Props\n */\n @Input() placeholder = '';\n\n /**\n * Determines whether the filter should have an apply button.\n * @group Props\n */\n @Input() hasApplyButton = true;\n\n @ViewChild('categoryAutocompleteComponent')\n categoryAutocompleteComponent?: CpsAutocompleteComponent;\n\n booleanOptions = [\n { label: 'True', value: 'true' },\n { label: 'False', value: 'false' }\n ] as CpsButtonToggleOption[];\n\n categories: CpsColumnFilterCategoryOption[] = [];\n\n _tableInstance: Table | TreeTable;\n\n get isCategoryDropdownOpened() {\n return this.categoryAutocompleteComponent?.isOpened || false;\n }\n\n constructor(@Optional() public dt: Table, @Optional() public tt: TreeTable) {\n this._tableInstance = dt || tt;\n }\n\n ngOnChanges(): void {\n this._updateCategories();\n }\n\n private _updateCategories() {\n if (this.type !== 'category') return;\n if (this.categoryOptions.length > 0) {\n if (typeof this.categoryOptions[0] === 'string') {\n this.categories = (this.categoryOptions as string[]).map((o) => ({\n label: o,\n value: o\n }));\n } else {\n this.categories = this\n .categoryOptions as CpsColumnFilterCategoryOption[];\n }\n } else {\n let cats = [];\n if (this._tableInstance instanceof Table) {\n cats =\n this._tableInstance.value?.map((v) => v[this.field as string]) || [];\n } else {\n const fillCats = (nodes: any[]) => {\n nodes?.forEach((v) => {\n cats.push(v.data[this.field as string]);\n fillCats(v.children);\n });\n };\n fillCats(this._tableInstance.value);\n }\n this.categories =\n Array.from(new Set(cats))?.map((c) => ({\n label: c,\n value: c\n })) || [];\n }\n }\n\n onValueChange(value: any) {\n (<any>this.filterConstraint).value = value;\n\n if (this._tableInstance.isFilterBlank(value) || !this.hasApplyButton) {\n this._tableInstance._filter();\n }\n }\n\n onEnterKeyDown(event: any) {\n this._tableInstance._filter();\n event.preventDefault();\n }\n}\n","<ng-container [ngSwitch]=\"type\">\n <cps-input\n *ngSwitchCase=\"'text'\"\n [placeholder]=\"placeholder\"\n [hideDetails]=\"true\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"text\"></cps-input>\n\n <cps-input\n *ngSwitchCase=\"'number'\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"number\"></cps-input>\n\n <div\n class=\"cps-table-col-filter-constraint-btn-toggles\"\n *ngSwitchCase=\"'boolean'\">\n <cps-button-toggle\n [options]=\"booleanOptions\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\">\n </cps-button-toggle>\n </div>\n\n <cps-datepicker\n *ngSwitchCase=\"'date'\"\n [openOnInputFocus]=\"true\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n [value]=\"filterConstraint?.value\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n (valueChanged)=\"onValueChange($event)\">\n </cps-datepicker>\n\n <ng-container *ngSwitchCase=\"'category'\">\n <cps-autocomplete\n #categoryAutocompleteComponent\n *ngIf=\"!asButtonToggle\"\n class=\"cps-table-col-filter-category-autocomplete\"\n [placeholder]=\"placeholder\"\n [options]=\"categories\"\n [hideDetails]=\"true\"\n [clearable]=\"true\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [returnObject]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-autocomplete>\n <div class=\"cps-table-col-filter-constraint-btn-toggles\">\n <cps-button-toggle\n *ngIf=\"asButtonToggle\"\n [options]=\"categories\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-button-toggle>\n </div>\n </ng-container>\n</ng-container>\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FilterMetadata, FilterOperator, SelectItem } from 'primeng/api';\nimport { Table } from 'primeng/table';\nimport { TreeTable } from 'primeng/treetable';\nimport {\n CpsColumnFilterCategoryOption,\n CpsColumnFilterMatchMode,\n CpsColumnFilterType\n} from '../../../cps-column-filter-types';\nimport { CpsButtonComponent } from '../../../../cps-button/cps-button.component';\nimport { CpsMenuComponent } from '../../../../cps-menu/cps-menu.component';\nimport { CpsIconComponent } from '../../../../cps-icon/cps-icon.component';\nimport { CpsSelectComponent } from '../../../../cps-select/cps-select.component';\nimport { TableColumnFilterConstraintComponent } from '../table-column-filter-constraint/table-column-filter-constraint.component';\n\n/**\n * TableColumnFilterComponent is an internal filter component in table and treetable.\n * @group Components\n */\n@Component({\n selector: 'table-column-filter',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsButtonComponent,\n CpsMenuComponent,\n CpsIconComponent,\n CpsSelectComponent,\n TableColumnFilterConstraintComponent\n ],\n templateUrl: './table-column-filter.component.html',\n styleUrls: ['./table-column-filter.component.scss']\n})\nexport class TableColumnFilterComponent implements OnInit, OnDestroy {\n /**\n * Name of the column to be filtered.\n * @group Props\n */\n @Input() field: string | undefined;\n\n /**\n * Type of filter in table, it can be of type \"number\", \"boolean\", \"text\", \"date\" or \"category\".\n * @group Props\n */\n @Input() type: CpsColumnFilterType = 'text';\n\n /**\n * Determines whether the filter menu should be persistent.\n * @group Props\n */\n @Input() persistent = false;\n\n /**\n * Determines whether the filter should have clear button.\n * @group Props\n */\n @Input() showClearButton = true;\n\n /**\n * Determines whether the filter should have apply button.\n * @group Props\n */\n @Input() showApplyButton = true;\n\n /**\n * Determines whether the filter should have close button.\n * @group Props\n */\n @Input() showCloseButton = false;\n\n /**\n * Determines whether the filter should have match modes.\n * @group Props\n */\n @Input() showMatchModes = true;\n\n /**\n * Match modes for filter.\n * @group Props\n */\n @Input() matchModes: CpsColumnFilterMatchMode[] = [];\n\n /**\n * Determines whether the filter should have operator.\n * @group Props\n */\n @Input() showOperator = true;\n\n /**\n * Maximum number of constraints.\n * @group Props\n */\n @Input() maxConstraints = 2;\n\n /**\n * Title of the filter.\n * @group Props\n */\n @Input() headerTitle = '';\n\n /**\n * Determines whether the filter should hide on clear.\n * @group Props\n */\n @Input() hideOnClear = false;\n\n /**\n * Options for category filter.\n * @group Props\n */\n @Input() categoryOptions: CpsColumnFilterCategoryOption[] | string[] = [];\n\n /**\n * Determines whether to show category filter as button toggles.\n * @group Props\n */\n @Input() asButtonToggle = false;\n\n /**\n * Single selection for category filter.\n * @group Props\n */\n @Input() singleSelection = false;\n\n /**\n * Placeholder for filter constraints.\n * @group Props\n */\n @Input() placeholder = '';\n\n @ViewChildren('constraintComponent')\n constraintCompList!: QueryList<TableColumnFilterConstraintComponent>;\n\n operator: string = FilterOperator.AND;\n\n operatorOptions = [\n { label: 'Match All', value: FilterOperator.AND, info: 'AND' },\n { label: 'Match Any', value: FilterOperator.OR, info: 'OR' }\n ];\n\n private matchModeLabels = {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Does not contain',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Does not equal',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after'\n } as { [key: string]: string };\n\n private filterMatchModeOptions = {\n text: [\n CpsColumnFilterMatchMode.STARTS_WITH,\n CpsColumnFilterMatchMode.CONTAINS,\n CpsColumnFilterMatchMode.NOT_CONTAINS,\n CpsColumnFilterMatchMode.ENDS_WITH,\n CpsColumnFilterMatchMode.EQUALS,\n CpsColumnFilterMatchMode.NOT_EQUALS\n ],\n number: [\n CpsColumnFilterMatchMode.EQUALS,\n CpsColumnFilterMatchMode.NOT_EQUALS,\n CpsColumnFilterMatchMode.LESS_THAN,\n CpsColumnFilterMatchMode.LESS_THAN_OR_EQUAL_TO,\n CpsColumnFilterMatchMode.GREATER_THAN,\n CpsColumnFilterMatchMode.GREATER_THAN_OR_EQUAL_TO\n ],\n date: [\n CpsColumnFilterMatchMode.DATE_IS,\n CpsColumnFilterMatchMode.DATE_IS_NOT,\n CpsColumnFilterMatchMode.DATE_BEFORE,\n CpsColumnFilterMatchMode.DATE_AFTER\n ]\n } as { [key: string]: CpsColumnFilterMatchMode[] };\n\n currentMatchModes: SelectItem[] | undefined;\n\n @ViewChild('columnFilterMenu')\n columnFilterMenu!: CpsMenuComponent;\n\n _tableInstance: Table | TreeTable;\n\n isFilterApplied = false;\n\n get isCategoryDropdownOpened() {\n if (this.type !== 'category') return false;\n return this.constraintCompList?.first?.isCategoryDropdownOpened || false;\n }\n\n constructor(\n public elementRef: ElementRef,\n @Optional() public dt: Table,\n @Optional() public tt: TreeTable\n ) {\n this._tableInstance = dt || tt;\n }\n\n ngOnInit() {\n if (this.matchModes.length > 0) {\n this.filterMatchModeOptions[this.type] = this.matchModes;\n }\n this._tableInstance?.onFilter?.subscribe((value) =>\n this._updateFilterApplied(value)\n );\n if (!this._tableInstance.filters[<string>this.field]) {\n this._initFieldFilterConstraint();\n }\n\n if (this.maxConstraints > 1 && this.type !== 'category') {\n this.showApplyButton = true;\n }\n\n if (this.type === 'boolean') {\n this.showApplyButton = false;\n }\n\n this.currentMatchModes = this.filterMatchModeOptions[this.type]?.map(\n (key: string) => {\n return { label: this.matchModeLabels[key], value: key };\n }\n );\n }\n\n private _updateFilterApplied(value: any) {\n const fieldFilter = value.filters[<string>this.field];\n if (fieldFilter) {\n if (Array.isArray(fieldFilter)) {\n this.isFilterApplied = (<FilterMetadata[]>fieldFilter).some(\n (meta) => !this._tableInstance.isFilterBlank(meta.value)\n );\n } else {\n this.isFilterApplied = !this._tableInstance.isFilterBlank(\n fieldFilter.value\n );\n }\n } else {\n this.isFilterApplied = false;\n }\n }\n\n private _initFieldFilterConstraint() {\n const defaultMatchMode = this.getDefaultMatchMode();\n if (this._tableInstance instanceof Table) {\n this._tableInstance.filters[<string>this.field] = [\n {\n value: null,\n matchMode: defaultMatchMode,\n operator: this.operator\n }\n ];\n } else {\n this._tableInstance.filters[<string>this.field] = {\n value: null,\n matchMode: defaultMatchMode\n };\n }\n }\n\n onCloseClick() {\n this.hide();\n }\n\n onMenuMatchModeChange(value: any, filterMeta: FilterMetadata) {\n filterMeta.matchMode = value;\n\n if (!this.showApplyButton) {\n this._tableInstance._filter();\n }\n }\n\n addConstraint() {\n (<FilterMetadata[]>this._tableInstance.filters[<string>this.field]).push({\n value: null,\n matchMode: this.getDefaultMatchMode(),\n operator: this.getDefaultOperator()\n });\n }\n\n removeConstraint(filterMeta: FilterMetadata) {\n this._tableInstance.filters[<string>this.field] = (<FilterMetadata[]>(\n this._tableInstance.filters[<string>this.field]\n )).filter((meta) => meta !== filterMeta);\n this._tableInstance._filter();\n }\n\n onOperatorChange(value: any) {\n (<FilterMetadata[]>this._tableInstance.filters[<string>this.field]).forEach(\n (filterMeta) => {\n filterMeta.operator = value;\n this.operator = value;\n }\n );\n\n if (!this.showApplyButton) {\n this._tableInstance._filter();\n }\n }\n\n getDefaultMatchMode(): string {\n const getMatchMode = (val: CpsColumnFilterMatchMode) => {\n if (this.type in this.filterMatchModeOptions) {\n return this.filterMatchModeOptions[this.type].includes(val)\n ? val\n : this.filterMatchModeOptions[this.type][0];\n } else {\n return val;\n }\n };\n\n switch (this.type) {\n case 'text':\n return getMatchMode(CpsColumnFilterMatchMode.STARTS_WITH);\n case 'number':\n return getMatchMode(CpsColumnFilterMatchMode.EQUALS);\n case 'date':\n return getMatchMode(CpsColumnFilterMatchMode.DATE_IS);\n case 'category':\n return this.singleSelection\n ? CpsColumnFilterMatchMode.IS\n : CpsColumnFilterMatchMode.IN;\n default:\n return getMatchMode(CpsColumnFilterMatchMode.CONTAINS);\n }\n }\n\n getDefaultOperator(): string | undefined {\n return this._tableInstance.filters\n ? (<FilterMetadata[]>(\n this._tableInstance.filters[<string>(<string>this.field)]\n ))[0].operator\n : this.operator;\n }\n\n get fieldConstraints(): FilterMetadata[] | undefined | null {\n if (this._tableInstance instanceof Table) {\n return this._tableInstance.filters\n ? <FilterMetadata[]>this._tableInstance.filters[<string>this.field]\n : null;\n } else {\n return this._tableInstance.filters\n ? <FilterMetadata[]>[this._tableInstance.filters[<string>this.field]]\n : null;\n }\n }\n\n get showRemoveIcon(): boolean {\n return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;\n }\n\n get isShowOperator(): boolean {\n return (\n this.showOperator &&\n this.maxConstraints > 1 &&\n !['boolean', 'category'].includes(this.type)\n );\n }\n\n get isShowAddConstraint(): boolean | undefined | null {\n return (\n !['boolean', 'category'].includes(this.type) &&\n this.fieldConstraints &&\n this.fieldConstraints.length < this.maxConstraints\n );\n }\n\n hide() {\n this.columnFilterMenu.hide();\n }\n\n clearFilter() {\n this._initFieldFilterConstraint();\n this._tableInstance._filter();\n if (this.hideOnClear) this.hide();\n }\n\n clearFilterValues() {\n this._initFieldFilterConstraint();\n this.isFilterApplied = false;\n }\n\n applyFilter() {\n this._tableInstance._filter();\n this.hide();\n }\n\n onMenuShown() {\n const parent = this.elementRef?.nativeElement?.parentElement;\n const className = 'cps-table-col-filter-menu-open';\n parent.classList.add(className);\n }\n\n onBeforeMenuHidden() {\n if (!this.isFilterApplied) this._initFieldFilterConstraint();\n }\n\n onMenuHidden() {\n const parent = this.elementRef?.nativeElement?.parentElement;\n const className = 'cps-table-col-filter-menu-open';\n parent.classList.remove(className);\n }\n\n @HostListener('click', ['$event'])\n onClick(event: any) {\n event.stopPropagation();\n }\n\n private _updateSortIconColor(color: string) {\n const unsortedUp =\n this.elementRef?.nativeElement?.parentElement?.querySelector(\n '.sort-unsorted-arrow-up'\n );\n if (unsortedUp) {\n unsortedUp.style.borderBottomColor = color;\n }\n const unsortedDown =\n this.elementRef?.nativeElement?.parentElement?.querySelector(\n '.sort-unsorted-arrow-down'\n );\n if (unsortedDown) {\n unsortedDown.style.borderTopColor = color;\n }\n }\n\n @HostListener('mouseenter') onMouseOver() {\n this._updateSortIconColor('var(--cps-color-line-dark)');\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this._updateSortIconColor('');\n }\n\n ngOnDestroy(): void {\n this._tableInstance?.onFilter?.unsubscribe();\n }\n}\n","<div class=\"cps-table-col-filter\">\n <cps-menu\n #columnFilterMenu\n [withArrow]=\"false\"\n hideTransitionOptions=\"0s linear\"\n [persistent]=\"persistent || (showApplyButton && isCategoryDropdownOpened)\"\n (menuShown)=\"onMenuShown()\"\n (menuHidden)=\"onMenuHidden()\"\n (beforeMenuHidden)=\"onBeforeMenuHidden()\">\n <div class=\"cps-table-col-filter-menu-content\">\n <div\n class=\"cps-table-col-filter-menu-content-header\"\n *ngIf=\"showCloseButton || headerTitle\">\n <span class=\"cps-table-col-filter-menu-content-header-title\">\n {{ headerTitle }}\n </span>\n <cps-icon\n *ngIf=\"showCloseButton\"\n icon=\"close-x\"\n (click)=\"onCloseClick()\"></cps-icon>\n </div>\n <div\n class=\"cps-table-col-filter-menu-content-operator\"\n *ngIf=\"isShowOperator\">\n <cps-select\n [hideDetails]=\"true\"\n [disabled]=\"!fieldConstraints || fieldConstraints.length < 2\"\n [returnObject]=\"false\"\n [options]=\"operatorOptions\"\n [ngModel]=\"operator\"\n (valueChanged)=\"onOperatorChange($event)\"></cps-select>\n </div>\n <div class=\"cps-table-col-filter-menu-content-constraints\">\n <div\n *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\"\n class=\"cps-table-col-filter-menu-content-constraint\">\n <cps-select\n *ngIf=\"showMatchModes && currentMatchModes\"\n class=\"cps-table-col-filter-match-mode-select\"\n [hideDetails]=\"true\"\n [returnObject]=\"false\"\n [options]=\"currentMatchModes\"\n [ngModel]=\"fieldConstraint.matchMode\"\n (valueChanged)=\"\n onMenuMatchModeChange($event, fieldConstraint)\n \"></cps-select>\n <table-column-filter-constraint\n #constraintComponent\n [type]=\"type\"\n [field]=\"field\"\n [asButtonToggle]=\"asButtonToggle\"\n [singleSelection]=\"singleSelection\"\n [categoryOptions]=\"categoryOptions\"\n [filterConstraint]=\"fieldConstraint\"\n [hasApplyButton]=\"showApplyButton\"\n [placeholder]=\"placeholder\">\n </table-column-filter-constraint>\n <div\n class=\"cps-table-col-filter-remove-rule-btn\"\n *ngIf=\"showRemoveIcon\">\n <cps-button\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"prepared\"\n icon=\"delete\"\n (clicked)=\"removeConstraint(fieldConstraint)\"\n label=\"Remove condition\">\n </cps-button>\n </div>\n </div>\n </div>\n <div\n class=\"cps-table-col-filter-add-rule-btn\"\n *ngIf=\"isShowAddConstraint\">\n <cps-button\n label=\"Add condition\"\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"surprise\"\n icon=\"add\"\n (clicked)=\"addConstraint()\">\n </cps-button>\n </div>\n <div class=\"cps-table-col-filter-buttonbar\">\n <cps-button\n *ngIf=\"showClearButton\"\n (clicked)=\"clearFilter()\"\n type=\"borderless\"\n color=\"prepared\"\n size=\"small\"\n label=\"Clear\"></cps-button>\n <cps-button\n *ngIf=\"showApplyButton\"\n (clicked)=\"applyFilter()\"\n color=\"prepared\"\n size=\"small\"\n label=\"Apply\"></cps-button>\n </div>\n </div>\n </cps-menu>\n <cps-icon\n [icon]=\"isFilterApplied ? 'filter-funnel-filled' : 'filter-funnel'\"\n size=\"13\"\n (click)=\"columnFilterMenu.toggle($event)\"\n class=\"cps-table-col-filter-menu-button\"\n [ngClass]=\"{\n 'cps-table-col-filter-menu-button-active': isFilterApplied\n }\"\n >>\n </cps-icon>\n</div>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n ViewContainerRef\n} from '@angular/core';\n\nimport {\n CpsColumnFilterCategoryOption,\n CpsColumnFilterMatchMode,\n CpsColumnFilterType\n} from '../cps-column-filter-types';\nimport { TableColumnFilterComponent } from '../components/internal/table-column-filter/table-column-filter.component';\n\n/**\n * CpsTableColumnFilterDirective is a filtering directive used to filter single or multiple columns in table.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTColFilter]',\n exportAs: 'cpsTColFilter'\n})\nexport class CpsTableColumnFilterDirective\n implements OnInit, OnChanges, OnDestroy\n{\n /**\n * Name of the column to be filtered.\n * @group Props\n */\n @Input('cpsTColFilter') field: string | undefined;\n\n /**\n * Type of a filter in table, it can be of type \"number\", \"boolean\", \"text\", \"date\" or \"category\".\n * @group Props\n */\n @Input() filterType: CpsColumnFilterType = 'text';\n\n /**\n * Determines whether the filter menu should be persistent.\n * @group Props\n */\n @Input() filterPersistent = false;\n\n /**\n * Determines whether the filter should have clear button.\n * @group Props\n */\n @Input() filterShowClearButton = true;\n\n /**\n * Determines whether the filter should have apply button.\n * @group Props\n */\n @Input() filterShowApplyButton = true;\n\n /**\n * Determines whether the filter should have close button.\n * @group Props\n */\n @Input() filterShowCloseButton = false;\n\n /**\n * Determines whether the filter should have match modes.\n * @group Props\n */\n @Input() filterShowMatchModes = true;\n\n /**\n * Match modes for filter.\n * @group Props\n */\n @Input() filterMatchModes: CpsColumnFilterMatchMode[] = [];\n\n /**\n * Determines whether the filter should have operator.\n * @group Props\n */\n @Input() filterShowOperator = true;\n\n /**\n * Maximum number of constraints.\n * @group Props\n */\n @Input() filterMaxConstraints = 2;\n\n /**\n * Title of the filter.\n * @group Props\n */\n @Input() filterHeaderTitle = '';\n\n /**\n * Determines whether the filter should hide on clear.\n * @group Props\n */\n @Input() filterHideOnClear = false;\n\n /**\n * Options for category filter.\n * @group Props\n */\n @Input() filterCategoryOptions: CpsColumnFilterCategoryOption[] | string[] =\n [];\n\n /**\n * Determines whether to show category filter as button toggles.\n * @group Props\n */\n @Input() filterAsButtonToggle = false;\n\n /**\n * Single selection for category filter.\n * @group Props\n */\n @Input() filterSingleSelection = false;\n\n /**\n * Placeholder for filter constraints.\n * @group Props\n */\n @Input() filterPlaceholder = '';\n\n filterCompRef: ComponentRef<TableColumnFilterComponent>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.filterCompRef = this.viewContainerRef.createComponent(\n TableColumnFilterComponent\n );\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.firstChild.after(\n this.filterCompRef.location.nativeElement\n );\n }\n\n ngOnChanges(): void {\n this.filterCompRef.setInput('field', this.field);\n this.filterCompRef.setInput('type', this.filterType);\n this.filterCompRef.setInput('persistent', this.filterPersistent);\n this.filterCompRef.setInput('showClearButton', this.filterShowClearButton);\n this.filterCompRef.setInput('showApplyButton', this.filterShowApplyButton);\n this.filterCompRef.setInput('showCloseButton', this.filterShowCloseButton);\n this.filterCompRef.setInput('showMatchModes', this.filterShowMatchModes);\n this.filterCompRef.setInput('matchModes', this.filterMatchModes);\n this.filterCompRef.setInput('showOperator', this.filterShowOperator);\n this.filterCompRef.setInput('maxConstraints', this.filterMaxConstraints);\n this.filterCompRef.setInput('headerTitle', this.filterHeaderTitle);\n this.filterCompRef.setInput('hideOnClear', this.filterHideOnClear);\n this.filterCompRef.setInput('categoryOptions', this.filterCategoryOptions);\n this.filterCompRef.setInput('asButtonToggle', this.filterAsButtonToggle);\n this.filterCompRef.setInput('singleSelection', this.filterSingleSelection);\n this.filterCompRef.setInput(\n 'placeholder',\n this.filterPlaceholder || this._getDefaultPlaceholder()\n );\n }\n\n private _getDefaultPlaceholder() {\n switch (this.filterType) {\n case 'text':\n return 'Please enter';\n case 'number':\n return 'Enter value';\n case 'date':\n return 'Select date';\n case 'category':\n return 'Please select';\n default:\n return '';\n }\n }\n\n hideFilter() {\n this.filterCompRef?.instance?.hide();\n }\n\n clearFilter() {\n this.filterCompRef?.instance?.clearFilter();\n }\n\n clearFilterValues() {\n this.filterCompRef?.instance?.clearFilterValues();\n }\n\n ngOnDestroy(): void {\n this.filterCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TableHeaderCheckbox } from 'primeng/table';\n\n/**\n * CpsTableHeaderSelectableDirective is a directive used to apply a checkbox to a header cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTHdrSelectable]'\n})\nexport class CpsTableHeaderSelectableDirective implements OnInit, OnDestroy {\n checkboxCompRef: ComponentRef<TableHeaderCheckbox>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.checkboxCompRef =\n this.viewContainerRef.createComponent(TableHeaderCheckbox);\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.appendChild(\n this.checkboxCompRef.location.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.checkboxCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TableCheckbox } from 'primeng/table';\n\n/**\n * CpsTableRowSelectableDirective is a directive used to apply a checkbox to a body cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTRowSelectable]'\n})\nexport class CpsTableRowSelectableDirective implements OnInit, OnDestroy {\n /**\n * Cell value.\n * @group Props\n */\n @Input('cpsTRowSelectable') value: any;\n\n checkboxCompRef: ComponentRef<TableCheckbox>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.checkboxCompRef = this.viewContainerRef.createComponent(TableCheckbox);\n }\n\n ngOnInit(): void {\n this.checkboxCompRef.setInput('value', this.value);\n\n this.elementRef.nativeElement.appendChild(\n this.checkboxCompRef.location.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.checkboxCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TTSortableColumn, TreeTable } from 'primeng/treetable';\nimport { CpsSortIconComponent } from '../../cps-table/components/internal/cps-sort-icon/cps-sort-icon.component';\n\n/**\n * CpsTreeTableColumnSortableDirective is a sorting directive used to sort single or multiple columns in treetable.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTColSortable]'\n})\nexport class CpsTreeTableColumnSortableDirective\n extends TTSortableColumn\n implements OnInit, OnDestroy\n{\n /**\n * Name of the column to be sorted.\n * @group Props\n */\n @Input('cpsTTColSortable') override field = '';\n\n sortIconRef: ComponentRef<CpsSortIconComponent>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n public override tt: TreeTable\n ) {\n super(tt);\n this.sortIconRef =\n this.viewContainerRef.createComponent(CpsSortIconComponent);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.sortIconRef.setInput('field', this.field);\n this.elementRef.nativeElement.appendChild(\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 { Directive, Host, Self, Optional } from '@angular/core';\nimport { TreeTable } from 'primeng/treetable';\nimport { ObjectUtils } from 'primeng/utils';\n\n@Directive({\n standalone: true,\n selector: '[ttWithUnsort]'\n})\nexport class TreeTableUnsortDirective {\n constructor(@Host() @Self() @Optional() public pTreeTable: TreeTable) {\n pTreeTable.sort = (event: any) => {\n if (pTreeTable.sortMode === 'single') {\n if (\n pTreeTable.sortField === event.field &&\n pTreeTable.sortOrder === -1\n ) {\n event.field = '_defaultSortOrder';\n }\n\n pTreeTable._sortOrder =\n pTreeTable.sortField === event.field\n ? pTreeTable.sortOrder * -1\n : pTreeTable.defaultSortOrder;\n pTreeTable._sortField = event.field;\n pTreeTable.sortSingle();\n }\n if (pTreeTable.sortMode === 'multiple') {\n let resetIndex = false;\n const sortMeta = pTreeTable.getSortMeta(event.field);\n\n if (sortMeta) {\n for (let i = 0; i < pTreeTable._multiSortMeta.length; i++) {\n if (pTreeTable._multiSortMeta[i].field === sortMeta.field) {\n pTreeTable._multiSortMeta.splice(i, 1);\n }\n }\n if (sortMeta.order === 1) {\n sortMeta.order = sortMeta.order * -1;\n pTreeTable.multiSortMeta.push(sortMeta);\n }\n if (pTreeTable._multiSortMeta?.length === 0) {\n pTreeTable.multiSortMeta.push({\n field: '_defaultSortOrder',\n order: pTreeTable.defaultSortOrder\n });\n resetIndex = true;\n }\n } else {\n if (!pTreeTable.multiSortMeta) {\n pTreeTable._multiSortMeta = [];\n }\n pTreeTable.multiSortMeta.push({\n field: event.field,\n order: pTreeTable.defaultSortOrder\n });\n }\n\n pTreeTable.sortMultiple();\n if (resetIndex) pTreeTable._multiSortMeta = [];\n }\n };\n\n pTreeTable.sortNodes = (nodes) => {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n this._syncNodesParams(pTreeTable.filteredNodes, nodes);\n\n if (pTreeTable.customSort) {\n pTreeTable.sortFunction.emit({\n data: nodes,\n mode: pTreeTable.sortMode,\n field: pTreeTable.sortField,\n order: pTreeTable.sortOrder\n });\n } else {\n const isUnsort = pTreeTable.sortField === '_defaultSortOrder';\n nodes.sort((node1: any, node2: any) => {\n const value1 = isUnsort\n ? node1._defaultSortOrder\n : ObjectUtils.resolveFieldData(node1.data, pTreeTable.sortField);\n const value2 = isUnsort\n ? node2._defaultSortOrder\n : ObjectUtils.resolveFieldData(node2.data, pTreeTable.sortField);\n let result = null;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, undefined, { numeric: true });\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n\n return pTreeTable.sortOrder * result;\n });\n }\n\n for (const node of nodes) {\n pTreeTable.sortNodes(node.children);\n }\n };\n\n pTreeTable.sortMultipleNodes = (nodes) => {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n this._syncNodesParams(pTreeTable.filteredNodes, nodes);\n\n if (pTreeTable.customSort) {\n pTreeTable.sortFunction.emit({\n data: pTreeTable.value,\n mode: pTreeTable.sortMode,\n multiSortMeta: pTreeTable.multiSortMeta\n });\n } else {\n nodes.sort((node1: any, node2: any) => {\n return pTreeTable.multisortField(\n node1,\n node2,\n pTreeTable.multiSortMeta,\n 0\n );\n });\n }\n\n for (const node of nodes) {\n pTreeTable.sortMultipleNodes(node.children);\n }\n };\n\n pTreeTable.multisortField = (node1, node2, multiSortMeta, index) => {\n if (\n ObjectUtils.isEmpty(pTreeTable.multiSortMeta) ||\n ObjectUtils.isEmpty(multiSortMeta[index])\n ) {\n return 0;\n }\n const isUnsort = multiSortMeta[index].field === '_defaultSortOrder';\n const value1 = isUnsort\n ? node1._defaultSortOrder\n : ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);\n const value2 = isUnsort\n ? node2._defaultSortOrder\n : ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);\n let result = 0;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n if (typeof value1 === 'string' || value1 instanceof String) {\n if (value1.localeCompare && value1 !== value2) {\n return (\n multiSortMeta[index].order *\n value1.localeCompare(value2, undefined, { numeric: true })\n );\n }\n } else {\n result = value1 < value2 ? -1 : 1;\n }\n\n if (value1 === value2) {\n return multiSortMeta.length - 1 > index\n ? pTreeTable.multisortField(node1, node2, multiSortMeta, index + 1)\n : 0;\n }\n\n return multiSortMeta[index].order * result;\n };\n\n pTreeTable._filter = () => {\n if (pTreeTable.lazy) {\n pTreeTable.onLazyLoad.emit(pTreeTable.createLazyLoadMetadata());\n } else {\n if (!pTreeTable.value) {\n return;\n }\n\n if (!pTreeTable.hasFilter()) {\n (pTreeTable.filteredNodes as any) = null;\n if (pTreeTable.paginator) {\n pTreeTable.totalRecords = pTreeTable.value\n ? pTreeTable.value.length\n : 0;\n }\n } else {\n let globalFilterFieldsArray: any[] | undefined;\n if (pTreeTable.filters.global) {\n if (!pTreeTable.columns && !pTreeTable.globalFilterFields)\n throw new Error(\n 'Global filtering requires dynamic columns or globalFilterFields to be defined.'\n );\n else\n globalFilterFieldsArray =\n pTreeTable.globalFilterFields || pTreeTable.columns;\n }\n\n this._syncNodesParams(pTreeTable.filteredNodes, pTreeTable.value);\n\n pTreeTable.filteredNodes = [];\n const isStrictMode = pTreeTable.filterMode === 'strict';\n let isValueChanged = false;\n\n for (const [idx, node] of pTreeTable.value.entries()) {\n let copyNode = { ...node };\n let localMatch = true;\n let globalMatch = false;\n let paramsWithoutNode;\n\n for (const prop in pTreeTable.filters) {\n if (\n // eslint-disable-next-line no-prototype-builtins\n pTreeTable.filters.hasOwnProperty(prop) &&\n prop !== 'global'\n ) {\n const filterMeta = pTreeTable.filters[prop];\n const filterField = prop;\n const filterValue = filterMeta?.value;\n const filterMatchMode = filterMeta?.matchMode || 'startsWith';\n const filterConstraint =\n pTreeTable.filterService.filters[\n filterMatchMode as keyof typeof pTreeTable.filterService.filters\n ];\n paramsWithoutNode = {\n filterField,\n filterValue,\n filterConstraint,\n isStrictMode\n };\n if (\n (isStrictMode &&\n !(\n pTreeTable.findFilteredNodes(\n copyNode,\n paramsWithoutNode\n ) ||\n pTreeTable.isFilterMatched(copyNode, paramsWithoutNode)\n )) ||\n (!isStrictMode &&\n !(\n pTreeTable.isFilterMatched(copyNode, paramsWithoutNode) ||\n pTreeTable.findFilteredNodes(copyNode, paramsWithoutNode)\n ))\n ) {\n localMatch = false;\n }\n\n if (!localMatch) {\n break;\n }\n }\n }\n\n if (\n pTreeTable.filters.global &&\n !globalMatch &&\n globalFilterFieldsArray\n ) {\n for (let j = 0; j < globalFilterFieldsArray.length; j++) {\n const copyNodeForGlobal = { ...copyNode };\n const filterField =\n globalFilterFieldsArray[j].field ||\n globalFilterFieldsArray[j];\n const filterValue = pTreeTable.filters.global.value;\n const filterConstraint =\n pTreeTable.filterService.filters[\n pTreeTable.filters.global\n .matchMode as keyof typeof pTreeTable.filterService.filters\n ];\n paramsWithoutNode = {\n filterField,\n filterValue,\n filterConstraint,\n isStrictMode\n };\n\n if (\n (isStrictMode &&\n (pTreeTable.findFilteredNodes(\n copyNodeForGlobal,\n paramsWithoutNode\n ) ||\n pTreeTable.isFilterMatched(\n copyNodeForGlobal,\n paramsWithoutNode\n ))) ||\n (!isStrictMode &&\n (pTreeTable.isFilterMatched(\n copyNodeForGlobal,\n paramsWithoutNode\n ) ||\n pTreeTable.findFilteredNodes(\n copyNodeForGlobal,\n paramsWithoutNode\n )))\n ) {\n globalMatch = true;\n copyNode = copyNodeForGlobal;\n }\n }\n }\n\n let matches = localMatch;\n if (pTreeTable.filters.global) {\n matches = localMatch && globalMatch;\n }\n\n if (matches) {\n copyNode._idx = idx;\n pTreeTable.filteredNodes.push(copyNode);\n }\n\n isValueChanged =\n isValueChanged ||\n !localMatch ||\n globalMatch ||\n (localMatch && pTreeTable.filteredNodes.length > 0) ||\n (!globalMatch && pTreeTable.filteredNodes.length === 0);\n }\n\n if (!isValueChanged) {\n (pTreeTable.filteredNodes as any) = null;\n }\n\n if (pTreeTable.paginator) {\n pTreeTable.totalRecords = pTreeTable.filteredNodes\n ? pTreeTable.filteredNodes.length\n : pTreeTable.value\n ? pTreeTable.value.length\n : 0;\n }\n }\n }\n\n pTreeTable.first = 0;\n\n const filteredValue = pTreeTable.filteredNodes || pTreeTable.value;\n\n pTreeTable.onFilter.emit({\n filters: pTreeTable.filters,\n filteredValue\n });\n\n pTreeTable.tableService.onUIUpdate(filteredValue);\n pTreeTable.updateSerializedValue();\n\n if (pTreeTable.scrollable) {\n pTreeTable.resetScrollTop();\n }\n };\n\n pTreeTable.findFilteredNodes = (node, paramsWithoutNode): any => {\n if (node) {\n let matched = false;\n if (node.children) {\n const childNodes = [...node.children];\n node.children = [];\n for (const [idx, childNode] of childNodes.entries()) {\n const copyChildNode = { ...childNode };\n if (pTreeTable.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n copyChildNode._idx = idx;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n };\n }\n\n private _syncNodesParams(from: any[] | undefined, to: any[] | undefined) {\n if (!from || !to) return;\n\n from.forEach((source) => {\n const idx = source._idx;\n if (typeof idx === 'number') {\n const target = to[idx];\n delete source._idx;\n if (target) {\n target.expanded = source.expanded;\n target.partialSelected = source.partialSelected;\n this._syncNodesParams(source.children, target.children);\n }\n }\n });\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TTHeaderCheckbox } from 'primeng/treetable';\n\n/**\n * CpsTreeTableHeaderSelectableDirective is a directive used to apply a checkbox to a header cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTHdrSelectable]'\n})\nexport class CpsTreeTableHeaderSelectableDirective\n implements OnInit, OnDestroy\n{\n checkboxCompRef: ComponentRef<TTHeaderCheckbox>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.checkboxCompRef =\n this.viewContainerRef.createComponent(TTHeaderCheckbox);\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.classList.add(\n 'cps-treetable-selectable-cell'\n );\n this.elementRef.nativeElement.appendChild(\n this.checkboxCompRef.location.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.checkboxCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TTCheckbox } from 'primeng/treetable';\n\n/**\n * CpsTreeTableRowSelectableDirective is a directive used to apply a checkbox to a body cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTRowSelectable]'\n})\nexport class CpsTreeTableRowSelectableDirective implements OnInit, OnDestroy {\n /**\n * Cell value.\n * @group Props\n */\n @Input('cpsTTRowSelectable') value: any;\n\n checkboxCompRef: ComponentRef<TTCheckbox>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.checkboxCompRef = this.viewContainerRef.createComponent(TTCheckbox);\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.classList.add(\n 'cps-treetable-selectable-cell'\n );\n this.checkboxCompRef.setInput('value', this.value);\n\n this.elementRef.nativeElement.appendChild(\n this.checkboxCompRef.location.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.checkboxCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TreeTableToggler } from 'primeng/treetable';\n\n/**\n * CpsTreetableRowTogglerDirective is a directive used to apply a chevron toggler icon to a body cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTRowToggler]'\n})\nexport class CpsTreetableRowTogglerDirective implements OnInit, OnDestroy {\n /**\n * Cell value.\n * @group Props\n */\n @Input('cpsTTRowToggler') rowNode: any;\n\n togglerCompRef: ComponentRef<TreeTableToggler>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.togglerCompRef =\n this.viewContainerRef.createComponent(TreeTableToggler);\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.classList.add(\n 'cps-treetable-row-toggler-cell'\n );\n this.togglerCompRef.setInput('rowNode', this.rowNode);\n\n const spanElement = document.createElement('span');\n spanElement.style.display = 'flex';\n\n while (this.elementRef.nativeElement.firstChild) {\n spanElement.appendChild(this.elementRef.nativeElement.firstChild);\n }\n this.elementRef.nativeElement.appendChild(spanElement);\n\n spanElement.prepend(this.togglerCompRef.location.nativeElement);\n }\n\n ngOnDestroy(): void {\n this.togglerCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n RendererStyleFlags2,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n TreeTable,\n TreeTableService,\n TreeTableModule\n} from 'primeng/treetable';\nimport { DomHandler } from 'primeng/dom';\nimport { AngleDoubleLeftIcon } from 'primeng/icons/angledoubleleft';\nimport { AngleLeftIcon } from 'primeng/icons/angleleft';\nimport { AngleRightIcon } from 'primeng/icons/angleright';\nimport { AngleDoubleRightIcon } from 'primeng/icons/angledoubleright';\nimport { SortEvent } from 'primeng/api';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { CpsInputComponent } from '../cps-input/cps-input.component';\nimport { CpsButtonComponent } from '../cps-button/cps-button.component';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsSelectComponent } from '../cps-select/cps-select.component';\nimport { CpsLoaderComponent } from '../cps-loader/cps-loader.component';\nimport { CpsTreeTableColumnSortableDirective } from './directives/cps-tree-table-column-sortable.directive';\nimport { TreeTableUnsortDirective } from './directives/internal/tree-table-unsort.directive';\nimport { TableRowMenuComponent } from '../cps-table/components/internal/table-row-menu/table-row-menu.component';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { CpsTreeTableHeaderSelectableDirective } from './directives/cps-tree-table-header-selectable.directive';\nimport { CpsTreeTableRowSelectableDirective } from './directives/cps-tree-table-row-selectable.directive';\nimport { CpsTreetableRowTogglerDirective } from './directives/cps-tree-table-row-toggler.directive';\nimport { Subscription, fromEvent } from 'rxjs';\n\nexport function treeTableFactory(tableComponent: CpsTreeTableComponent) {\n return tableComponent.primengTreeTable;\n}\n\nexport type CpsTreeTableSize = 'small' | 'normal' | 'large';\nexport type CpsTreeTableToolbarSize = 'small' | 'normal';\nexport type CpsTreeTableSortMode = 'single' | 'multiple';\n\n/**\n * CpsTreeTableComponent is used to display hierarchical data in tabular format.\n * @group Components\n */\n@Component({\n selector: 'cps-tree-table',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n CommonModule,\n TreeTableModule,\n CpsInputComponent,\n CpsButtonComponent,\n CpsMenuComponent,\n CpsIconComponent,\n CpsSelectComponent,\n CpsLoaderComponent,\n AngleDoubleLeftIcon,\n AngleLeftIcon,\n AngleRightIcon,\n AngleDoubleRightIcon,\n CpsTreeTableColumnSortableDirective,\n CpsTreeTableHeaderSelectableDirective,\n CpsTreeTableRowSelectableDirective,\n CpsTreetableRowTogglerDirective,\n TreeTableUnsortDirective,\n TableRowMenuComponent\n ],\n templateUrl: './cps-tree-table.component.html',\n styleUrls: ['./cps-tree-table.component.scss'],\n providers: [\n TreeTableService,\n {\n provide: TreeTable,\n useFactory: treeTableFactory,\n // eslint-disable-next-line no-use-before-define\n deps: [CpsTreeTableComponent]\n }\n ]\n})\nexport class CpsTreeTableComponent\n implements OnInit, AfterViewInit, OnDestroy, AfterViewChecked, OnChanges\n{\n /**\n * An array of objects to represent dynamic columns.\n * @group Props\n */\n @Input() columns: { [key: string]: any }[] = [];\n\n /**\n * A key used to retrieve the header from columns.\n * @group Props\n */\n @Input() colHeaderName = 'header';\n\n /**\n * A key used to retrieve the field from columns.\n * @group Props\n */\n @Input() colFieldName = 'field';\n\n /**\n * Treetable min width of type number denoting pixels or string.\n * @group Props\n */\n @Input() minWidth: number | string = '';\n\n /**\n * Determines whether minWidth prop is used for treetable body only, excluding toolbar and paginator.\n * @group Props\n */\n @Input() minWidthForBodyOnly = true;\n\n /**\n * Determines whether the cell widths scale according to their content or not.\n * @group Props\n */\n @Input() autoLayout = true;\n\n /**\n * Determines whether the treetable should have alternating stripes.\n * @group Props\n */\n @Input() striped = true;\n\n /**\n * Determines whether the treetable should have borders.\n * @group Props\n */\n @Input() bordered = true;\n\n /**\n * Size of treetable cells, it can be \"small\", \"normal\" or \"large\".\n * @group Props\n */\n @Input() size: CpsTreeTableSize = 'normal';\n\n /**\n * Determines whether the treetable should have row selection.\n * @group Props\n */\n @Input() selectable = false;\n\n /**\n * Determines whether the treetable should have rows highlighting on hover.\n * @group Props\n */\n @Input() rowHover = true;\n\n /**\n * Determines whether the treetable should show row menus.\n * @group Props\n */\n @Input() showRowMenu = false;\n\n /**\n * Determines whether the 'Remove' button should be displayed in the row menu.\n * Note: This setting only takes effect if 'showRowMenu' is true.\n * @group Props\n */\n @Input() showRowRemoveButton = true;\n\n /**\n * Determines whether the 'Edit' button should be displayed in the row menu.\n * Note: This setting only takes effect if 'showRowMenu' is true.\n * @group Props\n */\n @Input() showRowEditButton = true;\n\n /**\n * When enabled, a loader component is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Inline style of the treetable.\n * @group Props\n */\n @Input() tableStyle = undefined;\n\n /**\n * Style class of the treetable.\n * @group Props\n */\n @Input() tableStyleClass = '';\n\n /**\n * Makes all columns sortable if columns prop is provided.\n * @group Props\n */\n @Input() sortable = false;\n\n /**\n * Determines whether sorting works on single column or on multiple columns.\n * @group Props\n */\n @Input() sortMode: CpsTreeTableSortMode = 'single';\n\n /**\n * Determines whether to use the default sorting or a custom one using sortFunction.\n * @group Props\n */\n @Input() customSort = false;\n\n /**\n * Determines whether the treetable has a toolbar.\n * @group Props\n */\n @Input() hasToolbar = true;\n\n /**\n * Toolbar size, it can be \"small\" or \"normal\".\n * @group Props\n */\n @Input() toolbarSize: CpsTreeTableToolbarSize = 'normal';\n\n /**\n * Toolbar title.\n * @group Props\n */\n @Input() toolbarTitle = '';\n\n /**\n * Toolbar icon name.\n * @group Props\n */\n @Input() toolbarIcon = '';\n\n /**\n * Toolbar icon color.\n * @group Props\n */\n @Input() toolbarIconColor = '';\n\n /**\n * Makes treetable scrollable.\n * @group Props\n */\n @Input() scrollable = true;\n\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n * @group Props\n */\n @Input() scrollHeight = '';\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM. Works only if scrollable prop is true.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Height of a virtual scroll item in fixed pixels.\n * @group Props\n */\n @Input() virtualScrollItemHeight = 0;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * Determines whether the treetable should have paginator.\n * @group Props\n */\n @Input() paginator = false;\n\n /**\n * Determines whether to show paginator even there is only one page.\n * @group Props\n */\n @Input() alwaysShowPaginator = true;\n\n /**\n * Array of integer values to display inside rows per page dropdown of paginator.\n * @group Props\n */\n @Input() rowsPerPageOptions: number[] = [];\n\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n @Input() first = 0;\n\n /**\n * Number of rows to display per page.\n * @group Props\n */\n @Input() rows = 0;\n\n /**\n * Determines whether to reset page on rows change.\n * @group Props\n */\n @Input() resetPageOnRowsChange = false;\n\n /**\n * Determines whether to reset page on treetable data sorting.\n * @group Props\n */\n @Input() resetPageOnSort = true;\n\n /**\n * Number of total records.\n * @group Props\n */\n @Input() totalRecords = 0;\n\n /**\n * Text to display when there is no data.\n * @group Props\n */\n @Input() emptyMessage = 'No data';\n\n /**\n * Height of treetable's body when there is no data, of type number denoting pixels or string.\n * @group Props\n */\n @Input() emptyBodyHeight: number | string = '';\n\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n @Input() lazy = false;\n\n /**\n * Determines whether to call lazy loading on initialization.\n * @group Props\n */\n @Input() lazyLoadOnInit = true;\n\n /**\n * Determines whether to show global filter in the toolbar.\n * @group Props\n */\n @Input() showGlobalFilter = false;\n\n /**\n * Global filter placeholder.\n * @group Props\n */\n @Input() globalFilterPlaceholder = 'Search';\n\n /**\n * An array of fields to use in global filtering.\n * @group Props\n */\n @Input() globalFilterFields: string[] = [];\n\n /**\n * Determines whether to clear global filter on data loading.\n * @group Props\n */\n @Input() clearGlobalFilterOnLoading = false;\n\n /**\n * Determines whether to show remove button in the toolbar when rows are selected.\n * @group Props\n */\n @Input() showRemoveBtnOnSelect = true;\n\n /**\n * Determines whether removeBtnOnSelect is disabled.\n * @group Props\n */\n @Input() removeBtnOnSelectDisabled = false;\n\n /**\n * Determines whether to show additional button in the toolbar when rows are selected.\n * @group Props\n */\n @Input() showAdditionalBtnOnSelect = false;\n\n /**\n * AdditionalBtnOnSelect title.\n * @group Props\n */\n @Input() additionalBtnOnSelectTitle = 'Select action';\n\n /**\n * Determines whether additionalBtnOnSelect is disabled.\n * @group Props\n */\n @Input() additionalBtnOnSelectDisabled = false;\n\n /**\n * Determines whether to show action button in the toolbar.\n * @group Props\n */\n @Input() showActionBtn = false;\n\n /**\n * Action button title.\n * @group Props\n */\n @Input() actionBtnTitle = 'Action';\n\n /**\n * Determines whether actionBtn is disabled.\n * @group Props\n */\n @Input() actionBtnDisabled = false;\n\n /**\n * Determines whether to show data reload button in the toolbar.\n * @group Props\n */\n @Input() showDataReloadBtn = false;\n\n /**\n * Determines whether dataReloadBtn is disabled.\n * @group Props\n */\n @Input() dataReloadBtnDisabled = false;\n\n /**\n * Determines whether the treetable should show columnsToggle menu, where you can choose which columns to be displayed. If external body template is provided, use columnsSelected event emitter.\n * @group Props\n */\n @Input() showColumnsToggleBtn = false;\n\n /**\n * Determines whether columnsToggle button is disabled.\n * @group Props\n */\n @Input() columnsToggleBtnDisabled = false;\n\n /**\n * Array of initial columns to show in the treetable. If not provided, all columns are initially visible.\n * @group Props\n */\n @Input() initialColumns: { [key: string]: any }[] = [];\n\n /**\n * An array of objects to display.\n * @group Props\n */\n @Input() set data(value: any[]) {\n const clone = cloneDeep(value);\n if (clone && clone.length > 0) {\n let i = 0;\n clone.forEach((v: any) => {\n v._defaultSortOrder = i++;\n });\n }\n this._data = clone;\n }\n\n get data(): any[] {\n return this._data;\n }\n\n /**\n * Callback to invoke on selected rows change.\n * @param {any[]} any[] - selected rows.\n * @group Emits\n */\n @Output() rowsSelected = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke when action button is clicked.\n * @param {void} void - action button clicked.\n * @group Emits\n */\n @Output() actionBtnClicked = new EventEmitter<void>();\n\n /**\n * Callback to invoke when additional button on select is clicked.\n * @param {any[]} any[] - selected data.\n * @group Emits\n */\n @Output() additionalBtnOnSelectClicked = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke when edit-row button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\n */\n @Output() editRowBtnClicked = new EventEmitter<any>();\n\n /**\n * Callback to invoke when rows are removed.\n * @param {any[]} any[] - array of rows to remove.\n * @group Emits\n */\n @Output() rowsToRemove = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke when page is changed.\n * @param {any} any - page changed.\n * @group Emits\n */\n @Output() pageChanged = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data is sorted.\n * @param {any} any - Sort data.\n * @group Emits\n */\n @Output() sorted = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data is filtered.\n * @param {any} any - Custom filter event.\n * @group Emits\n */\n @Output() filtered = new EventEmitter<any>();\n\n /**\n * Callback to invoke on selected columns.\n * @param {any[]} object[] - selection changed.\n * @group Emits\n */\n @Output() columnsSelected = new EventEmitter<{ [key: string]: any }[]>();\n\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {any} any - Custom lazy load event.\n * @group Emits\n */\n @Output() lazyLoaded = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data reload button is clicked.\n * @param {any} any - data reload button clicked.\n * @group Emits\n */\n @Output() dataReloadBtnClicked = new EventEmitter<any>();\n\n /**\n * Callback to invoke when a node is expanded.\n * @param {any} any - Node instance.\n * @group Emits\n */\n @Output() nodeExpanded = new EventEmitter<any>();\n\n /**\n * Callback to invoke when a node is collapsed.\n * @param {any} any - Node collapse event.\n * @group Emits\n */\n @Output() nodeCollapsed = new EventEmitter<any>();\n\n /**\n * Callback to invoke when a node is selected.\n * @param {any} any - Node instance.\n * @group Emits\n */\n @Output() nodeSelected = new EventEmitter<any>();\n\n /**\n * Callback to invoke when a node is unselected.\n * @param {any} any - Custom node unselect event.\n * @group Emits\n */\n @Output() nodeUnselected = new EventEmitter<any>();\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('nestedHeader', { static: false })\n public nestedHeaderTemplate!: TemplateRef<any>;\n\n @ContentChild('body', { static: false })\n public bodyTemplate!: TemplateRef<any>;\n\n @ViewChild('primengTreeTable', { static: true })\n primengTreeTable!: TreeTable;\n\n @ViewChild('globalFilterComp')\n globalFilterComp!: CpsInputComponent;\n\n @ViewChild('colToggleMenu')\n colToggleMenu!: CpsMenuComponent;\n\n selectedColumns: { [key: string]: any }[] = [];\n\n rowOptions: { label: string; value: number }[] = [];\n\n selectedRows: any[] = [];\n\n virtualScrollItemSize = 0;\n defScrollHeight = '';\n\n private _defScrollHeightPx = 0;\n private _defScrollHeightPxInitial = 0;\n\n private _resizeObserver: ResizeObserver;\n private _windowResizeDebouncer: any;\n private _scrollSubscription?: Subscription;\n\n private _headerBox: any;\n private _scrollableBody: any;\n private _scrollbarWidth = 0;\n private _scrollbarVisible = true;\n\n private _needRecalcAutoLayout = true;\n\n _data: any[] = [];\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private cdRef: ChangeDetectorRef,\n private renderer: Renderer2,\n private ngZone: NgZone\n ) {\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const body = entry.target;\n this._scrollbarVisible = body.scrollHeight > body.clientHeight;\n\n if (this._scrollbarVisible && this.virtualScroll)\n this.renderer.setStyle(\n this._scrollableBody,\n 'overflow',\n 'auto',\n RendererStyleFlags2.Important\n );\n\n let wScroll = this._scrollbarVisible ? this._scrollbarWidth : 0;\n if (wScroll > 0) wScroll -= 1;\n\n this.renderer.setStyle(\n this._headerBox,\n 'padding-right',\n `${wScroll}px`\n );\n this.renderer.setStyle(\n this._headerBox,\n 'border-right',\n wScroll > 0 ? '1px solid #d7d5d5' : 'unset'\n );\n\n this._calcAutoLayoutHeaderWidths();\n });\n });\n }\n\n ngOnInit(): void {\n if (!this.scrollable) this.virtualScroll = false;\n this.emptyBodyHeight = convertSize(this.emptyBodyHeight);\n this.minWidth = convertSize(this.minWidth);\n\n if (this.showAdditionalBtnOnSelect) this.showRemoveBtnOnSelect = false;\n\n this.defScrollHeight = this.scrollHeight;\n if (this.virtualScroll) {\n window.addEventListener('resize', this._onWindowResize.bind(this));\n\n if (this.defScrollHeight && this.defScrollHeight !== 'flex') {\n this._defScrollHeightPx = parseInt(this.scrollHeight, 10);\n }\n }\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].data);\n }\n\n this.selectedColumns =\n this.initialColumns.length > 0 ? this.initialColumns : this.columns;\n }\n\n ngAfterViewInit(): void {\n this._setMinWidthOverall();\n\n this._scrollableBody = this.primengTreeTable.el.nativeElement.querySelector(\n '.p-treetable-scrollable-body'\n );\n if (this._scrollableBody) {\n if (this.minWidthForBodyOnly && this.minWidth) {\n const table = this._scrollableBody.querySelector('table');\n if (table) this.renderer.setStyle(table, 'min-width', this.minWidth);\n }\n\n if (this.virtualScroll) {\n if (this.defScrollHeight === 'flex') {\n this._defScrollHeightPx = this._scrollableBody.clientHeight;\n this._defScrollHeightPxInitial = this._defScrollHeightPx;\n }\n if (this.autoLayout) {\n this._scrollSubscription = fromEvent(\n this._scrollableBody,\n 'scroll'\n ).subscribe(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n }\n\n this._headerBox = this.primengTreeTable.el.nativeElement.querySelector(\n '.p-treetable-scrollable-header-box'\n );\n\n if (this._headerBox) {\n if (this.minWidthForBodyOnly && this.minWidth) {\n const table = this._headerBox.querySelector('table');\n if (table) this.renderer.setStyle(table, 'min-width', this.minWidth);\n }\n\n this._scrollbarWidth = DomHandler.calculateScrollbarWidth();\n this._resizeObserver.observe(this._scrollableBody);\n }\n\n if (this._needRecalcAutoLayout) {\n this._calcAutoLayoutHeaderWidths();\n this.cdRef.detectChanges();\n }\n }\n\n if (!this.scrollable) {\n const tableWrapper =\n this.primengTreeTable.el?.nativeElement?.querySelector(\n '.p-treetable-wrapper'\n );\n if (tableWrapper && this.minWidthForBodyOnly && this.minWidth) {\n const table = tableWrapper.querySelector('table');\n if (table) this.renderer.setStyle(table, 'min-width', this.minWidth);\n }\n }\n }\n\n ngAfterViewChecked() {\n if (this._needRecalcAutoLayout) {\n this._calcAutoLayoutHeaderWidths();\n this.cdRef.detectChanges();\n }\n if (!this.virtualScroll) return;\n\n if (!this._defScrollHeightPx && this.defScrollHeight === 'flex') {\n this._defScrollHeightPx = this._scrollableBody.clientHeight;\n this._defScrollHeightPxInitial = this._defScrollHeightPx;\n this.cdRef.detectChanges();\n }\n\n if (!this.virtualScrollItemSize) {\n setTimeout(() => {\n this._recalcVirtualHeight();\n this.cdRef.detectChanges();\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.loading) {\n this.clearSelection();\n if (this.clearGlobalFilterOnLoading) this.clearGlobalFilter();\n }\n\n if (this.virtualScrollItemHeight)\n this.virtualScrollItemSize = this.virtualScrollItemHeight;\n\n this._setMinWidthOverall();\n\n const dataChanges = changes?.data;\n\n if (dataChanges?.previousValue !== dataChanges?.currentValue) {\n this.clearSelection();\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n this._calcAutoLayoutHeaderWidths(true);\n this._recalcVirtualHeight();\n }\n\n ngOnDestroy(): void {\n this._resizeObserver?.disconnect();\n if (this.virtualScroll) {\n if (this.autoLayout) this._scrollSubscription?.unsubscribe();\n window.removeEventListener('resize', this._onWindowResize.bind(this));\n }\n }\n\n private _calcAutoLayoutHeaderWidths(forced = false) {\n this.ngZone.runOutsideAngular(() => {\n if (!this.autoLayout || !this.scrollable) return;\n\n if (!this._needRecalcAutoLayout && !forced) return;\n\n const headerRows = this._headerBox?.querySelectorAll('tr');\n if (!headerRows?.length) return;\n\n const headerCells =\n headerRows[headerRows.length - 1]?.querySelectorAll('th');\n if (!headerCells?.length) return;\n\n let hasSelectableCell = false;\n let hasRowMenuCell = false;\n\n const ths = Array.from(headerCells);\n if (ths.every((th: any) => th.offsetWidth === 0)) return;\n\n const thWidths = ths.map((th: any) => {\n const wprev = th.style.width;\n\n const isSelectableCell = th.classList.contains(\n 'cps-treetable-selectable-cell'\n );\n\n const isRowCell = th.classList.contains('cps-treetable-row-menu-cell');\n\n if (isSelectableCell) hasSelectableCell = true;\n if (isRowCell) hasRowMenuCell = true;\n\n let thWidth = 55;\n if (!isSelectableCell && !isRowCell) {\n this.renderer.setStyle(th, 'width', 'min-content');\n this.renderer.setStyle(th, 'display', 'block');\n this.renderer.setStyle(th, 'text-wrap', 'nowrap');\n thWidth = th.offsetWidth;\n this.renderer.setStyle(th, 'width', wprev);\n this.renderer.removeStyle(th, 'display');\n this.renderer.removeStyle(th, 'text-wrap');\n }\n return thWidth;\n });\n\n const bodyRows = this._scrollableBody?.querySelectorAll('tr');\n if (!bodyRows?.length) return;\n\n const tdWidths: number[] = [];\n const fragment = document.createDocumentFragment();\n const hiddenDiv = document.createElement('div');\n hiddenDiv.style.visibility = 'hidden';\n hiddenDiv.style.position = 'absolute';\n hiddenDiv.style.whiteSpace = 'nowrap';\n\n document.body.appendChild(hiddenDiv);\n bodyRows.forEach((tr: HTMLElement) => {\n const tds = tr?.querySelectorAll('td');\n tds?.forEach((td: HTMLElement, idx: number) => {\n const isSelectableOrRowMenuCell =\n td.classList.contains('cps-treetable-selectable-cell') ||\n td.classList.contains('cps-treetable-row-menu-cell');\n\n let tdWidth = 55;\n if (!isSelectableOrRowMenuCell) {\n const clonedTd = td.cloneNode(true) as HTMLElement;\n fragment.appendChild(clonedTd);\n this.renderer.setStyle(clonedTd, 'width', 'min-content');\n this.renderer.setStyle(clonedTd, 'display', 'block');\n hiddenDiv.innerHTML = clonedTd.innerHTML;\n hiddenDiv.style.width = 'auto';\n tdWidth = hiddenDiv.offsetWidth;\n fragment.removeChild(clonedTd);\n }\n if (!tdWidths[idx]) tdWidths[idx] = 0;\n tdWidths[idx] = Math.max(tdWidths[idx], tdWidth);\n });\n });\n document.body.removeChild(hiddenDiv);\n\n if (thWidths.length !== tdWidths.length) return;\n\n const maxWidths = thWidths.map((v, idx) => Math.max(v, tdWidths[idx]));\n let sum = maxWidths.reduce((a, b) => a + b, 0);\n if (hasSelectableCell) {\n sum -= 55;\n maxWidths.shift();\n }\n if (hasRowMenuCell) {\n sum -= 55;\n maxWidths.pop();\n }\n\n const percentages = maxWidths.map((v) => (v / sum) * 100);\n\n headerCells.forEach((th: any, idx: number) => {\n if (\n (hasSelectableCell && idx === 0) ||\n (hasRowMenuCell && idx === headerCells.length - 1)\n ) {\n this.renderer.setStyle(th, 'width', '55px');\n } else\n this.renderer.setStyle(\n th,\n 'width',\n percentages[hasSelectableCell ? idx - 1 : idx] + '%'\n );\n });\n\n bodyRows.forEach((tr: HTMLElement) => {\n const tds = tr?.querySelectorAll('td');\n tds?.forEach((td: HTMLElement, idx: number) => {\n if (\n (hasSelectableCell && idx === 0) ||\n (hasRowMenuCell && idx === tds.length - 1)\n ) {\n this.renderer.setStyle(td, 'width', '55px');\n } else {\n this.renderer.setStyle(\n td,\n 'width',\n percentages[hasSelectableCell ? idx - 1 : idx] + '%'\n );\n }\n this.renderer.setStyle(td, 'opacity', '1');\n this.renderer.setStyle(td, 'overflow', 'hidden');\n if (this.bordered)\n this.renderer.setStyle(\n td,\n 'border-left-color',\n 'var(--cps-color-line-mid)'\n );\n });\n });\n\n this._needRecalcAutoLayout = false;\n });\n }\n\n private _updateVirtualScrollItemSize() {\n if (!this.virtualScroll || this.virtualScrollItemHeight) return;\n\n const trs = this.primengTreeTable?.el?.nativeElement\n ?.querySelector('.p-treetable-tbody')\n ?.querySelectorAll('tr');\n\n if (!trs?.length) return;\n if (!trs[0]?.offsetHeight) return;\n\n let h = 0;\n trs.forEach((tr: HTMLElement, idx: number) => {\n let rh = 0;\n const tds = tr?.querySelectorAll('td');\n tds?.forEach((td: HTMLElement) => {\n const wprev = td.style.width;\n this.renderer.setStyle(td, 'display', 'block');\n this.renderer.removeStyle(td, 'width');\n if (td.offsetHeight) rh = Math.max(rh, td.offsetHeight);\n this.renderer.removeStyle(td, 'display');\n this.renderer.setStyle(td, 'width', wprev);\n });\n if (rh) {\n h = idx === 0 ? rh : Math.min(h, rh);\n }\n });\n\n this.virtualScrollItemSize = h;\n }\n\n private _setMinWidthOverall() {\n if (this.minWidthForBodyOnly || !this.minWidth || !this.primengTreeTable)\n return;\n\n const treeTableMain =\n this.primengTreeTable.el?.nativeElement?.querySelector('.p-treetable');\n if (treeTableMain) {\n this.renderer.setStyle(treeTableMain, 'overflow', 'auto');\n const paginatorEl = treeTableMain.querySelector('.p-paginator');\n if (paginatorEl)\n this.renderer.setStyle(paginatorEl, 'min-width', this.minWidth);\n const loadingOverlay = treeTableMain.querySelector(\n '.p-treetable-loading-overlay'\n );\n if (loadingOverlay)\n this.renderer.setStyle(loadingOverlay, 'min-width', this.minWidth);\n }\n\n const scrollableWrapper =\n this.primengTreeTable.el?.nativeElement?.querySelector(\n '.p-treetable-scrollable-wrapper'\n );\n if (scrollableWrapper)\n this.renderer.setStyle(scrollableWrapper, 'min-width', this.minWidth);\n\n if (!this.scrollable) {\n const tableWrapper =\n this.primengTreeTable.el?.nativeElement?.querySelector(\n '.p-treetable-wrapper'\n );\n if (tableWrapper)\n this.renderer.setStyle(tableWrapper, 'min-width', this.minWidth);\n }\n\n const treeTableHeader =\n this.primengTreeTable.el?.nativeElement?.querySelector(\n '.p-treetable-header'\n );\n if (treeTableHeader)\n this.renderer.setStyle(treeTableHeader, 'min-width', this.minWidth);\n }\n\n private _onWindowResize() {\n // if (this.defScrollHeight === 'flex')\n // this.defScrollHeightPx = this.scrollableBody.clientHeight;\n\n clearTimeout(this._windowResizeDebouncer);\n this._windowResizeDebouncer = setTimeout(() => {\n this._recalcVirtualHeight();\n }, 100);\n }\n\n get styleClass() {\n const classesList = [];\n switch (this.size) {\n case 'small':\n classesList.push('p-treetable-sm');\n break;\n case 'large':\n classesList.push('p-treetable-lg');\n break;\n }\n if (this.hasToolbar) {\n switch (this.toolbarSize) {\n case 'small':\n classesList.push('cps-tbar-small');\n break;\n case 'normal':\n classesList.push('cps-tbar-normal');\n break;\n }\n }\n if (this.striped) {\n classesList.push('p-treetable-striped');\n }\n if (this.bordered) {\n classesList.push('p-treetable-gridlines');\n }\n\n return classesList.join(' ');\n }\n\n private _recalcVirtualHeight() {\n if (!this._scrollbarVisible && this.virtualScroll)\n this.renderer.setStyle(\n this._scrollableBody,\n 'overflow',\n 'hidden',\n RendererStyleFlags2.Important\n );\n\n setTimeout(() => {\n if (this.virtualScroll && this.defScrollHeight) {\n this._updateVirtualScrollItemSize();\n const itemsLen = this.primengTreeTable.serializedValue.length;\n if (itemsLen < 1) {\n this.scrollHeight = this.emptyBodyHeight\n ? (`calc(${this.emptyBodyHeight} + 1px)` as string)\n : this.virtualScrollItemSize + 1 + 'px';\n } else {\n const curHeight = this.virtualScrollItemSize * itemsLen + 2;\n if (this.defScrollHeight === 'flex') {\n if (curHeight >= this._defScrollHeightPxInitial) {\n this.scrollHeight = 'flex';\n this.renderer.setStyle(this._scrollableBody, 'height', '100%');\n this.cdRef.markForCheck();\n return;\n }\n }\n this.scrollHeight =\n Math.min(this._defScrollHeightPx, curHeight) + 'px';\n }\n this.cdRef.markForCheck();\n }\n });\n }\n\n clearGlobalFilter() {\n this.globalFilterComp?.clear();\n }\n\n onSortFunction(event: SortEvent) {\n this.customSortFunction.emit(event);\n }\n\n onFilterGlobal(value: string) {\n this.primengTreeTable.filterGlobal(value, 'contains');\n }\n\n onClickAdditionalBtnOnSelect() {\n this.additionalBtnOnSelectClicked.emit(this.selectedRows);\n }\n\n onClickActionBtn() {\n this.actionBtnClicked.emit();\n }\n\n onReloadData() {\n if (this.dataReloadBtnDisabled) return;\n this.dataReloadBtnClicked.emit();\n }\n\n onColumnsToggle(event: any) {\n if (this.columnsToggleBtnDisabled) return;\n this.colToggleMenu?.toggle(event);\n }\n\n removeSelected() {\n this.rowsToRemove.emit(this.selectedRows);\n }\n\n clearSelection() {\n this.selectedRows = [];\n }\n\n onEditRowClicked(node: any) {\n this.editRowBtnClicked.emit(node);\n }\n\n onRemoveRowClicked(node: any) {\n this.rowsToRemove.emit([node]);\n }\n\n toggleAllColumns() {\n this.selectedColumns =\n this.selectedColumns.length < this.columns.length ? this.columns : [];\n this.columnsSelected.emit(this.selectedColumns);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n isColumnSelected(col: any) {\n return this.selectedColumns.some((item) => isEqual(item, col));\n }\n\n onRowsPerPageChanged() {\n if (this.resetPageOnRowsChange) {\n this.primengTreeTable.first = 0;\n }\n this.changePage(this.getPage());\n }\n\n getPageCount() {\n return Math.ceil(this.primengTreeTable.totalRecords / this.rows);\n }\n\n getPage(): number {\n return Math.floor(this.primengTreeTable.first / this.rows);\n }\n\n changePage(p: number) {\n const pc = Math.ceil(this.getPageCount());\n\n if (p >= 0 && p < pc) {\n this.first = this.rows * p;\n this.primengTreeTable.onPageChange({\n first: this.first,\n rows: this.rows\n });\n }\n }\n\n onPageChange(event: any) {\n this.first = event.first;\n this.rows = event.rows;\n\n const state = {\n page: this.getPage(),\n first: this.first,\n rows: this.rows,\n pageCount: Math.ceil(this.getPageCount())\n };\n\n this.pageChanged.emit(state);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n onLazyLoaded(event: any) {\n this.lazyLoaded.emit(event);\n }\n\n onNodeExpanded(event: any) {\n this.nodeExpanded.emit(event);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n this._recalcVirtualHeight();\n }\n\n onNodeCollapsed(event: any) {\n this.nodeCollapsed.emit(event);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n this._recalcVirtualHeight();\n }\n\n onNodeSelected(event: any) {\n this.nodeSelected.emit(event);\n }\n\n onNodeUnselected(event: any) {\n this.nodeUnselected.emit(event);\n }\n\n onSort(event: any) {\n this.sorted.emit(event);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n onFilter(event: any) {\n this.filtered.emit(event);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n this._recalcVirtualHeight();\n }\n\n onSelectColumn(col: any) {\n let res = [] as any;\n if (this.isColumnSelected(col)) {\n res = this.selectedColumns.filter((v: any) => !isEqual(v, col));\n } else {\n this.columns.forEach((o) => {\n if (\n this.selectedColumns.some((v: any) => isEqual(v, o)) ||\n isEqual(col, o)\n ) {\n res.push(o);\n }\n });\n }\n this.selectedColumns = res;\n this.columnsSelected.emit(this.selectedColumns);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n onSelectionChanged(selection: any[]) {\n this.rowsSelected.emit(selection);\n }\n}\n","<p-treeTable\n #primengTreeTable\n ttWithUnsort\n [ngClass]=\"{\n 'cps-treetable-loading': loading,\n 'cps-treetable-flex': defScrollHeight === 'flex',\n 'cps-treetable-nonvirtual': !virtualScroll,\n 'cps-treetable-autolayout-calced': autoLayout && scrollable,\n }\"\n [value]=\"data\"\n [autoLayout]=\"autoLayout && !scrollable\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{\n numToleratedItems: numToleratedItems,\n autoSize: false\n }\"\n [columns]=\"selectedColumns\"\n [loading]=\"loading\"\n [rowHover]=\"rowHover\"\n [lazy]=\"lazy\"\n [(selection)]=\"selectedRows\"\n (selectionChange)=\"onSelectionChanged($event)\"\n compareSelectionBy=\"deepEquals\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [globalFilterFields]=\"globalFilterFields\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n (onPage)=\"onPageChange($event)\"\n (onSort)=\"onSort($event)\"\n (onFilter)=\"onFilter($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onNodeExpand)=\"onNodeExpanded($event)\"\n (onNodeCollapse)=\"onNodeCollapsed($event)\"\n (onNodeSelect)=\"onNodeSelected($event)\"\n (onNodeUnselect)=\"onNodeUnselected($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-treetable-tbar-left\">\n <div *ngIf=\"toolbarIcon\" class=\"cps-treetable-tbar-icon\">\n <cps-icon [icon]=\"toolbarIcon\" [color]=\"toolbarIconColor\"></cps-icon>\n </div>\n <div class=\"cps-treetable-tbar-title\">{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-treetable-tbar-global-filter\">\n <cps-input\n #globalFilterComp\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-treetable-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-treetable-tbar-btn-on-select\">\n <cps-button\n label=\"Remove\"\n [disabled]=\"removeBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showAdditionalBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-treetable-tbar-btn-on-select\">\n <cps-button\n [label]=\"additionalBtnOnSelectTitle\"\n [disabled]=\"additionalBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickAdditionalBtnOnSelect()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-treetable-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n [disabled]=\"actionBtnDisabled\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggleBtn && columns.length > 0\"\n class=\"cps-treetable-tbar-coltoggle-btn\"\n [ngClass]=\"{ 'btn-disabled': columnsToggleBtnDisabled }\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n [color]=\"\n columnsToggleBtnDisabled ? 'text-lightest' : 'prepared-lighten1'\n \"\n (click)=\"onColumnsToggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-treetable-coltoggle-menu\">\n <div\n class=\"cps-treetable-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-treetable-coltoggle-menu-item-left\">\n <span class=\"cps-treetable-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-treetable-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-treetable-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-treetable-coltoggle-menu-item-left\">\n <span class=\"cps-treetable-coltoggle-menu-item-check\"></span>\n <span class=\"cps-treetable-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n <div\n *ngIf=\"showDataReloadBtn\"\n class=\"cps-treetable-tbar-reload-btn\"\n [ngClass]=\"{ 'btn-disabled': dataReloadBtnDisabled }\">\n <cps-icon\n icon=\"refresh\"\n size=\"18\"\n [color]=\"dataReloadBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onReloadData()\">\n </cps-icon>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <!-- <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th> -->\n <th *ngIf=\"selectable\" cpsTTHdrSelectable></th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th\n *ngFor=\"let col of columns\"\n [cpsTTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th\n class=\"cps-treetable-row-menu-cell\"\n *ngIf=\"showRowMenu && (showRowRemoveButton || showRowEditButton)\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData=\"rowData\"\n let-columns=\"columns\"\n let-rowNode\n let-rowIndex=\"rowIndex\">\n <tr\n [ttRow]=\"rowNode\"\n [ngClass]=\"{\n 'cps-treetable-row-selected':\n selectable && primengTreeTable.isSelected(rowNode.node)\n }\">\n <!-- <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" pReorderableRowHandle>☰</span>\n </td> -->\n <td [cpsTTRowSelectable]=\"rowNode\" *ngIf=\"selectable\"></td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: rowNode,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <ng-container *ngFor=\"let col of columns; let i = index\">\n <td *ngIf=\"i === 0\" [cpsTTRowToggler]=\"rowNode\">\n {{ rowData[col[colFieldName]] }}\n </td>\n <td *ngIf=\"i > 0\">{{ rowData[col[colFieldName]] }}</td>\n </ng-container>\n </ng-container>\n </ng-container>\n <td\n *ngIf=\"showRowMenu && (showRowRemoveButton || showRowEditButton)\"\n class=\"cps-treetable-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(rowNode.node)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(rowNode.node)\"\n [showRowRemoveButton]=\"showRowRemoveButton\"\n [showRowEditButton]=\"showRowEditButton\">\n </table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-treetable-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\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 >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorfirstpagelinkicon\">\n <AngleDoubleLeftIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatorpreviouspagelinkicon\">\n <AngleLeftIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatornextpagelinkicon\">\n <AngleRightIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatorlastpagelinkicon\">\n <AngleDoubleRightIcon />\n </ng-template>\n</p-treeTable>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { TableColumnFilterComponent } from '../../cps-table/components/internal/table-column-filter/table-column-filter.component';\nimport {\n CpsColumnFilterType,\n CpsColumnFilterMatchMode,\n CpsColumnFilterCategoryOption\n} from '../../cps-table/cps-column-filter-types';\n\n/**\n * CpsTreeTableColumnFilterDirective is a filtering directive used to filter single or multiple columns in treetable.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTColFilter]',\n exportAs: 'cpsTTColFilter'\n})\nexport class CpsTreeTableColumnFilterDirective\n implements OnInit, OnChanges, OnDestroy\n{\n /**\n * Name of the column to be filtered.\n * @group Props\n */\n @Input('cpsTTColFilter') field: string | undefined;\n\n /**\n * Type of filter in treetable, it can be of type \"number\", \"boolean\", \"text\", \"date\" or \"category\".\n * @group Props\n */\n @Input() filterType: CpsColumnFilterType = 'text';\n\n /**\n * Determines whether the filter menu should be persistent.\n * @group Props\n */\n @Input() filterPersistent = false;\n\n /**\n * Determines whether the filter should have clear button.\n * @group Props\n */\n @Input() filterShowClearButton = true;\n\n /**\n * Determines whether the filter should have apply button.\n * @group Props\n */\n @Input() filterShowApplyButton = true;\n\n /**\n * Determines whether the filter should have close button.\n * @group Props\n */\n @Input() filterShowCloseButton = false;\n\n /**\n * Determines whether the filter should have match modes.\n * @group Props\n */\n @Input() filterShowMatchModes = true;\n\n /**\n * Match modes for filter.\n * @group Props\n */\n @Input() filterMatchModes: CpsColumnFilterMatchMode[] = [];\n\n /**\n * Determines whether the filter should have operator.\n * @group Props\n */\n @Input() filterShowOperator = true;\n\n /**\n * Title of the filter.\n * @group Props\n */\n @Input() filterHeaderTitle = '';\n\n /**\n * Determines whether the filter should hide on clear.\n * @group Props\n */\n @Input() filterHideOnClear = false;\n\n /**\n * Options for category filter.\n * @group Props\n */\n @Input() filterCategoryOptions: CpsColumnFilterCategoryOption[] | string[] =\n [];\n\n /**\n * Determines whether to show category filter as button toggles.\n * @group Props\n */\n @Input() filterAsButtonToggle = false;\n\n /**\n * Single selection for category filter.\n * @group Props\n */\n @Input() filterSingleSelection = false;\n\n /**\n * Placeholder for filter constraints.\n * @group Props\n */\n @Input() filterPlaceholder = '';\n\n filterCompRef: ComponentRef<TableColumnFilterComponent>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.filterCompRef = this.viewContainerRef.createComponent(\n TableColumnFilterComponent\n );\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.firstChild.after(\n this.filterCompRef.location.nativeElement\n );\n }\n\n ngOnChanges(): void {\n this.filterCompRef.setInput('field', this.field);\n this.filterCompRef.setInput('type', this.filterType);\n this.filterCompRef.setInput('persistent', this.filterPersistent);\n this.filterCompRef.setInput('showClearButton', this.filterShowClearButton);\n this.filterCompRef.setInput('showApplyButton', this.filterShowApplyButton);\n this.filterCompRef.setInput('showCloseButton', this.filterShowCloseButton);\n this.filterCompRef.setInput('showMatchModes', this.filterShowMatchModes);\n this.filterCompRef.setInput('matchModes', this.filterMatchModes);\n this.filterCompRef.setInput('showOperator', this.filterShowOperator);\n this.filterCompRef.setInput('maxConstraints', 1);\n this.filterCompRef.setInput('headerTitle', this.filterHeaderTitle);\n this.filterCompRef.setInput('hideOnClear', this.filterHideOnClear);\n this.filterCompRef.setInput('categoryOptions', this.filterCategoryOptions);\n this.filterCompRef.setInput('asButtonToggle', this.filterAsButtonToggle);\n this.filterCompRef.setInput('singleSelection', this.filterSingleSelection);\n this.filterCompRef.setInput(\n 'placeholder',\n this.filterPlaceholder || this._getDefaultPlaceholder()\n );\n }\n\n private _getDefaultPlaceholder() {\n switch (this.filterType) {\n case 'text':\n return 'Please enter';\n case 'number':\n return 'Enter value';\n case 'date':\n return 'Select date';\n case 'category':\n return 'Please select';\n default:\n return '';\n }\n }\n\n hideFilter() {\n this.filterCompRef?.instance?.hide();\n }\n\n clearFilter() {\n this.filterCompRef?.instance?.clearFilter();\n }\n\n clearFilterValues() {\n this.filterCompRef?.instance?.clearFilterValues();\n }\n\n ngOnDestroy(): void {\n this.filterCompRef.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/**\n * CpsTagComponent is used to categorize content.\n * @group Components\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 /**\n * Type of the tag. It can be security, classification or custom, has higher precedence over color.\n * @group Props\n */\n @Input() type: 'security' | 'classification' | 'custom' = 'custom';\n\n /**\n * Label of the tag.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Color of the tag.\n * @group Props\n */\n @Input() color = '';\n\n /**\n * Determines whether the tag should be disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether the tag should be selectable.\n * @group Props\n */\n @Input() selectable = false;\n\n /**\n * Tag value.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {boolean} boolean - value change.\n * @group Emits\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\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 Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\nimport { CpsSelectComponent } from '../cps-select/cps-select.component';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n/**\n * CpsPaginatorComponent is a generic component to display content in paged format.\n * @group Components\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 /**\n * Zero-relative number of the first row to be displayed.\n * @group Props\n */\n @Input() first = 0;\n\n /**\n * Rows count to display per page.\n * @group Props\n */\n @Input() rows = 0;\n\n /**\n * Number of total records.\n * @group Props\n */\n @Input() totalRecords = 0;\n\n /**\n * Array of integer values to display inside rows per page dropdown.\n * @group Props\n */\n @Input() rowsPerPageOptions: number[] = [];\n\n /**\n * Determines whether to show it even there is only one page.\n * @group Props\n */\n @Input() alwaysShow = true;\n\n /**\n * Color of paginator background.\n * @group Props\n */\n @Input() backgroundColor = 'transparent';\n\n /**\n * Determines whether to reset page index when the number of rows per page changes.\n * @group Props\n */\n @Input() resetPageOnRowsChange = false;\n\n /**\n * Callback to invoke when page changes, the event object contains information about the new state.\n * @param {any} any - page changed.\n * @group Emits\n */\n @Output() pageChanged = new EventEmitter<any>();\n\n @ViewChild('paginator')\n paginator!: Paginator;\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 onRowsPerPageChange(rows: number) {\n if (this.resetPageOnRowsChange) {\n this.first = 0;\n this.paginator.first = 0;\n }\n this.paginator.rows = rows;\n this.paginator.onRppChange(rows);\n }\n}\n","<p-paginator\n #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)=\"onRowsPerPageChange($event)\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\"></cps-select>\n </div>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * The CpsPaginatePipe is a pipe designed to provide a set of items in batches, taking into account specified pagination parameters.\n * @group Pipes\n */\n@Pipe({\n standalone: true,\n name: 'cpsPaginate'\n})\nexport class CpsPaginatePipe implements PipeTransform {\n transform(items: any[], config: { first: number; rows: number }): any[] {\n if (!items) {\n return [];\n }\n if (items.length < 1) {\n return items;\n }\n\n const first = config.first || 0;\n const rows = config.rows || 5;\n const last = first + rows;\n\n return items.slice(first, last);\n }\n}\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';\nimport {\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\n/**\n * CpsExpansionPanelComponent is a component that provides content on expansion.\n * @group Components\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 animations: [\n trigger('panelContent', [\n state(\n 'hidden',\n style({\n height: '0',\n visibility: 'hidden'\n })\n ),\n state(\n 'visible',\n style({\n height: '*'\n })\n ),\n transition('visible <=> hidden', [\n animate('0.2s cubic-bezier(0.4, 0, 0.2, 1)')\n ]),\n transition('void => *', animate(0))\n ]),\n trigger('panelHeader', [\n state(\n 'hidden',\n style({\n borderBottom: ''\n })\n ),\n state(\n 'visible',\n style({\n borderBottom: '{{borderStyle}}'\n }),\n { params: { borderStyle: '' } }\n ),\n transition('visible <=> hidden', [\n animate('0.2s cubic-bezier(0.4, 0, 0.2, 1)')\n ]),\n transition('void => *', animate(0))\n ])\n ]\n})\nexport class CpsExpansionPanelComponent implements OnInit {\n /**\n * Title of the expansionPanel element.\n * @group Props\n */\n @Input() headerTitle = '';\n\n /**\n * Background color of the expansion panel element.\n * @group Props\n */\n @Input() backgroundColor = 'transparent';\n\n /**\n * Determines whether to show the chevron icon.\n * @group Props\n */\n @Input() showChevron = true;\n\n /**\n * Indicates current expansion state.\n * @group Props\n */\n @Input() isExpanded = false;\n\n /**\n * Determines whether expansion panel is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * If true, expansion panel element will have borders.\n * @group Props\n */\n @Input() bordered = true;\n\n /**\n * The border radius of the component.\n * @group Props\n */\n @Input() borderRadius: number | string = 0;\n\n /**\n * Border color of the expansion panel.\n * @group Props\n */\n @Input() borderColor = 'line-light';\n\n /**\n * The width of the expansion panel of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Name of the icon in front of the title.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * Callback to invoke after a tab gets collapsed.\n * @param {void}\n * @group Emits\n */\n @Output() afterCollapse: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Callback to invoke after a tab gets expanded.\n * @param {void}\n * @group Emits\n */\n @Output() afterExpand: EventEmitter<void> = new EventEmitter<void>();\n\n ngOnInit(): void {\n this.borderColor = getCSSColor(this.borderColor);\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 [ngStyle]=\"{\n 'background-color': backgroundColor,\n 'border-radius': borderRadius,\n width: width,\n border: bordered ? '1px solid ' + borderColor : ''\n }\">\n <div\n class=\"cps-expansion-panel-header\"\n [@panelHeader]=\"\n isExpanded\n ? {\n value: 'visible',\n params: {\n borderStyle: bordered ? '1px solid ' + borderColor : ''\n }\n }\n : 'hidden'\n \"\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\n class=\"cps-expansion-panel-content\"\n [@panelContent]=\"isExpanded ? 'visible' : 'hidden'\">\n <div class=\"cps-expansion-panel-content-inner\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n OnInit,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, RouterModule } from '@angular/router';\nimport { CpsMenuComponent, CpsMenuItem } from '../cps-menu/cps-menu.component';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport {\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport type CpsSidebarMenuItem = {\n title: string;\n icon: string;\n url?: string;\n target?: string;\n disabled?: boolean;\n items?: CpsMenuItem[];\n};\n\n/**\n * CpsSidebarMenuComponent is a vertical menu panel component displayed at the edge of the screen.\n * @group Components\n */\n@Component({\n selector: 'cps-sidebar-menu',\n standalone: true,\n imports: [CommonModule, CpsMenuComponent, CpsIconComponent, RouterModule],\n templateUrl: './cps-sidebar-menu.component.html',\n styleUrls: ['./cps-sidebar-menu.component.scss'],\n animations: [\n trigger('onExpand', [\n state(\n 'collapsed',\n style({\n marginTop: '0',\n opacity: '0',\n height: '0',\n visibility: 'hidden'\n })\n ),\n state(\n 'expanded',\n style({\n marginTop: '6px',\n opacity: '1'\n })\n ),\n transition('expanded <=> collapsed', [\n animate('0.2s cubic-bezier(0.4, 0, 0.2, 1)')\n ])\n ])\n ]\n})\nexport class CpsSidebarMenuComponent implements OnInit {\n /**\n * An array of menu items.\n * @group Props\n */\n @Input() items: CpsSidebarMenuItem[] = [];\n\n /**\n * Indicates current expansion state of the sidebar.\n * @group Props\n */\n @Input() isExpanded = true;\n\n /**\n * Determines whether the menu items should allow activating only exact links.\n * @group Props\n */\n @Input() exactRoutes = false;\n\n /**\n * Height of the sidebar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() height: number | string = '100%';\n\n @ViewChildren('popupMenu') allMenus?: QueryList<CpsMenuComponent>;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private _router: Router) {}\n\n ngOnInit(): void {\n this.height = convertSize(this.height);\n }\n\n toggleMenu(event: any, menu: CpsMenuComponent) {\n const isVisible = menu.isVisible();\n this.allMenus?.forEach((m) => m.hide());\n if (!isVisible) menu.toggle(event, event.currentTarget, 'tr');\n }\n\n isActive(item: CpsSidebarMenuItem) {\n if (!item.items) return false;\n const urls = item.items.filter((i) => i.url).map((i) => i.url) as string[];\n\n if (this.exactRoutes) return urls.includes(this._router.url);\n return urls.some((url) => this._router.url.includes(url));\n }\n\n toggleSidebar() {\n this.isExpanded = !this.isExpanded;\n }\n}\n","<div\n class=\"cps-sidebar-menu\"\n [style.height]=\"height\"\n [ngClass]=\"{ 'cps-sidebar-menu-collapsed': !isExpanded }\">\n <ng-container *ngFor=\"let item of items\">\n <a\n *ngIf=\"item.url\"\n class=\"cps-sidebar-menu-item\"\n [routerLink]=\"[item.url]\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: exactRoutes }\"\n [ngClass]=\"{ disabled: item.disabled }\">\n <cps-icon [icon]=\"item.icon\" size=\"normal\"> </cps-icon>\n <span\n class=\"cps-sidebar-menu-item-label\"\n [@onExpand]=\"isExpanded ? 'expanded' : 'collapsed'\">\n {{ item.title }}\n </span>\n </a>\n <ng-container *ngIf=\"!item.url\">\n <cps-menu\n #popupMenu\n [items]=\"item.items || []\"\n [header]=\"item.title\"\n showTransitionOptions=\"0s\"\n hideTransitionOptions=\"0s\"\n [withArrow]=\"false\">\n </cps-menu>\n <div\n (click)=\"toggleMenu($event, popupMenu)\"\n class=\"cps-sidebar-menu-item menu-trigger\"\n [ngClass]=\"{\n active: isActive(item),\n 'menu-open': popupMenu.isVisible(),\n disabled: item.disabled\n }\">\n <cps-icon [icon]=\"item.icon\" size=\"normal\"> </cps-icon>\n <span\n class=\"cps-sidebar-menu-item-label\"\n [@onExpand]=\"isExpanded ? 'expanded' : 'collapsed'\">\n {{ item.title }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"expand-area\" (click)=\"toggleSidebar()\">\n <cps-icon icon=\"menu-shrink\" size=\"fill\"> </cps-icon>\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 { ControlValueAccessor, 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 { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\n\n/**\n * CpsTextareaComponent is a textarea component.\n * @group Components\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\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n /**\n * Label of the textarea.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Placeholder text for the textarea.\n * @group Props\n */\n @Input() placeholder = 'Please enter';\n\n /**\n * Number of rows in the textarea.\n * @group Props\n */\n @Input() rows = 5;\n\n /**\n * The cols attribute specifies the visible width of a textarea.\n * @group Props\n */\n @Input() cols = 20;\n\n /**\n * Determines whether the textarea can auto focus.\n * @group Props\n */\n @Input() autofocus = false;\n\n /**\n * Bottom hint text for the textarea.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Determines whether the textarea is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the textarea, it can be of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the textarea should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Error message.\n * @group Props\n */\n @Input() error = '';\n\n /**\n * Determines whether the component can be resized vertically or not.\n * @group Props\n */\n @Input() resizable: 'vertical' | 'none' = 'vertical';\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Value of the textarea.\n * @group Props\n */\n @Input() set value(value: string) {\n if (!value) value = '';\n this._value = value;\n this.onChange(value);\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Callback to invoke on value change.\n * @param {string} string - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<string>();\n\n /**\n * Callback to invoke when the component receives focus.\n * @param {any}\n * @group Emits\n */\n @Output() focused = new EventEmitter();\n\n /**\n * Callback to invoke when the prefixIcon is clicked.\n * @param {any}\n * @group Emits\n */\n @Output() prefixIconClicked = new EventEmitter();\n\n /**\n * Callback to invoke when the component loses focus.\n * @param {any}\n * @group Emits\n */\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 ('pattern' in errors) {\n this.error = 'Value is invalid';\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\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-textarea-error\">\n {{ error }}\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n/**\n * CpsTabComponent is a tab within a tab-group.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-tab',\n templateUrl: './cps-tab.component.html',\n styleUrls: ['./cps-tab.component.scss']\n})\nexport class CpsTabComponent {\n /**\n * Label of the tab.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Icon before the label.\n * @group Props\n */\n @Input() icon = '';\n\n /**\n * Determines whether tab is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether to show the tooltip on tab hover.\n * @group Props\n */\n @Input() tooltipText = '';\n\n /**\n * Class for styling the tab tooltip.\n * @group Props\n */\n @Input() tooltipContentClass = 'cps-tooltip-content';\n\n /**\n * Max width of the tooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() tooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the tooltip should have persistent info.\n * @group Props\n */\n @Input() tooltipPersistent = false;\n\n /**\n * Badge value to show on the tab after the label in a form of a circle.\n * @group Props\n */\n @Input() badgeValue = '';\n\n /**\n * Tooltip text to show on badge hover.\n * @group Props\n */\n @Input() badgeTooltip = '';\n\n @ViewChild(TemplateRef) content!: TemplateRef<any>;\n\n active = false;\n}\n","<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n","import {\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsTabComponent } from './cps-tab/cps-tab.component';\nimport { CpsTooltipDirective } from '../../directives/cps-tooltip.directive';\nimport { getCSSColor } from '../../utils/colors-utils';\nimport {\n Subscription,\n debounceTime,\n distinctUntilChanged,\n fromEvent\n} from 'rxjs';\n\nexport interface TabChangeEvent {\n currentTabIndex: number;\n newTabIndex?: number;\n}\n\nexport type CpsTabsAnimationType = 'slide' | 'fade';\n\n/**\n * CpsTabGroupComponent is a navigation component that displays items as tab headers.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CpsIconComponent,\n CpsTabComponent,\n CpsTooltipDirective\n ],\n selector: 'cps-tab-group',\n templateUrl: './cps-tab-group.component.html',\n styleUrls: ['./cps-tab-group.component.scss'],\n animations: [\n trigger('slideInOut', [\n state('slideLeft', style({ transform: 'translateX(0)' })),\n state('slideRight', style({ transform: 'translateX(0)' })),\n transition('* => slideLeft', [\n style({ transform: 'translateX(-100%)' }),\n animate('200ms ease-in')\n ]),\n transition('* => slideRight', [\n style({ transform: 'translateX(100%)' }),\n animate('200ms ease-in')\n ])\n ]),\n trigger('fadeInOut', [\n state('fadeIn', style({ opacity: 1 })),\n state('fadeOut', style({ opacity: 0 })),\n transition('fadeOut => fadeIn', [\n style({ opacity: 0 }),\n animate('100ms ease-in')\n ]),\n transition('fadeIn => fadeOut', [\n animate('0ms ease-out', style({ opacity: 0 }))\n ])\n ])\n ]\n})\nexport class CpsTabGroupComponent\n implements OnInit, AfterContentInit, AfterViewInit, OnDestroy\n{\n /**\n * Index of the selected tab.\n * @group Props\n */\n @Input() selectedIndex = 0;\n\n /**\n * Determines whether to apply an alternative 'subtabs' styling.\n * @group Props\n */\n @Input() isSubTabs = false;\n\n /**\n * Transition options of how content appears, it can be \"slide\" or \"fade\".\n * @group Props\n */\n @Input() animationType: CpsTabsAnimationType = 'slide';\n\n /**\n * Background styling of tabs.\n * @group Props\n */\n @Input() tabsBackground = 'inherit';\n\n /**\n * Callback to invoke before tab change.\n * @param {TabChangeEvent} any - tab changed.\n * @group Emits\n */\n @Output() beforeTabChanged = new EventEmitter<TabChangeEvent>();\n\n /**\n * Callback to invoke after tab change.\n * @param {TabChangeEvent} any - tab changed.\n * @group Emits\n */\n @Output() afterTabChanged = new EventEmitter<TabChangeEvent>();\n\n @ViewChild('tabsList') tabsList!: ElementRef;\n @ViewChild('backBtn') backBtn?: ElementRef;\n @ViewChild('forwardBtn') forwardBtn?: ElementRef;\n\n @ContentChildren(CpsTabComponent) tabs!: QueryList<CpsTabComponent>;\n\n backBtnVisible = false;\n forwardBtnVisible = false;\n animationState: 'slideLeft' | 'slideRight' | 'fadeIn' | 'fadeOut' = 'fadeIn';\n\n windowResize$: Subscription = Subscription.EMPTY;\n listScroll$: Subscription = Subscription.EMPTY;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.tabsBackground = getCSSColor(this.tabsBackground);\n\n this.windowResize$ = fromEvent(window, 'resize')\n .pipe(debounceTime(50), distinctUntilChanged())\n .subscribe(() => this.onResize());\n }\n\n ngAfterContentInit() {\n this.selectTab(this.selectedIndex);\n }\n\n ngAfterViewInit() {\n this._updateNavBtnsState();\n\n this.listScroll$ = fromEvent(this.tabsList.nativeElement, 'scroll')\n .pipe(debounceTime(50), distinctUntilChanged())\n .subscribe((event: any) => this.onScroll(event));\n\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.windowResize$?.unsubscribe();\n this.listScroll$?.unsubscribe();\n }\n\n get selectedTab(): CpsTabComponent | undefined {\n return this.tabs.find((t) => t.active);\n }\n\n selectTab(newSelectedIndex: number) {\n const _tabs = this.tabs.toArray();\n const currentSelectedTab = _tabs && _tabs[this.selectedIndex];\n\n this.beforeTabChanged.emit({\n currentTabIndex: this.selectedIndex,\n newTabIndex: newSelectedIndex\n });\n\n currentSelectedTab && (currentSelectedTab.active = false);\n const newSelectedTab = _tabs && _tabs[newSelectedIndex];\n newSelectedTab && (newSelectedTab.active = true);\n if (newSelectedIndex === this.selectedIndex) {\n return;\n }\n\n if (this.animationType === 'slide') {\n this.animationState =\n newSelectedIndex < this.selectedIndex ? 'slideLeft' : 'slideRight';\n this.selectedIndex = newSelectedIndex;\n\n this.afterTabChanged.emit({\n currentTabIndex: newSelectedIndex\n });\n } else if (this.animationType === 'fade') {\n this.animationState = 'fadeOut';\n setTimeout(() => {\n this.animationState = 'fadeIn';\n this.selectedIndex = newSelectedIndex;\n this.afterTabChanged.emit({\n currentTabIndex: newSelectedIndex\n });\n }, 100);\n }\n }\n\n onScroll(event: any) {\n this._updateNavBtnsState();\n event.preventDefault();\n }\n\n onResize() {\n this._updateNavBtnsState();\n }\n\n navBackward() {\n const content = this.tabsList.nativeElement;\n const width = this._getWidth(content) - this._getVisibleButtonWidths();\n const pos = content.scrollLeft - width;\n content.scrollLeft = pos <= 0 ? 0 : pos;\n }\n\n navForward() {\n const content = this.tabsList.nativeElement;\n const width = this._getWidth(content) - this._getVisibleButtonWidths();\n const pos = content.scrollLeft + width;\n const lastPos = content.scrollWidth - width;\n content.scrollLeft = pos >= lastPos ? lastPos : pos;\n }\n\n private _updateNavBtnsState() {\n const content = this.tabsList.nativeElement;\n const { scrollLeft, scrollWidth } = content;\n\n const width = this._getWidth(content);\n\n this.backBtnVisible = scrollLeft === 0;\n this.forwardBtnVisible = Math.abs(scrollLeft - scrollWidth + width) < 2;\n }\n\n private _getVisibleButtonWidths() {\n return [this.backBtn?.nativeElement, this.forwardBtn?.nativeElement].reduce(\n (acc, el) => (el ? acc + this._getWidth(el) : acc),\n 0\n );\n }\n\n private _getWidth(el: any): number {\n let width = el.offsetWidth;\n const style = getComputedStyle(el);\n\n width -=\n parseFloat(style.paddingLeft) +\n parseFloat(style.paddingRight) +\n parseFloat(style.borderLeftWidth) +\n parseFloat(style.borderRightWidth);\n\n return width;\n }\n}\n","<div\n class=\"cps-tabs\"\n [ngClass]=\"{ 'cps-tabs-subtabs': isSubTabs }\"\n [ngStyle]=\"{ 'background-color': tabsBackground }\">\n <div\n class=\"nav-btn nav-btn-back\"\n *ngIf=\"!backBtnVisible\"\n #backBtn\n (click)=\"navBackward()\">\n <cps-icon icon=\"chevron-down\" color=\"text-dark\"></cps-icon>\n </div>\n <ul #tabsList class=\"cps-tabs-list\">\n <ng-container *ngFor=\"let tab of tabs; let tabIndex = index\">\n <li\n *ngIf=\"tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"!tab.disabled ? selectTab(tabIndex) : ''\"\n [ngClass]=\"{ active: tab.active, disabled: tab.disabled }\"\n [cpsTooltip]=\"tab.tooltipText\"\n tooltipOpenDelay=\"1000\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\"\n [tooltipMaxWidth]=\"tab.tooltipMaxWidth\"\n [tooltipPersistent]=\"tab.tooltipPersistent\"\n [tooltipContentClass]=\"tab.tooltipContentClass\">\n <ng-container\n *ngTemplateOutlet=\"\n tabHeaderTemplate;\n context: {\n tab: tab\n }\n \"></ng-container>\n </li>\n <li\n *ngIf=\"!tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"!tab.disabled ? selectTab(tabIndex) : ''\"\n [ngClass]=\"{ active: tab.active, disabled: tab.disabled }\">\n <ng-container\n *ngTemplateOutlet=\"\n tabHeaderTemplate;\n context: {\n tab: tab\n }\n \"></ng-container>\n </li>\n </ng-container>\n </ul>\n <div\n class=\"nav-btn nav-btn-forward\"\n *ngIf=\"!forwardBtnVisible\"\n #forwardBtn\n (click)=\"navForward()\">\n <cps-icon icon=\"chevron-down\" color=\"text-dark\"></cps-icon>\n </div>\n</div>\n<div\n class=\"cps-tab-content\"\n [ngClass]=\"{ 'cps-tab-content-subtabs': isSubTabs }\">\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n [@slideInOut]=\"animationState\"\n *ngIf=\"tab.active && animationType === 'slide'\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n [@fadeInOut]=\"animationState\"\n *ngIf=\"tab.active && animationType === 'fade'\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #tabHeaderTemplate let-tab=\"tab\">\n <cps-icon *ngIf=\"tab.icon\" class=\"cps-tab-icon\" [icon]=\"tab.icon\"> </cps-icon>\n <a class=\"cps-tab-link\">{{ tab.label }}</a>\n <ng-container *ngIf=\"tab.badgeValue\">\n <div\n *ngIf=\"tab.badgeTooltip\"\n class=\"cps-tab-badge\"\n [cpsTooltip]=\"tab.badgeTooltip\">\n <span>{{ tab.badgeValue }}</span>\n </div>\n <div *ngIf=\"!tab.badgeTooltip\" class=\"cps-tab-badge\">\n <span>{{ tab.badgeValue }}</span>\n </div>\n </ng-container>\n</ng-template>\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport {\n CpsButtonToggleComponent,\n CpsButtonToggleOption\n} from '../cps-button-toggle/cps-button-toggle.component';\nimport { CpsAutocompleteComponent } from '../cps-autocomplete/cps-autocomplete.component';\nimport { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\n\nexport interface CpsTime {\n hours: string;\n minutes: string;\n seconds?: string;\n dayPeriod?: 'AM' | 'PM';\n}\n\n/**\n * CpsTimepickerComponent allows to pick a specific time from a set of available options or input it manually.\n * @group Components\n */\n@Component({\n selector: 'cps-timepicker',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsButtonToggleComponent,\n CpsAutocompleteComponent,\n CpsInfoCircleComponent\n ],\n templateUrl: './cps-timepicker.component.html',\n styleUrls: ['./cps-timepicker.component.scss']\n})\nexport class CpsTimepickerComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n dayPeriodOptions = [\n { label: 'AM', value: 'AM' },\n { label: 'PM', value: 'PM' }\n ] as CpsButtonToggleOption[];\n\n hoursOptions: { label: string; value: string }[] = [];\n\n minutesOptions = this._getRange(0, 59).map((m) => ({\n value: m.toString().padStart(2, '0'),\n label: m.toString().padStart(2, '0')\n }));\n\n secondsOptions: { label: string; value: string }[] = [];\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n /**\n * Label of the timepicker.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Determines whether the timepicker is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether the timepicker uses 24-hour format.\n * @group Props\n */\n @Input() use24HourTime = false;\n\n /**\n * Determines whether the timepicker has seconds.\n * @group Props\n */\n @Input() withSeconds = false;\n\n /**\n * Bottom hint text for the timepicker.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Value of the timepicker.\n * @group Props\n */\n @Input() set value(value: CpsTime | undefined) {\n if (!value) value = undefined;\n this._value = value;\n this.onChange(value);\n }\n\n get value(): CpsTime | undefined {\n return this._value;\n }\n\n /**\n * Callback to invoke on value change.\n * @param {string} string - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<CpsTime>();\n\n @ViewChild('hoursField')\n hoursField!: CpsAutocompleteComponent;\n\n @ViewChild('minutesField')\n minutesField!: CpsAutocompleteComponent;\n\n @ViewChild('secondsField')\n secondsField?: CpsAutocompleteComponent;\n\n error = '';\n hoursError = '';\n minutesError = '';\n secondsError = '';\n\n private _value: CpsTime | undefined = undefined;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this._initHoursOptions();\n\n if (this.withSeconds) {\n this.secondsOptions = this._getRange(0, 59).map((m) => ({\n value: m.toString().padStart(2, '0'),\n label: m.toString().padStart(2, '0')\n }));\n }\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngAfterViewInit(): void {\n if (this.hoursField) this.hoursField.isTimePickerField = true;\n if (this.minutesField) this.minutesField.isTimePickerField = true;\n if (this.secondsField) this.secondsField.isTimePickerField = true;\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 // 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 // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n writeValue(value: CpsTime) {\n this.value = value;\n }\n\n onFieldBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n }\n\n updateHours(hours: string) {\n const userInput = this.hoursField?.inputText || hours || '';\n if (userInput) {\n this._initValue();\n const h = parseInt(userInput, 10);\n if (!isNaN(h) && this.value) {\n if (h >= 13 && h <= 23 && !this.use24HourTime) {\n this.value.dayPeriod = 'PM';\n }\n }\n }\n\n if (this.value?.hours !== hours) {\n if (this.value) this.value.hours = hours;\n }\n this._tryUpdateValue();\n }\n\n updateMinutes(minutes: string) {\n minutes = minutes || '';\n if (minutes) this._initValue();\n if (this.value?.minutes !== minutes) {\n if (this.value) this.value.minutes = minutes;\n }\n this._tryUpdateValue();\n }\n\n updateSeconds(seconds: string) {\n seconds = seconds || '';\n if (seconds) this._initValue();\n if (this.value?.seconds !== seconds) {\n if (this.value) this.value.seconds = seconds;\n }\n this._tryUpdateValue();\n }\n\n updateDayPeriod(dayPeriod: 'AM' | 'PM') {\n if (dayPeriod) this._initValue();\n if (this.value?.dayPeriod !== dayPeriod) {\n if (this.value) this.value.dayPeriod = dayPeriod;\n }\n this._tryUpdateValue();\n }\n\n numberOnly(event: any): boolean {\n const charCode = event.which ? event.which : event.keyCode;\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\n return false;\n }\n return true;\n }\n\n private _initValue() {\n if (!this.value) {\n this.value = {\n hours: '',\n minutes: ''\n };\n }\n if (!this.use24HourTime && !('dayPeriod' in this.value)) {\n this.value.dayPeriod = 'AM';\n }\n if (this.withSeconds && !('seconds' in this.value)) {\n this.value.seconds = '';\n }\n }\n\n private _isValueValid() {\n if (!this.value) return false;\n if (!this.value.hours || !this.value.minutes) return false;\n if (this.withSeconds && !this.value.seconds) return false;\n if (!this.use24HourTime && !this.value.dayPeriod) return false;\n return true;\n }\n\n private _updateErrors() {\n this.error = 'Time is invalid';\n this.hoursError = this.value?.hours ? '' : this.error;\n this.minutesError = this.value?.minutes ? '' : this.error;\n if (this.withSeconds)\n this.secondsError = this.value?.seconds ? '' : this.error;\n }\n\n private _setErrors(error: string) {\n this.error = error;\n this.hoursError = error;\n this.minutesError = error;\n this.secondsError = this.withSeconds ? error : '';\n }\n\n private _checkErrors() {\n if (!this._control) return;\n\n if (this.value && !this._isValueValid()) {\n this._updateErrors();\n return;\n }\n\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this._setErrors('');\n return;\n }\n\n if ('required' in errors) {\n this._setErrors('Field is required');\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this._setErrors('');\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this._setErrors(message || 'Unknown error');\n }\n\n private _initHoursOptions() {\n const getHourAlias = (h: number) => {\n h = h === 12 ? 0 : h + 12;\n return h.toString().padStart(2, '0');\n };\n\n this.hoursOptions = (\n this.use24HourTime ? this._getRange(0, 23) : this._getRange(1, 12)\n ).map((h) => {\n const res: { value: string; label: string; alias?: string } = {\n value: h.toString().padStart(2, '0'),\n label: h.toString().padStart(2, '0')\n };\n if (!this.use24HourTime) res.alias = getHourAlias(h);\n return res;\n });\n }\n\n private _updateValue(value: CpsTime) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n private _tryUpdateValue() {\n if (\n this.value?.hours &&\n this.value?.minutes &&\n (!this.withSeconds || (this.withSeconds && this.value?.seconds)) &&\n (this.use24HourTime || (!this.use24HourTime && this.value?.dayPeriod))\n )\n this._updateValue(this.value);\n }\n\n private _getRange(startFrom: number, until: number) {\n return Array.from(\n { length: until + 1 - startFrom },\n (_, k) => k + startFrom\n );\n }\n}\n","<div class=\"cps-timepicker\">\n <div\n class=\"cps-timepicker-label\"\n [ngClass]=\"{ 'cps-timepicker-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-timepicker-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-timepicker-body\">\n <cps-autocomplete\n #hoursField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"hoursOptions\"\n [withOptionsAliases]=\"!use24HourTime\"\n [useOptionsAliasesWhenNoMatch]=\"true\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.hours\"\n (valueChanged)=\"updateHours($event)\"\n [externalError]=\"hoursError\"\n placeholder=\"HH\"></cps-autocomplete>\n <span class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n #minutesField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"minutesOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.minutes\"\n (valueChanged)=\"updateMinutes($event)\"\n [externalError]=\"minutesError\"\n placeholder=\"MM\"></cps-autocomplete>\n <span *ngIf=\"withSeconds\" class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n *ngIf=\"withSeconds\"\n #secondsField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"secondsOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.seconds\"\n (valueChanged)=\"updateSeconds($event)\"\n [externalError]=\"secondsError\"\n placeholder=\"SS\"></cps-autocomplete>\n <cps-button-toggle\n *ngIf=\"!use24HourTime\"\n class=\"cps-timepicker-am-pm-selector\"\n [options]=\"dayPeriodOptions\"\n [disabled]=\"disabled\"\n [value]=\"value?.dayPeriod || 'AM'\"\n (valueChanged)=\"updateDayPeriod($event)\">\n </cps-button-toggle>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-timepicker-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-timepicker-error\">\n {{ error }}\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { Observable, catchError, of, take } from 'rxjs';\n\n/**\n * CpsFileUploadComponent is an advanced uploader with dragdrop support.\n * @group Components\n */\n@Component({\n selector: 'cps-file-upload',\n standalone: true,\n imports: [CommonModule, CpsIconComponent, CpsProgressLinearComponent],\n templateUrl: './cps-file-upload.component.html',\n styleUrls: ['./cps-file-upload.component.scss']\n})\nexport class CpsFileUploadComponent implements OnInit {\n /**\n * Expected extensions of a file to be uploaded. E.g. 'doc or .doc'.\n * @group Props\n */\n @Input() extensions: string[] = [];\n\n /**\n * Expected file description. E.g. 'Word document'.\n * @group Props\n */\n @Input() fileDesc = 'Any file';\n\n /**\n * Width of the component, a number denoting pixels or a string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Callback for uploaded file processing.\n * @group Props\n */\n @Input() fileProcessingCallback?: (file: File) => Observable<boolean> =\n undefined;\n\n /**\n * Callback to invoke when file is uploaded.\n * @param {File} File\n * @group Emits\n */\n @Output() fileUploaded = new EventEmitter<File>();\n\n /**\n * Callback to invoke when file upload fails.\n * @param {string} - file name\n * @group Emits\n */\n @Output() fileUploadFailed = new EventEmitter<string>();\n\n /**\n * Callback to invoke when uploaded file is removed.\n * @param {string} - file name\n * @group Emits\n */\n @Output() uploadedFileRemoved = new EventEmitter<string>();\n\n isDragoverFile = false;\n uploadedFile?: File;\n extensionsString = '';\n extensionsStringAsterisks = '';\n\n isProcessingFile = false;\n\n ngOnInit(): void {\n this.width = convertSize(this.width);\n this.extensions = this.extensions.map((ext) =>\n ext.startsWith('.') ? ext : '.' + ext\n );\n this.extensionsString = this.extensions.join(', ');\n this.extensionsStringAsterisks = this.extensions\n .map((ext) => '*' + ext)\n .join(', ');\n }\n\n tryUploadFile(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n this.isDragoverFile = false;\n let file: File | undefined;\n\n if (event.type === 'drop') {\n file = (event as DragEvent).dataTransfer?.files.item(0) ?? undefined;\n } else {\n const files = (event.target as HTMLInputElement).files;\n if (!files || files.length < 1) return;\n file = files.item(0) ?? undefined;\n }\n\n if (!this._isFileExtensionValid(file)) {\n this.fileUploadFailed.emit(file?.name ?? '');\n return;\n }\n\n this.uploadedFile = file;\n if (this.uploadedFile) {\n this.fileUploaded.emit(this.uploadedFile);\n if (this.fileProcessingCallback) {\n this.isProcessingFile = true;\n this.fileProcessingCallback(this.uploadedFile)\n .pipe(\n take(1),\n catchError(() => {\n return of(false);\n })\n )\n .subscribe((res) => {\n if (!res) this.removeUploadedFile();\n this.isProcessingFile = false;\n });\n }\n }\n }\n\n removeUploadedFile() {\n const name = this.uploadedFile?.name ?? '';\n this.uploadedFile = undefined;\n this.uploadedFileRemoved.emit(name);\n }\n\n private _isFileExtensionValid(file?: File) {\n if (!file) return false;\n\n if (this.extensions.length < 1) return true;\n\n for (const ext of this.extensions) {\n if (file.name.endsWith(ext)) return true;\n }\n\n return false;\n }\n}\n","<div class=\"cps-file-upload\" [ngStyle]=\"{ width: width }\">\n <div\n class=\"cps-file-upload-dropzone\"\n [ngClass]=\"{\n 'dragged-over': isDragoverFile,\n 'with-uploads': uploadedFile?.name\n }\"\n (dragend)=\"isDragoverFile = false\"\n (dragenter)=\"isDragoverFile = true\"\n (dragleave)=\"isDragoverFile = false\"\n (dragover)=\"isDragoverFile = true\"\n (mouseleave)=\"isDragoverFile = false\"\n (drop)=\"tryUploadFile($event)\">\n <input\n (change)=\"tryUploadFile($event)\"\n type=\"file\"\n [accept]=\"extensionsString\"\n title=\"\" />\n <cps-icon icon=\"export\" size=\"large\" color=\"text-darkest\"></cps-icon>\n <div class=\"cps-file-upload-dropzone-title\">\n Drag&Drop or choose a file to upload\n </div>\n <span\n class=\"cps-file-upload-dropzone-file-desc\"\n *ngIf=\"fileDesc || extensionsStringAsterisks\"\n >{{ fileDesc }}\n {{\n extensionsStringAsterisks ? '(' + extensionsStringAsterisks + ')' : ''\n }}</span\n >\n <cps-progress-linear\n *ngIf=\"isProcessingFile && uploadedFile\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-file-upload-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"uploadedFile\" class=\"cps-file-upload-uploaded-files\">\n <div class=\"cps-file-upload-uploaded-file\">\n <div class=\"cps-file-upload-uploaded-file-title\">\n <cps-icon\n class=\"cps-file-upload-uploaded-file-status-icon\"\n [icon]=\"isProcessingFile ? 'pending' : 'toast-success'\"\n [color]=\"isProcessingFile ? 'warn' : 'success'\">\n </cps-icon>\n <div class=\"cps-file-upload-uploaded-file-name\">\n {{ uploadedFile.name }}\n </div>\n </div>\n <cps-icon\n *ngIf=\"!isProcessingFile\"\n class=\"cps-file-upload-uploaded-file-remove-icon\"\n icon=\"remove\"\n color=\"error\"\n (click)=\"removeUploadedFile()\">\n </cps-icon>\n </div>\n </div>\n</div>\n","import { Observable, Subject, take } from 'rxjs';\nimport { CpsDialogComponent } from '../internal/components/cps-dialog/cps-dialog.component';\n\nexport class CpsDialogRef<T = any> {\n private _containerInstance!: CpsDialogComponent;\n\n _setContainerInstance(instance: CpsDialogComponent) {\n this._containerInstance = instance;\n this._handleContainerEvents();\n }\n\n private _handleContainerEvents() {\n this._containerInstance?._openStateChanged.pipe(take(1)).subscribe(() => {\n this._onOpen.next();\n });\n this._containerInstance?._dragStarted.subscribe((event: MouseEvent) => {\n this._onDragStart.next(event);\n });\n this._containerInstance?._dragEnded.subscribe((event: MouseEvent) => {\n this._onDragEnd.next(event);\n });\n this._containerInstance?._resizeStarted.subscribe((event: MouseEvent) => {\n this._onResizeStart.next(event);\n });\n this._containerInstance?._resizeEnded.subscribe((event: MouseEvent) => {\n this._onResizeEnd.next(event);\n });\n this._containerInstance?._maximizedStateChanged.subscribe(\n (value: boolean) => {\n this._onMaximize.next(value);\n }\n );\n }\n\n /**\n * The instance of the component opened into the dialog.\n * @group Props\n */\n componentInstance!: T;\n\n /**\n * Closes the dialog.\n * @group Method\n */\n close(result?: any) {\n if (this.disableClose) return;\n this._onClose.next(result);\n }\n\n /**\n * Destroys the dialog.\n * @group Method\n */\n destroy() {\n this._onDestroy.next();\n }\n\n /**\n * Sets dialog as full screen.\n * @group Method\n */\n maximize() {\n this._containerInstance?.toggleMaximized(true);\n }\n\n /**\n * Switches back from full screen dialog size to normal size.\n * @group Method\n */\n minimize() {\n this._containerInstance?.toggleMaximized(false);\n }\n\n /**\n * Checks whether the dialog is currently opened.\n * @group Method\n */\n isOpen() {\n return this._containerInstance?.visible || false;\n }\n\n /**\n * Checks whether the dialog is maximized.\n * @group Method\n */\n isMaximized() {\n return this._containerInstance?.maximized || false;\n }\n\n private readonly _onOpen = new Subject<void>();\n /**\n * Event triggered on dialog is opened.\n * @group Events\n */\n onOpen: Observable<void> = this._onOpen.asObservable();\n\n private readonly _onClose = new Subject<any>();\n /**\n * Event triggered on dialog is closed.\n * @param {any} result - Close result.\n * @group Events\n */\n onClose: Observable<any> = this._onClose.asObservable();\n\n private readonly _onDestroy = new Subject<void>();\n /**\n * Event triggered on dialog is destroyed.\n * @group Events\n */\n onDestroy: Observable<void> = this._onDestroy.asObservable();\n\n private readonly _onDragStart = new Subject<MouseEvent>();\n /**\n * Event triggered on drag start.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onDragStart: Observable<MouseEvent> = this._onDragStart.asObservable();\n\n private readonly _onDragEnd = new Subject<MouseEvent>();\n /**\n * Event triggered on drag end.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onDragEnd: Observable<MouseEvent> = this._onDragEnd.asObservable();\n\n private readonly _onResizeStart = new Subject<MouseEvent>();\n /**\n * Event triggered on resize start.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onResizeStart: Observable<MouseEvent> = this._onResizeStart.asObservable();\n\n private readonly _onResizeEnd = new Subject<MouseEvent>();\n /**\n * Event triggered on resize end.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onResizeEnd: Observable<MouseEvent> = this._onResizeEnd.asObservable();\n\n private readonly _onMaximize = new Subject<boolean>();\n /**\n * Event triggered on dialog maximized state changed.\n * @param {boolean} value - boolean value.\n * @group Events\n */\n onMaximize: Observable<boolean> = this._onMaximize.asObservable();\n\n /**\n * Specifies whether the user is allowed to close the dialog.\n * @group Props\n */\n disableClose?: boolean;\n}\n","import { CpsTooltipPosition } from '../../../directives/cps-tooltip.directive';\n\nexport class CpsDialogConfig<T = any> {\n /**\n * An object to pass to the component loaded inside the Dialog.\n */\n data?: T;\n /**\n * Determines whether to show the header or not.\n */\n showHeader?: boolean;\n /**\n * Header text of the dialog.\n */\n headerTitle?: string;\n /**\n * Header information tooltip.\n */\n headerInfoTooltip?: string;\n /**\n * Header information tooltip position.\n */\n headerInfoTooltipPosition?: CpsTooltipPosition;\n /**\n * Header icon.\n */\n headerIcon?: string;\n /**\n * Header icon color.\n */\n headerIconColor?: string;\n /**\n * Determines whether to show the header left border.\n */\n showHeaderLeftBorder?: boolean;\n /**\n * Determines whether to show the header bottom border.\n */\n showHeaderBottomBorder?: boolean;\n /**\n * Identifies the element (or elements) that labels the element it is applied to.\n */\n ariaLabelledBy?: string;\n /**\n * Width of the dialog.\n */\n width?: string;\n /**\n * Height of the dialog.\n */\n height?: string;\n /**\n * Min-width of the dialog.\n */\n minWidth?: string;\n /**\n * Min-height of the dialog.\n */\n minHeight?: string;\n /**\n * Max-width of the dialog.\n */\n maxWidth?: string;\n /**\n * Max-height of the dialog.\n */\n maxHeight?: string;\n /**\n * Specifies if pressing escape key should hide the dialog.\n */\n closeOnEscape?: boolean;\n /**\n * Base zIndex value to use in layering.\n */\n baseZIndex?: number;\n /**\n * Determines whether to automatically manage layering.\n */\n autoZIndex?: boolean;\n /**\n * Specifies whether the user is allowed to close the dialog.\n */\n disableClose?: boolean;\n /**\n * Inline style of the component.\n */\n style?: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n */\n styleClass?: string;\n /**\n * Inline style of the content.\n */\n contentStyle?: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the content.\n */\n contentStyleClass?: string;\n /**\n * Transition options of the animation.\n */\n transitionOptions?: string;\n /**\n * Adds a close button to the header to hide the dialog.\n */\n showCloseBtn?: boolean;\n /**\n * Defines if background should be blocked when dialog is displayed.\n */\n modal?: boolean;\n /**\n * When modal dialog is displayed, determines whether background should be blurred.\n */\n blurredBackground?: boolean;\n /**\n * Style class of the mask.\n */\n maskStyleClass?: string;\n /**\n * Enables resizing of the content.\n */\n resizable?: boolean;\n /**\n * Enables dragging to change the position using header.\n */\n draggable?: boolean;\n /**\n * Keeps dialog in the viewport.\n */\n keepInViewport?: boolean;\n /**\n * Minimum value for the left coordinate of dialog in dragging.\n */\n minX?: number;\n /**\n * Minimum value for the top coordinate of dialog in dragging.\n */\n minY?: number;\n /**\n * Determines whether the dialog can be displayed full screen.\n */\n maximizable?: boolean;\n /**\n * Determines whether the dialog is initially opened as full screen.\n */\n maximized?: boolean;\n /**\n * Position of the dialog, options are \"center\", \"top\", \"bottom\", \"left\", \"right\", \"top-left\", \"top-right\", \"bottom-left\" or \"bottom-right\".\n */\n position?:\n | 'center'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[cpsDialogContent]'\n})\nexport class CpsDialogContentDirective {\n // eslint-disable-next-line no-useless-constructor\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import {\n animate,\n animation,\n AnimationEvent,\n style,\n transition,\n trigger,\n useAnimation\n} from '@angular/animations';\nimport { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n Inject,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n Type,\n ViewChild,\n ViewEncapsulation,\n ViewRef\n} from '@angular/core';\nimport { PrimeNGConfig, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { CpsDialogContentDirective } from '../../directives/cps-dialog-content.directive';\nimport { CpsDialogConfig } from '../../../utils/cps-dialog-config';\nimport { CpsDialogRef } from '../../../utils/cps-dialog-ref';\nimport { CpsButtonComponent } from '../../../../../components/cps-button/cps-button.component';\nimport { CpsInfoCircleComponent } from '../../../../../components/cps-info-circle/cps-info-circle.component';\nimport { CpsIconComponent } from '../../../../../components/cps-icon/cps-icon.component';\n\nconst showAnimation = animation([\n style({ transform: '{{transform}}', opacity: 0 }),\n animate('{{transition}}', style({ transform: 'none', opacity: 1 }))\n]);\n\nconst hideAnimation = animation([\n animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\ntype Nullable<T = void> = T | null | undefined;\ntype VoidListener = () => void | null | undefined;\n\n@Component({\n selector: 'cps-dialog',\n standalone: true,\n imports: [\n CommonModule,\n SharedModule,\n CpsDialogContentDirective,\n CpsButtonComponent,\n CpsInfoCircleComponent,\n CpsIconComponent\n ],\n templateUrl: './cps-dialog.component.html',\n styleUrls: ['./cps-dialog.component.scss'],\n animations: [\n trigger('animation', [\n transition('void => visible', [useAnimation(showAnimation)]),\n transition('visible => void', [useAnimation(hideAnimation)])\n ])\n ],\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None\n})\nexport class CpsDialogComponent implements AfterViewInit, OnDestroy {\n visible = true;\n\n componentRef: Nullable<ComponentRef<any>>;\n\n resizing: boolean | undefined;\n\n dragging: boolean | undefined;\n\n maximized: boolean | undefined;\n\n _style: any = {};\n\n originalStyle: any;\n\n lastPageX: number | undefined;\n\n lastPageY: number | undefined;\n\n @ViewChild(CpsDialogContentDirective)\n insertionPoint: Nullable<CpsDialogContentDirective>;\n\n @ViewChild('mask') maskViewChild: Nullable<ElementRef>;\n @ViewChild('content') contentViewChild: Nullable<ElementRef>;\n @ViewChild('header') headerViewChild: Nullable<ElementRef>;\n\n childComponentType: Nullable<Type<any>>;\n\n container: Nullable<HTMLDivElement>;\n\n wrapper: Nullable<HTMLElement>;\n\n documentEscapeListener!: VoidListener | null;\n\n maskClickListener!: VoidListener | null;\n\n transformOptions = 'scale(0.7)';\n\n documentResizeListener!: VoidListener | null;\n\n documentResizeEndListener!: VoidListener | null;\n\n documentDragListener!: VoidListener | null;\n\n documentDragEndListener!: VoidListener | null;\n\n _openStateChanged = new EventEmitter<void>();\n _dragStarted = new EventEmitter<MouseEvent>();\n _dragEnded = new EventEmitter<MouseEvent>();\n _resizeStarted = new EventEmitter<MouseEvent>();\n _resizeEnded = new EventEmitter<MouseEvent>();\n _maximizedStateChanged = new EventEmitter<boolean>();\n\n get minX(): number {\n return this.config.minX ? this.config.minX : 0;\n }\n\n get minY(): number {\n return this.config.minY ? this.config.minY : 0;\n }\n\n get keepInViewport(): boolean {\n return this.config.keepInViewport || false;\n }\n\n get maximizable(): boolean {\n return this.config.maximizable || false;\n }\n\n get draggable(): boolean {\n return this.config.draggable || false;\n }\n\n get resizable(): boolean {\n return this.config.resizable || false;\n }\n\n get style(): any {\n return this._style;\n }\n\n set style(value: any) {\n if (value) {\n this._style = { ...value };\n this.originalStyle = value;\n }\n }\n\n get position(): string {\n return this.config.position || '';\n }\n\n get parent() {\n const domElements = Array.from(\n this.document.getElementsByClassName('cps-dialog')\n );\n return domElements.length > 1 ? domElements.pop() : undefined;\n }\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 private _dialogRef: CpsDialogRef,\n private _cdRef: ChangeDetectorRef,\n public renderer: Renderer2,\n public config: CpsDialogConfig,\n public zone: NgZone,\n public primeNGConfig: PrimeNGConfig\n ) {}\n\n ngAfterViewInit() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.loadChildComponent(this.childComponentType!);\n\n if (this.config.maximized && this.maximizable) {\n this.toggleMaximized();\n }\n this._cdRef.detectChanges();\n }\n\n loadChildComponent(componentType: Type<any>) {\n const viewContainerRef = this.insertionPoint?.viewContainerRef;\n viewContainerRef?.clear();\n\n this.componentRef = viewContainerRef?.createComponent(componentType);\n if (this._dialogRef)\n this._dialogRef.componentInstance = this.componentRef?.instance;\n }\n\n moveOnTop() {\n if (this.config.autoZIndex !== false) {\n ZIndexUtils.set(\n 'modal',\n this.container,\n (this.config.baseZIndex || 0) + this.primeNGConfig.zIndex.modal\n );\n (this.wrapper as HTMLElement).style.zIndex = String(\n parseInt((this.container as HTMLDivElement).style.zIndex, 10) - 1\n );\n }\n }\n\n onAnimationStart(event: AnimationEvent) {\n switch (event.toState) {\n case 'visible':\n this.container = event.element;\n this.wrapper = (this.container as HTMLDivElement).parentElement;\n this.moveOnTop();\n if (this.parent) {\n this.unbindGlobalListeners();\n }\n this.bindGlobalListeners();\n\n if (this.config.modal !== false) {\n this.enableModality();\n }\n this.focus();\n break;\n\n case 'void':\n if (this.wrapper && this.config.modal !== false) {\n if (this.config.blurredBackground) {\n DomHandler.addClass(\n this.wrapper,\n 'cps-dialog-blurred-overlay-leave'\n );\n } else DomHandler.addClass(this.wrapper, 'cps-dialog-overlay-leave');\n }\n break;\n }\n }\n\n onAnimationEnd(event: AnimationEvent) {\n if (event.toState === 'void') {\n this.onContainerDestroy();\n this._dialogRef.destroy();\n } else {\n this._openStateChanged.emit();\n }\n }\n\n onContainerDestroy() {\n this.unbindGlobalListeners();\n\n if (this.container && this.config.autoZIndex !== false) {\n ZIndexUtils.clear(this.container);\n }\n\n if (this.config.modal !== false) {\n this.disableModality();\n }\n this.container = null;\n }\n\n close() {\n if (this.config?.disableClose || this._dialogRef?.disableClose) return;\n\n this.visible = false;\n this._cdRef.markForCheck();\n }\n\n hide() {\n if (this.config?.disableClose) return;\n\n if (this._dialogRef) {\n if (!this._dialogRef.disableClose) this._dialogRef.close();\n }\n }\n\n enableModality() {\n if (!this.config.disableClose) {\n this.maskClickListener = this.renderer.listen(\n this.wrapper,\n 'mousedown',\n (event: any) => {\n if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n this.hide();\n }\n }\n );\n }\n\n if (this.config.modal !== false) {\n DomHandler.addClass(this.document.body, 'cps-overflow-hidden');\n }\n }\n\n disableModality() {\n if (this.wrapper) {\n if (!this.config.disableClose) {\n this.unbindMaskClickListener();\n }\n\n if (this.config.modal !== false) {\n DomHandler.removeClass(this.document.body, 'cps-overflow-hidden');\n }\n\n if (!(this._cdRef as ViewRef).destroyed) {\n this._cdRef.detectChanges();\n }\n }\n }\n\n focus() {\n const focusable = DomHandler.getFocusableElements(\n this.container as HTMLDivElement\n );\n if (focusable && focusable.length > 0) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable[0].focus(), 5);\n });\n }\n }\n\n toggleMaximized(value?: boolean) {\n if (!this.maximizable) return;\n if (typeof value === 'boolean') {\n if (value === this.maximized || (!value && !this.maximized)) return;\n this.maximized = value;\n } else this.maximized = !this.maximized;\n\n if (this.maximized) {\n DomHandler.addClass(this.document.body, 'cps-overflow-hidden');\n } else {\n DomHandler.removeClass(this.document.body, 'cps-overflow-hidden');\n }\n\n this._maximizedStateChanged.emit(this.maximized);\n }\n\n initResize(event: MouseEvent) {\n if (this.resizable) {\n if (!this.documentResizeListener) {\n this.bindDocumentResizeListeners();\n }\n\n this.resizing = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n DomHandler.addClass(this.document.body, 'cps-unselectable-text');\n this._resizeStarted.emit(event);\n }\n }\n\n onResize(event: MouseEvent) {\n if (this.resizing) {\n const deltaX = event.pageX - (this.lastPageX as number);\n const deltaY = event.pageY - (this.lastPageY as number);\n const containerWidth = DomHandler.getOuterWidth(this.container);\n const containerHeight = DomHandler.getOuterHeight(this.container);\n const contentHeight = DomHandler.getOuterHeight(\n (<ElementRef>this.contentViewChild).nativeElement\n );\n const contentWidth = DomHandler.getOuterWidth(\n (<ElementRef>this.contentViewChild).nativeElement\n );\n const headerHeight = this.headerViewChild\n ? DomHandler.getOuterHeight(\n (<ElementRef>this.headerViewChild).nativeElement\n )\n : 0;\n const headerWidth = this.headerViewChild\n ? DomHandler.getOuterWidth(\n (<ElementRef>this.headerViewChild).nativeElement\n )\n : 0;\n let newWidth = containerWidth + deltaX;\n let newHeight = containerHeight + deltaY;\n const minWidth = (this.container as HTMLDivElement).style.minWidth;\n const minHeight = (this.container as HTMLDivElement).style.minHeight;\n const offset = (this.container as HTMLDivElement).getBoundingClientRect();\n const viewport = DomHandler.getViewport();\n const hasBeenDragged =\n !parseInt((this.container as HTMLDivElement).style.top) ||\n !parseInt((this.container as HTMLDivElement).style.left);\n\n if (hasBeenDragged) {\n newWidth += deltaX;\n newHeight += deltaY;\n }\n\n if (\n (!minWidth || newWidth > parseInt(minWidth)) &&\n offset.left + newWidth < viewport.width\n ) {\n const newContentWidth = contentWidth + newWidth - containerWidth;\n const newHeaderWidth = headerWidth + newWidth - containerWidth;\n this._style.width =\n Math.max(newWidth, newContentWidth, newHeaderWidth) + 'px';\n (this.container as HTMLDivElement).style.width = this._style.width;\n }\n\n if (\n (!minHeight || newHeight > parseInt(minHeight)) &&\n offset.top + newHeight < viewport.height\n ) {\n const newContentHeight = contentHeight + newHeight - containerHeight;\n this._style.height =\n Math.max(newHeight, headerHeight + newContentHeight) + 'px';\n (this.container as HTMLDivElement).style.height = this._style.height;\n }\n\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n }\n }\n\n resizeEnd(event: MouseEvent) {\n if (this.resizing) {\n this.resizing = false;\n DomHandler.removeClass(this.document.body, 'cps-unselectable-text');\n this._resizeEnded.emit(event);\n }\n }\n\n initDrag(event: MouseEvent) {\n function isHeaderActionButton(element: HTMLElement | null): boolean {\n while (\n element &&\n !element.classList.contains('cps-dialog-header-action-button') &&\n !element.classList.contains('cps-dialog-header-info-circle')\n ) {\n element = element.parentElement;\n }\n\n return !!element;\n }\n\n if (!this.draggable || this.maximized) return;\n\n if (isHeaderActionButton(<HTMLElement>event.target)) return;\n\n this.dragging = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n\n (this.container as HTMLDivElement).style.margin = '0';\n DomHandler.addClass(this.document.body, 'cps-unselectable-text');\n this._dragStarted.emit(event);\n }\n\n onDrag(event: MouseEvent) {\n if (this.dragging) {\n const containerWidth = DomHandler.getOuterWidth(this.container);\n const containerHeight = DomHandler.getOuterHeight(this.container);\n const deltaX = event.pageX - (this.lastPageX as number);\n const deltaY = event.pageY - (this.lastPageY as number);\n const offset = (this.container as HTMLDivElement).getBoundingClientRect();\n const leftPos = offset.left + deltaX;\n const topPos = offset.top + deltaY;\n const viewport = DomHandler.getViewport();\n\n (this.container as HTMLDivElement).style.position = 'fixed';\n\n if (this.keepInViewport) {\n if (leftPos >= this.minX && leftPos + containerWidth < viewport.width) {\n this._style.left = leftPos + 'px';\n this.lastPageX = event.pageX;\n (this.container as HTMLDivElement).style.left = leftPos + 'px';\n }\n\n if (topPos >= this.minY && topPos + containerHeight < viewport.height) {\n this._style.top = topPos + 'px';\n this.lastPageY = event.pageY;\n (this.container as HTMLDivElement).style.top = topPos + 'px';\n }\n } else {\n this.lastPageX = event.pageX;\n (this.container as HTMLDivElement).style.left = leftPos + 'px';\n this.lastPageY = event.pageY;\n (this.container as HTMLDivElement).style.top = topPos + 'px';\n }\n }\n }\n\n endDrag(event: MouseEvent) {\n if (this.dragging) {\n this.dragging = false;\n DomHandler.removeClass(this.document.body, 'cps-unselectable-text');\n this._dragEnded.emit(event);\n this._cdRef.detectChanges();\n }\n }\n\n resetPosition() {\n (this.container as HTMLDivElement).style.position = '';\n (this.container as HTMLDivElement).style.left = '';\n (this.container as HTMLDivElement).style.top = '';\n (this.container as HTMLDivElement).style.margin = '';\n }\n\n bindDocumentDragListener() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentDragListener = this.renderer.listen(\n this.document,\n 'mousemove',\n this.onDrag.bind(this)\n );\n });\n }\n }\n\n bindDocumentDragEndListener() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentDragEndListener = this.renderer.listen(\n this.document,\n 'mouseup',\n this.endDrag.bind(this)\n );\n });\n }\n }\n\n unbindDocumentDragEndListener() {\n if (this.documentDragEndListener) {\n this.documentDragEndListener();\n this.documentDragListener = null;\n }\n }\n\n unbindDocumentDragListener() {\n if (this.documentDragListener) {\n this.documentDragListener();\n this.documentDragListener = null;\n }\n }\n\n bindDocumentResizeListeners() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentResizeListener = this.renderer.listen(\n this.document,\n 'mousemove',\n this.onResize.bind(this)\n );\n this.documentResizeEndListener = this.renderer.listen(\n this.document,\n 'mouseup',\n this.resizeEnd.bind(this)\n );\n });\n }\n }\n\n unbindDocumentResizeListeners() {\n if (this.documentResizeListener && this.documentResizeEndListener) {\n this.documentResizeListener();\n this.documentResizeEndListener();\n this.documentResizeListener = null;\n this.documentResizeEndListener = null;\n }\n }\n\n bindGlobalListeners() {\n if (\n this.config.closeOnEscape !== false &&\n this.config.disableClose !== false\n ) {\n this.bindDocumentEscapeListener();\n }\n\n if (this.resizable) {\n this.bindDocumentResizeListeners();\n }\n\n if (this.draggable) {\n this.bindDocumentDragListener();\n this.bindDocumentDragEndListener();\n }\n }\n\n unbindGlobalListeners() {\n this.unbindDocumentEscapeListener();\n this.unbindDocumentResizeListeners();\n this.unbindDocumentDragListener();\n this.unbindDocumentDragEndListener();\n }\n\n bindDocumentEscapeListener() {\n const documentTarget: any = this.maskViewChild\n ? this.maskViewChild.nativeElement.ownerDocument\n : 'document';\n\n this.documentEscapeListener = this.renderer.listen(\n documentTarget,\n 'keydown',\n (event) => {\n if (event.which === 27) {\n if (\n parseInt((this.container as HTMLDivElement).style.zIndex) ===\n ZIndexUtils.getCurrent()\n ) {\n this.hide();\n }\n }\n }\n );\n }\n\n unbindDocumentEscapeListener() {\n if (this.documentEscapeListener) {\n this.documentEscapeListener();\n this.documentEscapeListener = null;\n }\n }\n\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n\n ngOnDestroy() {\n this.onContainerDestroy();\n this.componentRef?.destroy();\n }\n}\n","<div\n #mask\n [ngClass]=\"{\n 'cps-dialog-mask': true,\n 'cps-dialog-overlay': config.modal !== false,\n 'cps-dialog-overlay-enter':\n config.modal !== false && !config.blurredBackground,\n 'cps-dialog-blurred-overlay cps-dialog-blurred-overlay-enter':\n config.modal !== false && config.blurredBackground,\n 'cps-dialog-left': position === 'left',\n 'cps-dialog-right': position === 'right',\n 'cps-dialog-top': position === 'top',\n 'cps-dialog-bottom': position === 'bottom',\n 'cps-dialog-top-left': position === 'topleft' || position === 'top-left',\n 'cps-dialog-top-right': position === 'topright' || position === 'top-right',\n 'cps-dialog-bottom-left':\n position === 'bottomleft' || position === 'bottom-left',\n 'cps-dialog-bottom-right':\n position === 'bottomright' || position === 'bottom-right'\n }\"\n [class]=\"config.maskStyleClass || ''\">\n <div\n #container\n [ngClass]=\"{\n 'cps-dialog': true,\n 'cps-dialog-resizable': resizable,\n 'cps-dialog-draggable': draggable && !maximized,\n 'cps-dialog-dragging': dragging,\n 'cps-dialog-maximized': maximized\n }\"\n [ngStyle]=\"config.style\"\n [class]=\"config.styleClass || ''\"\n [@animation]=\"{\n value: 'visible',\n params: {\n transform: transformOptions,\n transition:\n config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'\n }\n }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\"\n role=\"dialog\"\n *ngIf=\"visible\"\n [style.width]=\"config.width\"\n [style.height]=\"config.height\"\n [style.minWidth]=\"config.minWidth\"\n [style.minHeight]=\"config.minHeight\"\n [style.maxWidth]=\"maximized ? '' : config.maxWidth\"\n [style.maxHeight]=\"maximized ? '' : config.maxHeight\">\n <div\n *ngIf=\"resizable && !maximized\"\n class=\"cps-dialog-resizable-handle\"\n style=\"z-index: 90\"\n (mousedown)=\"initResize($event)\"></div>\n <div\n #header\n *ngIf=\"config.showHeader !== false\"\n class=\"cps-dialog-header\"\n [ngClass]=\"{\n 'cps-dialog-header-left-bordered':\n config.showHeaderLeftBorder !== false,\n 'cps-dialog-header-bottom-bordered':\n config.showHeaderBottomBorder !== false\n }\"\n (mousedown)=\"initDrag($event)\">\n <div class=\"cps-dialog-header-left\">\n <div class=\"cps-dialog-header-icon\">\n <cps-icon\n *ngIf=\"config.headerIcon\"\n [icon]=\"config.headerIcon\"\n [color]=\"config.headerIconColor || 'currentColor'\">\n </cps-icon>\n </div>\n <span class=\"cps-dialog-header-title\">{{ config.headerTitle }}</span>\n <div class=\"cps-dialog-header-info-circle\">\n <cps-info-circle\n *ngIf=\"config.headerInfoTooltip\"\n size=\"small\"\n [tooltipPosition]=\"config.headerInfoTooltipPosition || 'top'\"\n [tooltipText]=\"config.headerInfoTooltip\">\n </cps-info-circle>\n </div>\n </div>\n <div class=\"cps-dialog-header-action-buttons\">\n <cps-button\n *ngIf=\"maximizable\"\n class=\"cps-dialog-header-action-button\"\n [icon]=\"maximized ? 'minimize' : 'maximize'\"\n size=\"small\"\n width=\"32\"\n color=\"graphite\"\n type=\"borderless\"\n (clicked)=\"toggleMaximized()\">\n </cps-button>\n <cps-button\n *ngIf=\"config.showCloseBtn !== false\"\n class=\"cps-dialog-header-action-button\"\n icon=\"close-x-2\"\n size=\"small\"\n width=\"32\"\n color=\"graphite\"\n type=\"borderless\"\n (clicked)=\"hide()\">\n </cps-button>\n </div>\n </div>\n <div\n #content\n class=\"cps-dialog-content\"\n [ngStyle]=\"config.contentStyle\"\n [class]=\"config.contentStyleClass || ''\">\n <ng-template cpsDialogContent></ng-template>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CpsButtonComponent } from '../../../../../components/cps-button/cps-button.component';\nimport { CpsIconComponent } from '../../../../../components/cps-icon/cps-icon.component';\nimport { CpsDialogRef } from '../../../utils/cps-dialog-ref';\nimport { CpsDialogConfig } from '../../../utils/cps-dialog-config';\n\n@Component({\n standalone: true,\n imports: [CpsButtonComponent, CpsIconComponent],\n selector: 'cps-confirmation',\n templateUrl: './cps-confirmation.component.html',\n styleUrls: ['./cps-confirmation.component.scss']\n})\nexport class CpsConfirmationComponent {\n subtitle = '';\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private _dialogRef: CpsDialogRef,\n private _config: CpsDialogConfig\n ) {\n this.subtitle = this._config.data.subtitle;\n }\n\n close(confirm: boolean) {\n this._dialogRef?.close(confirm);\n }\n}\n","<div class=\"cps-confirmation\">\n <span class=\"cps-confirmation-subtitle\">{{ subtitle }}</span>\n <div class=\"cps-confirmation-buttons\">\n <cps-button\n type=\"outlined\"\n label=\"No\"\n (clicked)=\"close(false)\"\n color=\"prepared\">\n </cps-button>\n <cps-button\n data-cy=\"btn-yes\"\n label=\"Yes\"\n (clicked)=\"close(true)\"\n color=\"prepared\">\n </cps-button>\n </div>\n</div>\n","import {\n Injectable,\n Injector,\n Type,\n EmbeddedViewRef,\n ComponentRef,\n Inject,\n ViewContainerRef\n} from '@angular/core';\nimport { DynamicDialogInjector } from 'primeng/dynamicdialog';\nimport { DOCUMENT } from '@angular/common';\nimport { CpsDialogRef } from './utils/cps-dialog-ref';\nimport { CpsDialogConfig } from './utils/cps-dialog-config';\nimport { CpsDialogComponent } from './internal/components/cps-dialog/cps-dialog.component';\nimport { CpsConfirmationComponent } from './internal/components/cps-confirmation/cps-confirmation.component';\n\n/**\n * Service for showing CpsDialog.\n * @group Services\n */\n@Injectable()\nexport class CpsDialogService {\n dialogComponentRefMap: Map<CpsDialogRef, ComponentRef<CpsDialogComponent>> =\n new Map();\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private viewContainerRef: ViewContainerRef,\n private injector: Injector,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n public open(componentType: Type<any>, config: CpsDialogConfig): CpsDialogRef {\n const dialogRef = this.appendDialogComponentToBody(config);\n\n const instance = this.dialogComponentRefMap.get(dialogRef)?.instance;\n if (instance) instance.childComponentType = componentType;\n\n return dialogRef;\n }\n\n public openConfirmationDialog(config: CpsDialogConfig): CpsDialogRef {\n if (!config.headerTitle) config.headerTitle = 'Confirm the action';\n if (!config.headerIcon) config.headerIcon = 'warning';\n if (!config.headerIconColor) config.headerIconColor = 'calm';\n if (!config.minWidth) config.minWidth = '400px';\n if (!config.maxWidth) config.maxWidth = '600px';\n const dialogRef = this.appendDialogComponentToBody(config);\n\n const instance = this.dialogComponentRefMap.get(dialogRef)?.instance;\n if (instance) instance.childComponentType = CpsConfirmationComponent;\n\n return dialogRef;\n }\n\n private appendDialogComponentToBody(config: CpsDialogConfig) {\n const map = new WeakMap();\n map.set(CpsDialogConfig, config);\n\n const dialogRef = new CpsDialogRef();\n map.set(CpsDialogRef, dialogRef);\n\n const sub = dialogRef.onClose.subscribe(() => {\n this.dialogComponentRefMap.get(dialogRef)?.instance.close();\n });\n\n const destroySub = dialogRef.onDestroy.subscribe(() => {\n this.removeDialogComponentFromBody(dialogRef);\n destroySub.unsubscribe();\n sub.unsubscribe();\n });\n\n const componentRef = this.viewContainerRef.createComponent(\n CpsDialogComponent,\n { injector: new DynamicDialogInjector(this.injector, map) }\n );\n\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n this.document.body.appendChild(domElem);\n\n this.dialogComponentRefMap.set(dialogRef, componentRef);\n dialogRef._setContainerInstance(componentRef.instance);\n\n return dialogRef;\n }\n\n private removeDialogComponentFromBody(dialogRef: CpsDialogRef) {\n if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {\n return;\n }\n\n const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);\n if (dialogComponentRef) {\n this.viewContainerRef.detach(\n this.viewContainerRef.indexOf(dialogComponentRef.hostView)\n );\n dialogComponentRef.destroy();\n this.dialogComponentRefMap.delete(dialogRef);\n }\n }\n}\n","/* eslint-disable no-unused-vars */\n\n/**\n * An enumeration of appearances of notifications.\n */\nexport enum CpsNotificationAppearance {\n FILLED = 'filled',\n OUTLINED = 'outlined'\n}\n\n/**\n * An enumeration of positions of notifications.\n */\nexport enum CpsNotificationPosition {\n CENTER = 'center',\n TOP = 'top',\n BOTTOM = 'bottom',\n LEFT = 'left',\n RIGHT = 'right',\n TOPLEFT = 'top-left',\n TOPRIGHT = 'top-right',\n BOTTOMLEFT = 'bottom-left',\n BOTTOMRIGHT = 'bottom-right'\n}\n\nexport interface CpsNotificationConfig {\n /**\n * Position of the notification, options are \"center\", \"top\", \"bottom\", \"left\", \"right\", \"top-left\", \"top-right\", \"bottom-left\" or \"bottom-right\".\n * @default top-right\n */\n position?: CpsNotificationPosition;\n /**\n * Appearance of the notification, options are \"filled\" or \"outlined\".\n * @default filled\n */\n appearance?: CpsNotificationAppearance;\n /**\n * The duration (in milliseconds) that the notification will be displayed before automatically closing.\n * Value 0 means that the notification is persistent and will not be automatically closed.\n * @default 5000\n */\n timeout?: number;\n /**\n * Max amount of notifications that can be simultaneously visualized within a positioned container.\n * @default undefined\n */\n maxAmount?: number;\n /**\n * Max width of the notification of type number denoting pixels or string.\n * @default undefined\n */\n maxWidth?: string;\n}\n","/* eslint-disable no-unused-vars */\n\n/**\n * An enumeration of the different types of notifications that can be displayed.\n */\nexport enum CpsNotificationType {\n SUCCESS = 'success',\n ERROR = 'error',\n WARNING = 'warning',\n INFO = 'info'\n}\n\nexport interface CpsNotificationData {\n /**\n * Message to be displayed in the notification.\n */\n message?: string;\n /**\n * Details to be displayed in the notification.\n */\n details?: string;\n /**\n * Type of the notification, options are \"warning\", \"success\", \"error\" or \"info\".\n */\n type?: CpsNotificationType;\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { CpsButtonComponent } from '../../../../../components/cps-button/cps-button.component';\nimport { CpsIconComponent } from '../../../../../components/cps-icon/cps-icon.component';\nimport { CommonModule } from '@angular/common';\nimport { convertSize } from '../../../../../utils/internal/size-utils';\nimport {\n CpsNotificationAppearance,\n CpsNotificationConfig\n} from '../../../utils/cps-notification-config';\nimport {\n CpsNotificationData,\n CpsNotificationType\n} from '../../../utils/internal/cps-notification-data';\nimport {\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsButtonComponent, CpsIconComponent],\n selector: 'cps-toast',\n templateUrl: './cps-toast.component.html',\n styleUrls: ['./cps-toast.component.scss'],\n animations: [\n trigger('toastState', [\n state(\n 'visible',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('void => *', [\n style({ transform: 'translateY(100%)', opacity: 0 }),\n animate('200ms ease-out')\n ]),\n transition('* => void', [\n animate(\n '200ms ease-in',\n style({\n height: 0,\n opacity: 0,\n transform: 'translateY(-100%)'\n })\n )\n ])\n ])\n ]\n})\nexport class CpsToastComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() config!: CpsNotificationConfig;\n @Input() data!: CpsNotificationData;\n\n /**\n * Callback to invoke on toast close.\n * @param {any}\n * @group Emits\n */\n @Output() closed = new EventEmitter();\n\n timeout: any;\n maxWidth: string | undefined;\n filled = true;\n color = '';\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private zone: NgZone) {}\n\n ngOnInit(): void {\n this.maxWidth = convertSize(this.config?.maxWidth || '');\n this.filled = this.config?.appearance === CpsNotificationAppearance.FILLED;\n this.color =\n this.data?.type === CpsNotificationType.WARNING\n ? 'warn'\n : this.data?.type || CpsNotificationType.ERROR;\n }\n\n ngAfterViewInit(): void {\n this.initiateTimeout();\n }\n\n ngOnDestroy() {\n this.clearTimeout();\n }\n\n close() {\n this.clearTimeout();\n this.closed.emit();\n }\n\n initiateTimeout() {\n if (this.config?.timeout === 0) return;\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => {\n this.close();\n }, this.config?.timeout || 5000);\n });\n }\n\n clearTimeout() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n}\n","<div\n (mouseenter)=\"clearTimeout()\"\n (mouseleave)=\"initiateTimeout()\"\n [class]=\"data.type\"\n [@toastState]=\"{\n value: 'visible'\n }\"\n [ngStyle]=\"{ 'max-width': maxWidth }\"\n class=\"cps-toast-content\">\n <div class=\"cps-toast-icon\" [ngClass]=\"{ filled: filled }\">\n <cps-icon\n [icon]=\"'toast-' + data.type\"\n [color]=\"filled ? '#fff' : color\"\n size=\"normal\"></cps-icon>\n </div>\n <div class=\"cps-toast-message\">\n <p class=\"cps-toast-message-header\">{{ data.message || '' }}</p>\n <p class=\"cps-toast-message-details\" *ngIf=\"data.details\">\n {{ data.details }}\n </p>\n </div>\n <div class=\"cps-toast-buttons\">\n <cps-button\n (clicked)=\"close()\"\n [color]=\"color\"\n icon=\"close-x\"\n class=\"cps-toast-close-button\"\n width=\"40\"\n type=\"borderless\"></cps-button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { PrimeNGConfig, SharedModule } from 'primeng/api';\nimport { ZIndexUtils } from 'primeng/utils';\nimport {\n CpsNotificationConfig,\n CpsNotificationPosition\n} from '../../../utils/cps-notification-config';\nimport { CpsNotificationData } from '../../../utils/internal/cps-notification-data';\nimport { CpsButtonComponent } from '../../../../../components/cps-button/cps-button.component';\nimport { CpsInfoCircleComponent } from '../../../../../components/cps-info-circle/cps-info-circle.component';\nimport { CpsIconComponent } from '../../../../../components/cps-icon/cps-icon.component';\nimport { CpsToastComponent } from '../cps-toast/cps-toast.component';\nimport { animateChild, query, transition, trigger } from '@angular/animations';\n\ntype Nullable<T = void> = T | null | undefined;\n\n@Component({\n selector: 'cps-notification-container',\n standalone: true,\n imports: [\n CommonModule,\n SharedModule,\n CpsButtonComponent,\n CpsInfoCircleComponent,\n CpsIconComponent,\n CpsToastComponent\n ],\n templateUrl: './cps-notification-container.component.html',\n styleUrls: ['./cps-notification-container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('notificationAnimation', [\n transition(':enter, :leave', [query('@*', animateChild())])\n ])\n ]\n})\nexport class CpsNotificationContainerComponent\n implements AfterViewInit, OnDestroy\n{\n /**\n * Position of the notification container.\n * @group Props\n */\n @Input() position = CpsNotificationPosition.TOPRIGHT;\n\n /**\n * Max amount of notifications to be displayed within the container.\n * @group Props\n */\n @Input() maxAmount?: number;\n\n /**\n * Callback to invoke on notification close.\n * @param {CpsNotificationConfig} CpsNotificationConfig - notification closed.\n * @group Emits\n */\n @Output() closed = new EventEmitter();\n\n CpsNotificationPosition = CpsNotificationPosition;\n\n @ViewChild('container') container: Nullable<ElementRef>;\n\n wrapper: Nullable<HTMLElement>;\n\n notifications: {\n data: CpsNotificationData;\n config: CpsNotificationConfig;\n }[] = [];\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n public renderer: Renderer2,\n public zone: NgZone,\n public primeNGConfig: PrimeNGConfig,\n private _cdRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit() {\n this.wrapper = (\n this.container?.nativeElement as HTMLDivElement\n ).parentElement;\n this.moveOnTop();\n }\n\n addNotification(config: CpsNotificationConfig, data: CpsNotificationData) {\n if (\n this.notifications.length > 0 &&\n this.notifications.length === this.maxAmount\n ) {\n this.notifications.pop();\n }\n this.notifications.unshift({ data, config });\n }\n\n onCloseNotification(index: number) {\n this.notifications.splice(index, 1);\n this.closed.emit();\n this._cdRef.detectChanges();\n }\n\n moveOnTop() {\n ZIndexUtils.set(\n 'modal',\n this.container?.nativeElement,\n this.primeNGConfig.zIndex.modal\n );\n (this.wrapper as HTMLElement).style.zIndex = String(\n parseInt(\n (this.container?.nativeElement as HTMLDivElement).style.zIndex,\n 10\n ) - 1\n );\n }\n\n ngOnDestroy() {\n if (this.container?.nativeElement) {\n ZIndexUtils.clear(this.container.nativeElement);\n }\n }\n}\n","<div\n [ngClass]=\"{\n 'cps-notification-container-mask': true,\n 'cps-notification-container-left':\n position === CpsNotificationPosition.LEFT,\n 'cps-notification-container-right':\n position === CpsNotificationPosition.RIGHT,\n 'cps-notification-container-top': position === CpsNotificationPosition.TOP,\n 'cps-notification-container-bottom':\n position === CpsNotificationPosition.BOTTOM,\n 'cps-notification-container-top-left':\n position === CpsNotificationPosition.TOPLEFT,\n 'cps-notification-container-top-right':\n position === CpsNotificationPosition.TOPRIGHT,\n 'cps-notification-container-bottom-left':\n position === CpsNotificationPosition.BOTTOMLEFT,\n 'cps-notification-container-bottom-right':\n position === CpsNotificationPosition.BOTTOMRIGHT\n }\">\n <div #container class=\"cps-notification-container\" role=\"notification\">\n <div\n #content\n class=\"cps-notification-container-content\"\n [ngStyle]=\"{\n 'align-items': [\n CpsNotificationPosition.RIGHT,\n CpsNotificationPosition.TOPRIGHT,\n CpsNotificationPosition.BOTTOMRIGHT\n ].includes(position)\n ? 'flex-end'\n : 'flex-start'\n }\">\n <cps-toast\n *ngFor=\"let notification of notifications; let i = index\"\n [data]=\"notification.data\"\n [config]=\"notification.config\"\n @notificationAnimation\n (closed)=\"onCloseNotification(i)\">\n </cps-toast>\n </div>\n </div>\n</div>\n","import {\n Injectable,\n EmbeddedViewRef,\n ComponentRef,\n Inject,\n ApplicationRef,\n createComponent\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n CpsNotificationAppearance,\n CpsNotificationConfig,\n CpsNotificationPosition\n} from './utils/cps-notification-config';\nimport {\n CpsNotificationData,\n CpsNotificationType\n} from './utils/internal/cps-notification-data';\nimport { CpsNotificationContainerComponent } from './internal/components/cps-notification-container/cps-notification-container.component';\n\n/**\n * Service for showing notifications.\n * @group Services\n */\n@Injectable({ providedIn: 'root' })\nexport class CpsNotificationService {\n private _containersMap: Map<\n CpsNotificationPosition,\n ComponentRef<CpsNotificationContainerComponent>\n > = new Map();\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private _appRef: ApplicationRef,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n public info(\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n this._createNotification(\n CpsNotificationType.INFO,\n message,\n details,\n config\n );\n }\n\n public warning(\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n this._createNotification(\n CpsNotificationType.WARNING,\n message,\n details,\n config\n );\n }\n\n public success(\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n this._createNotification(\n CpsNotificationType.SUCCESS,\n message,\n details,\n config\n );\n }\n\n public error(\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n this._createNotification(\n CpsNotificationType.ERROR,\n message,\n details,\n config\n );\n }\n\n public clear() {\n this._containersMap.forEach((container) => {\n this._appRef.detachView(container.hostView);\n container.destroy();\n });\n this._containersMap.clear();\n }\n\n private _createNotification(\n type: CpsNotificationType,\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n config = this._initConfig(config);\n const data: CpsNotificationData = { type, message, details };\n\n this._appendNotificationToContainer(data, config);\n }\n\n private _initConfig(config?: CpsNotificationConfig): CpsNotificationConfig {\n if (!config) config = {};\n if (!config.appearance)\n config.appearance = CpsNotificationAppearance.FILLED;\n if (!config.position) config.position = CpsNotificationPosition.TOPRIGHT;\n if (config.timeout === undefined || config.timeout === null)\n config.timeout = 5000;\n return config;\n }\n\n private _appendNotificationToContainer(\n data: CpsNotificationData,\n config: CpsNotificationConfig\n ) {\n const position = config.position || CpsNotificationPosition.TOPRIGHT;\n\n let containerComponentRef = this._containersMap.get(position);\n const found = !!containerComponentRef;\n\n if (!containerComponentRef) {\n containerComponentRef = createComponent(\n CpsNotificationContainerComponent,\n { environmentInjector: this._appRef.injector }\n );\n containerComponentRef.setInput('position', position);\n containerComponentRef.setInput('maxAmount', config.maxAmount);\n\n this._appRef.attachView(containerComponentRef.hostView);\n\n const domElem = (containerComponentRef.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n this.document.body.appendChild(domElem);\n\n containerComponentRef.instance.closed.subscribe(() => {\n this._tryRemoveContainer(position);\n });\n\n this._containersMap.set(position, containerComponentRef);\n }\n\n if (found && config.maxAmount)\n containerComponentRef.setInput('maxAmount', config.maxAmount);\n\n containerComponentRef.instance.addNotification(config, data);\n }\n\n private _tryRemoveContainer(position: CpsNotificationPosition) {\n const container = this._containersMap.get(position);\n\n if (!container?.instance || container.instance.notifications.length > 0)\n return;\n\n if (container) {\n this._appRef.detachView(container.hostView);\n container.destroy();\n this._containersMap.delete(position);\n }\n }\n}\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-group/cps-radio/cps-radio.component';\nexport * from './lib/components/cps-radio-group/cps-radio-group.component';\nexport * from './lib/components/cps-table/cps-table.component';\nexport * from './lib/components/cps-table/directives/cps-table-column-sortable.directive';\nexport * from './lib/components/cps-table/directives/cps-table-column-filter.directive';\nexport * from './lib/components/cps-table/directives/cps-table-header-selectable.directive';\nexport * from './lib/components/cps-table/directives/cps-table-row-selectable.directive';\nexport * from './lib/components/cps-table/cps-column-filter-types';\nexport * from './lib/components/cps-tree-table/cps-tree-table.component';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.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-paginator/pipes/cps-paginate.pipe';\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-sidebar-menu/cps-sidebar-menu.component';\nexport * from './lib/components/cps-textarea/cps-textarea.component';\nexport * from './lib/components/cps-button-toggle/cps-button-toggle.component';\nexport * from './lib/components/cps-tab-group/cps-tab-group.component';\nexport * from './lib/components/cps-tab-group/cps-tab/cps-tab.component';\nexport * from './lib/components/cps-timepicker/cps-timepicker.component';\nexport * from './lib/components/cps-file-upload/cps-file-upload.component';\n\nexport * from './lib/directives/cps-tooltip.directive';\n\nexport * from './lib/services/cps-dialog/cps-dialog.service';\nexport * from './lib/services/cps-dialog/utils/cps-dialog-config';\nexport * from './lib/services/cps-dialog/utils/cps-dialog-ref';\n\nexport * from './lib/services/cps-notification/cps-notification.service';\nexport * from './lib/services/cps-notification/utils/cps-notification-config';\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","i4","i2.LabelByValuePipe","i5","i2","i1.CpsDialogRef","i2.CpsDialogConfig"],"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/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/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-select/cps-select.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-select/cps-select.component.html","../../../projects/cps-ui-kit/src/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.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-group/cps-radio-button/cps-radio-button.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio-group.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio-group.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio/cps-radio.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-radio-group/cps-radio/cps-radio.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-table/components/internal/table-row-menu/table-row-menu.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/cps-table-column-sortable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/internal/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-column-filter-types.ts","../../../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-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/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/cps-table-column-filter.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/cps-table-header-selectable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-table/directives/cps-table-row-selectable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/cps-tree-table.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/cps-tree-table.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.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-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-paginator/pipes/cps-paginate.pipe.ts","../../../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-sidebar-menu/cps-sidebar-menu.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-sidebar-menu/cps-sidebar-menu.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-tab-group/cps-tab/cps-tab.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tab-group/cps-tab/cps-tab.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-tab-group/cps-tab-group.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-tab-group/cps-tab-group.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-timepicker/cps-timepicker.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-timepicker/cps-timepicker.component.html","../../../projects/cps-ui-kit/src/lib/components/cps-file-upload/cps-file-upload.component.ts","../../../projects/cps-ui-kit/src/lib/components/cps-file-upload/cps-file-upload.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/utils/cps-dialog-ref.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/utils/cps-dialog-config.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/directives/cps-dialog-content.directive.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.ts","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-dialog/cps-dialog.service.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/utils/cps-notification-config.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/utils/internal/cps-notification-data.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.ts","../../../projects/cps-ui-kit/src/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.html","../../../projects/cps-ui-kit/src/lib/services/cps-notification/cps-notification.service.ts","../../../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\n if (res.startsWith('calc(') && res.endsWith(')')) return res;\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-lock',\n 'access-menu',\n 'access-unlock',\n 'add',\n 'add-domain',\n 'attribute',\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 'columns',\n 'community',\n 'construction',\n 'controls',\n 'csv',\n 'cube',\n 'database',\n 'datafeed',\n 'datepicker',\n 'delete',\n 'dislike',\n 'domain',\n 'dots',\n 'download',\n 'dq',\n 'dropdown-menu',\n 'edit',\n 'expand',\n 'export',\n 'eye',\n 'filter',\n 'filter_2',\n 'filter-funnel',\n 'filter-funnel-filled',\n 'follow',\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 'maximize',\n 'menu-expand',\n 'menu-shrink',\n 'minimize',\n 'minus',\n 'move-grabber',\n 'open',\n 'path',\n 'pdf',\n 'pending',\n 'plus',\n 'projects',\n 'question',\n 'questions',\n 'rectangle-rounded',\n 'refresh',\n 'remove',\n 'right',\n 'schema',\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/**\n * CpsIconComponent is a component that is used for icons.\n * @group Components\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 /**\n * Name of the icon.\n * @group Props\n */\n @Input() icon: IconType = '';\n\n /**\n * Size of the icon, it can be of type number denoting pixels, string or 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() size: iconSizeType = 'small';\n\n /**\n * Color of the icon.\n * @group Props\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]=\"{\n width: cvtSize || 'none',\n height: cvtSize || 'none',\n display: 'flex'\n }\">\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/**\n * CpsProgressLinearComponent is a process status indicator of a rectangular form.\n * @group Components\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 /**\n * Width of the progress bar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Height of the progress bar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() height: number | string = '0.5rem';\n\n /**\n * Color of the progress bar.\n * @group Props\n */\n @Input() color = 'calm';\n\n /**\n * Background color of the progress bar.\n * @group Props\n */\n @Input() bgColor = 'white';\n\n /**\n * Option to control the transparency of the progress bar, of type number or string.\n * @group Props\n */\n @Input() opacity: number | string = 1;\n\n /**\n * Border radius of the progress bar, of type number or string.\n * @group Props\n */\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 CpsTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type CpsTooltipOpenOn = 'hover' | 'click' | 'focus';\n\n/**\n * CpsTooltipDirective provides advisory information for a target element.\n * @group Directives\n */\n@Directive({\n selector: '[cpsTooltip]',\n standalone: true\n})\nexport class CpsTooltipDirective implements OnDestroy {\n /**\n * Tooltip text or html to show.\n * @group Props\n */\n @Input('cpsTooltip') tooltip!: string;\n\n /**\n * Delay to show the tooltip in milliseconds, it can be of type string or number.\n * @group Props\n */\n @Input() tooltipOpenDelay: string | number = 300;\n\n /**\n * Delay to hide the tooltip in milliseconds, it can be of type string or number.\n * @group Props\n */\n @Input() tooltipCloseDelay: string | number = 300;\n\n /**\n * Determines whether the tooltip should open on hover, click or focus.\n * @group Props\n */\n @Input() tooltipOpenOn: CpsTooltipOpenOn = 'hover';\n\n /**\n * Position of the tooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() tooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Determines whether the tooltip is persistent.\n * @group Props\n */\n @Input() tooltipPersistent = false;\n\n /**\n * When present, it specifies that the tooltip should be disabled.\n * @group Props\n */\n @Input() tooltipDisabled = false;\n\n /**\n * Max width of the tooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() tooltipMaxWidth: number | string = '100%';\n\n /**\n * Tooltip content class for styling.\n * @group Props\n */\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 CpsTooltipPosition[];\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 CpsTooltipPosition,\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: CpsTooltipPosition,\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 CpsTooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\n/**\n * CpsInfoCircleComponent is a component that provides information by means of the info icon with the tooltip on hover.\n * @group Components\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 /**\n * Size of the icon, it can be of type number denoting pixels, string or 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() size: iconSizeType = 'small';\n\n /**\n * Tooltip text to provide more info.\n * @group Props\n */\n @Input() tooltipText = '';\n\n /**\n * Position of the tooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() tooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() tooltipContentClass = 'cps-tooltip-content';\n\n /**\n * Max width of the tooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() tooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the tooltip is persistent.\n * @group Props\n */\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 { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\n\nexport type CpsInputAppearanceType = 'outlined' | 'underlined' | 'borderless';\n\n/**\n * CpsInputComponent is used to enter values in a certain formats such as numeric, text or password.\n * @group Components\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 /**\n * Label of the input element.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Bottom hint text for the input field.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Placeholder text for the input field.\n * @group Props\n */\n @Input() placeholder = 'Please enter';\n\n /**\n * Determines whether input is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether input is readonly.\n * @group Props\n */\n @Input() readonly = false;\n\n /**\n * Width of the input field, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Type of the input of type 'text', 'number' or 'password'.\n * @group Props\n */\n @Input() type: 'text' | 'number' | 'password' = 'text';\n\n /**\n * When enabled, a loading bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Icon before input value.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * When enabled, prefixIcon is clickable.\n * @group Props\n */\n @Input() prefixIconClickable = false;\n\n /**\n * Size of icon before input value, of type number or string or it can be a value 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() prefixIconSize: iconSizeType = '18px';\n\n /**\n * Text before input value.\n * @group Props\n */\n @Input() prefixText = '';\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Error message.\n * @group Props\n */\n @Input() error = '';\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Styling appearance of input field, it can be \"outlined\" or \"underlined\" or \"borderless\".\n * @group Props\n */\n @Input() appearance: CpsInputAppearanceType = 'outlined';\n\n /**\n * Readonly value to display inside of input field.\n * @group Props\n */\n @Input() valueToDisplay = '';\n\n /**\n * Value of the input.\n * @group Props\n */\n @Input() set value(value: string) {\n if (!value) value = '';\n this._value = value;\n this.onChange(value);\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Callback to invoke on value change.\n * @param {string} string - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<string>();\n\n /**\n * Callback to invoke when the component receives focus.\n * @param {any}\n * @group Emits\n */\n @Output() focused = new EventEmitter();\n\n /**\n * Callback to invoke when the prefix icon is clicked.\n * @param {any}\n * @group Emits\n */\n @Output() prefixIconClicked = new EventEmitter();\n\n /**\n * Callback to invoke when the component loses focus.\n * @param {any}\n * @group Emits\n */\n @Output() blurred = new EventEmitter();\n\n /**\n * Callback to invoke when x icon is clicked.\n * @param {any}\n * @group Emits\n */\n @Output() cleared = new EventEmitter();\n\n /**\n * Callback to invoke when enter is clicked.\n * @param {any}\n * @group Emits\n */\n @Output() enterClicked = 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 public 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 ('pattern' in errors) {\n this.error = 'Value is invalid';\n return;\n }\n\n if ('email' in errors) {\n this.error = 'Email format is invalid';\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 onInputEnterKeyDown() {\n this.elementRef?.nativeElement?.querySelector('input')?.blur();\n this.enterClicked.emit();\n }\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 onClear() {\n this.clear();\n this.cleared.emit();\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 || this.readonly || this.disabled) 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 && !readonly }\"\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 borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <input\n *ngIf=\"!valueToDisplay\"\n spellcheck=\"false\"\n [type]=\"currentType\"\n [value]=\"value\"\n (input)=\"updateValueEvent($event)\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (keydown.enter)=\"onInputEnterKeyDown()\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\" />\n\n <input\n *ngIf=\"valueToDisplay\"\n [value]=\"valueToDisplay\"\n [disabled]=\"true\"\n [readonly]=\"true\"\n [ngStyle]=\"{\n width: cvtWidth,\n 'padding-left': prefixWidth || 'none'\n }\" />\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.color]=\"disabled ? '#9a9595' : null\"\n [style.cursor]=\"\n prefixIconClickable && !disabled && !readonly\n ? 'pointer'\n : '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 && !readonly\">\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)=\"onClear()\"></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\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-input-error\">\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/**\n * CpsChipComponent represents a chip element.\n * @group Components\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 /**\n * Label of the chip element.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Name of the icon.\n * @group Props\n */\n @Input() icon: IconType = '';\n\n /**\n * Color of the icon.\n * @group Props\n */\n @Input() iconColor = 'text-darkest';\n\n /**\n * Position of the icon, it can be 'before' or 'after'. Defaults to 'before'.\n * @group Props\n */\n @Input() iconPosition: 'before' | 'after' = 'before';\n\n /**\n * Option for closing a chip element.\n * @group Props\n */\n @Input() closable = false;\n\n /**\n * Determines whether chip is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Callback to invoke on chip close.\n * @param {string} string - Chip closed.\n * @group Emits\n */\n @Output() closed = new EventEmitter<string>();\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(this.label);\n }\n}\n","<div [ngClass]=\"classesList\">\n <cps-icon\n *ngIf=\"icon\"\n class=\"cps-chip-icon\"\n [icon]=\"icon\"\n [color]=\"iconColor\"></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 { 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] : '';\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] : '';\n }\n })\n .join(', ');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { 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?.some((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","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 { RouterModule } from '@angular/router';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n PLATFORM_ID,\n Renderer2,\n SimpleChanges,\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 url?: string;\n target?: string;\n disabled?: boolean;\n};\n\nexport type CpsMenuAttachPosition = 'tr' | 'br' | 'tl' | 'bl' | 'default';\n\n/**\n * CpsMenuComponent is a popup element, that contains menu items or arbitrary content.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [CommonModule, SharedModule, CpsIconComponent, RouterModule],\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 transform: 'scaleY(0.8)',\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 AfterViewInit, OnDestroy, OnChanges {\n /**\n * Header title of the menu.\n * @group Props\n */\n @Input() header = '';\n\n /**\n * An array of menu items.\n * @group Props\n */\n @Input() items: CpsMenuItem[] = [];\n\n /**\n * Determines whether to include top pointing arrow on the menu.\n * @group Props\n */\n @Input() withArrow = true;\n\n /**\n * Menu with prepared-colored items, without header and items description.\n * @group Props\n */\n @Input() compressed = false;\n\n /**\n * Determines whether the menu should show on target element focus.\n * @group Props\n */\n @Input() focusOnShow = true;\n\n /**\n * Determines whether the menu should be persistent.\n * @group Props\n */\n @Input() persistent = false;\n\n /**\n * Styling class of the menu container.\n * @group Props\n */\n @Input() containerClass = '';\n\n /**\n * Transition options of the show animation.\n * @group Props\n */\n @Input() showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n /**\n * Transition options of the hide animation.\n * @group Props\n */\n @Input() hideTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n /**\n * Callback to invoke when menu is shown.\n * @group Emits\n */\n @Output() menuShown = new EventEmitter();\n\n /**\n * Callback to invoke when menu is hidden.\n * @group Emits\n */\n @Output() menuHidden = new EventEmitter();\n\n /**\n * Callback to invoke before menu is hidden.\n * @group Emits\n */\n @Output() beforeMenuHidden = new EventEmitter();\n\n /**\n * Callback to invoke when content is clicked.\n * @group Emits\n */\n @Output() contentClicked = new EventEmitter();\n\n withIcons = true;\n autoZIndex = true;\n baseZIndex = 0;\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 position: CpsMenuAttachPosition = 'default';\n\n documentResizeListener!: VoidListener | null;\n overlayEventListener: Nullable<(event?: any) => void>;\n documentClickListener!: VoidListener | null;\n documentKeydownListener!: VoidListener | null;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n destroyCallback: Nullable<Function>;\n overlaySubscription: Subscription | undefined;\n\n resizeObserver: ResizeObserver;\n\n itemsClasses: string[] = [];\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 this.resizeObserver = new ResizeObserver((entries) => {\n if (this.target) {\n entries.forEach((entry) => {\n if (entry) this.align();\n });\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.items || changes.compressed) {\n if (this.compressed) this.withIcons = this.items.some((itm) => itm.icon);\n this._setItemsClasses();\n }\n }\n\n ngAfterViewInit(): void {\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\n }\n\n private _setItemsClasses() {\n if (this.items.length < 1) return;\n\n this.itemsClasses = this.items.map((item, index) => {\n const res = ['cps-menu-item'];\n if (item.disabled) res.push('cps-menu-item-disabled');\n if (index === 0) res.push('cps-menu-item-first');\n if (this.compressed) res.push('cps-menu-item-compressed');\n if (this.compressed && this.withIcons)\n res.push('cps-menu-item-compressed-with-icons');\n\n return res.join(' ');\n });\n }\n\n toggle(event?: any, target?: any, pos?: CpsMenuAttachPosition) {\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, pos);\n };\n }\n\n this.hide();\n } else {\n this.show(event, target, pos);\n }\n }\n\n show(event?: any, target?: any, pos?: CpsMenuAttachPosition) {\n target && event && event.stopPropagation();\n if (this.isOverlayAnimationInProgress) {\n return;\n }\n\n this.target = target || event?.currentTarget || event?.target;\n if (this.target) this.resizeObserver.observe(this.target);\n this.overlayVisible = true;\n this.render = true;\n this.position = pos || 'default';\n this.cd.markForCheck();\n }\n\n hide() {\n this.overlayVisible = false;\n this.cd.markForCheck();\n }\n\n isVisible() {\n return this.overlayVisible;\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 bindDocumentKeydownListener() {\n if (DomHandler.isTouchDevice()) return;\n if (isPlatformBrowser(this.platformId)) {\n if (!this.documentKeydownListener && this.dismissable) {\n this.zone.runOutsideAngular(() => {\n const documentTarget: any = this.el\n ? this.el.nativeElement.ownerDocument\n : this.document;\n\n this.documentKeydownListener = this.renderer.listen(\n documentTarget,\n 'keydown',\n (event) => {\n // escape\n if (event.keyCode === 27) {\n this.zone.run(() => {\n if (this.overlayVisible) this.hide();\n });\n }\n }\n );\n });\n }\n }\n }\n\n unbindDocumentKeydownListener() {\n if (this.documentKeydownListener) {\n this.documentKeydownListener();\n this.documentKeydownListener = null;\n }\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' : 'mousedown';\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.persistent &&\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 setTimeout(() => {\n this.contentClicked.emit();\n }, 100);\n }\n\n hasTargetChanged(event?: any, target?: any) {\n return (\n this.target &&\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 private _setPosition(element: any, target: any) {\n const getPos = () => {\n const targetOffset = DomHandler.getOffset(target);\n switch (this.position) {\n case 'bl':\n return {\n top: Math.max(\n targetOffset.top + target.offsetHeight - element.offsetHeight,\n 0\n ),\n left: Math.max(0, targetOffset.left - element.offsetWidth)\n };\n case 'br':\n return {\n top: Math.max(\n targetOffset.top + target.offsetHeight - element.offsetHeight,\n 0\n ),\n left: Math.min(\n targetOffset.left + target.offsetWidth,\n window.innerWidth - element.offsetWidth\n )\n };\n case 'tl':\n return {\n top: Math.min(\n targetOffset.top,\n window.innerHeight - element.offsetHeight\n ),\n left: Math.max(0, targetOffset.left - element.offsetWidth)\n };\n case 'tr':\n return {\n top: Math.min(\n targetOffset.top,\n window.innerHeight - element.offsetHeight\n ),\n left: Math.min(\n targetOffset.left + target.offsetWidth,\n window.innerWidth - element.offsetWidth\n )\n };\n case 'default':\n default:\n DomHandler.absolutePosition(element, target);\n return undefined;\n }\n };\n\n if (!element || !target) return;\n const pos = getPos();\n if (pos) {\n element.style.top = (pos.top || 0) + 'px';\n element.style.left = (pos.left || 0) + 'px';\n }\n }\n\n align() {\n if (!this.target.isConnected) {\n this.hide();\n this._destroy();\n return;\n }\n\n if (this.autoZIndex) {\n ZIndexUtils.set(\n 'overlay',\n this.container,\n this.baseZIndex + this.config.zIndex.overlay\n );\n }\n\n this._setPosition(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 const containerWidth = this.container?.offsetWidth || 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 targetWidth = this.target?.offsetWidth || 0;\n arrowLeft = Math.min(targetWidth / 2, containerWidth / 2);\n }\n arrowLeft = Math.min(Math.max(arrowLeft, 12), containerWidth - 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 === 'close') {\n this.beforeMenuHidden.emit(null);\n } else if (event.toState === 'open') {\n this.container = event.element;\n if (this.container) this.resizeObserver.observe(this.container);\n this.appendContainer();\n this.align();\n this.bindDocumentClickListener();\n this.bindDocumentKeydownListener();\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.unbindDocumentKeydownListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n }\n\n private _destroy() {\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 this.overlaySubscription?.unsubscribe();\n\n this.resizeObserver?.disconnect();\n }\n\n ngOnDestroy() {\n this._destroy();\n }\n}\n","<div\n *ngIf=\"render\"\n class=\"cps-menu-container\"\n [ngClass]=\"{ 'cps-menu-no-arrow': !withArrow }\"\n [class]=\"containerClass\"\n (mousedown)=\"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 (mousedown)=\"onContentClick()\" (touchstart)=\"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\n <ng-container *ngFor=\"let item of items; let i = index\">\n <a\n *ngIf=\"!item.url\"\n (click)=\"onItemClick($event, item)\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [routerLink]=\"item.url\"\n [target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n <a\n *ngIf=\"item.url && !item.url.startsWith('/')\"\n (click)=\"onItemClick($event, item)\"\n [href]=\"item.url\"\n [attr.target]=\"item.target\"\n [ngClass]=\"itemsClasses[i]\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </a>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #itemTemplate let-item=\"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 *ngIf=\"item.desc && !compressed\" class=\"cps-menu-item-content-desc\">{{\n item.desc\n }}</span>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\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 { 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 { isEqual } from 'lodash-es';\nimport {\n VirtualScroller,\n VirtualScrollerModule\n} from 'primeng/virtualscroller';\nimport { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\n\nexport type CpsSelectAppearanceType = 'outlined' | 'underlined' | 'borderless';\n\n/**\n * CpsSelectComponent is used to select items from a collection.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n LabelByValuePipe,\n CombineLabelsPipe,\n CheckOptionSelectedPipe,\n VirtualScrollerModule,\n CpsMenuComponent\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, AfterViewInit, OnDestroy\n{\n /**\n * The label of the select component.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Placeholder text for the select component.\n * @group Props\n */\n @Input() placeholder = 'Please select';\n\n /**\n * Bottom hint text for the select component.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Returns the object directly rather than the value specified with optionValue.\n * @group Props\n */\n @Input() returnObject = true;\n\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n @Input() multiple = false;\n\n /**\n * Specifies whether the component is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the select component, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Option for selecting all elements. Doesn't work with virtual scroll.\n * @group Props\n */\n @Input() selectAll = true;\n\n /**\n * When selecting elements, they will appear in a form of a chip.\n * @group Props\n */\n @Input() chips = true;\n\n /**\n * Determines whether the chips can be directly removed.\n * @group Props\n */\n @Input() closableChips = true;\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Determines whether the dropdown list should open on clear.\n * @group Props\n */\n @Input() openOnClear = true;\n\n /**\n * An array of options.\n * @group Props\n */\n @Input() options = [] as any[];\n\n /**\n * If multiple, determines whether selected options should be ordered according to the initial order of the options.\n * @group Props\n */\n @Input() keepInitialOrder = false;\n\n /**\n * Name of the label field of an option.\n * @group Props\n */\n @Input() optionLabel = 'label';\n\n /**\n * Name of the value field of an option. Needed only if returnObject prop is false.\n * @group Props\n */\n @Input() optionValue = 'value';\n\n /**\n * Name of the info field of an option, shows the additional information text.\n * @group Props\n */\n @Input() optionInfo = 'info';\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Icon before input value.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * Size of icon before input value, of type number or string or value 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() prefixIconSize: iconSizeType = '18px';\n\n /**\n * When enabled, a loading bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Class for additional styling of the dropdown list.\n * @group Props\n */\n @Input() optionsClass = '';\n\n /**\n * Styling appearance of select input, it can be 'outlined', 'underlined' or 'borderless'.\n * @group Props\n */\n @Input() appearance: CpsSelectAppearanceType = 'outlined';\n\n /**\n * Value of the select component.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {any} any - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<any>();\n\n @ViewChild('selectBox')\n selectBox!: ElementRef;\n\n @ViewChild('selectContainer')\n selectContainer!: ElementRef;\n\n @ViewChild('virtualList')\n virtualList!: VirtualScroller;\n\n @ViewChild('optionsMenu')\n optionsMenu!: CpsMenuComponent;\n\n @ViewChild('optionsList')\n optionsList!: ElementRef;\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n error = '';\n cvtWidth = '';\n isOpened = false;\n optionHighlightedIndex = -1;\n\n virtualListHeight = 240;\n virtualScrollItemSize = 42;\n\n selectBoxWidth = 0;\n resizeObserver: ResizeObserver;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n this.resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (entry?.target)\n this.selectBoxWidth = (entry.target as any).offsetWidth;\n });\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 ngAfterViewInit(): void {\n this.resizeObserver.observe(this.selectBox.nativeElement);\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n this.resizeObserver?.disconnect();\n }\n\n private _toggleOptions(show?: boolean): void {\n if (this.disabled || this.isOpened === show) return;\n\n if (typeof show === 'boolean') {\n if (show) {\n this.optionsMenu.show({\n target: this.selectBox.nativeElement\n });\n } else {\n this.optionsMenu.hide();\n }\n } else {\n this.optionsMenu.toggle({\n target: this.selectBox.nativeElement\n });\n }\n\n this.isOpened = this.optionsMenu.isVisible();\n\n setTimeout(() => {\n if (this.isOpened && this.options.length > 0) {\n const selected =\n this.optionsList.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.isEmptyValue()) {\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\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?.some((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 if (this.keepInitialOrder) {\n this.options.forEach((o) => {\n const ov = this.returnObject ? o : o[this.optionValue];\n if (\n this.value.some((v: any) => isEqual(v, ov)) ||\n isEqual(val, ov)\n ) {\n res.push(ov);\n }\n });\n } else {\n const opt = this.options.find((o) => {\n return isEqual(val, this.returnObject ? o : o[this.optionValue]);\n });\n if (opt) {\n res = [\n ...this.value,\n this.returnObject ? opt : opt[this.optionValue]\n ];\n }\n }\n }\n this.updateValue(res);\n } else {\n this.updateValue(val);\n }\n }\n\n onOptionClick(option: any) {\n this._clickOption(option);\n }\n\n private _clickOption(option: any) {\n this.select(option, false);\n if (!this.multiple) {\n this._toggleOptions(false);\n }\n }\n\n private _getHTMLOptions() {\n return (this.optionsList.nativeElement.querySelectorAll(\n '.cps-select-options-option'\n ) || []) as any;\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 onBeforeOptionsHidden() {\n this._toggleOptions(false);\n this._dehighlightOption();\n }\n\n onBoxClick() {\n this._toggleOptions();\n this._dehighlightOption();\n }\n\n onKeyDown(event: any) {\n event.preventDefault();\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._toggleOptions(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]);\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(event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && !this.isEmptyValue()) ||\n (this.multiple && this.value?.length > 0)\n ) {\n if (this.openOnClear) {\n this._toggleOptions(true);\n }\n const val = this.multiple ? [] : 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(true);\n }\n\n isEmptyValue(): boolean {\n return (\n this.value === null ||\n this.value === undefined ||\n (typeof this.value === 'string' && this.value.trim() === '') ||\n Number.isNaN(this.value)\n );\n }\n}\n","<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-select\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error, active: isOpened }\"\n #selectContainer\n (keydown)=\"onKeyDown($event)\"\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 borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-select-box\" #selectBox (click)=\"onBoxClick()\">\n <div class=\"cps-select-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-select-box-placeholder\"\n *ngIf=\"\n (!multiple && isEmptyValue()) || (value?.length < 1 && multiple)\n \">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-select-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (value?.length > 0 && multiple)\n \">\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 && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-select-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span class=\"cps-select-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n [containerClass]=\"'cps-select-options-menu ' + optionsClass\">\n <div\n #optionsList\n class=\"cps-select-options\"\n [ngStyle]=\"{\n width: selectBoxWidth + 'px'\n }\">\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 && options.length > 1\"\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: numToleratedItems }\"\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-menu>\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)\"\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 ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { TreeNode } from 'primeng/api';\nimport { Subscription } from 'rxjs';\nimport { Tree } from 'primeng/tree';\nimport { isEqual } from 'lodash-es';\nimport { IconType, iconSizeType } from '../../cps-icon/cps-icon.component';\nimport { convertSize } from '../../../utils/internal/size-utils';\nimport { CpsTooltipPosition } from '../../../directives/cps-tooltip.directive';\nimport { CpsMenuComponent } from '../../cps-menu/cps-menu.component';\n\n/**\n * BaseTreeDropdownComponent is an internal base component to support hierarchical data dropdown.\n * @group Components\n */\n@Component({\n template: ''\n})\nexport class CpsBaseTreeDropdownComponent\n implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy\n{\n /**\n * Label of the component.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Bottom hint text.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n @Input() multiple = false;\n\n /**\n * Determines whether the component is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the component, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * When selecting an element, it will appear in a form of a chip.\n * @group Props\n */\n @Input() chips = true;\n\n /**\n * Determines whether the chips can be directly removed.\n * @group Props\n */\n @Input() closableChips = true;\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Determines whether the dropdown should open on clear.\n * @group Props\n */\n @Input() openOnClear = true;\n\n /**\n * Name of the label field of an option.\n * @group Props\n */\n @Input() optionLabel = 'label';\n\n /**\n * Name of the info field of an option, shows the additional information text.\n * @group Props\n */\n @Input() optionInfo = 'info';\n\n /**\n * Options for hiding details.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Icon before input value.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * Size of icon before input value, of type number, string, 'fill', 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() prefixIconSize: iconSizeType = '18px';\n\n /**\n * When enabled, a loading bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * When set, it expands all directiories initially.\n * @group Props\n */\n @Input() initialExpandDirectories = false;\n\n /**\n * When set, it expands all options initially.\n * @group Props\n */\n @Input() initialExpandAll = false;\n\n /**\n * An array of objects to display as the available options.\n * @group Props\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 /**\n * Value of the component.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {any} any - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<any>();\n\n @ViewChild('componentContainer')\n componentContainer!: ElementRef;\n\n @ViewChild('optionsMenu')\n optionsMenu!: CpsMenuComponent;\n\n @ViewChild('treeList') treeList!: Tree;\n\n @ViewChild('boxEl')\n boxEl!: ElementRef;\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n _options: TreeNode[] = [];\n optionsMap = new Map<string, TreeNode>();\n originalOptionsMap = new Map<string, any>();\n\n virtualListHeight = 240;\n virtualScrollItemSize = 40;\n\n error = '';\n cvtWidth = '';\n isOpened = false;\n optionFocused = false;\n isAutocomplete = false;\n\n treeContainerElement!: HTMLElement;\n treeSelection: any;\n\n boxWidth = 0;\n resizeObserver: ResizeObserver;\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 this.resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (entry?.target) this.boxWidth = (entry.target as any).offsetWidth;\n });\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.resizeObserver.observe(this.boxEl.nativeElement);\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n\n this.treeContainerElement?.removeEventListener(\n 'click',\n this._handleOnContainerClick.bind(this)\n );\n\n this.resizeObserver?.disconnect();\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 elem = event.target.classList.contains('p-treenode-content')\n ? event.target\n : getParentWithClass(event.target, 'p-treenode-content');\n\n if (\n elem?.parentElement?.classList?.contains('cps-tree-node-fully-expandable')\n ) {\n this.onClickFullyExpandable(elem);\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, internal = false) {\n this.value = value;\n if (!internal && value !== null) {\n this.treeSelection = this._valueToTreeSelection(this.value);\n }\n }\n\n updateValue(value: any): void {\n this.writeValue(value, true);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n onSelectNode() {\n if (!this.multiple) {\n this.toggleOptions(false);\n }\n }\n\n onClickFullyExpandable(elem: HTMLElement) {\n const parent = elem.parentElement;\n const key = this._getHTMLElementKey(parent);\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._nodeToggled(elem);\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(show?: boolean): void {\n if (this.disabled || this.isOpened === show) return;\n\n if (typeof show === 'boolean') {\n if (show) {\n this.optionsMenu.show({\n target: this.boxEl.nativeElement\n });\n } else {\n this.optionsMenu.hide();\n }\n } else {\n this.optionsMenu.toggle({\n target: this.boxEl.nativeElement\n });\n }\n\n this.isOpened = this.optionsMenu.isVisible();\n\n this.optionFocused = false;\n if (this.isOpened && this.treeSelection) {\n this._expandToNodes(\n this.multiple ? this.treeSelection : [this.treeSelection]\n );\n this.updateOptions();\n setTimeout(() => {\n this.recalcVirtualListHeight();\n const selected = this.treeContainerElement.querySelector(\n '.p-highlight'\n ) as any;\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 private _nodeToggled(elem: HTMLElement) {\n this.recalcVirtualListHeight();\n setTimeout(() => {\n this.optionsMenu.align();\n });\n elem?.focus();\n }\n\n private _nodeToggledWithChevron(elem: HTMLElement) {\n this._nodeToggled(elem);\n // fix primeng tree event stop propagation\n this.optionsMenu.selfClick = false;\n }\n\n onNodeExpand(event: any) {\n this._nodeToggledWithChevron(\n event?.originalEvent?.currentTarget?.parentElement\n );\n }\n\n onNodeCollapse(event: any) {\n this._nodeToggledWithChevron(\n event?.originalEvent?.currentTarget?.parentElement\n );\n }\n\n clear(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(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\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.componentContainer?.nativeElement?.focus();\n this.toggleOptions(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 const 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\n if (this.initialExpandAll) {\n inner.expanded = true;\n }\n\n if (o.isDirectory) {\n inner.type = 'directory';\n inner.selectable = false;\n inner.styleClass += ' cps-tree-node-fully-expandable';\n if (this.initialExpandDirectories) {\n inner.expanded = true;\n }\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 Input,\n OnDestroy,\n OnInit,\n Optional\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 { CombineLabelsPipe } from '../../pipes/internal/combine-labels.pipe';\nimport { TreeModule } from 'primeng/tree';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\nimport { CpsBaseTreeDropdownComponent } from '../internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component';\n\nexport type CpsTreeSelectAppearanceType =\n | 'outlined'\n | 'underlined'\n | 'borderless';\n\n/**\n * CpsTreeSelectComponent allows to select items from hierarchical data dropdown.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TreeModule,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n CombineLabelsPipe,\n CpsMenuComponent\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 CpsBaseTreeDropdownComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n /**\n * Styling appearance of tree select, it can be \"outlined\", \"underlined\" or \"borderless\".\n * @group Props\n */\n @Input() appearance: CpsTreeSelectAppearanceType = 'outlined';\n\n /**\n * Placeholder text.\n * @group Props\n */\n @Input() placeholder = 'Please select';\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 super.ngAfterViewInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n onBeforeOptionsHidden() {\n this.toggleOptions(false);\n }\n\n onBoxClick() {\n this.toggleOptions();\n }\n\n onKeyDown(event: any) {\n event.preventDefault();\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this.toggleOptions(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, active: isOpened }\"\n #componentContainer\n (keydown)=\"onKeyDown($event)\"\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 borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-treeselect-box\" #boxEl (click)=\"onBoxClick()\">\n <div class=\"cps-treeselect-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\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($event)\"></cps-icon>\n </span>\n <span class=\"cps-treeselect-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-treeselect-options-menu\">\n <div\n class=\"cps-treeselect-options\"\n [ngStyle]=\"{\n width: boxWidth + 'px'\n }\">\n <p-tree\n #treeList\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"onNodeExpand($event)\"\n (onNodeCollapse)=\"onNodeCollapse($event)\"\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-menu>\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 AfterViewInit,\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 { LabelByValuePipe } from '../../pipes/internal/label-by-value.pipe';\nimport { CheckOptionSelectedPipe } from '../../pipes/internal/check-option-selected.pipe';\nimport { isEqual } from 'lodash-es';\nimport {\n VirtualScroller,\n VirtualScrollerModule\n} from 'primeng/virtualscroller';\nimport { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\n\nexport type CpsAutocompleteAppearanceType =\n | 'outlined'\n | 'underlined'\n | 'borderless';\n\n/**\n * CpsAutocompleteComponent is an input component that provides real-time suggestions when being typed.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n LabelByValuePipe,\n CheckOptionSelectedPipe,\n VirtualScrollerModule,\n CpsMenuComponent\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, AfterViewInit, OnDestroy\n{\n /**\n * Label of the input element.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Placeholder text.\n * @group Props\n */\n @Input() placeholder = 'Please enter';\n\n /**\n * Bottom hint text.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Returns the object directly rather than the value specified with optionValue.\n * @group Props\n */\n @Input() returnObject = true;\n\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n @Input() multiple = false;\n\n /**\n * Determines whether autocomplete is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the input field, a number denoting pixels or a string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Option for selecting all elements. Doesn't work with virtual scroll.\n * @group Props\n */\n @Input() selectAll = true;\n\n /**\n * Determines whether the chevron icon should be displayed.\n * @group Props\n */\n @Input() showChevron = true;\n\n /**\n * Determines whether the options should be filtered by aliases in addition to labels.\n * @group Props\n */\n @Input() withOptionsAliases = false;\n\n /**\n * Determines whether the options should be filtered by aliases in addition to labels only when no label match is found. Works only If withOptionsAliases is true.\n * @group Props\n */\n @Input() useOptionsAliasesWhenNoMatch = false;\n\n /**\n * Name of the alias field of an option. Needed only if withOptionsAliases is true.\n * @group Props\n */\n @Input() optionAlias = 'alias';\n\n /**\n * When selecting elements, they will appear in a form of a chip.\n * @group Props\n */\n @Input() chips = true;\n\n /**\n * Determines whether the chips can be directly removed.\n * @group Props\n */\n @Input() closableChips = true;\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Determines whether the dropdown list should open on clear.\n * @group Props\n */\n @Input() openOnClear = true;\n\n /**\n * An array of options.\n * @group Props\n */\n @Input() options = [] as any[];\n\n /**\n * If multiple, determines whether selected options should be ordered according to the initial order of the options.\n * @group Props\n */\n @Input() keepInitialOrder = false;\n\n /**\n * Name of the label field of an option.\n * @group Props\n */\n @Input() optionLabel = 'label';\n\n /**\n * Name of the value field of an option. Needed only if returnObject prop is false.\n * @group Props\n */\n @Input() optionValue = 'value';\n\n /**\n * Name of the info field of an option, shows the additional information text.\n * @group Props\n */\n @Input() optionInfo = 'info';\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Icon before input value.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * Size of icon before input value, of type number or string or 'fill' or 'xsmall' or 'small' or 'normal' or 'large'.\n * @group Props\n */\n @Input() prefixIconSize: iconSizeType = '18px';\n\n /**\n * When enabled, a loading bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Text to display when there is no data. Defaults to 'No results found'.\n * @group Props\n */\n @Input() emptyMessage = 'No results found';\n\n /**\n * Determines whether the empty message should be displayed.\n * @group Props\n */\n @Input() showEmptyMessage = true;\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * Externally set error message.\n * @group Props\n */\n @Input() externalError = '';\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Styling appearance of autocomplete input, it could be 'outlined', 'underlined' or 'borderless'.\n * @group Props\n */\n @Input() appearance: CpsAutocompleteAppearanceType = 'outlined';\n\n /**\n * Value of the autocomplete.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {any} any - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<any>();\n\n /**\n * Callback to invoke when the component loses focus.\n * @param {any}\n * @group Emits\n */\n @Output() blurred = new EventEmitter();\n\n @ViewChild('autocompleteBox')\n autocompleteBox!: ElementRef;\n\n @ViewChild('autocompleteContainer')\n autocompleteContainer!: ElementRef;\n\n @ViewChild('virtualList')\n virtualList!: VirtualScroller;\n\n @ViewChild('optionsMenu')\n optionsMenu!: CpsMenuComponent;\n\n @ViewChild('optionsList')\n optionsList!: ElementRef;\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 autocompleteBoxWidth = 0;\n resizeObserver: ResizeObserver;\n\n isTimePickerField = false;\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 this.resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (entry?.target)\n this.autocompleteBoxWidth = (entry.target as any).offsetWidth;\n });\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 ngAfterViewInit(): void {\n this.resizeObserver.observe(this.autocompleteBox.nativeElement);\n }\n\n ngOnDestroy() {\n this._statusChangesSubscription?.unsubscribe();\n this.resizeObserver?.disconnect();\n }\n\n select(\n option: any,\n byValue: boolean,\n needClearInput = true,\n needFocusInput = true\n ): void {\n function includes(array: any[], val: any): boolean {\n return array?.some((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 if (this.keepInitialOrder) {\n this.options.forEach((o) => {\n const ov = this.returnObject ? o : o[this.optionValue];\n if (\n this.value.some((v: any) => isEqual(v, ov)) ||\n isEqual(val, ov)\n ) {\n res.push(ov);\n }\n });\n } else {\n const opt = this.options.find((o) => {\n return isEqual(val, this.returnObject ? o : o[this.optionValue]);\n });\n if (opt) {\n res = [\n ...this.value,\n this.returnObject ? opt : opt[this.optionValue]\n ];\n }\n }\n }\n this.updateValue(res);\n } else {\n this.updateValue(val);\n }\n\n if (needClearInput) {\n this._clearInput();\n }\n if (needFocusInput) {\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n }\n\n onOptionClick(option: any) {\n this._clickOption(option);\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(true);\n }\n this._dehighlightOption();\n this.backspaceClickedOnce = false;\n const searchVal = (event?.target?.value || '').toLowerCase();\n\n let _filteredOptions = this.options.filter((o: any) => {\n let res = o[this.optionLabel].toLowerCase().includes(searchVal);\n if (\n !res &&\n this.withOptionsAliases &&\n !this.useOptionsAliasesWhenNoMatch\n ) {\n res = o[this.optionAlias]?.toLowerCase()?.includes(searchVal) || false;\n }\n return res;\n });\n\n if (\n _filteredOptions.length === 0 &&\n this.withOptionsAliases &&\n this.useOptionsAliasesWhenNoMatch\n ) {\n _filteredOptions = this.options.filter(\n (o: any) =>\n o[this.optionAlias]?.toLowerCase()?.includes(searchVal) || false\n );\n }\n\n this.filteredOptions = _filteredOptions;\n\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n writeValue(value: any) {\n this.value = value;\n }\n\n clear(event: any): void {\n event.stopPropagation();\n\n if (\n (!this.multiple && !this.isEmptyValue()) ||\n (this.multiple && this.value?.length > 0)\n ) {\n if (this.openOnClear) {\n this._toggleOptions(true);\n }\n const val = this.multiple ? [] : 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 this.blurred.emit();\n }\n\n onBeforeOptionsHidden() {\n this._confirmInput(this.inputText || '', false);\n this._closeAndClear();\n this.onBlur();\n }\n\n onBoxClick() {\n if (!this.multiple) {\n this.activeSingle = true;\n if (!this.inputText) this.inputText = this._getValueLabel();\n if (!this.isOpened) this.filteredOptions = this.options;\n }\n this._dehighlightOption();\n setTimeout(() => {\n this.focus();\n });\n }\n\n onContainerKeyDown(event: any) {\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._closeAndClear();\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);\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 || '', true);\n event.stopPropagation();\n }\n } else if ([38, 40].includes(code)) {\n event.preventDefault();\n }\n }\n\n onChevronClick(event: any) {\n event.stopPropagation();\n\n if (this.isOpened) {\n this._closeAndClear();\n } else {\n this.onBoxClick();\n }\n }\n\n focusInput() {\n this.autocompleteContainer?.nativeElement?.querySelector('input')?.focus();\n }\n\n focus() {\n this.focusInput();\n this._toggleOptions(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(show?: boolean): void {\n if (this.disabled || this.isOpened === show) return;\n\n this.backspaceClickedOnce = false;\n if (typeof show === 'boolean') {\n if (show) {\n this.optionsMenu.show({\n target: this.autocompleteBox.nativeElement\n });\n } else {\n this.optionsMenu.hide();\n }\n } else {\n this.optionsMenu.toggle({\n target: this.autocompleteBox.nativeElement\n });\n }\n\n this.isOpened = this.optionsMenu.isVisible();\n\n setTimeout(() => {\n if (this.isOpened && this.filteredOptions.length > 0) {\n this.recalcVirtualListHeight();\n\n const selected =\n this.optionsList.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.isEmptyValue()) {\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) {\n this.select(option, false);\n if (!this.multiple) {\n this._toggleOptions(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\n this.error = message || 'Unknown error';\n }\n\n private updateValue(value: any): void {\n if (!this.multiple && isEqual(value, this.value)) return;\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n private _getValueLabel() {\n return !this.isEmptyValue()\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() {\n this._clearInput();\n this._toggleOptions(false);\n this._dehighlightOption();\n }\n\n private _getHTMLOptions() {\n return (this.optionsList.nativeElement.querySelectorAll(\n '.cps-autocomplete-options-option'\n ) || []) as any;\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, needFocusInput: boolean) {\n if (!this.isOpened) return;\n\n searchVal = searchVal.toLowerCase();\n if (!searchVal) {\n if (this.multiple) return;\n this.updateValue(undefined);\n this._closeAndClear();\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, true, needFocusInput);\n this._toggleOptions(this.multiple);\n } else {\n if (!this.multiple) {\n if (this.isTimePickerField && this.filteredOptions.length > 0) {\n this.select(this.filteredOptions[0], false, false, needFocusInput);\n this._toggleOptions(false);\n }\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 isEmptyValue(): boolean {\n return (\n this.value === null ||\n this.value === undefined ||\n (typeof this.value === 'string' && this.value.trim() === '') ||\n Number.isNaN(this.value)\n );\n }\n}\n","<div\n data-cy-id=\"cps-autocomplete\"\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-autocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{\n disabled: disabled,\n error: error || externalError,\n active: isOpened\n }\"\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)\"\n class=\"cps-autocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div\n class=\"cps-autocomplete-box\"\n #autocompleteBox\n (mousedown)=\"onBoxClick()\">\n <div class=\"cps-autocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-autocomplete-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (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\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'multi-item-input'\n }\n \"></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\n *ngTemplateOutlet=\"\n autocompleteInput;\n context: {\n inputClass: 'multi-chip-input'\n }\n \"></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 && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-autocomplete-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span\n *ngIf=\"showChevron\"\n class=\"cps-autocomplete-box-chevron\"\n (mousedown)=\"onChevronClick($event)\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-autocomplete-options-menu\">\n <div\n #optionsList\n class=\"cps-autocomplete-options\"\n [ngStyle]=\"{\n width: autocompleteBoxWidth + 'px'\n }\">\n <div\n *ngIf=\"showEmptyMessage && 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 &&\n selectAll &&\n filteredOptions.length === options.length &&\n options.length > 1\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: numToleratedItems }\"\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-menu>\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\n *ngIf=\"!error && !externalError && !hideDetails\"\n class=\"cps-autocomplete-hint\">\n {{ hint }}\n </div>\n <div\n *ngIf=\"(error || externalError) && !hideDetails\"\n 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 (!multiple && isEmptyValue()) || (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)\"\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 Input,\n OnDestroy,\n OnInit,\n Optional\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 { isEqual } from 'lodash-es';\nimport { TreeModule } from 'primeng/tree';\nimport { TreeNode } from 'primeng/api';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\nimport { CpsBaseTreeDropdownComponent } from '../internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component';\n\nexport type CpsTreeAutocompleteAppearanceType =\n | 'outlined'\n | 'underlined'\n | 'borderless';\n\n/**\n * CpsTreeAutocompleteComponent allows to choose items from hierarchical data dropdown and provides real-time suggestions when being typed.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n TreeModule,\n CpsIconComponent,\n CpsChipComponent,\n CpsProgressLinearComponent,\n CpsInfoCircleComponent,\n CpsMenuComponent\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 CpsBaseTreeDropdownComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n /**\n * Message if array of items is empty.\n * @group Props\n */\n @Input() emptyMessage = 'No results found';\n\n /**\n * Styling appearance of tree autocomplete, it can be 'outlined', 'underlined' or 'borderless'.\n * @group Props\n */\n @Input() appearance: CpsTreeAutocompleteAppearanceType = 'outlined';\n\n /**\n * Placeholder text.\n * @group Props\n */\n @Input() placeholder = 'Please enter';\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.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 onBeforeOptionsHidden() {\n this._closeAndClear();\n }\n\n onBoxClick() {\n if (!this.multiple) {\n this.activeSingle = true;\n if (!this.inputText) this.inputText = this._getValueLabel();\n if (!this.isOpened) this.treeList.resetFilter();\n }\n this.focus();\n this.optionFocused = false;\n }\n\n onContainerKeyDown(event: any) {\n const code = event.keyCode;\n // escape\n if (code === 27) {\n this._closeAndClear();\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 onChevronClick(event: any) {\n event.stopPropagation();\n\n if (this.isOpened) {\n this._closeAndClear();\n } else {\n this.onBoxClick();\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?.some((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(event: any): void {\n super.clear(event);\n\n this._clearInput();\n setTimeout(() => {\n this.focusInput();\n }, 0);\n }\n\n focusInput() {\n this.componentContainer?.nativeElement?.querySelector('input')?.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(true);\n }\n this.backspaceClickedOnce = false;\n const searchVal = (event?.target?.value || '').toLowerCase();\n\n if (!searchVal) this.treeList.resetFilter();\n else this.treeList._filter(searchVal);\n }\n\n private _getValueLabel() {\n return this.treeSelection?.label || '';\n }\n\n private _clearInput() {\n this.treeList.resetFilter();\n this.inputText = '';\n this.activeSingle = false;\n this.updateOptions();\n setTimeout(() => {\n this.recalcVirtualListHeight();\n });\n }\n\n private _closeAndClear() {\n this._clearInput();\n this.toggleOptions(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();\n return;\n }\n\n const found = this.treeList?.serializedValue?.find(\n (sv: any) => sv?.node?.label?.toLowerCase() === searchVal\n );\n if (found) {\n this._select(found.node);\n this.toggleOptions(this.multiple);\n } else {\n if (!this.multiple) {\n this.inputText = this._getValueLabel();\n this.treeList.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 [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-treeautocomplete\"\n tabindex=\"1\"\n [ngClass]=\"{ disabled: disabled, error: error, active: isOpened }\"\n #componentContainer>\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)\"\n class=\"cps-treeautocomplete-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-treeautocomplete-box\" #boxEl (mousedown)=\"onBoxClick()\">\n <div class=\"cps-treeautocomplete-box-area\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\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=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'multi-item-input'\n }\n \"></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=\"\n treeAutocompleteInput;\n context: {\n inputClass: 'multi-chip-input'\n }\n \"></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($event)\"></cps-icon>\n </span>\n <span\n class=\"cps-treeautocomplete-box-chevron\"\n (mousedown)=\"onChevronClick($event)\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-treeautocomplete-options-menu\">\n <div\n class=\"cps-treeautocomplete-options\"\n [ngStyle]=\"{\n width: boxWidth + 'px'\n }\">\n <p-tree\n #treeList\n [emptyMessage]=\"emptyMessage\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n (onNodeSelect)=\"onSelectNode()\"\n (onNodeExpand)=\"onNodeExpand($event)\"\n (onNodeCollapse)=\"onNodeCollapse($event)\"\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\n *ngIf=\"multiple\"\n 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-menu>\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/**\n * CpsProgressCircularComponent is a process status indicator in a form of a spinner.\n * @group Components\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 /**\n * Diameter of the progress bar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() diameter: number | string = 40;\n\n /**\n * Thickness of the progress bar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() strokeWidth: number | string = 4;\n\n /**\n * Color of the progress bar.\n * @group Props\n */\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/**\n * CpsButtonComponent is a button element.\n * @group Components\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 /**\n * Color of the button.\n * @group Props\n */\n @Input() color = 'calm';\n\n /**\n * Color of content on the button. Works only with 'solid' type.\n * @group Props\n */\n @Input() contentColor = 'white';\n\n /**\n * Type of the button in terms of appearance, it can be 'solid' or 'outlined' or 'borderless'.\n * @group Props\n */\n @Input() type: 'solid' | 'outlined' | 'borderless' = 'solid';\n\n /**\n * Label or text on the button.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Name of the icon on the button.\n * @group Props\n */\n @Input() icon: IconType = '';\n\n /**\n * Position of the icon on the button, it can be 'before' or 'after'.\n * @group Props\n */\n @Input() iconPosition: 'before' | 'after' = 'before';\n\n /**\n * Size on the button, it can be 'xsmall', 'small', 'normal' or 'large'.\n * @group Props\n */\n @Input() size: 'xsmall' | 'small' | 'normal' | 'large' = 'normal';\n\n /**\n * Width on the button, of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = 0;\n\n /**\n * Height on the button, of type number denoting pixels or string.\n * @group Props\n */\n @Input() height: number | string = 0;\n\n /**\n * When present, it specifies that the component should be disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * When enabled, a cps-progress-circular bar is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Callback to execute when button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\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' : null\">\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 OnInit,\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 { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsIconComponent, IconType } from '../cps-icon/cps-icon.component';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n/**\n * CpsCheckboxComponent is a checkbox element.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [CommonModule, CpsInfoCircleComponent, CpsIconComponent],\n selector: 'cps-checkbox',\n templateUrl: './cps-checkbox.component.html',\n styleUrls: ['./cps-checkbox.component.scss']\n})\nexport class CpsCheckboxComponent implements OnInit, ControlValueAccessor {\n /**\n * Label of the checkbox.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Determines whether checkbox is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Size of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Name of the icon.\n * @group Props\n */\n @Input() icon: IconType = '';\n\n /**\n * Color of the icon.\n * @group Props\n */\n @Input() iconColor = 'text-dark';\n\n /**\n * Value of the checkbox.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {boolean} boolean - value changed.\n * @group Emits\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 ngOnInit(): void {\n this.iconColor = getCSSColor(this.iconColor);\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: 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 [ngClass]=\"{\n 'cps-checkbox-disabled': disabled\n }\">\n <input\n type=\"checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"value\"\n (change)=\"updateValueEvent($event)\" />\n <span class=\"cps-checkbox-indicator\"></span>\n <cps-icon\n class=\"cps-checkbox-icon\"\n *ngIf=\"icon\"\n [icon]=\"icon\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : iconColor\">\n </cps-icon>\n <span *ngIf=\"label\" class=\"cps-checkbox-label\">{{ label }}</span>\n </label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\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 { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CpsRadioOption } from '../cps-radio-group.component';\nimport { CommonModule } from '@angular/common';\nimport { CpsTooltipDirective } from '../../../directives/cps-tooltip.directive';\n\nlet nextUniqueId = 0;\n\n/**\n * CpsRadioButtonComponent is an internal radio button component.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [CommonModule, CpsTooltipDirective],\n selector: 'cps-radio-button',\n templateUrl: './cps-radio-button.component.html',\n styleUrls: ['./cps-radio-button.component.scss']\n})\nexport class CpsRadioButtonComponent {\n private _uniqueId = `cps-radio-button-${++nextUniqueId}`;\n\n /**\n * An option.\n * @group Props\n */\n @Input() option!: CpsRadioOption;\n\n /**\n * Determines whether the radio button is checked.\n * @group Props\n */\n @Input() checked = false;\n\n /**\n * Determines whether the radio button is disabled.\n * @group Props\n */\n @Input() groupDisabled = false;\n\n /**\n * Callback to invoke on value update.\n * @param {Event} event - Custom update value event.\n * @group Emits\n */\n @Output() updateValueEvent = new EventEmitter<Event>();\n\n get inputId(): string {\n return `${this._uniqueId}-input`;\n }\n\n updateValue(event: Event): void {\n event.preventDefault();\n if (this.option.disabled) return;\n this.updateValueEvent.emit(this.option.value);\n }\n}\n","<div\n *ngIf=\"option.tooltip\"\n class=\"cps-radio-group-content-button\"\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</div>\n<div *ngIf=\"!option?.tooltip\" class=\"cps-radio-group-content-button\">\n <ng-container\n *ngTemplateOutlet=\"\n optionRadioTemplate;\n context: {\n option: option\n }\n \"></ng-container>\n</div>\n\n<ng-template #optionRadioTemplate let-option=\"option\">\n <input\n [id]=\"inputId\"\n type=\"radio\"\n [disabled]=\"option.disabled || groupDisabled\"\n [value]=\"option.value\"\n [checked]=\"checked\"\n (change)=\"updateValue($event)\" />\n <div #contentRef class=\"content\">\n <ng-content></ng-content>\n </div>\n <label\n *ngIf=\"!contentRef.innerHTML.trim()\"\n [for]=\"inputId\"\n class=\"cps-radio-group-content-button-label\"\n [ngStyle]=\"{\n cursor: option.disabled || groupDisabled ? 'default' : 'pointer'\n }\"\n >{{ option.label }}\n </label>\n</ng-template>\n","/* eslint-disable no-use-before-define */\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n InjectionToken,\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 CpsTooltipPosition\n} from '../../directives/cps-tooltip.directive';\nimport { CpsRadioButtonComponent } from './cps-radio-button/cps-radio-button.component';\n\nexport type CpsRadioOption = {\n value: any;\n label?: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\nexport const CPS_RADIO_GROUP = new InjectionToken<CpsRadioGroupComponent>(\n 'CpsRadioGroupComponent'\n);\n\n/**\n * CpsRadioGroupComponent is a radio buttons group.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CpsInfoCircleComponent,\n CpsTooltipDirective,\n CpsRadioButtonComponent\n ],\n selector: 'cps-radio-group',\n templateUrl: './cps-radio-group.component.html',\n styleUrls: ['./cps-radio-group.component.scss'],\n providers: [\n {\n provide: CPS_RADIO_GROUP,\n useExisting: CpsRadioGroupComponent\n }\n ]\n})\nexport class CpsRadioGroupComponent implements ControlValueAccessor {\n /**\n * An array of options.\n * @group Props\n */\n @Input() options = [] as CpsRadioOption[];\n\n /**\n * Label of the radio group.\n * @group Props\n */\n @Input() groupLabel = '';\n\n /**\n * Determines whether the radio group should be vertical.\n * @group Props\n */\n @Input() vertical = false;\n\n /**\n * Determines whether the radio group is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Size of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be \"top\", \"bottom\", \"left\" or \"right\".\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Value of the radio group.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {boolean} boolean - value changed.\n * @group Emits\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(value: any) {\n if (this.disabled) return;\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 #contentRef\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-content></ng-content>\n </div>\n\n <div\n *ngIf=\"!contentRef.innerHTML.trim()\"\n class=\"cps-radio-group-content\"\n [ngClass]=\"\n vertical\n ? 'cps-radio-group-content-vertical'\n : 'cps-radio-group-content-horizontal'\n \">\n <cps-radio-button\n *ngFor=\"let option of options\"\n [option]=\"option\"\n [checked]=\"option.value === value\"\n [groupDisabled]=\"disabled\"\n (updateValueEvent)=\"updateValueEvent($event)\">\n </cps-radio-button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Input, OnInit, Optional } from '@angular/core';\nimport {\n CPS_RADIO_GROUP,\n CpsRadioGroupComponent,\n CpsRadioOption\n} from '../cps-radio-group.component';\nimport { CpsTooltipDirective } from '../../../directives/cps-tooltip.directive';\nimport { CpsRadioButtonComponent } from '../cps-radio-button/cps-radio-button.component';\n\n/**\n * CpsRadioComponent is a radio button with arbitrary content.\n * @group Components\n */\n@Component({\n standalone: true,\n selector: 'cps-radio',\n imports: [\n CommonModule,\n CpsTooltipDirective,\n CpsRadioGroupComponent,\n CpsRadioButtonComponent\n ],\n templateUrl: './cps-radio.component.html',\n styleUrls: ['./cps-radio.component.scss']\n})\nexport class CpsRadioComponent implements OnInit {\n /**\n * An option.\n * @group Props\n */\n @Input() option!: CpsRadioOption;\n\n radioGroup?: CpsRadioGroupComponent;\n groupDisabled = false;\n\n constructor(\n @Optional() @Inject(CPS_RADIO_GROUP) radioGroup: CpsRadioGroupComponent\n ) {\n this.radioGroup = radioGroup;\n }\n\n ngOnInit(): void {\n this.groupDisabled = this.radioGroup?.disabled ?? false;\n }\n\n updateValueEvent(value: any): void {\n this.radioGroup?.updateValueEvent(value);\n }\n}\n","<cps-radio-button\n [option]=\"option\"\n [groupDisabled]=\"groupDisabled\"\n [checked]=\"radioGroup?.value == option.value\"\n (updateValueEvent)=\"updateValueEvent($event)\">\n <ng-content></ng-content>\n</cps-radio-button>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n/**\n * CpsLoaderComponent is a fetch data indicator.\n * @group Components\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 /**\n * Option for loader component to take up the whole screen.\n * @group Props\n */\n @Input() fullScreen = false;\n\n /**\n * Option to control the transparency of the loader component, of type number or string.\n * @group Props\n */\n @Input() opacity: number | string = 0.1;\n\n /**\n * Color of the label.\n * @group Props\n */\n @Input() labelColor = 'depth';\n\n /**\n * Determines whether to show 'Loading...' label.\n * @group Props\n */\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 { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CpsIconComponent } from '../../../../cps-icon/cps-icon.component';\nimport {\n CpsMenuComponent,\n CpsMenuItem\n} from '../../../../cps-menu/cps-menu.component';\n\n/**\n * TableRowMenuComponent is an internal component which applies the menu to each row.\n * @group Components\n */\n@Component({\n selector: 'table-row-menu',\n standalone: true,\n imports: [CpsIconComponent, CpsMenuComponent],\n templateUrl: './table-row-menu.component.html',\n styleUrls: ['./table-row-menu.component.scss']\n})\nexport class TableRowMenuComponent implements OnInit {\n /**\n * Callback to invoke when edit-row button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\n */\n @Output() editRowBtnClicked = new EventEmitter<any>();\n\n /**\n * Callback to invoke when remove-row button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\n */\n @Output() removeRowBtnClicked = new EventEmitter<any>();\n\n /**\n * Determines whether the 'Remove' button should be displayed in the menu.\n * @group Props\n */\n @Input()\n set showRowRemoveButton(value: boolean) {\n this._showRowRemoveButton = value;\n this.initializeItems();\n }\n\n get showRowRemoveButton(): boolean {\n return this._showRowRemoveButton;\n }\n\n /**\n * Determines whether the 'Edit' button should be displayed in the menu.\n * @group Props\n */\n @Input()\n set showRowEditButton(value: boolean) {\n this._showRowEditButton = value;\n this.initializeItems();\n }\n\n get showRowEditButton(): boolean {\n return this._showRowEditButton;\n }\n\n private _showRowRemoveButton = true;\n private _showRowEditButton = true;\n\n items: CpsMenuItem[] = [];\n\n ngOnInit(): void {\n this.initializeItems();\n }\n\n initializeItems() {\n this.items = [];\n\n if (this.showRowEditButton) {\n this.items.push({\n title: 'Edit',\n icon: 'edit',\n action: (event: any) => {\n this.editRowBtnClicked.emit(event);\n }\n });\n }\n\n if (this.showRowRemoveButton) {\n this.items.push({\n title: 'Remove',\n icon: 'remove',\n action: (event: any) => {\n this.removeRowBtnClicked.emit(event);\n }\n });\n }\n }\n}\n","<cps-menu #rowMenu [items]=\"items\" [compressed]=\"true\" [withArrow]=\"false\">\n</cps-menu>\n<cps-icon\n icon=\"dropdown-menu\"\n size=\"22\"\n (click)=\"rowMenu.toggle($event)\"\n class=\"cps-table-row-menu-icon\">\n</cps-icon>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core';\nimport { Table } from 'primeng/table';\nimport { TreeTable } from 'primeng/treetable';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'cps-sort-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './cps-sort-icon.component.html',\n styleUrls: ['./cps-sort-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CpsSortIconComponent implements OnInit, OnDestroy {\n @Input() field = '';\n\n subscription: Subscription;\n\n sortOrder = 0;\n\n _tableInstance: Table | TreeTable;\n\n constructor(\n @Optional() public dt: Table,\n @Optional() public tt: TreeTable,\n public cd: ChangeDetectorRef\n ) {\n this._tableInstance = dt || tt;\n this.subscription = this._tableInstance.tableService.sortSource$.subscribe(\n () => {\n this.updateSortState();\n }\n );\n }\n\n ngOnInit() {\n this.updateSortState();\n }\n\n onClick(event: Event) {\n event.preventDefault();\n }\n\n updateSortState() {\n if (this._tableInstance.sortMode === 'single') {\n this.sortOrder = this._tableInstance.isSorted(this.field)\n ? this._tableInstance.sortOrder\n : 0;\n } else if (this._tableInstance.sortMode === 'multiple') {\n const sortMeta = this._tableInstance.getSortMeta(this.field);\n this.sortOrder = sortMeta ? sortMeta.order : 0;\n }\n this.cd.markForCheck();\n }\n\n getMultiSortMetaIndex() {\n const multiSortMeta = this._tableInstance._multiSortMeta;\n let index = -1;\n\n if (\n multiSortMeta &&\n this._tableInstance.sortMode === 'multiple' &&\n ((this.dt && this.dt.showInitialSortBadge) || multiSortMeta.length > 1)\n ) {\n for (let i = 0; i < multiSortMeta.length; i++) {\n const meta = multiSortMeta[i];\n if (meta.field === this.field || meta.field === this.field) {\n index = i;\n break;\n }\n }\n }\n\n return index;\n }\n\n getBadgeValue() {\n const index = this.getMultiSortMetaIndex();\n return this.dt && this.dt.groupRowsBy && index > -1 ? index : index + 1;\n }\n\n isMultiSorted() {\n return (\n this._tableInstance.sortMode === 'multiple' &&\n this.getMultiSortMetaIndex() > -1\n );\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","<div *ngIf=\"sortOrder === 0\" class=\"cps-sortable-column-icon sort-unsorted\">\n <div class=\"sort-unsorted-arrow-up\"></div>\n <div class=\"sort-unsorted-arrow-down\"></div>\n</div>\n<div *ngIf=\"sortOrder === 1\" class=\"cps-sortable-column-icon sort-desc\"></div>\n<div *ngIf=\"sortOrder === -1\" class=\"cps-sortable-column-icon sort-asc\"></div>\n\n<span *ngIf=\"isMultiSorted()\" class=\"cps-sortable-column-badge\">{{\n getBadgeValue()\n}}</span>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { SortableColumn, Table } from 'primeng/table';\nimport { CpsSortIconComponent } from '../components/internal/cps-sort-icon/cps-sort-icon.component';\n\n/**\n * CpsTableColumnSortableDirective is a sorting directive used to sort single or multiple columns in table.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTColSortable]'\n})\nexport class CpsTableColumnSortableDirective\n extends SortableColumn\n implements OnInit, OnDestroy\n{\n /**\n * Name of the column to be sorted.\n * @group Props\n */\n @Input('cpsTColSortable') override field = '';\n\n sortIconRef: ComponentRef<CpsSortIconComponent>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n public override dt: Table\n ) {\n super(dt);\n this.sortIconRef =\n this.viewContainerRef.createComponent(CpsSortIconComponent);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.sortIconRef.setInput('field', this.field);\n this.elementRef.nativeElement.appendChild(\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 { Directive, Host, Self, Optional } from '@angular/core';\nimport { SortMeta } from 'primeng/api';\nimport { Table } from 'primeng/table';\nimport { ObjectUtils } from 'primeng/utils';\n\n@Directive({\n standalone: true,\n selector: '[tWithUnsort]',\n exportAs: 'tWithUnsort'\n})\nexport class TableUnsortDirective {\n resetSorting = false;\n sortIndices: number[] = [];\n\n constructor(@Host() @Self() @Optional() public pTable: Table) {\n pTable.sort = (event: any) => {\n if (pTable.sortMode === 'single') {\n if (pTable.sortField === event.field && pTable.sortOrder === -1) {\n pTable._sortOrder = pTable.defaultSortOrder;\n (pTable._sortField as any) = null;\n this.resetSorting = true;\n } else {\n pTable._sortOrder =\n pTable.sortField === event.field\n ? pTable.sortOrder * -1\n : pTable.defaultSortOrder;\n pTable._sortField = event.field;\n }\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 as any) = null;\n this.resetSorting = true;\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 this.resetSorting = false;\n };\n\n pTable.sortSingle = () => {\n const field = pTable.sortField || pTable.groupRowsBy;\n const order = pTable.sortField\n ? pTable.sortOrder\n : pTable.groupRowsByOrder;\n if (\n pTable.groupRowsBy &&\n pTable.sortField &&\n pTable.groupRowsBy !== pTable.sortField\n ) {\n pTable._multiSortMeta = [\n pTable.getGroupRowsMeta(),\n { field: pTable.sortField, order: pTable.sortOrder }\n ];\n pTable.sortMultiple();\n return;\n }\n\n if (order && (field || this.resetSorting)) {\n if (pTable.restoringSort) {\n pTable.restoringSort = false;\n }\n\n if (pTable.lazy) {\n pTable.onLazyLoad.emit(pTable.createLazyLoadMetadata());\n } else if (pTable.value) {\n if (pTable.customSort) {\n pTable.sortFunction.emit({\n data: pTable.value,\n mode: pTable.sortMode,\n field,\n order\n });\n } else {\n this._sortData(field, order);\n }\n\n if (pTable.hasFilter()) {\n pTable._filter();\n }\n }\n\n const sortMeta: SortMeta = {\n field,\n order\n };\n\n pTable.onSort.emit(sortMeta);\n pTable.tableService.onSort(sortMeta);\n }\n };\n\n pTable.sortMultiple = () => {\n if (pTable.groupRowsBy) {\n if (!pTable._multiSortMeta)\n pTable._multiSortMeta = [pTable.getGroupRowsMeta()];\n else if (pTable.multiSortMeta[0].field !== pTable.groupRowsBy)\n pTable._multiSortMeta = [\n pTable.getGroupRowsMeta(),\n ...pTable._multiSortMeta\n ];\n }\n\n if (\n (pTable.multiSortMeta && pTable.multiSortMeta.length > 0) ||\n this.resetSorting\n ) {\n if (pTable.lazy) {\n pTable.onLazyLoad.emit(pTable.createLazyLoadMetadata());\n } else if (pTable.value) {\n if (pTable.customSort) {\n pTable.sortFunction.emit({\n data: pTable.value,\n mode: pTable.sortMode,\n multiSortMeta: pTable.multiSortMeta\n });\n } else {\n this._sortData();\n }\n\n if (pTable.hasFilter()) {\n pTable._filter();\n }\n }\n\n pTable.onSort.emit({\n multisortmeta: pTable.multiSortMeta\n });\n pTable.tableService.onSort(pTable.multiSortMeta);\n }\n };\n }\n\n resetDefaultSortOrder() {\n this.sortIndices = [];\n }\n\n private _sortData(field?: any, order?: any) {\n // restore default sort order\n if (this.resetSorting && this.sortIndices.length > 0) {\n this.pTable._value = this.sortIndices.map(\n (index) => this.pTable._value[index]\n );\n this.resetDefaultSortOrder();\n } else {\n const toSort: any[] = [];\n if (this.sortIndices.length < 1) {\n this.sortIndices = Array.from(\n { length: this.pTable.value.length },\n (_, index) => index\n );\n }\n\n for (let i = 0; i < this.pTable.value.length; i++) {\n toSort.push([this.pTable.value[i], this.sortIndices.indexOf(i)]);\n }\n\n if (this.pTable.sortMode === 'single') {\n toSort.sort((data1, data2) => {\n const value1 = ObjectUtils.resolveFieldData(data1[0], field);\n const value2 = ObjectUtils.resolveFieldData(data2[0], field);\n return this.pTable.compareValuesOnSort(value1, value2, order);\n });\n } else {\n toSort.sort((data1, data2) => {\n return this._multisortField(data1, data2, 0);\n });\n }\n\n for (let i = 0; i < toSort.length; i++) {\n this.sortIndices[toSort[i][1]] = i;\n this.pTable.value[i] = toSort[i][0];\n }\n }\n\n this.pTable._value = [...this.pTable.value];\n }\n\n private _multisortField(data1: any, data2: any, index: number): number {\n const value1 = ObjectUtils.resolveFieldData(\n data1[0],\n this.pTable.multiSortMeta[index].field\n );\n const value2 = ObjectUtils.resolveFieldData(\n data2[0],\n this.pTable.multiSortMeta[index].field\n );\n if (ObjectUtils.compare(value1, value2, this.pTable.filterLocale) === 0) {\n return this.pTable.multiSortMeta.length - 1 > index\n ? this._multisortField(data1, data2, index + 1)\n : 0;\n }\n return this.pTable.compareValuesOnSort(\n value1,\n value2,\n this.pTable.multiSortMeta[index].order\n );\n }\n}\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\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 { 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';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsMenuComponent, CpsMenuItem } from '../cps-menu/cps-menu.component';\nimport { CpsLoaderComponent } from '../cps-loader/cps-loader.component';\nimport { TableRowMenuComponent } from './components/internal/table-row-menu/table-row-menu.component';\nimport { CpsTableColumnSortableDirective } from './directives/cps-table-column-sortable.directive';\nimport { TableUnsortDirective } from './directives/internal/table-unsort.directive';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { isEqual } from 'lodash-es';\n\n// import jsPDF from 'jspdf';\n// import 'jspdf-autotable';\n\nexport function tableFactory(tableComponent: CpsTableComponent) {\n return tableComponent.primengTable;\n}\n\nexport type CpsTableExportFormat = 'csv' | 'xlsx'; // | 'pdf';\nexport type CpsTableSize = 'small' | 'normal' | 'large';\nexport type CpsTableToolbarSize = 'small' | 'normal';\nexport type CpsTableSortMode = 'single' | 'multiple';\n\n/**\n * CpsTableComponent displays data in tabular format.\n * @group Components\n */\n@Component({\n selector: 'cps-table',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n CommonModule,\n TableModule,\n TableUnsortDirective,\n CpsInputComponent,\n CpsButtonComponent,\n CpsSelectComponent,\n CpsIconComponent,\n CpsMenuComponent,\n CpsLoaderComponent,\n TableRowMenuComponent,\n CpsTableColumnSortableDirective\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, AfterViewChecked, OnChanges {\n /**\n * An array of objects to represent dynamic columns.\n * @group Props\n */\n @Input() columns: { [key: string]: any }[] = [];\n\n /**\n * A key used to retrieve the header from columns.\n * @group Props\n */\n @Input() colHeaderName = 'header';\n\n /**\n * A key used to retrieve the field from columns.\n * @group Props\n */\n @Input() colFieldName = 'field';\n\n /**\n * Determines whether the table should have alternating stripes.\n * @group Props\n */\n @Input() striped = true;\n\n /**\n * Determines whether the table should have borders.\n * @group Props\n */\n @Input() bordered = true;\n\n /**\n * Size of table cells, it can be \"small\", \"normal\" or \"large\".\n * @group Props\n */\n @Input() size: CpsTableSize = 'normal';\n\n /**\n * Determines whether the table should have row selection.\n * @group Props\n */\n @Input() selectable = false;\n\n /**\n * Determines whether the table should have rows highlighting on hover.\n * @group Props\n */\n @Input() rowHover = true;\n\n /**\n * Field, that uniquely identifies a record in data (needed for expandable rows).\n * @group Props\n */\n @Input() dataKey = '';\n\n /**\n * Determines whether the table should show row menus.\n * @group Props\n */\n @Input() showRowMenu = false;\n\n /**\n * Determines whether the 'Remove' button should be displayed in the row menu.\n * Note: This setting only takes effect if 'showRowMenu' is true.\n * @group Props\n */\n @Input() showRowRemoveButton = true;\n\n /**\n * Determines whether the 'Edit' button should be displayed in the row menu.\n * Note: This setting only takes effect if 'showRowMenu' is true.\n * @group Props\n */\n @Input() showRowEditButton = true;\n\n /**\n * Determines whether the table should have re-orderable rows.\n * @group Props\n */\n @Input() reorderableRows = false;\n\n /**\n * When enabled, a loader component is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Inline style of the table.\n * @group Props\n */\n @Input() tableStyle = undefined;\n\n /**\n * Style class of the table.\n * @group Props\n */\n @Input() tableStyleClass = '';\n\n /**\n * Makes all columns sortable if columns prop is provided.\n * @group Props\n */\n @Input() sortable = false;\n\n /**\n * Determines whether sorting works on single column or on multiple columns.\n * @group Props\n */\n @Input() sortMode: CpsTableSortMode = 'single';\n\n /**\n * Determines whether to use the default sorting or a custom one using sortFunction.\n * @group Props\n */\n @Input() customSort = false;\n\n /**\n * Determines whether the table has a toolbar.\n * @group Props\n */\n @Input() hasToolbar = true;\n\n /**\n * Toolbar size, it can be \"small\" or \"normal\".\n * @group Props\n */\n @Input() toolbarSize: CpsTableToolbarSize = 'normal';\n\n /**\n * Toolbar title.\n * @group Props\n */\n @Input() toolbarTitle = '';\n\n /**\n * Toolbar icon name.\n * @group Props\n */\n @Input() toolbarIcon = '';\n\n /**\n * Toolbar icon color.\n * @group Props\n */\n @Input() toolbarIconColor = '';\n\n /**\n * Makes table scrollable.\n * @group Props\n */\n @Input() scrollable = true;\n\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n * @group Props\n */\n @Input() scrollHeight = '';\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM. Works only if scrollable prop is true.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * Determines whether the table should have paginator.\n * @group Props\n */\n @Input() paginator = false;\n\n /**\n * Determines whether to show paginator even if there is only one page.\n * @group Props\n */\n @Input() alwaysShowPaginator = true;\n\n /**\n * Array of integer values to display inside rows per page dropdown of paginator.\n * @group Props\n */\n @Input() rowsPerPageOptions: number[] = [];\n\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n @Input() first = 0;\n\n /**\n * Number of rows to display per page.\n * @group Props\n */\n @Input() rows = 0;\n\n /**\n * Determines whether to reset page on rows change.\n * @group Props\n */\n @Input() resetPageOnRowsChange = false;\n\n /**\n * Determines whether to reset page on table data sorting.\n * @group Props\n */\n @Input() resetPageOnSort = true;\n\n /**\n * Number of total records.\n * @group Props\n */\n @Input() totalRecords = 0;\n\n /**\n * Text to display when there is no data.\n * @group Props\n */\n @Input() emptyMessage = 'No data';\n\n /**\n * Height of table's body when there is no data, of type number denoting pixels or string.\n * @group Props\n */\n @Input() emptyBodyHeight: number | string = '';\n\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n @Input() lazy = false;\n\n /**\n * Determines whether to call lazy loading on initialization.\n * @group Props\n */\n @Input() lazyLoadOnInit = true;\n\n /**\n * Determines whether to show global filter in the toolbar.\n * @group Props\n */\n @Input() showGlobalFilter = false;\n\n /**\n * Global filter placeholder.\n * @group Props\n */\n @Input() globalFilterPlaceholder = 'Search';\n\n /**\n * An array of fields to use in global filtering.\n * @group Props\n */\n @Input() globalFilterFields: string[] = [];\n\n /**\n * Determines whether to clear global filter on data loading.\n * @group Props\n */\n @Input() clearGlobalFilterOnLoading = false;\n\n /**\n * Determines whether to show remove button in the toolbar when rows are selected.\n * @group Props\n */\n @Input() showRemoveBtnOnSelect = true;\n\n /**\n * Determines whether removeBtnOnSelect is disabled.\n * @group Props\n */\n @Input() removeBtnOnSelectDisabled = false;\n\n /**\n * Determines whether to show additional button in the toolbar when rows are selected.\n * @group Props\n */\n @Input() showAdditionalBtnOnSelect = false;\n\n /**\n * AdditionalBtnOnSelect title.\n * @group Props\n */\n @Input() additionalBtnOnSelectTitle = 'Select action';\n\n /**\n * Determines whether additionalBtnOnSelect is disabled.\n * @group Props\n */\n @Input() additionalBtnOnSelectDisabled = false;\n\n /**\n * Determines whether to show action button in the toolbar.\n * @group Props\n */\n @Input() showActionBtn = false;\n\n /**\n * Action button title.\n * @group Props\n */\n @Input() actionBtnTitle = 'Action';\n\n /**\n * Determines whether actionBtn is disabled.\n * @group Props\n */\n @Input() actionBtnDisabled = false;\n\n /**\n * Determines whether to show export button in the toolbar.\n * @group Props\n */\n @Input() showExportBtn = false;\n\n /**\n * Determines whether exportBtn is disabled.\n * @group Props\n */\n @Input() exportBtnDisabled = false;\n\n /**\n * Name of the exported file.\n * @group Props\n */\n @Input() exportFilename = 'download';\n\n /**\n * Character to use as the csv separator.\n * @group Props\n */\n @Input() csvSeparator = ',';\n\n /**\n * Determines whether to show data reload button in the toolbar.\n * @group Props\n */\n @Input() showDataReloadBtn = false;\n\n /**\n * Determines whether dataReloadBtn is disabled.\n * @group Props\n */\n @Input() dataReloadBtnDisabled = false;\n\n /**\n * Determines whether the table should show columnsToggle menu, where you can choose which columns to be displayed. If external body template is provided, use columnsSelected event emitter.\n * @group Props\n */\n @Input() showColumnsToggleBtn = false;\n\n /**\n * Determines whether columnsToggle button is disabled.\n * @group Props\n */\n @Input() columnsToggleBtnDisabled = false;\n\n /**\n * Array of initial columns to show in the table. If not provided, all columns are initially visible.\n * @group Props\n */\n @Input() initialColumns: { [key: string]: any }[] = [];\n\n /**\n * An array of objects to display.\n * @group Props\n */\n @Input() set data(value: any[]) {\n this._data = [...value];\n }\n\n get data(): any[] {\n return this._data;\n }\n\n /**\n * Callback to invoke on selection changed. Returns selected rows.\n * @param {any[]} any[] - selected rows.\n * @group Emits\n */\n @Output() rowsSelected = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke on selection changed. Returns selected rows indexes.\n * @param {number[]} number[] - selected rows indexes.\n * @group Emits\n */\n @Output() selectedRowIndexes = new EventEmitter<number[]>();\n\n /**\n * Callback to invoke when action button is clicked.\n * @param {void} void - action button clicked.\n * @group Emits\n */\n @Output() actionBtnClicked = new EventEmitter<void>();\n\n /**\n * Callback to invoke when edit-row button is clicked.\n * @param {{row: any, index: number}} {row: any, index: number} - edit-row button clicked.\n * @group Emits\n */\n @Output() editRowBtnClicked = new EventEmitter<{ row: any; index: number }>();\n\n /**\n * Callback to invoke on rows removal. Returns rows.\n * @param {any[]} any[] - array of rows to remove.\n * @group Emits\n */\n @Output() rowsToRemove = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke on rows removal. Returns rows indexes.\n * @param {number[]} number[] - array of indexes of rows to remove.\n * @group Emits\n */\n @Output() rowIndexesToRemove = new EventEmitter<number[]>();\n\n /**\n * Callback to invoke on page changed.\n * @param {any} any - page changed.\n * @group Emits\n */\n @Output() pageChanged = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data is sorted.\n * @param {any} any - sort meta.\n * @group Emits\n */\n @Output() sorted = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data is filtered.\n * @param {any} any - custom filtering event.\n * @group Emits\n */\n @Output() filtered = new EventEmitter<any>();\n\n /**\n * Callback to invoke when rows are reordered.\n * @param {any} any - rows reordered.\n * @group Emits\n */\n @Output() rowsReordered = new EventEmitter<any>();\n\n /**\n * Callback to invoke on columns selection.\n * @param {object} object - selected column.\n * @group Emits\n */\n @Output() columnsSelected = new EventEmitter<{ [key: string]: any }[]>();\n\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {any} any - custom lazy loading event.\n * @group Emits\n */\n @Output() lazyLoaded = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data-reload button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\n */\n @Output() dataReloadBtnClicked = new EventEmitter<any>();\n\n /**\n * Callback to invoke when additional button on select is clicked.\n * @param {any[]} any[] - selected data.\n * @group Emits\n */\n @Output() additionalBtnOnSelectClicked = new EventEmitter<any[]>();\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('nestedHeader', { static: false })\n public nestedHeaderTemplate!: TemplateRef<any>;\n\n @ContentChild('body', { static: false })\n public bodyTemplate!: TemplateRef<any>;\n\n @ContentChild('rowexpansion', { static: false })\n public rowExpansionTemplate!: TemplateRef<any>;\n\n @ViewChild('primengTable', { static: true })\n primengTable!: Table;\n\n @ViewChild('globalFilterComp')\n globalFilterComp!: CpsInputComponent;\n\n @ViewChild('exportMenu')\n exportMenu!: CpsMenuComponent;\n\n @ViewChild('colToggleMenu')\n colToggleMenu!: CpsMenuComponent;\n\n @ViewChild('tUnsortDirective') tUnsortDirective!: TableUnsortDirective;\n\n _data: any[] = [];\n\n selectedRows: any[] = [];\n\n virtualScrollItemSize = 0;\n\n rowOptions: { label: string; value: number }[] = [];\n\n selectedColumns: { [key: string]: any }[] = [];\n\n exportMenuItems = [\n {\n title: 'CSV',\n icon: 'csv',\n action: () => {\n this.exportTable('csv');\n }\n },\n {\n title: 'XLSX',\n icon: 'xls',\n action: () => {\n this.exportTable('xlsx');\n }\n }\n // {\n // title: 'PDF',\n // icon: 'pdf',\n // action: () => {\n // this.exportTable('pdf');\n // }\n // }\n ] as CpsMenuItem[];\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.emptyBodyHeight = convertSize(this.emptyBodyHeight);\n if (!this.scrollable) this.virtualScroll = false;\n\n if (this.showAdditionalBtnOnSelect) this.showRemoveBtnOnSelect = 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\n this.selectedColumns =\n this.initialColumns.length > 0 ? this.initialColumns : this.columns;\n }\n\n get styleClass() {\n const classesList = [];\n switch (this.size) {\n case 'small':\n classesList.push('p-datatable-sm');\n break;\n case 'large':\n classesList.push('p-datatable-lg');\n break;\n }\n if (this.hasToolbar) {\n switch (this.toolbarSize) {\n case 'small':\n classesList.push('cps-tbar-small');\n break;\n case 'normal':\n classesList.push('cps-tbar-normal');\n break;\n }\n }\n\n if (this.striped) {\n classesList.push('p-datatable-striped');\n }\n if (this.bordered) {\n classesList.push('p-datatable-gridlines');\n }\n\n return classesList.join(' ');\n }\n\n ngAfterViewChecked() {\n if (!this.virtualScroll || this.virtualScrollItemSize) return;\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 ngOnChanges(changes: SimpleChanges): void {\n if (this.loading) {\n this.clearSelection();\n if (this.clearGlobalFilterOnLoading) this.clearGlobalFilter();\n }\n\n if (changes?.data) {\n this.resetSortingState();\n this.selectedRows = this.selectedRows.filter((sr) =>\n this.data.includes(sr)\n );\n }\n }\n\n resetSortingState() {\n this.tUnsortDirective?.resetDefaultSortOrder();\n }\n\n clearSelection() {\n this.selectedRows = [];\n }\n\n clearGlobalFilter() {\n this.globalFilterComp?.clear();\n }\n\n onSelectionChanged(selection: any[]) {\n this.rowsSelected.emit(selection);\n\n const indexes = this._getIndexes(selection);\n this.selectedRowIndexes.emit(indexes);\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 this.rowsToRemove.emit(this.selectedRows);\n\n const indexes = this._getIndexes(this.selectedRows);\n this.rowIndexesToRemove.emit(indexes);\n }\n\n onClickAdditionalBtnOnSelect() {\n this.additionalBtnOnSelectClicked.emit(this.selectedRows);\n }\n\n onClickActionBtn() {\n this.actionBtnClicked.emit();\n }\n\n onRowsPerPageChanged() {\n if (this.resetPageOnRowsChange) {\n this.primengTable.first = 0;\n }\n this.changePage(this.getPage());\n }\n\n getPageCount() {\n return Math.ceil(this.primengTable.totalRecords / this.rows);\n }\n\n getPage(): number {\n return Math.floor(this.primengTable.first / this.rows);\n }\n\n changePage(p: number) {\n const pc = Math.ceil(this.getPageCount());\n\n if (p >= 0 && p < pc) {\n this.first = this.rows * p;\n this.primengTable.onPageChange({ first: this.first, rows: this.rows });\n }\n }\n\n onPageChange(event: any) {\n this.first = event.first;\n this.rows = event.rows;\n\n const state = {\n page: this.getPage(),\n first: this.first,\n rows: this.rows,\n pageCount: Math.ceil(this.getPageCount())\n };\n\n this.pageChanged.emit(state);\n }\n\n toggleAllColumns() {\n this.selectedColumns =\n this.selectedColumns.length < this.columns.length ? this.columns : [];\n this.columnsSelected.emit(this.selectedColumns);\n }\n\n isColumnSelected(col: any) {\n return this.selectedColumns.some((item) => isEqual(item, col));\n }\n\n onSelectColumn(col: any) {\n let res = [] as any;\n if (this.isColumnSelected(col)) {\n res = this.selectedColumns.filter((v: any) => !isEqual(v, col));\n } else {\n this.columns.forEach((o) => {\n if (\n this.selectedColumns.some((v: any) => isEqual(v, o)) ||\n isEqual(col, o)\n ) {\n res.push(o);\n }\n });\n }\n this.selectedColumns = res;\n this.columnsSelected.emit(this.selectedColumns);\n }\n\n onEditRowClicked(row: any) {\n const [index] = this._getIndexes([row]);\n this.editRowBtnClicked.emit({ row, index });\n }\n\n onRemoveRowClicked(item: any) {\n this.rowsToRemove.emit([item]);\n\n const indexes = this._getIndexes([item]);\n this.rowIndexesToRemove.emit(indexes);\n }\n\n onSort(event: any) {\n this.sorted.emit(event);\n }\n\n onFilter(event: any) {\n this.filtered.emit(event);\n }\n\n onRowReorder(event: any) {\n this.rowsReordered.emit(event);\n }\n\n onLazyLoaded(event: any) {\n this.lazyLoaded.emit(event);\n }\n\n onReloadData() {\n if (this.dataReloadBtnDisabled) return;\n this.dataReloadBtnClicked.emit();\n }\n\n onExportData(event: any) {\n if (this.exportBtnDisabled) return;\n this.exportMenu?.toggle(event);\n }\n\n onColumnsToggle(event: any) {\n if (this.columnsToggleBtnDisabled) return;\n this.colToggleMenu?.toggle(event);\n }\n\n private _getIndexes(rows: any[]) {\n let indexes: number[] = rows.map((row) =>\n this.primengTable.value.indexOf(row)\n );\n\n const indexesMap = this.tUnsortDirective?.sortIndices;\n if (indexesMap && indexesMap.length > 0) {\n indexes = indexes.map((i) => indexesMap.indexOf(i));\n }\n\n return indexes;\n }\n\n exportTable(format: CpsTableExportFormat) {\n if (this.columns.length < 1) throw new Error('Columns must be defined!');\n if (this.selectedColumns.length < 1) throw new Error('Nothing to export!');\n\n switch (format) {\n case 'csv':\n this.primengTable.exportCSV();\n break;\n\n case 'xlsx':\n this.exportXLSX();\n break;\n\n // case 'pdf':\n // this.exportPDF();\n // break;\n }\n }\n\n exportXLSX() {\n import('xlsx').then((xlsx) => {\n const sheetData = [\n this.selectedColumns.map(\n (c: { [key: string]: any }) => c[this.colHeaderName]\n ),\n ...this.primengTable.value.map((item: any) =>\n this.selectedColumns.map(\n (c: { [key: string]: any }) => item[c[this.colFieldName]]\n )\n )\n ];\n\n const worksheet = xlsx.utils.json_to_sheet(sheetData, {\n skipHeader: true\n });\n const workbook = {\n Sheets: { [this.exportFilename]: worksheet },\n SheetNames: [this.exportFilename]\n };\n const xlsxBuffer: any = xlsx.write(workbook, {\n bookType: 'xlsx',\n type: 'array'\n });\n\n const EXCEL_TYPE =\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n const blob: Blob = new Blob([xlsxBuffer], {\n type: EXCEL_TYPE\n });\n\n const downloadLink = document.createElement('a');\n downloadLink.href = URL.createObjectURL(blob);\n downloadLink.download = `${this.exportFilename}.xlsx`;\n downloadLink.click();\n });\n }\n\n // exportPDF() {\n // const exportColumns = this.selectedColumns.map((col) => ({\n // title: col[this.colHeaderName],\n // dataKey: col[this.colFieldName]\n // }));\n // // eslint-disable-next-line new-cap\n // const doc = new jsPDF({\n // orientation: this.selectedColumns.length > 3 ? 'l' : 'p',\n // unit: 'px',\n // format: 'a4'\n // });\n // (doc as any).autoTable({\n // headStyles: { fillColor: '#870a3c' },\n // columns: exportColumns,\n // body: this.primengTable.value\n // });\n // doc.save(`${this.exportFilename}.pdf`);\n // }\n}\n","<p-table\n #primengTable\n #tUnsortDirective=\"tWithUnsort\"\n tWithUnsort\n [ngClass]=\"{ 'cps-table-loading': loading }\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [value]=\"data\"\n [dataKey]=\"dataKey\"\n [columns]=\"selectedColumns\"\n (selectionChange)=\"onSelectionChanged($event)\"\n [globalFilterFields]=\"globalFilterFields\"\n [showInitialSortBadge]=\"false\"\n [loading]=\"loading\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [lazy]=\"lazy\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{ numToleratedItems: numToleratedItems }\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n [(selection)]=\"selectedRows\"\n [metaKeySelection]=\"false\"\n [rowHover]=\"rowHover\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [exportFilename]=\"exportFilename\"\n [csvSeparator]=\"csvSeparator\"\n (onPage)=\"onPageChange($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onSort)=\"onSort($event)\"\n (onFilter)=\"onFilter($event)\"\n (onRowReorder)=\"onRowReorder($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 *ngIf=\"toolbarIcon\" class=\"cps-table-tbar-icon\">\n <cps-icon [icon]=\"toolbarIcon\" [color]=\"toolbarIconColor\"></cps-icon>\n </div>\n <div class=\"cps-table-tbar-title\">{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-table-tbar-global-filter\">\n <cps-input\n #globalFilterComp\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\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-btn-on-select\">\n <cps-button\n label=\"Remove\"\n [disabled]=\"removeBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showAdditionalBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-table-tbar-btn-on-select\">\n <cps-button\n [label]=\"additionalBtnOnSelectTitle\"\n [disabled]=\"additionalBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickAdditionalBtnOnSelect()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-table-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n [disabled]=\"actionBtnDisabled\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggleBtn && columns.length > 0\"\n class=\"cps-table-tbar-coltoggle-btn\"\n [ngClass]=\"{ 'btn-disabled': columnsToggleBtnDisabled }\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n [color]=\"\n columnsToggleBtnDisabled ? 'text-lightest' : 'prepared-lighten1'\n \"\n (click)=\"onColumnsToggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-table-coltoggle-menu\">\n <div\n class=\"cps-table-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-table-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-table-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-table-coltoggle-menu-item-left\">\n <span class=\"cps-table-coltoggle-menu-item-check\"></span>\n <span class=\"cps-table-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n <div\n *ngIf=\"showExportBtn\"\n class=\"cps-table-tbar-export-btn\"\n [ngClass]=\"{ 'btn-disabled': exportBtnDisabled }\">\n <cps-icon\n icon=\"export\"\n size=\"20\"\n [color]=\"exportBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onExportData($event)\"></cps-icon>\n <cps-menu\n #exportMenu\n [items]=\"exportMenuItems\"\n [compressed]=\"true\"\n [withArrow]=\"false\">\n </cps-menu>\n </div>\n <div\n *ngIf=\"showDataReloadBtn\"\n class=\"cps-table-tbar-reload-btn\"\n [ngClass]=\"{ 'btn-disabled': dataReloadBtnDisabled }\">\n <cps-icon\n icon=\"refresh\"\n size=\"18\"\n [color]=\"dataReloadBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onReloadData()\">\n </cps-icon>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <th style=\"width: 3rem\" *ngIf=\"rowExpansionTemplate\"></th>\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\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th *ngFor=\"let col of columns\" [cpsTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th\n style=\"width: 2rem\"\n class=\"cps-table-row-menu-cell\"\n *ngIf=\"showRowMenu && (showRowRemoveButton || showRowEditButton)\"></th>\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 let-expanded=\"expanded\">\n <tr\n [pReorderableRow]=\"rowIndex\"\n [ngClass]=\"{\n 'cps-table-row-selected': selectable && primengTable.isSelected(item)\n }\">\n <td *ngIf=\"rowExpansionTemplate\" class=\"cps-table-row-chevron-cell\">\n <div\n class=\"cps-table-row-chevron\"\n [ngClass]=\"{ 'cps-table-row-chevron-expanded': expanded }\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n color=\"text-dark\"\n [pRowToggler]=\"item\">\n </cps-icon>\n </div>\n </td>\n <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" 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 *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: item,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\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 <td\n *ngIf=\"showRowMenu && (showRowRemoveButton || showRowEditButton)\"\n class=\"cps-table-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(item)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(item)\"\n [showRowRemoveButton]=\"showRowRemoveButton\"\n [showRowEditButton]=\"showRowEditButton\">\n </table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" *ngIf=\"rowExpansionTemplate\" let-item>\n <tr class=\"cps-table-row-expanded-content\">\n <td colspan=\"100\">\n <ng-container\n *ngTemplateOutlet=\"\n rowExpansionTemplate;\n context: {\n $implicit: item\n }\n \"></ng-container>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-table-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\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 >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n</p-table>\n","/* eslint-disable no-unused-vars */\nexport enum CpsColumnFilterMatchMode {\n STARTS_WITH = 'startsWith',\n CONTAINS = 'contains',\n NOT_CONTAINS = 'notContains',\n ENDS_WITH = 'endsWith',\n EQUALS = 'equals',\n NOT_EQUALS = 'notEquals',\n IN = 'in',\n LESS_THAN = 'lt',\n LESS_THAN_OR_EQUAL_TO = 'lte',\n GREATER_THAN = 'gt',\n GREATER_THAN_OR_EQUAL_TO = 'gte',\n BETWEEN = 'between',\n IS = 'is',\n IS_NOT = 'isNot',\n BEFORE = 'before',\n AFTER = 'after',\n DATE_IS = 'dateIs',\n DATE_IS_NOT = 'dateIsNot',\n DATE_BEFORE = 'dateBefore',\n DATE_AFTER = 'dateAfter'\n}\n\nexport type CpsColumnFilterCategoryOption = {\n value: any;\n label?: string;\n icon?: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\nexport type CpsColumnFilterType =\n | 'text'\n | 'number'\n | 'date'\n | 'boolean'\n | 'category';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\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 { convertSize } from '../../utils/internal/size-utils';\nimport { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\n\nexport type CpsDatepickerAppearanceType =\n | 'outlined'\n | 'underlined'\n | 'borderless';\n\n/**\n * CpsDatepickerComponent is an input component to provide date input.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CpsInputComponent,\n CalendarModule,\n CommonModule,\n FormsModule,\n CpsMenuComponent\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 /**\n * Label of the datepicker element.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Determines whether datepicker is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the datepicker of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Placeholder text.\n * @group Props\n */\n @Input() placeholder = 'MM/DD/YYYY';\n\n /**\n * Bottom hint text for the input field.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the component should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Determines whether to show button to be able to select today's date.\n * @group Props\n */\n @Input() showTodayButton = true;\n\n /**\n * Determines whether the datepicker dropdown should open on input focus.\n * @group Props\n */\n @Input() openOnInputFocus = false;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Size of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be \"top\", \"bottom\", \"left\" or \"right\".\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Styling appearance of datepicker input, it can be 'outlined', 'underlined' or 'borderless.\n * @group Props\n */\n @Input() appearance: CpsDatepickerAppearanceType = 'outlined';\n\n /**\n * Minimal date availalbe for selection.\n * @group Props\n */\n @Input()\n minDate!: Date;\n\n /**\n * Maximal date availalbe for selection.\n * @group Props\n */\n @Input()\n maxDate!: Date;\n\n /**\n * Value of the datepicker.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {Date | null} value - value change.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<Date | null>();\n\n @ViewChild('datepickerInput')\n datepickerInput!: CpsInputComponent;\n\n @ViewChild('calendarMenu')\n calendarMenu!: CpsMenuComponent;\n\n stringDate = '';\n isOpened = false;\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 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 onClearCalendarDate() {\n this.onSelectCalendarDate(null);\n }\n\n onSelectCalendarDate(dateVal: Date | null) {\n this.toggleCalendar(false);\n this.writeValue(dateVal);\n this.onChange(dateVal);\n this.valueChanged.emit(dateVal);\n }\n\n onInputBlur() {\n if (this.isOpened) return;\n this._control?.control?.markAsTouched();\n this._updateValueFromInputString();\n this._checkErrors();\n }\n\n onInputEnterClicked() {\n if (!this.isOpened) return;\n this._control?.control?.markAsTouched();\n this._updateValueFromInputString();\n this._checkErrors();\n this.toggleCalendar(false);\n }\n\n onClickCalendarIcon() {\n if (this.disabled) return;\n if (this.isOpened) this._updateValueFromInputString();\n this.toggleCalendar();\n }\n\n onBeforeCalendarHidden() {\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 onInputClear() {\n if (this.isOpened) this.focusInput();\n }\n\n onCalendarContentClick() {\n if (this.isOpened) this.focusInput();\n }\n\n focusInput() {\n this.datepickerInput.focus();\n }\n\n toggleCalendar(show?: boolean) {\n if (this.disabled || this.isOpened === show) return;\n\n const target =\n this.datepickerInput.elementRef.nativeElement.querySelector(\n '.cps-input-wrap'\n );\n\n if (typeof show === 'boolean') {\n if (show) {\n this.calendarMenu.show({\n target\n });\n } else {\n this.calendarMenu.hide();\n }\n } else {\n this.calendarMenu.toggle({\n target\n });\n }\n\n this.isOpened = this.calendarMenu.isVisible();\n\n if (!this.isOpened) {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n } else {\n this.focusInput();\n }\n }\n}\n","<div\n class=\"cps-datepicker\"\n [ngStyle]=\"{ width: cvtWidth }\"\n [class.focused]=\"isOpened\">\n <cps-input\n #datepickerInput\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 (cleared)=\"onInputClear()\"\n (enterClicked)=\"onInputEnterClicked()\"\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 [appearance]=\"appearance\"\n [error]=\"error\"></cps-input>\n <cps-menu\n #calendarMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeCalendarHidden()\"\n (contentClicked)=\"onCalendarContentClick()\"\n [focusOnShow]=\"false\"\n hideTransitionOptions=\"0s linear\"\n containerClass=\"cps-datepicker-calendar-menu\">\n <div class=\"cps-datepicker-calendar\">\n <p-calendar\n [(ngModel)]=\"value\"\n [showIcon]=\"true\"\n [showButtonBar]=\"showTodayButton\"\n [inline]=\"true\"\n (onSelect)=\"onSelectCalendarDate($event)\"\n (onClearClick)=\"onClearCalendarDate()\"\n [showOtherMonths]=\"false\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\">\n </p-calendar>\n </div>\n </cps-menu>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n Renderer2,\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 { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport {\n CpsTooltipDirective,\n CpsTooltipPosition\n} from '../../directives/cps-tooltip.directive';\n\nexport type CpsButtonToggleOption = {\n value: any;\n label?: string;\n icon?: string;\n disabled?: boolean;\n tooltip?: string;\n};\n\n/**\n * CpsButtonToggleComponent is used to select values using buttons.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CheckOptionSelectedPipe,\n CpsInfoCircleComponent,\n CpsIconComponent,\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 /**\n * Label of the toggle buttons.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * An array of options.\n * @group Props\n */\n @Input() options = [] as CpsButtonToggleOption[];\n\n /**\n * Specifies if multiple values can be selected.\n * @group Props\n */\n @Input() multiple = false;\n\n /**\n * Specifies that the component should be disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether at least one of the options is mandatory.\n * @group Props\n */\n @Input() mandatory = true;\n\n /**\n * Determines whether all buttons should have equal widths.\n * @group Props\n */\n @Input() equalWidths = true;\n\n /**\n * Position of the option tooltip, can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() optionTooltipPosition: CpsTooltipPosition = 'bottom';\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Size of infoTooltip, of type number or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Value of the component.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {any} any - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<any>();\n\n largestButtonWidth = 0;\n\n constructor(\n @Self() @Optional() private _control: NgControl,\n private renderer: Renderer2\n ) {\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 this._setEqualWidths();\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, val: 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 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 private _setEqualWidths() {\n if (!this.equalWidths) return;\n\n const hiddenSpan = this.renderer.createElement('span');\n this.renderer.setStyle(hiddenSpan, 'visibility', 'hidden');\n this.renderer.setStyle(hiddenSpan, 'position', 'absolute');\n this.renderer.setStyle(hiddenSpan, 'left', '-9999px');\n this.renderer.setStyle(hiddenSpan, 'font-size', '16px');\n this.renderer.setStyle(hiddenSpan, 'letter-spacing', '0.05em');\n this.renderer.setStyle(\n hiddenSpan,\n 'font-family',\n '\"Source Sans Pro\", sans-serif'\n );\n\n this.renderer.appendChild(document.body, hiddenSpan);\n\n this.largestButtonWidth = 0;\n this.options.forEach((opt) => {\n const text = this.renderer.createText(opt.label || '');\n this.renderer.appendChild(hiddenSpan, text);\n\n let width = hiddenSpan.offsetWidth || 0;\n width += 26;\n if (opt.icon) {\n width += 16;\n if (opt.label) width += 8;\n }\n if (width > this.largestButtonWidth) {\n this.largestButtonWidth = width;\n }\n this.renderer.removeChild(hiddenSpan, text);\n });\n\n this.renderer.removeChild(document.body, hiddenSpan);\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]=\"optionTooltipPosition\">\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, option.value)\" />\n <span\n class=\"cps-btn-toggle-content-option-content\"\n [ngStyle]=\"{\n 'min-width': largestButtonWidth ? largestButtonWidth + 'px' : 'none'\n }\">\n <cps-icon\n *ngIf=\"option.icon\"\n [ngClass]=\"{ 'me-2': !!option.label }\"\n [icon]=\"option.icon\">\n </cps-icon>\n <span *ngIf=\"option.label\">{{ option.label }}</span>\n </span>\n</ng-template>\n","import {\n Component,\n Input,\n OnChanges,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FilterMetadata } from 'primeng/api';\nimport { Table } from 'primeng/table';\nimport { TreeTable } from 'primeng/treetable';\nimport { CpsInputComponent } from '../../../../cps-input/cps-input.component';\nimport { CpsDatepickerComponent } from '../../../../cps-datepicker/cps-datepicker.component';\nimport {\n CpsButtonToggleComponent,\n CpsButtonToggleOption\n} from '../../../../cps-button-toggle/cps-button-toggle.component';\nimport { CpsAutocompleteComponent } from '../../../../cps-autocomplete/cps-autocomplete.component';\nimport {\n CpsColumnFilterCategoryOption,\n CpsColumnFilterType\n} from '../../../cps-column-filter-types';\n\n/**\n * TableColumnFilterConstraintComponent is an internal filtering constraint component in table and treetable.\n * @group Components\n */\n@Component({\n selector: 'table-column-filter-constraint',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsInputComponent,\n CpsDatepickerComponent,\n CpsButtonToggleComponent,\n CpsAutocompleteComponent\n ],\n templateUrl: './table-column-filter-constraint.component.html',\n styleUrls: ['./table-column-filter-constraint.component.scss']\n})\nexport class TableColumnFilterConstraintComponent implements OnChanges {\n /**\n * Type of filter constraint.\n * @group Props\n */\n @Input() type: CpsColumnFilterType = 'text';\n\n /**\n * Column name.\n * @group Props\n */\n @Input() field: string | undefined;\n\n /**\n * Constraint data.\n * @group Props\n */\n @Input() filterConstraint: FilterMetadata | undefined;\n\n /**\n * An array of category options.\n * @group Props\n */\n @Input() categoryOptions: CpsColumnFilterCategoryOption[] | string[] = [];\n\n /**\n * Determines whether to show category filter as button toggles.\n * @group Props\n */\n @Input() asButtonToggle = false;\n\n /**\n * Single selection for category filter.\n * @group Props\n */\n @Input() singleSelection = false;\n\n /**\n * Placeholder for input field.\n * @group Props\n */\n @Input() placeholder = '';\n\n /**\n * Determines whether the filter should have an apply button.\n * @group Props\n */\n @Input() hasApplyButton = true;\n\n @ViewChild('categoryAutocompleteComponent')\n categoryAutocompleteComponent?: CpsAutocompleteComponent;\n\n booleanOptions = [\n { label: 'True', value: 'true' },\n { label: 'False', value: 'false' }\n ] as CpsButtonToggleOption[];\n\n categories: CpsColumnFilterCategoryOption[] = [];\n\n _tableInstance: Table | TreeTable;\n\n get isCategoryDropdownOpened() {\n return this.categoryAutocompleteComponent?.isOpened || false;\n }\n\n constructor(@Optional() public dt: Table, @Optional() public tt: TreeTable) {\n this._tableInstance = dt || tt;\n }\n\n ngOnChanges(): void {\n this._updateCategories();\n }\n\n private _updateCategories() {\n if (this.type !== 'category') return;\n if (this.categoryOptions.length > 0) {\n if (typeof this.categoryOptions[0] === 'string') {\n this.categories = (this.categoryOptions as string[]).map((o) => ({\n label: o,\n value: o\n }));\n } else {\n this.categories = this\n .categoryOptions as CpsColumnFilterCategoryOption[];\n }\n } else {\n let cats = [];\n if (this._tableInstance instanceof Table) {\n cats =\n this._tableInstance.value?.map((v) => v[this.field as string]) || [];\n } else {\n const fillCats = (nodes: any[]) => {\n nodes?.forEach((v) => {\n cats.push(v.data[this.field as string]);\n fillCats(v.children);\n });\n };\n fillCats(this._tableInstance.value);\n }\n this.categories =\n Array.from(new Set(cats))?.map((c) => ({\n label: c,\n value: c\n })) || [];\n }\n }\n\n onValueChange(value: any) {\n (<any>this.filterConstraint).value = value;\n\n if (this._tableInstance.isFilterBlank(value) || !this.hasApplyButton) {\n this._tableInstance._filter();\n }\n }\n\n onEnterKeyDown(event: any) {\n this._tableInstance._filter();\n event.preventDefault();\n }\n}\n","<ng-container [ngSwitch]=\"type\">\n <cps-input\n *ngSwitchCase=\"'text'\"\n [placeholder]=\"placeholder\"\n [hideDetails]=\"true\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"text\"></cps-input>\n\n <cps-input\n *ngSwitchCase=\"'number'\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"number\"></cps-input>\n\n <div\n class=\"cps-table-col-filter-constraint-btn-toggles\"\n *ngSwitchCase=\"'boolean'\">\n <cps-button-toggle\n [options]=\"booleanOptions\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\">\n </cps-button-toggle>\n </div>\n\n <cps-datepicker\n *ngSwitchCase=\"'date'\"\n [openOnInputFocus]=\"true\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n [value]=\"filterConstraint?.value\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n (valueChanged)=\"onValueChange($event)\">\n </cps-datepicker>\n\n <ng-container *ngSwitchCase=\"'category'\">\n <cps-autocomplete\n #categoryAutocompleteComponent\n *ngIf=\"!asButtonToggle\"\n class=\"cps-table-col-filter-category-autocomplete\"\n [placeholder]=\"placeholder\"\n [options]=\"categories\"\n [hideDetails]=\"true\"\n [clearable]=\"true\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [returnObject]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-autocomplete>\n <div class=\"cps-table-col-filter-constraint-btn-toggles\">\n <cps-button-toggle\n *ngIf=\"asButtonToggle\"\n [options]=\"categories\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-button-toggle>\n </div>\n </ng-container>\n</ng-container>\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FilterMetadata, FilterOperator, SelectItem } from 'primeng/api';\nimport { Table } from 'primeng/table';\nimport { TreeTable } from 'primeng/treetable';\nimport {\n CpsColumnFilterCategoryOption,\n CpsColumnFilterMatchMode,\n CpsColumnFilterType\n} from '../../../cps-column-filter-types';\nimport { CpsButtonComponent } from '../../../../cps-button/cps-button.component';\nimport { CpsMenuComponent } from '../../../../cps-menu/cps-menu.component';\nimport { CpsIconComponent } from '../../../../cps-icon/cps-icon.component';\nimport { CpsSelectComponent } from '../../../../cps-select/cps-select.component';\nimport { TableColumnFilterConstraintComponent } from '../table-column-filter-constraint/table-column-filter-constraint.component';\n\n/**\n * TableColumnFilterComponent is an internal filter component in table and treetable.\n * @group Components\n */\n@Component({\n selector: 'table-column-filter',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsButtonComponent,\n CpsMenuComponent,\n CpsIconComponent,\n CpsSelectComponent,\n TableColumnFilterConstraintComponent\n ],\n templateUrl: './table-column-filter.component.html',\n styleUrls: ['./table-column-filter.component.scss']\n})\nexport class TableColumnFilterComponent implements OnInit, OnDestroy {\n /**\n * Name of the column to be filtered.\n * @group Props\n */\n @Input() field: string | undefined;\n\n /**\n * Type of filter in table, it can be of type \"number\", \"boolean\", \"text\", \"date\" or \"category\".\n * @group Props\n */\n @Input() type: CpsColumnFilterType = 'text';\n\n /**\n * Determines whether the filter menu should be persistent.\n * @group Props\n */\n @Input() persistent = false;\n\n /**\n * Determines whether the filter should have clear button.\n * @group Props\n */\n @Input() showClearButton = true;\n\n /**\n * Determines whether the filter should have apply button.\n * @group Props\n */\n @Input() showApplyButton = true;\n\n /**\n * Determines whether the filter should have close button.\n * @group Props\n */\n @Input() showCloseButton = false;\n\n /**\n * Determines whether the filter should have match modes.\n * @group Props\n */\n @Input() showMatchModes = true;\n\n /**\n * Match modes for filter.\n * @group Props\n */\n @Input() matchModes: CpsColumnFilterMatchMode[] = [];\n\n /**\n * Determines whether the filter should have operator.\n * @group Props\n */\n @Input() showOperator = true;\n\n /**\n * Maximum number of constraints.\n * @group Props\n */\n @Input() maxConstraints = 2;\n\n /**\n * Title of the filter.\n * @group Props\n */\n @Input() headerTitle = '';\n\n /**\n * Determines whether the filter should hide on clear.\n * @group Props\n */\n @Input() hideOnClear = false;\n\n /**\n * Options for category filter.\n * @group Props\n */\n @Input() categoryOptions: CpsColumnFilterCategoryOption[] | string[] = [];\n\n /**\n * Determines whether to show category filter as button toggles.\n * @group Props\n */\n @Input() asButtonToggle = false;\n\n /**\n * Single selection for category filter.\n * @group Props\n */\n @Input() singleSelection = false;\n\n /**\n * Placeholder for filter constraints.\n * @group Props\n */\n @Input() placeholder = '';\n\n @ViewChildren('constraintComponent')\n constraintCompList!: QueryList<TableColumnFilterConstraintComponent>;\n\n operator: string = FilterOperator.AND;\n\n operatorOptions = [\n { label: 'Match All', value: FilterOperator.AND, info: 'AND' },\n { label: 'Match Any', value: FilterOperator.OR, info: 'OR' }\n ];\n\n private matchModeLabels = {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Does not contain',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Does not equal',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after'\n } as { [key: string]: string };\n\n private filterMatchModeOptions = {\n text: [\n CpsColumnFilterMatchMode.STARTS_WITH,\n CpsColumnFilterMatchMode.CONTAINS,\n CpsColumnFilterMatchMode.NOT_CONTAINS,\n CpsColumnFilterMatchMode.ENDS_WITH,\n CpsColumnFilterMatchMode.EQUALS,\n CpsColumnFilterMatchMode.NOT_EQUALS\n ],\n number: [\n CpsColumnFilterMatchMode.EQUALS,\n CpsColumnFilterMatchMode.NOT_EQUALS,\n CpsColumnFilterMatchMode.LESS_THAN,\n CpsColumnFilterMatchMode.LESS_THAN_OR_EQUAL_TO,\n CpsColumnFilterMatchMode.GREATER_THAN,\n CpsColumnFilterMatchMode.GREATER_THAN_OR_EQUAL_TO\n ],\n date: [\n CpsColumnFilterMatchMode.DATE_IS,\n CpsColumnFilterMatchMode.DATE_IS_NOT,\n CpsColumnFilterMatchMode.DATE_BEFORE,\n CpsColumnFilterMatchMode.DATE_AFTER\n ]\n } as { [key: string]: CpsColumnFilterMatchMode[] };\n\n currentMatchModes: SelectItem[] | undefined;\n\n @ViewChild('columnFilterMenu')\n columnFilterMenu!: CpsMenuComponent;\n\n _tableInstance: Table | TreeTable;\n\n isFilterApplied = false;\n\n get isCategoryDropdownOpened() {\n if (this.type !== 'category') return false;\n return this.constraintCompList?.first?.isCategoryDropdownOpened || false;\n }\n\n constructor(\n public elementRef: ElementRef,\n @Optional() public dt: Table,\n @Optional() public tt: TreeTable\n ) {\n this._tableInstance = dt || tt;\n }\n\n ngOnInit() {\n if (this.matchModes.length > 0) {\n this.filterMatchModeOptions[this.type] = this.matchModes;\n }\n this._tableInstance?.onFilter?.subscribe((value) =>\n this._updateFilterApplied(value)\n );\n if (!this._tableInstance.filters[<string>this.field]) {\n this._initFieldFilterConstraint();\n }\n\n if (this.maxConstraints > 1 && this.type !== 'category') {\n this.showApplyButton = true;\n }\n\n if (this.type === 'boolean') {\n this.showApplyButton = false;\n }\n\n this.currentMatchModes = this.filterMatchModeOptions[this.type]?.map(\n (key: string) => {\n return { label: this.matchModeLabels[key], value: key };\n }\n );\n }\n\n private _updateFilterApplied(value: any) {\n const fieldFilter = value.filters[<string>this.field];\n if (fieldFilter) {\n if (Array.isArray(fieldFilter)) {\n this.isFilterApplied = (<FilterMetadata[]>fieldFilter).some(\n (meta) => !this._tableInstance.isFilterBlank(meta.value)\n );\n } else {\n this.isFilterApplied = !this._tableInstance.isFilterBlank(\n fieldFilter.value\n );\n }\n } else {\n this.isFilterApplied = false;\n }\n }\n\n private _initFieldFilterConstraint() {\n const defaultMatchMode = this.getDefaultMatchMode();\n if (this._tableInstance instanceof Table) {\n this._tableInstance.filters[<string>this.field] = [\n {\n value: null,\n matchMode: defaultMatchMode,\n operator: this.operator\n }\n ];\n } else {\n this._tableInstance.filters[<string>this.field] = {\n value: null,\n matchMode: defaultMatchMode\n };\n }\n }\n\n onCloseClick() {\n this.hide();\n }\n\n onMenuMatchModeChange(value: any, filterMeta: FilterMetadata) {\n filterMeta.matchMode = value;\n\n if (!this.showApplyButton) {\n this._tableInstance._filter();\n }\n }\n\n addConstraint() {\n (<FilterMetadata[]>this._tableInstance.filters[<string>this.field]).push({\n value: null,\n matchMode: this.getDefaultMatchMode(),\n operator: this.getDefaultOperator()\n });\n }\n\n removeConstraint(filterMeta: FilterMetadata) {\n this._tableInstance.filters[<string>this.field] = (<FilterMetadata[]>(\n this._tableInstance.filters[<string>this.field]\n )).filter((meta) => meta !== filterMeta);\n this._tableInstance._filter();\n }\n\n onOperatorChange(value: any) {\n (<FilterMetadata[]>this._tableInstance.filters[<string>this.field]).forEach(\n (filterMeta) => {\n filterMeta.operator = value;\n this.operator = value;\n }\n );\n\n if (!this.showApplyButton) {\n this._tableInstance._filter();\n }\n }\n\n getDefaultMatchMode(): string {\n const getMatchMode = (val: CpsColumnFilterMatchMode) => {\n if (this.type in this.filterMatchModeOptions) {\n return this.filterMatchModeOptions[this.type].includes(val)\n ? val\n : this.filterMatchModeOptions[this.type][0];\n } else {\n return val;\n }\n };\n\n switch (this.type) {\n case 'text':\n return getMatchMode(CpsColumnFilterMatchMode.STARTS_WITH);\n case 'number':\n return getMatchMode(CpsColumnFilterMatchMode.EQUALS);\n case 'date':\n return getMatchMode(CpsColumnFilterMatchMode.DATE_IS);\n case 'category':\n return this.singleSelection\n ? CpsColumnFilterMatchMode.IS\n : CpsColumnFilterMatchMode.IN;\n default:\n return getMatchMode(CpsColumnFilterMatchMode.CONTAINS);\n }\n }\n\n getDefaultOperator(): string | undefined {\n return this._tableInstance.filters\n ? (<FilterMetadata[]>(\n this._tableInstance.filters[<string>(<string>this.field)]\n ))[0].operator\n : this.operator;\n }\n\n get fieldConstraints(): FilterMetadata[] | undefined | null {\n if (this._tableInstance instanceof Table) {\n return this._tableInstance.filters\n ? <FilterMetadata[]>this._tableInstance.filters[<string>this.field]\n : null;\n } else {\n return this._tableInstance.filters\n ? <FilterMetadata[]>[this._tableInstance.filters[<string>this.field]]\n : null;\n }\n }\n\n get showRemoveIcon(): boolean {\n return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;\n }\n\n get isShowOperator(): boolean {\n return (\n this.showOperator &&\n this.maxConstraints > 1 &&\n !['boolean', 'category'].includes(this.type)\n );\n }\n\n get isShowAddConstraint(): boolean | undefined | null {\n return (\n !['boolean', 'category'].includes(this.type) &&\n this.fieldConstraints &&\n this.fieldConstraints.length < this.maxConstraints\n );\n }\n\n hide() {\n this.columnFilterMenu.hide();\n }\n\n clearFilter() {\n this._initFieldFilterConstraint();\n this._tableInstance._filter();\n if (this.hideOnClear) this.hide();\n }\n\n clearFilterValues() {\n this._initFieldFilterConstraint();\n this.isFilterApplied = false;\n }\n\n applyFilter() {\n this._tableInstance._filter();\n this.hide();\n }\n\n onMenuShown() {\n const parent = this.elementRef?.nativeElement?.parentElement;\n const className = 'cps-table-col-filter-menu-open';\n parent.classList.add(className);\n }\n\n onBeforeMenuHidden() {\n if (!this.isFilterApplied) this._initFieldFilterConstraint();\n }\n\n onMenuHidden() {\n const parent = this.elementRef?.nativeElement?.parentElement;\n const className = 'cps-table-col-filter-menu-open';\n parent.classList.remove(className);\n }\n\n @HostListener('click', ['$event'])\n onClick(event: any) {\n event.stopPropagation();\n }\n\n private _updateSortIconColor(color: string) {\n const unsortedUp =\n this.elementRef?.nativeElement?.parentElement?.querySelector(\n '.sort-unsorted-arrow-up'\n );\n if (unsortedUp) {\n unsortedUp.style.borderBottomColor = color;\n }\n const unsortedDown =\n this.elementRef?.nativeElement?.parentElement?.querySelector(\n '.sort-unsorted-arrow-down'\n );\n if (unsortedDown) {\n unsortedDown.style.borderTopColor = color;\n }\n }\n\n @HostListener('mouseenter') onMouseOver() {\n this._updateSortIconColor('var(--cps-color-line-dark)');\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this._updateSortIconColor('');\n }\n\n ngOnDestroy(): void {\n this._tableInstance?.onFilter?.unsubscribe();\n }\n}\n","<div class=\"cps-table-col-filter\">\n <cps-menu\n #columnFilterMenu\n [withArrow]=\"false\"\n hideTransitionOptions=\"0s linear\"\n [persistent]=\"persistent || (showApplyButton && isCategoryDropdownOpened)\"\n (menuShown)=\"onMenuShown()\"\n (menuHidden)=\"onMenuHidden()\"\n (beforeMenuHidden)=\"onBeforeMenuHidden()\">\n <div class=\"cps-table-col-filter-menu-content\">\n <div\n class=\"cps-table-col-filter-menu-content-header\"\n *ngIf=\"showCloseButton || headerTitle\">\n <span class=\"cps-table-col-filter-menu-content-header-title\">\n {{ headerTitle }}\n </span>\n <cps-icon\n *ngIf=\"showCloseButton\"\n icon=\"close-x\"\n (click)=\"onCloseClick()\"></cps-icon>\n </div>\n <div\n class=\"cps-table-col-filter-menu-content-operator\"\n *ngIf=\"isShowOperator\">\n <cps-select\n [hideDetails]=\"true\"\n [disabled]=\"!fieldConstraints || fieldConstraints.length < 2\"\n [returnObject]=\"false\"\n [options]=\"operatorOptions\"\n [ngModel]=\"operator\"\n (valueChanged)=\"onOperatorChange($event)\"></cps-select>\n </div>\n <div class=\"cps-table-col-filter-menu-content-constraints\">\n <div\n *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\"\n class=\"cps-table-col-filter-menu-content-constraint\">\n <cps-select\n *ngIf=\"showMatchModes && currentMatchModes\"\n class=\"cps-table-col-filter-match-mode-select\"\n [hideDetails]=\"true\"\n [returnObject]=\"false\"\n [options]=\"currentMatchModes\"\n [ngModel]=\"fieldConstraint.matchMode\"\n (valueChanged)=\"\n onMenuMatchModeChange($event, fieldConstraint)\n \"></cps-select>\n <table-column-filter-constraint\n #constraintComponent\n [type]=\"type\"\n [field]=\"field\"\n [asButtonToggle]=\"asButtonToggle\"\n [singleSelection]=\"singleSelection\"\n [categoryOptions]=\"categoryOptions\"\n [filterConstraint]=\"fieldConstraint\"\n [hasApplyButton]=\"showApplyButton\"\n [placeholder]=\"placeholder\">\n </table-column-filter-constraint>\n <div\n class=\"cps-table-col-filter-remove-rule-btn\"\n *ngIf=\"showRemoveIcon\">\n <cps-button\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"prepared\"\n icon=\"delete\"\n (clicked)=\"removeConstraint(fieldConstraint)\"\n label=\"Remove condition\">\n </cps-button>\n </div>\n </div>\n </div>\n <div\n class=\"cps-table-col-filter-add-rule-btn\"\n *ngIf=\"isShowAddConstraint\">\n <cps-button\n label=\"Add condition\"\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"surprise\"\n icon=\"add\"\n (clicked)=\"addConstraint()\">\n </cps-button>\n </div>\n <div class=\"cps-table-col-filter-buttonbar\">\n <cps-button\n *ngIf=\"showClearButton\"\n (clicked)=\"clearFilter()\"\n type=\"borderless\"\n color=\"prepared\"\n size=\"small\"\n label=\"Clear\"></cps-button>\n <cps-button\n *ngIf=\"showApplyButton\"\n (clicked)=\"applyFilter()\"\n color=\"prepared\"\n size=\"small\"\n label=\"Apply\"></cps-button>\n </div>\n </div>\n </cps-menu>\n <cps-icon\n [icon]=\"isFilterApplied ? 'filter-funnel-filled' : 'filter-funnel'\"\n size=\"13\"\n (click)=\"columnFilterMenu.toggle($event)\"\n class=\"cps-table-col-filter-menu-button\"\n [ngClass]=\"{\n 'cps-table-col-filter-menu-button-active': isFilterApplied\n }\"\n >>\n </cps-icon>\n</div>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n ViewContainerRef\n} from '@angular/core';\n\nimport {\n CpsColumnFilterCategoryOption,\n CpsColumnFilterMatchMode,\n CpsColumnFilterType\n} from '../cps-column-filter-types';\nimport { TableColumnFilterComponent } from '../components/internal/table-column-filter/table-column-filter.component';\n\n/**\n * CpsTableColumnFilterDirective is a filtering directive used to filter single or multiple columns in table.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTColFilter]',\n exportAs: 'cpsTColFilter'\n})\nexport class CpsTableColumnFilterDirective\n implements OnInit, OnChanges, OnDestroy\n{\n /**\n * Name of the column to be filtered.\n * @group Props\n */\n @Input('cpsTColFilter') field: string | undefined;\n\n /**\n * Type of a filter in table, it can be of type \"number\", \"boolean\", \"text\", \"date\" or \"category\".\n * @group Props\n */\n @Input() filterType: CpsColumnFilterType = 'text';\n\n /**\n * Determines whether the filter menu should be persistent.\n * @group Props\n */\n @Input() filterPersistent = false;\n\n /**\n * Determines whether the filter should have clear button.\n * @group Props\n */\n @Input() filterShowClearButton = true;\n\n /**\n * Determines whether the filter should have apply button.\n * @group Props\n */\n @Input() filterShowApplyButton = true;\n\n /**\n * Determines whether the filter should have close button.\n * @group Props\n */\n @Input() filterShowCloseButton = false;\n\n /**\n * Determines whether the filter should have match modes.\n * @group Props\n */\n @Input() filterShowMatchModes = true;\n\n /**\n * Match modes for filter.\n * @group Props\n */\n @Input() filterMatchModes: CpsColumnFilterMatchMode[] = [];\n\n /**\n * Determines whether the filter should have operator.\n * @group Props\n */\n @Input() filterShowOperator = true;\n\n /**\n * Maximum number of constraints.\n * @group Props\n */\n @Input() filterMaxConstraints = 2;\n\n /**\n * Title of the filter.\n * @group Props\n */\n @Input() filterHeaderTitle = '';\n\n /**\n * Determines whether the filter should hide on clear.\n * @group Props\n */\n @Input() filterHideOnClear = false;\n\n /**\n * Options for category filter.\n * @group Props\n */\n @Input() filterCategoryOptions: CpsColumnFilterCategoryOption[] | string[] =\n [];\n\n /**\n * Determines whether to show category filter as button toggles.\n * @group Props\n */\n @Input() filterAsButtonToggle = false;\n\n /**\n * Single selection for category filter.\n * @group Props\n */\n @Input() filterSingleSelection = false;\n\n /**\n * Placeholder for filter constraints.\n * @group Props\n */\n @Input() filterPlaceholder = '';\n\n filterCompRef: ComponentRef<TableColumnFilterComponent>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.filterCompRef = this.viewContainerRef.createComponent(\n TableColumnFilterComponent\n );\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.firstChild.after(\n this.filterCompRef.location.nativeElement\n );\n }\n\n ngOnChanges(): void {\n this.filterCompRef.setInput('field', this.field);\n this.filterCompRef.setInput('type', this.filterType);\n this.filterCompRef.setInput('persistent', this.filterPersistent);\n this.filterCompRef.setInput('showClearButton', this.filterShowClearButton);\n this.filterCompRef.setInput('showApplyButton', this.filterShowApplyButton);\n this.filterCompRef.setInput('showCloseButton', this.filterShowCloseButton);\n this.filterCompRef.setInput('showMatchModes', this.filterShowMatchModes);\n this.filterCompRef.setInput('matchModes', this.filterMatchModes);\n this.filterCompRef.setInput('showOperator', this.filterShowOperator);\n this.filterCompRef.setInput('maxConstraints', this.filterMaxConstraints);\n this.filterCompRef.setInput('headerTitle', this.filterHeaderTitle);\n this.filterCompRef.setInput('hideOnClear', this.filterHideOnClear);\n this.filterCompRef.setInput('categoryOptions', this.filterCategoryOptions);\n this.filterCompRef.setInput('asButtonToggle', this.filterAsButtonToggle);\n this.filterCompRef.setInput('singleSelection', this.filterSingleSelection);\n this.filterCompRef.setInput(\n 'placeholder',\n this.filterPlaceholder || this._getDefaultPlaceholder()\n );\n }\n\n private _getDefaultPlaceholder() {\n switch (this.filterType) {\n case 'text':\n return 'Please enter';\n case 'number':\n return 'Enter value';\n case 'date':\n return 'Select date';\n case 'category':\n return 'Please select';\n default:\n return '';\n }\n }\n\n hideFilter() {\n this.filterCompRef?.instance?.hide();\n }\n\n clearFilter() {\n this.filterCompRef?.instance?.clearFilter();\n }\n\n clearFilterValues() {\n this.filterCompRef?.instance?.clearFilterValues();\n }\n\n ngOnDestroy(): void {\n this.filterCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TableHeaderCheckbox } from 'primeng/table';\n\n/**\n * CpsTableHeaderSelectableDirective is a directive used to apply a checkbox to a header cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTHdrSelectable]'\n})\nexport class CpsTableHeaderSelectableDirective implements OnInit, OnDestroy {\n checkboxCompRef: ComponentRef<TableHeaderCheckbox>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.checkboxCompRef =\n this.viewContainerRef.createComponent(TableHeaderCheckbox);\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.appendChild(\n this.checkboxCompRef.location.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.checkboxCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TableCheckbox } from 'primeng/table';\n\n/**\n * CpsTableRowSelectableDirective is a directive used to apply a checkbox to a body cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTRowSelectable]'\n})\nexport class CpsTableRowSelectableDirective implements OnInit, OnDestroy {\n /**\n * Cell value.\n * @group Props\n */\n @Input('cpsTRowSelectable') value: any;\n\n checkboxCompRef: ComponentRef<TableCheckbox>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.checkboxCompRef = this.viewContainerRef.createComponent(TableCheckbox);\n }\n\n ngOnInit(): void {\n this.checkboxCompRef.setInput('value', this.value);\n\n this.elementRef.nativeElement.appendChild(\n this.checkboxCompRef.location.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.checkboxCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TTSortableColumn, TreeTable } from 'primeng/treetable';\nimport { CpsSortIconComponent } from '../../cps-table/components/internal/cps-sort-icon/cps-sort-icon.component';\n\n/**\n * CpsTreeTableColumnSortableDirective is a sorting directive used to sort single or multiple columns in treetable.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTColSortable]'\n})\nexport class CpsTreeTableColumnSortableDirective\n extends TTSortableColumn\n implements OnInit, OnDestroy\n{\n /**\n * Name of the column to be sorted.\n * @group Props\n */\n @Input('cpsTTColSortable') override field = '';\n\n sortIconRef: ComponentRef<CpsSortIconComponent>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n public override tt: TreeTable\n ) {\n super(tt);\n this.sortIconRef =\n this.viewContainerRef.createComponent(CpsSortIconComponent);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.sortIconRef.setInput('field', this.field);\n this.elementRef.nativeElement.appendChild(\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 { Directive, Host, Self, Optional } from '@angular/core';\nimport { TreeTable } from 'primeng/treetable';\nimport { ObjectUtils } from 'primeng/utils';\n\n@Directive({\n standalone: true,\n selector: '[ttWithUnsort]'\n})\nexport class TreeTableUnsortDirective {\n constructor(@Host() @Self() @Optional() public pTreeTable: TreeTable) {\n pTreeTable.sort = (event: any) => {\n if (pTreeTable.sortMode === 'single') {\n if (\n pTreeTable.sortField === event.field &&\n pTreeTable.sortOrder === -1\n ) {\n event.field = '_defaultSortOrder';\n }\n\n pTreeTable._sortOrder =\n pTreeTable.sortField === event.field\n ? pTreeTable.sortOrder * -1\n : pTreeTable.defaultSortOrder;\n pTreeTable._sortField = event.field;\n pTreeTable.sortSingle();\n }\n if (pTreeTable.sortMode === 'multiple') {\n let resetIndex = false;\n const sortMeta = pTreeTable.getSortMeta(event.field);\n\n if (sortMeta) {\n for (let i = 0; i < pTreeTable._multiSortMeta.length; i++) {\n if (pTreeTable._multiSortMeta[i].field === sortMeta.field) {\n pTreeTable._multiSortMeta.splice(i, 1);\n }\n }\n if (sortMeta.order === 1) {\n sortMeta.order = sortMeta.order * -1;\n pTreeTable.multiSortMeta.push(sortMeta);\n }\n if (pTreeTable._multiSortMeta?.length === 0) {\n pTreeTable.multiSortMeta.push({\n field: '_defaultSortOrder',\n order: pTreeTable.defaultSortOrder\n });\n resetIndex = true;\n }\n } else {\n if (!pTreeTable.multiSortMeta) {\n pTreeTable._multiSortMeta = [];\n }\n pTreeTable.multiSortMeta.push({\n field: event.field,\n order: pTreeTable.defaultSortOrder\n });\n }\n\n pTreeTable.sortMultiple();\n if (resetIndex) pTreeTable._multiSortMeta = [];\n }\n };\n\n pTreeTable.sortNodes = (nodes) => {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n this._syncNodesParams(pTreeTable.filteredNodes, nodes);\n\n if (pTreeTable.customSort) {\n pTreeTable.sortFunction.emit({\n data: nodes,\n mode: pTreeTable.sortMode,\n field: pTreeTable.sortField,\n order: pTreeTable.sortOrder\n });\n } else {\n const isUnsort = pTreeTable.sortField === '_defaultSortOrder';\n nodes.sort((node1: any, node2: any) => {\n const value1 = isUnsort\n ? node1._defaultSortOrder\n : ObjectUtils.resolveFieldData(node1.data, pTreeTable.sortField);\n const value2 = isUnsort\n ? node2._defaultSortOrder\n : ObjectUtils.resolveFieldData(node2.data, pTreeTable.sortField);\n let result = null;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n else if (typeof value1 === 'string' && typeof value2 === 'string')\n result = value1.localeCompare(value2, undefined, { numeric: true });\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n\n return pTreeTable.sortOrder * result;\n });\n }\n\n for (const node of nodes) {\n pTreeTable.sortNodes(node.children);\n }\n };\n\n pTreeTable.sortMultipleNodes = (nodes) => {\n if (!nodes || nodes.length === 0) {\n return;\n }\n\n this._syncNodesParams(pTreeTable.filteredNodes, nodes);\n\n if (pTreeTable.customSort) {\n pTreeTable.sortFunction.emit({\n data: pTreeTable.value,\n mode: pTreeTable.sortMode,\n multiSortMeta: pTreeTable.multiSortMeta\n });\n } else {\n nodes.sort((node1: any, node2: any) => {\n return pTreeTable.multisortField(\n node1,\n node2,\n pTreeTable.multiSortMeta,\n 0\n );\n });\n }\n\n for (const node of nodes) {\n pTreeTable.sortMultipleNodes(node.children);\n }\n };\n\n pTreeTable.multisortField = (node1, node2, multiSortMeta, index) => {\n if (\n ObjectUtils.isEmpty(pTreeTable.multiSortMeta) ||\n ObjectUtils.isEmpty(multiSortMeta[index])\n ) {\n return 0;\n }\n const isUnsort = multiSortMeta[index].field === '_defaultSortOrder';\n const value1 = isUnsort\n ? node1._defaultSortOrder\n : ObjectUtils.resolveFieldData(node1.data, multiSortMeta[index].field);\n const value2 = isUnsort\n ? node2._defaultSortOrder\n : ObjectUtils.resolveFieldData(node2.data, multiSortMeta[index].field);\n let result = 0;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n if (typeof value1 === 'string' || value1 instanceof String) {\n if (value1.localeCompare && value1 !== value2) {\n return (\n multiSortMeta[index].order *\n value1.localeCompare(value2, undefined, { numeric: true })\n );\n }\n } else {\n result = value1 < value2 ? -1 : 1;\n }\n\n if (value1 === value2) {\n return multiSortMeta.length - 1 > index\n ? pTreeTable.multisortField(node1, node2, multiSortMeta, index + 1)\n : 0;\n }\n\n return multiSortMeta[index].order * result;\n };\n\n pTreeTable._filter = () => {\n if (pTreeTable.lazy) {\n pTreeTable.onLazyLoad.emit(pTreeTable.createLazyLoadMetadata());\n } else {\n if (!pTreeTable.value) {\n return;\n }\n\n if (!pTreeTable.hasFilter()) {\n (pTreeTable.filteredNodes as any) = null;\n if (pTreeTable.paginator) {\n pTreeTable.totalRecords = pTreeTable.value\n ? pTreeTable.value.length\n : 0;\n }\n } else {\n let globalFilterFieldsArray: any[] | undefined;\n if (pTreeTable.filters.global) {\n if (!pTreeTable.columns && !pTreeTable.globalFilterFields)\n throw new Error(\n 'Global filtering requires dynamic columns or globalFilterFields to be defined.'\n );\n else\n globalFilterFieldsArray =\n pTreeTable.globalFilterFields || pTreeTable.columns;\n }\n\n this._syncNodesParams(pTreeTable.filteredNodes, pTreeTable.value);\n\n pTreeTable.filteredNodes = [];\n const isStrictMode = pTreeTable.filterMode === 'strict';\n let isValueChanged = false;\n\n for (const [idx, node] of pTreeTable.value.entries()) {\n let copyNode = { ...node };\n let localMatch = true;\n let globalMatch = false;\n let paramsWithoutNode;\n\n for (const prop in pTreeTable.filters) {\n if (\n // eslint-disable-next-line no-prototype-builtins\n pTreeTable.filters.hasOwnProperty(prop) &&\n prop !== 'global'\n ) {\n const filterMeta = pTreeTable.filters[prop];\n const filterField = prop;\n const filterValue = filterMeta?.value;\n const filterMatchMode = filterMeta?.matchMode || 'startsWith';\n const filterConstraint =\n pTreeTable.filterService.filters[\n filterMatchMode as keyof typeof pTreeTable.filterService.filters\n ];\n paramsWithoutNode = {\n filterField,\n filterValue,\n filterConstraint,\n isStrictMode\n };\n if (\n (isStrictMode &&\n !(\n pTreeTable.findFilteredNodes(\n copyNode,\n paramsWithoutNode\n ) ||\n pTreeTable.isFilterMatched(copyNode, paramsWithoutNode)\n )) ||\n (!isStrictMode &&\n !(\n pTreeTable.isFilterMatched(copyNode, paramsWithoutNode) ||\n pTreeTable.findFilteredNodes(copyNode, paramsWithoutNode)\n ))\n ) {\n localMatch = false;\n }\n\n if (!localMatch) {\n break;\n }\n }\n }\n\n if (\n pTreeTable.filters.global &&\n !globalMatch &&\n globalFilterFieldsArray\n ) {\n for (let j = 0; j < globalFilterFieldsArray.length; j++) {\n const copyNodeForGlobal = { ...copyNode };\n const filterField =\n globalFilterFieldsArray[j].field ||\n globalFilterFieldsArray[j];\n const filterValue = pTreeTable.filters.global.value;\n const filterConstraint =\n pTreeTable.filterService.filters[\n pTreeTable.filters.global\n .matchMode as keyof typeof pTreeTable.filterService.filters\n ];\n paramsWithoutNode = {\n filterField,\n filterValue,\n filterConstraint,\n isStrictMode\n };\n\n if (\n (isStrictMode &&\n (pTreeTable.findFilteredNodes(\n copyNodeForGlobal,\n paramsWithoutNode\n ) ||\n pTreeTable.isFilterMatched(\n copyNodeForGlobal,\n paramsWithoutNode\n ))) ||\n (!isStrictMode &&\n (pTreeTable.isFilterMatched(\n copyNodeForGlobal,\n paramsWithoutNode\n ) ||\n pTreeTable.findFilteredNodes(\n copyNodeForGlobal,\n paramsWithoutNode\n )))\n ) {\n globalMatch = true;\n copyNode = copyNodeForGlobal;\n }\n }\n }\n\n let matches = localMatch;\n if (pTreeTable.filters.global) {\n matches = localMatch && globalMatch;\n }\n\n if (matches) {\n copyNode._idx = idx;\n pTreeTable.filteredNodes.push(copyNode);\n }\n\n isValueChanged =\n isValueChanged ||\n !localMatch ||\n globalMatch ||\n (localMatch && pTreeTable.filteredNodes.length > 0) ||\n (!globalMatch && pTreeTable.filteredNodes.length === 0);\n }\n\n if (!isValueChanged) {\n (pTreeTable.filteredNodes as any) = null;\n }\n\n if (pTreeTable.paginator) {\n pTreeTable.totalRecords = pTreeTable.filteredNodes\n ? pTreeTable.filteredNodes.length\n : pTreeTable.value\n ? pTreeTable.value.length\n : 0;\n }\n }\n }\n\n pTreeTable.first = 0;\n\n const filteredValue = pTreeTable.filteredNodes || pTreeTable.value;\n\n pTreeTable.onFilter.emit({\n filters: pTreeTable.filters,\n filteredValue\n });\n\n pTreeTable.tableService.onUIUpdate(filteredValue);\n pTreeTable.updateSerializedValue();\n\n if (pTreeTable.scrollable) {\n pTreeTable.resetScrollTop();\n }\n };\n\n pTreeTable.findFilteredNodes = (node, paramsWithoutNode): any => {\n if (node) {\n let matched = false;\n if (node.children) {\n const childNodes = [...node.children];\n node.children = [];\n for (const [idx, childNode] of childNodes.entries()) {\n const copyChildNode = { ...childNode };\n if (pTreeTable.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n copyChildNode._idx = idx;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n return true;\n }\n }\n };\n }\n\n private _syncNodesParams(from: any[] | undefined, to: any[] | undefined) {\n if (!from || !to) return;\n\n from.forEach((source) => {\n const idx = source._idx;\n if (typeof idx === 'number') {\n const target = to[idx];\n delete source._idx;\n if (target) {\n target.expanded = source.expanded;\n target.partialSelected = source.partialSelected;\n this._syncNodesParams(source.children, target.children);\n }\n }\n });\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TTHeaderCheckbox } from 'primeng/treetable';\n\n/**\n * CpsTreeTableHeaderSelectableDirective is a directive used to apply a checkbox to a header cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTHdrSelectable]'\n})\nexport class CpsTreeTableHeaderSelectableDirective\n implements OnInit, OnDestroy\n{\n checkboxCompRef: ComponentRef<TTHeaderCheckbox>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.checkboxCompRef =\n this.viewContainerRef.createComponent(TTHeaderCheckbox);\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.classList.add(\n 'cps-treetable-selectable-cell'\n );\n this.elementRef.nativeElement.appendChild(\n this.checkboxCompRef.location.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.checkboxCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TTCheckbox } from 'primeng/treetable';\n\n/**\n * CpsTreeTableRowSelectableDirective is a directive used to apply a checkbox to a body cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTRowSelectable]'\n})\nexport class CpsTreeTableRowSelectableDirective implements OnInit, OnDestroy {\n /**\n * Cell value.\n * @group Props\n */\n @Input('cpsTTRowSelectable') value: any;\n\n checkboxCompRef: ComponentRef<TTCheckbox>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.checkboxCompRef = this.viewContainerRef.createComponent(TTCheckbox);\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.classList.add(\n 'cps-treetable-selectable-cell'\n );\n this.checkboxCompRef.setInput('value', this.value);\n\n this.elementRef.nativeElement.appendChild(\n this.checkboxCompRef.location.nativeElement\n );\n }\n\n ngOnDestroy(): void {\n this.checkboxCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { TreeTableToggler } from 'primeng/treetable';\n\n/**\n * CpsTreetableRowTogglerDirective is a directive used to apply a chevron toggler icon to a body cell.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTRowToggler]'\n})\nexport class CpsTreetableRowTogglerDirective implements OnInit, OnDestroy {\n /**\n * Cell value.\n * @group Props\n */\n @Input('cpsTTRowToggler') rowNode: any;\n\n togglerCompRef: ComponentRef<TreeTableToggler>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.togglerCompRef =\n this.viewContainerRef.createComponent(TreeTableToggler);\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.classList.add(\n 'cps-treetable-row-toggler-cell'\n );\n this.togglerCompRef.setInput('rowNode', this.rowNode);\n\n const spanElement = document.createElement('span');\n spanElement.style.display = 'flex';\n\n while (this.elementRef.nativeElement.firstChild) {\n spanElement.appendChild(this.elementRef.nativeElement.firstChild);\n }\n this.elementRef.nativeElement.appendChild(spanElement);\n\n spanElement.prepend(this.togglerCompRef.location.nativeElement);\n }\n\n ngOnDestroy(): void {\n this.togglerCompRef.destroy();\n this.viewContainerRef.clear();\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n RendererStyleFlags2,\n SimpleChanges,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n TreeTable,\n TreeTableService,\n TreeTableModule\n} from 'primeng/treetable';\nimport { DomHandler } from 'primeng/dom';\nimport { AngleDoubleLeftIcon } from 'primeng/icons/angledoubleleft';\nimport { AngleLeftIcon } from 'primeng/icons/angleleft';\nimport { AngleRightIcon } from 'primeng/icons/angleright';\nimport { AngleDoubleRightIcon } from 'primeng/icons/angledoubleright';\nimport { SortEvent } from 'primeng/api';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { CpsInputComponent } from '../cps-input/cps-input.component';\nimport { CpsButtonComponent } from '../cps-button/cps-button.component';\nimport { CpsMenuComponent } from '../cps-menu/cps-menu.component';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsSelectComponent } from '../cps-select/cps-select.component';\nimport { CpsLoaderComponent } from '../cps-loader/cps-loader.component';\nimport { CpsTreeTableColumnSortableDirective } from './directives/cps-tree-table-column-sortable.directive';\nimport { TreeTableUnsortDirective } from './directives/internal/tree-table-unsort.directive';\nimport { TableRowMenuComponent } from '../cps-table/components/internal/table-row-menu/table-row-menu.component';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { CpsTreeTableHeaderSelectableDirective } from './directives/cps-tree-table-header-selectable.directive';\nimport { CpsTreeTableRowSelectableDirective } from './directives/cps-tree-table-row-selectable.directive';\nimport { CpsTreetableRowTogglerDirective } from './directives/cps-tree-table-row-toggler.directive';\nimport { Subscription, fromEvent } from 'rxjs';\n\nexport function treeTableFactory(tableComponent: CpsTreeTableComponent) {\n return tableComponent.primengTreeTable;\n}\n\nexport type CpsTreeTableSize = 'small' | 'normal' | 'large';\nexport type CpsTreeTableToolbarSize = 'small' | 'normal';\nexport type CpsTreeTableSortMode = 'single' | 'multiple';\n\n/**\n * CpsTreeTableComponent is used to display hierarchical data in tabular format.\n * @group Components\n */\n@Component({\n selector: 'cps-tree-table',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n CommonModule,\n TreeTableModule,\n CpsInputComponent,\n CpsButtonComponent,\n CpsMenuComponent,\n CpsIconComponent,\n CpsSelectComponent,\n CpsLoaderComponent,\n AngleDoubleLeftIcon,\n AngleLeftIcon,\n AngleRightIcon,\n AngleDoubleRightIcon,\n CpsTreeTableColumnSortableDirective,\n CpsTreeTableHeaderSelectableDirective,\n CpsTreeTableRowSelectableDirective,\n CpsTreetableRowTogglerDirective,\n TreeTableUnsortDirective,\n TableRowMenuComponent\n ],\n templateUrl: './cps-tree-table.component.html',\n styleUrls: ['./cps-tree-table.component.scss'],\n providers: [\n TreeTableService,\n {\n provide: TreeTable,\n useFactory: treeTableFactory,\n // eslint-disable-next-line no-use-before-define\n deps: [CpsTreeTableComponent]\n }\n ]\n})\nexport class CpsTreeTableComponent\n implements OnInit, AfterViewInit, OnDestroy, AfterViewChecked, OnChanges\n{\n /**\n * An array of objects to represent dynamic columns.\n * @group Props\n */\n @Input() columns: { [key: string]: any }[] = [];\n\n /**\n * A key used to retrieve the header from columns.\n * @group Props\n */\n @Input() colHeaderName = 'header';\n\n /**\n * A key used to retrieve the field from columns.\n * @group Props\n */\n @Input() colFieldName = 'field';\n\n /**\n * Treetable min width of type number denoting pixels or string.\n * @group Props\n */\n @Input() minWidth: number | string = '';\n\n /**\n * Determines whether minWidth prop is used for treetable body only, excluding toolbar and paginator.\n * @group Props\n */\n @Input() minWidthForBodyOnly = true;\n\n /**\n * Determines whether the cell widths scale according to their content or not.\n * @group Props\n */\n @Input() autoLayout = true;\n\n /**\n * Determines whether the treetable should have alternating stripes.\n * @group Props\n */\n @Input() striped = true;\n\n /**\n * Determines whether the treetable should have borders.\n * @group Props\n */\n @Input() bordered = true;\n\n /**\n * Size of treetable cells, it can be \"small\", \"normal\" or \"large\".\n * @group Props\n */\n @Input() size: CpsTreeTableSize = 'normal';\n\n /**\n * Determines whether the treetable should have row selection.\n * @group Props\n */\n @Input() selectable = false;\n\n /**\n * Determines whether the treetable should have rows highlighting on hover.\n * @group Props\n */\n @Input() rowHover = true;\n\n /**\n * Determines whether the treetable should show row menus.\n * @group Props\n */\n @Input() showRowMenu = false;\n\n /**\n * Determines whether the 'Remove' button should be displayed in the row menu.\n * Note: This setting only takes effect if 'showRowMenu' is true.\n * @group Props\n */\n @Input() showRowRemoveButton = true;\n\n /**\n * Determines whether the 'Edit' button should be displayed in the row menu.\n * Note: This setting only takes effect if 'showRowMenu' is true.\n * @group Props\n */\n @Input() showRowEditButton = true;\n\n /**\n * When enabled, a loader component is displayed.\n * @group Props\n */\n @Input() loading = false;\n\n /**\n * Inline style of the treetable.\n * @group Props\n */\n @Input() tableStyle = undefined;\n\n /**\n * Style class of the treetable.\n * @group Props\n */\n @Input() tableStyleClass = '';\n\n /**\n * Makes all columns sortable if columns prop is provided.\n * @group Props\n */\n @Input() sortable = false;\n\n /**\n * Determines whether sorting works on single column or on multiple columns.\n * @group Props\n */\n @Input() sortMode: CpsTreeTableSortMode = 'single';\n\n /**\n * Determines whether to use the default sorting or a custom one using sortFunction.\n * @group Props\n */\n @Input() customSort = false;\n\n /**\n * Determines whether the treetable has a toolbar.\n * @group Props\n */\n @Input() hasToolbar = true;\n\n /**\n * Toolbar size, it can be \"small\" or \"normal\".\n * @group Props\n */\n @Input() toolbarSize: CpsTreeTableToolbarSize = 'normal';\n\n /**\n * Toolbar title.\n * @group Props\n */\n @Input() toolbarTitle = '';\n\n /**\n * Toolbar icon name.\n * @group Props\n */\n @Input() toolbarIcon = '';\n\n /**\n * Toolbar icon color.\n * @group Props\n */\n @Input() toolbarIconColor = '';\n\n /**\n * Makes treetable scrollable.\n * @group Props\n */\n @Input() scrollable = true;\n\n /**\n * Height of the scroll viewport in fixed pixels or the \"flex\" keyword for a dynamic size.\n * @group Props\n */\n @Input() scrollHeight = '';\n\n /**\n * Determines whether only the elements within scrollable area should be added into the DOM. Works only if scrollable prop is true.\n * @group Props\n */\n @Input() virtualScroll = false;\n\n /**\n * Height of a virtual scroll item in fixed pixels.\n * @group Props\n */\n @Input() virtualScrollItemHeight = 0;\n\n /**\n * Determines how many additional elements to add to the DOM outside of the view.\n * @group Props\n */\n @Input() numToleratedItems = 10;\n\n /**\n * Determines whether the treetable should have paginator.\n * @group Props\n */\n @Input() paginator = false;\n\n /**\n * Determines whether to show paginator even there is only one page.\n * @group Props\n */\n @Input() alwaysShowPaginator = true;\n\n /**\n * Array of integer values to display inside rows per page dropdown of paginator.\n * @group Props\n */\n @Input() rowsPerPageOptions: number[] = [];\n\n /**\n * Index of the first row to be displayed.\n * @group Props\n */\n @Input() first = 0;\n\n /**\n * Number of rows to display per page.\n * @group Props\n */\n @Input() rows = 0;\n\n /**\n * Determines whether to reset page on rows change.\n * @group Props\n */\n @Input() resetPageOnRowsChange = false;\n\n /**\n * Determines whether to reset page on treetable data sorting.\n * @group Props\n */\n @Input() resetPageOnSort = true;\n\n /**\n * Number of total records.\n * @group Props\n */\n @Input() totalRecords = 0;\n\n /**\n * Text to display when there is no data.\n * @group Props\n */\n @Input() emptyMessage = 'No data';\n\n /**\n * Height of treetable's body when there is no data, of type number denoting pixels or string.\n * @group Props\n */\n @Input() emptyBodyHeight: number | string = '';\n\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n @Input() lazy = false;\n\n /**\n * Determines whether to call lazy loading on initialization.\n * @group Props\n */\n @Input() lazyLoadOnInit = true;\n\n /**\n * Determines whether to show global filter in the toolbar.\n * @group Props\n */\n @Input() showGlobalFilter = false;\n\n /**\n * Global filter placeholder.\n * @group Props\n */\n @Input() globalFilterPlaceholder = 'Search';\n\n /**\n * An array of fields to use in global filtering.\n * @group Props\n */\n @Input() globalFilterFields: string[] = [];\n\n /**\n * Determines whether to clear global filter on data loading.\n * @group Props\n */\n @Input() clearGlobalFilterOnLoading = false;\n\n /**\n * Determines whether to show remove button in the toolbar when rows are selected.\n * @group Props\n */\n @Input() showRemoveBtnOnSelect = true;\n\n /**\n * Determines whether removeBtnOnSelect is disabled.\n * @group Props\n */\n @Input() removeBtnOnSelectDisabled = false;\n\n /**\n * Determines whether to show additional button in the toolbar when rows are selected.\n * @group Props\n */\n @Input() showAdditionalBtnOnSelect = false;\n\n /**\n * AdditionalBtnOnSelect title.\n * @group Props\n */\n @Input() additionalBtnOnSelectTitle = 'Select action';\n\n /**\n * Determines whether additionalBtnOnSelect is disabled.\n * @group Props\n */\n @Input() additionalBtnOnSelectDisabled = false;\n\n /**\n * Determines whether to show action button in the toolbar.\n * @group Props\n */\n @Input() showActionBtn = false;\n\n /**\n * Action button title.\n * @group Props\n */\n @Input() actionBtnTitle = 'Action';\n\n /**\n * Determines whether actionBtn is disabled.\n * @group Props\n */\n @Input() actionBtnDisabled = false;\n\n /**\n * Determines whether to show data reload button in the toolbar.\n * @group Props\n */\n @Input() showDataReloadBtn = false;\n\n /**\n * Determines whether dataReloadBtn is disabled.\n * @group Props\n */\n @Input() dataReloadBtnDisabled = false;\n\n /**\n * Determines whether the treetable should show columnsToggle menu, where you can choose which columns to be displayed. If external body template is provided, use columnsSelected event emitter.\n * @group Props\n */\n @Input() showColumnsToggleBtn = false;\n\n /**\n * Determines whether columnsToggle button is disabled.\n * @group Props\n */\n @Input() columnsToggleBtnDisabled = false;\n\n /**\n * Array of initial columns to show in the treetable. If not provided, all columns are initially visible.\n * @group Props\n */\n @Input() initialColumns: { [key: string]: any }[] = [];\n\n /**\n * An array of objects to display.\n * @group Props\n */\n @Input() set data(value: any[]) {\n const clone = cloneDeep(value);\n if (clone && clone.length > 0) {\n let i = 0;\n clone.forEach((v: any) => {\n v._defaultSortOrder = i++;\n });\n }\n this._data = clone;\n }\n\n get data(): any[] {\n return this._data;\n }\n\n /**\n * Callback to invoke on selected rows change.\n * @param {any[]} any[] - selected rows.\n * @group Emits\n */\n @Output() rowsSelected = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke when action button is clicked.\n * @param {void} void - action button clicked.\n * @group Emits\n */\n @Output() actionBtnClicked = new EventEmitter<void>();\n\n /**\n * Callback to invoke when additional button on select is clicked.\n * @param {any[]} any[] - selected data.\n * @group Emits\n */\n @Output() additionalBtnOnSelectClicked = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke when edit-row button is clicked.\n * @param {any} any - button clicked.\n * @group Emits\n */\n @Output() editRowBtnClicked = new EventEmitter<any>();\n\n /**\n * Callback to invoke when rows are removed.\n * @param {any[]} any[] - array of rows to remove.\n * @group Emits\n */\n @Output() rowsToRemove = new EventEmitter<any[]>();\n\n /**\n * Callback to invoke when page is changed.\n * @param {any} any - page changed.\n * @group Emits\n */\n @Output() pageChanged = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data is sorted.\n * @param {any} any - Sort data.\n * @group Emits\n */\n @Output() sorted = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data is filtered.\n * @param {any} any - Custom filter event.\n * @group Emits\n */\n @Output() filtered = new EventEmitter<any>();\n\n /**\n * Callback to invoke on selected columns.\n * @param {any[]} object[] - selection changed.\n * @group Emits\n */\n @Output() columnsSelected = new EventEmitter<{ [key: string]: any }[]>();\n\n /**\n * Callback to invoke when paging, sorting or filtering happens in lazy mode.\n * @param {any} any - Custom lazy load event.\n * @group Emits\n */\n @Output() lazyLoaded = new EventEmitter<any>();\n\n /**\n * Callback to invoke when data reload button is clicked.\n * @param {any} any - data reload button clicked.\n * @group Emits\n */\n @Output() dataReloadBtnClicked = new EventEmitter<any>();\n\n /**\n * Callback to invoke when a node is expanded.\n * @param {any} any - Node instance.\n * @group Emits\n */\n @Output() nodeExpanded = new EventEmitter<any>();\n\n /**\n * Callback to invoke when a node is collapsed.\n * @param {any} any - Node collapse event.\n * @group Emits\n */\n @Output() nodeCollapsed = new EventEmitter<any>();\n\n /**\n * Callback to invoke when a node is selected.\n * @param {any} any - Node instance.\n * @group Emits\n */\n @Output() nodeSelected = new EventEmitter<any>();\n\n /**\n * Callback to invoke when a node is unselected.\n * @param {any} any - Custom node unselect event.\n * @group Emits\n */\n @Output() nodeUnselected = new EventEmitter<any>();\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('nestedHeader', { static: false })\n public nestedHeaderTemplate!: TemplateRef<any>;\n\n @ContentChild('body', { static: false })\n public bodyTemplate!: TemplateRef<any>;\n\n @ViewChild('primengTreeTable', { static: true })\n primengTreeTable!: TreeTable;\n\n @ViewChild('globalFilterComp')\n globalFilterComp!: CpsInputComponent;\n\n @ViewChild('colToggleMenu')\n colToggleMenu!: CpsMenuComponent;\n\n selectedColumns: { [key: string]: any }[] = [];\n\n rowOptions: { label: string; value: number }[] = [];\n\n selectedRows: any[] = [];\n\n virtualScrollItemSize = 0;\n defScrollHeight = '';\n\n private _defScrollHeightPx = 0;\n private _defScrollHeightPxInitial = 0;\n\n private _resizeObserver: ResizeObserver;\n private _windowResizeDebouncer: any;\n private _scrollSubscription?: Subscription;\n\n private _headerBox: any;\n private _scrollableBody: any;\n private _scrollbarWidth = 0;\n private _scrollbarVisible = true;\n\n private _needRecalcAutoLayout = true;\n\n _data: any[] = [];\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private cdRef: ChangeDetectorRef,\n private renderer: Renderer2,\n private ngZone: NgZone\n ) {\n this._resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const body = entry.target;\n this._scrollbarVisible = body.scrollHeight > body.clientHeight;\n\n if (this._scrollbarVisible && this.virtualScroll)\n this.renderer.setStyle(\n this._scrollableBody,\n 'overflow',\n 'auto',\n RendererStyleFlags2.Important\n );\n\n let wScroll = this._scrollbarVisible ? this._scrollbarWidth : 0;\n if (wScroll > 0) wScroll -= 1;\n\n this.renderer.setStyle(\n this._headerBox,\n 'padding-right',\n `${wScroll}px`\n );\n this.renderer.setStyle(\n this._headerBox,\n 'border-right',\n wScroll > 0 ? '1px solid #d7d5d5' : 'unset'\n );\n\n this._calcAutoLayoutHeaderWidths();\n });\n });\n }\n\n ngOnInit(): void {\n if (!this.scrollable) this.virtualScroll = false;\n this.emptyBodyHeight = convertSize(this.emptyBodyHeight);\n this.minWidth = convertSize(this.minWidth);\n\n if (this.showAdditionalBtnOnSelect) this.showRemoveBtnOnSelect = false;\n\n this.defScrollHeight = this.scrollHeight;\n if (this.virtualScroll) {\n window.addEventListener('resize', this._onWindowResize.bind(this));\n\n if (this.defScrollHeight && this.defScrollHeight !== 'flex') {\n this._defScrollHeightPx = parseInt(this.scrollHeight, 10);\n }\n }\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].data);\n }\n\n this.selectedColumns =\n this.initialColumns.length > 0 ? this.initialColumns : this.columns;\n }\n\n ngAfterViewInit(): void {\n this._setMinWidthOverall();\n\n this._scrollableBody = this.primengTreeTable.el.nativeElement.querySelector(\n '.p-treetable-scrollable-body'\n );\n if (this._scrollableBody) {\n if (this.minWidthForBodyOnly && this.minWidth) {\n const table = this._scrollableBody.querySelector('table');\n if (table) this.renderer.setStyle(table, 'min-width', this.minWidth);\n }\n\n if (this.virtualScroll) {\n if (this.defScrollHeight === 'flex') {\n this._defScrollHeightPx = this._scrollableBody.clientHeight;\n this._defScrollHeightPxInitial = this._defScrollHeightPx;\n }\n if (this.autoLayout) {\n this._scrollSubscription = fromEvent(\n this._scrollableBody,\n 'scroll'\n ).subscribe(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n }\n\n this._headerBox = this.primengTreeTable.el.nativeElement.querySelector(\n '.p-treetable-scrollable-header-box'\n );\n\n if (this._headerBox) {\n if (this.minWidthForBodyOnly && this.minWidth) {\n const table = this._headerBox.querySelector('table');\n if (table) this.renderer.setStyle(table, 'min-width', this.minWidth);\n }\n\n this._scrollbarWidth = DomHandler.calculateScrollbarWidth();\n this._resizeObserver.observe(this._scrollableBody);\n }\n\n if (this._needRecalcAutoLayout) {\n this._calcAutoLayoutHeaderWidths();\n this.cdRef.detectChanges();\n }\n }\n\n if (!this.scrollable) {\n const tableWrapper =\n this.primengTreeTable.el?.nativeElement?.querySelector(\n '.p-treetable-wrapper'\n );\n if (tableWrapper && this.minWidthForBodyOnly && this.minWidth) {\n const table = tableWrapper.querySelector('table');\n if (table) this.renderer.setStyle(table, 'min-width', this.minWidth);\n }\n }\n }\n\n ngAfterViewChecked() {\n if (this._needRecalcAutoLayout) {\n this._calcAutoLayoutHeaderWidths();\n this.cdRef.detectChanges();\n }\n if (!this.virtualScroll) return;\n\n if (!this._defScrollHeightPx && this.defScrollHeight === 'flex') {\n this._defScrollHeightPx = this._scrollableBody.clientHeight;\n this._defScrollHeightPxInitial = this._defScrollHeightPx;\n this.cdRef.detectChanges();\n }\n\n if (!this.virtualScrollItemSize) {\n setTimeout(() => {\n this._recalcVirtualHeight();\n this.cdRef.detectChanges();\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.loading) {\n this.clearSelection();\n if (this.clearGlobalFilterOnLoading) this.clearGlobalFilter();\n }\n\n if (this.virtualScrollItemHeight)\n this.virtualScrollItemSize = this.virtualScrollItemHeight;\n\n this._setMinWidthOverall();\n\n const dataChanges = changes?.data;\n\n if (dataChanges?.previousValue !== dataChanges?.currentValue) {\n this.clearSelection();\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n this._calcAutoLayoutHeaderWidths(true);\n this._recalcVirtualHeight();\n }\n\n ngOnDestroy(): void {\n this._resizeObserver?.disconnect();\n if (this.virtualScroll) {\n if (this.autoLayout) this._scrollSubscription?.unsubscribe();\n window.removeEventListener('resize', this._onWindowResize.bind(this));\n }\n }\n\n private _calcAutoLayoutHeaderWidths(forced = false) {\n this.ngZone.runOutsideAngular(() => {\n if (!this.autoLayout || !this.scrollable) return;\n\n if (!this._needRecalcAutoLayout && !forced) return;\n\n const headerRows = this._headerBox?.querySelectorAll('tr');\n if (!headerRows?.length) return;\n\n const headerCells =\n headerRows[headerRows.length - 1]?.querySelectorAll('th');\n if (!headerCells?.length) return;\n\n let hasSelectableCell = false;\n let hasRowMenuCell = false;\n\n const ths = Array.from(headerCells);\n if (ths.every((th: any) => th.offsetWidth === 0)) return;\n\n const thWidths = ths.map((th: any) => {\n const wprev = th.style.width;\n\n const isSelectableCell = th.classList.contains(\n 'cps-treetable-selectable-cell'\n );\n\n const isRowCell = th.classList.contains('cps-treetable-row-menu-cell');\n\n if (isSelectableCell) hasSelectableCell = true;\n if (isRowCell) hasRowMenuCell = true;\n\n let thWidth = 55;\n if (!isSelectableCell && !isRowCell) {\n this.renderer.setStyle(th, 'width', 'min-content');\n this.renderer.setStyle(th, 'display', 'block');\n this.renderer.setStyle(th, 'text-wrap', 'nowrap');\n thWidth = th.offsetWidth;\n this.renderer.setStyle(th, 'width', wprev);\n this.renderer.removeStyle(th, 'display');\n this.renderer.removeStyle(th, 'text-wrap');\n }\n return thWidth;\n });\n\n const bodyRows = this._scrollableBody?.querySelectorAll('tr');\n if (!bodyRows?.length) return;\n\n const tdWidths: number[] = [];\n const fragment = document.createDocumentFragment();\n const hiddenDiv = document.createElement('div');\n hiddenDiv.style.visibility = 'hidden';\n hiddenDiv.style.position = 'absolute';\n hiddenDiv.style.whiteSpace = 'nowrap';\n\n document.body.appendChild(hiddenDiv);\n bodyRows.forEach((tr: HTMLElement) => {\n const tds = tr?.querySelectorAll('td');\n tds?.forEach((td: HTMLElement, idx: number) => {\n const isSelectableOrRowMenuCell =\n td.classList.contains('cps-treetable-selectable-cell') ||\n td.classList.contains('cps-treetable-row-menu-cell');\n\n let tdWidth = 55;\n if (!isSelectableOrRowMenuCell) {\n const clonedTd = td.cloneNode(true) as HTMLElement;\n fragment.appendChild(clonedTd);\n this.renderer.setStyle(clonedTd, 'width', 'min-content');\n this.renderer.setStyle(clonedTd, 'display', 'block');\n hiddenDiv.innerHTML = clonedTd.innerHTML;\n hiddenDiv.style.width = 'auto';\n tdWidth = hiddenDiv.offsetWidth;\n fragment.removeChild(clonedTd);\n }\n if (!tdWidths[idx]) tdWidths[idx] = 0;\n tdWidths[idx] = Math.max(tdWidths[idx], tdWidth);\n });\n });\n document.body.removeChild(hiddenDiv);\n\n if (thWidths.length !== tdWidths.length) return;\n\n const maxWidths = thWidths.map((v, idx) => Math.max(v, tdWidths[idx]));\n let sum = maxWidths.reduce((a, b) => a + b, 0);\n if (hasSelectableCell) {\n sum -= 55;\n maxWidths.shift();\n }\n if (hasRowMenuCell) {\n sum -= 55;\n maxWidths.pop();\n }\n\n const percentages = maxWidths.map((v) => (v / sum) * 100);\n\n headerCells.forEach((th: any, idx: number) => {\n if (\n (hasSelectableCell && idx === 0) ||\n (hasRowMenuCell && idx === headerCells.length - 1)\n ) {\n this.renderer.setStyle(th, 'width', '55px');\n } else\n this.renderer.setStyle(\n th,\n 'width',\n percentages[hasSelectableCell ? idx - 1 : idx] + '%'\n );\n });\n\n bodyRows.forEach((tr: HTMLElement) => {\n const tds = tr?.querySelectorAll('td');\n tds?.forEach((td: HTMLElement, idx: number) => {\n if (\n (hasSelectableCell && idx === 0) ||\n (hasRowMenuCell && idx === tds.length - 1)\n ) {\n this.renderer.setStyle(td, 'width', '55px');\n } else {\n this.renderer.setStyle(\n td,\n 'width',\n percentages[hasSelectableCell ? idx - 1 : idx] + '%'\n );\n }\n this.renderer.setStyle(td, 'opacity', '1');\n this.renderer.setStyle(td, 'overflow', 'hidden');\n if (this.bordered)\n this.renderer.setStyle(\n td,\n 'border-left-color',\n 'var(--cps-color-line-mid)'\n );\n });\n });\n\n this._needRecalcAutoLayout = false;\n });\n }\n\n private _updateVirtualScrollItemSize() {\n if (!this.virtualScroll || this.virtualScrollItemHeight) return;\n\n const trs = this.primengTreeTable?.el?.nativeElement\n ?.querySelector('.p-treetable-tbody')\n ?.querySelectorAll('tr');\n\n if (!trs?.length) return;\n if (!trs[0]?.offsetHeight) return;\n\n let h = 0;\n trs.forEach((tr: HTMLElement, idx: number) => {\n let rh = 0;\n const tds = tr?.querySelectorAll('td');\n tds?.forEach((td: HTMLElement) => {\n const wprev = td.style.width;\n this.renderer.setStyle(td, 'display', 'block');\n this.renderer.removeStyle(td, 'width');\n if (td.offsetHeight) rh = Math.max(rh, td.offsetHeight);\n this.renderer.removeStyle(td, 'display');\n this.renderer.setStyle(td, 'width', wprev);\n });\n if (rh) {\n h = idx === 0 ? rh : Math.min(h, rh);\n }\n });\n\n this.virtualScrollItemSize = h;\n }\n\n private _setMinWidthOverall() {\n if (this.minWidthForBodyOnly || !this.minWidth || !this.primengTreeTable)\n return;\n\n const treeTableMain =\n this.primengTreeTable.el?.nativeElement?.querySelector('.p-treetable');\n if (treeTableMain) {\n this.renderer.setStyle(treeTableMain, 'overflow', 'auto');\n const paginatorEl = treeTableMain.querySelector('.p-paginator');\n if (paginatorEl)\n this.renderer.setStyle(paginatorEl, 'min-width', this.minWidth);\n const loadingOverlay = treeTableMain.querySelector(\n '.p-treetable-loading-overlay'\n );\n if (loadingOverlay)\n this.renderer.setStyle(loadingOverlay, 'min-width', this.minWidth);\n }\n\n const scrollableWrapper =\n this.primengTreeTable.el?.nativeElement?.querySelector(\n '.p-treetable-scrollable-wrapper'\n );\n if (scrollableWrapper)\n this.renderer.setStyle(scrollableWrapper, 'min-width', this.minWidth);\n\n if (!this.scrollable) {\n const tableWrapper =\n this.primengTreeTable.el?.nativeElement?.querySelector(\n '.p-treetable-wrapper'\n );\n if (tableWrapper)\n this.renderer.setStyle(tableWrapper, 'min-width', this.minWidth);\n }\n\n const treeTableHeader =\n this.primengTreeTable.el?.nativeElement?.querySelector(\n '.p-treetable-header'\n );\n if (treeTableHeader)\n this.renderer.setStyle(treeTableHeader, 'min-width', this.minWidth);\n }\n\n private _onWindowResize() {\n // if (this.defScrollHeight === 'flex')\n // this.defScrollHeightPx = this.scrollableBody.clientHeight;\n\n clearTimeout(this._windowResizeDebouncer);\n this._windowResizeDebouncer = setTimeout(() => {\n this._recalcVirtualHeight();\n }, 100);\n }\n\n get styleClass() {\n const classesList = [];\n switch (this.size) {\n case 'small':\n classesList.push('p-treetable-sm');\n break;\n case 'large':\n classesList.push('p-treetable-lg');\n break;\n }\n if (this.hasToolbar) {\n switch (this.toolbarSize) {\n case 'small':\n classesList.push('cps-tbar-small');\n break;\n case 'normal':\n classesList.push('cps-tbar-normal');\n break;\n }\n }\n if (this.striped) {\n classesList.push('p-treetable-striped');\n }\n if (this.bordered) {\n classesList.push('p-treetable-gridlines');\n }\n\n return classesList.join(' ');\n }\n\n private _recalcVirtualHeight() {\n if (!this._scrollbarVisible && this.virtualScroll)\n this.renderer.setStyle(\n this._scrollableBody,\n 'overflow',\n 'hidden',\n RendererStyleFlags2.Important\n );\n\n setTimeout(() => {\n if (this.virtualScroll && this.defScrollHeight) {\n this._updateVirtualScrollItemSize();\n const itemsLen = this.primengTreeTable.serializedValue.length;\n if (itemsLen < 1) {\n this.scrollHeight = this.emptyBodyHeight\n ? (`calc(${this.emptyBodyHeight} + 1px)` as string)\n : this.virtualScrollItemSize + 1 + 'px';\n } else {\n const curHeight = this.virtualScrollItemSize * itemsLen + 2;\n if (this.defScrollHeight === 'flex') {\n if (curHeight >= this._defScrollHeightPxInitial) {\n this.scrollHeight = 'flex';\n this.renderer.setStyle(this._scrollableBody, 'height', '100%');\n this.cdRef.markForCheck();\n return;\n }\n }\n this.scrollHeight =\n Math.min(this._defScrollHeightPx, curHeight) + 'px';\n }\n this.cdRef.markForCheck();\n }\n });\n }\n\n clearGlobalFilter() {\n this.globalFilterComp?.clear();\n }\n\n onSortFunction(event: SortEvent) {\n this.customSortFunction.emit(event);\n }\n\n onFilterGlobal(value: string) {\n this.primengTreeTable.filterGlobal(value, 'contains');\n }\n\n onClickAdditionalBtnOnSelect() {\n this.additionalBtnOnSelectClicked.emit(this.selectedRows);\n }\n\n onClickActionBtn() {\n this.actionBtnClicked.emit();\n }\n\n onReloadData() {\n if (this.dataReloadBtnDisabled) return;\n this.dataReloadBtnClicked.emit();\n }\n\n onColumnsToggle(event: any) {\n if (this.columnsToggleBtnDisabled) return;\n this.colToggleMenu?.toggle(event);\n }\n\n removeSelected() {\n this.rowsToRemove.emit(this.selectedRows);\n }\n\n clearSelection() {\n this.selectedRows = [];\n }\n\n onEditRowClicked(node: any) {\n this.editRowBtnClicked.emit(node);\n }\n\n onRemoveRowClicked(node: any) {\n this.rowsToRemove.emit([node]);\n }\n\n toggleAllColumns() {\n this.selectedColumns =\n this.selectedColumns.length < this.columns.length ? this.columns : [];\n this.columnsSelected.emit(this.selectedColumns);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n isColumnSelected(col: any) {\n return this.selectedColumns.some((item) => isEqual(item, col));\n }\n\n onRowsPerPageChanged() {\n if (this.resetPageOnRowsChange) {\n this.primengTreeTable.first = 0;\n }\n this.changePage(this.getPage());\n }\n\n getPageCount() {\n return Math.ceil(this.primengTreeTable.totalRecords / this.rows);\n }\n\n getPage(): number {\n return Math.floor(this.primengTreeTable.first / this.rows);\n }\n\n changePage(p: number) {\n const pc = Math.ceil(this.getPageCount());\n\n if (p >= 0 && p < pc) {\n this.first = this.rows * p;\n this.primengTreeTable.onPageChange({\n first: this.first,\n rows: this.rows\n });\n }\n }\n\n onPageChange(event: any) {\n this.first = event.first;\n this.rows = event.rows;\n\n const state = {\n page: this.getPage(),\n first: this.first,\n rows: this.rows,\n pageCount: Math.ceil(this.getPageCount())\n };\n\n this.pageChanged.emit(state);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n onLazyLoaded(event: any) {\n this.lazyLoaded.emit(event);\n }\n\n onNodeExpanded(event: any) {\n this.nodeExpanded.emit(event);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n this._recalcVirtualHeight();\n }\n\n onNodeCollapsed(event: any) {\n this.nodeCollapsed.emit(event);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n this._recalcVirtualHeight();\n }\n\n onNodeSelected(event: any) {\n this.nodeSelected.emit(event);\n }\n\n onNodeUnselected(event: any) {\n this.nodeUnselected.emit(event);\n }\n\n onSort(event: any) {\n this.sorted.emit(event);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n onFilter(event: any) {\n this.filtered.emit(event);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n this._recalcVirtualHeight();\n }\n\n onSelectColumn(col: any) {\n let res = [] as any;\n if (this.isColumnSelected(col)) {\n res = this.selectedColumns.filter((v: any) => !isEqual(v, col));\n } else {\n this.columns.forEach((o) => {\n if (\n this.selectedColumns.some((v: any) => isEqual(v, o)) ||\n isEqual(col, o)\n ) {\n res.push(o);\n }\n });\n }\n this.selectedColumns = res;\n this.columnsSelected.emit(this.selectedColumns);\n setTimeout(() => {\n this._calcAutoLayoutHeaderWidths(true);\n });\n }\n\n onSelectionChanged(selection: any[]) {\n this.rowsSelected.emit(selection);\n }\n}\n","<p-treeTable\n #primengTreeTable\n ttWithUnsort\n [ngClass]=\"{\n 'cps-treetable-loading': loading,\n 'cps-treetable-flex': defScrollHeight === 'flex',\n 'cps-treetable-nonvirtual': !virtualScroll,\n 'cps-treetable-autolayout-calced': autoLayout && scrollable,\n }\"\n [value]=\"data\"\n [autoLayout]=\"autoLayout && !scrollable\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollHeight\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollItemSize]=\"virtualScrollItemSize\"\n [virtualScrollOptions]=\"{\n numToleratedItems: numToleratedItems,\n autoSize: false\n }\"\n [columns]=\"selectedColumns\"\n [loading]=\"loading\"\n [rowHover]=\"rowHover\"\n [lazy]=\"lazy\"\n [(selection)]=\"selectedRows\"\n (selectionChange)=\"onSelectionChanged($event)\"\n compareSelectionBy=\"deepEquals\"\n [lazyLoadOnInit]=\"lazyLoadOnInit\"\n [styleClass]=\"styleClass\"\n [tableStyle]=\"tableStyle\"\n [tableStyleClass]=\"tableStyleClass\"\n [customSort]=\"customSort\"\n [sortMode]=\"sortMode\"\n [globalFilterFields]=\"globalFilterFields\"\n [paginator]=\"paginator\"\n [showCurrentPageReport]=\"true\"\n [alwaysShowPaginator]=\"alwaysShowPaginator\"\n [rows]=\"rows\"\n [first]=\"first\"\n [totalRecords]=\"totalRecords\"\n [resetPageOnSort]=\"resetPageOnSort\"\n currentPageReportTemplate=\"{first} - {last} of {totalRecords}\"\n (onPage)=\"onPageChange($event)\"\n (onSort)=\"onSort($event)\"\n (onFilter)=\"onFilter($event)\"\n (onLazyLoad)=\"onLazyLoaded($event)\"\n (sortFunction)=\"onSortFunction($event)\"\n (onNodeExpand)=\"onNodeExpanded($event)\"\n (onNodeCollapse)=\"onNodeCollapsed($event)\"\n (onNodeSelect)=\"onNodeSelected($event)\"\n (onNodeUnselect)=\"onNodeUnselected($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-treetable-tbar-left\">\n <div *ngIf=\"toolbarIcon\" class=\"cps-treetable-tbar-icon\">\n <cps-icon [icon]=\"toolbarIcon\" [color]=\"toolbarIconColor\"></cps-icon>\n </div>\n <div class=\"cps-treetable-tbar-title\">{{ toolbarTitle }}</div>\n <div *ngIf=\"showGlobalFilter\" class=\"cps-treetable-tbar-global-filter\">\n <cps-input\n #globalFilterComp\n prefixIcon=\"search\"\n [placeholder]=\"globalFilterPlaceholder\"\n (valueChanged)=\"onFilterGlobal($event)\"\n [clearable]=\"true\"\n [disabled]=\"loading\"\n [appearance]=\"toolbarSize === 'small' ? 'underlined' : 'outlined'\"\n [hideDetails]=\"true\">\n </cps-input>\n </div>\n </div>\n <div class=\"cps-treetable-tbar-right\">\n <div\n *ngIf=\"showRemoveBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-treetable-tbar-btn-on-select\">\n <cps-button\n label=\"Remove\"\n [disabled]=\"removeBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n icon=\"remove\"\n [size]=\"toolbarSize\"\n (clicked)=\"removeSelected()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showAdditionalBtnOnSelect && selectedRows.length > 0\"\n class=\"cps-treetable-tbar-btn-on-select\">\n <cps-button\n [label]=\"additionalBtnOnSelectTitle\"\n [disabled]=\"additionalBtnOnSelectDisabled\"\n color=\"prepared\"\n type=\"borderless\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickAdditionalBtnOnSelect()\">\n </cps-button>\n </div>\n <div *ngIf=\"showActionBtn\" class=\"cps-treetable-tbar-action-btn\">\n <cps-button\n [label]=\"actionBtnTitle\"\n [disabled]=\"actionBtnDisabled\"\n color=\"prepared\"\n type=\"outlined\"\n [size]=\"toolbarSize\"\n (clicked)=\"onClickActionBtn()\">\n </cps-button>\n </div>\n <div\n *ngIf=\"showColumnsToggleBtn && columns.length > 0\"\n class=\"cps-treetable-tbar-coltoggle-btn\"\n [ngClass]=\"{ 'btn-disabled': columnsToggleBtnDisabled }\">\n <cps-icon\n icon=\"columns\"\n size=\"normal\"\n [color]=\"\n columnsToggleBtnDisabled ? 'text-lightest' : 'prepared-lighten1'\n \"\n (click)=\"onColumnsToggle($event)\"></cps-icon>\n <cps-menu #colToggleMenu [withArrow]=\"false\">\n <div class=\"cps-treetable-coltoggle-menu\">\n <div\n class=\"cps-treetable-coltoggle-menu-item select-all-option\"\n [class.allselected]=\"selectedColumns.length === columns.length\"\n (click)=\"toggleAllColumns()\">\n <span class=\"cps-treetable-coltoggle-menu-item-left\">\n <span class=\"cps-treetable-coltoggle-menu-item-check\"> </span>\n <span class=\"cps-treetable-coltoggle-menu-item-label\"\n >Show all columns</span\n >\n </span>\n </div>\n <div\n *ngFor=\"let col of columns\"\n class=\"cps-treetable-coltoggle-menu-item\"\n (click)=\"onSelectColumn(col)\"\n [class.selected]=\"isColumnSelected(col)\">\n <span class=\"cps-treetable-coltoggle-menu-item-left\">\n <span class=\"cps-treetable-coltoggle-menu-item-check\"></span>\n <span class=\"cps-treetable-coltoggle-menu-item-label\">{{\n col[colHeaderName]\n }}</span>\n </span>\n </div>\n </div>\n </cps-menu>\n </div>\n <div\n *ngIf=\"showDataReloadBtn\"\n class=\"cps-treetable-tbar-reload-btn\"\n [ngClass]=\"{ 'btn-disabled': dataReloadBtnDisabled }\">\n <cps-icon\n icon=\"refresh\"\n size=\"18\"\n [color]=\"dataReloadBtnDisabled ? 'text-light' : 'prepared-lighten1'\"\n (click)=\"onReloadData()\">\n </cps-icon>\n </div>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"nestedHeaderTemplate\" let-columns>\n <ng-container\n *ngTemplateOutlet=\"\n nestedHeaderTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-template>\n\n <ng-template pTemplate=\"header\" *ngIf=\"!nestedHeaderTemplate\" let-columns>\n <tr>\n <!-- <th style=\"width: 3rem\" *ngIf=\"reorderableRows\"></th> -->\n <th *ngIf=\"selectable\" cpsTTHdrSelectable></th>\n <ng-container *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate;\n context: {\n $implicit: columns,\n }\n \"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!headerTemplate && columns.length > 0\">\n <ng-container *ngIf=\"sortable\">\n <th\n *ngFor=\"let col of columns\"\n [cpsTTColSortable]=\"col[colFieldName]\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n <ng-container *ngIf=\"!sortable\">\n <th *ngFor=\"let col of columns\">\n {{ col[colHeaderName] }}\n </th>\n </ng-container>\n </ng-container>\n <th\n class=\"cps-treetable-row-menu-cell\"\n *ngIf=\"showRowMenu && (showRowRemoveButton || showRowEditButton)\"></th>\n </tr>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData=\"rowData\"\n let-columns=\"columns\"\n let-rowNode\n let-rowIndex=\"rowIndex\">\n <tr\n [ttRow]=\"rowNode\"\n [ngClass]=\"{\n 'cps-treetable-row-selected':\n selectable && primengTreeTable.isSelected(rowNode.node)\n }\">\n <!-- <td *ngIf=\"reorderableRows\" class=\"cps-table-row-drag-handle-cell\">\n <span class=\"cps-table-row-drag-handle\" pReorderableRowHandle>☰</span>\n </td> -->\n <td [cpsTTRowSelectable]=\"rowNode\" *ngIf=\"selectable\"></td>\n <ng-container *ngIf=\"bodyTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n bodyTemplate;\n context: {\n $implicit: rowNode,\n rowIndex: rowIndex,\n columns: columns,\n rowData: rowData\n }\n \">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!bodyTemplate\">\n <ng-container *ngIf=\"columns.length > 0\">\n <ng-container *ngFor=\"let col of columns; let i = index\">\n <td *ngIf=\"i === 0\" [cpsTTRowToggler]=\"rowNode\">\n {{ rowData[col[colFieldName]] }}\n </td>\n <td *ngIf=\"i > 0\">{{ rowData[col[colFieldName]] }}</td>\n </ng-container>\n </ng-container>\n </ng-container>\n <td\n *ngIf=\"showRowMenu && (showRowRemoveButton || showRowEditButton)\"\n class=\"cps-treetable-row-menu-cell\">\n <table-row-menu\n (editRowBtnClicked)=\"onEditRowClicked(rowNode.node)\"\n (removeRowBtnClicked)=\"onRemoveRowClicked(rowNode.node)\"\n [showRowRemoveButton]=\"showRowRemoveButton\"\n [showRowEditButton]=\"showRowEditButton\">\n </table-row-menu>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n colspan=\"100\"\n class=\"cps-treetable-empty-message-td\"\n [ngStyle]=\"{ height: emptyBodyHeight }\">\n {{ emptyMessage }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"loadingicon\">\n <cps-loader [fullScreen]=\"false\" opacity=\"0\"></cps-loader>\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 >Rows per page:\n </span>\n <cps-select\n [options]=\"rowOptions\"\n [hideDetails]=\"true\"\n [(ngModel)]=\"rows\"\n (valueChanged)=\"onRowsPerPageChanged()\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\">\n </cps-select>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorfirstpagelinkicon\">\n <AngleDoubleLeftIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatorpreviouspagelinkicon\">\n <AngleLeftIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatornextpagelinkicon\">\n <AngleRightIcon />\n </ng-template>\n <ng-template pTemplate=\"paginatorlastpagelinkicon\">\n <AngleDoubleRightIcon />\n </ng-template>\n</p-treeTable>\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { TableColumnFilterComponent } from '../../cps-table/components/internal/table-column-filter/table-column-filter.component';\nimport {\n CpsColumnFilterType,\n CpsColumnFilterMatchMode,\n CpsColumnFilterCategoryOption\n} from '../../cps-table/cps-column-filter-types';\n\n/**\n * CpsTreeTableColumnFilterDirective is a filtering directive used to filter single or multiple columns in treetable.\n * @group Directives\n */\n@Directive({\n standalone: true,\n selector: '[cpsTTColFilter]',\n exportAs: 'cpsTTColFilter'\n})\nexport class CpsTreeTableColumnFilterDirective\n implements OnInit, OnChanges, OnDestroy\n{\n /**\n * Name of the column to be filtered.\n * @group Props\n */\n @Input('cpsTTColFilter') field: string | undefined;\n\n /**\n * Type of filter in treetable, it can be of type \"number\", \"boolean\", \"text\", \"date\" or \"category\".\n * @group Props\n */\n @Input() filterType: CpsColumnFilterType = 'text';\n\n /**\n * Determines whether the filter menu should be persistent.\n * @group Props\n */\n @Input() filterPersistent = false;\n\n /**\n * Determines whether the filter should have clear button.\n * @group Props\n */\n @Input() filterShowClearButton = true;\n\n /**\n * Determines whether the filter should have apply button.\n * @group Props\n */\n @Input() filterShowApplyButton = true;\n\n /**\n * Determines whether the filter should have close button.\n * @group Props\n */\n @Input() filterShowCloseButton = false;\n\n /**\n * Determines whether the filter should have match modes.\n * @group Props\n */\n @Input() filterShowMatchModes = true;\n\n /**\n * Match modes for filter.\n * @group Props\n */\n @Input() filterMatchModes: CpsColumnFilterMatchMode[] = [];\n\n /**\n * Determines whether the filter should have operator.\n * @group Props\n */\n @Input() filterShowOperator = true;\n\n /**\n * Title of the filter.\n * @group Props\n */\n @Input() filterHeaderTitle = '';\n\n /**\n * Determines whether the filter should hide on clear.\n * @group Props\n */\n @Input() filterHideOnClear = false;\n\n /**\n * Options for category filter.\n * @group Props\n */\n @Input() filterCategoryOptions: CpsColumnFilterCategoryOption[] | string[] =\n [];\n\n /**\n * Determines whether to show category filter as button toggles.\n * @group Props\n */\n @Input() filterAsButtonToggle = false;\n\n /**\n * Single selection for category filter.\n * @group Props\n */\n @Input() filterSingleSelection = false;\n\n /**\n * Placeholder for filter constraints.\n * @group Props\n */\n @Input() filterPlaceholder = '';\n\n filterCompRef: ComponentRef<TableColumnFilterComponent>;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef\n ) {\n this.filterCompRef = this.viewContainerRef.createComponent(\n TableColumnFilterComponent\n );\n }\n\n ngOnInit(): void {\n this.elementRef.nativeElement.firstChild.after(\n this.filterCompRef.location.nativeElement\n );\n }\n\n ngOnChanges(): void {\n this.filterCompRef.setInput('field', this.field);\n this.filterCompRef.setInput('type', this.filterType);\n this.filterCompRef.setInput('persistent', this.filterPersistent);\n this.filterCompRef.setInput('showClearButton', this.filterShowClearButton);\n this.filterCompRef.setInput('showApplyButton', this.filterShowApplyButton);\n this.filterCompRef.setInput('showCloseButton', this.filterShowCloseButton);\n this.filterCompRef.setInput('showMatchModes', this.filterShowMatchModes);\n this.filterCompRef.setInput('matchModes', this.filterMatchModes);\n this.filterCompRef.setInput('showOperator', this.filterShowOperator);\n this.filterCompRef.setInput('maxConstraints', 1);\n this.filterCompRef.setInput('headerTitle', this.filterHeaderTitle);\n this.filterCompRef.setInput('hideOnClear', this.filterHideOnClear);\n this.filterCompRef.setInput('categoryOptions', this.filterCategoryOptions);\n this.filterCompRef.setInput('asButtonToggle', this.filterAsButtonToggle);\n this.filterCompRef.setInput('singleSelection', this.filterSingleSelection);\n this.filterCompRef.setInput(\n 'placeholder',\n this.filterPlaceholder || this._getDefaultPlaceholder()\n );\n }\n\n private _getDefaultPlaceholder() {\n switch (this.filterType) {\n case 'text':\n return 'Please enter';\n case 'number':\n return 'Enter value';\n case 'date':\n return 'Select date';\n case 'category':\n return 'Please select';\n default:\n return '';\n }\n }\n\n hideFilter() {\n this.filterCompRef?.instance?.hide();\n }\n\n clearFilter() {\n this.filterCompRef?.instance?.clearFilter();\n }\n\n clearFilterValues() {\n this.filterCompRef?.instance?.clearFilterValues();\n }\n\n ngOnDestroy(): void {\n this.filterCompRef.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/**\n * CpsTagComponent is used to categorize content.\n * @group Components\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 /**\n * Type of the tag. It can be security, classification or custom, has higher precedence over color.\n * @group Props\n */\n @Input() type: 'security' | 'classification' | 'custom' = 'custom';\n\n /**\n * Label of the tag.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Color of the tag.\n * @group Props\n */\n @Input() color = '';\n\n /**\n * Determines whether the tag should be disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether the tag should be selectable.\n * @group Props\n */\n @Input() selectable = false;\n\n /**\n * Tag value.\n * @group Props\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 /**\n * Callback to invoke on value change.\n * @param {boolean} boolean - value change.\n * @group Emits\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\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 Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\nimport { CpsSelectComponent } from '../cps-select/cps-select.component';\nimport { getCSSColor } from '../../utils/colors-utils';\n\n/**\n * CpsPaginatorComponent is a generic component to display content in paged format.\n * @group Components\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 /**\n * Zero-relative number of the first row to be displayed.\n * @group Props\n */\n @Input() first = 0;\n\n /**\n * Rows count to display per page.\n * @group Props\n */\n @Input() rows = 0;\n\n /**\n * Number of total records.\n * @group Props\n */\n @Input() totalRecords = 0;\n\n /**\n * Array of integer values to display inside rows per page dropdown.\n * @group Props\n */\n @Input() rowsPerPageOptions: number[] = [];\n\n /**\n * Determines whether to show it even there is only one page.\n * @group Props\n */\n @Input() alwaysShow = true;\n\n /**\n * Color of paginator background.\n * @group Props\n */\n @Input() backgroundColor = 'transparent';\n\n /**\n * Determines whether to reset page index when the number of rows per page changes.\n * @group Props\n */\n @Input() resetPageOnRowsChange = false;\n\n /**\n * Callback to invoke when page changes, the event object contains information about the new state.\n * @param {any} any - page changed.\n * @group Emits\n */\n @Output() pageChanged = new EventEmitter<any>();\n\n @ViewChild('paginator')\n paginator!: Paginator;\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 onRowsPerPageChange(rows: number) {\n if (this.resetPageOnRowsChange) {\n this.first = 0;\n this.paginator.first = 0;\n }\n this.paginator.rows = rows;\n this.paginator.onRppChange(rows);\n }\n}\n","<p-paginator\n #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)=\"onRowsPerPageChange($event)\"\n [returnObject]=\"false\"\n optionsClass=\"cps-paginator-page-options\"></cps-select>\n </div>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * The CpsPaginatePipe is a pipe designed to provide a set of items in batches, taking into account specified pagination parameters.\n * @group Pipes\n */\n@Pipe({\n standalone: true,\n name: 'cpsPaginate'\n})\nexport class CpsPaginatePipe implements PipeTransform {\n transform(items: any[], config: { first: number; rows: number }): any[] {\n if (!items) {\n return [];\n }\n if (items.length < 1) {\n return items;\n }\n\n const first = config.first || 0;\n const rows = config.rows || 5;\n const last = first + rows;\n\n return items.slice(first, last);\n }\n}\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';\nimport {\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\n/**\n * CpsExpansionPanelComponent is a component that provides content on expansion.\n * @group Components\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 animations: [\n trigger('panelContent', [\n state(\n 'hidden',\n style({\n height: '0',\n visibility: 'hidden'\n })\n ),\n state(\n 'visible',\n style({\n height: '*'\n })\n ),\n transition('visible <=> hidden', [\n animate('0.2s cubic-bezier(0.4, 0, 0.2, 1)')\n ]),\n transition('void => *', animate(0))\n ]),\n trigger('panelHeader', [\n state(\n 'hidden',\n style({\n borderBottom: ''\n })\n ),\n state(\n 'visible',\n style({\n borderBottom: '{{borderStyle}}'\n }),\n { params: { borderStyle: '' } }\n ),\n transition('visible <=> hidden', [\n animate('0.2s cubic-bezier(0.4, 0, 0.2, 1)')\n ]),\n transition('void => *', animate(0))\n ])\n ]\n})\nexport class CpsExpansionPanelComponent implements OnInit {\n /**\n * Title of the expansionPanel element.\n * @group Props\n */\n @Input() headerTitle = '';\n\n /**\n * Background color of the expansion panel element.\n * @group Props\n */\n @Input() backgroundColor = 'transparent';\n\n /**\n * Determines whether to show the chevron icon.\n * @group Props\n */\n @Input() showChevron = true;\n\n /**\n * Indicates current expansion state.\n * @group Props\n */\n @Input() isExpanded = false;\n\n /**\n * Determines whether expansion panel is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * If true, expansion panel element will have borders.\n * @group Props\n */\n @Input() bordered = true;\n\n /**\n * The border radius of the component.\n * @group Props\n */\n @Input() borderRadius: number | string = 0;\n\n /**\n * Border color of the expansion panel.\n * @group Props\n */\n @Input() borderColor = 'line-light';\n\n /**\n * The width of the expansion panel of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Name of the icon in front of the title.\n * @group Props\n */\n @Input() prefixIcon: IconType = '';\n\n /**\n * Callback to invoke after a tab gets collapsed.\n * @param {void}\n * @group Emits\n */\n @Output() afterCollapse: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Callback to invoke after a tab gets expanded.\n * @param {void}\n * @group Emits\n */\n @Output() afterExpand: EventEmitter<void> = new EventEmitter<void>();\n\n ngOnInit(): void {\n this.borderColor = getCSSColor(this.borderColor);\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 [ngStyle]=\"{\n 'background-color': backgroundColor,\n 'border-radius': borderRadius,\n width: width,\n border: bordered ? '1px solid ' + borderColor : ''\n }\">\n <div\n class=\"cps-expansion-panel-header\"\n [@panelHeader]=\"\n isExpanded\n ? {\n value: 'visible',\n params: {\n borderStyle: bordered ? '1px solid ' + borderColor : ''\n }\n }\n : 'hidden'\n \"\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\n class=\"cps-expansion-panel-content\"\n [@panelContent]=\"isExpanded ? 'visible' : 'hidden'\">\n <div class=\"cps-expansion-panel-content-inner\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n OnInit,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, RouterModule } from '@angular/router';\nimport { CpsMenuComponent, CpsMenuItem } from '../cps-menu/cps-menu.component';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport {\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport type CpsSidebarMenuItem = {\n title: string;\n icon: string;\n url?: string;\n target?: string;\n disabled?: boolean;\n items?: CpsMenuItem[];\n};\n\n/**\n * CpsSidebarMenuComponent is a vertical menu panel component displayed at the edge of the screen.\n * @group Components\n */\n@Component({\n selector: 'cps-sidebar-menu',\n standalone: true,\n imports: [CommonModule, CpsMenuComponent, CpsIconComponent, RouterModule],\n templateUrl: './cps-sidebar-menu.component.html',\n styleUrls: ['./cps-sidebar-menu.component.scss'],\n animations: [\n trigger('onExpand', [\n state(\n 'collapsed',\n style({\n marginTop: '0',\n opacity: '0',\n height: '0',\n visibility: 'hidden'\n })\n ),\n state(\n 'expanded',\n style({\n marginTop: '6px',\n opacity: '1'\n })\n ),\n transition('expanded <=> collapsed', [\n animate('0.2s cubic-bezier(0.4, 0, 0.2, 1)')\n ])\n ])\n ]\n})\nexport class CpsSidebarMenuComponent implements OnInit {\n /**\n * An array of menu items.\n * @group Props\n */\n @Input() items: CpsSidebarMenuItem[] = [];\n\n /**\n * Indicates current expansion state of the sidebar.\n * @group Props\n */\n @Input() isExpanded = true;\n\n /**\n * Determines whether the menu items should allow activating only exact links.\n * @group Props\n */\n @Input() exactRoutes = false;\n\n /**\n * Height of the sidebar, of type number denoting pixels or string.\n * @group Props\n */\n @Input() height: number | string = '100%';\n\n @ViewChildren('popupMenu') allMenus?: QueryList<CpsMenuComponent>;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private _router: Router) {}\n\n ngOnInit(): void {\n this.height = convertSize(this.height);\n }\n\n toggleMenu(event: any, menu: CpsMenuComponent) {\n const isVisible = menu.isVisible();\n this.allMenus?.forEach((m) => m.hide());\n if (!isVisible) menu.toggle(event, event.currentTarget, 'tr');\n }\n\n isActive(item: CpsSidebarMenuItem) {\n if (!item.items) return false;\n const urls = item.items.filter((i) => i.url).map((i) => i.url) as string[];\n\n if (this.exactRoutes) return urls.includes(this._router.url);\n return urls.some((url) => this._router.url.includes(url));\n }\n\n toggleSidebar() {\n this.isExpanded = !this.isExpanded;\n }\n}\n","<div\n class=\"cps-sidebar-menu\"\n [style.height]=\"height\"\n [ngClass]=\"{ 'cps-sidebar-menu-collapsed': !isExpanded }\">\n <ng-container *ngFor=\"let item of items\">\n <a\n *ngIf=\"item.url\"\n class=\"cps-sidebar-menu-item\"\n [routerLink]=\"[item.url]\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: exactRoutes }\"\n [ngClass]=\"{ disabled: item.disabled }\">\n <cps-icon [icon]=\"item.icon\" size=\"normal\"> </cps-icon>\n <span\n class=\"cps-sidebar-menu-item-label\"\n [@onExpand]=\"isExpanded ? 'expanded' : 'collapsed'\">\n {{ item.title }}\n </span>\n </a>\n <ng-container *ngIf=\"!item.url\">\n <cps-menu\n #popupMenu\n [items]=\"item.items || []\"\n [header]=\"item.title\"\n showTransitionOptions=\"0s\"\n hideTransitionOptions=\"0s\"\n [withArrow]=\"false\">\n </cps-menu>\n <div\n (click)=\"toggleMenu($event, popupMenu)\"\n class=\"cps-sidebar-menu-item menu-trigger\"\n [ngClass]=\"{\n active: isActive(item),\n 'menu-open': popupMenu.isVisible(),\n disabled: item.disabled\n }\">\n <cps-icon [icon]=\"item.icon\" size=\"normal\"> </cps-icon>\n <span\n class=\"cps-sidebar-menu-item-label\"\n [@onExpand]=\"isExpanded ? 'expanded' : 'collapsed'\">\n {{ item.title }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"expand-area\" (click)=\"toggleSidebar()\">\n <cps-icon icon=\"menu-shrink\" size=\"fill\"> </cps-icon>\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 { ControlValueAccessor, 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 { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\n\n/**\n * CpsTextareaComponent is a textarea component.\n * @group Components\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\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n /**\n * Label of the textarea.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Placeholder text for the textarea.\n * @group Props\n */\n @Input() placeholder = 'Please enter';\n\n /**\n * Number of rows in the textarea.\n * @group Props\n */\n @Input() rows = 5;\n\n /**\n * The cols attribute specifies the visible width of a textarea.\n * @group Props\n */\n @Input() cols = 20;\n\n /**\n * Determines whether the textarea can auto focus.\n * @group Props\n */\n @Input() autofocus = false;\n\n /**\n * Bottom hint text for the textarea.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Determines whether the textarea is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Width of the textarea, it can be of type number denoting pixels or string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n @Input() clearable = false;\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * Determines whether the textarea should have persistent clear icon.\n * @group Props\n */\n @Input() persistentClear = false;\n\n /**\n * Error message.\n * @group Props\n */\n @Input() error = '';\n\n /**\n * Determines whether the component can be resized vertically or not.\n * @group Props\n */\n @Input() resizable: 'vertical' | 'none' = 'vertical';\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * Info tooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Value of the textarea.\n * @group Props\n */\n @Input() set value(value: string) {\n if (!value) value = '';\n this._value = value;\n this.onChange(value);\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Callback to invoke on value change.\n * @param {string} string - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<string>();\n\n /**\n * Callback to invoke when the component receives focus.\n * @param {any}\n * @group Emits\n */\n @Output() focused = new EventEmitter();\n\n /**\n * Callback to invoke when the prefixIcon is clicked.\n * @param {any}\n * @group Emits\n */\n @Output() prefixIconClicked = new EventEmitter();\n\n /**\n * Callback to invoke when the component loses focus.\n * @param {any}\n * @group Emits\n */\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 ('pattern' in errors) {\n this.error = 'Value is invalid';\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\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-textarea-error\">\n {{ error }}\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n/**\n * CpsTabComponent is a tab within a tab-group.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'cps-tab',\n templateUrl: './cps-tab.component.html',\n styleUrls: ['./cps-tab.component.scss']\n})\nexport class CpsTabComponent {\n /**\n * Label of the tab.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Icon before the label.\n * @group Props\n */\n @Input() icon = '';\n\n /**\n * Determines whether tab is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether to show the tooltip on tab hover.\n * @group Props\n */\n @Input() tooltipText = '';\n\n /**\n * Class for styling the tab tooltip.\n * @group Props\n */\n @Input() tooltipContentClass = 'cps-tooltip-content';\n\n /**\n * Max width of the tooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() tooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the tooltip should have persistent info.\n * @group Props\n */\n @Input() tooltipPersistent = false;\n\n /**\n * Badge value to show on the tab after the label in a form of a circle.\n * @group Props\n */\n @Input() badgeValue = '';\n\n /**\n * Tooltip text to show on badge hover.\n * @group Props\n */\n @Input() badgeTooltip = '';\n\n @ViewChild(TemplateRef) content!: TemplateRef<any>;\n\n active = false;\n}\n","<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n","import {\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsTabComponent } from './cps-tab/cps-tab.component';\nimport { CpsTooltipDirective } from '../../directives/cps-tooltip.directive';\nimport { getCSSColor } from '../../utils/colors-utils';\nimport {\n Subscription,\n debounceTime,\n distinctUntilChanged,\n fromEvent\n} from 'rxjs';\n\nexport interface TabChangeEvent {\n currentTabIndex: number;\n newTabIndex?: number;\n}\n\nexport type CpsTabsAnimationType = 'slide' | 'fade';\n\n/**\n * CpsTabGroupComponent is a navigation component that displays items as tab headers.\n * @group Components\n */\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n CpsIconComponent,\n CpsTabComponent,\n CpsTooltipDirective\n ],\n selector: 'cps-tab-group',\n templateUrl: './cps-tab-group.component.html',\n styleUrls: ['./cps-tab-group.component.scss'],\n animations: [\n trigger('slideInOut', [\n state('slideLeft', style({ transform: 'translateX(0)' })),\n state('slideRight', style({ transform: 'translateX(0)' })),\n transition('* => slideLeft', [\n style({ transform: 'translateX(-100%)' }),\n animate('200ms ease-in')\n ]),\n transition('* => slideRight', [\n style({ transform: 'translateX(100%)' }),\n animate('200ms ease-in')\n ])\n ]),\n trigger('fadeInOut', [\n state('fadeIn', style({ opacity: 1 })),\n state('fadeOut', style({ opacity: 0 })),\n transition('fadeOut => fadeIn', [\n style({ opacity: 0 }),\n animate('100ms ease-in')\n ]),\n transition('fadeIn => fadeOut', [\n animate('0ms ease-out', style({ opacity: 0 }))\n ])\n ])\n ]\n})\nexport class CpsTabGroupComponent\n implements OnInit, AfterContentInit, AfterViewInit, OnDestroy\n{\n /**\n * Index of the selected tab.\n * @group Props\n */\n @Input() selectedIndex = 0;\n\n /**\n * Determines whether to apply an alternative 'subtabs' styling.\n * @group Props\n */\n @Input() isSubTabs = false;\n\n /**\n * Transition options of how content appears, it can be \"slide\" or \"fade\".\n * @group Props\n */\n @Input() animationType: CpsTabsAnimationType = 'slide';\n\n /**\n * Background styling of tabs.\n * @group Props\n */\n @Input() tabsBackground = 'inherit';\n\n /**\n * Callback to invoke before tab change.\n * @param {TabChangeEvent} any - tab changed.\n * @group Emits\n */\n @Output() beforeTabChanged = new EventEmitter<TabChangeEvent>();\n\n /**\n * Callback to invoke after tab change.\n * @param {TabChangeEvent} any - tab changed.\n * @group Emits\n */\n @Output() afterTabChanged = new EventEmitter<TabChangeEvent>();\n\n @ViewChild('tabsList') tabsList!: ElementRef;\n @ViewChild('backBtn') backBtn?: ElementRef;\n @ViewChild('forwardBtn') forwardBtn?: ElementRef;\n\n @ContentChildren(CpsTabComponent) tabs!: QueryList<CpsTabComponent>;\n\n backBtnVisible = false;\n forwardBtnVisible = false;\n animationState: 'slideLeft' | 'slideRight' | 'fadeIn' | 'fadeOut' = 'fadeIn';\n\n windowResize$: Subscription = Subscription.EMPTY;\n listScroll$: Subscription = Subscription.EMPTY;\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.tabsBackground = getCSSColor(this.tabsBackground);\n\n this.windowResize$ = fromEvent(window, 'resize')\n .pipe(debounceTime(50), distinctUntilChanged())\n .subscribe(() => this.onResize());\n }\n\n ngAfterContentInit() {\n this.selectTab(this.selectedIndex);\n }\n\n ngAfterViewInit() {\n this._updateNavBtnsState();\n\n this.listScroll$ = fromEvent(this.tabsList.nativeElement, 'scroll')\n .pipe(debounceTime(50), distinctUntilChanged())\n .subscribe((event: any) => this.onScroll(event));\n\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.windowResize$?.unsubscribe();\n this.listScroll$?.unsubscribe();\n }\n\n get selectedTab(): CpsTabComponent | undefined {\n return this.tabs.find((t) => t.active);\n }\n\n selectTab(newSelectedIndex: number) {\n const _tabs = this.tabs.toArray();\n const currentSelectedTab = _tabs && _tabs[this.selectedIndex];\n\n this.beforeTabChanged.emit({\n currentTabIndex: this.selectedIndex,\n newTabIndex: newSelectedIndex\n });\n\n currentSelectedTab && (currentSelectedTab.active = false);\n const newSelectedTab = _tabs && _tabs[newSelectedIndex];\n newSelectedTab && (newSelectedTab.active = true);\n if (newSelectedIndex === this.selectedIndex) {\n return;\n }\n\n if (this.animationType === 'slide') {\n this.animationState =\n newSelectedIndex < this.selectedIndex ? 'slideLeft' : 'slideRight';\n this.selectedIndex = newSelectedIndex;\n\n this.afterTabChanged.emit({\n currentTabIndex: newSelectedIndex\n });\n } else if (this.animationType === 'fade') {\n this.animationState = 'fadeOut';\n setTimeout(() => {\n this.animationState = 'fadeIn';\n this.selectedIndex = newSelectedIndex;\n this.afterTabChanged.emit({\n currentTabIndex: newSelectedIndex\n });\n }, 100);\n }\n }\n\n onScroll(event: any) {\n this._updateNavBtnsState();\n event.preventDefault();\n }\n\n onResize() {\n this._updateNavBtnsState();\n }\n\n navBackward() {\n const content = this.tabsList.nativeElement;\n const width = this._getWidth(content) - this._getVisibleButtonWidths();\n const pos = content.scrollLeft - width;\n content.scrollLeft = pos <= 0 ? 0 : pos;\n }\n\n navForward() {\n const content = this.tabsList.nativeElement;\n const width = this._getWidth(content) - this._getVisibleButtonWidths();\n const pos = content.scrollLeft + width;\n const lastPos = content.scrollWidth - width;\n content.scrollLeft = pos >= lastPos ? lastPos : pos;\n }\n\n private _updateNavBtnsState() {\n const content = this.tabsList.nativeElement;\n const { scrollLeft, scrollWidth } = content;\n\n const width = this._getWidth(content);\n\n this.backBtnVisible = scrollLeft === 0;\n this.forwardBtnVisible = Math.abs(scrollLeft - scrollWidth + width) < 2;\n }\n\n private _getVisibleButtonWidths() {\n return [this.backBtn?.nativeElement, this.forwardBtn?.nativeElement].reduce(\n (acc, el) => (el ? acc + this._getWidth(el) : acc),\n 0\n );\n }\n\n private _getWidth(el: any): number {\n let width = el.offsetWidth;\n const style = getComputedStyle(el);\n\n width -=\n parseFloat(style.paddingLeft) +\n parseFloat(style.paddingRight) +\n parseFloat(style.borderLeftWidth) +\n parseFloat(style.borderRightWidth);\n\n return width;\n }\n}\n","<div\n class=\"cps-tabs\"\n [ngClass]=\"{ 'cps-tabs-subtabs': isSubTabs }\"\n [ngStyle]=\"{ 'background-color': tabsBackground }\">\n <div\n class=\"nav-btn nav-btn-back\"\n *ngIf=\"!backBtnVisible\"\n #backBtn\n (click)=\"navBackward()\">\n <cps-icon icon=\"chevron-down\" color=\"text-dark\"></cps-icon>\n </div>\n <ul #tabsList class=\"cps-tabs-list\">\n <ng-container *ngFor=\"let tab of tabs; let tabIndex = index\">\n <li\n *ngIf=\"tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"!tab.disabled ? selectTab(tabIndex) : ''\"\n [ngClass]=\"{ active: tab.active, disabled: tab.disabled }\"\n [cpsTooltip]=\"tab.tooltipText\"\n tooltipOpenDelay=\"1000\"\n tooltipCloseDelay=\"0\"\n tooltipPosition=\"bottom\"\n [tooltipMaxWidth]=\"tab.tooltipMaxWidth\"\n [tooltipPersistent]=\"tab.tooltipPersistent\"\n [tooltipContentClass]=\"tab.tooltipContentClass\">\n <ng-container\n *ngTemplateOutlet=\"\n tabHeaderTemplate;\n context: {\n tab: tab\n }\n \"></ng-container>\n </li>\n <li\n *ngIf=\"!tab.tooltipText\"\n class=\"cps-tab\"\n (click)=\"!tab.disabled ? selectTab(tabIndex) : ''\"\n [ngClass]=\"{ active: tab.active, disabled: tab.disabled }\">\n <ng-container\n *ngTemplateOutlet=\"\n tabHeaderTemplate;\n context: {\n tab: tab\n }\n \"></ng-container>\n </li>\n </ng-container>\n </ul>\n <div\n class=\"nav-btn nav-btn-forward\"\n *ngIf=\"!forwardBtnVisible\"\n #forwardBtn\n (click)=\"navForward()\">\n <cps-icon icon=\"chevron-down\" color=\"text-dark\"></cps-icon>\n </div>\n</div>\n<div\n class=\"cps-tab-content\"\n [ngClass]=\"{ 'cps-tab-content-subtabs': isSubTabs }\">\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n [@slideInOut]=\"animationState\"\n *ngIf=\"tab.active && animationType === 'slide'\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n <div\n [@fadeInOut]=\"animationState\"\n *ngIf=\"tab.active && animationType === 'fade'\">\n <ng-container [ngTemplateOutlet]=\"tab.content\"></ng-container>\n </div>\n </ng-container>\n</div>\n\n<ng-template #tabHeaderTemplate let-tab=\"tab\">\n <cps-icon *ngIf=\"tab.icon\" class=\"cps-tab-icon\" [icon]=\"tab.icon\"> </cps-icon>\n <a class=\"cps-tab-link\">{{ tab.label }}</a>\n <ng-container *ngIf=\"tab.badgeValue\">\n <div\n *ngIf=\"tab.badgeTooltip\"\n class=\"cps-tab-badge\"\n [cpsTooltip]=\"tab.badgeTooltip\">\n <span>{{ tab.badgeValue }}</span>\n </div>\n <div *ngIf=\"!tab.badgeTooltip\" class=\"cps-tab-badge\">\n <span>{{ tab.badgeValue }}</span>\n </div>\n </ng-container>\n</ng-template>\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport {\n CpsButtonToggleComponent,\n CpsButtonToggleOption\n} from '../cps-button-toggle/cps-button-toggle.component';\nimport { CpsAutocompleteComponent } from '../cps-autocomplete/cps-autocomplete.component';\nimport { CpsTooltipPosition } from '../../directives/cps-tooltip.directive';\nimport { CpsInfoCircleComponent } from '../cps-info-circle/cps-info-circle.component';\n\nexport interface CpsTime {\n hours: string;\n minutes: string;\n seconds?: string;\n dayPeriod?: 'AM' | 'PM';\n}\n\n/**\n * CpsTimepickerComponent allows to pick a specific time from a set of available options or input it manually.\n * @group Components\n */\n@Component({\n selector: 'cps-timepicker',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CpsButtonToggleComponent,\n CpsAutocompleteComponent,\n CpsInfoCircleComponent\n ],\n templateUrl: './cps-timepicker.component.html',\n styleUrls: ['./cps-timepicker.component.scss']\n})\nexport class CpsTimepickerComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n dayPeriodOptions = [\n { label: 'AM', value: 'AM' },\n { label: 'PM', value: 'PM' }\n ] as CpsButtonToggleOption[];\n\n hoursOptions: { label: string; value: string }[] = [];\n\n minutesOptions = this._getRange(0, 59).map((m) => ({\n value: m.toString().padStart(2, '0'),\n label: m.toString().padStart(2, '0')\n }));\n\n secondsOptions: { label: string; value: string }[] = [];\n\n private _statusChangesSubscription: Subscription = new Subscription();\n\n /**\n * Label of the timepicker.\n * @group Props\n */\n @Input() label = '';\n\n /**\n * Determines whether the timepicker is disabled.\n * @group Props\n */\n @Input() disabled = false;\n\n /**\n * Determines whether the timepicker uses 24-hour format.\n * @group Props\n */\n @Input() use24HourTime = false;\n\n /**\n * Determines whether the timepicker has seconds.\n * @group Props\n */\n @Input() withSeconds = false;\n\n /**\n * Bottom hint text for the timepicker.\n * @group Props\n */\n @Input() hint = '';\n\n /**\n * Hides hint and validation errors.\n * @group Props\n */\n @Input() hideDetails = false;\n\n /**\n * When it is not an empty string, an info icon is displayed to show text for more info.\n * @group Props\n */\n @Input() infoTooltip = '';\n\n /**\n * InfoTooltip class for styling.\n * @group Props\n */\n @Input() infoTooltipClass = 'cps-tooltip-content';\n\n /**\n * Max width of infoTooltip, of type number denoting pixels or string.\n * @group Props\n */\n @Input() infoTooltipMaxWidth: number | string = '100%';\n\n /**\n * Determines whether the infoTooltip is persistent.\n * @group Props\n */\n @Input() infoTooltipPersistent = false;\n\n /**\n * Position of infoTooltip, it can be 'top', 'bottom', 'left' or 'right'.\n * @group Props\n */\n @Input() infoTooltipPosition: CpsTooltipPosition = 'top';\n\n /**\n * Value of the timepicker.\n * @group Props\n */\n @Input() set value(value: CpsTime | undefined) {\n if (!value) value = undefined;\n this._value = value;\n this.onChange(value);\n }\n\n get value(): CpsTime | undefined {\n return this._value;\n }\n\n /**\n * Callback to invoke on value change.\n * @param {string} string - value changed.\n * @group Emits\n */\n @Output() valueChanged = new EventEmitter<CpsTime>();\n\n @ViewChild('hoursField')\n hoursField!: CpsAutocompleteComponent;\n\n @ViewChild('minutesField')\n minutesField!: CpsAutocompleteComponent;\n\n @ViewChild('secondsField')\n secondsField?: CpsAutocompleteComponent;\n\n error = '';\n hoursError = '';\n minutesError = '';\n secondsError = '';\n\n private _value: CpsTime | undefined = undefined;\n\n constructor(@Self() @Optional() private _control: NgControl) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this._initHoursOptions();\n\n if (this.withSeconds) {\n this.secondsOptions = this._getRange(0, 59).map((m) => ({\n value: m.toString().padStart(2, '0'),\n label: m.toString().padStart(2, '0')\n }));\n }\n\n this._statusChangesSubscription = this._control?.statusChanges?.subscribe(\n () => {\n this._checkErrors();\n }\n ) as Subscription;\n }\n\n ngAfterViewInit(): void {\n if (this.hoursField) this.hoursField.isTimePickerField = true;\n if (this.minutesField) this.minutesField.isTimePickerField = true;\n if (this.secondsField) this.secondsField.isTimePickerField = true;\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 // 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 // eslint-disable-next-line @typescript-eslint/no-empty-function\n setDisabledState(disabled: boolean) {}\n\n writeValue(value: CpsTime) {\n this.value = value;\n }\n\n onFieldBlur() {\n this._control?.control?.markAsTouched();\n this._checkErrors();\n }\n\n updateHours(hours: string) {\n const userInput = this.hoursField?.inputText || hours || '';\n if (userInput) {\n this._initValue();\n const h = parseInt(userInput, 10);\n if (!isNaN(h) && this.value) {\n if (h >= 13 && h <= 23 && !this.use24HourTime) {\n this.value.dayPeriod = 'PM';\n }\n }\n }\n\n if (this.value?.hours !== hours) {\n if (this.value) this.value.hours = hours;\n }\n this._tryUpdateValue();\n }\n\n updateMinutes(minutes: string) {\n minutes = minutes || '';\n if (minutes) this._initValue();\n if (this.value?.minutes !== minutes) {\n if (this.value) this.value.minutes = minutes;\n }\n this._tryUpdateValue();\n }\n\n updateSeconds(seconds: string) {\n seconds = seconds || '';\n if (seconds) this._initValue();\n if (this.value?.seconds !== seconds) {\n if (this.value) this.value.seconds = seconds;\n }\n this._tryUpdateValue();\n }\n\n updateDayPeriod(dayPeriod: 'AM' | 'PM') {\n if (dayPeriod) this._initValue();\n if (this.value?.dayPeriod !== dayPeriod) {\n if (this.value) this.value.dayPeriod = dayPeriod;\n }\n this._tryUpdateValue();\n }\n\n numberOnly(event: any): boolean {\n const charCode = event.which ? event.which : event.keyCode;\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\n return false;\n }\n return true;\n }\n\n private _initValue() {\n if (!this.value) {\n this.value = {\n hours: '',\n minutes: ''\n };\n }\n if (!this.use24HourTime && !('dayPeriod' in this.value)) {\n this.value.dayPeriod = 'AM';\n }\n if (this.withSeconds && !('seconds' in this.value)) {\n this.value.seconds = '';\n }\n }\n\n private _isValueValid() {\n if (!this.value) return false;\n if (!this.value.hours || !this.value.minutes) return false;\n if (this.withSeconds && !this.value.seconds) return false;\n if (!this.use24HourTime && !this.value.dayPeriod) return false;\n return true;\n }\n\n private _updateErrors() {\n this.error = 'Time is invalid';\n this.hoursError = this.value?.hours ? '' : this.error;\n this.minutesError = this.value?.minutes ? '' : this.error;\n if (this.withSeconds)\n this.secondsError = this.value?.seconds ? '' : this.error;\n }\n\n private _setErrors(error: string) {\n this.error = error;\n this.hoursError = error;\n this.minutesError = error;\n this.secondsError = this.withSeconds ? error : '';\n }\n\n private _checkErrors() {\n if (!this._control) return;\n\n if (this.value && !this._isValueValid()) {\n this._updateErrors();\n return;\n }\n\n const errors = this._control?.errors;\n\n if (!this._control?.control?.touched || !errors) {\n this._setErrors('');\n return;\n }\n\n if ('required' in errors) {\n this._setErrors('Field is required');\n return;\n }\n\n const errArr = Object.values(errors);\n if (errArr.length < 1) {\n this._setErrors('');\n return;\n }\n const message = errArr.find((msg) => typeof msg === 'string');\n\n this._setErrors(message || 'Unknown error');\n }\n\n private _initHoursOptions() {\n const getHourAlias = (h: number) => {\n h = h === 12 ? 0 : h + 12;\n return h.toString().padStart(2, '0');\n };\n\n this.hoursOptions = (\n this.use24HourTime ? this._getRange(0, 23) : this._getRange(1, 12)\n ).map((h) => {\n const res: { value: string; label: string; alias?: string } = {\n value: h.toString().padStart(2, '0'),\n label: h.toString().padStart(2, '0')\n };\n if (!this.use24HourTime) res.alias = getHourAlias(h);\n return res;\n });\n }\n\n private _updateValue(value: CpsTime) {\n this.writeValue(value);\n this.onChange(value);\n this.valueChanged.emit(value);\n }\n\n private _tryUpdateValue() {\n if (\n this.value?.hours &&\n this.value?.minutes &&\n (!this.withSeconds || (this.withSeconds && this.value?.seconds)) &&\n (this.use24HourTime || (!this.use24HourTime && this.value?.dayPeriod))\n )\n this._updateValue(this.value);\n }\n\n private _getRange(startFrom: number, until: number) {\n return Array.from(\n { length: until + 1 - startFrom },\n (_, k) => k + startFrom\n );\n }\n}\n","<div class=\"cps-timepicker\">\n <div\n class=\"cps-timepicker-label\"\n [ngClass]=\"{ 'cps-timepicker-label-disabled': disabled }\"\n *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-timepicker-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-timepicker-body\">\n <cps-autocomplete\n #hoursField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"hoursOptions\"\n [withOptionsAliases]=\"!use24HourTime\"\n [useOptionsAliasesWhenNoMatch]=\"true\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.hours\"\n (valueChanged)=\"updateHours($event)\"\n [externalError]=\"hoursError\"\n placeholder=\"HH\"></cps-autocomplete>\n <span class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n #minutesField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"minutesOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.minutes\"\n (valueChanged)=\"updateMinutes($event)\"\n [externalError]=\"minutesError\"\n placeholder=\"MM\"></cps-autocomplete>\n <span *ngIf=\"withSeconds\" class=\"cps-timepicker-delimiter\">:</span>\n <cps-autocomplete\n *ngIf=\"withSeconds\"\n #secondsField\n (keypress)=\"numberOnly($event)\"\n width=\"60\"\n [options]=\"secondsOptions\"\n [hideDetails]=\"true\"\n [disabled]=\"disabled\"\n [showChevron]=\"false\"\n [showEmptyMessage]=\"false\"\n (blurred)=\"onFieldBlur()\"\n [returnObject]=\"false\"\n [value]=\"value?.seconds\"\n (valueChanged)=\"updateSeconds($event)\"\n [externalError]=\"secondsError\"\n placeholder=\"SS\"></cps-autocomplete>\n <cps-button-toggle\n *ngIf=\"!use24HourTime\"\n class=\"cps-timepicker-am-pm-selector\"\n [options]=\"dayPeriodOptions\"\n [disabled]=\"disabled\"\n [value]=\"value?.dayPeriod || 'AM'\"\n (valueChanged)=\"updateDayPeriod($event)\">\n </cps-button-toggle>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-timepicker-hint\">\n {{ hint }}\n </div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-timepicker-error\">\n {{ error }}\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { convertSize } from '../../utils/internal/size-utils';\nimport { CpsIconComponent } from '../cps-icon/cps-icon.component';\nimport { CpsProgressLinearComponent } from '../cps-progress-linear/cps-progress-linear.component';\nimport { Observable, catchError, of, take } from 'rxjs';\n\n/**\n * CpsFileUploadComponent is an advanced uploader with dragdrop support.\n * @group Components\n */\n@Component({\n selector: 'cps-file-upload',\n standalone: true,\n imports: [CommonModule, CpsIconComponent, CpsProgressLinearComponent],\n templateUrl: './cps-file-upload.component.html',\n styleUrls: ['./cps-file-upload.component.scss']\n})\nexport class CpsFileUploadComponent implements OnInit {\n /**\n * Expected extensions of a file to be uploaded. E.g. 'doc or .doc'.\n * @group Props\n */\n @Input() extensions: string[] = [];\n\n /**\n * Expected file description. E.g. 'Word document'.\n * @group Props\n */\n @Input() fileDesc = 'Any file';\n\n /**\n * Width of the component, a number denoting pixels or a string.\n * @group Props\n */\n @Input() width: number | string = '100%';\n\n /**\n * Callback for uploaded file processing.\n * @group Props\n */\n @Input() fileProcessingCallback?: (file: File) => Observable<boolean> =\n undefined;\n\n /**\n * Callback to invoke when file is uploaded.\n * @param {File} File\n * @group Emits\n */\n @Output() fileUploaded = new EventEmitter<File>();\n\n /**\n * Callback to invoke when file upload fails.\n * @param {string} - file name\n * @group Emits\n */\n @Output() fileUploadFailed = new EventEmitter<string>();\n\n /**\n * Callback to invoke when uploaded file is removed.\n * @param {string} - file name\n * @group Emits\n */\n @Output() uploadedFileRemoved = new EventEmitter<string>();\n\n isDragoverFile = false;\n uploadedFile?: File;\n extensionsString = '';\n extensionsStringAsterisks = '';\n\n isProcessingFile = false;\n\n ngOnInit(): void {\n this.width = convertSize(this.width);\n this.extensions = this.extensions.map((ext) =>\n ext.startsWith('.') ? ext : '.' + ext\n );\n this.extensionsString = this.extensions.join(', ');\n this.extensionsStringAsterisks = this.extensions\n .map((ext) => '*' + ext)\n .join(', ');\n }\n\n tryUploadFile(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n this.isDragoverFile = false;\n let file: File | undefined;\n\n if (event.type === 'drop') {\n file = (event as DragEvent).dataTransfer?.files.item(0) ?? undefined;\n } else {\n const files = (event.target as HTMLInputElement).files;\n if (!files || files.length < 1) return;\n file = files.item(0) ?? undefined;\n }\n\n if (!this._isFileExtensionValid(file)) {\n this.fileUploadFailed.emit(file?.name ?? '');\n return;\n }\n\n this.uploadedFile = file;\n if (this.uploadedFile) {\n this.fileUploaded.emit(this.uploadedFile);\n if (this.fileProcessingCallback) {\n this.isProcessingFile = true;\n this.fileProcessingCallback(this.uploadedFile)\n .pipe(\n take(1),\n catchError(() => {\n return of(false);\n })\n )\n .subscribe((res) => {\n if (!res) this.removeUploadedFile();\n this.isProcessingFile = false;\n });\n }\n }\n }\n\n removeUploadedFile() {\n const name = this.uploadedFile?.name ?? '';\n this.uploadedFile = undefined;\n this.uploadedFileRemoved.emit(name);\n }\n\n private _isFileExtensionValid(file?: File) {\n if (!file) return false;\n\n if (this.extensions.length < 1) return true;\n\n for (const ext of this.extensions) {\n if (file.name.endsWith(ext)) return true;\n }\n\n return false;\n }\n}\n","<div class=\"cps-file-upload\" [ngStyle]=\"{ width: width }\">\n <div\n class=\"cps-file-upload-dropzone\"\n [ngClass]=\"{\n 'dragged-over': isDragoverFile,\n 'with-uploads': uploadedFile?.name\n }\"\n (dragend)=\"isDragoverFile = false\"\n (dragenter)=\"isDragoverFile = true\"\n (dragleave)=\"isDragoverFile = false\"\n (dragover)=\"isDragoverFile = true\"\n (mouseleave)=\"isDragoverFile = false\"\n (drop)=\"tryUploadFile($event)\">\n <input\n (change)=\"tryUploadFile($event)\"\n type=\"file\"\n [accept]=\"extensionsString\"\n title=\"\" />\n <cps-icon icon=\"export\" size=\"large\" color=\"text-darkest\"></cps-icon>\n <div class=\"cps-file-upload-dropzone-title\">\n Drag&Drop or choose a file to upload\n </div>\n <span\n class=\"cps-file-upload-dropzone-file-desc\"\n *ngIf=\"fileDesc || extensionsStringAsterisks\"\n >{{ fileDesc }}\n {{\n extensionsStringAsterisks ? '(' + extensionsStringAsterisks + ')' : ''\n }}</span\n >\n <cps-progress-linear\n *ngIf=\"isProcessingFile && uploadedFile\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"cps-file-upload-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"uploadedFile\" class=\"cps-file-upload-uploaded-files\">\n <div class=\"cps-file-upload-uploaded-file\">\n <div class=\"cps-file-upload-uploaded-file-title\">\n <cps-icon\n class=\"cps-file-upload-uploaded-file-status-icon\"\n [icon]=\"isProcessingFile ? 'pending' : 'toast-success'\"\n [color]=\"isProcessingFile ? 'warn' : 'success'\">\n </cps-icon>\n <div class=\"cps-file-upload-uploaded-file-name\">\n {{ uploadedFile.name }}\n </div>\n </div>\n <cps-icon\n *ngIf=\"!isProcessingFile\"\n class=\"cps-file-upload-uploaded-file-remove-icon\"\n icon=\"remove\"\n color=\"error\"\n (click)=\"removeUploadedFile()\">\n </cps-icon>\n </div>\n </div>\n</div>\n","import { Observable, Subject, take } from 'rxjs';\nimport { CpsDialogComponent } from '../internal/components/cps-dialog/cps-dialog.component';\n\nexport class CpsDialogRef<T = any> {\n private _containerInstance!: CpsDialogComponent;\n\n _setContainerInstance(instance: CpsDialogComponent) {\n this._containerInstance = instance;\n this._handleContainerEvents();\n }\n\n private _handleContainerEvents() {\n this._containerInstance?._openStateChanged.pipe(take(1)).subscribe(() => {\n this._onOpen.next();\n });\n this._containerInstance?._dragStarted.subscribe((event: MouseEvent) => {\n this._onDragStart.next(event);\n });\n this._containerInstance?._dragEnded.subscribe((event: MouseEvent) => {\n this._onDragEnd.next(event);\n });\n this._containerInstance?._resizeStarted.subscribe((event: MouseEvent) => {\n this._onResizeStart.next(event);\n });\n this._containerInstance?._resizeEnded.subscribe((event: MouseEvent) => {\n this._onResizeEnd.next(event);\n });\n this._containerInstance?._maximizedStateChanged.subscribe(\n (value: boolean) => {\n this._onMaximize.next(value);\n }\n );\n }\n\n /**\n * The instance of the component opened into the dialog.\n * @group Props\n */\n componentInstance!: T;\n\n /**\n * Closes the dialog.\n * @group Method\n */\n close(result?: any) {\n if (this.disableClose) return;\n this._onClose.next(result);\n }\n\n /**\n * Destroys the dialog.\n * @group Method\n */\n destroy() {\n this._onDestroy.next();\n }\n\n /**\n * Sets dialog as full screen.\n * @group Method\n */\n maximize() {\n this._containerInstance?.toggleMaximized(true);\n }\n\n /**\n * Switches back from full screen dialog size to normal size.\n * @group Method\n */\n minimize() {\n this._containerInstance?.toggleMaximized(false);\n }\n\n /**\n * Checks whether the dialog is currently opened.\n * @group Method\n */\n isOpen() {\n return this._containerInstance?.visible || false;\n }\n\n /**\n * Checks whether the dialog is maximized.\n * @group Method\n */\n isMaximized() {\n return this._containerInstance?.maximized || false;\n }\n\n private readonly _onOpen = new Subject<void>();\n /**\n * Event triggered on dialog is opened.\n * @group Events\n */\n onOpen: Observable<void> = this._onOpen.asObservable();\n\n private readonly _onClose = new Subject<any>();\n /**\n * Event triggered on dialog is closed.\n * @param {any} result - Close result.\n * @group Events\n */\n onClose: Observable<any> = this._onClose.asObservable();\n\n private readonly _onDestroy = new Subject<void>();\n /**\n * Event triggered on dialog is destroyed.\n * @group Events\n */\n onDestroy: Observable<void> = this._onDestroy.asObservable();\n\n private readonly _onDragStart = new Subject<MouseEvent>();\n /**\n * Event triggered on drag start.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onDragStart: Observable<MouseEvent> = this._onDragStart.asObservable();\n\n private readonly _onDragEnd = new Subject<MouseEvent>();\n /**\n * Event triggered on drag end.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onDragEnd: Observable<MouseEvent> = this._onDragEnd.asObservable();\n\n private readonly _onResizeStart = new Subject<MouseEvent>();\n /**\n * Event triggered on resize start.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onResizeStart: Observable<MouseEvent> = this._onResizeStart.asObservable();\n\n private readonly _onResizeEnd = new Subject<MouseEvent>();\n /**\n * Event triggered on resize end.\n * @param {MouseEvent} event - Mouse event.\n * @group Events\n */\n onResizeEnd: Observable<MouseEvent> = this._onResizeEnd.asObservable();\n\n private readonly _onMaximize = new Subject<boolean>();\n /**\n * Event triggered on dialog maximized state changed.\n * @param {boolean} value - boolean value.\n * @group Events\n */\n onMaximize: Observable<boolean> = this._onMaximize.asObservable();\n\n /**\n * Specifies whether the user is allowed to close the dialog.\n * @group Props\n */\n disableClose?: boolean;\n}\n","import { CpsTooltipPosition } from '../../../directives/cps-tooltip.directive';\n\nexport class CpsDialogConfig<T = any> {\n /**\n * An object to pass to the component loaded inside the Dialog.\n */\n data?: T;\n /**\n * Determines whether to show the header or not.\n */\n showHeader?: boolean;\n /**\n * Header text of the dialog.\n */\n headerTitle?: string;\n /**\n * Header information tooltip.\n */\n headerInfoTooltip?: string;\n /**\n * Header information tooltip position.\n */\n headerInfoTooltipPosition?: CpsTooltipPosition;\n /**\n * Header icon.\n */\n headerIcon?: string;\n /**\n * Header icon color.\n */\n headerIconColor?: string;\n /**\n * Determines whether to show the header left border.\n */\n showHeaderLeftBorder?: boolean;\n /**\n * Determines whether to show the header bottom border.\n */\n showHeaderBottomBorder?: boolean;\n /**\n * Identifies the element (or elements) that labels the element it is applied to.\n */\n ariaLabelledBy?: string;\n /**\n * Width of the dialog.\n */\n width?: string;\n /**\n * Height of the dialog.\n */\n height?: string;\n /**\n * Min-width of the dialog.\n */\n minWidth?: string;\n /**\n * Min-height of the dialog.\n */\n minHeight?: string;\n /**\n * Max-width of the dialog.\n */\n maxWidth?: string;\n /**\n * Max-height of the dialog.\n */\n maxHeight?: string;\n /**\n * Specifies if pressing escape key should hide the dialog.\n */\n closeOnEscape?: boolean;\n /**\n * Base zIndex value to use in layering.\n */\n baseZIndex?: number;\n /**\n * Determines whether to automatically manage layering.\n */\n autoZIndex?: boolean;\n /**\n * Specifies whether the user is allowed to close the dialog.\n */\n disableClose?: boolean;\n /**\n * Inline style of the component.\n */\n style?: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n */\n styleClass?: string;\n /**\n * Inline style of the content.\n */\n contentStyle?: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the content.\n */\n contentStyleClass?: string;\n /**\n * Transition options of the animation.\n */\n transitionOptions?: string;\n /**\n * Adds a close button to the header to hide the dialog.\n */\n showCloseBtn?: boolean;\n /**\n * Defines if background should be blocked when dialog is displayed.\n */\n modal?: boolean;\n /**\n * When modal dialog is displayed, determines whether background should be blurred.\n */\n blurredBackground?: boolean;\n /**\n * Style class of the mask.\n */\n maskStyleClass?: string;\n /**\n * Enables resizing of the content.\n */\n resizable?: boolean;\n /**\n * Enables dragging to change the position using header.\n */\n draggable?: boolean;\n /**\n * Keeps dialog in the viewport.\n */\n keepInViewport?: boolean;\n /**\n * Minimum value for the left coordinate of dialog in dragging.\n */\n minX?: number;\n /**\n * Minimum value for the top coordinate of dialog in dragging.\n */\n minY?: number;\n /**\n * Determines whether the dialog can be displayed full screen.\n */\n maximizable?: boolean;\n /**\n * Determines whether the dialog is initially opened as full screen.\n */\n maximized?: boolean;\n /**\n * Position of the dialog, options are \"center\", \"top\", \"bottom\", \"left\", \"right\", \"top-left\", \"top-right\", \"bottom-left\" or \"bottom-right\".\n */\n position?:\n | 'center'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[cpsDialogContent]'\n})\nexport class CpsDialogContentDirective {\n // eslint-disable-next-line no-useless-constructor\n constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import {\n animate,\n animation,\n AnimationEvent,\n style,\n transition,\n trigger,\n useAnimation\n} from '@angular/animations';\nimport { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EventEmitter,\n Inject,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n Type,\n ViewChild,\n ViewEncapsulation,\n ViewRef\n} from '@angular/core';\nimport { PrimeNGConfig, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { CpsDialogContentDirective } from '../../directives/cps-dialog-content.directive';\nimport { CpsDialogConfig } from '../../../utils/cps-dialog-config';\nimport { CpsDialogRef } from '../../../utils/cps-dialog-ref';\nimport { CpsButtonComponent } from '../../../../../components/cps-button/cps-button.component';\nimport { CpsInfoCircleComponent } from '../../../../../components/cps-info-circle/cps-info-circle.component';\nimport { CpsIconComponent } from '../../../../../components/cps-icon/cps-icon.component';\n\nconst showAnimation = animation([\n style({ transform: '{{transform}}', opacity: 0 }),\n animate('{{transition}}', style({ transform: 'none', opacity: 1 }))\n]);\n\nconst hideAnimation = animation([\n animate('{{transition}}', style({ transform: '{{transform}}', opacity: 0 }))\n]);\n\ntype Nullable<T = void> = T | null | undefined;\ntype VoidListener = () => void | null | undefined;\n\n@Component({\n selector: 'cps-dialog',\n standalone: true,\n imports: [\n CommonModule,\n SharedModule,\n CpsDialogContentDirective,\n CpsButtonComponent,\n CpsInfoCircleComponent,\n CpsIconComponent\n ],\n templateUrl: './cps-dialog.component.html',\n styleUrls: ['./cps-dialog.component.scss'],\n animations: [\n trigger('animation', [\n transition('void => visible', [useAnimation(showAnimation)]),\n transition('visible => void', [useAnimation(hideAnimation)])\n ])\n ],\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None\n})\nexport class CpsDialogComponent implements AfterViewInit, OnDestroy {\n visible = true;\n\n componentRef: Nullable<ComponentRef<any>>;\n\n resizing: boolean | undefined;\n\n dragging: boolean | undefined;\n\n maximized: boolean | undefined;\n\n _style: any = {};\n\n originalStyle: any;\n\n lastPageX: number | undefined;\n\n lastPageY: number | undefined;\n\n @ViewChild(CpsDialogContentDirective)\n insertionPoint: Nullable<CpsDialogContentDirective>;\n\n @ViewChild('mask') maskViewChild: Nullable<ElementRef>;\n @ViewChild('content') contentViewChild: Nullable<ElementRef>;\n @ViewChild('header') headerViewChild: Nullable<ElementRef>;\n\n childComponentType: Nullable<Type<any>>;\n\n container: Nullable<HTMLDivElement>;\n\n wrapper: Nullable<HTMLElement>;\n\n documentEscapeListener!: VoidListener | null;\n\n maskClickListener!: VoidListener | null;\n\n transformOptions = 'scale(0.7)';\n\n documentResizeListener!: VoidListener | null;\n\n documentResizeEndListener!: VoidListener | null;\n\n documentDragListener!: VoidListener | null;\n\n documentDragEndListener!: VoidListener | null;\n\n _openStateChanged = new EventEmitter<void>();\n _dragStarted = new EventEmitter<MouseEvent>();\n _dragEnded = new EventEmitter<MouseEvent>();\n _resizeStarted = new EventEmitter<MouseEvent>();\n _resizeEnded = new EventEmitter<MouseEvent>();\n _maximizedStateChanged = new EventEmitter<boolean>();\n\n get minX(): number {\n return this.config.minX ? this.config.minX : 0;\n }\n\n get minY(): number {\n return this.config.minY ? this.config.minY : 0;\n }\n\n get keepInViewport(): boolean {\n return this.config.keepInViewport || false;\n }\n\n get maximizable(): boolean {\n return this.config.maximizable || false;\n }\n\n get draggable(): boolean {\n return this.config.draggable || false;\n }\n\n get resizable(): boolean {\n return this.config.resizable || false;\n }\n\n get style(): any {\n return this._style;\n }\n\n set style(value: any) {\n if (value) {\n this._style = { ...value };\n this.originalStyle = value;\n }\n }\n\n get position(): string {\n return this.config.position || '';\n }\n\n get parent() {\n const domElements = Array.from(\n this.document.getElementsByClassName('cps-dialog')\n );\n return domElements.length > 1 ? domElements.pop() : undefined;\n }\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 private _dialogRef: CpsDialogRef,\n private _cdRef: ChangeDetectorRef,\n public renderer: Renderer2,\n public config: CpsDialogConfig,\n public zone: NgZone,\n public primeNGConfig: PrimeNGConfig\n ) {}\n\n ngAfterViewInit() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.loadChildComponent(this.childComponentType!);\n\n if (this.config.maximized && this.maximizable) {\n this.toggleMaximized();\n }\n this._cdRef.detectChanges();\n }\n\n loadChildComponent(componentType: Type<any>) {\n const viewContainerRef = this.insertionPoint?.viewContainerRef;\n viewContainerRef?.clear();\n\n this.componentRef = viewContainerRef?.createComponent(componentType);\n if (this._dialogRef)\n this._dialogRef.componentInstance = this.componentRef?.instance;\n }\n\n moveOnTop() {\n if (this.config.autoZIndex !== false) {\n ZIndexUtils.set(\n 'modal',\n this.container,\n (this.config.baseZIndex || 0) + this.primeNGConfig.zIndex.modal\n );\n (this.wrapper as HTMLElement).style.zIndex = String(\n parseInt((this.container as HTMLDivElement).style.zIndex, 10) - 1\n );\n }\n }\n\n onAnimationStart(event: AnimationEvent) {\n switch (event.toState) {\n case 'visible':\n this.container = event.element;\n this.wrapper = (this.container as HTMLDivElement).parentElement;\n this.moveOnTop();\n if (this.parent) {\n this.unbindGlobalListeners();\n }\n this.bindGlobalListeners();\n\n if (this.config.modal !== false) {\n this.enableModality();\n }\n this.focus();\n break;\n\n case 'void':\n if (this.wrapper && this.config.modal !== false) {\n if (this.config.blurredBackground) {\n DomHandler.addClass(\n this.wrapper,\n 'cps-dialog-blurred-overlay-leave'\n );\n } else DomHandler.addClass(this.wrapper, 'cps-dialog-overlay-leave');\n }\n break;\n }\n }\n\n onAnimationEnd(event: AnimationEvent) {\n if (event.toState === 'void') {\n this.onContainerDestroy();\n this._dialogRef.destroy();\n } else {\n this._openStateChanged.emit();\n }\n }\n\n onContainerDestroy() {\n this.unbindGlobalListeners();\n\n if (this.container && this.config.autoZIndex !== false) {\n ZIndexUtils.clear(this.container);\n }\n\n if (this.config.modal !== false) {\n this.disableModality();\n }\n this.container = null;\n }\n\n close() {\n if (this.config?.disableClose || this._dialogRef?.disableClose) return;\n\n this.visible = false;\n this._cdRef.markForCheck();\n }\n\n hide() {\n if (this.config?.disableClose) return;\n\n if (this._dialogRef) {\n if (!this._dialogRef.disableClose) this._dialogRef.close();\n }\n }\n\n enableModality() {\n if (!this.config.disableClose) {\n this.maskClickListener = this.renderer.listen(\n this.wrapper,\n 'mousedown',\n (event: any) => {\n if (this.wrapper && this.wrapper.isSameNode(event.target)) {\n this.hide();\n }\n }\n );\n }\n\n if (this.config.modal !== false) {\n DomHandler.addClass(this.document.body, 'cps-overflow-hidden');\n }\n }\n\n disableModality() {\n if (this.wrapper) {\n if (!this.config.disableClose) {\n this.unbindMaskClickListener();\n }\n\n if (this.config.modal !== false) {\n DomHandler.removeClass(this.document.body, 'cps-overflow-hidden');\n }\n\n if (!(this._cdRef as ViewRef).destroyed) {\n this._cdRef.detectChanges();\n }\n }\n }\n\n focus() {\n const focusable = DomHandler.getFocusableElements(\n this.container as HTMLDivElement\n );\n if (focusable && focusable.length > 0) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => focusable[0].focus(), 5);\n });\n }\n }\n\n toggleMaximized(value?: boolean) {\n if (!this.maximizable) return;\n if (typeof value === 'boolean') {\n if (value === this.maximized || (!value && !this.maximized)) return;\n this.maximized = value;\n } else this.maximized = !this.maximized;\n\n if (this.maximized) {\n DomHandler.addClass(this.document.body, 'cps-overflow-hidden');\n } else {\n DomHandler.removeClass(this.document.body, 'cps-overflow-hidden');\n }\n\n this._maximizedStateChanged.emit(this.maximized);\n }\n\n initResize(event: MouseEvent) {\n if (this.resizable) {\n if (!this.documentResizeListener) {\n this.bindDocumentResizeListeners();\n }\n\n this.resizing = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n DomHandler.addClass(this.document.body, 'cps-unselectable-text');\n this._resizeStarted.emit(event);\n }\n }\n\n onResize(event: MouseEvent) {\n if (this.resizing) {\n const deltaX = event.pageX - (this.lastPageX as number);\n const deltaY = event.pageY - (this.lastPageY as number);\n const containerWidth = DomHandler.getOuterWidth(this.container);\n const containerHeight = DomHandler.getOuterHeight(this.container);\n const contentHeight = DomHandler.getOuterHeight(\n (<ElementRef>this.contentViewChild).nativeElement\n );\n const contentWidth = DomHandler.getOuterWidth(\n (<ElementRef>this.contentViewChild).nativeElement\n );\n const headerHeight = this.headerViewChild\n ? DomHandler.getOuterHeight(\n (<ElementRef>this.headerViewChild).nativeElement\n )\n : 0;\n const headerWidth = this.headerViewChild\n ? DomHandler.getOuterWidth(\n (<ElementRef>this.headerViewChild).nativeElement\n )\n : 0;\n let newWidth = containerWidth + deltaX;\n let newHeight = containerHeight + deltaY;\n const minWidth = (this.container as HTMLDivElement).style.minWidth;\n const minHeight = (this.container as HTMLDivElement).style.minHeight;\n const offset = (this.container as HTMLDivElement).getBoundingClientRect();\n const viewport = DomHandler.getViewport();\n const hasBeenDragged =\n !parseInt((this.container as HTMLDivElement).style.top) ||\n !parseInt((this.container as HTMLDivElement).style.left);\n\n if (hasBeenDragged) {\n newWidth += deltaX;\n newHeight += deltaY;\n }\n\n if (\n (!minWidth || newWidth > parseInt(minWidth)) &&\n offset.left + newWidth < viewport.width\n ) {\n const newContentWidth = contentWidth + newWidth - containerWidth;\n const newHeaderWidth = headerWidth + newWidth - containerWidth;\n this._style.width =\n Math.max(newWidth, newContentWidth, newHeaderWidth) + 'px';\n (this.container as HTMLDivElement).style.width = this._style.width;\n }\n\n if (\n (!minHeight || newHeight > parseInt(minHeight)) &&\n offset.top + newHeight < viewport.height\n ) {\n const newContentHeight = contentHeight + newHeight - containerHeight;\n this._style.height =\n Math.max(newHeight, headerHeight + newContentHeight) + 'px';\n (this.container as HTMLDivElement).style.height = this._style.height;\n }\n\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n }\n }\n\n resizeEnd(event: MouseEvent) {\n if (this.resizing) {\n this.resizing = false;\n DomHandler.removeClass(this.document.body, 'cps-unselectable-text');\n this._resizeEnded.emit(event);\n }\n }\n\n initDrag(event: MouseEvent) {\n function isHeaderActionButton(element: HTMLElement | null): boolean {\n while (\n element &&\n !element.classList.contains('cps-dialog-header-action-button') &&\n !element.classList.contains('cps-dialog-header-info-circle')\n ) {\n element = element.parentElement;\n }\n\n return !!element;\n }\n\n if (!this.draggable || this.maximized) return;\n\n if (isHeaderActionButton(<HTMLElement>event.target)) return;\n\n this.dragging = true;\n this.lastPageX = event.pageX;\n this.lastPageY = event.pageY;\n\n (this.container as HTMLDivElement).style.margin = '0';\n DomHandler.addClass(this.document.body, 'cps-unselectable-text');\n this._dragStarted.emit(event);\n }\n\n onDrag(event: MouseEvent) {\n if (this.dragging) {\n const containerWidth = DomHandler.getOuterWidth(this.container);\n const containerHeight = DomHandler.getOuterHeight(this.container);\n const deltaX = event.pageX - (this.lastPageX as number);\n const deltaY = event.pageY - (this.lastPageY as number);\n const offset = (this.container as HTMLDivElement).getBoundingClientRect();\n const leftPos = offset.left + deltaX;\n const topPos = offset.top + deltaY;\n const viewport = DomHandler.getViewport();\n\n (this.container as HTMLDivElement).style.position = 'fixed';\n\n if (this.keepInViewport) {\n if (leftPos >= this.minX && leftPos + containerWidth < viewport.width) {\n this._style.left = leftPos + 'px';\n this.lastPageX = event.pageX;\n (this.container as HTMLDivElement).style.left = leftPos + 'px';\n }\n\n if (topPos >= this.minY && topPos + containerHeight < viewport.height) {\n this._style.top = topPos + 'px';\n this.lastPageY = event.pageY;\n (this.container as HTMLDivElement).style.top = topPos + 'px';\n }\n } else {\n this.lastPageX = event.pageX;\n (this.container as HTMLDivElement).style.left = leftPos + 'px';\n this.lastPageY = event.pageY;\n (this.container as HTMLDivElement).style.top = topPos + 'px';\n }\n }\n }\n\n endDrag(event: MouseEvent) {\n if (this.dragging) {\n this.dragging = false;\n DomHandler.removeClass(this.document.body, 'cps-unselectable-text');\n this._dragEnded.emit(event);\n this._cdRef.detectChanges();\n }\n }\n\n resetPosition() {\n (this.container as HTMLDivElement).style.position = '';\n (this.container as HTMLDivElement).style.left = '';\n (this.container as HTMLDivElement).style.top = '';\n (this.container as HTMLDivElement).style.margin = '';\n }\n\n bindDocumentDragListener() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentDragListener = this.renderer.listen(\n this.document,\n 'mousemove',\n this.onDrag.bind(this)\n );\n });\n }\n }\n\n bindDocumentDragEndListener() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentDragEndListener = this.renderer.listen(\n this.document,\n 'mouseup',\n this.endDrag.bind(this)\n );\n });\n }\n }\n\n unbindDocumentDragEndListener() {\n if (this.documentDragEndListener) {\n this.documentDragEndListener();\n this.documentDragListener = null;\n }\n }\n\n unbindDocumentDragListener() {\n if (this.documentDragListener) {\n this.documentDragListener();\n this.documentDragListener = null;\n }\n }\n\n bindDocumentResizeListeners() {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n this.documentResizeListener = this.renderer.listen(\n this.document,\n 'mousemove',\n this.onResize.bind(this)\n );\n this.documentResizeEndListener = this.renderer.listen(\n this.document,\n 'mouseup',\n this.resizeEnd.bind(this)\n );\n });\n }\n }\n\n unbindDocumentResizeListeners() {\n if (this.documentResizeListener && this.documentResizeEndListener) {\n this.documentResizeListener();\n this.documentResizeEndListener();\n this.documentResizeListener = null;\n this.documentResizeEndListener = null;\n }\n }\n\n bindGlobalListeners() {\n if (\n this.config.closeOnEscape !== false &&\n this.config.disableClose !== false\n ) {\n this.bindDocumentEscapeListener();\n }\n\n if (this.resizable) {\n this.bindDocumentResizeListeners();\n }\n\n if (this.draggable) {\n this.bindDocumentDragListener();\n this.bindDocumentDragEndListener();\n }\n }\n\n unbindGlobalListeners() {\n this.unbindDocumentEscapeListener();\n this.unbindDocumentResizeListeners();\n this.unbindDocumentDragListener();\n this.unbindDocumentDragEndListener();\n }\n\n bindDocumentEscapeListener() {\n const documentTarget: any = this.maskViewChild\n ? this.maskViewChild.nativeElement.ownerDocument\n : 'document';\n\n this.documentEscapeListener = this.renderer.listen(\n documentTarget,\n 'keydown',\n (event) => {\n if (event.which === 27) {\n if (\n parseInt((this.container as HTMLDivElement).style.zIndex) ===\n ZIndexUtils.getCurrent()\n ) {\n this.hide();\n }\n }\n }\n );\n }\n\n unbindDocumentEscapeListener() {\n if (this.documentEscapeListener) {\n this.documentEscapeListener();\n this.documentEscapeListener = null;\n }\n }\n\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n\n ngOnDestroy() {\n this.onContainerDestroy();\n this.componentRef?.destroy();\n }\n}\n","<div\n #mask\n [ngClass]=\"{\n 'cps-dialog-mask': true,\n 'cps-dialog-overlay': config.modal !== false,\n 'cps-dialog-overlay-enter':\n config.modal !== false && !config.blurredBackground,\n 'cps-dialog-blurred-overlay cps-dialog-blurred-overlay-enter':\n config.modal !== false && config.blurredBackground,\n 'cps-dialog-left': position === 'left',\n 'cps-dialog-right': position === 'right',\n 'cps-dialog-top': position === 'top',\n 'cps-dialog-bottom': position === 'bottom',\n 'cps-dialog-top-left': position === 'topleft' || position === 'top-left',\n 'cps-dialog-top-right': position === 'topright' || position === 'top-right',\n 'cps-dialog-bottom-left':\n position === 'bottomleft' || position === 'bottom-left',\n 'cps-dialog-bottom-right':\n position === 'bottomright' || position === 'bottom-right'\n }\"\n [class]=\"config.maskStyleClass || ''\">\n <div\n #container\n [ngClass]=\"{\n 'cps-dialog': true,\n 'cps-dialog-resizable': resizable,\n 'cps-dialog-draggable': draggable && !maximized,\n 'cps-dialog-dragging': dragging,\n 'cps-dialog-maximized': maximized\n }\"\n [ngStyle]=\"config.style\"\n [class]=\"config.styleClass || ''\"\n [@animation]=\"{\n value: 'visible',\n params: {\n transform: transformOptions,\n transition:\n config.transitionOptions || '150ms cubic-bezier(0, 0, 0.2, 1)'\n }\n }\"\n (@animation.start)=\"onAnimationStart($event)\"\n (@animation.done)=\"onAnimationEnd($event)\"\n role=\"dialog\"\n *ngIf=\"visible\"\n [style.width]=\"config.width\"\n [style.height]=\"config.height\"\n [style.minWidth]=\"config.minWidth\"\n [style.minHeight]=\"config.minHeight\"\n [style.maxWidth]=\"maximized ? '' : config.maxWidth\"\n [style.maxHeight]=\"maximized ? '' : config.maxHeight\">\n <div\n *ngIf=\"resizable && !maximized\"\n class=\"cps-dialog-resizable-handle\"\n style=\"z-index: 90\"\n (mousedown)=\"initResize($event)\"></div>\n <div\n #header\n *ngIf=\"config.showHeader !== false\"\n class=\"cps-dialog-header\"\n [ngClass]=\"{\n 'cps-dialog-header-left-bordered':\n config.showHeaderLeftBorder !== false,\n 'cps-dialog-header-bottom-bordered':\n config.showHeaderBottomBorder !== false\n }\"\n (mousedown)=\"initDrag($event)\">\n <div class=\"cps-dialog-header-left\">\n <div class=\"cps-dialog-header-icon\">\n <cps-icon\n *ngIf=\"config.headerIcon\"\n [icon]=\"config.headerIcon\"\n [color]=\"config.headerIconColor || 'currentColor'\">\n </cps-icon>\n </div>\n <span class=\"cps-dialog-header-title\">{{ config.headerTitle }}</span>\n <div class=\"cps-dialog-header-info-circle\">\n <cps-info-circle\n *ngIf=\"config.headerInfoTooltip\"\n size=\"small\"\n [tooltipPosition]=\"config.headerInfoTooltipPosition || 'top'\"\n [tooltipText]=\"config.headerInfoTooltip\">\n </cps-info-circle>\n </div>\n </div>\n <div class=\"cps-dialog-header-action-buttons\">\n <cps-button\n *ngIf=\"maximizable\"\n class=\"cps-dialog-header-action-button\"\n [icon]=\"maximized ? 'minimize' : 'maximize'\"\n size=\"small\"\n width=\"32\"\n color=\"graphite\"\n type=\"borderless\"\n (clicked)=\"toggleMaximized()\">\n </cps-button>\n <cps-button\n *ngIf=\"config.showCloseBtn !== false\"\n class=\"cps-dialog-header-action-button\"\n icon=\"close-x-2\"\n size=\"small\"\n width=\"32\"\n color=\"graphite\"\n type=\"borderless\"\n (clicked)=\"hide()\">\n </cps-button>\n </div>\n </div>\n <div\n #content\n class=\"cps-dialog-content\"\n [ngStyle]=\"config.contentStyle\"\n [class]=\"config.contentStyleClass || ''\">\n <ng-template cpsDialogContent></ng-template>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CpsButtonComponent } from '../../../../../components/cps-button/cps-button.component';\nimport { CpsIconComponent } from '../../../../../components/cps-icon/cps-icon.component';\nimport { CpsDialogRef } from '../../../utils/cps-dialog-ref';\nimport { CpsDialogConfig } from '../../../utils/cps-dialog-config';\n\n@Component({\n standalone: true,\n imports: [CpsButtonComponent, CpsIconComponent],\n selector: 'cps-confirmation',\n templateUrl: './cps-confirmation.component.html',\n styleUrls: ['./cps-confirmation.component.scss']\n})\nexport class CpsConfirmationComponent {\n subtitle = '';\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private _dialogRef: CpsDialogRef,\n private _config: CpsDialogConfig\n ) {\n this.subtitle = this._config.data.subtitle;\n }\n\n close(confirm: boolean) {\n this._dialogRef?.close(confirm);\n }\n}\n","<div class=\"cps-confirmation\">\n <span class=\"cps-confirmation-subtitle\">{{ subtitle }}</span>\n <div class=\"cps-confirmation-buttons\">\n <cps-button\n type=\"outlined\"\n label=\"No\"\n (clicked)=\"close(false)\"\n color=\"prepared\">\n </cps-button>\n <cps-button\n data-cy=\"btn-yes\"\n label=\"Yes\"\n (clicked)=\"close(true)\"\n color=\"prepared\">\n </cps-button>\n </div>\n</div>\n","import {\n Injectable,\n Injector,\n Type,\n EmbeddedViewRef,\n ComponentRef,\n Inject,\n ViewContainerRef\n} from '@angular/core';\nimport { DynamicDialogInjector } from 'primeng/dynamicdialog';\nimport { DOCUMENT } from '@angular/common';\nimport { CpsDialogRef } from './utils/cps-dialog-ref';\nimport { CpsDialogConfig } from './utils/cps-dialog-config';\nimport { CpsDialogComponent } from './internal/components/cps-dialog/cps-dialog.component';\nimport { CpsConfirmationComponent } from './internal/components/cps-confirmation/cps-confirmation.component';\n\n/**\n * Service for showing CpsDialog.\n * @group Services\n */\n@Injectable()\nexport class CpsDialogService {\n dialogComponentRefMap: Map<CpsDialogRef, ComponentRef<CpsDialogComponent>> =\n new Map();\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private viewContainerRef: ViewContainerRef,\n private injector: Injector,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n public open(componentType: Type<any>, config: CpsDialogConfig): CpsDialogRef {\n const dialogRef = this.appendDialogComponentToBody(config);\n\n const instance = this.dialogComponentRefMap.get(dialogRef)?.instance;\n if (instance) instance.childComponentType = componentType;\n\n return dialogRef;\n }\n\n public openConfirmationDialog(config: CpsDialogConfig): CpsDialogRef {\n if (!config.headerTitle) config.headerTitle = 'Confirm the action';\n if (!config.headerIcon) config.headerIcon = 'warning';\n if (!config.headerIconColor) config.headerIconColor = 'calm';\n if (!config.minWidth) config.minWidth = '400px';\n if (!config.maxWidth) config.maxWidth = '600px';\n const dialogRef = this.appendDialogComponentToBody(config);\n\n const instance = this.dialogComponentRefMap.get(dialogRef)?.instance;\n if (instance) instance.childComponentType = CpsConfirmationComponent;\n\n return dialogRef;\n }\n\n private appendDialogComponentToBody(config: CpsDialogConfig) {\n const map = new WeakMap();\n map.set(CpsDialogConfig, config);\n\n const dialogRef = new CpsDialogRef();\n map.set(CpsDialogRef, dialogRef);\n\n const sub = dialogRef.onClose.subscribe(() => {\n this.dialogComponentRefMap.get(dialogRef)?.instance.close();\n });\n\n const destroySub = dialogRef.onDestroy.subscribe(() => {\n this.removeDialogComponentFromBody(dialogRef);\n destroySub.unsubscribe();\n sub.unsubscribe();\n });\n\n const componentRef = this.viewContainerRef.createComponent(\n CpsDialogComponent,\n { injector: new DynamicDialogInjector(this.injector, map) }\n );\n\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n this.document.body.appendChild(domElem);\n\n this.dialogComponentRefMap.set(dialogRef, componentRef);\n dialogRef._setContainerInstance(componentRef.instance);\n\n return dialogRef;\n }\n\n private removeDialogComponentFromBody(dialogRef: CpsDialogRef) {\n if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {\n return;\n }\n\n const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);\n if (dialogComponentRef) {\n this.viewContainerRef.detach(\n this.viewContainerRef.indexOf(dialogComponentRef.hostView)\n );\n dialogComponentRef.destroy();\n this.dialogComponentRefMap.delete(dialogRef);\n }\n }\n}\n","/* eslint-disable no-unused-vars */\n\n/**\n * An enumeration of appearances of notifications.\n */\nexport enum CpsNotificationAppearance {\n FILLED = 'filled',\n OUTLINED = 'outlined'\n}\n\n/**\n * An enumeration of positions of notifications.\n */\nexport enum CpsNotificationPosition {\n CENTER = 'center',\n TOP = 'top',\n BOTTOM = 'bottom',\n LEFT = 'left',\n RIGHT = 'right',\n TOPLEFT = 'top-left',\n TOPRIGHT = 'top-right',\n BOTTOMLEFT = 'bottom-left',\n BOTTOMRIGHT = 'bottom-right'\n}\n\nexport interface CpsNotificationConfig {\n /**\n * Position of the notification, options are \"center\", \"top\", \"bottom\", \"left\", \"right\", \"top-left\", \"top-right\", \"bottom-left\" or \"bottom-right\".\n * @default top-right\n */\n position?: CpsNotificationPosition;\n /**\n * Appearance of the notification, options are \"filled\" or \"outlined\".\n * @default filled\n */\n appearance?: CpsNotificationAppearance;\n /**\n * The duration (in milliseconds) that the notification will be displayed before automatically closing.\n * Value 0 means that the notification is persistent and will not be automatically closed.\n * @default 5000\n */\n timeout?: number;\n /**\n * Max amount of notifications that can be simultaneously visualized within a positioned container.\n * @default undefined\n */\n maxAmount?: number;\n /**\n * Max width of the notification of type number denoting pixels or string.\n * @default undefined\n */\n maxWidth?: string;\n}\n","/* eslint-disable no-unused-vars */\n\n/**\n * An enumeration of the different types of notifications that can be displayed.\n */\nexport enum CpsNotificationType {\n SUCCESS = 'success',\n ERROR = 'error',\n WARNING = 'warning',\n INFO = 'info'\n}\n\nexport interface CpsNotificationData {\n /**\n * Message to be displayed in the notification.\n */\n message?: string;\n /**\n * Details to be displayed in the notification.\n */\n details?: string;\n /**\n * Type of the notification, options are \"warning\", \"success\", \"error\" or \"info\".\n */\n type?: CpsNotificationType;\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { CpsButtonComponent } from '../../../../../components/cps-button/cps-button.component';\nimport { CpsIconComponent } from '../../../../../components/cps-icon/cps-icon.component';\nimport { CommonModule } from '@angular/common';\nimport { convertSize } from '../../../../../utils/internal/size-utils';\nimport {\n CpsNotificationAppearance,\n CpsNotificationConfig\n} from '../../../utils/cps-notification-config';\nimport {\n CpsNotificationData,\n CpsNotificationType\n} from '../../../utils/internal/cps-notification-data';\nimport {\n animate,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\n@Component({\n standalone: true,\n imports: [CommonModule, CpsButtonComponent, CpsIconComponent],\n selector: 'cps-toast',\n templateUrl: './cps-toast.component.html',\n styleUrls: ['./cps-toast.component.scss'],\n animations: [\n trigger('toastState', [\n state(\n 'visible',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('void => *', [\n style({ transform: 'translateY(100%)', opacity: 0 }),\n animate('200ms ease-out')\n ]),\n transition('* => void', [\n animate(\n '200ms ease-in',\n style({\n height: 0,\n opacity: 0,\n transform: 'translateY(-100%)'\n })\n )\n ])\n ])\n ]\n})\nexport class CpsToastComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() config!: CpsNotificationConfig;\n @Input() data!: CpsNotificationData;\n\n /**\n * Callback to invoke on toast close.\n * @param {any}\n * @group Emits\n */\n @Output() closed = new EventEmitter();\n\n timeout: any;\n maxWidth: string | undefined;\n filled = true;\n color = '';\n\n // eslint-disable-next-line no-useless-constructor\n constructor(private zone: NgZone) {}\n\n ngOnInit(): void {\n this.maxWidth = convertSize(this.config?.maxWidth || '');\n this.filled = this.config?.appearance === CpsNotificationAppearance.FILLED;\n this.color =\n this.data?.type === CpsNotificationType.WARNING\n ? 'warn'\n : this.data?.type || CpsNotificationType.ERROR;\n }\n\n ngAfterViewInit(): void {\n this.initiateTimeout();\n }\n\n ngOnDestroy() {\n this.clearTimeout();\n }\n\n close() {\n this.clearTimeout();\n this.closed.emit();\n }\n\n initiateTimeout() {\n if (this.config?.timeout === 0) return;\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => {\n this.close();\n }, this.config?.timeout || 5000);\n });\n }\n\n clearTimeout() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n}\n","<div\n (mouseenter)=\"clearTimeout()\"\n (mouseleave)=\"initiateTimeout()\"\n [class]=\"data.type\"\n [@toastState]=\"{\n value: 'visible'\n }\"\n [ngStyle]=\"{ 'max-width': maxWidth }\"\n class=\"cps-toast-content\">\n <div class=\"cps-toast-icon\" [ngClass]=\"{ filled: filled }\">\n <cps-icon\n [icon]=\"'toast-' + data.type\"\n [color]=\"filled ? '#fff' : color\"\n size=\"normal\"></cps-icon>\n </div>\n <div class=\"cps-toast-message\">\n <p class=\"cps-toast-message-header\">{{ data.message || '' }}</p>\n <p class=\"cps-toast-message-details\" *ngIf=\"data.details\">\n {{ data.details }}\n </p>\n </div>\n <div class=\"cps-toast-buttons\">\n <cps-button\n (clicked)=\"close()\"\n [color]=\"color\"\n icon=\"close-x\"\n class=\"cps-toast-close-button\"\n width=\"40\"\n type=\"borderless\"></cps-button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { PrimeNGConfig, SharedModule } from 'primeng/api';\nimport { ZIndexUtils } from 'primeng/utils';\nimport {\n CpsNotificationConfig,\n CpsNotificationPosition\n} from '../../../utils/cps-notification-config';\nimport { CpsNotificationData } from '../../../utils/internal/cps-notification-data';\nimport { CpsButtonComponent } from '../../../../../components/cps-button/cps-button.component';\nimport { CpsInfoCircleComponent } from '../../../../../components/cps-info-circle/cps-info-circle.component';\nimport { CpsIconComponent } from '../../../../../components/cps-icon/cps-icon.component';\nimport { CpsToastComponent } from '../cps-toast/cps-toast.component';\nimport { animateChild, query, transition, trigger } from '@angular/animations';\n\ntype Nullable<T = void> = T | null | undefined;\n\n@Component({\n selector: 'cps-notification-container',\n standalone: true,\n imports: [\n CommonModule,\n SharedModule,\n CpsButtonComponent,\n CpsInfoCircleComponent,\n CpsIconComponent,\n CpsToastComponent\n ],\n templateUrl: './cps-notification-container.component.html',\n styleUrls: ['./cps-notification-container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('notificationAnimation', [\n transition(':enter, :leave', [query('@*', animateChild())])\n ])\n ]\n})\nexport class CpsNotificationContainerComponent\n implements AfterViewInit, OnDestroy\n{\n /**\n * Position of the notification container.\n * @group Props\n */\n @Input() position = CpsNotificationPosition.TOPRIGHT;\n\n /**\n * Max amount of notifications to be displayed within the container.\n * @group Props\n */\n @Input() maxAmount?: number;\n\n /**\n * Callback to invoke on notification close.\n * @param {CpsNotificationConfig} CpsNotificationConfig - notification closed.\n * @group Emits\n */\n @Output() closed = new EventEmitter();\n\n CpsNotificationPosition = CpsNotificationPosition;\n\n @ViewChild('container') container: Nullable<ElementRef>;\n\n wrapper: Nullable<HTMLElement>;\n\n notifications: {\n data: CpsNotificationData;\n config: CpsNotificationConfig;\n }[] = [];\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n public renderer: Renderer2,\n public zone: NgZone,\n public primeNGConfig: PrimeNGConfig,\n private _cdRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit() {\n this.wrapper = (\n this.container?.nativeElement as HTMLDivElement\n ).parentElement;\n this.moveOnTop();\n }\n\n addNotification(config: CpsNotificationConfig, data: CpsNotificationData) {\n if (\n this.notifications.length > 0 &&\n this.notifications.length === this.maxAmount\n ) {\n this.notifications.pop();\n }\n this.notifications.unshift({ data, config });\n }\n\n onCloseNotification(index: number) {\n this.notifications.splice(index, 1);\n this.closed.emit();\n this._cdRef.detectChanges();\n }\n\n moveOnTop() {\n ZIndexUtils.set(\n 'modal',\n this.container?.nativeElement,\n this.primeNGConfig.zIndex.modal\n );\n (this.wrapper as HTMLElement).style.zIndex = String(\n parseInt(\n (this.container?.nativeElement as HTMLDivElement).style.zIndex,\n 10\n ) - 1\n );\n }\n\n ngOnDestroy() {\n if (this.container?.nativeElement) {\n ZIndexUtils.clear(this.container.nativeElement);\n }\n }\n}\n","<div\n [ngClass]=\"{\n 'cps-notification-container-mask': true,\n 'cps-notification-container-left':\n position === CpsNotificationPosition.LEFT,\n 'cps-notification-container-right':\n position === CpsNotificationPosition.RIGHT,\n 'cps-notification-container-top': position === CpsNotificationPosition.TOP,\n 'cps-notification-container-bottom':\n position === CpsNotificationPosition.BOTTOM,\n 'cps-notification-container-top-left':\n position === CpsNotificationPosition.TOPLEFT,\n 'cps-notification-container-top-right':\n position === CpsNotificationPosition.TOPRIGHT,\n 'cps-notification-container-bottom-left':\n position === CpsNotificationPosition.BOTTOMLEFT,\n 'cps-notification-container-bottom-right':\n position === CpsNotificationPosition.BOTTOMRIGHT\n }\">\n <div #container class=\"cps-notification-container\" role=\"notification\">\n <div\n #content\n class=\"cps-notification-container-content\"\n [ngStyle]=\"{\n 'align-items': [\n CpsNotificationPosition.RIGHT,\n CpsNotificationPosition.TOPRIGHT,\n CpsNotificationPosition.BOTTOMRIGHT\n ].includes(position)\n ? 'flex-end'\n : 'flex-start'\n }\">\n <cps-toast\n *ngFor=\"let notification of notifications; let i = index\"\n [data]=\"notification.data\"\n [config]=\"notification.config\"\n @notificationAnimation\n (closed)=\"onCloseNotification(i)\">\n </cps-toast>\n </div>\n </div>\n</div>\n","import {\n Injectable,\n EmbeddedViewRef,\n ComponentRef,\n Inject,\n ApplicationRef,\n createComponent\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n CpsNotificationAppearance,\n CpsNotificationConfig,\n CpsNotificationPosition\n} from './utils/cps-notification-config';\nimport {\n CpsNotificationData,\n CpsNotificationType\n} from './utils/internal/cps-notification-data';\nimport { CpsNotificationContainerComponent } from './internal/components/cps-notification-container/cps-notification-container.component';\n\n/**\n * Service for showing notifications.\n * @group Services\n */\n@Injectable({ providedIn: 'root' })\nexport class CpsNotificationService {\n private _containersMap: Map<\n CpsNotificationPosition,\n ComponentRef<CpsNotificationContainerComponent>\n > = new Map();\n\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private _appRef: ApplicationRef,\n @Inject(DOCUMENT) private document: Document\n ) {}\n\n public info(\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n this._createNotification(\n CpsNotificationType.INFO,\n message,\n details,\n config\n );\n }\n\n public warning(\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n this._createNotification(\n CpsNotificationType.WARNING,\n message,\n details,\n config\n );\n }\n\n public success(\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n this._createNotification(\n CpsNotificationType.SUCCESS,\n message,\n details,\n config\n );\n }\n\n public error(\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n this._createNotification(\n CpsNotificationType.ERROR,\n message,\n details,\n config\n );\n }\n\n public clear() {\n this._containersMap.forEach((container) => {\n this._appRef.detachView(container.hostView);\n container.destroy();\n });\n this._containersMap.clear();\n }\n\n private _createNotification(\n type: CpsNotificationType,\n message: string,\n details?: string,\n config?: CpsNotificationConfig\n ) {\n config = this._initConfig(config);\n const data: CpsNotificationData = { type, message, details };\n\n this._appendNotificationToContainer(data, config);\n }\n\n private _initConfig(config?: CpsNotificationConfig): CpsNotificationConfig {\n if (!config) config = {};\n if (!config.appearance)\n config.appearance = CpsNotificationAppearance.FILLED;\n if (!config.position) config.position = CpsNotificationPosition.TOPRIGHT;\n if (config.timeout === undefined || config.timeout === null)\n config.timeout = 5000;\n return config;\n }\n\n private _appendNotificationToContainer(\n data: CpsNotificationData,\n config: CpsNotificationConfig\n ) {\n const position = config.position || CpsNotificationPosition.TOPRIGHT;\n\n let containerComponentRef = this._containersMap.get(position);\n const found = !!containerComponentRef;\n\n if (!containerComponentRef) {\n containerComponentRef = createComponent(\n CpsNotificationContainerComponent,\n { environmentInjector: this._appRef.injector }\n );\n containerComponentRef.setInput('position', position);\n containerComponentRef.setInput('maxAmount', config.maxAmount);\n\n this._appRef.attachView(containerComponentRef.hostView);\n\n const domElem = (containerComponentRef.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n this.document.body.appendChild(domElem);\n\n containerComponentRef.instance.closed.subscribe(() => {\n this._tryRemoveContainer(position);\n });\n\n this._containersMap.set(position, containerComponentRef);\n }\n\n if (found && config.maxAmount)\n containerComponentRef.setInput('maxAmount', config.maxAmount);\n\n containerComponentRef.instance.addNotification(config, data);\n }\n\n private _tryRemoveContainer(position: CpsNotificationPosition) {\n const container = this._containersMap.get(position);\n\n if (!container?.instance || container.instance.notifications.length > 0)\n return;\n\n if (container) {\n this._appRef.detachView(container.hostView);\n container.destroy();\n this._containersMap.delete(position);\n }\n }\n}\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-group/cps-radio/cps-radio.component';\nexport * from './lib/components/cps-radio-group/cps-radio-group.component';\nexport * from './lib/components/cps-table/cps-table.component';\nexport * from './lib/components/cps-table/directives/cps-table-column-sortable.directive';\nexport * from './lib/components/cps-table/directives/cps-table-column-filter.directive';\nexport * from './lib/components/cps-table/directives/cps-table-header-selectable.directive';\nexport * from './lib/components/cps-table/directives/cps-table-row-selectable.directive';\nexport * from './lib/components/cps-table/cps-column-filter-types';\nexport * from './lib/components/cps-tree-table/cps-tree-table.component';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive';\nexport * from './lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.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-paginator/pipes/cps-paginate.pipe';\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-sidebar-menu/cps-sidebar-menu.component';\nexport * from './lib/components/cps-textarea/cps-textarea.component';\nexport * from './lib/components/cps-button-toggle/cps-button-toggle.component';\nexport * from './lib/components/cps-tab-group/cps-tab-group.component';\nexport * from './lib/components/cps-tab-group/cps-tab/cps-tab.component';\nexport * from './lib/components/cps-timepicker/cps-timepicker.component';\nexport * from './lib/components/cps-file-upload/cps-file-upload.component';\n\nexport * from './lib/directives/cps-tooltip.directive';\n\nexport * from './lib/services/cps-dialog/cps-dialog.service';\nexport * from './lib/services/cps-dialog/utils/cps-dialog-config';\nexport * from './lib/services/cps-dialog/utils/cps-dialog-ref';\n\nexport * from './lib/services/cps-notification/cps-notification.service';\nexport * from './lib/services/cps-notification/utils/cps-notification-config';\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","i4","i2.LabelByValuePipe","i5","i2","i1.CpsDialogRef","i2.CpsDialogConfig"],"mappings":"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"}