@agorapulse/ui-components 18.0.42 → 18.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agorapulse-ui-components-18.0.44.tgz +0 -0
- package/directives/checkbox.directive.d.ts +15 -43
- package/esm2022/directives/checkbox.directive.mjs +94 -253
- package/esm2022/legacy/select/select.component.mjs +2 -2
- package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +3 -3
- package/esm2022/nav-selector/utils/nav-selector.folding.mjs +3 -3
- package/esm2022/nav-selector/utils/nav-selector.single-select.mjs +5 -2
- package/esm2022/select/select-label-multiple/select-label-multiple.component.mjs +2 -2
- package/esm2022/select/select-label-single/select-label-single.component.mjs +2 -2
- package/esm2022/tag/tag.component.mjs +17 -20
- package/fesm2022/agorapulse-ui-components-directives.mjs +96 -254
- package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-select.mjs +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs +8 -5
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-select.mjs +2 -2
- package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-tag.mjs +16 -19
- package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -1
- package/package.json +1 -1
- package/tag/tag.component.d.ts +11 -7
- package/agorapulse-ui-components-18.0.42.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-directives.mjs","sources":["../../../libs/ui-components/directives/src/autosize-textarea.directive.ts","../../../libs/ui-components/directives/src/base-button.directive.ts","../../../libs/ui-components/directives/src/checkbox.directive.ts","../../../libs/ui-components/directives/src/default-image.directive.ts","../../../libs/ui-components/directives/src/ellipsis.directive.ts","../../../libs/ui-components/directives/src/equal-validator.directive.ts","../../../libs/ui-components/directives/src/frozen-gif.directive.ts","../../../libs/ui-components/directives/src/multi-style-text.directive.ts","../../../libs/ui-components/directives/src/agorapulse-ui-components-directives.ts"],"sourcesContent":["import { AfterContentChecked, Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: 'textarea[apAutosize]',\n standalone: true,\n})\n/**\n * expand textarea to fit content. Doesn't shrink.\n */\nexport class AutosizeTextareaDirective implements AfterContentChecked {\n static maxHeight: number = 200;\n\n constructor(public element: ElementRef) {}\n\n @HostListener('input')\n public onInput() {\n this.resize();\n }\n\n public ngAfterContentChecked() {\n this.resize();\n }\n\n public resize() {\n const style = this.element.nativeElement.style;\n const scrollHeight = this.element.nativeElement.scrollHeight;\n const actualHeight = this.element.nativeElement.offsetHeight;\n if (AutosizeTextareaDirective.maxHeight < scrollHeight) {\n // we arrived at the max\n style.overflow = 'auto';\n style.height = `${AutosizeTextareaDirective.maxHeight}px`;\n } else if (actualHeight < scrollHeight) {\n style.overflow = 'hidden';\n style.height = `${scrollHeight}px`;\n }\n }\n}\n","import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, inject, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[apBaseButton]',\n standalone: true,\n})\nexport class BaseButtonDirective implements AfterViewInit, OnInit {\n hostId: string | undefined = undefined;\n hostDataTest: string | undefined = undefined;\n hostType: string = 'button';\n\n private elementRef: ElementRef = inject(ElementRef);\n private changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n ngOnInit() {\n this.hostDataTest = this.elementRef.nativeElement.getAttribute('data-test');\n this.hostId = this.elementRef.nativeElement.getAttribute('id');\n this.elementRef.nativeElement.removeAttribute('data-test');\n this.elementRef.nativeElement.removeAttribute('id');\n }\n\n // Sometimes attributes like the id, or the data-test are dynamic and can change between the constructor and the initialization.\n // In order to have the last attributes value we check if it changes, and if it does, we run a mark for check to update the view.\n ngAfterViewInit(): void {\n const hostDataTest = this.elementRef.nativeElement.getAttribute('data-test');\n const hostId = this.elementRef.nativeElement.getAttribute('id');\n const hostType = this.elementRef.nativeElement.getAttribute('type');\n if (hostDataTest && this.hostDataTest !== hostDataTest) {\n this.hostDataTest = hostDataTest;\n this.elementRef.nativeElement.removeAttribute('data-test');\n this.changeDetectorRef.markForCheck();\n }\n if (hostId && this.hostId !== hostId) {\n this.hostId = hostId;\n this.elementRef.nativeElement.removeAttribute('id');\n this.changeDetectorRef.markForCheck();\n }\n if (hostType && this.hostType !== hostType) {\n this.hostType = hostType;\n this.elementRef.nativeElement.removeAttribute('type');\n this.changeDetectorRef.markForCheck();\n }\n }\n}\n","import { apCheck, SymbolComponent, SymbolRegistry } from '@agorapulse/ui-symbol';\nimport {\n booleanAttribute,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxDirective),\n multi: true,\n};\n\n/*\n Host bindings is important here:\n - This provides encapsulation and reactivity regardless of how the directive is used in templates.\n - It guarantees that properties like checked, disabled, required, and ARIA attributes always reflect\n only the directive's logic, not just consumer bindings.\n - So we need to have host bindings for all the properties that we want to control.\n - We could also use @HostListener.\n*/\n@Directive({\n selector: 'input[type=\"checkbox\"][apCheckbox]',\n standalone: true,\n providers: [\n AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR,\n {\n provide: NG_VALIDATORS,\n useExisting: CheckboxDirective,\n multi: true,\n },\n ],\n host: {\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[checked]': 'checked',\n '[attr.aria-label]': 'ariaLabel',\n '[attr.aria-labelledby]': 'ariaLabelledby',\n '[attr.aria-describedby]': 'ariaDescribedby',\n '[attr.data-test]': 'name',\n '[id]': 'name',\n },\n})\nexport class CheckboxDirective implements ControlValueAccessor, OnInit, OnDestroy {\n private readonly symbolRegistry = inject(SymbolRegistry);\n private readonly elementRef = inject(ElementRef<HTMLInputElement>);\n private readonly renderer = inject(Renderer2);\n private readonly viewContainer = inject(ViewContainerRef);\n\n @Input('aria-label') ariaLabel?: string;\n @Input('aria-labelledby') ariaLabelledby?: string;\n @Input('aria-describedby') ariaDescribedby?: string;\n \n @Input({\n transform: booleanAttribute,\n })\n disabled = false;\n \n @Input({\n transform: booleanAttribute,\n })\n set indeterminate(indeterminate: boolean) {\n if (indeterminate) {\n this._checked = false;\n }\n this._indeterminate = indeterminate;\n const input = this.elementRef.nativeElement;\n if (input) {\n input.indeterminate = indeterminate;\n }\n // Only update visibility if containers are ready\n if (this.checkmarkContainer && this.indeterminateContainer) {\n this.updateCheckmarkVisibility();\n }\n }\n\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n @Input() \n set checked(checked: boolean) {\n this._checked = checked;\n // Only update visibility if containers are ready\n if (this.checkmarkContainer && this.indeterminateContainer) {\n this.updateCheckmarkVisibility();\n }\n }\n \n get checked(): boolean {\n return this._checked;\n }\n\n @Input({\n transform: booleanAttribute,\n })\n required = false;\n\n @Input({\n required: true,\n })\n set name(name: string) {\n this._name = name;\n }\n get name(): string {\n return this._name;\n }\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private _checked = false;\n private _indeterminate = false;\n private _name = '';\n private _controlValueAccessorChangeFn: (value: boolean) => void = () => {};\n private _onTouched: () => void = () => {};\n \n private listeners: (() => void)[] = [];\n private styleElement!: HTMLStyleElement;\n private wrapper!: HTMLElement;\n private checkmarkContainer!: HTMLElement;\n private indeterminateContainer!: HTMLElement;\n private symbolComponent?: ComponentRef<SymbolComponent>;\n\n ngOnInit() {\n this.symbolRegistry.registerSymbols([apCheck]);\n this.createCheckboxStructure();\n this.setupEventListeners();\n }\n\n ngOnDestroy(): void {\n this.listeners.forEach(unlisten => unlisten());\n if (this.styleElement && this.styleElement.parentNode) {\n this.styleElement.parentNode.removeChild(this.styleElement);\n }\n if (this.symbolComponent) {\n this.symbolComponent.destroy();\n }\n if (this.checkmarkContainer && this.checkmarkContainer.parentNode) {\n this.checkmarkContainer.parentNode.removeChild(this.checkmarkContainer);\n }\n if (this.indeterminateContainer && this.indeterminateContainer.parentNode) {\n this.indeterminateContainer.parentNode.removeChild(this.indeterminateContainer);\n }\n // Move input back out of wrapper and remove wrapper\n if (this.wrapper && this.wrapper.parentNode) {\n const input = this.elementRef.nativeElement;\n this.renderer.insertBefore(this.wrapper.parentNode, input, this.wrapper);\n this.wrapper.parentNode.removeChild(this.wrapper);\n }\n }\n\n private createCheckboxStructure(): void {\n const input = this.elementRef.nativeElement;\n const parent = input.parentElement;\n \n // Hot take - Input doesn't need positioning since it will be wrapped\n \n // Make input's parent use inline-flex for alignment\n if (parent) {\n this.renderer.setStyle(parent, 'display', 'inline-flex');\n this.renderer.setStyle(parent, 'align-items', 'center');\n this.renderer.setStyle(parent, 'gap', 'var(--ref-spacing-xxs)');\n }\n \n this.renderer.addClass(input, 'ap-checkbox-styled');\n \n this.checkmarkContainer = this.createOverlayContainer('ap-checkbox-checkmark');\n \n this.wrapper = this.renderer.createElement('span');\n this.renderer.setStyle(this.wrapper, 'position', 'relative');\n this.renderer.setStyle(this.wrapper, 'display', 'inline-flex');\n this.renderer.setStyle(this.wrapper, 'align-items', 'center');\n this.renderer.setStyle(this.wrapper, 'vertical-align', 'middle');\n \n this.renderer.insertBefore(parent, this.wrapper, input);\n this.renderer.appendChild(this.wrapper, input);\n \n this.renderer.appendChild(this.wrapper, this.checkmarkContainer);\n \n this.indeterminateContainer = this.createOverlayContainer('ap-checkbox-indeterminate');\n \n this.renderer.appendChild(this.wrapper, this.indeterminateContainer);\n \n this.createCheckmarkSymbol();\n this.createIndeterminateBar();\n \n this.applyCheckboxStyles();\n \n this.updateCheckmarkVisibility();\n }\n\n private createOverlayContainer(className: string): HTMLElement {\n const container = this.renderer.createElement('span');\n this.renderer.addClass(container, className);\n this.renderer.setStyle(container, 'position', 'absolute');\n this.renderer.setStyle(container, 'top', '50%'); \n this.renderer.setStyle(container, 'left', '50%'); \n this.renderer.setStyle(container, 'transform', 'translate(-50%, -50%)');\n this.renderer.setStyle(container, 'width', 'auto'); \n this.renderer.setStyle(container, 'height', 'auto'); \n this.renderer.setStyle(container, 'display', 'flex');\n this.renderer.setStyle(container, 'justify-content', 'center');\n this.renderer.setStyle(container, 'align-items', 'center');\n this.renderer.setStyle(container, 'pointer-events', 'none');\n this.renderer.setStyle(container, 'opacity', '0');\n this.renderer.setStyle(container, 'z-index', '1');\n return container;\n }\n\n private createCheckmarkSymbol(): void {\n // Create the symbol component\n this.symbolComponent = this.viewContainer.createComponent(SymbolComponent);\n \n // Set inputs using setInput method for signal-based inputs\n this.symbolComponent.setInput('symbolId', 'check');\n this.symbolComponent.setInput('color', 'white');\n this.symbolComponent.setInput('size', 10);\n \n // Append the symbol to our checkmark container\n this.renderer.appendChild(this.checkmarkContainer, this.symbolComponent.location.nativeElement);\n }\n\n private createIndeterminateBar(): void {\n // Create the indeterminate bar element exactly like the component\n const bar = this.renderer.createElement('span');\n this.renderer.setStyle(bar, 'height', '1.5px');\n this.renderer.setStyle(bar, 'background', 'var(--ref-color-white)');\n this.renderer.setStyle(bar, 'width', '8px');\n \n // Append the bar to the indeterminate container\n this.renderer.appendChild(this.indeterminateContainer, bar);\n }\n\n private updateCheckmarkVisibility(): void {\n if (this.checkmarkContainer) {\n const opacity = this._checked && !this._indeterminate ? '1' : '0';\n this.renderer.setStyle(this.checkmarkContainer, 'opacity', opacity);\n }\n if (this.indeterminateContainer) {\n const opacity = this._indeterminate && !this._checked ? '1' : '0';\n this.renderer.setStyle(this.indeterminateContainer, 'opacity', opacity);\n }\n }\n\n private setupEventListeners(): void {\n const input = this.elementRef.nativeElement;\n \n // Input change listener (native checkbox change)\n const changeListener = this.renderer.listen(input, 'change', () => {\n this.onValueChange();\n });\n this.listeners.push(changeListener);\n \n // Listen for label clicks to ensure focus is maintained\n const parent = input.parentElement;\n if (parent) {\n const labelClickListener = this.renderer.listen(parent, 'click', (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n // If clicking on a label that targets our input, ensure focus\n if (target.tagName === 'LABEL' && target.getAttribute('for') === this.name) {\n // Small delay to ensure the label click is processed first\n setTimeout(() => {\n input.focus();\n }, 0);\n }\n });\n this.listeners.push(labelClickListener);\n }\n }\n\n private applyCheckboxStyles(): void {\n // Style the input directly without moving DOM elements\n const styles = `\n /* Complete reset and custom styling for our checkbox */\n input[type=\"checkbox\"].ap-checkbox-styled {\n /* Targeted reset of problematic properties */\n appearance: none !important;\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n \n /* Our custom styling - use !important to override any global styles */\n display: inline-block !important;\n width: 16px !important;\n height: 16px !important;\n min-width: 16px !important;\n min-height: 16px !important;\n margin: 0 !important;\n padding: 0 !important;\n border: 1px solid var(--ref-color-grey-60);\n border-radius: var(--sys-border-radius-sm);\n background: var(--ref-color-white);\n background-color: var(--ref-color-white);\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n vertical-align: middle;\n \n /* Ensure no other styles can interfere */\n box-shadow: none;\n text-decoration: none;\n font: inherit;\n color: inherit;\n letter-spacing: normal;\n word-spacing: normal;\n text-transform: none;\n text-indent: 0;\n text-shadow: none;\n text-align: start;\n }\n \n /* Hover state */\n input[type=\"checkbox\"].ap-checkbox-styled:hover {\n border-color: var(--ref-color-grey-80);\n }\n \n /* Active/pressed state */\n input[type=\"checkbox\"].ap-checkbox-styled:active {\n border-color: var(--ref-color-grey-100);\n }\n \n /* Checked state */\n input[type=\"checkbox\"].ap-checkbox-styled:checked {\n background: var(--ref-color-electric-blue-100);\n border-color: var(--ref-color-electric-blue-100);\n }\n \n /* Checked hover state */\n input[type=\"checkbox\"].ap-checkbox-styled:checked:hover {\n background: var(--ref-color-electric-blue-80);\n border-color: var(--ref-color-electric-blue-100);\n }\n \n /* Checked active/pressed state */\n input[type=\"checkbox\"].ap-checkbox-styled:checked:active {\n background: var(--ref-color-electric-blue-60);\n border-color: var(--ref-color-electric-blue-100);\n }\n \n /* Indeterminate state */\n input[type=\"checkbox\"].ap-checkbox-styled:indeterminate {\n background: var(--ref-color-electric-blue-100);\n border-color: var(--ref-color-electric-blue-100);\n }\n \n /* Disabled state */\n input[type=\"checkbox\"].ap-checkbox-styled:disabled {\n border-color: var(--ref-color-grey-20);\n background: var(--ref-color-grey-10);\n cursor: default;\n }\n \n input[type=\"checkbox\"].ap-checkbox-styled:disabled:checked {\n background: var(--ref-color-grey-20);\n }\n \n /* Focus state - only show on hover-capable devices like the component */\n @media (hover: hover) {\n input[type=\"checkbox\"].ap-checkbox-styled:focus:not(.disabled) {\n outline: 3px solid var(--ref-color-electric-blue-100) !important;\n outline-offset: 1px !important;\n }\n }\n \n /* Label styling - targets labels that follow our wrapper containing styled checkboxes */\n span:has(input[type=\"checkbox\"].ap-checkbox-styled) + label {\n display: flex;\n align-items: center;\n font-family: var(--comp-forms-label-font-family);\n font-size: var(--comp-forms-label-size);\n font-weight: var(--comp-forms-label-font-weight);\n line-height: var(--comp-forms-label-line-height);\n color: var(--comp-forms-label-text-color);\n }\n \n /* Empty label styling */\n span:has(input[type=\"checkbox\"].ap-checkbox-styled) + label:empty {\n display: none;\n }\n \n /* Disabled label styling */\n span:has(input[type=\"checkbox\"].ap-checkbox-styled:disabled) + label {\n color: var(--ref-color-grey-60);\n }\n \n /* Label hover styling */\n span:has(input[type=\"checkbox\"].ap-checkbox-styled) + label:hover:not(.disabled) {\n cursor: pointer;\n }\n \n /* Disabled label hover */\n span:has(input[type=\"checkbox\"].ap-checkbox-styled:disabled) + label:hover {\n cursor: default;\n }\n `;\n \n // Create and append style element\n this.styleElement = this.renderer.createElement('style');\n this.renderer.appendChild(this.styleElement, this.renderer.createText(styles));\n this.renderer.appendChild(document.head, this.styleElement);\n }\n\n\n onBlur(): void {\n this._onTouched();\n }\n\n private onValueChange(): void {\n if (!this.disabled) {\n const input = this.elementRef.nativeElement;\n \n if (this._indeterminate) {\n // When indeterminate, clicking should go to checked state\n this._checked = true;\n this._indeterminate = false;\n input.checked = true;\n input.indeterminate = false;\n } else {\n // Normal toggle behavior\n this._checked = input.checked;\n }\n \n this.updateCheckmarkVisibility();\n this.change.emit(this._checked);\n this._controlValueAccessorChangeFn(this._checked);\n }\n }\n\n\n // ControlValueAccessor implementation\n writeValue(value: boolean): void {\n this._checked = value;\n const input = this.elementRef.nativeElement;\n input.checked = value;\n // Ensure indeterminate state is properly set\n input.indeterminate = this._indeterminate;\n this.updateCheckmarkVisibility();\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this._controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n const input = this.elementRef.nativeElement;\n input.disabled = isDisabled;\n }\n\n validate() {\n const isNotValid = !this._checked && this.required;\n return (\n isNotValid && {\n invalid: true,\n }\n );\n }\n}","import { Directive, Input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'img[default]',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(error)': 'updateUrl()',\n '[src]': 'src',\n },\n})\nexport class DefaultImageDirective {\n @Input({\n required: true,\n })\n src = '';\n @Input() default = '';\n\n updateUrl() {\n if (this.default) {\n this.src = this.default;\n } else {\n this.src = 'assets/lib-ui-components/img/default-avatar.png';\n }\n }\n}\n","import { AfterContentChecked, Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Removes excess text from element until it fits in elements\n * and appends a ellipsis symbol to end of text. This requires that\n * the elements height be fixed\n *\n * @example\n * ```html\n * <p apEllipsis>Ullamco esse laborum</p>\n * ```\n *\n */\n@Directive({\n selector: '[apEllipsis]',\n standalone: true,\n})\nexport class EllipsisDirective implements AfterContentChecked {\n @Input() apEllipsisSeparator = '';\n @Input() apEllipsisClip = false;\n @Input() apEllipsisIndex = -2;\n @Input() apEllipsisChar = '...';\n @Input() apEllipsisClickable = false;\n\n @Output() apEllipsisRemovedElementsCount = new EventEmitter<number>();\n @Output() apEllipsisRemovedText = new EventEmitter<string>();\n\n private get hasOverflow(): boolean {\n const el: HTMLElement = this.el.nativeElement;\n return el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth;\n }\n\n constructor(private el: ElementRef) {}\n\n ngAfterContentChecked() {\n this.clipText();\n }\n\n private clipText(): void {\n const el: HTMLElement = this.el.nativeElement;\n let text = el.innerText;\n let removedText = '';\n if (this.apEllipsisIndex > -1) {\n removedText = text.substring(this.apEllipsisIndex, text.length - 1) + removedText;\n text = text.substring(0, this.apEllipsisIndex);\n el.innerText = `${text}${this.apEllipsisChar}`;\n\n if (this.apEllipsisClickable) {\n el.addEventListener('click', () => {\n el.innerText = `${text}${removedText}`;\n });\n }\n } else {\n while (this.hasOverflow && text.length > 0) {\n removedText = text[text.length - 1] + removedText;\n text = text.substring(0, text.length - 1);\n el.innerText = `${text}${this.apEllipsisChar}`;\n }\n }\n\n if (this.apEllipsisSeparator) {\n const removedElementsCount = removedText\n .split(this.apEllipsisSeparator)\n .filter(element => !!element && element.length > 0).length;\n if (removedElementsCount > 0) {\n this.apEllipsisRemovedElementsCount.emit(removedElementsCount);\n }\n }\n if (removedText && removedText.length > 0) {\n this.apEllipsisRemovedText.emit(removedText);\n }\n }\n}\n","// Based on https://scotch.io/tutorials/how-to-implement-a-custom-validator-directive-confirm-password-in-angular-2\nimport { Attribute, Directive, forwardRef } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => EqualValidatorDirective),\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class EqualValidatorDirective implements Validator {\n constructor(\n @Attribute('validateEqual') public validateEqual: string,\n @Attribute('validateEqualReference') public validateEqualReference: string\n ) {}\n\n validate(self: AbstractControl): { [key: string]: any } | null {\n const other = self.root.get(this.validateEqual);\n if (other) {\n if (this.isReference()) {\n if (self.value === other.value) {\n if (other.errors) {\n delete other.errors['validateEqual'];\n if (!Object.keys(other.errors).length) {\n other.setErrors(null);\n }\n } else {\n other.setErrors(null);\n }\n } else {\n other.setErrors({ validateEqual: false });\n }\n } else if (self.value !== other.value) {\n return { validateEqual: false };\n }\n }\n return null;\n }\n\n private isReference(): boolean {\n if (!this.validateEqualReference) {\n return false;\n }\n return this.validateEqualReference === 'true';\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\nexport class GifService {\n static isGif(src: string) {\n return src && src.split('?')[0].endsWith('.gif');\n }\n}\n\n/**\n * If the image is a GIF then replace the img element by a canvas containing a frozen gif.\n * Note 1: if the image is displayed under a condition, the condition must be applied on the parent of the image, so the\n * new canvas element will have the same condition.\n * Note 2: the image must not have the properties \"display\" and \"visibility\" in its style. Since they are used to frozen\n * the GIF. You need to apply this properties on the parent element.\n * Note 3: If the GIF is frozen, all the event are propagated to the image. However, all events are dispatched\n * with an Event instance. Ex: click event is not dispatched with a MouseEvent instance.\n */\n\n@Directive({\n selector: 'img[apFrozenGif]',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[src]': 'src',\n },\n standalone: true,\n})\nexport class FrozenGifDirective implements OnChanges {\n @Input({\n required: true,\n })\n src = '';\n @Input() apFrozen = true;\n // Add all the events that need to be propagated.\n @Input() apGifEvents: string[] = ['click'];\n\n private readonly element!: HTMLImageElement;\n private canvas: HTMLCanvasElement | null = null;\n\n constructor(private elementRef: ElementRef) {\n const element = this.elementRef.nativeElement;\n if (!(element instanceof HTMLImageElement)) {\n return;\n }\n\n this.element = element;\n }\n\n ngOnChanges(changes: any): void {\n let freeze = false;\n if (changes.src) {\n freeze = true;\n }\n if (changes.frozen) {\n if (changes.frozen.currentValue) {\n freeze = true;\n } else {\n this.unfreeze();\n }\n }\n\n if (freeze) {\n this.freeze();\n }\n }\n\n private freeze() {\n if (!GifService.isGif(this.src) || !this.apFrozen) {\n this.unfreeze();\n return;\n }\n\n // hack to avoid displaying the GIF before replacing it by the canvas\n this.element.style.visibility = 'hidden';\n this.element.addEventListener('load', () => this.addCanvas());\n }\n\n private addCanvas() {\n if (this.canvas) {\n this.canvas.remove();\n }\n\n this.canvas = document.createElement('canvas');\n this.canvas.width = this.element.width;\n this.canvas.height = this.element.height;\n this.canvas.getContext('2d')?.drawImage(this.element, 0, 0, this.canvas.width, this.canvas.height);\n for (let i = 0; i < this.element.attributes.length; i++) {\n const attr = this.element.attributes[i];\n if (attr.name === 'id') {\n // avoid two elements with the same id\n this.canvas.setAttribute('id', attr.value + '_frozenGif');\n } else if ((attr.name === 'style' && attr.value.includes('visibility: hidden;')) || attr.value.includes('display: none;')) {\n // remove the added 'visibility: hidden' and 'display: none'\n const styleValue = attr.value;\n this.canvas.setAttribute('style', styleValue.replace('visibility: hidden;', '').replace('display: none;', ''));\n } else if (attr.name !== '\"') {\n // test for invalid attributes\n this.canvas.setAttribute(attr.name, attr.value);\n }\n }\n\n this.addEvents();\n\n this.element.parentNode?.insertBefore(this.canvas, this.element);\n this.element.style.display = 'none';\n }\n\n private addEvents() {\n this.apGifEvents.forEach((eventName: string) => {\n this.canvas?.addEventListener(eventName, (ev: Event) =>\n this.element.dispatchEvent(\n // wm: find a way to dispatch the right event type\n new Event(ev.type, ev)\n )\n );\n });\n }\n\n private unfreeze() {\n if (this.canvas) {\n this.canvas.remove();\n this.canvas = null;\n }\n this.element.style.visibility = 'inherit';\n this.element.style.display = 'inherit';\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\nconst DATA_MST = 'data-mst';\n\n/**\n * This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.\n * The specific tags must this schema: <ng-container data-mst=\"STYLING-CLASSES\">TEXT</ng-container>.\n * Example: 'Lorem <ng-container data-mst=\"my-style\">ipsum</ng-container> dolor sit amet'.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[multiStyleText]',\n standalone: true,\n})\nexport class MultiStyleTextDirective {\n @Input() set multiStyleText(fullText: string) {\n // First remove previously added children (on update).\n this.renderer.setProperty(this.elRef.nativeElement, 'innerHTML', '');\n if (!fullText || fullText.length <= 0) {\n return;\n }\n\n this.renderer.setProperty(this.elRef.nativeElement, 'innerHTML', DOMPurify.sanitize(fullText.replace(/ng-container/g, 'span')));\n\n Array.from(this.elRef.nativeElement.children).forEach((childNode: Element) => {\n if (childNode.nodeType == 1 && childNode.tagName.toLowerCase() === 'span') {\n // Node.ELEMENT_NODE\n\n const span: HTMLElement = this.renderer.createElement('span');\n span.innerHTML = childNode.innerHTML;\n this.elRef.nativeElement.replaceChild(span, childNode);\n\n const mstValue = childNode.getAttribute(DATA_MST);\n if (mstValue) {\n const mstContents = mstValue.split(';');\n // Bind click events\n if (mstContents[1]) {\n this.renderer.listen(span, 'click', () => this.partEvent.emit(mstContents[1]));\n }\n // Add classes\n if (mstContents[0] && mstContents[0].length > 0) {\n this.renderer.setAttribute(span, 'class', mstContents[0].replace(',', ' '));\n }\n }\n }\n });\n }\n\n @Output() partEvent = new EventEmitter<string>();\n\n public constructor(\n private elRef: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-directives.mjs","sources":["../../../libs/ui-components/directives/src/autosize-textarea.directive.ts","../../../libs/ui-components/directives/src/base-button.directive.ts","../../../libs/ui-components/directives/src/checkbox.directive.ts","../../../libs/ui-components/directives/src/default-image.directive.ts","../../../libs/ui-components/directives/src/ellipsis.directive.ts","../../../libs/ui-components/directives/src/equal-validator.directive.ts","../../../libs/ui-components/directives/src/frozen-gif.directive.ts","../../../libs/ui-components/directives/src/multi-style-text.directive.ts","../../../libs/ui-components/directives/src/agorapulse-ui-components-directives.ts"],"sourcesContent":["import { AfterContentChecked, Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: 'textarea[apAutosize]',\n standalone: true,\n})\n/**\n * expand textarea to fit content. Doesn't shrink.\n */\nexport class AutosizeTextareaDirective implements AfterContentChecked {\n static maxHeight: number = 200;\n\n constructor(public element: ElementRef) {}\n\n @HostListener('input')\n public onInput() {\n this.resize();\n }\n\n public ngAfterContentChecked() {\n this.resize();\n }\n\n public resize() {\n const style = this.element.nativeElement.style;\n const scrollHeight = this.element.nativeElement.scrollHeight;\n const actualHeight = this.element.nativeElement.offsetHeight;\n if (AutosizeTextareaDirective.maxHeight < scrollHeight) {\n // we arrived at the max\n style.overflow = 'auto';\n style.height = `${AutosizeTextareaDirective.maxHeight}px`;\n } else if (actualHeight < scrollHeight) {\n style.overflow = 'hidden';\n style.height = `${scrollHeight}px`;\n }\n }\n}\n","import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, inject, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[apBaseButton]',\n standalone: true,\n})\nexport class BaseButtonDirective implements AfterViewInit, OnInit {\n hostId: string | undefined = undefined;\n hostDataTest: string | undefined = undefined;\n hostType: string = 'button';\n\n private elementRef: ElementRef = inject(ElementRef);\n private changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n ngOnInit() {\n this.hostDataTest = this.elementRef.nativeElement.getAttribute('data-test');\n this.hostId = this.elementRef.nativeElement.getAttribute('id');\n this.elementRef.nativeElement.removeAttribute('data-test');\n this.elementRef.nativeElement.removeAttribute('id');\n }\n\n // Sometimes attributes like the id, or the data-test are dynamic and can change between the constructor and the initialization.\n // In order to have the last attributes value we check if it changes, and if it does, we run a mark for check to update the view.\n ngAfterViewInit(): void {\n const hostDataTest = this.elementRef.nativeElement.getAttribute('data-test');\n const hostId = this.elementRef.nativeElement.getAttribute('id');\n const hostType = this.elementRef.nativeElement.getAttribute('type');\n if (hostDataTest && this.hostDataTest !== hostDataTest) {\n this.hostDataTest = hostDataTest;\n this.elementRef.nativeElement.removeAttribute('data-test');\n this.changeDetectorRef.markForCheck();\n }\n if (hostId && this.hostId !== hostId) {\n this.hostId = hostId;\n this.elementRef.nativeElement.removeAttribute('id');\n this.changeDetectorRef.markForCheck();\n }\n if (hostType && this.hostType !== hostType) {\n this.hostType = hostType;\n this.elementRef.nativeElement.removeAttribute('type');\n this.changeDetectorRef.markForCheck();\n }\n }\n}\n","import {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n signal\n} from '@angular/core';\n\n@Directive({\n selector: 'input[type=\"checkbox\"][apCheckbox]',\n standalone: true,\n providers: [],\n})\nexport class CheckboxDirective implements OnInit, OnDestroy {\n private readonly elementRef = inject(ElementRef<HTMLInputElement>);\n private readonly renderer = inject(Renderer2);\n\n // State signals\n private _checked = signal(false);\n private _indeterminate = signal(false);\n\n // Input signal accessors that work with host bindings\n checked = this._checked.asReadonly();\n indeterminate = this._indeterminate.asReadonly();\n\n // Input setters with proper aliases for template binding\n // Couldn't be migrated to yet\n @Input('checked')\n set checkedInput(checked: boolean) {\n this._checked.set(checked);\n this.updateNativeElementSync();\n }\n\n @Input({\n transform: booleanAttribute,\n alias: 'indeterminate',\n })\n set indeterminateInput(indeterminate: boolean) {\n if (indeterminate) {\n this._checked.set(false);\n }\n this._indeterminate.set(indeterminate);\n this.updateNativeElementSync();\n }\n\n private updateNativeElementSync(): void {\n const input = this.elementRef.nativeElement;\n if (input) {\n input.checked = this.checked();\n input.indeterminate = this.indeterminate();\n }\n }\n\n // Private properties\n private listeners: (() => void)[] = [];\n private styleElement!: HTMLStyleElement;\n private checkmarkSvg!: SVGElement;\n private indeterminateBar!: HTMLElement;\n\n constructor() {\n effect(() => {\n if (this.checkmarkSvg && this.indeterminateBar) {\n this.updateCheckmarkVisibility();\n }\n });\n }\n\n // Custom SVG content\n private readonly checkSvgContent = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"10\" height=\"10\" fill=\"white\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.238 3.337a.92.92 0 0 1 .025 1.301l-7.7 8a.92.92 0 0 1-1.326 0l-3.5-3.636a.92.92 0 1 1 1.326-1.276L5.9 10.674l7.037-7.312a.92.92 0 0 1 1.301-.025Z\" />\n </svg>\n `;\n\n ngOnInit() {\n this.createCheckboxStructure();\n this.setupEventListeners();\n }\n\n ngOnDestroy(): void {\n this.listeners.forEach(unlisten => unlisten());\n if (this.styleElement && this.styleElement.parentNode) {\n this.styleElement.parentNode.removeChild(this.styleElement);\n }\n if (this.checkmarkSvg && this.checkmarkSvg.parentNode) {\n this.checkmarkSvg.parentNode.removeChild(this.checkmarkSvg);\n }\n if (this.indeterminateBar && this.indeterminateBar.parentNode) {\n this.indeterminateBar.parentNode.removeChild(this.indeterminateBar);\n }\n }\n\n private createCheckboxStructure(): void {\n const input = this.elementRef.nativeElement;\n const parent = input.parentElement;\n\n // Make input's parent use inline-flex for alignment and position relative\n if (parent) {\n this.renderer.setStyle(parent, 'display', 'inline-flex');\n this.renderer.setStyle(parent, 'align-items', 'center');\n this.renderer.setStyle(parent, 'gap', 'var(--ref-spacing-xxs)');\n this.renderer.setStyle(parent, 'position', 'relative');\n }\n\n this.renderer.addClass(input, 'ap-checkbox-styled');\n\n this.createCheckmarkSvg();\n this.createIndeterminateBar();\n\n this.applyCheckboxStyles();\n\n this.updateCheckmarkVisibility();\n }\n\n private createOverlayElement(element: HTMLElement | SVGElement): void {\n const parent = this.elementRef.nativeElement.parentElement;\n\n // Apply common positioning styles\n this.renderer.setStyle(element, 'position', 'absolute');\n this.renderer.setStyle(element, 'top', '50%');\n this.renderer.setStyle(element, 'left', '8px'); // Center over 16px checkbox\n this.renderer.setStyle(element, 'transform', 'translate(-50%, -50%)');\n this.renderer.setStyle(element, 'pointer-events', 'none');\n this.renderer.setStyle(element, 'opacity', '0');\n this.renderer.setStyle(element, 'z-index', '1');\n\n // Append to parent\n this.renderer.appendChild(parent, element);\n }\n\n private createCheckmarkSvg(): void {\n // Create SVG element from string\n const tempDiv = this.renderer.createElement('div');\n this.renderer.setProperty(tempDiv, 'innerHTML', this.checkSvgContent);\n this.checkmarkSvg = tempDiv.firstElementChild as SVGElement;\n\n this.createOverlayElement(this.checkmarkSvg);\n }\n\n private createIndeterminateBar(): void {\n // Create the indeterminate bar element\n this.indeterminateBar = this.renderer.createElement('span');\n this.renderer.setStyle(this.indeterminateBar, 'height', '1.5px');\n this.renderer.setStyle(this.indeterminateBar, 'background', 'var(--ref-color-white)');\n this.renderer.setStyle(this.indeterminateBar, 'width', '8px');\n\n this.createOverlayElement(this.indeterminateBar);\n }\n\n private updateCheckmarkVisibility(): void {\n if (this.checkmarkSvg) {\n const opacity = this.checked() && !this.indeterminate() ? '1' : '0';\n this.renderer.setStyle(this.checkmarkSvg, 'opacity', opacity);\n }\n if (this.indeterminateBar) {\n const opacity = this.indeterminate() && !this.checked() ? '1' : '0';\n this.renderer.setStyle(this.indeterminateBar, 'opacity', opacity);\n }\n }\n\n private setupEventListeners(): void {\n const input = this.elementRef.nativeElement;\n\n // Input change listener (native checkbox change)\n const changeListener = this.renderer.listen(input, 'change', () => {\n this.onValueChange();\n });\n this.listeners.push(changeListener);\n\n // Listen for label clicks to ensure focus is maintained\n const parent = input.parentElement;\n if (parent) {\n const labelClickListener = this.renderer.listen(parent, 'click', (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n // If clicking on a label that targets our input, ensure focus\n if (target.tagName === 'LABEL' && target.getAttribute('for') === input.id) {\n // Small delay to ensure the label click is processed first\n setTimeout(() => {\n input.focus();\n }, 0);\n }\n });\n this.listeners.push(labelClickListener);\n }\n }\n\n private applyCheckboxStyles(): void {\n const styles = `\n /* Minimal checkbox styling */\n input[type=\"checkbox\"].ap-checkbox-styled {\n appearance: none !important;\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n \n display: inline-block !important;\n width: 16px !important;\n height: 16px !important;\n min-width: 16px !important;\n min-height: 16px !important;\n margin: 0 !important;\n padding: 0 !important;\n border: 1px solid var(--ref-color-grey-60);\n border-radius: var(--sys-border-radius-sm);\n background: var(--ref-color-white);\n box-sizing: border-box;\n cursor: pointer;\n vertical-align: middle;\n }\n \n /* Hover state */\n input[type=\"checkbox\"].ap-checkbox-styled:hover {\n border-color: var(--ref-color-grey-80);\n }\n \n /* Active/pressed state */\n input[type=\"checkbox\"].ap-checkbox-styled:active {\n border-color: var(--ref-color-grey-100);\n }\n \n /* Checked state */\n input[type=\"checkbox\"].ap-checkbox-styled:checked {\n background: var(--ref-color-electric-blue-100);\n border-color: var(--ref-color-electric-blue-100);\n }\n \n /* Checked hover state */\n input[type=\"checkbox\"].ap-checkbox-styled:checked:hover {\n background: var(--ref-color-electric-blue-80);\n border-color: var(--ref-color-electric-blue-100);\n }\n \n /* Checked active/pressed state */\n input[type=\"checkbox\"].ap-checkbox-styled:checked:active {\n background: var(--ref-color-electric-blue-60);\n border-color: var(--ref-color-electric-blue-100);\n }\n \n /* Indeterminate state */\n input[type=\"checkbox\"].ap-checkbox-styled:indeterminate {\n background: var(--ref-color-electric-blue-100);\n border-color: var(--ref-color-electric-blue-100);\n }\n \n /* Disabled state */\n input[type=\"checkbox\"].ap-checkbox-styled:disabled {\n border-color: var(--ref-color-grey-20);\n background: var(--ref-color-grey-10);\n cursor: default;\n }\n \n input[type=\"checkbox\"].ap-checkbox-styled:disabled:checked {\n background: var(--ref-color-grey-20);\n }\n \n /* Focus state */\n @media (hover: hover) {\n input[type=\"checkbox\"].ap-checkbox-styled:focus:not(.disabled) {\n outline: 3px solid var(--ref-color-electric-blue-100) !important;\n outline-offset: 1px !important;\n }\n }\n \n /* Label styling */\n input[type=\"checkbox\"].ap-checkbox-styled + label {\n display: flex;\n align-items: center;\n font-family: var(--comp-forms-label-font-family);\n font-size: var(--comp-forms-label-size);\n font-weight: var(--comp-forms-label-font-weight);\n line-height: var(--comp-forms-label-line-height);\n color: var(--comp-forms-label-text-color);\n cursor: pointer;\n }\n \n /* Empty label styling */\n input[type=\"checkbox\"].ap-checkbox-styled + label:empty {\n display: none;\n }\n \n /* Disabled label styling */\n input[type=\"checkbox\"].ap-checkbox-styled:disabled + label {\n color: var(--ref-color-grey-60);\n cursor: default;\n }\n `;\n\n // Create and append style element\n this.styleElement = this.renderer.createElement('style');\n this.renderer.appendChild(this.styleElement, this.renderer.createText(styles));\n this.renderer.appendChild(document.head, this.styleElement);\n }\n\n private onValueChange(): void {\n if (!this.elementRef.nativeElement.disabled) {\n const input = this.elementRef.nativeElement;\n\n if (this.indeterminate()) {\n // When indeterminate, clicking should go to checked state\n this._checked.set(true);\n this._indeterminate.set(false);\n input.checked = true;\n input.indeterminate = false;\n } else {\n // Normal toggle behavior\n this._checked.set(input.checked);\n }\n }\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'img[default]',\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(error)': 'updateUrl()',\n '[src]': 'src',\n },\n})\nexport class DefaultImageDirective {\n @Input({\n required: true,\n })\n src = '';\n @Input() default = '';\n\n updateUrl() {\n if (this.default) {\n this.src = this.default;\n } else {\n this.src = 'assets/lib-ui-components/img/default-avatar.png';\n }\n }\n}\n","import { AfterContentChecked, Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Removes excess text from element until it fits in elements\n * and appends a ellipsis symbol to end of text. This requires that\n * the elements height be fixed\n *\n * @example\n * ```html\n * <p apEllipsis>Ullamco esse laborum</p>\n * ```\n *\n */\n@Directive({\n selector: '[apEllipsis]',\n standalone: true,\n})\nexport class EllipsisDirective implements AfterContentChecked {\n @Input() apEllipsisSeparator = '';\n @Input() apEllipsisClip = false;\n @Input() apEllipsisIndex = -2;\n @Input() apEllipsisChar = '...';\n @Input() apEllipsisClickable = false;\n\n @Output() apEllipsisRemovedElementsCount = new EventEmitter<number>();\n @Output() apEllipsisRemovedText = new EventEmitter<string>();\n\n private get hasOverflow(): boolean {\n const el: HTMLElement = this.el.nativeElement;\n return el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth;\n }\n\n constructor(private el: ElementRef) {}\n\n ngAfterContentChecked() {\n this.clipText();\n }\n\n private clipText(): void {\n const el: HTMLElement = this.el.nativeElement;\n let text = el.innerText;\n let removedText = '';\n if (this.apEllipsisIndex > -1) {\n removedText = text.substring(this.apEllipsisIndex, text.length - 1) + removedText;\n text = text.substring(0, this.apEllipsisIndex);\n el.innerText = `${text}${this.apEllipsisChar}`;\n\n if (this.apEllipsisClickable) {\n el.addEventListener('click', () => {\n el.innerText = `${text}${removedText}`;\n });\n }\n } else {\n while (this.hasOverflow && text.length > 0) {\n removedText = text[text.length - 1] + removedText;\n text = text.substring(0, text.length - 1);\n el.innerText = `${text}${this.apEllipsisChar}`;\n }\n }\n\n if (this.apEllipsisSeparator) {\n const removedElementsCount = removedText\n .split(this.apEllipsisSeparator)\n .filter(element => !!element && element.length > 0).length;\n if (removedElementsCount > 0) {\n this.apEllipsisRemovedElementsCount.emit(removedElementsCount);\n }\n }\n if (removedText && removedText.length > 0) {\n this.apEllipsisRemovedText.emit(removedText);\n }\n }\n}\n","// Based on https://scotch.io/tutorials/how-to-implement-a-custom-validator-directive-confirm-password-in-angular-2\nimport { Attribute, Directive, forwardRef } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => EqualValidatorDirective),\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class EqualValidatorDirective implements Validator {\n constructor(\n @Attribute('validateEqual') public validateEqual: string,\n @Attribute('validateEqualReference') public validateEqualReference: string\n ) {}\n\n validate(self: AbstractControl): { [key: string]: any } | null {\n const other = self.root.get(this.validateEqual);\n if (other) {\n if (this.isReference()) {\n if (self.value === other.value) {\n if (other.errors) {\n delete other.errors['validateEqual'];\n if (!Object.keys(other.errors).length) {\n other.setErrors(null);\n }\n } else {\n other.setErrors(null);\n }\n } else {\n other.setErrors({ validateEqual: false });\n }\n } else if (self.value !== other.value) {\n return { validateEqual: false };\n }\n }\n return null;\n }\n\n private isReference(): boolean {\n if (!this.validateEqualReference) {\n return false;\n }\n return this.validateEqualReference === 'true';\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from '@angular/core';\n\nexport class GifService {\n static isGif(src: string) {\n return src && src.split('?')[0].endsWith('.gif');\n }\n}\n\n/**\n * If the image is a GIF then replace the img element by a canvas containing a frozen gif.\n * Note 1: if the image is displayed under a condition, the condition must be applied on the parent of the image, so the\n * new canvas element will have the same condition.\n * Note 2: the image must not have the properties \"display\" and \"visibility\" in its style. Since they are used to frozen\n * the GIF. You need to apply this properties on the parent element.\n * Note 3: If the GIF is frozen, all the event are propagated to the image. However, all events are dispatched\n * with an Event instance. Ex: click event is not dispatched with a MouseEvent instance.\n */\n\n@Directive({\n selector: 'img[apFrozenGif]',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[src]': 'src',\n },\n standalone: true,\n})\nexport class FrozenGifDirective implements OnChanges {\n @Input({\n required: true,\n })\n src = '';\n @Input() apFrozen = true;\n // Add all the events that need to be propagated.\n @Input() apGifEvents: string[] = ['click'];\n\n private readonly element!: HTMLImageElement;\n private canvas: HTMLCanvasElement | null = null;\n\n constructor(private elementRef: ElementRef) {\n const element = this.elementRef.nativeElement;\n if (!(element instanceof HTMLImageElement)) {\n return;\n }\n\n this.element = element;\n }\n\n ngOnChanges(changes: any): void {\n let freeze = false;\n if (changes.src) {\n freeze = true;\n }\n if (changes.frozen) {\n if (changes.frozen.currentValue) {\n freeze = true;\n } else {\n this.unfreeze();\n }\n }\n\n if (freeze) {\n this.freeze();\n }\n }\n\n private freeze() {\n if (!GifService.isGif(this.src) || !this.apFrozen) {\n this.unfreeze();\n return;\n }\n\n // hack to avoid displaying the GIF before replacing it by the canvas\n this.element.style.visibility = 'hidden';\n this.element.addEventListener('load', () => this.addCanvas());\n }\n\n private addCanvas() {\n if (this.canvas) {\n this.canvas.remove();\n }\n\n this.canvas = document.createElement('canvas');\n this.canvas.width = this.element.width;\n this.canvas.height = this.element.height;\n this.canvas.getContext('2d')?.drawImage(this.element, 0, 0, this.canvas.width, this.canvas.height);\n for (let i = 0; i < this.element.attributes.length; i++) {\n const attr = this.element.attributes[i];\n if (attr.name === 'id') {\n // avoid two elements with the same id\n this.canvas.setAttribute('id', attr.value + '_frozenGif');\n } else if ((attr.name === 'style' && attr.value.includes('visibility: hidden;')) || attr.value.includes('display: none;')) {\n // remove the added 'visibility: hidden' and 'display: none'\n const styleValue = attr.value;\n this.canvas.setAttribute('style', styleValue.replace('visibility: hidden;', '').replace('display: none;', ''));\n } else if (attr.name !== '\"') {\n // test for invalid attributes\n this.canvas.setAttribute(attr.name, attr.value);\n }\n }\n\n this.addEvents();\n\n this.element.parentNode?.insertBefore(this.canvas, this.element);\n this.element.style.display = 'none';\n }\n\n private addEvents() {\n this.apGifEvents.forEach((eventName: string) => {\n this.canvas?.addEventListener(eventName, (ev: Event) =>\n this.element.dispatchEvent(\n // wm: find a way to dispatch the right event type\n new Event(ev.type, ev)\n )\n );\n });\n }\n\n private unfreeze() {\n if (this.canvas) {\n this.canvas.remove();\n this.canvas = null;\n }\n this.element.style.visibility = 'inherit';\n this.element.style.display = 'inherit';\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\nconst DATA_MST = 'data-mst';\n\n/**\n * This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.\n * The specific tags must this schema: <ng-container data-mst=\"STYLING-CLASSES\">TEXT</ng-container>.\n * Example: 'Lorem <ng-container data-mst=\"my-style\">ipsum</ng-container> dolor sit amet'.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[multiStyleText]',\n standalone: true,\n})\nexport class MultiStyleTextDirective {\n @Input() set multiStyleText(fullText: string) {\n // First remove previously added children (on update).\n this.renderer.setProperty(this.elRef.nativeElement, 'innerHTML', '');\n if (!fullText || fullText.length <= 0) {\n return;\n }\n\n this.renderer.setProperty(this.elRef.nativeElement, 'innerHTML', DOMPurify.sanitize(fullText.replace(/ng-container/g, 'span')));\n\n Array.from(this.elRef.nativeElement.children).forEach((childNode: Element) => {\n if (childNode.nodeType == 1 && childNode.tagName.toLowerCase() === 'span') {\n // Node.ELEMENT_NODE\n\n const span: HTMLElement = this.renderer.createElement('span');\n span.innerHTML = childNode.innerHTML;\n this.elRef.nativeElement.replaceChild(span, childNode);\n\n const mstValue = childNode.getAttribute(DATA_MST);\n if (mstValue) {\n const mstContents = mstValue.split(';');\n // Bind click events\n if (mstContents[1]) {\n this.renderer.listen(span, 'click', () => this.partEvent.emit(mstContents[1]));\n }\n // Add classes\n if (mstContents[0] && mstContents[0].length > 0) {\n this.renderer.setAttribute(span, 'class', mstContents[0].replace(',', ' '));\n }\n }\n }\n });\n }\n\n @Output() partEvent = new EventEmitter<string>();\n\n public constructor(\n private elRef: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -320,7 +320,7 @@ class SelectComponent {
|
|
|
320
320
|
this.hiddenCountSignal.set(hiddenCount);
|
|
321
321
|
}
|
|
322
322
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
323
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: SelectComponent, isStandalone: true, selector: "ap-select", inputs: { options: "options", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", appendTo: "appendTo", clearable: "clearable", description: "description", disabled: "disabled", selectId: "selectId", inlineLabel: "inlineLabel", create: "create", createText: "createText", group: "group", selectableGroup: "selectableGroup", label: "label", multiple: "multiple", only: "only", onlyText: "onlyText", placeholder: "placeholder", selectAll: "selectAll", selectAllText: "selectAllText", unselectAllText: "unselectAllText", searchable: "searchable", searchPlaceholder: "searchPlaceholder", searchFn: "searchFn", notFoundText: "notFoundText", loadingText: "loadingText", displayType: "displayType", optionLabel: "optionLabel", optionCaption: "optionCaption", optionDivider: "optionDivider", optionProfileImageUrl: "optionProfileImageUrl", optionBadgeLabel: "optionBadgeLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupTag: "optionGroupTag", maximumDisplayOptions: "maximumDisplayOptions", customOptionTemplate: "customOptionTemplate", customLabelTemplate: "customLabelTemplate", customMultiLabelTemplate: "customMultiLabelTemplate", errorMessage: "errorMessage", successMessage: "successMessage", compareWith: "compareWith" }, outputs: { createNew: "createNew", valueChanges: "valueChanges" }, host: { properties: { "class.hovered": "this.hovered", "class.inline": "this.inlineLabel" } }, providers: [SELECT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inlineLabelElement", first: true, predicate: ["inlineLabel"], descendants: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true }], ngImport: i0, template: "@if (label && !inlineLabel) {\n <label [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n @if (description) {\n <span class=\"description\">\n {{ description }}\n </span>\n }\n </label>\n}\n\n@if (inlineLabel) {\n <div\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n @if (label && inlineLabel) {\n <label\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n }\n <div class=\"divider\"></div>\n </div>\n}\n\n<ng-select\n #select\n class=\"ap-select-legacy\"\n [tabIndex]=\"0\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [labelForId]=\"selectId\"\n [searchable]=\"false\"\n [closeOnSelect]=\"!multiple\"\n [bindValue]=\"optionValue ? optionValue : ''\"\n [groupBy]=\"group ? optionGroupLabel : ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [markFirst]=\"false\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"false\"\n [appendTo]=\"appendTo\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-describedby]=\"ariaDescribedBy || null\"\n [attr.aria-disabled]=\"disabled?.toString()\"\n [items]=\"optionsSignal()\"\n [compareWith]=\"compareWith\"\n [loading]=\"loadingSignal()\"\n [ngModel]=\"selectedValuesSignal()\"\n [class.with-error]=\"errorMessage\"\n [class.with-success]=\"successMessage\"\n (ngModelChange)=\"onSelectedValuesChange($event)\"\n (open)=\"onSelectOpened()\">\n @if (searchable || selectAll) {\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n @if (searchable) {\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n }\n @if (selectAll) {\n <ap-checkbox\n class=\"select-all-checkbox\"\n name=\"option-group-select-all\"\n [indeterminate]=\"partialySelectedSignal()\"\n [checked]=\"allSelectedSignal()\"\n (click)=\"onToggleAll()\">\n <span>\n {{ partialySelectedSignal() || allSelectedSignal() ? unselectAllText : selectAllText }}\n </span>\n </ap-checkbox>\n }\n </ng-template>\n }\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-optgroup-tmp>\n <div\n class=\"group\"\n [class.with-search]=\"searchable\"\n [class.with-select-all]=\"selectAll\">\n @if (!multiple) {\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n @if (optionGroupTag && optionGroupTag[item[optionGroupLabel]]) {\n <ap-badge color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n }\n }\n @if (multiple) {\n @if (selectableGroup) {\n <ap-checkbox\n [name]=\"'option-group-selection-' + item['group']\"\n [indeterminate]=\"isGroupIndeterminate(item$.children)\"\n [checked]=\"isGroupChecked(item$.children)\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n @if (optionGroupTag && optionGroupTag[item[optionGroupLabel]]) {\n <ap-badge color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n }\n </ap-checkbox>\n }\n @if (!selectableGroup) {\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n }\n }\n </div>\n </ng-template>\n <ng-template\n let-items=\"items\"\n let-item$=\"item$\"\n ng-multi-label-tmp>\n <ng-container>\n <div class=\"multiple-item\">\n @if (!customMultiLabelTemplate) {\n @for (item of items; track item) {\n @if (optionLabel && item[optionLabel]) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n {{ item[optionLabel] }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"item with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n }\n }\n @if (!optionLabel || !item[optionLabel]) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"item with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n }\n }\n }\n }\n @if (customMultiLabelTemplate) {\n <ng-container *ngTemplateOutlet=\"customMultiLabelTemplate; context: { options: items }\" />\n }\n </div>\n @if (hiddenCountSignal() > 0) {\n <div class=\"remaining\">\n @if (displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()) {\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n }\n </div>\n }\n </ng-container>\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading-state\">\n <ap-loader diameter=\"30\" />\n <span>\n {{ loadingText }}\n </span>\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp></ng-template>\n @if (create) {\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"plus\"\n size=\"sm\" />\n <span>\n {{ createText }}\n </span>\n @if (searchTermSignal()) {\n \"{{ searchTermSignal() }}\"\n }\n </button>\n </ng-template>\n }\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n @if ((!optionLabel || !item[optionLabel]) && item && (!optionDivider || !item[optionDivider]) && !customOptionTemplate) {\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n @if (item$.selected && !multiple) {\n <ap-symbol\n symbolId=\"check\"\n color=\"electric-blue\"\n size=\"sm\" />\n }\n </div>\n }\n @if ((optionLabel && item[optionLabel]) || customOptionTemplate) {\n <div\n class=\"option\"\n [class.with-caption]=\"optionCaption && item[optionCaption]\"\n [class.multiple]=\"multiple\"\n (mouseenter)=\"onHoverItem(item$.htmlId)\"\n (mouseleave)=\"onLeaveItem()\">\n <ng-container *ngTemplateOutlet=\"contentItem; context: { item: item, item$: item$ }\" />\n </div>\n }\n @if (optionDivider && item[optionDivider]) {\n <div class=\"divider\"></div>\n }\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n @if (customLabelTemplate) {\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n }\n @if (!optionLabel && !customLabelTemplate) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <span class=\"text-item\">\n {{ item }}\n </span>\n }\n }\n @if (optionLabel && !customLabelTemplate) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n {{ item[optionLabel] }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n }\n }\n </ng-template>\n <ng-template ng-notfound-tmp>\n <div class=\"option not-found\">\n {{ notFoundText }}\n </div>\n </ng-template>\n</ng-select>\n\n<ng-template\n #contentItem\n let-item=\"item\"\n let-item$=\"item$\">\n @if (multiple) {\n <div class=\"disabled-opaque\"></div>\n @if (multiple) {\n <ap-checkbox\n [checked]=\"item$.selected\"\n [disabled]=\"item$.disabled\"\n [name]=\"'option-selection-' + item$.htmlId\">\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ap-checkbox>\n }\n }\n @if (!multiple) {\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n }\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n @if (!customOptionTemplate) {\n @if (!optionLabel) {\n <span class=\"item\">\n {{ item }}\n </span>\n }\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n @if (optionLabel && item[optionLabel]) {\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n @if (optionBadgeLabel && item[optionBadgeLabel]) {\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n }\n </div>\n @if (optionCaption && item[optionCaption]) {\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n }\n </div>\n }\n }\n @if (customOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n }\n @if (only && !item$.disabled && itemHoveredSignal() === item$.htmlId && multiple) {\n <button\n class=\"standalone-link\"\n type=\"button\"\n (click)=\"onSelectOnly(item)\">\n {{ onlyText }}\n </button>\n }\n @if (item$.selected && !multiple) {\n <ap-symbol\n symbolId=\"check\"\n color=\"electric-blue\"\n size=\"sm\" />\n }\n </div>\n</ng-template>\n\n@if (errorMessage) {\n <div class=\"form-message error\">\n <ap-symbol\n symbolId=\"error_fill\"\n size=\"sm\" />\n <span>\n {{ errorMessage }}\n </span>\n </div>\n}\n\n@if (successMessage) {\n <div class=\"form-message success\">\n <ap-symbol\n symbolId=\"rounded-check_fill\"\n size=\"sm\" />\n <span>\n {{ successMessage }}\n </span>\n </div>\n}\n", styles: ["ap-select{--placeholder-padding-left: 0px;display:flex;flex-direction:column;position:relative;gap:var(--ref-spacing-xxs);font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm)}ap-select.inline .inline-label{display:flex;align-items:center;position:absolute;z-index:10000;top:0;left:0;height:100%;padding-left:var(--ref-spacing-xs);box-sizing:border-box;color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label:hover{cursor:pointer}ap-select.inline .inline-label .label{display:flex;z-index:10;font-size:var(--comp-select-inline-label-text-size);line-height:var(--comp-select-inline-label-text-line-height);font-family:var(--comp-select-inline-label-text-font-family);font-weight:var(--comp-select-inline-label-text-font-weight);color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label .label:hover{cursor:pointer}ap-select.inline .inline-label .label span{width:fit-content}ap-select.inline .inline-label .divider{height:18px;max-height:18px;width:1px;margin:0 8px;background-color:var(--comp-select-separator-color);border-radius:1px}ap-select.inline .ng-select .ng-value-container{padding-left:calc(var(--placeholder-padding-left))!important}ap-select.hovered .ng-select-container{border-color:var(--ref-color-grey-40)!important}ap-select label{display:flex;flex-direction:column;gap:var(--comp-forms-label-spacing-vertical);font-size:var(--comp-forms-label-size);font-weight:var(--comp-forms-label-font-weight);line-height:var(--comp-forms-label-line-height);font-family:var(--comp-forms-label-font-family);color:var(--comp-forms-label-text-color)}ap-select label .description{font-size:var(--comp-forms-label-description-text-size);font-weight:var(--comp-forms-label-description-text-font-weight);line-height:var(--comp-forms-label-description-text-line-height);font-family:var(--comp-forms-label-description-text-font-family);color:var(--comp-forms-label-description-text-color)}ap-select.invalid:not([disabled]):not(.transparent) .ng-select-container,ap-select.ng-invalid.ng-dirty.ng-touched:not([disabled]):not(.transparent) .ng-select-container{border-color:var(--comp-input-border-error-color)}ap-select.valid:not([disabled]):not(.transparent) .ng-select-container{border:1px solid var(--comp-input-border-success-color)}.ng-select.ap-select-legacy .ng-select-container{border-color:var(--ref-color-grey-20)}.ng-select.ap-select-legacy .ng-select-container:hover{box-shadow:none;cursor:pointer;border-color:var(--ref-color-grey-40)!important}.ng-select.ap-select-legacy .ng-select-container .ng-value-container{overflow-x:auto;overflow-y:hidden}.ng-select.ap-select-legacy .ng-select-container .ng-value-container:hover,.ng-select.ap-select-legacy .ng-select-container .ng-value-container input:hover{cursor:pointer}.ng-select.ap-select-legacy.ng-select-opened.ng-select-bottom .ng-select-container,.ng-select.ap-select-legacy.ng-select-opened.ng-select-top .ng-select-container{border-radius:var(--ref-border-radius-sm);border-color:var(--ref-color-grey-20)}.ng-select.ap-select-legacy.ng-select-opened .ng-arrow{border-color:transparent transparent var(--ref-color-electric-blue-100)}.ng-select.ap-select-legacy.ng-select-opened .ng-select-container:hover{border-color:var(--ref-color-electric-blue-100)!important}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value{overflow:visible!important;width:100%;display:flex}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value span.text-item{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value span{display:inline-block}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-tag{width:100%;margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-tag div{overflow:auto}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-label{margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-label .label{overflow:auto}.ng-select.ap-select-legacy.ng-select-multiple .ng-select-container .ng-value-container{padding-left:12px;flex-wrap:nowrap;overflow:hidden}.ng-select.ap-select-legacy.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:0!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container{background-color:var(--ref-color-grey-20);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-100)}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container:hover{cursor:default!important;background-color:var(--ref-color-grey-20)!important;border-color:var(--ref-color-grey-20)!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container .ng-placeholder{color:var(--ref-color-grey-60)!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container .ng-value-container:hover{cursor:default!important}.ng-select.ap-select-legacy .ng-value-container{padding-left:12px;height:100%;position:relative;padding-top:0!important}.ng-select.ap-select-legacy .ng-value-container .ng-placeholder{position:absolute;padding-left:0!important;color:var(--ref-color-grey-60);font-weight:var(--ref-font-weight-regular);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select-legacy .ng-value-container .multiple-item{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select-legacy .ng-value-container .multiple-item .item{visibility:hidden}.ng-select.ap-select-legacy .ng-value-container .multiple-item .text-item{color:var(--ref-color-grey-100);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select-legacy .ng-value-container .with-avatar{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select-legacy .ng-value-container .ng-value{margin:0!important}.ng-select.ap-select-legacy .ng-value-container .ng-input{position:unset!important;padding:0!important;height:100%!important}.ng-select.ap-select-legacy .ng-value-container .ng-input input{height:100%;color:var(--ref-color-grey-100)!important;caret-color:var(--ref-color-grey-100)!important;border-radius:unset}.ng-select.ap-select-legacy.with-error .ng-select-container{border-color:var(--comp-input-border-error-color)}.ng-select.ap-select-legacy.with-success .ng-select-container{border-color:var(--comp-input-border-success-color)}.ng-dropdown-panel.ap-select-legacy,.ap-select-legacy .ng-select-container+.ng-dropdown-panel{overflow:hidden;border:none;box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color)}.ng-dropdown-panel.ap-select-legacy.ng-select-bottom,.ap-select-legacy .ng-select-container+.ng-dropdown-panel.ng-select-bottom{margin-top:var(--ref-spacing-xxxs);border-radius:var(--ref-border-radius-sm)}.ng-dropdown-panel.ap-select-legacy .ng-option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option{box-sizing:border-box;padding:0;position:relative}.ng-dropdown-panel.ap-select-legacy .ng-option .ng-option-label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option .ng-option-label{padding:0}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-child,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-child{padding-left:0}.ng-dropdown-panel.ap-select-legacy .ng-option:hover:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:hover:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select-legacy .ng-option:active:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:active:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select-legacy .ng-option:focus:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:focus:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple),.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple){background-color:var(--ref-color-electric-blue-10);color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple) .label,.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple) .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .caption{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option .label{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight);color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked .option span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option span{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked:hover{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option span{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option.multiple .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option.multiple .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-disabled,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled{color:var(--ref-color-grey-40)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-disabled .disabled-opaque,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled .disabled-opaque{position:absolute;inset:0;opacity:.6;background-color:var(--ref-color-white);cursor:default;width:100%;height:100%;z-index:999}.ng-dropdown-panel.ap-select-legacy .loading-state,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .loading-state{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:var(--ref-spacing-xxs);min-height:90px;max-height:90px;padding:var(--ref-spacing-md) var(--ref-spacing-sm) var(--ref-spacing-sm);box-sizing:border-box}.ng-dropdown-panel.ap-select-legacy .loading-state span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .loading-state span{font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm);font-style:italic;font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .group,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group{display:flex;align-items:center;width:100%;gap:var(--ref-spacing-xxs);padding:var(--comp-select-group-padding-horizontal) var(--comp-select-group-padding-vertical)}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox .checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox .checkbox label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox label{display:flex;gap:var(--ref-spacing-xxs);flex:1}.ng-dropdown-panel.ap-select-legacy .divider,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .divider{width:100%;height:1px;background-color:var(--comp-select-separator-color);margin:var(--ref-spacing-xxs) 0}.ng-dropdown-panel.ap-select-legacy .create-new,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new{display:flex;align-items:center;border:none;width:100%;background-color:transparent;gap:var(--ref-spacing-xxxs);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);cursor:pointer;padding:var(--comp-select-search-bar-bottom-link-margin-top) var(--comp-select-search-bar-bottom-link-padding-horizontal) var(--comp-select-search-bar-bottom-link-padding-bottom) var(--comp-select-search-bar-bottom-link-padding-horizontal);line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm)}.ng-dropdown-panel.ap-select-legacy .create-new:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .create-new:active,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new:active{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option{display:flex;align-items:center;box-sizing:border-box;min-height:var(--comp-select-one-line-height);max-height:var(--comp-select-one-line-height);color:var(--comp-select-one-line-text-color);background-color:var(--comp-select-one-line-background-color);font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height);padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal)}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox .checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox .checkbox label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox label{flex:1;overflow:auto}.ng-dropdown-panel.ap-select-legacy .option .option-item,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;flex:1}.ng-dropdown-panel.ap-select-legacy .option.not-found,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm) var(--ref-spacing-xxxs) var(--ref-spacing-sm)}.ng-dropdown-panel.ap-select-legacy .option .content,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content{display:flex;align-items:center;gap:var(--comp-select-one-line-spacing);flex:1;width:100%}.ng-dropdown-panel.ap-select-legacy .option .content .item,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .item{flex:1}.ng-dropdown-panel.ap-select-legacy .option .content .texts,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts{flex:1;overflow:auto;display:flex;flex-direction:column}.ng-dropdown-panel.ap-select-legacy .option .content .texts .first-line,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}.ng-dropdown-panel.ap-select-legacy .option .content .texts .first-line .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select-legacy .option .content ap-symbol,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content ap-symbol{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .option .content ap-symbol div.svg,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content ap-symbol div.svg{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .label{font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height)}.ng-dropdown-panel.ap-select-legacy .option.with-caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption{padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal);min-height:var(--comp-select-two-line-height);max-height:var(--comp-select-two-line-height)}.ng-dropdown-panel.ap-select-legacy .option.with-caption .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption .label{font-weight:var(--comp-select-two-line-title-text-font-weight);font-family:var(--comp-select-two-line-title-text-font-family);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);color:var(--comp-select-two-line-title-text-color)}.ng-dropdown-panel.ap-select-legacy .option.with-caption .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption .caption{font-weight:var(--comp-select-two-line-caption-text-font-weight);font-family:var(--comp-select-two-line-caption-text-font-family);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);color:var(--comp-select-two-line-caption-text-color);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-panel-items,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-panel-items{padding:0}.ng-dropdown-panel.ap-select-legacy .ng-optgroup,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup{display:flex;align-items:center;padding:0}.ng-dropdown-panel.ap-select-legacy .ng-optgroup:first-child .with-search,.ng-dropdown-panel.ap-select-legacy .ng-optgroup:first-child .with-select-all,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-search,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-select-all{border:none}.ng-dropdown-panel.ap-select-legacy .ng-optgroup .group,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup .group{display:flex;width:100%;height:100%;background-color:var(--comp-select-group-background-color);min-height:32px;box-sizing:border-box;max-height:50px;padding:var(--comp-select-group-padding-vertical) var(--comp-select-group-padding-horizontal);border-top:1px solid var(--comp-select-group-border-top-color)}.ng-dropdown-panel.ap-select-legacy .ng-optgroup .group .group-label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup .group .group-label{font-weight:var(--comp-select-group-text-font-weight);font-size:var(--comp-select-group-text-size);line-height:var(--comp-select-group-text-line-height);font-family:var(--comp-select-group-text-font-family);color:var(--comp-select-group-text-color)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-header,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-header{padding:0 var(--comp-select-search-bar-padding-horizontal) var(--comp-select-search-bar-margin-bottom) var(--comp-select-search-bar-padding-horizontal);border-bottom:1px solid var(--comp-select-search-bar-border-bottom-color)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-header .select-all-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-header .select-all-checkbox{padding-left:var(--ref-spacing-xxs);height:var(--comp-select-one-line-height)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-footer,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-footer{cursor:pointer;padding:0;border-top:1px solid var(--ref-color-grey-10)}.ng-dropdown-panel.ap-select-legacy .standalone-link,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link{color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);background-color:transparent;border:none;line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm);cursor:pointer}.ng-dropdown-panel.ap-select-legacy .standalone-link:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .standalone-link:active,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link:active{color:var(--ref-color-electric-blue-150)}.form-message{font-size:var(--comp-forms-status-text-size);font-weight:var(--comp-forms-status-text-font-weight);line-height:var(--comp-forms-status-text-line-height);font-family:var(--comp-forms-status-text-font-family);margin:0;display:flex;gap:var(--ref-spacing-xxxs)}.form-message.error{color:var(--comp-forms-status-text-error-color)}.form-message.error ap-symbol{color:var(--comp-forms-status-icon-error-color)}.form-message.success{color:var(--comp-forms-status-text-success-color)}.form-message.success ap-symbol{color:var(--comp-forms-status-icon-success-color)}form.ng-submitted ap-select.ng-valid .ng-select-container{border-color:var(--comp-input-border-success-color)}form.ng-submitted ap-select.ng-invalid .ng-select-container{border-color:var(--comp-input-border-error-color)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i2.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i2.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i2.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i2.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "directive", type: i2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: InputComponent, selector: "ap-input", inputs: ["ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "disabled", "clearable", "inputType", "inputId", "name", "label", "description", "prefix", "suffix", "required", "placeholder", "errorMessage", "successMessage", "symbolId", "symbolPosition"], outputs: ["focus", "blur", "keyup"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: CheckboxComponent, selector: "ap-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "disabled", "indeterminate", "checked", "required", "name"], outputs: ["change"] }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["profilePicture", "alt", "network", "size", "username", "showInitials", "bigNetwork", "anonymous", "online", "youtubeAvatarMode", "rounded"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LabelComponent, selector: "ap-label", inputs: ["content", "selectorWidth", "removable"], outputs: ["remove"] }, { kind: "component", type: TagComponent, selector: "ap-tag", inputs: ["clearable", "color", "mini"], outputs: ["clear"] }, { kind: "component", type: BadgeComponent, selector: "ap-badge", inputs: ["color"] }, { kind: "component", type: LoaderComponent, selector: "ap-loader", inputs: ["color", "diameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
323
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: SelectComponent, isStandalone: true, selector: "ap-select", inputs: { options: "options", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", appendTo: "appendTo", clearable: "clearable", description: "description", disabled: "disabled", selectId: "selectId", inlineLabel: "inlineLabel", create: "create", createText: "createText", group: "group", selectableGroup: "selectableGroup", label: "label", multiple: "multiple", only: "only", onlyText: "onlyText", placeholder: "placeholder", selectAll: "selectAll", selectAllText: "selectAllText", unselectAllText: "unselectAllText", searchable: "searchable", searchPlaceholder: "searchPlaceholder", searchFn: "searchFn", notFoundText: "notFoundText", loadingText: "loadingText", displayType: "displayType", optionLabel: "optionLabel", optionCaption: "optionCaption", optionDivider: "optionDivider", optionProfileImageUrl: "optionProfileImageUrl", optionBadgeLabel: "optionBadgeLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupTag: "optionGroupTag", maximumDisplayOptions: "maximumDisplayOptions", customOptionTemplate: "customOptionTemplate", customLabelTemplate: "customLabelTemplate", customMultiLabelTemplate: "customMultiLabelTemplate", errorMessage: "errorMessage", successMessage: "successMessage", compareWith: "compareWith" }, outputs: { createNew: "createNew", valueChanges: "valueChanges" }, host: { properties: { "class.hovered": "this.hovered", "class.inline": "this.inlineLabel" } }, providers: [SELECT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inlineLabelElement", first: true, predicate: ["inlineLabel"], descendants: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true }], ngImport: i0, template: "@if (label && !inlineLabel) {\n <label [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n @if (description) {\n <span class=\"description\">\n {{ description }}\n </span>\n }\n </label>\n}\n\n@if (inlineLabel) {\n <div\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n @if (label && inlineLabel) {\n <label\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n }\n <div class=\"divider\"></div>\n </div>\n}\n\n<ng-select\n #select\n class=\"ap-select-legacy\"\n [tabIndex]=\"0\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [labelForId]=\"selectId\"\n [searchable]=\"false\"\n [closeOnSelect]=\"!multiple\"\n [bindValue]=\"optionValue ? optionValue : ''\"\n [groupBy]=\"group ? optionGroupLabel : ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [markFirst]=\"false\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"false\"\n [appendTo]=\"appendTo\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-describedby]=\"ariaDescribedBy || null\"\n [attr.aria-disabled]=\"disabled?.toString()\"\n [items]=\"optionsSignal()\"\n [compareWith]=\"compareWith\"\n [loading]=\"loadingSignal()\"\n [ngModel]=\"selectedValuesSignal()\"\n [class.with-error]=\"errorMessage\"\n [class.with-success]=\"successMessage\"\n (ngModelChange)=\"onSelectedValuesChange($event)\"\n (open)=\"onSelectOpened()\">\n @if (searchable || selectAll) {\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n @if (searchable) {\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n }\n @if (selectAll) {\n <ap-checkbox\n class=\"select-all-checkbox\"\n name=\"option-group-select-all\"\n [indeterminate]=\"partialySelectedSignal()\"\n [checked]=\"allSelectedSignal()\"\n (click)=\"onToggleAll()\">\n <span>\n {{ partialySelectedSignal() || allSelectedSignal() ? unselectAllText : selectAllText }}\n </span>\n </ap-checkbox>\n }\n </ng-template>\n }\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-optgroup-tmp>\n <div\n class=\"group\"\n [class.with-search]=\"searchable\"\n [class.with-select-all]=\"selectAll\">\n @if (!multiple) {\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n @if (optionGroupTag && optionGroupTag[item[optionGroupLabel]]) {\n <ap-badge color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n }\n }\n @if (multiple) {\n @if (selectableGroup) {\n <ap-checkbox\n [name]=\"'option-group-selection-' + item['group']\"\n [indeterminate]=\"isGroupIndeterminate(item$.children)\"\n [checked]=\"isGroupChecked(item$.children)\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n @if (optionGroupTag && optionGroupTag[item[optionGroupLabel]]) {\n <ap-badge color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n }\n </ap-checkbox>\n }\n @if (!selectableGroup) {\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n }\n }\n </div>\n </ng-template>\n <ng-template\n let-items=\"items\"\n let-item$=\"item$\"\n ng-multi-label-tmp>\n <ng-container>\n <div class=\"multiple-item\">\n @if (!customMultiLabelTemplate) {\n @for (item of items; track item) {\n @if (optionLabel && item[optionLabel]) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n {{ item[optionLabel] }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"item with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n }\n }\n @if (!optionLabel || !item[optionLabel]) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"item with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n }\n }\n }\n }\n @if (customMultiLabelTemplate) {\n <ng-container *ngTemplateOutlet=\"customMultiLabelTemplate; context: { options: items }\" />\n }\n </div>\n @if (hiddenCountSignal() > 0) {\n <div class=\"remaining\">\n @if (displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()) {\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n }\n </div>\n }\n </ng-container>\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading-state\">\n <ap-loader diameter=\"30\" />\n <span>\n {{ loadingText }}\n </span>\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp></ng-template>\n @if (create) {\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"plus\"\n size=\"sm\" />\n <span>\n {{ createText }}\n </span>\n @if (searchTermSignal()) {\n \"{{ searchTermSignal() }}\"\n }\n </button>\n </ng-template>\n }\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n @if ((!optionLabel || !item[optionLabel]) && item && (!optionDivider || !item[optionDivider]) && !customOptionTemplate) {\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n @if (item$.selected && !multiple) {\n <ap-symbol\n symbolId=\"check\"\n color=\"electric-blue\"\n size=\"sm\" />\n }\n </div>\n }\n @if ((optionLabel && item[optionLabel]) || customOptionTemplate) {\n <div\n class=\"option\"\n [class.with-caption]=\"optionCaption && item[optionCaption]\"\n [class.multiple]=\"multiple\"\n (mouseenter)=\"onHoverItem(item$.htmlId)\"\n (mouseleave)=\"onLeaveItem()\">\n <ng-container *ngTemplateOutlet=\"contentItem; context: { item: item, item$: item$ }\" />\n </div>\n }\n @if (optionDivider && item[optionDivider]) {\n <div class=\"divider\"></div>\n }\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n @if (customLabelTemplate) {\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n }\n @if (!optionLabel && !customLabelTemplate) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <span class=\"text-item\">\n {{ item }}\n </span>\n }\n }\n @if (optionLabel && !customLabelTemplate) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n {{ item[optionLabel] }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n }\n }\n </ng-template>\n <ng-template ng-notfound-tmp>\n <div class=\"option not-found\">\n {{ notFoundText }}\n </div>\n </ng-template>\n</ng-select>\n\n<ng-template\n #contentItem\n let-item=\"item\"\n let-item$=\"item$\">\n @if (multiple) {\n <div class=\"disabled-opaque\"></div>\n @if (multiple) {\n <ap-checkbox\n [checked]=\"item$.selected\"\n [disabled]=\"item$.disabled\"\n [name]=\"'option-selection-' + item$.htmlId\">\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ap-checkbox>\n }\n }\n @if (!multiple) {\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n }\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n @if (!customOptionTemplate) {\n @if (!optionLabel) {\n <span class=\"item\">\n {{ item }}\n </span>\n }\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n @if (optionLabel && item[optionLabel]) {\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n @if (optionBadgeLabel && item[optionBadgeLabel]) {\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n }\n </div>\n @if (optionCaption && item[optionCaption]) {\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n }\n </div>\n }\n }\n @if (customOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n }\n @if (only && !item$.disabled && itemHoveredSignal() === item$.htmlId && multiple) {\n <button\n class=\"standalone-link\"\n type=\"button\"\n (click)=\"onSelectOnly(item)\">\n {{ onlyText }}\n </button>\n }\n @if (item$.selected && !multiple) {\n <ap-symbol\n symbolId=\"check\"\n color=\"electric-blue\"\n size=\"sm\" />\n }\n </div>\n</ng-template>\n\n@if (errorMessage) {\n <div class=\"form-message error\">\n <ap-symbol\n symbolId=\"error_fill\"\n size=\"sm\" />\n <span>\n {{ errorMessage }}\n </span>\n </div>\n}\n\n@if (successMessage) {\n <div class=\"form-message success\">\n <ap-symbol\n symbolId=\"rounded-check_fill\"\n size=\"sm\" />\n <span>\n {{ successMessage }}\n </span>\n </div>\n}\n", styles: ["ap-select{--placeholder-padding-left: 0px;display:flex;flex-direction:column;position:relative;gap:var(--ref-spacing-xxs);font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm)}ap-select.inline .inline-label{display:flex;align-items:center;position:absolute;z-index:10000;top:0;left:0;height:100%;padding-left:var(--ref-spacing-xs);box-sizing:border-box;color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label:hover{cursor:pointer}ap-select.inline .inline-label .label{display:flex;z-index:10;font-size:var(--comp-select-inline-label-text-size);line-height:var(--comp-select-inline-label-text-line-height);font-family:var(--comp-select-inline-label-text-font-family);font-weight:var(--comp-select-inline-label-text-font-weight);color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label .label:hover{cursor:pointer}ap-select.inline .inline-label .label span{width:fit-content}ap-select.inline .inline-label .divider{height:18px;max-height:18px;width:1px;margin:0 8px;background-color:var(--comp-select-separator-color);border-radius:1px}ap-select.inline .ng-select .ng-value-container{padding-left:calc(var(--placeholder-padding-left))!important}ap-select.hovered .ng-select-container{border-color:var(--ref-color-grey-40)!important}ap-select label{display:flex;flex-direction:column;gap:var(--comp-forms-label-spacing-vertical);font-size:var(--comp-forms-label-size);font-weight:var(--comp-forms-label-font-weight);line-height:var(--comp-forms-label-line-height);font-family:var(--comp-forms-label-font-family);color:var(--comp-forms-label-text-color)}ap-select label .description{font-size:var(--comp-forms-label-description-text-size);font-weight:var(--comp-forms-label-description-text-font-weight);line-height:var(--comp-forms-label-description-text-line-height);font-family:var(--comp-forms-label-description-text-font-family);color:var(--comp-forms-label-description-text-color)}ap-select.invalid:not([disabled]):not(.transparent) .ng-select-container,ap-select.ng-invalid.ng-dirty.ng-touched:not([disabled]):not(.transparent) .ng-select-container{border-color:var(--comp-input-border-error-color)}ap-select.valid:not([disabled]):not(.transparent) .ng-select-container{border:1px solid var(--comp-input-border-success-color)}.ng-select.ap-select-legacy .ng-select-container{border-color:var(--ref-color-grey-20)}.ng-select.ap-select-legacy .ng-select-container:hover{box-shadow:none;cursor:pointer;border-color:var(--ref-color-grey-40)!important}.ng-select.ap-select-legacy .ng-select-container .ng-value-container{overflow-x:auto;overflow-y:hidden}.ng-select.ap-select-legacy .ng-select-container .ng-value-container:hover,.ng-select.ap-select-legacy .ng-select-container .ng-value-container input:hover{cursor:pointer}.ng-select.ap-select-legacy.ng-select-opened.ng-select-bottom .ng-select-container,.ng-select.ap-select-legacy.ng-select-opened.ng-select-top .ng-select-container{border-radius:var(--ref-border-radius-sm);border-color:var(--ref-color-grey-20)}.ng-select.ap-select-legacy.ng-select-opened .ng-arrow{border-color:transparent transparent var(--ref-color-electric-blue-100)}.ng-select.ap-select-legacy.ng-select-opened .ng-select-container:hover{border-color:var(--ref-color-electric-blue-100)!important}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value{overflow:visible!important;width:100%;display:flex}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value span.text-item{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value span{display:inline-block}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-tag{width:100%;margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-tag div{overflow:auto}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-label{margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-label .label{overflow:auto}.ng-select.ap-select-legacy.ng-select-multiple .ng-select-container .ng-value-container{padding-left:12px;flex-wrap:nowrap;overflow:hidden}.ng-select.ap-select-legacy.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:0!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container{background-color:var(--ref-color-grey-20);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-100)}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container:hover{cursor:default!important;background-color:var(--ref-color-grey-20)!important;border-color:var(--ref-color-grey-20)!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container .ng-placeholder{color:var(--ref-color-grey-60)!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container .ng-value-container:hover{cursor:default!important}.ng-select.ap-select-legacy .ng-value-container{padding-left:12px;height:100%;position:relative;padding-top:0!important}.ng-select.ap-select-legacy .ng-value-container .ng-placeholder{position:absolute;padding-left:0!important;color:var(--ref-color-grey-60);font-weight:var(--ref-font-weight-regular);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select-legacy .ng-value-container .multiple-item{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select-legacy .ng-value-container .multiple-item .item{visibility:hidden}.ng-select.ap-select-legacy .ng-value-container .multiple-item .text-item{color:var(--ref-color-grey-100);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select-legacy .ng-value-container .with-avatar{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select-legacy .ng-value-container .ng-value{margin:0!important}.ng-select.ap-select-legacy .ng-value-container .ng-input{position:unset!important;padding:0!important;height:100%!important}.ng-select.ap-select-legacy .ng-value-container .ng-input input{height:100%;color:var(--ref-color-grey-100)!important;caret-color:var(--ref-color-grey-100)!important;border-radius:unset}.ng-select.ap-select-legacy.with-error .ng-select-container{border-color:var(--comp-input-border-error-color)}.ng-select.ap-select-legacy.with-success .ng-select-container{border-color:var(--comp-input-border-success-color)}.ng-dropdown-panel.ap-select-legacy,.ap-select-legacy .ng-select-container+.ng-dropdown-panel{overflow:hidden;border:none;box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color)}.ng-dropdown-panel.ap-select-legacy.ng-select-bottom,.ap-select-legacy .ng-select-container+.ng-dropdown-panel.ng-select-bottom{margin-top:var(--ref-spacing-xxxs);border-radius:var(--ref-border-radius-sm)}.ng-dropdown-panel.ap-select-legacy .ng-option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option{box-sizing:border-box;padding:0;position:relative}.ng-dropdown-panel.ap-select-legacy .ng-option .ng-option-label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option .ng-option-label{padding:0}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-child,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-child{padding-left:0}.ng-dropdown-panel.ap-select-legacy .ng-option:hover:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:hover:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select-legacy .ng-option:active:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:active:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select-legacy .ng-option:focus:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:focus:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple),.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple){background-color:var(--ref-color-electric-blue-10);color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple) .label,.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple) .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .caption{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option .label{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight);color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked .option span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option span{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked:hover{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option span{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option.multiple .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option.multiple .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-disabled,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled{color:var(--ref-color-grey-40)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-disabled .disabled-opaque,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled .disabled-opaque{position:absolute;inset:0;opacity:.6;background-color:var(--ref-color-white);cursor:default;width:100%;height:100%;z-index:999}.ng-dropdown-panel.ap-select-legacy .loading-state,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .loading-state{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:var(--ref-spacing-xxs);min-height:90px;max-height:90px;padding:var(--ref-spacing-md) var(--ref-spacing-sm) var(--ref-spacing-sm);box-sizing:border-box}.ng-dropdown-panel.ap-select-legacy .loading-state span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .loading-state span{font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm);font-style:italic;font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .group,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group{display:flex;align-items:center;width:100%;gap:var(--ref-spacing-xxs);padding:var(--comp-select-group-padding-horizontal) var(--comp-select-group-padding-vertical)}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox .checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox .checkbox label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox label{display:flex;gap:var(--ref-spacing-xxs);flex:1}.ng-dropdown-panel.ap-select-legacy .divider,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .divider{width:100%;height:1px;background-color:var(--comp-select-separator-color);margin:var(--ref-spacing-xxs) 0}.ng-dropdown-panel.ap-select-legacy .create-new,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new{display:flex;align-items:center;border:none;width:100%;background-color:transparent;gap:var(--ref-spacing-xxxs);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);cursor:pointer;padding:var(--comp-select-search-bar-bottom-link-margin-top) var(--comp-select-search-bar-bottom-link-padding-horizontal) var(--comp-select-search-bar-bottom-link-padding-bottom) var(--comp-select-search-bar-bottom-link-padding-horizontal);line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm)}.ng-dropdown-panel.ap-select-legacy .create-new:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .create-new:active,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new:active{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option{display:flex;align-items:center;box-sizing:border-box;min-height:var(--comp-select-one-line-height);max-height:var(--comp-select-one-line-height);color:var(--comp-select-one-line-text-color);background-color:var(--comp-select-one-line-background-color);font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height);padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal)}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox .checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox .checkbox label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox label{flex:1;overflow:auto}.ng-dropdown-panel.ap-select-legacy .option .option-item,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;flex:1}.ng-dropdown-panel.ap-select-legacy .option.not-found,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm) var(--ref-spacing-xxxs) var(--ref-spacing-sm)}.ng-dropdown-panel.ap-select-legacy .option .content,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content{display:flex;align-items:center;gap:var(--comp-select-one-line-spacing);flex:1;width:100%}.ng-dropdown-panel.ap-select-legacy .option .content .item,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .item{flex:1}.ng-dropdown-panel.ap-select-legacy .option .content .texts,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts{flex:1;overflow:auto;display:flex;flex-direction:column}.ng-dropdown-panel.ap-select-legacy .option .content .texts .first-line,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}.ng-dropdown-panel.ap-select-legacy .option .content .texts .first-line .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select-legacy .option .content ap-symbol,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content ap-symbol{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .option .content ap-symbol div.svg,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content ap-symbol div.svg{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .label{font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height)}.ng-dropdown-panel.ap-select-legacy .option.with-caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption{padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal);min-height:var(--comp-select-two-line-height);max-height:var(--comp-select-two-line-height)}.ng-dropdown-panel.ap-select-legacy .option.with-caption .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption .label{font-weight:var(--comp-select-two-line-title-text-font-weight);font-family:var(--comp-select-two-line-title-text-font-family);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);color:var(--comp-select-two-line-title-text-color)}.ng-dropdown-panel.ap-select-legacy .option.with-caption .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption .caption{font-weight:var(--comp-select-two-line-caption-text-font-weight);font-family:var(--comp-select-two-line-caption-text-font-family);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);color:var(--comp-select-two-line-caption-text-color);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-panel-items,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-panel-items{padding:0}.ng-dropdown-panel.ap-select-legacy .ng-optgroup,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup{display:flex;align-items:center;padding:0}.ng-dropdown-panel.ap-select-legacy .ng-optgroup:first-child .with-search,.ng-dropdown-panel.ap-select-legacy .ng-optgroup:first-child .with-select-all,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-search,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-select-all{border:none}.ng-dropdown-panel.ap-select-legacy .ng-optgroup .group,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup .group{display:flex;width:100%;height:100%;background-color:var(--comp-select-group-background-color);min-height:32px;box-sizing:border-box;max-height:50px;padding:var(--comp-select-group-padding-vertical) var(--comp-select-group-padding-horizontal);border-top:1px solid var(--comp-select-group-border-top-color)}.ng-dropdown-panel.ap-select-legacy .ng-optgroup .group .group-label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup .group .group-label{font-weight:var(--comp-select-group-text-font-weight);font-size:var(--comp-select-group-text-size);line-height:var(--comp-select-group-text-line-height);font-family:var(--comp-select-group-text-font-family);color:var(--comp-select-group-text-color)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-header,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-header{padding:0 var(--comp-select-search-bar-padding-horizontal) var(--comp-select-search-bar-margin-bottom) var(--comp-select-search-bar-padding-horizontal);border-bottom:1px solid var(--comp-select-search-bar-border-bottom-color)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-header .select-all-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-header .select-all-checkbox{padding-left:var(--ref-spacing-xxs);height:var(--comp-select-one-line-height)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-footer,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-footer{cursor:pointer;padding:0;border-top:1px solid var(--ref-color-grey-10)}.ng-dropdown-panel.ap-select-legacy .standalone-link,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link{color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);background-color:transparent;border:none;line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm);cursor:pointer}.ng-dropdown-panel.ap-select-legacy .standalone-link:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .standalone-link:active,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link:active{color:var(--ref-color-electric-blue-150)}.form-message{font-size:var(--comp-forms-status-text-size);font-weight:var(--comp-forms-status-text-font-weight);line-height:var(--comp-forms-status-text-line-height);font-family:var(--comp-forms-status-text-font-family);margin:0;display:flex;gap:var(--ref-spacing-xxxs)}.form-message.error{color:var(--comp-forms-status-text-error-color)}.form-message.error ap-symbol{color:var(--comp-forms-status-icon-error-color)}.form-message.success{color:var(--comp-forms-status-text-success-color)}.form-message.success ap-symbol{color:var(--comp-forms-status-icon-success-color)}form.ng-submitted ap-select.ng-valid .ng-select-container{border-color:var(--comp-input-border-success-color)}form.ng-submitted ap-select.ng-invalid .ng-select-container{border-color:var(--comp-input-border-error-color)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i2.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i2.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i2.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i2.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "directive", type: i2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: InputComponent, selector: "ap-input", inputs: ["ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "disabled", "clearable", "inputType", "inputId", "name", "label", "description", "prefix", "suffix", "required", "placeholder", "errorMessage", "successMessage", "symbolId", "symbolPosition"], outputs: ["focus", "blur", "keyup"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: CheckboxComponent, selector: "ap-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "disabled", "indeterminate", "checked", "required", "name"], outputs: ["change"] }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["profilePicture", "alt", "network", "size", "username", "showInitials", "bigNetwork", "anonymous", "online", "youtubeAvatarMode", "rounded"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LabelComponent, selector: "ap-label", inputs: ["content", "selectorWidth", "removable"], outputs: ["remove"] }, { kind: "component", type: TagComponent, selector: "ap-tag", inputs: ["clearable", "add", "color", "mini"], outputs: ["clear", "added"] }, { kind: "component", type: BadgeComponent, selector: "ap-badge", inputs: ["color"] }, { kind: "component", type: LoaderComponent, selector: "ap-loader", inputs: ["color", "diameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
324
324
|
}
|
|
325
325
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectComponent, decorators: [{
|
|
326
326
|
type: Component,
|