@agorapulse/ui-components 20.4.32 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agorapulse-ui-components-21.0.0.tgz +0 -0
- package/fesm2022/agorapulse-ui-components-action-dropdown.mjs +17 -18
- package/fesm2022/agorapulse-ui-components-action-dropdown.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-add-comment.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-autocomplete.mjs +7 -7
- package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-avatar-group.mjs +11 -13
- package/fesm2022/agorapulse-ui-components-avatar-group.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-avatar.mjs +21 -23
- package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-badge.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-button.mjs +15 -15
- package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-checkbox.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-close-button.mjs +7 -7
- package/fesm2022/agorapulse-ui-components-close-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-confirm-modal.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-counter.mjs +9 -9
- package/fesm2022/agorapulse-ui-components-counter.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-datepicker.mjs +50 -50
- package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-directives.mjs +26 -26
- package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-dot-stepper.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-dropdown-base.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-dropdown-base.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-filter-chips-list.mjs +22 -22
- package/fesm2022/agorapulse-ui-components-filter-chips-list.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-filter-dropdown.mjs +78 -78
- package/fesm2022/agorapulse-ui-components-filter-dropdown.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-form-field.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-form-message.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-form-message.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-icon-button.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-infobox.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input-group.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-input-search.mjs +9 -9
- package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-labels-selector.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-labels.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-legacy-input.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-legacy-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-select.mjs +16 -16
- package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-modal.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs +148 -148
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-notification.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-paginator.mjs +8 -8
- package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-password-input.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-phone-number-input.mjs +5 -6
- package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-popmenu.mjs +10 -10
- package/fesm2022/agorapulse-ui-components-radio-button-card.mjs +25 -25
- package/fesm2022/agorapulse-ui-components-radio-button-card.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-radio.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-range-slider.mjs +4 -4
- package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-segmented-control.mjs +17 -10
- package/fesm2022/agorapulse-ui-components-segmented-control.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-select.mjs +74 -74
- package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-selection-dropdown.mjs +33 -33
- package/fesm2022/agorapulse-ui-components-selection-dropdown.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-slide-toggle.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-social-button.mjs +6 -6
- package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-split-button.mjs +14 -14
- package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-status-card.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-status.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-stepper.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-tabs.mjs +25 -24
- package/fesm2022/agorapulse-ui-components-tabs.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-tag.mjs +9 -9
- package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-text-measurement.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-textarea.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-toggle.mjs +5 -5
- package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-tooltip.mjs +34 -34
- package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components.mjs +4 -4
- package/package.json +71 -70
- package/{button/index.d.ts → types/agorapulse-ui-components-button.d.ts} +1 -1
- package/{icon-button/index.d.ts → types/agorapulse-ui-components-icon-button.d.ts} +1 -1
- package/{paginator/index.d.ts → types/agorapulse-ui-components-paginator.d.ts} +1 -1
- package/{segmented-control/index.d.ts → types/agorapulse-ui-components-segmented-control.d.ts} +3 -2
- package/{social-button/index.d.ts → types/agorapulse-ui-components-social-button.d.ts} +1 -1
- package/{split-button/index.d.ts → types/agorapulse-ui-components-split-button.d.ts} +1 -1
- package/agorapulse-ui-components-20.4.32.tgz +0 -0
- /package/{action-dropdown/index.d.ts → types/agorapulse-ui-components-action-dropdown.d.ts} +0 -0
- /package/{add-comment/index.d.ts → types/agorapulse-ui-components-add-comment.d.ts} +0 -0
- /package/{autocomplete/index.d.ts → types/agorapulse-ui-components-autocomplete.d.ts} +0 -0
- /package/{avatar-group/index.d.ts → types/agorapulse-ui-components-avatar-group.d.ts} +0 -0
- /package/{avatar/index.d.ts → types/agorapulse-ui-components-avatar.d.ts} +0 -0
- /package/{badge/index.d.ts → types/agorapulse-ui-components-badge.d.ts} +0 -0
- /package/{checkbox/index.d.ts → types/agorapulse-ui-components-checkbox.d.ts} +0 -0
- /package/{close-button/index.d.ts → types/agorapulse-ui-components-close-button.d.ts} +0 -0
- /package/{confirm-modal/index.d.ts → types/agorapulse-ui-components-confirm-modal.d.ts} +0 -0
- /package/{counter/index.d.ts → types/agorapulse-ui-components-counter.d.ts} +0 -0
- /package/{datepicker/index.d.ts → types/agorapulse-ui-components-datepicker.d.ts} +0 -0
- /package/{directives/index.d.ts → types/agorapulse-ui-components-directives.d.ts} +0 -0
- /package/{dot-stepper/index.d.ts → types/agorapulse-ui-components-dot-stepper.d.ts} +0 -0
- /package/{dropdown-base/index.d.ts → types/agorapulse-ui-components-dropdown-base.d.ts} +0 -0
- /package/{filter-chips-list/index.d.ts → types/agorapulse-ui-components-filter-chips-list.d.ts} +0 -0
- /package/{filter-dropdown/index.d.ts → types/agorapulse-ui-components-filter-dropdown.d.ts} +0 -0
- /package/{form-field/index.d.ts → types/agorapulse-ui-components-form-field.d.ts} +0 -0
- /package/{form-message/index.d.ts → types/agorapulse-ui-components-form-message.d.ts} +0 -0
- /package/{infobox/index.d.ts → types/agorapulse-ui-components-infobox.d.ts} +0 -0
- /package/{input-group/index.d.ts → types/agorapulse-ui-components-input-group.d.ts} +0 -0
- /package/{input-search/index.d.ts → types/agorapulse-ui-components-input-search.d.ts} +0 -0
- /package/{input/index.d.ts → types/agorapulse-ui-components-input.d.ts} +0 -0
- /package/{labels-selector/index.d.ts → types/agorapulse-ui-components-labels-selector.d.ts} +0 -0
- /package/{labels/index.d.ts → types/agorapulse-ui-components-labels.d.ts} +0 -0
- /package/{legacy/input/index.d.ts → types/agorapulse-ui-components-legacy-input.d.ts} +0 -0
- /package/{legacy/select/index.d.ts → types/agorapulse-ui-components-legacy-select.d.ts} +0 -0
- /package/{legacy/textarea/index.d.ts → types/agorapulse-ui-components-legacy-textarea.d.ts} +0 -0
- /package/{media-display-overlay/index.d.ts → types/agorapulse-ui-components-media-display-overlay.d.ts} +0 -0
- /package/{modal/index.d.ts → types/agorapulse-ui-components-modal.d.ts} +0 -0
- /package/{nav-selector/testing/index.d.ts → types/agorapulse-ui-components-nav-selector-testing.d.ts} +0 -0
- /package/{nav-selector/index.d.ts → types/agorapulse-ui-components-nav-selector.d.ts} +0 -0
- /package/{neo-datepicker/index.d.ts → types/agorapulse-ui-components-neo-datepicker.d.ts} +0 -0
- /package/{notification/index.d.ts → types/agorapulse-ui-components-notification.d.ts} +0 -0
- /package/{password-input/index.d.ts → types/agorapulse-ui-components-password-input.d.ts} +0 -0
- /package/{phone-number-input/index.d.ts → types/agorapulse-ui-components-phone-number-input.d.ts} +0 -0
- /package/{popmenu/index.d.ts → types/agorapulse-ui-components-popmenu.d.ts} +0 -0
- /package/{providers/index.d.ts → types/agorapulse-ui-components-providers.d.ts} +0 -0
- /package/{radio-button-card/index.d.ts → types/agorapulse-ui-components-radio-button-card.d.ts} +0 -0
- /package/{radio/index.d.ts → types/agorapulse-ui-components-radio.d.ts} +0 -0
- /package/{range-slider/index.d.ts → types/agorapulse-ui-components-range-slider.d.ts} +0 -0
- /package/{select/index.d.ts → types/agorapulse-ui-components-select.d.ts} +0 -0
- /package/{selection-dropdown/index.d.ts → types/agorapulse-ui-components-selection-dropdown.d.ts} +0 -0
- /package/{slide-toggle/index.d.ts → types/agorapulse-ui-components-slide-toggle.d.ts} +0 -0
- /package/{snackbars-thread/index.d.ts → types/agorapulse-ui-components-snackbars-thread.d.ts} +0 -0
- /package/{status-card/index.d.ts → types/agorapulse-ui-components-status-card.d.ts} +0 -0
- /package/{status/index.d.ts → types/agorapulse-ui-components-status.d.ts} +0 -0
- /package/{stepper/index.d.ts → types/agorapulse-ui-components-stepper.d.ts} +0 -0
- /package/{tabs/index.d.ts → types/agorapulse-ui-components-tabs.d.ts} +0 -0
- /package/{tag/index.d.ts → types/agorapulse-ui-components-tag.d.ts} +0 -0
- /package/{text-measurement/index.d.ts → types/agorapulse-ui-components-text-measurement.d.ts} +0 -0
- /package/{textarea/index.d.ts → types/agorapulse-ui-components-textarea.d.ts} +0 -0
- /package/{toggle/index.d.ts → types/agorapulse-ui-components-toggle.d.ts} +0 -0
- /package/{tooltip/index.d.ts → types/agorapulse-ui-components-tooltip.d.ts} +0 -0
- /package/{index.d.ts → types/agorapulse-ui-components.d.ts} +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 {\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 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 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 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 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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"}
|
|
@@ -26,10 +26,10 @@ class DotStepperComponent {
|
|
|
26
26
|
this.index = index;
|
|
27
27
|
this.dotClick.emit(this.index);
|
|
28
28
|
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
30
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: DotStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: DotStepperComponent, isStandalone: true, selector: "ap-dot-stepper", inputs: { interactive: ["interactive", "interactive", booleanAttribute], index: "index", items: "items" }, outputs: { dotClick: "dotClick" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"dots\">\n @for (item of items; track item; let i = $index) {\n <div\n class=\"dot\"\n tabindex=\"-1\"\n [ngClass]=\"{\n active: item === currentItem,\n disabled: !interactive\n }\"\n (click)=\"onDotClick($event, item, i)\"\n (keydown)=\"onDotClick($event, item, i)\"></div>\n }\n</div>\n", styles: [".dots{align-items:stretch;box-sizing:border-box;display:flex;flex-direction:row;gap:var(--comp-dot-stepper-spacing);place-content:stretch center;width:100%}.dots .dot{position:relative;transition:all .2s ease-in-out;border:var(--comp-dot-stepper-dot-inactive-border-width) solid var(--comp-dot-stepper-dot-inactive-border-color);border-radius:50%;height:var(--comp-dot-stepper-dot-size);width:var(--comp-dot-stepper-dot-size);cursor:pointer}.dots .dot:hover{border:var(--comp-dot-stepper-dot-inactive-border-width) solid var(--ref-color-electric-blue-60);background:var(--comp-dot-stepper-dot-inactive-focused-background-color)}.dots .dot:focus{background:var(--comp-dot-stepper-dot-inactive-hovered-background-color)}.dots .dot:focus:after{content:\"\";width:calc(var(--comp-dot-stepper-dot-size) + var(--comp-dot-stepper-dot-inactive-border-width));height:calc(var(--comp-dot-stepper-dot-size) + var(--comp-dot-stepper-dot-inactive-border-width));top:calc(-1 * (var(--comp-dot-stepper-dot-inactive-border-width) * 2 + 1px));left:calc(-1 * (var(--comp-dot-stepper-dot-inactive-border-width) * 2 + 1px));position:absolute;border-radius:50%;border:var(--comp-dot-stepper-dot-inactive-border-width) solid var(--ref-color-electric-blue-100)}.dots .dot.active{background:var(--comp-dot-stepper-dot-active-background-color);border:var(--comp-dot-stepper-dot-inactive-border-width) solid var(--ref-color-electric-blue-150);cursor:initial}.dots .dot.disabled{cursor:initial;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
31
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: DotStepperComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
34
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-dot-stepper', imports: [NgClass], template: "<div\n class=\"dots\">\n @for (item of items; track item; let i = $index) {\n <div\n class=\"dot\"\n tabindex=\"-1\"\n [ngClass]=\"{\n active: item === currentItem,\n disabled: !interactive\n }\"\n (click)=\"onDotClick($event, item, i)\"\n (keydown)=\"onDotClick($event, item, i)\"></div>\n }\n</div>\n", styles: [".dots{align-items:stretch;box-sizing:border-box;display:flex;flex-direction:row;gap:var(--comp-dot-stepper-spacing);place-content:stretch center;width:100%}.dots .dot{position:relative;transition:all .2s ease-in-out;border:var(--comp-dot-stepper-dot-inactive-border-width) solid var(--comp-dot-stepper-dot-inactive-border-color);border-radius:50%;height:var(--comp-dot-stepper-dot-size);width:var(--comp-dot-stepper-dot-size);cursor:pointer}.dots .dot:hover{border:var(--comp-dot-stepper-dot-inactive-border-width) solid var(--ref-color-electric-blue-60);background:var(--comp-dot-stepper-dot-inactive-focused-background-color)}.dots .dot:focus{background:var(--comp-dot-stepper-dot-inactive-hovered-background-color)}.dots .dot:focus:after{content:\"\";width:calc(var(--comp-dot-stepper-dot-size) + var(--comp-dot-stepper-dot-inactive-border-width));height:calc(var(--comp-dot-stepper-dot-size) + var(--comp-dot-stepper-dot-inactive-border-width));top:calc(-1 * (var(--comp-dot-stepper-dot-inactive-border-width) * 2 + 1px));left:calc(-1 * (var(--comp-dot-stepper-dot-inactive-border-width) * 2 + 1px));position:absolute;border-radius:50%;border:var(--comp-dot-stepper-dot-inactive-border-width) solid var(--ref-color-electric-blue-100)}.dots .dot.active{background:var(--comp-dot-stepper-dot-active-background-color);border:var(--comp-dot-stepper-dot-inactive-border-width) solid var(--ref-color-electric-blue-150);cursor:initial}.dots .dot.disabled{cursor:initial;pointer-events:none}\n"] }]
|
|
35
35
|
}], propDecorators: { interactive: [{
|
|
@@ -12,7 +12,7 @@ import { take, filter } from 'rxjs/operators';
|
|
|
12
12
|
class DropdownTriggerDirective {
|
|
13
13
|
elementRef = inject((ElementRef));
|
|
14
14
|
/** Reference to the dropdown component that this trigger controls */
|
|
15
|
-
apDropdownTrigger = input.required(...(ngDevMode ? [{ debugName: "apDropdownTrigger" }] : []));
|
|
15
|
+
apDropdownTrigger = input.required(...(ngDevMode ? [{ debugName: "apDropdownTrigger" }] : /* istanbul ignore next */ []));
|
|
16
16
|
/** Handles click events to toggle the dropdown */
|
|
17
17
|
onClick(event) {
|
|
18
18
|
event.preventDefault();
|
|
@@ -35,10 +35,10 @@ class DropdownTriggerDirective {
|
|
|
35
35
|
break;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
39
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: DropdownTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
39
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: DropdownTriggerDirective, isStandalone: true, selector: "[apDropdownTrigger]", inputs: { apDropdownTrigger: { classPropertyName: "apDropdownTrigger", publicName: "apDropdownTrigger", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, ngImport: i0 });
|
|
40
40
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: DropdownTriggerDirective, decorators: [{
|
|
42
42
|
type: Directive,
|
|
43
43
|
args: [{
|
|
44
44
|
selector: '[apDropdownTrigger]',
|
|
@@ -63,7 +63,7 @@ function createDropdownOverlay() {
|
|
|
63
63
|
const viewContainerRef = inject(ViewContainerRef);
|
|
64
64
|
let _overlayRef = null;
|
|
65
65
|
let portal = null;
|
|
66
|
-
const isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
|
|
66
|
+
const isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
67
67
|
function open(template, triggerElement, config) {
|
|
68
68
|
if (isOpen())
|
|
69
69
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-dropdown-base.mjs","sources":["../../../libs/ui-components/dropdown-base/src/dropdown-trigger.directive.ts","../../../libs/ui-components/dropdown-base/src/dropdown-overlay.helper.ts","../../../libs/ui-components/dropdown-base/src/agorapulse-ui-components-dropdown-base.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, inject, input } from '@angular/core';\nimport { DropdownOverlay } from './dropdown-overlay.interface';\n\n/**\n * Generic directive that turns any element into a trigger for a dropdown component\n * implementing the DropdownOverlay interface.\n * Handles click and keyboard interactions to open/close the dropdown.\n */\n@Directive({\n selector: '[apDropdownTrigger]',\n})\nexport class DropdownTriggerDirective {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /** Reference to the dropdown component that this trigger controls */\n apDropdownTrigger = input.required<DropdownOverlay>();\n\n /** Handles click events to toggle the dropdown */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.apDropdownTrigger().toggle(this.elementRef.nativeElement);\n }\n\n /** Handles keyboard events for accessibility (Enter, Space, Arrow Down, Escape) */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const dropdown = this.apDropdownTrigger();\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault();\n dropdown.open(this.elementRef.nativeElement);\n break;\n\n case 'Escape':\n event.preventDefault();\n dropdown.close();\n break;\n }\n }\n}\n","import {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayPositionBuilder,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ElementRef, inject, signal, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { filter, take } from 'rxjs/operators';\n\nexport interface DropdownOverlayConfig {\n showBackdrop?: boolean;\n defaultPosition?: 'right' | 'left';\n /** Called when the overlay is closed via backdrop click or Escape key. Typically routes to the component's own close() method. */\n onClose?: () => void;\n}\n\n/**\n * Creates a composable dropdown overlay helper that manages CDK overlay creation,\n * positioning, and disposal. Must be called within an Angular injection context\n * (e.g., in a component constructor or field initializer).\n */\nexport function createDropdownOverlay() {\n const elementRef = inject(ElementRef);\n const overlay = inject(Overlay);\n const positionBuilder = inject(OverlayPositionBuilder);\n const viewContainerRef = inject(ViewContainerRef);\n\n let _overlayRef: OverlayRef | null = null;\n let portal: TemplatePortal<unknown> | null = null;\n const isOpen = signal(false);\n\n function open(\n template: TemplateRef<unknown>,\n triggerElement?: HTMLElement,\n config?: DropdownOverlayConfig\n ): void {\n if (isOpen()) return;\n\n const target = triggerElement ?? elementRef.nativeElement;\n\n if (_overlayRef) {\n _overlayRef.dispose();\n }\n\n const positionStrategy = buildPositionStrategy(target, config?.defaultPosition ?? 'right');\n\n _overlayRef = overlay.create({\n positionStrategy,\n hasBackdrop: config?.showBackdrop ?? true,\n backdropClass: '',\n panelClass: '',\n scrollStrategy: overlay.scrollStrategies.reposition(),\n });\n\n portal = new TemplatePortal(template, viewContainerRef);\n _overlayRef.attach(portal);\n isOpen.set(true);\n\n const closeHandler = config?.onClose ?? (() => close());\n\n _overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => closeHandler());\n\n _overlayRef\n .keydownEvents()\n .pipe(\n filter((event: KeyboardEvent) => event.key === 'Escape'),\n take(1)\n )\n .subscribe(() => closeHandler());\n }\n\n function close(): void {\n if (!isOpen()) return;\n\n if (_overlayRef) {\n _overlayRef.dispose();\n _overlayRef = null;\n }\n\n portal = null;\n isOpen.set(false);\n }\n\n function buildPositionStrategy(\n target: HTMLElement,\n defaultPosition: 'right' | 'left'\n ): FlexibleConnectedPositionStrategy {\n const gap = 4;\n\n const positions: ConnectedPosition[] =\n defaultPosition === 'right'\n ? [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 0,\n offsetY: gap,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 0,\n offsetY: gap,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -gap,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -gap,\n },\n ]\n : [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 0,\n offsetY: gap,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 0,\n offsetY: gap,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -gap,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -gap,\n },\n ];\n\n return positionBuilder\n .flexibleConnectedTo(target)\n .withPositions(positions)\n .withFlexibleDimensions(true)\n .withPush(true)\n .withGrowAfterOpen(true)\n .withViewportMargin(8);\n }\n\n return {\n get overlayRef() {\n return _overlayRef;\n },\n isOpen: isOpen.asReadonly(),\n open,\n close,\n };\n}\n\nexport type DropdownOverlayInstance = ReturnType<typeof createDropdownOverlay>;\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-dropdown-base.mjs","sources":["../../../libs/ui-components/dropdown-base/src/dropdown-trigger.directive.ts","../../../libs/ui-components/dropdown-base/src/dropdown-overlay.helper.ts","../../../libs/ui-components/dropdown-base/src/agorapulse-ui-components-dropdown-base.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, inject, input } from '@angular/core';\nimport { DropdownOverlay } from './dropdown-overlay.interface';\n\n/**\n * Generic directive that turns any element into a trigger for a dropdown component\n * implementing the DropdownOverlay interface.\n * Handles click and keyboard interactions to open/close the dropdown.\n */\n@Directive({\n selector: '[apDropdownTrigger]',\n})\nexport class DropdownTriggerDirective {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /** Reference to the dropdown component that this trigger controls */\n apDropdownTrigger = input.required<DropdownOverlay>();\n\n /** Handles click events to toggle the dropdown */\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.apDropdownTrigger().toggle(this.elementRef.nativeElement);\n }\n\n /** Handles keyboard events for accessibility (Enter, Space, Arrow Down, Escape) */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const dropdown = this.apDropdownTrigger();\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault();\n dropdown.open(this.elementRef.nativeElement);\n break;\n\n case 'Escape':\n event.preventDefault();\n dropdown.close();\n break;\n }\n }\n}\n","import {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayPositionBuilder,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ElementRef, inject, signal, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { filter, take } from 'rxjs/operators';\n\nexport interface DropdownOverlayConfig {\n showBackdrop?: boolean;\n defaultPosition?: 'right' | 'left';\n /** Called when the overlay is closed via backdrop click or Escape key. Typically routes to the component's own close() method. */\n onClose?: () => void;\n}\n\n/**\n * Creates a composable dropdown overlay helper that manages CDK overlay creation,\n * positioning, and disposal. Must be called within an Angular injection context\n * (e.g., in a component constructor or field initializer).\n */\nexport function createDropdownOverlay() {\n const elementRef = inject(ElementRef);\n const overlay = inject(Overlay);\n const positionBuilder = inject(OverlayPositionBuilder);\n const viewContainerRef = inject(ViewContainerRef);\n\n let _overlayRef: OverlayRef | null = null;\n let portal: TemplatePortal<unknown> | null = null;\n const isOpen = signal(false);\n\n function open(\n template: TemplateRef<unknown>,\n triggerElement?: HTMLElement,\n config?: DropdownOverlayConfig\n ): void {\n if (isOpen()) return;\n\n const target = triggerElement ?? elementRef.nativeElement;\n\n if (_overlayRef) {\n _overlayRef.dispose();\n }\n\n const positionStrategy = buildPositionStrategy(target, config?.defaultPosition ?? 'right');\n\n _overlayRef = overlay.create({\n positionStrategy,\n hasBackdrop: config?.showBackdrop ?? true,\n backdropClass: '',\n panelClass: '',\n scrollStrategy: overlay.scrollStrategies.reposition(),\n });\n\n portal = new TemplatePortal(template, viewContainerRef);\n _overlayRef.attach(portal);\n isOpen.set(true);\n\n const closeHandler = config?.onClose ?? (() => close());\n\n _overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => closeHandler());\n\n _overlayRef\n .keydownEvents()\n .pipe(\n filter((event: KeyboardEvent) => event.key === 'Escape'),\n take(1)\n )\n .subscribe(() => closeHandler());\n }\n\n function close(): void {\n if (!isOpen()) return;\n\n if (_overlayRef) {\n _overlayRef.dispose();\n _overlayRef = null;\n }\n\n portal = null;\n isOpen.set(false);\n }\n\n function buildPositionStrategy(\n target: HTMLElement,\n defaultPosition: 'right' | 'left'\n ): FlexibleConnectedPositionStrategy {\n const gap = 4;\n\n const positions: ConnectedPosition[] =\n defaultPosition === 'right'\n ? [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 0,\n offsetY: gap,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 0,\n offsetY: gap,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -gap,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -gap,\n },\n ]\n : [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 0,\n offsetY: gap,\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 0,\n offsetY: gap,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -gap,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -gap,\n },\n ];\n\n return positionBuilder\n .flexibleConnectedTo(target)\n .withPositions(positions)\n .withFlexibleDimensions(true)\n .withPush(true)\n .withGrowAfterOpen(true)\n .withViewportMargin(8);\n }\n\n return {\n get overlayRef() {\n return _overlayRef;\n },\n isOpen: isOpen.asReadonly(),\n open,\n close,\n };\n}\n\nexport type DropdownOverlayInstance = ReturnType<typeof createDropdownOverlay>;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -12,15 +12,15 @@ import { explicitEffect } from 'ngxtension/explicit-effect';
|
|
|
12
12
|
import { AvatarComponent } from '@agorapulse/ui-components/avatar';
|
|
13
13
|
|
|
14
14
|
class FilterChipComponent {
|
|
15
|
-
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
16
|
-
disabled = input(false, ...(ngDevMode ?
|
|
17
|
-
disabledTooltip = input(...(ngDevMode ? [undefined, { debugName: "disabledTooltip" }] : []));
|
|
18
|
-
symbolId = input(...(ngDevMode ? [undefined, { debugName: "symbolId" }] : []));
|
|
19
|
-
avatar = input(...(ngDevMode ? [undefined, { debugName: "avatar" }] : []));
|
|
20
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
21
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
15
|
+
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
16
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
17
|
+
disabledTooltip = input(...(ngDevMode ? [undefined, { debugName: "disabledTooltip" }] : /* istanbul ignore next */ []));
|
|
18
|
+
symbolId = input(...(ngDevMode ? [undefined, { debugName: "symbolId" }] : /* istanbul ignore next */ []));
|
|
19
|
+
avatar = input(...(ngDevMode ? [undefined, { debugName: "avatar" }] : /* istanbul ignore next */ []));
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FilterChipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FilterChipComponent, isStandalone: true, selector: "button[ap-filter-chip]", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, disabledTooltip: { classPropertyName: "disabledTooltip", publicName: "disabledTooltip", isSignal: true, isRequired: false, transformFunction: null }, symbolId: { classPropertyName: "symbolId", publicName: "symbolId", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "type": "button" }, properties: { "disabled": "disabled() || null" }, classAttribute: "filter-chip" }, ngImport: i0, template: "@if (symbolId()) {\n <span class=\"filter-chip-icon\">\n <ap-symbol\n size=\"sm\"\n [symbolId]=\"symbolId()\" />\n </span>\n}\n@if (avatar(); as avatar) {\n <ap-avatar\n class=\"filter-chip-avatar\"\n [username]=\"avatar.username ?? ''\"\n [profilePicture]=\"avatar.profilePicture\"\n [network]=\"avatar.network\"\n [showInitials]=\"true\"\n [size]=\"16\" />\n}\n<span\n class=\"filter-chip-label\"\n [apTooltip]=\"label()\"\n [apTooltipTruncatedTextOnly]=\"true\"\n [apTooltipDisabled]=\"!!disabledTooltip()\">\n {{ label() }}\n</span>\n", styles: [":host{display:inline-flex;align-items:center;gap:var(--ref-spacing-xxxs);height:24px;max-width:200px;padding:0 var(--ref-spacing-xxs);border-radius:24px;border:1px solid var(--ref-color-grey-20);background-color:var(--ref-color-white);cursor:pointer;overflow:hidden;font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm);font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-100);line-height:var(--ref-font-line-height-sm);transition:border-color .15s ease}:host:hover:not([disabled]){border-color:var(--ref-color-grey-40)}:host:active:not([disabled]){border-color:var(--ref-color-grey-80)}:host:focus-visible{outline:none;border-color:var(--ref-color-grey-40);box-shadow:0 0 0 1px var(--ref-color-white),0 0 0 3px var(--ref-color-electric-blue-100)}:host[disabled]{cursor:default;background-color:var(--ref-color-grey-05);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-40)}:host[aria-selected=true]{background-color:var(--ref-color-electric-blue-10);border-color:var(--ref-color-electric-blue-100);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold)}:host[aria-selected=true]:hover:not([disabled]){border-color:var(--ref-color-electric-blue-60)}:host[aria-selected=true]:active:not([disabled]){border-color:var(--ref-color-electric-blue-100)}:host[aria-selected=true]:focus-visible{border-color:var(--ref-color-electric-blue-60);box-shadow:0 0 0 1px var(--ref-color-white),0 0 0 3px var(--ref-color-electric-blue-100)}:host[aria-selected=true][disabled]{background-color:var(--ref-color-electric-blue-10);border-color:var(--ref-color-electric-blue-40);color:var(--ref-color-electric-blue-40);font-weight:var(--ref-font-weight-regular)}.filter-chip-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px}.filter-chip-avatar{flex-shrink:0}.filter-chip-label{flex:1 0 0;min-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["profilePicture", "alt", "network", "size", "username", "showInitials", "bigNetwork", "anonymous", "online", "youtubeAvatarMode", "rounded"] }, { kind: "directive", type: TooltipDirective, selector: "[apTooltip]", inputs: ["apTooltip", "apTooltipPosition", "apTooltipShowDelay", "apTooltipHideDelay", "apTooltipDuration", "apTooltipDisabled", "apTooltipTruncatedTextOnly", "apTooltipTemplateContext", "apTooltipVirtualScrollElement", "apTooltipTrigger", "apTooltipType", "apTooltipPresentationContext", "apTooltipListItems", "apTooltipShowAvatarCaption"], exportAs: ["apTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FilterChipComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
25
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'button[ap-filter-chip]', imports: [SymbolComponent, AvatarComponent, TooltipDirective], host: {
|
|
26
26
|
type: 'button',
|
|
@@ -50,25 +50,25 @@ class FilterChipsListComponent {
|
|
|
50
50
|
*/
|
|
51
51
|
cva;
|
|
52
52
|
/** Chips to render. Each item exposes a `value` (extracted via `bindValue`) and a label (via `bindLabel`). */
|
|
53
|
-
items = input([], ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
53
|
+
items = input([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
54
54
|
/** When true, multiple chips can be selected at once. When false, only one. */
|
|
55
|
-
multiple = input(false, ...(ngDevMode ?
|
|
55
|
+
multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
56
56
|
/** Disable every chip in the list. Combined with the FormControl disabled state. */
|
|
57
|
-
disabled = input(false, ...(ngDevMode ?
|
|
57
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
58
58
|
/** Mark the control as required. Surfaces `{ required: true }` on empty selection and `aria-required="true"`. */
|
|
59
|
-
required = input(false, ...(ngDevMode ?
|
|
59
|
+
required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
60
60
|
/** Key on `item.value` to project as the form-model value. When null (default), the whole `item.value` is used. */
|
|
61
|
-
bindValue = input(null, ...(ngDevMode ? [{ debugName: "bindValue" }] : []));
|
|
61
|
+
bindValue = input(null, ...(ngDevMode ? [{ debugName: "bindValue" }] : /* istanbul ignore next */ []));
|
|
62
62
|
/** Key on `item.value` to display as the chip label. When null (default), the value itself is used when primitive. */
|
|
63
|
-
bindLabel = input(null, ...(ngDevMode ? [{ debugName: "bindLabel" }] : []));
|
|
63
|
+
bindLabel = input(null, ...(ngDevMode ? [{ debugName: "bindLabel" }] : /* istanbul ignore next */ []));
|
|
64
64
|
/** Equality used to match selected values against items. Defaults to `Object.is` — pass a custom fn for object values. */
|
|
65
|
-
compareWith = input(Object.is, ...(ngDevMode ? [{ debugName: "compareWith" }] : []));
|
|
65
|
+
compareWith = input(Object.is, ...(ngDevMode ? [{ debugName: "compareWith" }] : /* istanbul ignore next */ []));
|
|
66
66
|
/** Accessible label for the listbox — relayed to the inner `[role="listbox"]` element via `aria-label`. */
|
|
67
|
-
ariaLabel = input(null, ...(ngDevMode ?
|
|
67
|
+
ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
|
|
68
68
|
/** User-initiated selection change — payload `{ value, item }`. Not emitted on programmatic `writeValue`. */
|
|
69
69
|
valueChange = output();
|
|
70
70
|
/** Effective disabled state — `[disabled]` input OR `FormControl.disable()` (mirrored by `cva.disabled$`). */
|
|
71
|
-
isDisabled = computed(() => this.disabled() || (this.cva?.disabled$() ?? false), ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
|
|
71
|
+
isDisabled = computed(() => this.disabled() || (this.cva?.disabled$() ?? false), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
72
72
|
viewItems = computed(() => {
|
|
73
73
|
const listDisabled = this.isDisabled();
|
|
74
74
|
return this.items().map(item => ({
|
|
@@ -80,8 +80,8 @@ class FilterChipsListComponent {
|
|
|
80
80
|
disabledTooltip: item.disabledTooltip,
|
|
81
81
|
disabled: listDisabled || (item.disabled ?? false),
|
|
82
82
|
}));
|
|
83
|
-
}, ...(ngDevMode ? [{ debugName: "viewItems" }] : []));
|
|
84
|
-
_validator = computed(() => (this.required() ? requiredArrayValidator : null), ...(ngDevMode ? [{ debugName: "_validator" }] : []));
|
|
83
|
+
}, ...(ngDevMode ? [{ debugName: "viewItems" }] : /* istanbul ignore next */ []));
|
|
84
|
+
_validator = computed(() => (this.required() ? requiredArrayValidator : null), ...(ngDevMode ? [{ debugName: "_validator" }] : /* istanbul ignore next */ []));
|
|
85
85
|
_onValidatorChange;
|
|
86
86
|
constructor() {
|
|
87
87
|
this.symbolRegistry.withSymbols(...(inject(UI_COMPONENTS_SYMBOLS, { optional: true })?.flat() ?? []));
|
|
@@ -113,10 +113,10 @@ class FilterChipsListComponent {
|
|
|
113
113
|
return String(get(item.value, path) ?? '');
|
|
114
114
|
return typeof item.value === 'object' ? '' : String(item.value);
|
|
115
115
|
}
|
|
116
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
117
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FilterChipsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
117
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FilterChipsListComponent, isStandalone: true, selector: "ap-filter-chips-list", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [AP_FILTER_CHIPS_LIST_VALIDATOR], hostDirectives: [{ directive: i1.NgxControlValueAccessor }], ngImport: i0, template: "<div class=\"filter-chips-list\"\n cdkListbox\n cdkListboxOrientation=\"horizontal\"\n [cdkListboxValue]=\"cva.value$()\"\n [cdkListboxMultiple]=\"multiple()\"\n [cdkListboxDisabled]=\"isDisabled()\"\n [cdkListboxCompareWith]=\"compareWith()\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n (cdkListboxValueChange)=\"onListboxChange($event)\">\n @for (item of viewItems(); track item.source) {\n <button\n ap-filter-chip\n type=\"button\"\n [cdkOption]=\"item.modelValue\"\n [cdkOptionDisabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [apTooltip]=\"item.disabledTooltip ?? null\"\n [apTooltipDisabled]=\"!item.disabled || !item.disabledTooltip\"\n [label]=\"item.label\"\n [symbolId]=\"item.symbolId\"\n [avatar]=\"item.avatar\"\n [disabledTooltip]=\"item.disabledTooltip\"></button>\n }\n</div>\n", styles: [":host{display:block}.filter-chips-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ref-spacing-xxs)}\n"], dependencies: [{ kind: "component", type: FilterChipComponent, selector: "button[ap-filter-chip]", inputs: ["label", "disabled", "disabledTooltip", "symbolId", "avatar"] }, { kind: "directive", type: TooltipDirective, selector: "[apTooltip]", inputs: ["apTooltip", "apTooltipPosition", "apTooltipShowDelay", "apTooltipHideDelay", "apTooltipDuration", "apTooltipDisabled", "apTooltipTruncatedTextOnly", "apTooltipTemplateContext", "apTooltipVirtualScrollElement", "apTooltipTrigger", "apTooltipType", "apTooltipPresentationContext", "apTooltipListItems", "apTooltipShowAvatarCaption"], exportAs: ["apTooltip"] }, { kind: "directive", type: CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
118
118
|
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FilterChipsListComponent, decorators: [{
|
|
120
120
|
type: Component,
|
|
121
121
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-filter-chips-list', imports: [FilterChipComponent, TooltipDirective, CdkListbox, CdkOption], hostDirectives: [NgxControlValueAccessor], providers: [AP_FILTER_CHIPS_LIST_VALIDATOR], template: "<div class=\"filter-chips-list\"\n cdkListbox\n cdkListboxOrientation=\"horizontal\"\n [cdkListboxValue]=\"cva.value$()\"\n [cdkListboxMultiple]=\"multiple()\"\n [cdkListboxDisabled]=\"isDisabled()\"\n [cdkListboxCompareWith]=\"compareWith()\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n (cdkListboxValueChange)=\"onListboxChange($event)\">\n @for (item of viewItems(); track item.source) {\n <button\n ap-filter-chip\n type=\"button\"\n [cdkOption]=\"item.modelValue\"\n [cdkOptionDisabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [apTooltip]=\"item.disabledTooltip ?? null\"\n [apTooltipDisabled]=\"!item.disabled || !item.disabledTooltip\"\n [label]=\"item.label\"\n [symbolId]=\"item.symbolId\"\n [avatar]=\"item.avatar\"\n [disabledTooltip]=\"item.disabledTooltip\"></button>\n }\n</div>\n", styles: [":host{display:block}.filter-chips-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ref-spacing-xxs)}\n"] }]
|
|
122
122
|
}], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], bindValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindValue", required: false }] }], bindLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindLabel", required: false }] }], compareWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "compareWith", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
|