@koobiq/components 19.8.0 → 19.8.2

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.
Files changed (74) hide show
  1. package/breadcrumbs/breadcrumbs.d.ts +22 -29
  2. package/breadcrumbs/breadcrumbs.scss +7 -0
  3. package/button/_button-base.scss +20 -0
  4. package/button/_button-theme.scss +3 -11
  5. package/button/button-slots.d.ts +11 -0
  6. package/button/button.component.d.ts +28 -13
  7. package/button/button.module.d.ts +3 -2
  8. package/button/button.scss +0 -11
  9. package/button/public-api.d.ts +1 -0
  10. package/code-block/code-block.d.ts +6 -2
  11. package/core/locales/en-US.d.ts +1 -0
  12. package/core/locales/es-LA.d.ts +1 -0
  13. package/core/locales/locale-service.d.ts +5 -0
  14. package/core/locales/pt-BR.d.ts +1 -0
  15. package/core/locales/ru-RU.d.ts +1 -0
  16. package/core/locales/tk-TM.d.ts +1 -0
  17. package/core/option/_option-theme.scss +5 -14
  18. package/core/pop-up/constants.d.ts +2 -2
  19. package/dropdown/_dropdown-theme.scss +4 -8
  20. package/dropdown/dropdown-trigger.directive.d.ts +11 -0
  21. package/dropdown/dropdown.component.d.ts +8 -0
  22. package/dropdown/dropdown.scss +4 -0
  23. package/fesm2022/koobiq-components-breadcrumbs.mjs +101 -88
  24. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  25. package/fesm2022/koobiq-components-button.mjs +176 -68
  26. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  27. package/fesm2022/koobiq-components-code-block.mjs +27 -2
  28. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-core.mjs +14 -10
  30. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  31. package/fesm2022/koobiq-components-dropdown.mjs +46 -10
  32. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-filter-bar.mjs +8 -8
  34. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  35. package/fesm2022/koobiq-components-icon.mjs +2 -2
  36. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-navbar.mjs +11 -7
  38. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-notification-center.mjs +155 -18
  40. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  41. package/fesm2022/koobiq-components-popover.mjs +1 -1
  42. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-select.mjs +3 -1
  44. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-tabs.mjs +31 -10
  46. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  48. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-top-bar.mjs +7 -2
  50. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-tree-select.mjs +2 -2
  52. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-tree.mjs +6 -6
  54. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  55. package/filter-bar/_filter-bar-theme.scss +0 -4
  56. package/icon/icon-item-tokens.scss +1 -1
  57. package/navbar/navbar-item.scss +9 -0
  58. package/notification-center/_notification-center-theme.scss +2 -1
  59. package/notification-center/notification-center.d.ts +29 -1
  60. package/notification-center/notification-center.scss +28 -3
  61. package/notification-center/notification-center.service.d.ts +44 -1
  62. package/notification-center/notification-item.scss +1 -1
  63. package/package.json +9 -9
  64. package/prebuilt-themes/dark-theme.css +1 -1
  65. package/prebuilt-themes/light-theme.css +1 -1
  66. package/prebuilt-themes/theme.css +1 -1
  67. package/schematics/ng-add/index.js +2 -2
  68. package/tabs/_tabs-common.scss +31 -1
  69. package/tabs/_tabs-theme.scss +2 -2
  70. package/tabs/tab-header.component.d.ts +2 -0
  71. package/tabs/tab-label.directive.d.ts +3 -1
  72. package/tabs/tab.component.d.ts +2 -0
  73. package/tree/_tree-theme.scss +4 -0
  74. package/tree-select/_tree-select-theme.scss +39 -0
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-filter-bar.mjs","sources":["../../../packages/components/filter-bar/pipes/base-pipe.ts","../../../packages/components/filter-bar/pipes/pipe-state.ts","../../../packages/components/filter-bar/pipes/pipe-button.ts","../../../packages/components/filter-bar/pipes/pipe-title.ts","../../../packages/components/filter-bar/pipes/pipe-date.ts","../../../packages/components/filter-bar/pipes/pipe-date.html","../../../packages/components/filter-bar/pipes/pipe-datetime.ts","../../../packages/components/filter-bar/pipes/pipe-datetime.html","../../../packages/components/filter-bar/pipes/pipe-multi-select.ts","../../../packages/components/filter-bar/pipes/pipe-multi-select.html","../../../packages/components/filter-bar/pipes/pipe-multi-tree-select.ts","../../../packages/components/filter-bar/pipes/pipe-multi-tree-select.html","../../../packages/components/filter-bar/pipes/pipe-readonly.ts","../../../packages/components/filter-bar/pipes/pipe-select.ts","../../../packages/components/filter-bar/pipes/pipe-select.html","../../../packages/components/filter-bar/pipes/pipe-text.ts","../../../packages/components/filter-bar/pipes/pipe-text.html","../../../packages/components/filter-bar/pipes/pipe-tree-select.ts","../../../packages/components/filter-bar/pipes/pipe-tree-select.html","../../../packages/components/filter-bar/filter-bar.types.ts","../../../packages/components/filter-bar/filter-reset.ts","../../../packages/components/filter-bar/filter-bar-button.ts","../../../packages/components/filter-bar/filters.ts","../../../packages/components/filter-bar/filters.html","../../../packages/components/filter-bar/filter-bar.ts","../../../packages/components/filter-bar/filter-refresher.ts","../../../packages/components/filter-bar/filter-search.ts","../../../packages/components/filter-bar/pipe-add.ts","../../../packages/components/filter-bar/pipe.directive.ts","../../../packages/components/filter-bar/filter-bar.module.ts","../../../packages/components/filter-bar/koobiq-components-filter-bar.ts"],"sourcesContent":["import {\n afterNextRender,\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n TemplateRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isMac } from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\nimport { delay, filter } from 'rxjs/operators';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqPipeData, KbqPipeTemplate, KbqPipeType } from '../filter-bar.types';\n\n/** Injection Token for providing configuration of filter-bar */\nexport const KBQ_PIPE_DATA = new InjectionToken('KBQ_PIPE_DATA');\n\n/** function to get unique identifier of an element */\nexport function getId(item: KbqPipeTemplate): KbqPipeType | string | number {\n return item?.id ?? item?.name;\n}\n\n@Directive({\n host: {\n class: 'kbq-pipe',\n '[class]': '\"kbq-pipe__\" + data.type',\n '[class.kbq-pipe_empty]': 'isEmpty',\n '[class.kbq-pipe_cleanable]': 'data.cleanable',\n '[class.kbq-pipe_removable]': 'data.removable',\n '[class.kbq-pipe_disabled]': 'data.disabled'\n }\n})\nexport abstract class KbqBasePipe<V> implements AfterViewInit {\n /** changes of state */\n readonly stateChanges = new Subject<void>();\n /** pipe data. Provided from subclass */\n readonly data = inject<KbqPipeData<V>>(KBQ_PIPE_DATA);\n\n /** KbqFilterBar instance\n * @docs-private */\n protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n\n /** values to select from the pipe template */\n protected values;\n /** TemplateRef for selecting an option */\n protected valueTemplate?: TemplateRef<any> | string;\n\n /**\n * Whether the current platform is a Mac.\n *\n * @docs-private\n */\n isMac = false;\n\n /** Data for the pipe.\n * @docs-private */\n $implicit: unknown;\n\n /** Whether the current pipe is empty. Used for apply style modifier */\n get isEmpty(): boolean {\n return this.data.value === null || this.data.value === undefined;\n }\n\n /** Whether the current pipe is removable or cleanable. Used for apply style modifier */\n get showRemoveButton(): boolean {\n return this.data.removable || (this.data.cleanable && !this.isEmpty);\n }\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar?.configuration;\n }\n\n constructor() {\n this.$implicit = this;\n\n this.stateChanges.subscribe(() => {\n this.changeDetectorRef.markForCheck();\n });\n\n this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n\n afterNextRender(() => {\n this.isMac = isMac();\n });\n }\n\n ngAfterViewInit(): void {\n if (this.data.openOnAdd) {\n delete this.data.openOnAdd;\n\n this.open();\n }\n\n this.filterBar?.openPipe.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef)).subscribe((id) => {\n if (getId(this.data) === id) {\n this.open();\n }\n });\n\n if (this.data.openOnReset) {\n this.filterBar?.onResetFilter.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.open();\n });\n }\n }\n\n /** templateRef checker utility */\n isTemplateRef(value: unknown): boolean {\n return value instanceof TemplateRef;\n }\n\n /** updates values for selection and value template */\n updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n const template = templates?.find((template) => getId(template) === getId(this.data));\n\n if (template?.values) {\n this.values = template.values;\n this.valueTemplate = template.valueTemplate;\n }\n };\n\n /** removes pipe from filter-bar and triggers changes */\n onRemove() {\n this.filterBar?.removePipe(this.data);\n\n this.stateChanges.next();\n }\n\n /** clears the pipe and triggers changes */\n onClear() {\n this.data.value = null;\n\n this.stateChanges.next();\n\n this.filterBar?.onClearPipe.next(this.data);\n this.filterBar?.onChangePipe.next(this.data);\n }\n\n /** @docs-private */\n abstract open(): void;\n}\n\n@Directive({\n selector: '[kbqPipeMinWidth]',\n host: {\n '[style.min-width]': 'minWidth'\n }\n})\nexport class KbqPipeMinWidth {\n /** KbqFilterBar instance */\n protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /** @docs-private */\n protected minWidth: string;\n /** maximal symbols for apply fit-content to min-width */\n maxSymbolsForFitContent: number = 20;\n\n /** current length of text */\n get textLength(): number {\n return this.elementRef.nativeElement.innerText?.length || 0;\n }\n\n constructor() {\n this.filterBar?.changes.pipe(delay(0)).subscribe(this.update);\n\n afterNextRender({ read: this.update });\n }\n\n update = () => {\n this.minWidth = this.textLength < this.maxSymbolsForFitContent ? 'fit-content' : 'unset';\n this.changeDetectorRef.markForCheck();\n };\n}\n","import { DestroyRef, Directive, inject, Input, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqBasePipe } from './base-pipe';\n\n@Directive({\n selector: '[kbqPipeState]'\n})\nexport class KbqPipeState<T> implements OnInit {\n /** @docs-private */\n private readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n private readonly button = inject(KbqButton);\n /** @docs-private */\n private readonly pipe = inject(KbqBasePipe);\n /** KbqFilterBar instance\n * @docs-private */\n private readonly filterBar = inject(KbqFilterBar);\n\n /** calculates and updates styles of button from pipe state */\n @Input({ alias: 'kbqPipeState' })\n get state(): T | null {\n return this._state;\n }\n\n set state(pipe: T | null) {\n this._state = pipe;\n\n this.updateState();\n }\n\n private _state: T | null = null;\n\n ngOnInit(): void {\n this.filterBar.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateState);\n }\n\n private updateState = () => {\n this.button.kbqStyle = KbqButtonStyles.Outline;\n this.button.color = KbqComponentColors.ContrastFade;\n\n if (!this.pipe.isEmpty) {\n this.button.kbqStyle = KbqButtonStyles.Filled;\n this.button.color = KbqComponentColors.ContrastFade;\n }\n };\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { merge } from 'rxjs';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeState } from './pipe-state';\n\n@Component({\n selector: 'kbq-pipe-button',\n imports: [\n KbqIconModule,\n KbqButtonModule,\n KbqPipeState,\n KbqTooltipTrigger\n ],\n template: `\n <button\n kbqTooltip=\"{{ pipe.data.cleanable ? localeData.clearButtonTooltip : localeData.removeButtonTooltip }}\"\n class=\"kbq-pipe__remove-button\"\n kbq-button\n [disabled]=\"pipe.data.disabled\"\n [kbqPipeState]=\"pipe.data\"\n [kbqTooltipDisabled]=\"pipe.data.disabled\"\n (click)=\"pipe.data.cleanable ? pipe.onClear() : pipe.onRemove()\"\n >\n <i kbq-icon=\"kbq-xmark-s_16\" [color]=\"pipe.data.disabled ? 'empty' : 'contrast'\"></i>\n </button>\n `,\n styleUrl: 'pipe-button.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-pipe-button'\n }\n})\nexport class KbqPipeButton {\n /** KbqPipe instance */\n protected readonly pipe = inject(KbqBasePipe);\n /** KbqFilterBar instance */\n protected readonly filterBar = inject(KbqFilterBar);\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /** enables/disables read-only state */\n @Input({ transform: booleanAttribute }) readonly: boolean = false;\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar?.configuration.pipe;\n }\n\n constructor() {\n merge(this.pipe.stateChanges, this.filterBar.changes)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n","import {\n afterNextRender,\n AfterViewInit,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n QueryList,\n TemplateRef\n} from '@angular/core';\nimport { KBQ_TITLE_TEXT_REF, KbqTitleTextRef } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Observable, Subject, Subscription, throttleTime } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n// todo DS-3672\n@Directive({\n selector: '[kbqPipeTitle]',\n exportAs: 'kbqPipeTitle',\n host: {\n '(mouseenter)': 'handleElementEnter()',\n '(mouseleave)': 'hideTooltip()',\n '(window:resize)': 'resizeStream.next($event)'\n }\n})\nexport class KbqPipeTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {\n private componentInstance = inject<KbqTitleTextRef>(KBQ_TITLE_TEXT_REF, { optional: true, host: true });\n\n get isOverflown(): boolean {\n return this.childContainer.some(({ nativeElement }) => {\n return (\n this.parent?.offsetWidth < nativeElement.scrollWidth ||\n this.parent?.offsetHeight < nativeElement.scrollHeight\n );\n });\n }\n\n @Input({ alias: 'kbqPipeTitle' }) viewValue: TemplateRef<any>;\n\n get parent(): HTMLElement {\n return this.parentContainer?.nativeElement || this.parentContainer;\n }\n\n get child(): HTMLElement {\n return this.childContainer.first.nativeElement || this.childContainer;\n }\n\n readonly resizeStream = new Subject<Event>();\n\n private readonly debounceInterval: number = 100;\n\n private resizeSubscription = Subscription.EMPTY;\n private mutationSubscription = Subscription.EMPTY;\n private focusMonitorSubscription = Subscription.EMPTY;\n\n @ContentChildren('kbqTitleText', { descendants: true })\n private childContainer: QueryList<ElementRef>;\n\n @ContentChild('kbqTitleContainer')\n private parentContainer: ElementRef;\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.listenToMutationObserver();\n });\n }\n\n ngAfterViewInit() {\n this.parentContainer = this.parentContainer || this.componentInstance?.parentTextElement || this.elementRef;\n this.childContainer = this.childContainer || this.componentInstance?.textElement || this.elementRef;\n this.content = this.viewValue;\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.debounceInterval))\n .subscribe(() => (this.disabled = !this.isOverflown));\n\n this.focusMonitorSubscription = this.focusMonitor\n .monitor(this.elementRef)\n .subscribe((origin) => (origin === 'keyboard' ? this.handleElementEnter() : this.hideTooltip()));\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n\n this.resizeSubscription.unsubscribe();\n this.mutationSubscription.unsubscribe();\n this.focusMonitorSubscription.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n handleElementEnter() {\n this.disabled = !this.isOverflown;\n }\n\n hideTooltip() {\n this.disabled = true;\n }\n\n private listenToMutationObserver(): void {\n this.mutationSubscription = this.createMutationObserver()\n .pipe(throttleTime(this.debounceInterval))\n .subscribe(() => {\n this.disabled = !this.isOverflown;\n this.content = this.viewValue;\n });\n }\n\n private createMutationObserver(): Observable<MutationRecord[]> {\n return new Observable((observer) => {\n const mutationObserver = new MutationObserver((mutations) => observer.next(mutations));\n\n mutationObserver.observe(this.parent, {\n characterData: true,\n attributes: false,\n childList: true,\n subtree: true\n });\n\n return () => mutationObserver.disconnect();\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n inject,\n viewChild,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport {\n DateAdapter,\n DateFormatter,\n KbqComponentColors,\n kbqDisableLegacyValidationDirectiveProvider,\n KbqFormattersModule,\n PopUpPlacements\n} from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqListModule, KbqListSelection } from '@koobiq/components/list';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimepickerModule } from '@koobiq/components/timepicker';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { filter } from 'rxjs/operators';\nimport { KbqDateTimeValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-date',\n imports: [\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n KbqDividerModule,\n KbqPopoverModule,\n KbqButtonModule,\n KbqListModule,\n KbqDatepickerModule,\n KbqTimepickerModule,\n KbqPipeState,\n KbqFormattersModule,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n FormsModule\n ],\n templateUrl: 'pipe-date.html',\n styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n kbqDisableLegacyValidationDirectiveProvider(),\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {\n private readonly adapter = inject(DateAdapter);\n private readonly formatter = inject(DateFormatter);\n\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n /** @docs-private */\n protected readonly styles = KbqButtonStyles;\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n /** Whether the current state is list of periods. When false will displayed control for set custom period */\n protected isListMode = true;\n\n /** @docs-private */\n protected formGroup: FormGroup;\n\n /** @docs-private */\n protected showStartCalendar: boolean = false;\n /** @docs-private */\n protected showEndCalendar: boolean = false;\n\n /** formatted value for period */\n get formattedValue(): string {\n if (this.start && this.end) {\n return this.formatter.rangeShortDate(this.start, this.end);\n }\n\n return this.data.value?.name ?? '';\n }\n\n /** Whether the current pipe is disabled. */\n get disabled(): boolean {\n return (\n !this.adapter.isDateInstance(this.formGroup.controls.start.value) ||\n !this.adapter.isDateInstance(this.formGroup.controls.end.value) ||\n this.formGroup.controls.start.invalid\n );\n }\n\n /** parsed start */\n get start(): D {\n return this.adapter.parse(this.data.value?.start, '');\n }\n\n /** default object for start */\n get defaultStart(): D {\n if (this.data.value?.start) {\n return this.adapter.today().plus(this.data.value?.start);\n }\n\n return this.adapter.today();\n }\n\n /** parsed end */\n get end(): D {\n return this.adapter.parse(this.data.value?.end, '');\n }\n\n /** default object for end */\n get defaultEnd(): D {\n if (this.data.value?.start) {\n return this.adapter.today();\n }\n\n return this.adapter.today().plus({ days: 1 });\n }\n\n /** Whether the current pipe is empty. */\n override get isEmpty(): boolean {\n if (this.data.value === null) return true;\n\n if (this.data.value?.name) return false;\n\n return !this.adapter.isDateInstance(this.start) || !this.adapter.isDateInstance(this.end);\n }\n\n /** @docs-private */\n @ViewChild('popover') popover: KbqPopoverTrigger;\n /** @docs-private */\n listSelection = viewChild.required('listSelection', { read: KbqListSelection });\n /** @docs-private */\n returnButton = viewChild.required('returnButton', { read: KbqButton });\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.popover.visibleChange\n .pipe(\n filter((visible) => !visible),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n /** keydown handler\n * @docs-private */\n onKeydown($event: KeyboardEvent) {\n if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApplyPeriod();\n }\n\n if ($event.keyCode === ENTER) {\n $event.preventDefault();\n }\n }\n\n onApplyPeriod() {\n this.data.value = {\n start: this.formGroup.controls.start.value.toISO(),\n end: this.formGroup.controls.end.value.toISO()\n };\n this.stateChanges.next();\n\n this.filterBar?.onChangePipe.next(this.data);\n\n this.popover.hide();\n }\n\n onSelect(item: KbqDateTimeValue) {\n this.data.value = item;\n this.stateChanges.next();\n\n this.filterBar?.onChangePipe.next(this.data);\n\n this.popover.hide();\n }\n\n showPeriod() {\n this.isListMode = false;\n this.showStartCalendar = false;\n this.showEndCalendar = false;\n\n this.initFormGroup();\n\n setTimeout(() => {\n this.popover.updatePosition(true);\n this.returnButton().focus();\n });\n }\n\n showList() {\n this.isListMode = true;\n\n setTimeout(() => this.listSelection().focus());\n this.popover.updatePosition(true);\n }\n\n /** opens popover */\n override open() {\n this.popover.show();\n }\n\n onSelectStartDate(value: D) {\n this.formGroup.controls.start.setValue(value);\n }\n\n onSelectEndDate(value: D) {\n this.formGroup.controls.end.setValue(value);\n }\n\n onFocusStartInput() {\n this.showStartCalendar = true;\n this.showEndCalendar = false;\n\n this.popover.updatePosition(true);\n }\n\n onFocusEndInput() {\n this.showEndCalendar = true;\n this.showStartCalendar = false;\n }\n\n hideCalendars() {\n this.showStartCalendar = false;\n this.showEndCalendar = false;\n }\n\n private initFormGroup() {\n this.formGroup = new FormGroup({\n start: new FormControl(this.start || this.defaultStart),\n end: new FormControl(this.end || this.defaultEnd)\n });\n }\n}\n","<button\n #popover=\"kbqPopover\"\n kbq-button\n kbqPopover\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverClass]=\"'kbq-pipe-date__popover'\"\n [kbqPopoverContent]=\"content\"\n [kbqPopoverOffset]=\"4\"\n [defaultPaddings]=\"false\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n (kbqPopoverVisibleChange)=\"isListMode = true\"\n>\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!formattedValue\">\n {{ formattedValue }}\n </span>\n</button>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #content>\n @if (isListMode) {\n <div class=\"kbq-date-list\">\n <kbq-list-selection #listSelection [autoSelect]=\"false\" [ngModel]=\"data.value?.name\">\n <kbq-list-option (click)=\"showPeriod()\" (keydown.enter)=\"showPeriod()\">\n {{ localeData.datePipe?.customPeriod }}\n <!-- prevents [kbq-icon] from matching icon slot in kbq-list-option, keeping chevron after label text -->\n <ng-container>\n <i kbq-icon=\"kbq-chevron-right_16\" color=\"contrast-fade\"></i>\n </ng-container>\n </kbq-list-option>\n\n @for (item of values; track item) {\n <kbq-list-option [value]=\"item.name\" (click)=\"onSelect(item)\" (keydown.enter)=\"onSelect(item)\">\n {{ item.name }}\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n } @else {\n <div class=\"kbq-date-period kbq-datepicker__content\" (keydown)=\"onKeydown($event)\">\n <div class=\"kbq-date-period__header\">\n <button\n #returnButton\n kbq-button\n [color]=\"colors.Theme\"\n [kbqStyle]=\"styles.Transparent\"\n (click)=\"showList()\"\n >\n <i kbq-icon=\"kbq-chevron-left_16\"></i>\n {{ localeData.datePipe.backToPeriodSelection }}\n </button>\n </div>\n\n <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodFrom }}</label>\n\n <kbq-form-field class=\"kbq-date-period__date kbq-form__control\" [class.kbq-focused]=\"showStartCalendar\">\n <input\n formControlName=\"start\"\n [kbqCalendar]=\"startDateCalendar\"\n [max]=\"formGroup.controls.end.value\"\n (focusin)=\"onFocusStartInput()\"\n (keydown.tab)=\"hideCalendars()\"\n />\n <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n </kbq-form-field>\n\n <kbq-calendar\n #startDateCalendar\n [class.kbq-calendar_hidden]=\"!showStartCalendar\"\n (selectedChange)=\"onSelectStartDate($event)\"\n />\n\n <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodTo }}</label>\n\n <kbq-form-field class=\"kbq-date-period__date kbq-form__control\" [class.kbq-focused]=\"showEndCalendar\">\n <input\n formControlName=\"end\"\n [kbqCalendar]=\"endDateCalendar\"\n (focusin)=\"onFocusEndInput()\"\n (keydown.tab)=\"hideCalendars()\"\n />\n <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n </kbq-form-field>\n\n @if (formGroup.controls.start.invalid) {\n <kbq-hint class=\"kbq-date-period__hint\" [color]=\"'error'\">\n {{ localeData.datePipe.customPeriodErrorHint }}\n </kbq-hint>\n }\n\n <kbq-calendar\n #endDateCalendar\n [class.kbq-calendar_hidden]=\"!showEndCalendar\"\n (selectedChange)=\"onSelectEndDate($event)\"\n />\n </form>\n\n <div class=\"kbq-date-period__footer\">\n <button\n kbq-button\n [color]=\"'theme'\"\n [disabled]=\"disabled\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"onApplyPeriod()\"\n >\n <span>{{ localeData.pipe.applyButton }}</span>\n &nbsp;\n <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n </button>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ formattedValue }}</div>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n inject,\n viewChild,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport {\n DateAdapter,\n DateFormatter,\n KbqComponentColors,\n kbqDisableLegacyValidationDirectiveProvider,\n KbqFormattersModule,\n PopUpPlacements\n} from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqListModule, KbqListSelection } from '@koobiq/components/list';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimepickerModule } from '@koobiq/components/timepicker';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { filter } from 'rxjs/operators';\nimport { KbqDateTimeValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-datetime',\n imports: [\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n KbqDividerModule,\n KbqPopoverModule,\n KbqButtonModule,\n KbqListModule,\n KbqDatepickerModule,\n KbqTimepickerModule,\n KbqPipeState,\n KbqFormattersModule,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n FormsModule\n ],\n templateUrl: 'pipe-datetime.html',\n styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n kbqDisableLegacyValidationDirectiveProvider(),\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {\n private readonly adapter = inject(DateAdapter);\n private readonly formatter = inject(DateFormatter);\n\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n /** @docs-private */\n protected readonly styles = KbqButtonStyles;\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n /** Whether the current state is list of periods. When false will displayed control for set custom period */\n protected isListMode = true;\n\n /** @docs-private */\n protected formGroup: FormGroup;\n\n /** @docs-private */\n protected showStartCalendar: boolean = false;\n /** @docs-private */\n protected showEndCalendar: boolean = false;\n\n /** formatted value for period */\n get formattedValue(): string {\n if (this.start && this.end) {\n return this.formatter.rangeShortDateTime(this.start, this.end);\n }\n\n return this.data.value?.name ?? '';\n }\n\n /** Whether the current pipe is disabled. */\n get disabled(): boolean {\n return (\n !this.adapter.isDateInstance(this.formGroup.controls.start.value) ||\n !this.adapter.isDateInstance(this.formGroup.controls.end.value) ||\n this.formGroup.controls.start.invalid\n );\n }\n\n /** parsed start */\n get start(): D {\n return this.adapter.parse(this.data.value?.start, '');\n }\n\n /** default object for start */\n get defaultStart(): D {\n if (this.data.value?.start) {\n return this.adapter.today().plus(this.data.value?.start);\n }\n\n return this.adapter.today().startOf('day');\n }\n\n /** parsed end */\n get end(): D {\n return this.adapter.parse(this.data.value?.end, '');\n }\n\n /** default object for end */\n get defaultEnd(): D {\n if (this.data.value?.start) {\n return this.adapter.today();\n }\n\n return this.adapter.today().endOf('day');\n }\n\n /** Whether the current pipe is empty. */\n override get isEmpty(): boolean {\n if (this.data.value === null) return true;\n\n if (this.data.value?.name) return false;\n\n return !this.adapter.isDateInstance(this.start) || !this.adapter.isDateInstance(this.end);\n }\n\n /** @docs-private */\n @ViewChild('popover') popover: KbqPopoverTrigger;\n /** @docs-private */\n listSelection = viewChild.required('listSelection', { read: KbqListSelection });\n /** @docs-private */\n returnButton = viewChild.required('returnButton', { read: KbqButton });\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.popover.visibleChange\n .pipe(\n filter((visible) => !visible),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n /** keydown handler\n * @docs-private */\n onKeydown($event: KeyboardEvent) {\n if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApplyPeriod();\n }\n\n if ($event.keyCode === ENTER) {\n $event.preventDefault();\n }\n }\n\n /** @docs-private */\n onApplyPeriod() {\n this.data.value = {\n start: this.formGroup.controls.start.value.toISO(),\n end: this.formGroup.controls.end.value.toISO()\n };\n this.stateChanges.next();\n\n this.filterBar?.onChangePipe.next(this.data);\n\n this.popover.hide();\n }\n\n onSelect(item: KbqDateTimeValue) {\n this.data.value = item;\n this.stateChanges.next();\n\n this.filterBar?.onChangePipe.next(this.data);\n\n this.popover.hide();\n }\n\n showPeriod() {\n this.isListMode = false;\n this.showStartCalendar = false;\n this.showEndCalendar = false;\n\n this.initFormGroup();\n\n setTimeout(() => {\n this.popover.updatePosition(true);\n this.returnButton().focus();\n });\n }\n\n showList() {\n this.isListMode = true;\n\n setTimeout(() => this.listSelection().focus());\n this.popover.updatePosition(true);\n }\n\n /** opens popover */\n override open() {\n this.popover.show();\n }\n\n onSelectStartDate(value: D) {\n this.formGroup.controls.start.setValue(value);\n }\n\n onSelectEndDate(value: D) {\n this.formGroup.controls.end.setValue(value);\n }\n\n onFocusStartInput() {\n this.showStartCalendar = true;\n this.showEndCalendar = false;\n\n this.popover.updatePosition(true);\n }\n\n onFocusEndInput() {\n this.showEndCalendar = true;\n this.showStartCalendar = false;\n }\n\n hideCalendars() {\n this.showStartCalendar = false;\n this.showEndCalendar = false;\n }\n\n private initFormGroup() {\n this.formGroup = new FormGroup({\n start: new FormControl(this.start || this.defaultStart),\n end: new FormControl(this.end || this.defaultEnd)\n });\n }\n}\n","<button\n #popover=\"kbqPopover\"\n kbq-button\n kbqPopover\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverClass]=\"'kbq-pipe-date__popover'\"\n [kbqPopoverContent]=\"content\"\n [kbqPopoverOffset]=\"4\"\n [defaultPaddings]=\"false\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n (kbqPopoverVisibleChange)=\"isListMode = true\"\n>\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!formattedValue\">\n {{ formattedValue }}\n </span>\n</button>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #content>\n @if (isListMode) {\n <div class=\"kbq-date-list\">\n <kbq-list-selection #listSelection [autoSelect]=\"false\" [ngModel]=\"data.value?.name\">\n <kbq-list-option (click)=\"showPeriod()\" (keydown.enter)=\"showPeriod()\">\n {{ localeData.datePipe?.customPeriod }}\n <!-- prevents [kbq-icon] from matching icon slot in kbq-list-option, keeping chevron after label text -->\n <ng-container>\n <i kbq-icon=\"kbq-chevron-right_16\" color=\"contrast-fade\"></i>\n </ng-container>\n </kbq-list-option>\n\n @for (item of values; track item) {\n <kbq-list-option [value]=\"item.name\" (click)=\"onSelect(item)\" (keydown.enter)=\"onSelect(item)\">\n {{ item.name }}\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n } @else {\n <div class=\"kbq-date-period kbq-datepicker__content\" (keydown)=\"onKeydown($event)\">\n <div class=\"kbq-date-period__header\">\n <button\n #returnButton\n kbq-button\n [color]=\"colors.Theme\"\n [kbqStyle]=\"styles.Transparent\"\n (click)=\"showList()\"\n >\n <i kbq-icon=\"kbq-chevron-left_16\"></i>\n {{ localeData.datePipe.backToPeriodSelection }}\n </button>\n </div>\n\n <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodFrom }}</label>\n\n <div class=\"kbq-form__row_with-time kbq-form__control\">\n <kbq-form-field class=\"kbq-date-period__date\" [class.kbq-focused]=\"showStartCalendar\">\n <input\n formControlName=\"start\"\n [kbqCalendar]=\"startDateCalendar\"\n [max]=\"formGroup.controls.end.value\"\n (focusin)=\"onFocusStartInput()\"\n (keydown.tab)=\"hideCalendars()\"\n />\n <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n </kbq-form-field>\n\n <kbq-form-field class=\"kbq-date-period__time\">\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix></i>\n <input formControlName=\"start\" kbqTimepicker (focusin)=\"hideCalendars()\" />\n </kbq-form-field>\n </div>\n\n <kbq-calendar\n #startDateCalendar\n [class.kbq-calendar_hidden]=\"!showStartCalendar\"\n (selectedChange)=\"onSelectStartDate($event)\"\n />\n\n <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodTo }}</label>\n\n <div class=\"kbq-form__row_with-time kbq-form__control\">\n <kbq-form-field class=\"kbq-date-period__date\" [class.kbq-focused]=\"showEndCalendar\">\n <input\n formControlName=\"end\"\n [kbqCalendar]=\"endDateCalendar\"\n (focusin)=\"onFocusEndInput()\"\n (keydown.tab)=\"hideCalendars()\"\n />\n <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n </kbq-form-field>\n\n <kbq-form-field class=\"kbq-date-period__time\">\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix></i>\n <input formControlName=\"end\" kbqTimepicker (focusin)=\"hideCalendars()\" />\n </kbq-form-field>\n </div>\n\n @if (formGroup.controls.start.invalid) {\n <kbq-hint class=\"kbq-date-period__hint\" [color]=\"'error'\">\n {{ localeData.datePipe.customPeriodErrorHint }}\n </kbq-hint>\n }\n\n <kbq-calendar\n #endDateCalendar\n [class.kbq-calendar_hidden]=\"!showEndCalendar\"\n (selectedChange)=\"onSelectEndDate($event)\"\n />\n </form>\n\n <div class=\"kbq-date-period__footer\">\n <button\n kbq-button\n [color]=\"'theme'\"\n [disabled]=\"disabled\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"onApplyPeriod()\"\n >\n <span>{{ localeData.pipe.applyButton }}</span>\n &nbsp;\n <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n </button>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ formattedValue }}</div>\n</ng-template>\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnInit,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOption, KbqPseudoCheckboxModule, KbqPseudoCheckboxState } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { KbqSelectValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-multi-select',\n imports: [\n FormsModule,\n KbqButtonModule,\n KbqDividerModule,\n KbqSelectModule,\n NgClass,\n KbqPipeState,\n KbqBadgeModule,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n NgTemplateOutlet,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n ReactiveFormsModule,\n AsyncPipe,\n KbqPseudoCheckboxModule\n ],\n templateUrl: 'pipe-multi-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-multiselect.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements AfterViewInit, OnInit {\n /** control for search options */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search options */\n filteredOptions: Observable<any[]>;\n\n /** @docs-private */\n @ViewChild(KbqSelect) select: KbqSelect;\n\n /** @docs-private */\n @ViewChildren(KbqOption) options: QueryList<KbqOption>;\n\n /** selected value */\n get selected() {\n if (this.selectedAllEqualsSelectedNothing) {\n return this.internalSelected;\n }\n\n return this.data.value;\n }\n\n /** Whether the current pipe is empty. */\n get isEmpty(): boolean {\n return (\n super.isEmpty ||\n (Array.isArray(this.data.value) && !this.data.value.length) ||\n (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected)\n );\n }\n\n /** state for checkbox 'select all'. */\n get checkboxState(): KbqPseudoCheckboxState {\n if (!this.options) return 'unchecked';\n\n if (this.select.selectionModel.selected.length === this.values.length) {\n return 'checked';\n } else if (!this.select.selectionModel.selected.length) {\n return 'unchecked';\n }\n\n return 'indeterminate';\n }\n\n /** true if all visible options selected */\n get allVisibleOptionsSelected(): boolean {\n return this.visibleOptions?.every((option) => option.selected);\n }\n\n /** true if all options selected */\n get allOptionsSelected(): boolean {\n return this.select?.triggerValues.length === this.values?.length;\n }\n\n get selectedAllEqualsSelectedNothing(): boolean {\n return this.data.selectedAllEqualsSelectedNothing ?? this.filterBar!.selectedAllEqualsSelectedNothing;\n }\n\n private get visibleOptions(): KbqOption[] {\n return this.options?.filter((option) => option.selectable);\n }\n\n private selectionAllInProgress = false;\n private internalSelected: KbqSelectValue[] | null;\n\n /** @docs-private */\n ngOnInit(): void {\n this.updateInternalSelected();\n\n this.filteredOptions = merge(this.filterBar!.internalTemplatesChanges, this.searchControl.valueChanges).pipe(\n map(this.getFilteredOptions),\n takeUntilDestroyed(this.destroyRef)\n );\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.select.closedStream\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n /** @docs-private */\n onSelect(item: KbqSelectValue[]) {\n if (this.selectionAllInProgress) return;\n\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.data.value = [];\n } else {\n this.data.value = item;\n }\n\n this.emitChangePipeEvent();\n\n this.stateChanges.next();\n }\n\n /** @docs-private */\n onClear() {\n this.data.value = [];\n\n this.updateInternalSelected();\n\n this.filterBar?.onClearPipe.emit(this.data);\n this.filterBar?.onChangePipe.emit(this.data);\n this.stateChanges.next();\n }\n\n /** @docs-private */\n toggleSelectionAllByEnterKey() {\n if (this.data.selectAll && this.select.keyManager.activeItemIndex === 0) {\n this.toggleSelectionAll();\n }\n }\n\n /** @docs-private */\n toggleSelectionAll(emitEvent: boolean = true) {\n this.selectionAllInProgress = true;\n\n if (this.allVisibleOptionsSelected) {\n this.visibleOptions.forEach((option) => option.deselect());\n } else {\n this.visibleOptions.forEach((option) => option.select());\n }\n\n this.selectionAllInProgress = false;\n\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.data.value = [];\n } else {\n this.data.value = [...this.select.value];\n }\n\n if (emitEvent) {\n this.emitChangePipeEvent();\n }\n\n this.stateChanges.next();\n }\n\n /** Comparator of selected options */\n compareByValue = (o1: any, o2: any): boolean => o1?.id === o2?.id;\n\n /** handler for select all options in select */\n selectAllHandler = (event: KeyboardEvent) => {\n event.preventDefault();\n\n this.toggleSelectionAll();\n };\n\n /** @docs-private */\n onClose() {\n if (this.allOptionsSelected) {\n this.updateInternalSelected();\n }\n }\n\n /** opens select */\n override open() {\n this.select.open();\n }\n\n private updateInternalSelected() {\n if (this.selectedAllEqualsSelectedNothing) {\n this.internalSelected = this.data.value?.slice() || [];\n }\n }\n\n private emitChangePipeEvent() {\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.filterBar?.onChangePipe.emit({ ...this.data, value: [] });\n } else {\n this.filterBar?.onChangePipe.emit(this.data);\n }\n }\n\n private getFilteredOptions = (): KbqSelectValue[] => {\n return this.searchControl.value\n ? this.values.filter((item) => item.name.toLowerCase().includes(this.searchControl.value.toLowerCase()))\n : this.values;\n };\n}\n","<kbq-select\n #select=\"kbqSelect\"\n multiple\n [compareWith]=\"compareByValue\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [panelClass]=\"'kbq-pipe-multiselect__panel'\"\n [selectAllHandler]=\"selectAllHandler\"\n [tabIndex]=\"-1\"\n [value]=\"selected\"\n (closed)=\"onClose()\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n @if (select.triggerValues.length === 1) {\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n {{ select.triggerValue }}\n </span>\n } @else if (\n select.triggerValues.length > 1 &&\n (!selectedAllEqualsSelectedNothing || (selectedAllEqualsSelectedNothing && !allOptionsSelected))\n ) {\n <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n {{ select.triggerValues.length }}\n </kbq-badge>\n }\n </button>\n @if (data.search) {\n <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.search.placeholder }}\"\n autocomplete=\"off\"\n kbqInput\n type=\"text\"\n [formControl]=\"searchControl\"\n (keydown.enter)=\"toggleSelectionAllByEnterKey()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n }\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n @if (data.selectAll && !select.isEmptySearchResult) {\n <kbq-option\n [class.kbq-selected]=\"allVisibleOptionsSelected\"\n [selectable]=\"false\"\n (click)=\"toggleSelectionAll()\"\n (keydown.enter)=\"toggleSelectionAll()\"\n >\n <kbq-pseudo-checkbox [state]=\"checkboxState\" />\n {{ localeData.pipe.selectAll }}\n </kbq-option>\n }\n\n @for (item of filteredOptions | async; track item) {\n <kbq-option [value]=\"item\">\n @if (isTemplateRef(valueTemplate)) {\n <ng-container\n [ngTemplateOutlet]=\"$any(valueTemplate)\"\n [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n />\n } @else {\n {{ item.name }}\n }\n </kbq-option>\n }\n</kbq-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { NgClass, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqHighlightModule, KbqPseudoCheckboxModule, KbqPseudoCheckboxState } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport {\n FlatTreeControl,\n KbqTreeFlatDataSource,\n KbqTreeFlattener,\n KbqTreeModule,\n kbqTreeSelectAllValue,\n KbqTreeSelection\n} from '@koobiq/components/tree';\nimport { KbqTreeSelect, KbqTreeSelectModule } from '@koobiq/components/tree-select';\nimport { Observable } from 'rxjs';\nimport { KbqPipeTemplate, KbqSelectValue, KbqTreeSelectFlatNode, KbqTreeSelectNode } from '../filter-bar.types';\nimport { getId, KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-multi-tree-select',\n imports: [\n KbqButtonModule,\n KbqDividerModule,\n NgClass,\n KbqPipeState,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n KbqPipeMinWidth,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n ReactiveFormsModule,\n KbqHighlightModule,\n KbqTreeModule,\n KbqTreeSelectModule,\n NgIf,\n FormsModule,\n KbqBadgeModule,\n KbqPseudoCheckboxModule\n ],\n templateUrl: 'pipe-multi-tree-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-multi-tree-select.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements OnInit, AfterViewInit {\n /** control for search options */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search options */\n filteredOptions: Observable<any[]>;\n\n treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;\n treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n template: any;\n\n /** @docs-private */\n @ViewChild(KbqTreeSelect) select: KbqTreeSelect;\n\n /** @docs-private */\n @ViewChild(KbqTreeSelection) tree: KbqTreeSelection;\n\n /** selected value */\n get selected() {\n if (this.selectedAllEqualsSelectedNothing) {\n return this.internalSelected;\n }\n\n return this.data.value;\n }\n\n /** Whether the current pipe is empty. */\n get isEmpty(): boolean {\n return (\n super.isEmpty ||\n (Array.isArray(this.data.value) && !this.data.value.length) ||\n (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected)\n );\n }\n\n get selectAllCheckboxState(): KbqPseudoCheckboxState {\n if (!this.select) return 'unchecked';\n\n if (this.allOptionsSelected) {\n return 'checked';\n } else if (this.select.selected.length > 0) {\n return 'indeterminate';\n }\n\n return 'unchecked';\n }\n\n get numberOfSelectedLeaves(): number {\n return this.select.selected.filter(({ value }) => value !== kbqTreeSelectAllValue).length;\n }\n\n /** true if all options selected */\n get allOptionsSelected(): boolean {\n const dataNodesLength = this.treeControl?.dataNodes?.length;\n const dataNodesForSelect = this.data.selectAll ? dataNodesLength - 1 : dataNodesLength;\n\n return this.select?.triggerValues?.length === dataNodesForSelect;\n }\n\n get selectedAllEqualsSelectedNothing(): boolean {\n return this.data.selectedAllEqualsSelectedNothing ?? this.filterBar!.selectedAllEqualsSelectedNothing;\n }\n\n /** true if all visible options selected */\n get allVisibleOptionsSelected(): boolean {\n return this.tree.renderedOptions\n .filter((option) => option.value !== kbqTreeSelectAllValue)\n .every((option) => option.selected);\n }\n\n private internalSelected: KbqSelectValue[] | null;\n\n constructor() {\n super();\n\n this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);\n\n this.treeControl = new FlatTreeControl<KbqTreeSelectFlatNode>(\n this.getLevel,\n this.isExpandable,\n this.getValue,\n this.getViewValue\n );\n\n this.dataSource = new KbqTreeFlatDataSource(this.treeControl, this.treeFlattener);\n\n this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n }\n\n ngOnInit(): void {\n this.updateInternalSelected();\n\n this.searchControl.valueChanges.subscribe((value) => this.treeControl.filterNodes(value));\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.select.closedStream\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n isNodeHasChild(_: number, nodeData) {\n return nodeData.expandable;\n }\n\n isNodeSelectAll(_: number, nodeData) {\n return nodeData.value === kbqTreeSelectAllValue;\n }\n\n onSelect({ value: option }) {\n if (!option) return;\n\n if (this.tree.treeControl.isExpandable(option.data)) {\n this.tree.setStateChildren(option, !option.selected);\n }\n\n this.toggleParents(option.data.parent);\n\n setTimeout(() => {\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.data.value = [];\n } else {\n this.data.value = this.select.selectedValues;\n }\n\n this.emitChangePipeEvent();\n\n this.stateChanges.next();\n });\n }\n\n searchKeydownHandler() {\n if (this.data.selectAll && this.tree.keyManager.activeItemIndex === 0) {\n this.toggleSelectAllNode();\n }\n }\n\n toggleSelectAllNode(emitEvent: boolean = true) {\n if (this.select.search?.ngControl.value) {\n const renderedOptions = this.tree.renderedOptions.filter(({ value }) => value !== kbqTreeSelectAllValue);\n\n if (this.allVisibleOptionsSelected) {\n renderedOptions.forEach((option) => option.setSelected(false));\n } else {\n renderedOptions.forEach((option) => option.setSelected(true));\n }\n } else {\n if (this.allOptionsSelected) {\n this.tree.selectionModel.clear();\n } else {\n const [, ...dataNodesForSelect] = this.treeControl.dataNodes;\n\n // @todo DS-3827\n this.tree.selectionModel.select(...(dataNodesForSelect as any));\n }\n }\n\n setTimeout(() => {\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.data.value = [];\n } else {\n this.data.value = [...this.select.selectedValues];\n }\n\n if (emitEvent) {\n this.emitChangePipeEvent();\n }\n\n this.stateChanges.next();\n });\n }\n\n /** updates values for selection and value template */\n override updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n const template = templates?.find((template) => getId(template) === getId(this.data));\n\n if (template?.values) {\n this.values = template.values;\n this.valueTemplate = template.valueTemplate;\n\n const values = [...(template.values as KbqTreeSelectNode[])];\n\n if (this.data.selectAll) {\n values.unshift({\n name: this.localeData.pipe.selectAll,\n value: kbqTreeSelectAllValue,\n children: null\n });\n }\n\n this.dataSource.data = values;\n }\n };\n\n /** opens select */\n override open() {\n setTimeout(() => this.select.open());\n }\n\n override onClear() {\n super.onClear();\n\n this.updateInternalSelected();\n }\n\n /** @docs-private */\n onOpen() {\n this.treeControl.expandAll();\n }\n\n /** @docs-private */\n onClose() {\n if (this.allOptionsSelected) {\n this.updateInternalSelected();\n }\n }\n\n /** handler for select all options in select */\n selectAllHandler = (event: KeyboardEvent) => {\n event.preventDefault();\n\n this.toggleSelectAllNode();\n };\n\n private updateInternalSelected() {\n if (this.selectedAllEqualsSelectedNothing) {\n this.internalSelected = this.data.value?.slice() || [];\n }\n }\n\n private emitChangePipeEvent() {\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.filterBar?.onChangePipe.emit({ ...this.data, value: [] });\n } else {\n this.filterBar?.onChangePipe.emit(this.data);\n }\n }\n\n private toggleParents(parent) {\n if (!parent) {\n return;\n }\n\n const descendants = this.treeControl.getDescendants(parent);\n const isParentSelected = this.select.selectionModel.selected.includes(parent);\n\n if (!isParentSelected && descendants.every((d: any) => this.select.selectionModel.selected.includes(d))) {\n this.select.selectionModel.select(parent);\n this.toggleParents(parent.parent);\n } else if (isParentSelected) {\n this.select.selectionModel.deselect(parent);\n this.toggleParents(parent.parent);\n }\n }\n\n private transformer = (node: KbqTreeSelectNode, level: number, parent: any) => {\n const flatNode = new KbqTreeSelectFlatNode();\n\n flatNode.name = node.name;\n flatNode.value = node.value;\n flatNode.parent = parent;\n flatNode.level = level;\n flatNode.expandable = !!node.children;\n\n return flatNode;\n };\n\n private getLevel = (node: KbqTreeSelectFlatNode) => {\n return node.level;\n };\n\n private isExpandable = (node: KbqTreeSelectFlatNode) => {\n return node.expandable;\n };\n\n private getChildren = (node: KbqTreeSelectNode): KbqTreeSelectNode[] | null => {\n return node.children;\n };\n\n private getValue = (node: KbqTreeSelectFlatNode): unknown => {\n return node.value;\n };\n\n private getViewValue = (node: KbqTreeSelectFlatNode): string => {\n return `${node.name}`;\n };\n}\n","<kbq-tree-select\n #select\n [autoSelect]=\"false\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [multiple]=\"true\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [ngModel]=\"selected\"\n [panelClass]=\"'kbq-pipe-multi-tree-select__panel'\"\n [selectAllHandler]=\"selectAllHandler\"\n [tabIndex]=\"-1\"\n (closed)=\"onClose()\"\n (opened)=\"onOpen()\"\n (selectionChange)=\"onSelect($event)\"\n>\n <!-- eslint-disable-next-line @angular-eslint/template/prefer-control-flow -->\n <kbq-form-field *ngIf=\"data.search\" kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.search.placeholder }}\"\n autocomplete=\"off\"\n kbqInput\n type=\"text\"\n [formControl]=\"searchControl\"\n (keydown.enter)=\"searchKeydownHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n <kbq-cleaner #kbqSelectCleaner />\n\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n\n @if (select.selected?.length === 1) {\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n {{ select.selected[0].name }}\n </span>\n } @else if (\n select.selected?.length > 1 &&\n (!selectedAllEqualsSelectedNothing || (selectedAllEqualsSelectedNothing && !allOptionsSelected))\n ) {\n <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n {{ numberOfSelectedLeaves }}\n </kbq-badge>\n }\n </button>\n\n <kbq-tree-selection [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <kbq-tree-option\n *kbqTreeNodeDef=\"let node; when: isNodeSelectAll\"\n kbqTreeNodePadding\n [class.kbq-selected]=\"allOptionsSelected\"\n [selectable]=\"false\"\n (click)=\"toggleSelectAllNode()\"\n >\n <kbq-pseudo-checkbox [state]=\"selectAllCheckboxState\" />\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n\n <kbq-tree-option *kbqTreeNodeDef=\"let node\" kbqTreeNodePadding [checkboxThirdState]=\"true\">\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n\n <kbq-tree-option\n *kbqTreeNodeDef=\"let node; when: isNodeHasChild\"\n kbqTreeNodePadding\n [checkboxThirdState]=\"true\"\n >\n <kbq-tree-node-toggle [node]=\"node\" />\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n </kbq-tree-selection>\n</kbq-tree-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-readonly',\n imports: [\n KbqButtonModule,\n KbqTitleModule,\n KbqPipeState,\n KbqPipeTitleDirective,\n KbqPipeMinWidth,\n KbqPipeButton\n ],\n template: `\n <button kbq-button [disabled]=\"data.disabled\" [kbqPipeState]=\"data\" [kbqPipeTitle]=\"pipeTooltip\">\n <span #kbqTitleText class=\"kbq-pipe__name\" kbqPipeMinWidth>{{ data.name }}</span>\n <span #kbqTitleText class=\"kbq-pipe__value\" kbqPipeMinWidth [class.kbq-pipe__value_empty]=\"!data.value\">\n {{ data.value }}\n </span>\n </button>\n\n @if (showRemoveButton) {\n <kbq-pipe-button />\n }\n\n <ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ data.value }}</div>\n </ng-template>\n `,\n styleUrls: ['base-pipe.scss', 'pipe-readonly.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeReadonlyComponent extends KbqBasePipe<string | null> {\n open(): void {}\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { merge, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { KbqSelectValue } from '../filter-bar.types';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-select',\n imports: [\n KbqButtonModule,\n KbqDividerModule,\n KbqSelectModule,\n NgClass,\n KbqPipeState,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n KbqPipeMinWidth,\n NgTemplateOutlet,\n KbqFormFieldModule,\n KbqIcon,\n KbqInputModule,\n ReactiveFormsModule,\n AsyncPipe\n ],\n templateUrl: 'pipe-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-select.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue> implements AfterViewInit, OnInit {\n /** control for search options */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search options */\n filteredOptions: Observable<any[]>;\n\n /** @docs-private */\n @ViewChild(KbqSelect) select: KbqSelect;\n\n /** selected value */\n get selected() {\n return this.data.value;\n }\n\n /** Whether the current pipe is empty. */\n get isEmpty(): boolean {\n return !this.data.value;\n }\n\n /** @docs-private */\n ngOnInit(): void {\n this.filteredOptions = merge(\n of(this.values),\n this.searchControl.valueChanges.pipe(map((value) => this.getFilteredOptions(value)))\n );\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.select.closedStream\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n onSelect(item: KbqSelectValue) {\n this.data.value = item;\n this.filterBar?.onChangePipe.emit(this.data);\n this.stateChanges.next();\n }\n\n /** Comparator of selected options */\n compareByValue = (o1: any, o2: any): boolean => o1 && o2 && o1.id === o2.id;\n\n /** opens select */\n override open() {\n this.select.open();\n }\n\n private getFilteredOptions(value: string): KbqSelectValue[] {\n return value\n ? this.values.filter((item) => item.name.toLowerCase().includes(value.toLowerCase()))\n : this.values;\n }\n}\n","<kbq-select\n #select\n [compareWith]=\"compareByValue\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [panelClass]=\"'kbq-pipe-select__panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selected\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span\n #kbqTitleText\n kbqPipeMinWidth\n class=\"kbq-pipe__value\"\n [class.kbq-pipe__value_empty]=\"!select.triggerValue\"\n >\n {{ select.triggerValue }}\n </span>\n </button>\n\n @if (data.search) {\n <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.search.placeholder }}\"\n kbqInput\n type=\"text\"\n [formControl]=\"searchControl\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n }\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n @for (item of filteredOptions | async; track item) {\n <kbq-option [value]=\"item\">\n @if (isTemplateRef(valueTemplate)) {\n <ng-container\n [ngTemplateOutlet]=\"$any(valueTemplate)\"\n [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n />\n } @else {\n {{ item.name }}\n }\n </kbq-option>\n }\n</kbq-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { NgClass } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { PopUpPlacements } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTextareaModule } from '@koobiq/components/textarea';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-text',\n imports: [\n KbqButtonModule,\n KbqFormFieldModule,\n KbqPopoverModule,\n KbqInputModule,\n KbqDividerModule,\n FormsModule,\n KbqTextareaModule,\n NgClass,\n KbqPipeButton,\n ReactiveFormsModule,\n KbqTitleModule,\n KbqPipeState,\n KbqPipeTitleDirective,\n KbqPipeMinWidth\n ],\n templateUrl: 'pipe-text.html',\n styleUrls: ['base-pipe.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeTextComponent extends KbqBasePipe<string | null> implements AfterViewInit, OnInit {\n readonly placements = PopUpPlacements;\n\n /** @docs-private */\n @ViewChild(KbqPopoverTrigger) popover: KbqPopoverTrigger;\n\n /** Whether the current pipe is disabled. */\n get disabled(): boolean {\n return !this.control.value;\n }\n\n /** textarea control */\n control = new FormControl<typeof this.data.value>('');\n\n ngOnInit(): void {\n this.control.setValue(this.data.value);\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.popover.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible) => {\n this.stateChanges.next();\n\n if (!visible) {\n this.filterBar?.onClosePipe.next(this.data);\n }\n });\n }\n\n onApply() {\n this.data.value = this.control.value;\n this.stateChanges.next();\n\n this.control.markAsPristine();\n this.popover.hide();\n\n this.filterBar?.onChangePipe.next(this.data);\n }\n\n /** @docs-private */\n onKeydown($event: KeyboardEvent) {\n if (!this.disabled && ($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApply();\n }\n }\n\n /** clears the pipe and triggers changes */\n override onClear() {\n super.onClear();\n\n this.control.reset();\n }\n\n /** opens popover */\n override open() {\n this.popover.show();\n }\n}\n","<button\n kbq-button\n kbqPopover\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverClass]=\"'kbq-pipe__popover'\"\n [kbqPopoverContent]=\"content\"\n [kbqPopoverFooter]=\"footer\"\n [kbqPopoverOffset]=\"4\"\n [defaultPaddings]=\"false\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [ngClass]=\"{ 'kbq-active': popover?.isOpen }\"\n>\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!data.value\">\n {{ data.value }}\n </span>\n</button>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #content>\n <kbq-form-field (keydown)=\"onKeydown($event)\">\n <textarea kbqTextarea rows=\"1\" [formControl]=\"control\" [freeRowsHeight]=\"0\" [maxRows]=\"5\"></textarea>\n </kbq-form-field>\n</ng-template>\n\n<ng-template #footer>\n <button kbq-button [color]=\"'theme'\" [disabled]=\"disabled\" [kbqStyle]=\"'transparent'\" (click)=\"onApply()\">\n <span>{{ localeData.pipe.applyButton }}</span>\n &nbsp;\n <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n </button>\n</ng-template>\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ data.value }}</div>\n</ng-template>\n","import { NgClass, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqHighlightModule } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport {\n FlatTreeControl,\n KbqTreeFlatDataSource,\n KbqTreeFlattener,\n KbqTreeModule,\n KbqTreeOption\n} from '@koobiq/components/tree';\nimport { KbqTreeSelect, KbqTreeSelectModule } from '@koobiq/components/tree-select';\nimport { Observable } from 'rxjs';\nimport { KbqPipeTemplate, KbqSelectValue, KbqTreeSelectFlatNode, KbqTreeSelectNode } from '../filter-bar.types';\nimport { getId, KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-tree-select',\n imports: [\n KbqButtonModule,\n KbqDividerModule,\n NgClass,\n KbqPipeState,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n KbqPipeMinWidth,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n ReactiveFormsModule,\n KbqHighlightModule,\n KbqTreeModule,\n KbqTreeSelectModule,\n NgIf,\n FormsModule\n ],\n templateUrl: 'pipe-tree-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-tree-select.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeTreeSelectComponent extends KbqBasePipe<KbqSelectValue> implements OnInit, AfterViewInit {\n /** control for search options */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search options */\n filteredOptions: Observable<any[]>;\n\n treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;\n treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n template: any;\n\n /** @docs-private */\n @ViewChild(KbqTreeSelect) select: KbqTreeSelect;\n\n /** selected value */\n get selected() {\n return this.data.value;\n }\n\n /** Whether the current pipe is empty. */\n get isEmpty(): boolean {\n return !this.data.value;\n }\n\n constructor() {\n super();\n\n this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);\n\n this.treeControl = new FlatTreeControl<KbqTreeSelectFlatNode>(\n this.getLevel,\n this.isExpandable,\n this.getValue,\n this.getViewValue\n );\n\n this.dataSource = new KbqTreeFlatDataSource(this.treeControl, this.treeFlattener);\n\n this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n }\n\n ngOnInit(): void {\n this.searchControl.valueChanges.subscribe((value) => this.treeControl.filterNodes(value));\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.select.closedStream\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n hasChild(_: number, nodeData) {\n return nodeData.expandable;\n }\n\n onSelect(item: KbqTreeOption) {\n this.data.value = item.value;\n this.filterBar?.onChangePipe.emit(this.data);\n this.select.close();\n setTimeout(() => this.select.focus());\n this.stateChanges.next();\n }\n\n /** updates values for selection and value template */\n override updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n const template = templates?.find((template) => getId(template) === getId(this.data));\n\n if (template?.values) {\n this.values = template.values;\n this.valueTemplate = template.valueTemplate;\n\n this.dataSource.data = template.values as KbqTreeSelectNode[];\n }\n };\n\n /** opens select */\n override open() {\n setTimeout(() => this.select.open());\n }\n\n onOpen() {\n this.treeControl.expandAll();\n }\n\n private transformer = (node: KbqTreeSelectNode, level: number, parent: any) => {\n const flatNode = new KbqTreeSelectFlatNode();\n\n flatNode.name = node.name;\n flatNode.value = node.value;\n flatNode.parent = parent;\n flatNode.level = level;\n flatNode.expandable = !!node.children;\n\n return flatNode;\n };\n\n private getLevel = (node: KbqTreeSelectFlatNode) => {\n return node.level;\n };\n\n private isExpandable = (node: KbqTreeSelectFlatNode) => {\n return node.expandable;\n };\n\n private getChildren = (node: KbqTreeSelectNode): KbqTreeSelectNode[] | null => {\n return node.children;\n };\n\n private getValue = (node: KbqTreeSelectFlatNode): unknown => {\n return node.value;\n };\n\n private getViewValue = (node: KbqTreeSelectFlatNode): string => {\n return `${node.name}`;\n };\n}\n","<kbq-tree-select\n #select\n [autoSelect]=\"false\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [ngModel]=\"selected\"\n [panelClass]=\"'kbq-pipe-tree-select__panel'\"\n [tabIndex]=\"-1\"\n (opened)=\"onOpen()\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <!-- eslint-disable-next-line @angular-eslint/template/prefer-control-flow -->\n <kbq-form-field *ngIf=\"data.search\" kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.search.placeholder }}\"\n autocomplete=\"off\"\n kbqInput\n type=\"text\"\n [formControl]=\"searchControl\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n <kbq-cleaner #kbqSelectCleaner />\n\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span\n #kbqTitleText\n kbqPipeMinWidth\n class=\"kbq-pipe__value\"\n [class.kbq-pipe__value_empty]=\"!select.triggerValue\"\n >\n {{ select.triggerValue }}\n </span>\n </button>\n\n <kbq-tree-selection [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <kbq-tree-option *kbqTreeNodeDef=\"let node\" kbqTreeNodePadding>\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n\n <kbq-tree-option *kbqTreeNodeDef=\"let node; when: hasChild\" kbqTreeNodePadding [selectable]=\"false\">\n <kbq-tree-node-toggle [node]=\"node\" />\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n </kbq-tree-selection>\n</kbq-tree-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { InjectionToken, Provider, TemplateRef } from '@angular/core';\nimport { ruRULocaleData } from '@koobiq/components/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqPipeDateComponent } from './pipes/pipe-date';\nimport { KbqPipeDatetimeComponent } from './pipes/pipe-datetime';\nimport { KbqPipeMultiSelectComponent } from './pipes/pipe-multi-select';\nimport { KbqPipeMultiTreeSelectComponent } from './pipes/pipe-multi-tree-select';\nimport { KbqPipeReadonlyComponent } from './pipes/pipe-readonly';\nimport { KbqPipeSelectComponent } from './pipes/pipe-select';\nimport { KbqPipeTextComponent } from './pipes/pipe-text';\nimport { KbqPipeTreeSelectComponent } from './pipes/pipe-tree-select';\n\n/**default configuration of filter-bar */\nexport const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION = ruRULocaleData.filterBar;\n\n/** Injection Token for providing configuration of filter-bar */\nexport const KBQ_FILTER_BAR_CONFIGURATION = new InjectionToken('KbqFilterBarConfiguration');\n\n/** Injection Token for providing pipes in filter-bar */\nexport const KBQ_FILTER_BAR_PIPES = new InjectionToken<any>('kbq-filter-bar-pipes');\n\n/** Utility provider for `KBQ_FILTER_BAR_PIPES`. */\nexport const kbqFilterBarPipesProvider = (): Provider => {\n return {\n provide: KBQ_FILTER_BAR_PIPES,\n useValue: new Map<string, unknown>(defaultFilterBarPipes)\n };\n};\n\n/** list of pipe types available out of the box */\nexport enum KbqPipeTypes {\n ReadOnly = 'readonly',\n Text = 'text',\n Select = 'select',\n TreeSelect = 'tree-select',\n MultiSelect = 'multiselect',\n MultiTreeSelect = 'multi-tree-select',\n Date = 'date',\n Datetime = 'datetime'\n}\n\nexport type KbqPipeType = `${KbqPipeTypes}` | string;\n\n/** list of pipes available out of the box. */\nexport const defaultFilterBarPipes: [string, unknown][] = [\n [KbqPipeTypes.ReadOnly, KbqPipeReadonlyComponent],\n [KbqPipeTypes.Text, KbqPipeTextComponent],\n [KbqPipeTypes.Select, KbqPipeSelectComponent],\n [KbqPipeTypes.TreeSelect, KbqPipeTreeSelectComponent],\n [KbqPipeTypes.MultiSelect, KbqPipeMultiSelectComponent],\n [KbqPipeTypes.MultiTreeSelect, KbqPipeMultiTreeSelectComponent],\n [KbqPipeTypes.Date, KbqPipeDateComponent],\n [KbqPipeTypes.Datetime, KbqPipeDatetimeComponent]\n];\n\nexport interface KbqDateTimeValue {\n name?: string;\n start?: string;\n end?: string;\n}\n\nexport interface KbqSelectValue {\n name: string;\n value: unknown;\n}\n\nexport interface KbqFilter {\n name: string;\n\n pipes: KbqPipe[];\n\n readonly: boolean;\n disabled: boolean;\n changed: boolean;\n // this is business logic state (like a flag)\n saved: boolean;\n}\n\nexport interface KbqPipe {\n name: string;\n id?: string | number;\n type: KbqPipeType;\n value: unknown | null;\n\n search?: boolean;\n selectAll?: boolean;\n\n openOnAdd?: boolean;\n openOnReset?: boolean;\n\n /**\n * This is special logic that unselect all items when all selected because \"all selected = nothing selected\".\n * Default is true\n * */\n selectedAllEqualsSelectedNothing?: boolean;\n\n /** @deprecated use cleanable = false and removable = false instead */\n required?: boolean;\n cleanable: boolean;\n removable: boolean;\n disabled: boolean;\n}\n\nexport interface KbqPipeData<V> extends KbqPipe {\n value: V | null;\n}\n\nexport interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {\n values?: unknown[];\n valueTemplate?: TemplateRef<any> | string;\n}\n\nexport interface KbqSaveFilterError {\n text?: string;\n nameAlreadyExists?: boolean;\n}\n\n/** saving statuses for KbqSaveFilterEvent */\nexport enum KbqSaveFilterStatuses {\n OnlyChanges = 'onlyChanges',\n NewName = 'newName',\n NewFilter = 'newFilter'\n}\n\nexport interface KbqSaveFilterEvent {\n filter: KbqFilter;\n filterBar: KbqFilterBar;\n status?: KbqSaveFilterStatuses;\n}\n\n/** Flattened node */\nexport class KbqTreeSelectFlatNode {\n name: string;\n value: unknown;\n level: number;\n expandable: boolean;\n parent?: KbqTreeSelectFlatNode;\n}\n\nexport interface KbqTreeSelectNode {\n children: KbqTreeSelectNode[] | null;\n name: string;\n value: unknown;\n}\n\n/**\n * Build the file structure tree. The `value` is the Json object, or a sub-tree of a Json object.\n * The return value is the list of extends `KbqTreeSelectNode`.\n */\nexport function kbqBuildTree<T extends KbqTreeSelectNode>(value: any, level: number): T[] {\n const data: T[] = [];\n\n for (const [k, v] of Object.entries(value)) {\n data.push({\n name: k.toString(),\n value: v,\n children: typeof v === 'object' && v && !v['value'] ? kbqBuildTree(v, level + 1) : null\n } as T);\n }\n\n return data;\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, Output } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilter } from './filter-bar.types';\n\n@Component({\n selector: 'kbq-filter-reset',\n imports: [KbqButtonModule],\n template: `\n <button kbq-button [color]=\"'theme'\" [kbqStyle]=\"'transparent'\" (click)=\"resetFilter()\">\n <ng-content>{{ localeData }}</ng-content>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-filter-reset'\n }\n})\nexport class KbqFilterReset {\n /** KbqFilterBar instance */\n private readonly filterBar = inject(KbqFilterBar);\n\n /** Event that is generated whenever the user reset a filter. */\n @Output() readonly onResetFilter = new EventEmitter<KbqFilter | null>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar.configuration.reset.buttonName;\n }\n\n protected resetFilter() {\n this.onResetFilter.emit(this.filterBar.filter!);\n\n this.filterBar.changes.next();\n this.filterBar.onResetFilter.next(true);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilters } from './filters';\n\n@Directive({\n selector: '[kbqFilterBarButton]',\n host: {\n '(click)': 'saveFocusedElement()',\n '(keydown)': 'saveFocusedElement()'\n }\n})\nexport class KbqFilterBarButton {\n private readonly button = inject(KbqButton);\n /** KbqFilterBar instance */\n private readonly filterBar = inject(KbqFilterBar);\n /** KbqFilters instance */\n protected readonly filters = inject(KbqFilters);\n\n constructor() {\n this.filterBar.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.button.kbqStyle = KbqButtonStyles.Outline;\n this.button.color = KbqComponentColors.ContrastFade;\n\n if (this.filterBar.filter?.changed || this.filterBar.filter?.saved) {\n this.button.kbqStyle = 'changed-filter';\n this.button.color = KbqComponentColors.Empty;\n }\n });\n }\n\n /** @docs-private */\n saveFocusedElement() {\n this.filters.saveFocusedElement(this.button);\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { KbqAlertModule } from '@koobiq/components/alert';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors, KbqFormsModule, PopUpPlacements, PopUpSizes } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule, KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { merge, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilterBarButton } from './filter-bar-button';\nimport { KbqFilter, KbqSaveFilterError, KbqSaveFilterEvent, KbqSaveFilterStatuses } from './filter-bar.types';\n\n@Component({\n selector: 'kbq-filters',\n imports: [\n ReactiveFormsModule,\n KbqButtonModule,\n KbqDropdownModule,\n KbqDividerModule,\n KbqIcon,\n KbqTitleModule,\n KbqFormFieldModule,\n KbqInputModule,\n NgClass,\n KbqFilterBarButton,\n AsyncPipe,\n KbqTooltipTrigger,\n KbqPopoverModule,\n FormsModule,\n KbqFormsModule,\n KbqAlertModule\n ],\n templateUrl: 'filters.html',\n styleUrls: ['filters.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kbqFilters',\n host: {\n class: 'kbq-filters'\n }\n})\nexport class KbqFilters implements OnInit {\n /** @docs-private */\n protected readonly elementRef = inject(ElementRef);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n /** @docs-private */\n protected readonly styles = KbqButtonStyles;\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n /** KbqFilterBar instance */\n protected readonly filterBar = inject(KbqFilterBar);\n\n /** @docs-private */\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /** @docs-private */\n @ViewChild('mainButton') protected mainButton: KbqButton;\n /** @docs-private */\n @ViewChild('saveNewFilterButton') protected saveNewFilterButton: KbqButton;\n /** @docs-private */\n @ViewChild('filterActionsButton') protected filterActionsButton: KbqButton;\n\n /** @docs-private */\n @ViewChild(KbqPopoverTrigger) protected popover: KbqPopoverTrigger;\n /** @docs-private */\n @ViewChild(KbqDropdownTrigger) protected dropdown: KbqDropdownTrigger;\n /** @docs-private */\n @ViewChild('filterActionsButton') protected filterActionsDropdown: KbqDropdownTrigger;\n\n @ViewChild('search') private search: ElementRef;\n @ViewChild('newFilterName') private newFilterName: ElementRef;\n @ViewChild('saveFilterButton') private saveFilterButton: KbqButton;\n\n /** control for search filter */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search filters */\n filteredOptions: Observable<KbqFilter[]>;\n\n /** @docs-private */\n popoverSize = PopUpSizes.Medium;\n /** @docs-private */\n popoverOffset: number = 4;\n\n /** new filter name for saving */\n filterName: FormControl<string | null>;\n\n /** true if saving a new filter, false if saving changes in filter */\n saveNewFilter: boolean;\n\n showFilterSavingError: boolean = false;\n filterSavingErrorText: string;\n\n isSaving: boolean = false;\n\n @Input() filters: KbqFilter[];\n\n /** Event that is generated whenever the user selects a filter. */\n @Output() readonly onSelectFilter = new EventEmitter<KbqFilter>();\n /** Event that is generated whenever the user save a filter. */\n @Output() readonly onSave = new EventEmitter<KbqSaveFilterEvent>();\n /** Event that is generated whenever the user change a filter. */\n @Output() readonly onChangeFilter = new EventEmitter<KbqSaveFilterEvent>();\n /** Event that is generated whenever the user saves a filter as new.\n * @deprecated use onSave with status = newFilter. */\n @Output() readonly onSaveAsNew = new EventEmitter<KbqSaveFilterEvent>();\n /** Event that is generated whenever the user remove a filter. */\n @Output() readonly onRemoveFilter = new EventEmitter<KbqFilter>();\n /** Event that is generated whenever the user reset a filter changes. */\n @Output() readonly onResetFilterChanges = new EventEmitter<KbqFilter | null>();\n\n /** header of popover. Depends on the mode */\n get popoverHeader(): string {\n return this.saveNewFilter ? this.localeData.saveAsNew : this.localeData.saveChanges;\n }\n\n /** Component state. true if opened dropdown or popup */\n get opened(): boolean {\n return this.popover?.isOpen || this.dropdown?.opened;\n }\n\n /** Component state. true if opened dropdown or popup of filterActions */\n get filterActionsOpened(): boolean {\n return this.popover?.isOpen || this.filterActionsDropdown?.opened;\n }\n\n /** Selected filter */\n get filter(): KbqFilter | null {\n return this.filterBar.filter;\n }\n\n /** Component state. True if 'filters' input contains no elements. */\n get isEmpty(): boolean {\n return this.filters.length === 0;\n }\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar.configuration.filters;\n }\n\n /** Current focus origin state.\n * @docs-private */\n get focusOrigin(): FocusOrigin {\n return this._focusOrigin;\n }\n\n private _focusOrigin: FocusOrigin = null;\n\n private focusedElementBeforeOpen: KbqButton | null;\n\n constructor() {\n this.filterBar.changes.subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n ngOnInit(): void {\n this.filteredOptions = merge(\n of(this.filters),\n this.searchControl.valueChanges.pipe(map((value) => this.getFilteredOptions(value)))\n );\n\n this.focusMonitor\n .monitor(this.elementRef, true)\n .pipe(\n filter((origin) => !!origin),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((origin) => (this._focusOrigin = origin));\n }\n\n /** @docs-private */\n focusedElementBeforeIs(button: KbqButton): boolean {\n return this.focusedElementBeforeOpen === button;\n }\n\n selectFilter(filter: KbqFilter) {\n this.filterBar.internalFilterChanges.next(structuredClone(filter));\n\n this.onSelectFilter.next(filter);\n }\n\n saveChanges() {\n if (!this.filterBar.filter) return;\n\n this.filterBar.filter.saved = true;\n this.filterBar.filter.changed = false;\n\n this.filterBar.internalFilterChanges.next(this.filterBar.filter);\n\n this.onSave.emit({\n filter: this.filterBar.filter,\n filterBar: this.filterBar,\n status: KbqSaveFilterStatuses.OnlyChanges\n });\n }\n\n saveAsNew(event?: Event) {\n if (this.filterName.invalid) return;\n\n const name = this.filterName.value || '';\n\n // @todo default filter\n const filter = structuredClone<KbqFilter>(this.filter as KbqFilter) || { pipes: [] };\n\n filter.name = name;\n filter.saved = true;\n filter.changed = false;\n\n this.isSaving = true;\n this.popover.preventClose = true;\n this.filterName.disable();\n\n if (this.saveNewFilter) {\n this.onSaveAsNew.emit({ filter, filterBar: this.filterBar });\n this.onSave.emit({ filter, filterBar: this.filterBar, status: KbqSaveFilterStatuses.NewFilter });\n } else {\n this.onSave.emit({ filter, filterBar: this.filterBar, status: KbqSaveFilterStatuses.NewName });\n }\n\n event?.preventDefault();\n }\n\n showError(error?: KbqSaveFilterError) {\n if (error?.nameAlreadyExists) {\n this.filterName.setErrors({ filterNameAlreadyExist: true });\n }\n\n this.showFilterSavingError = true;\n\n this.filterSavingErrorText = error?.text ?? this.filterBar.configuration.filters.errorHint;\n }\n\n restoreFocus() {\n if (this.focusedElementBeforeOpen && !this.focusedElementBeforeOpen.disabled) {\n this.focusMonitor.focusVia(this.focusedElementBeforeOpen.elementRef, this.focusOrigin);\n this.focusedElementBeforeOpen = null;\n }\n }\n\n preparePopover() {\n this.filterName = new FormControl<string>(this.filter?.name || '', Validators.required);\n\n this.filterName.valueChanges.pipe(distinctUntilChanged()).subscribe(() => (this.showFilterSavingError = false));\n\n this.popover.show();\n\n merge(...this.popover.defaultClosingActions())\n .pipe(\n filter(() => !this.isSaving),\n takeUntilDestroyed(this.popover.instanceDestroyRef)\n )\n .subscribe(() => this.closePopover(false));\n\n this.popover.visibleChange\n .pipe(\n filter((state) => !state),\n takeUntilDestroyed(this.popover.instanceDestroyRef)\n )\n .subscribe(this.closePopover);\n\n setTimeout(() => {\n this.newFilterName.nativeElement.focus();\n this.filterName.setErrors(null);\n });\n }\n\n openSaveAsNewFilterPopover() {\n this.saveNewFilter = true;\n\n this.preparePopover();\n }\n\n openChangeFilterNamePopover() {\n this.saveNewFilter = false;\n\n this.preparePopover();\n }\n\n /** @docs-private */\n saveFocusedElement(button?: KbqButton) {\n this.focusedElementBeforeOpen = button || null;\n }\n\n closePopover = (restoreFocus: boolean = true) => {\n this.popover.hide();\n\n if (restoreFocus) this.restoreFocus();\n\n setTimeout(() => this.changeDetectorRef.detectChanges());\n\n this.showFilterSavingError = false;\n };\n\n /** @docs-private */\n stopEventPropagation(event: Event) {\n event.stopPropagation();\n }\n\n /** @docs-private */\n searchKeydownHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.closePopover();\n } else {\n this.stopEventPropagation(event);\n }\n }\n\n /** @docs-private */\n onDropdownOpen() {\n this.searchControl.setValue(null);\n setTimeout(() => this.search.nativeElement.focus());\n }\n\n resetFilterChanges() {\n this.filterBar.resetFilterChangedState();\n\n this.onResetFilterChanges.emit(this.filter!);\n }\n\n removeFilter() {\n this.onRemoveFilter.next(this.filter!);\n\n setTimeout(() => this.focusMonitor.focusVia(this.mainButton.elementRef, this.focusOrigin), 0);\n }\n\n /** Hide the popup and restore focus.\n * Use this method in the onSave, onSaveAsNew, or onChangeFilter events after the data has been successfully saved. */\n filterSavedSuccessfully() {\n this.isSaving = false;\n this.popover.preventClose = false;\n\n this.popover.hide();\n setTimeout(() => this.restoreFocus(), 0);\n\n this.changeDetectorRef.markForCheck();\n }\n\n /** Shows an error. Use this method in the onSave, onSaveAsNew, or onChangeFilter events if saving data failed. */\n filterSavedUnsuccessfully(error?: KbqSaveFilterError) {\n this.isSaving = false;\n this.popover.preventClose = false;\n\n this.showError(error);\n this.filterName.enable();\n setTimeout(() => this.saveFilterButton.focus());\n\n this.changeDetectorRef.markForCheck();\n }\n\n private getFilteredOptions(value): KbqFilter[] {\n const searchFilter = value && value.new ? value.value : value;\n\n return searchFilter\n ? this.filters.filter((filter) => filter.name.toLowerCase().includes(searchFilter.toLowerCase()))\n : this.filters;\n }\n}\n","<button\n #mainButton\n kbq-button\n kbq-title\n kbqFilterBarButton\n kbqPopover\n [kbqDropdownTriggerFor]=\"savedFilters\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverOffset]=\"popoverOffset\"\n [kbqPopoverClass]=\"'kbq-filters__save-as-new-filter-popover'\"\n [kbqPopoverContent]=\"saveAsNewPopoverContent\"\n [kbqPopoverFooter]=\"saveAsNewPopoverFooter\"\n [kbqPopoverHeader]=\"saveAsNewPopoverHeader\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqTrigger]=\"'manual'\"\n [disabled]=\"isSaving\"\n [class.kbq-active]=\"focusedElementBeforeIs(mainButton) && opened\"\n (dropdownClosed)=\"searchControl.setValue('')\"\n (dropdownOpened)=\"onDropdownOpen()\"\n>\n <span #kbqTitleText class=\"kbq-filters__filter-name\">\n @if (filter?.name) {\n {{ filter!.name }}\n } @else {\n <ng-content>\n <i kbq-icon=\"kbq-list_16\"></i>\n {{ localeData.defaultName }}\n </ng-content>\n }\n </span>\n</button>\n\n@if (filterBar.isChanged && !filterBar.isSaved) {\n <button\n #saveNewFilterButton\n kbqTooltip=\"{{ localeData.saveNewFilterTooltip }}\"\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [class.kbq-active]=\"focusedElementBeforeIs(saveNewFilterButton) && opened\"\n [color]=\"colors.Empty\"\n [disabled]=\"isSaving\"\n (click)=\"openSaveAsNewFilterPopover()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n </button>\n}\n\n@if (filterBar.isSaved) {\n <button\n #filterActionsButton\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n [kbqDropdownTriggerFor]=\"filterActions\"\n [disabled]=\"isSaving\"\n [class.kbq-active]=\"focusedElementBeforeIs(filterActionsButton) && filterActionsOpened\"\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n >\n <i kbq-icon=\"kbq-ellipsis-vertical_16\"></i>\n </button>\n\n <i kbq-icon=\"kbq-chevron-right-s_16\" class=\"kbq-filter-bar__arrow\" [color]=\"'theme'\"></i>\n} @else {\n <kbq-divider class=\"kbq-filter-bar__separator\" [vertical]=\"true\" />\n}\n\n<kbq-dropdown #savedFilters=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n <div [style.display]=\"isEmpty ? 'none' : 'initial'\">\n <kbq-form-field kbqFormFieldWithoutBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n <input\n #search\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n autocomplete=\"off\"\n kbqInput\n [formControl]=\"searchControl\"\n (click)=\"stopEventPropagation($event)\"\n (keydown)=\"searchKeydownHandler($event)\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <kbq-divider />\n\n @for (filter of filteredOptions | async; track filter) {\n <button\n kbq-dropdown-item\n kbq-title\n [class.kbq-selected]=\"filterBar.filter?.name === filter.name\"\n (click)=\"selectFilter(filter)\"\n >\n {{ filter.name }}\n </button>\n } @empty {\n <button kbq-dropdown-item [disabled]=\"true\">\n {{ localeData.searchEmptyResult }}\n </button>\n }\n\n <kbq-divider />\n </div>\n\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ localeData.saveAsNewFilter }}\n </button>\n</kbq-dropdown>\n\n<kbq-dropdown #filterActions=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n @if (filterBar.isSavedAndChanged && !filterBar.isReadOnly) {\n <button\n kbq-dropdown-item\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n (click)=\"saveChanges()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n {{ localeData.saveChanges }}\n @if (filterBar.isSavedAndChanged) {\n <i kbq-icon=\"kbq-circle-xs_16\" class=\"kbq-icon-button kbq-warning layout-margin-left-xs\"></i>\n }\n </button>\n }\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ localeData.saveAsNew }}\n </button>\n\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"openChangeFilterNamePopover()\">\n <i kbq-icon=\"kbq-pencil_16\"></i>\n {{ localeData.change }}\n </button>\n }\n\n @if (filterBar.isSavedAndChanged || !filterBar.isReadOnly) {\n <kbq-divider />\n }\n\n @if (filterBar.isSavedAndChanged) {\n <button kbq-dropdown-item (click)=\"resetFilterChanges()\">\n <i kbq-icon=\"kbq-circle-xmark_16\"></i>\n {{ localeData.resetChanges }}\n </button>\n }\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"removeFilter()\">\n <i kbq-icon=\"kbq-trash_16\"></i>\n {{ localeData.remove }}\n </button>\n }\n</kbq-dropdown>\n\n<ng-template #saveAsNewPopoverHeader>{{ popoverHeader }}</ng-template>\n\n<ng-template #saveAsNewPopoverContent>\n @if (showFilterSavingError) {\n <kbq-alert class=\"layout-margin-bottom-m\" [alertColor]=\"'error'\" [alertStyle]=\"'colored'\" [compact]=\"true\">\n {{ filterSavingErrorText }}\n </kbq-alert>\n }\n <div class=\"kbq-form-vertical\">\n <div class=\"kbq-form__row\">\n <label class=\"kbq-form__label\">{{ localeData.name }}</label>\n\n <kbq-form-field class=\"kbq-form__control\">\n <input\n #newFilterName\n kbqInput\n type=\"text\"\n [formControl]=\"filterName\"\n (keydown.enter)=\"saveAsNew($event)\"\n />\n\n @if (filterName.hasError('filterNameAlreadyExist')) {\n <kbq-error>{{ localeData.error }}</kbq-error>\n }\n </kbq-form-field>\n </div>\n </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n <button\n #saveFilterButton\n kbq-button\n class=\"layout-margin-right-l\"\n [class.kbq-progress]=\"isSaving\"\n [disabled]=\"isSaving\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'filled'\"\n (click)=\"saveAsNew()\"\n >\n {{ localeData.saveButton }}\n </button>\n <button\n kbq-button\n [color]=\"'contrast-fade'\"\n [kbqStyle]=\"'filled'\"\n [disabled]=\"isSaving\"\n (click)=\"closePopover(true)\"\n >\n {{ localeData.cancelButton }}\n </button>\n</ng-template>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n inject,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_LOCALE_SERVICE } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { BehaviorSubject, merge } from 'rxjs';\nimport {\n KBQ_FILTER_BAR_CONFIGURATION,\n KBQ_FILTER_BAR_DEFAULT_CONFIGURATION,\n KbqFilter,\n KbqPipe,\n KbqPipeTemplate\n} from './filter-bar.types';\nimport { KbqFilterReset } from './filter-reset';\nimport { KbqFilters } from './filters';\n\n@Component({\n selector: 'kbq-filter-bar, [kbq-filter-bar]',\n imports: [KbqDividerModule],\n template: `\n <div class=\"kbq-filter-bar__left\">\n <ng-content select=\"kbq-filters\" />\n\n <ng-content />\n\n <ng-content select=\"kbq-pipe-add\" />\n\n <ng-content select=\"kbq-filter-reset\" />\n </div>\n\n <div class=\"kbq-filter-bar__right\">\n <ng-content select=\"kbq-filter-search, [kbq-filter-search], kbq-search-expandable\" />\n\n <ng-content select=\"kbq-filter-refresher, [kbq-filter-refresher]\" />\n </div>\n `,\n styleUrls: ['filter-bar.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-filter-bar'\n }\n})\nexport class KbqFilterBar {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n readonly externalConfiguration = inject(KBQ_FILTER_BAR_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** @docs-private */\n @ContentChild(KbqFilters) filters: KbqFilters;\n /** @docs-private */\n @ContentChild(KbqFilterReset) filterReset: KbqFilterReset;\n\n /**\n * This is special logic that unselect all items when all selected because \"all selected = nothing selected\".\n * Default is true\n * */\n @Input({ transform: booleanAttribute }) selectedAllEqualsSelectedNothing: boolean = true;\n\n /** Filter that is currently selected */\n @Input()\n get filter(): KbqFilter | null {\n return this._filter;\n }\n\n set filter(value: KbqFilter | null) {\n if (this._filter === value) return;\n\n this._filter = value;\n\n this.changes.next();\n }\n\n private _filter: KbqFilter | null;\n\n /** An array of templates that are used when adding a pipe. Also contains lists of options to select (values). */\n @Input()\n get pipeTemplates(): KbqPipeTemplate[] {\n return this._templates;\n }\n\n set pipeTemplates(value: KbqPipeTemplate[]) {\n this._templates = value;\n\n this.internalTemplatesChanges.next(this._templates);\n }\n\n private _templates: KbqPipeTemplate[] = [];\n /**\n * Event that emits whenever the raw value of the filter changes. This is here primarily\n * to facilitate the two-way binding for the `filter` input.\n * @docs-private\n */\n @Output() readonly filterChange = new EventEmitter<KbqFilter | null>();\n /** Event that emits whenever the value of the pipe changes. */\n @Output() readonly onChangePipe = new EventEmitter<KbqPipe>();\n /** Event that emits whenever the pipe deleted. */\n @Output() readonly onRemovePipe = new EventEmitter<KbqPipe>();\n /** Event that emits whenever the pipe cleared. */\n @Output() readonly onClearPipe = new EventEmitter<KbqPipe>();\n /** Event that emits whenever the select or multiselect pipe closed. */\n @Output() readonly onClosePipe = new EventEmitter<KbqPipe>();\n\n /** Whether the current filter is saved and changed */\n get isSavedAndChanged(): boolean {\n return this.isSaved && this.isChanged;\n }\n\n /** Whether the current filter is saved */\n get isSaved(): boolean {\n return !!this.filter?.saved;\n }\n\n /** Whether the current filter is changed */\n get isChanged(): boolean {\n return !!this.filter?.changed;\n }\n\n /** Whether the current filter is readonly */\n get isReadOnly(): boolean {\n return !!this.filter?.readonly;\n }\n\n /** Whether the current filter is disabled */\n get isDisabled(): boolean {\n return !!this.filter?.disabled;\n }\n\n private savedFilter: KbqFilter | null = null;\n\n /** Event that emits whenever the filter is reset. */\n readonly onResetFilter = new BehaviorSubject<boolean>(false);\n /** all changes */\n readonly changes = new BehaviorSubject<void>(undefined);\n /** internal filter changes */\n readonly internalFilterChanges = new BehaviorSubject<KbqFilter | null>(null);\n /** internal changes in templates */\n readonly internalTemplatesChanges = new BehaviorSubject<KbqPipeTemplate[] | null>(null);\n /** this subject need for opens pipe after adding\n * @docs-private */\n readonly openPipe = new BehaviorSubject<string | number | null>(null);\n\n constructor() {\n this.internalFilterChanges.pipe(takeUntilDestroyed()).subscribe((filter) => {\n this._filter = filter;\n\n this.filterChange.emit(this.filter);\n });\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n merge(this.onChangePipe, this.onRemovePipe)\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n if (this.filter) {\n this.filter.changed = true;\n this.filterChange.emit(this.filter);\n }\n });\n\n merge(this.filterChange, this.onChangePipe, this.onRemovePipe, this.internalFilterChanges)\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n this.changes.next();\n this.changeDetectorRef.markForCheck();\n });\n }\n\n /** Remove pipe from current filter and emit event */\n removePipe(pipe: KbqPipe) {\n this.filter?.pipes.splice(this.filter?.pipes.indexOf(pipe), 1);\n\n this.onRemovePipe.next(pipe);\n this.changes.next();\n }\n\n /** Save current state of filter */\n saveFilterState(filter?: KbqFilter) {\n this.savedFilter = structuredClone(filter ?? this.filter);\n }\n\n /** Restore previously saved filter state */\n restoreFilterState(filter?: KbqFilter) {\n this.filter = structuredClone(filter ?? this.savedFilter);\n }\n\n /** Set the filter state \"changed\" to false */\n resetFilterChangedState() {\n this.filter!.changed = false;\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('filterBar');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_FILTER_BAR_DEFAULT_CONFIGURATION;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\n\n@Component({\n selector: 'kbq-filter-refresher, [kbq-filter-refresher]',\n imports: [\n KbqButtonModule,\n KbqIconModule\n ],\n template: `\n <button kbq-button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n <i kbq-icon=\"kbq-arrow-rotate-right_16\"></i>\n </button>\n <button kbq-button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n </button>\n `,\n styleUrls: ['filter-refresher.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-filter-refresher'\n }\n})\nexport class KbqFilterBarRefresher {}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n input,\n numberAttribute,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { KbqFilterBar } from './filter-bar';\n\nexport const defaultOnSearchTimeout = 0;\n\n/** @deprecated Will be removed in next major release. Use `kbq-search-expandable` instead. */\n@Component({\n selector: 'kbq-filter-search, [kbq-filter-search]',\n imports: [\n KbqDividerModule,\n KbqButtonModule,\n KbqToolTipModule,\n KbqIconModule,\n KbqFormFieldModule,\n KbqInputModule,\n ReactiveFormsModule\n ],\n template: `\n <button\n kbq-button\n [kbqTooltip]=\"resolvedTooltip\"\n [class.kbq-filter_hidden]=\"isSearchActive\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"openSearch()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n\n <kbq-form-field [class.kbq-filter_hidden]=\"!isSearchActive\">\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n <input\n autocomplete=\"off\"\n kbqInput\n [placeholder]=\"resolvedPlaceholder\"\n [formControl]=\"searchControl\"\n (blur)=\"onBlur()\"\n (keydown.escape)=\"onEscape()\"\n (keydown.enter)=\"onEnter()\"\n />\n\n <kbq-cleaner (click)=\"onClear()\" />\n </kbq-form-field>\n `,\n styleUrl: 'filter-search.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-filter-search'\n }\n})\nexport class KbqFilterBarSearch implements AfterViewInit {\n /** KbqFilterBar instance */\n private readonly filterBar = inject(KbqFilterBar);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n @ViewChild(KbqInput) private input: KbqInput;\n @ViewChild(KbqButton) private button: KbqButton;\n @ViewChild(KbqTooltipTrigger) private tooltip: KbqTooltipTrigger;\n\n /** control for search */\n searchControl: UntypedFormControl = new UntypedFormControl();\n\n /** Whether the search active */\n isSearchActive: boolean = false;\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar.configuration.search;\n }\n\n /**\n /** Timeout in milliseconds for emit event. The default value is taken from defaultOnSearchTimeout\n * @default 0\n */\n readonly onSearchTimeout = input(defaultOnSearchTimeout, { transform: numberAttribute });\n\n /** Emit event by enter or not. Default is false */\n readonly emitValueByEnter = input(false, { transform: booleanAttribute });\n\n /** Value of the field after initialization */\n readonly initialValue = input();\n\n /** Custom tooltip text. When set, overrides localeData.tooltip */\n readonly customTooltip = input<string>('', { alias: 'tooltip' });\n\n /** Custom placeholder text. When set, overrides localeData.placeholder */\n readonly customPlaceholder = input<string>('', { alias: 'placeholder' });\n\n /** @docs-private */\n get resolvedTooltip(): string {\n return this.customTooltip() || this.localeData.tooltip;\n }\n\n /** @docs-private */\n get resolvedPlaceholder(): string {\n return this.customPlaceholder() || this.localeData.placeholder;\n }\n\n /** event that is generated whenever a user performs a search. */\n @Output() readonly onSearch = new EventEmitter<string>();\n\n ngAfterViewInit(): void {\n this.filterBar.filterReset?.onResetFilter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onReset);\n\n if (this.initialValue()) {\n this.searchControl.setValue(this.initialValue(), { emitEvent: false });\n }\n\n this.searchControl.valueChanges\n .pipe(\n distinctUntilChanged(),\n filter(() => !this.emitValueByEnter()),\n debounceTime(this.onSearchTimeout()),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(this.onSearch);\n }\n\n openSearch(): void {\n this.isSearchActive = true;\n\n setTimeout(() => this.input.focus());\n }\n\n /** @docs-private */\n onBlur(): void {\n if (this.searchControl.value) return;\n\n this.onEscape();\n }\n\n /** @docs-private */\n onEscape(): void {\n this.isSearchActive = false;\n\n this.button.focusViaKeyboard();\n\n this.tooltip.hide();\n }\n\n /** @docs-private */\n onEnter(): void {\n if (this.emitValueByEnter()) {\n this.onSearch.emit(this.searchControl.value);\n }\n }\n\n /** @docs-private */\n onClear() {\n this.isSearchActive = false;\n\n setTimeout(() => {\n this.button.focus();\n\n this.tooltip.hide();\n });\n }\n\n /** @docs-private */\n onReset = () => {\n this.changeDetectorRef.markForCheck();\n };\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOption, KbqOptionModule } from '@koobiq/components/core';\nimport { KbqDropdownModule } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilter, KbqPipe, KbqPipeTemplate } from './filter-bar.types';\nimport { getId } from './pipes/base-pipe';\n\n@Component({\n selector: 'kbq-pipe-add',\n imports: [\n KbqDropdownModule,\n KbqToolTipModule,\n KbqButtonModule,\n KbqIcon,\n KbqOptionModule,\n KbqSelectModule,\n NgClass\n ],\n template: `\n <kbq-select #select [tabIndex]=\"-1\" [multiple]=\"true\" [value]=\"addedPipes\" [compareWith]=\"compareWith\">\n <button\n kbqTooltip=\"{{ filterBar.configuration.add.tooltip }}\"\n kbq-button\n kbq-select-matcher\n [color]=\"'contrast-fade'\"\n [kbqStyle]=\"'outline'\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <i kbq-icon=\"kbq-plus_16\"></i>\n </button>\n\n @for (template of filterBar.pipeTemplates; track template) {\n <kbq-option\n #option\n [userSelect]=\"true\"\n [value]=\"template\"\n [showCheckbox]=\"false\"\n (click)=\"addPipeFromTemplate(option)\"\n >\n {{ template.name }}\n </kbq-option>\n }\n </kbq-select>\n `,\n styleUrl: 'pipe-add.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-pipe-add'\n }\n})\nexport class KbqPipeAdd {\n /** KbqFilterBar instance */\n protected readonly filterBar = inject(KbqFilterBar);\n\n /** @docs-private */\n @ViewChild(KbqSelect) select: KbqSelect;\n\n /** Event that is generated after add pipe. */\n @Output() readonly onAddPipe = new EventEmitter<KbqPipeTemplate>();\n\n /** template of filter */\n @Input() filterTemplate: KbqFilter = {\n name: '',\n pipes: [],\n\n readonly: false,\n disabled: false,\n changed: false,\n saved: false\n };\n\n /** already added pipes. Used to open an already added pipe. */\n addedPipes: (string | number)[] = [];\n\n constructor() {\n this.filterBar.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.filterBar?.filter) {\n this.addedPipes = this.filterBar.filter.pipes.map((pipe: KbqPipe) => getId(pipe));\n }\n });\n }\n\n addPipeFromTemplate(option: KbqOption) {\n if (option.selected) {\n this.filterBar.openPipe.next(getId(option.value));\n } else {\n option.select();\n\n if (!this.filterBar.filter) {\n this.filterBar.filter = structuredClone(this.filterTemplate);\n }\n\n this.filterBar.filter.changed = true;\n this.filterBar.filter.pipes.push(\n Object.assign({}, option.value, { values: undefined, valueTemplate: undefined, openOnAdd: true })\n );\n\n this.onAddPipe.next(option.value);\n this.filterBar.filterChange.emit(this.filterBar.filter);\n }\n\n this.select.close();\n }\n\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n compareWith(o1: KbqPipe, o2: string): boolean {\n return getId(o1) === o2;\n }\n}\n","import { AfterContentInit, Directive, inject, Injector, Input, ViewContainerRef } from '@angular/core';\nimport { KBQ_FILTER_BAR_PIPES, KbqPipe } from './filter-bar.types';\nimport { KBQ_PIPE_DATA } from './pipes/base-pipe';\n\n@Directive({\n selector: '[kbqPipe]'\n})\nexport class KbqPipeDirective<T extends KbqPipe> implements AfterContentInit {\n private injector = inject(Injector);\n private pipes = inject(KBQ_FILTER_BAR_PIPES);\n private viewContainerRef = inject(ViewContainerRef);\n\n @Input({ alias: 'kbqPipe' }) pipe: T;\n\n ngAfterContentInit(): void {\n const component = this.pipes.get(this.pipe.type);\n\n if (!component) {\n throw new Error(`Can't find component for this type: ${this.pipe.type}`);\n }\n\n this.viewContainerRef.createComponent(component, { injector: this.getInjector(this.pipe) });\n }\n\n private getInjector(pipe: T): Injector {\n return Injector.create({\n providers: [{ provide: KBQ_PIPE_DATA, useValue: pipe }],\n parent: this.injector\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilterBarButton } from './filter-bar-button';\nimport { kbqFilterBarPipesProvider } from './filter-bar.types';\nimport { KbqFilterBarRefresher } from './filter-refresher';\nimport { KbqFilterReset } from './filter-reset';\nimport { KbqFilterBarSearch } from './filter-search';\nimport { KbqFilters } from './filters';\nimport { KbqPipeAdd } from './pipe-add';\nimport { KbqPipeDirective } from './pipe.directive';\nimport { KbqPipeButton } from './pipes/pipe-button';\nimport { KbqPipeState } from './pipes/pipe-state';\nimport { KbqPipeTitleDirective } from './pipes/pipe-title';\n\nconst COMPONENTS = [\n KbqFilterBar,\n KbqFilters,\n KbqFilterBarRefresher,\n KbqFilterBarButton,\n KbqFilterReset,\n KbqPipeAdd,\n KbqPipeDirective,\n KbqPipeButton,\n KbqFilterBarSearch,\n KbqPipeTitleDirective,\n KbqPipeState\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS,\n providers: [kbqFilterBarPipesProvider()]\n})\nexport class KbqFilterBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i6","this","i8","i4","i7","i5","i3","distinctUntilChanged","debounceTime"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-filter-bar.mjs","sources":["../../../packages/components/filter-bar/pipes/base-pipe.ts","../../../packages/components/filter-bar/pipes/pipe-state.ts","../../../packages/components/filter-bar/pipes/pipe-button.ts","../../../packages/components/filter-bar/pipes/pipe-title.ts","../../../packages/components/filter-bar/pipes/pipe-date.ts","../../../packages/components/filter-bar/pipes/pipe-date.html","../../../packages/components/filter-bar/pipes/pipe-datetime.ts","../../../packages/components/filter-bar/pipes/pipe-datetime.html","../../../packages/components/filter-bar/pipes/pipe-multi-select.ts","../../../packages/components/filter-bar/pipes/pipe-multi-select.html","../../../packages/components/filter-bar/pipes/pipe-multi-tree-select.ts","../../../packages/components/filter-bar/pipes/pipe-multi-tree-select.html","../../../packages/components/filter-bar/pipes/pipe-readonly.ts","../../../packages/components/filter-bar/pipes/pipe-select.ts","../../../packages/components/filter-bar/pipes/pipe-select.html","../../../packages/components/filter-bar/pipes/pipe-text.ts","../../../packages/components/filter-bar/pipes/pipe-text.html","../../../packages/components/filter-bar/pipes/pipe-tree-select.ts","../../../packages/components/filter-bar/pipes/pipe-tree-select.html","../../../packages/components/filter-bar/filter-bar.types.ts","../../../packages/components/filter-bar/filter-reset.ts","../../../packages/components/filter-bar/filter-bar-button.ts","../../../packages/components/filter-bar/filters.ts","../../../packages/components/filter-bar/filters.html","../../../packages/components/filter-bar/filter-bar.ts","../../../packages/components/filter-bar/filter-refresher.ts","../../../packages/components/filter-bar/filter-search.ts","../../../packages/components/filter-bar/pipe-add.ts","../../../packages/components/filter-bar/pipe.directive.ts","../../../packages/components/filter-bar/filter-bar.module.ts","../../../packages/components/filter-bar/koobiq-components-filter-bar.ts"],"sourcesContent":["import {\n afterNextRender,\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n TemplateRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isMac } from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\nimport { delay, filter } from 'rxjs/operators';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqPipeData, KbqPipeTemplate, KbqPipeType } from '../filter-bar.types';\n\n/** Injection Token for providing configuration of filter-bar */\nexport const KBQ_PIPE_DATA = new InjectionToken('KBQ_PIPE_DATA');\n\n/** function to get unique identifier of an element */\nexport function getId(item: KbqPipeTemplate): KbqPipeType | string | number {\n return item?.id ?? item?.name;\n}\n\n@Directive({\n host: {\n class: 'kbq-pipe',\n '[class]': '\"kbq-pipe__\" + data.type',\n '[class.kbq-pipe_empty]': 'isEmpty',\n '[class.kbq-pipe_cleanable]': 'data.cleanable',\n '[class.kbq-pipe_removable]': 'data.removable',\n '[class.kbq-pipe_disabled]': 'data.disabled'\n }\n})\nexport abstract class KbqBasePipe<V> implements AfterViewInit {\n /** changes of state */\n readonly stateChanges = new Subject<void>();\n /** pipe data. Provided from subclass */\n readonly data = inject<KbqPipeData<V>>(KBQ_PIPE_DATA);\n\n /** KbqFilterBar instance\n * @docs-private */\n protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n\n /** values to select from the pipe template */\n protected values;\n /** TemplateRef for selecting an option */\n protected valueTemplate?: TemplateRef<any> | string;\n\n /**\n * Whether the current platform is a Mac.\n *\n * @docs-private\n */\n isMac = false;\n\n /** Data for the pipe.\n * @docs-private */\n $implicit: unknown;\n\n /** Whether the current pipe is empty. Used for apply style modifier */\n get isEmpty(): boolean {\n return this.data.value === null || this.data.value === undefined;\n }\n\n /** Whether the current pipe is removable or cleanable. Used for apply style modifier */\n get showRemoveButton(): boolean {\n return this.data.removable || (this.data.cleanable && !this.isEmpty);\n }\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar?.configuration;\n }\n\n constructor() {\n this.$implicit = this;\n\n this.stateChanges.subscribe(() => {\n this.changeDetectorRef.markForCheck();\n });\n\n this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n\n afterNextRender(() => {\n this.isMac = isMac();\n });\n }\n\n ngAfterViewInit(): void {\n if (this.data.openOnAdd) {\n delete this.data.openOnAdd;\n\n this.open();\n }\n\n this.filterBar?.openPipe.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef)).subscribe((id) => {\n if (getId(this.data) === id) {\n this.open();\n }\n });\n\n if (this.data.openOnReset) {\n this.filterBar?.onResetFilter.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.open();\n });\n }\n }\n\n /** templateRef checker utility */\n isTemplateRef(value: unknown): boolean {\n return value instanceof TemplateRef;\n }\n\n /** updates values for selection and value template */\n updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n const template = templates?.find((template) => getId(template) === getId(this.data));\n\n if (template?.values) {\n this.values = template.values;\n this.valueTemplate = template.valueTemplate;\n }\n };\n\n /** removes pipe from filter-bar and triggers changes */\n onRemove() {\n this.filterBar?.removePipe(this.data);\n\n this.stateChanges.next();\n }\n\n /** clears the pipe and triggers changes */\n onClear() {\n this.data.value = null;\n\n this.stateChanges.next();\n\n this.filterBar?.onClearPipe.next(this.data);\n this.filterBar?.onChangePipe.next(this.data);\n }\n\n /** @docs-private */\n abstract open(): void;\n}\n\n@Directive({\n selector: '[kbqPipeMinWidth]',\n host: {\n '[style.min-width]': 'minWidth'\n }\n})\nexport class KbqPipeMinWidth {\n /** KbqFilterBar instance */\n protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n\n /** @docs-private */\n protected readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /** @docs-private */\n protected minWidth: string;\n /** maximal symbols for apply fit-content to min-width */\n maxSymbolsForFitContent: number = 20;\n\n /** current length of text */\n get textLength(): number {\n return this.elementRef.nativeElement.innerText?.length || 0;\n }\n\n constructor() {\n this.filterBar?.changes.pipe(delay(0)).subscribe(this.update);\n\n afterNextRender({ read: this.update });\n }\n\n update = () => {\n this.minWidth = this.textLength < this.maxSymbolsForFitContent ? 'fit-content' : 'unset';\n this.changeDetectorRef.markForCheck();\n };\n}\n","import { DestroyRef, Directive, inject, Input, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqBasePipe } from './base-pipe';\n\n@Directive({\n selector: '[kbqPipeState]'\n})\nexport class KbqPipeState<T> implements OnInit {\n /** @docs-private */\n private readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n private readonly button = inject(KbqButton);\n /** @docs-private */\n private readonly pipe = inject(KbqBasePipe);\n /** KbqFilterBar instance\n * @docs-private */\n private readonly filterBar = inject(KbqFilterBar);\n\n /** calculates and updates styles of button from pipe state */\n @Input({ alias: 'kbqPipeState' })\n get state(): T | null {\n return this._state;\n }\n\n set state(pipe: T | null) {\n this._state = pipe;\n\n this.updateState();\n }\n\n private _state: T | null = null;\n\n ngOnInit(): void {\n this.filterBar.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateState);\n }\n\n private updateState = () => {\n this.button.kbqStyle = KbqButtonStyles.Outline;\n this.button.color = KbqComponentColors.ContrastFade;\n\n if (!this.pipe.isEmpty) {\n this.button.kbqStyle = KbqButtonStyles.Filled;\n this.button.color = KbqComponentColors.ContrastFade;\n }\n };\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { merge } from 'rxjs';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeState } from './pipe-state';\n\n@Component({\n selector: 'kbq-pipe-button',\n imports: [\n KbqIconModule,\n KbqButtonModule,\n KbqPipeState,\n KbqTooltipTrigger\n ],\n template: `\n <button\n kbqTooltip=\"{{ pipe.data.cleanable ? localeData.clearButtonTooltip : localeData.removeButtonTooltip }}\"\n class=\"kbq-pipe__remove-button\"\n kbq-button\n [disabled]=\"pipe.data.disabled\"\n [kbqPipeState]=\"pipe.data\"\n [kbqTooltipDisabled]=\"pipe.data.disabled\"\n (click)=\"pipe.data.cleanable ? pipe.onClear() : pipe.onRemove()\"\n >\n <i kbq-icon=\"kbq-xmark-s_16\" [color]=\"pipe.data.disabled ? 'empty' : 'contrast'\"></i>\n </button>\n `,\n styleUrl: 'pipe-button.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-pipe-button'\n }\n})\nexport class KbqPipeButton {\n /** KbqPipe instance */\n protected readonly pipe = inject(KbqBasePipe);\n /** KbqFilterBar instance */\n protected readonly filterBar = inject(KbqFilterBar);\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /** enables/disables read-only state */\n @Input({ transform: booleanAttribute }) readonly: boolean = false;\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar?.configuration.pipe;\n }\n\n constructor() {\n merge(this.pipe.stateChanges, this.filterBar.changes)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n","import {\n afterNextRender,\n AfterViewInit,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n QueryList,\n TemplateRef\n} from '@angular/core';\nimport { KBQ_TITLE_TEXT_REF, KbqTitleTextRef } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Observable, Subject, Subscription, throttleTime } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n// todo DS-3672\n@Directive({\n selector: '[kbqPipeTitle]',\n exportAs: 'kbqPipeTitle',\n host: {\n '(mouseenter)': 'handleElementEnter()',\n '(mouseleave)': 'hideTooltip()',\n '(window:resize)': 'resizeStream.next($event)'\n }\n})\nexport class KbqPipeTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {\n private componentInstance = inject<KbqTitleTextRef>(KBQ_TITLE_TEXT_REF, { optional: true, host: true });\n\n get isOverflown(): boolean {\n return this.childContainer.some(({ nativeElement }) => {\n return (\n this.parent?.offsetWidth < nativeElement.scrollWidth ||\n this.parent?.offsetHeight < nativeElement.scrollHeight\n );\n });\n }\n\n @Input({ alias: 'kbqPipeTitle' }) viewValue: TemplateRef<any>;\n\n get parent(): HTMLElement {\n return this.parentContainer?.nativeElement || this.parentContainer;\n }\n\n get child(): HTMLElement {\n return this.childContainer.first.nativeElement || this.childContainer;\n }\n\n readonly resizeStream = new Subject<Event>();\n\n private readonly debounceInterval: number = 100;\n\n private resizeSubscription = Subscription.EMPTY;\n private mutationSubscription = Subscription.EMPTY;\n private focusMonitorSubscription = Subscription.EMPTY;\n\n @ContentChildren('kbqTitleText', { descendants: true })\n private childContainer: QueryList<ElementRef>;\n\n @ContentChild('kbqTitleContainer')\n private parentContainer: ElementRef;\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.listenToMutationObserver();\n });\n }\n\n ngAfterViewInit() {\n this.parentContainer = this.parentContainer || this.componentInstance?.parentTextElement || this.elementRef;\n this.childContainer = this.childContainer || this.componentInstance?.textElement || this.elementRef;\n this.content = this.viewValue;\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.debounceInterval))\n .subscribe(() => (this.disabled = !this.isOverflown));\n\n this.focusMonitorSubscription = this.focusMonitor\n .monitor(this.elementRef)\n .subscribe((origin) => (origin === 'keyboard' ? this.handleElementEnter() : this.hideTooltip()));\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n\n this.resizeSubscription.unsubscribe();\n this.mutationSubscription.unsubscribe();\n this.focusMonitorSubscription.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n handleElementEnter() {\n this.disabled = !this.isOverflown;\n }\n\n hideTooltip() {\n this.disabled = true;\n }\n\n private listenToMutationObserver(): void {\n this.mutationSubscription = this.createMutationObserver()\n .pipe(throttleTime(this.debounceInterval))\n .subscribe(() => {\n this.disabled = !this.isOverflown;\n this.content = this.viewValue;\n });\n }\n\n private createMutationObserver(): Observable<MutationRecord[]> {\n return new Observable((observer) => {\n const mutationObserver = new MutationObserver((mutations) => observer.next(mutations));\n\n mutationObserver.observe(this.parent, {\n characterData: true,\n attributes: false,\n childList: true,\n subtree: true\n });\n\n return () => mutationObserver.disconnect();\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n inject,\n viewChild,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport {\n DateAdapter,\n DateFormatter,\n KbqComponentColors,\n kbqDisableLegacyValidationDirectiveProvider,\n KbqFormattersModule,\n PopUpPlacements\n} from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqListModule, KbqListSelection } from '@koobiq/components/list';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimepickerModule } from '@koobiq/components/timepicker';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { filter } from 'rxjs/operators';\nimport { KbqDateTimeValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-date',\n imports: [\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n KbqDividerModule,\n KbqPopoverModule,\n KbqButtonModule,\n KbqListModule,\n KbqDatepickerModule,\n KbqTimepickerModule,\n KbqPipeState,\n KbqFormattersModule,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n FormsModule\n ],\n templateUrl: 'pipe-date.html',\n styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n kbqDisableLegacyValidationDirectiveProvider(),\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {\n private readonly adapter = inject(DateAdapter);\n private readonly formatter = inject(DateFormatter);\n\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n /** @docs-private */\n protected readonly styles = KbqButtonStyles;\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n /** Whether the current state is list of periods. When false will displayed control for set custom period */\n protected isListMode = true;\n\n /** @docs-private */\n protected formGroup: FormGroup;\n\n /** @docs-private */\n protected showStartCalendar: boolean = false;\n /** @docs-private */\n protected showEndCalendar: boolean = false;\n\n /** formatted value for period */\n get formattedValue(): string {\n if (this.start && this.end) {\n return this.formatter.rangeShortDate(this.start, this.end);\n }\n\n return this.data.value?.name ?? '';\n }\n\n /** Whether the current pipe is disabled. */\n get disabled(): boolean {\n return (\n !this.adapter.isDateInstance(this.formGroup.controls.start.value) ||\n !this.adapter.isDateInstance(this.formGroup.controls.end.value) ||\n this.formGroup.controls.start.invalid\n );\n }\n\n /** parsed start */\n get start(): D {\n return this.adapter.parse(this.data.value?.start, '');\n }\n\n /** default object for start */\n get defaultStart(): D {\n if (this.data.value?.start) {\n return this.adapter.today().plus(this.data.value?.start);\n }\n\n return this.adapter.today();\n }\n\n /** parsed end */\n get end(): D {\n return this.adapter.parse(this.data.value?.end, '');\n }\n\n /** default object for end */\n get defaultEnd(): D {\n if (this.data.value?.start) {\n return this.adapter.today();\n }\n\n return this.adapter.today().plus({ days: 1 });\n }\n\n /** Whether the current pipe is empty. */\n override get isEmpty(): boolean {\n if (this.data.value === null) return true;\n\n if (this.data.value?.name) return false;\n\n return !this.adapter.isDateInstance(this.start) || !this.adapter.isDateInstance(this.end);\n }\n\n /** @docs-private */\n @ViewChild('popover') popover: KbqPopoverTrigger;\n /** @docs-private */\n listSelection = viewChild.required('listSelection', { read: KbqListSelection });\n /** @docs-private */\n returnButton = viewChild.required('returnButton', { read: KbqButton });\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.popover.visibleChange\n .pipe(\n filter((visible) => !visible),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n /** keydown handler\n * @docs-private */\n onKeydown($event: KeyboardEvent) {\n if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApplyPeriod();\n }\n\n if ($event.keyCode === ENTER) {\n $event.preventDefault();\n }\n }\n\n onApplyPeriod() {\n this.data.value = {\n start: this.formGroup.controls.start.value.toISO(),\n end: this.formGroup.controls.end.value.toISO()\n };\n this.stateChanges.next();\n\n this.filterBar?.onChangePipe.next(this.data);\n\n this.popover.hide();\n }\n\n onSelect(item: KbqDateTimeValue) {\n this.data.value = item;\n this.stateChanges.next();\n\n this.filterBar?.onChangePipe.next(this.data);\n\n this.popover.hide();\n }\n\n showPeriod() {\n this.isListMode = false;\n this.showStartCalendar = false;\n this.showEndCalendar = false;\n\n this.initFormGroup();\n\n setTimeout(() => {\n this.popover.updatePosition(true);\n this.returnButton().focus();\n });\n }\n\n showList() {\n this.isListMode = true;\n\n setTimeout(() => this.listSelection().focus());\n this.popover.updatePosition(true);\n }\n\n /** opens popover */\n override open() {\n this.popover.show();\n }\n\n onSelectStartDate(value: D) {\n this.formGroup.controls.start.setValue(value);\n }\n\n onSelectEndDate(value: D) {\n this.formGroup.controls.end.setValue(value);\n }\n\n onFocusStartInput() {\n this.showStartCalendar = true;\n this.showEndCalendar = false;\n\n this.popover.updatePosition(true);\n }\n\n onFocusEndInput() {\n this.showEndCalendar = true;\n this.showStartCalendar = false;\n }\n\n hideCalendars() {\n this.showStartCalendar = false;\n this.showEndCalendar = false;\n }\n\n private initFormGroup() {\n this.formGroup = new FormGroup({\n start: new FormControl(this.start || this.defaultStart),\n end: new FormControl(this.end || this.defaultEnd)\n });\n }\n}\n","<button\n #popover=\"kbqPopover\"\n kbq-button\n kbqPopover\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverSize]=\"'custom'\"\n [kbqPopoverClass]=\"'kbq-pipe-date__popover'\"\n [kbqPopoverContent]=\"content\"\n [kbqPopoverOffset]=\"4\"\n [defaultPaddings]=\"false\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n (kbqPopoverVisibleChange)=\"isListMode = true\"\n>\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!formattedValue\">\n {{ formattedValue }}\n </span>\n</button>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #content>\n @if (isListMode) {\n <div class=\"kbq-date-list\">\n <kbq-list-selection #listSelection [autoSelect]=\"false\" [ngModel]=\"data.value?.name\">\n <kbq-list-option (click)=\"showPeriod()\" (keydown.enter)=\"showPeriod()\">\n {{ localeData.datePipe?.customPeriod }}\n <!-- prevents [kbq-icon] from matching icon slot in kbq-list-option, keeping chevron after label text -->\n <ng-container>\n <i kbq-icon=\"kbq-chevron-right_16\" color=\"contrast-fade\"></i>\n </ng-container>\n </kbq-list-option>\n\n @for (item of values; track item) {\n <kbq-list-option [value]=\"item.name\" (click)=\"onSelect(item)\" (keydown.enter)=\"onSelect(item)\">\n {{ item.name }}\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n } @else {\n <div class=\"kbq-date-period kbq-datepicker__content\" (keydown)=\"onKeydown($event)\">\n <div class=\"kbq-date-period__header\">\n <button\n #returnButton\n kbq-button\n [color]=\"colors.Theme\"\n [kbqStyle]=\"styles.Transparent\"\n (click)=\"showList()\"\n >\n <i kbq-icon=\"kbq-chevron-left_16\"></i>\n {{ localeData.datePipe.backToPeriodSelection }}\n </button>\n </div>\n\n <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodFrom }}</label>\n\n <kbq-form-field class=\"kbq-date-period__date kbq-form__control\" [class.kbq-focused]=\"showStartCalendar\">\n <input\n formControlName=\"start\"\n [kbqCalendar]=\"startDateCalendar\"\n [max]=\"formGroup.controls.end.value\"\n (focusin)=\"onFocusStartInput()\"\n (keydown.tab)=\"hideCalendars()\"\n />\n <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n </kbq-form-field>\n\n <kbq-calendar\n #startDateCalendar\n [class.kbq-calendar_hidden]=\"!showStartCalendar\"\n (selectedChange)=\"onSelectStartDate($event)\"\n />\n\n <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodTo }}</label>\n\n <kbq-form-field class=\"kbq-date-period__date kbq-form__control\" [class.kbq-focused]=\"showEndCalendar\">\n <input\n formControlName=\"end\"\n [kbqCalendar]=\"endDateCalendar\"\n (focusin)=\"onFocusEndInput()\"\n (keydown.tab)=\"hideCalendars()\"\n />\n <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n </kbq-form-field>\n\n @if (formGroup.controls.start.invalid) {\n <kbq-hint class=\"kbq-date-period__hint\" [color]=\"'error'\">\n {{ localeData.datePipe.customPeriodErrorHint }}\n </kbq-hint>\n }\n\n <kbq-calendar\n #endDateCalendar\n [class.kbq-calendar_hidden]=\"!showEndCalendar\"\n (selectedChange)=\"onSelectEndDate($event)\"\n />\n </form>\n\n <div class=\"kbq-date-period__footer\">\n <button\n kbq-button\n [color]=\"'theme'\"\n [disabled]=\"disabled\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"onApplyPeriod()\"\n >\n <span>{{ localeData.pipe.applyButton }}</span>\n &nbsp;\n <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n </button>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ formattedValue }}</div>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n inject,\n viewChild,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport {\n DateAdapter,\n DateFormatter,\n KbqComponentColors,\n kbqDisableLegacyValidationDirectiveProvider,\n KbqFormattersModule,\n PopUpPlacements\n} from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqListModule, KbqListSelection } from '@koobiq/components/list';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimepickerModule } from '@koobiq/components/timepicker';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { filter } from 'rxjs/operators';\nimport { KbqDateTimeValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-datetime',\n imports: [\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n KbqDividerModule,\n KbqPopoverModule,\n KbqButtonModule,\n KbqListModule,\n KbqDatepickerModule,\n KbqTimepickerModule,\n KbqPipeState,\n KbqFormattersModule,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n FormsModule\n ],\n templateUrl: 'pipe-datetime.html',\n styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n kbqDisableLegacyValidationDirectiveProvider(),\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {\n private readonly adapter = inject(DateAdapter);\n private readonly formatter = inject(DateFormatter);\n\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n /** @docs-private */\n protected readonly styles = KbqButtonStyles;\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n /** Whether the current state is list of periods. When false will displayed control for set custom period */\n protected isListMode = true;\n\n /** @docs-private */\n protected formGroup: FormGroup;\n\n /** @docs-private */\n protected showStartCalendar: boolean = false;\n /** @docs-private */\n protected showEndCalendar: boolean = false;\n\n /** formatted value for period */\n get formattedValue(): string {\n if (this.start && this.end) {\n return this.formatter.rangeShortDateTime(this.start, this.end);\n }\n\n return this.data.value?.name ?? '';\n }\n\n /** Whether the current pipe is disabled. */\n get disabled(): boolean {\n return (\n !this.adapter.isDateInstance(this.formGroup.controls.start.value) ||\n !this.adapter.isDateInstance(this.formGroup.controls.end.value) ||\n this.formGroup.controls.start.invalid\n );\n }\n\n /** parsed start */\n get start(): D {\n return this.adapter.parse(this.data.value?.start, '');\n }\n\n /** default object for start */\n get defaultStart(): D {\n if (this.data.value?.start) {\n return this.adapter.today().plus(this.data.value?.start);\n }\n\n return this.adapter.today().startOf('day');\n }\n\n /** parsed end */\n get end(): D {\n return this.adapter.parse(this.data.value?.end, '');\n }\n\n /** default object for end */\n get defaultEnd(): D {\n if (this.data.value?.start) {\n return this.adapter.today();\n }\n\n return this.adapter.today().endOf('day');\n }\n\n /** Whether the current pipe is empty. */\n override get isEmpty(): boolean {\n if (this.data.value === null) return true;\n\n if (this.data.value?.name) return false;\n\n return !this.adapter.isDateInstance(this.start) || !this.adapter.isDateInstance(this.end);\n }\n\n /** @docs-private */\n @ViewChild('popover') popover: KbqPopoverTrigger;\n /** @docs-private */\n listSelection = viewChild.required('listSelection', { read: KbqListSelection });\n /** @docs-private */\n returnButton = viewChild.required('returnButton', { read: KbqButton });\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.popover.visibleChange\n .pipe(\n filter((visible) => !visible),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n /** keydown handler\n * @docs-private */\n onKeydown($event: KeyboardEvent) {\n if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApplyPeriod();\n }\n\n if ($event.keyCode === ENTER) {\n $event.preventDefault();\n }\n }\n\n /** @docs-private */\n onApplyPeriod() {\n this.data.value = {\n start: this.formGroup.controls.start.value.toISO(),\n end: this.formGroup.controls.end.value.toISO()\n };\n this.stateChanges.next();\n\n this.filterBar?.onChangePipe.next(this.data);\n\n this.popover.hide();\n }\n\n onSelect(item: KbqDateTimeValue) {\n this.data.value = item;\n this.stateChanges.next();\n\n this.filterBar?.onChangePipe.next(this.data);\n\n this.popover.hide();\n }\n\n showPeriod() {\n this.isListMode = false;\n this.showStartCalendar = false;\n this.showEndCalendar = false;\n\n this.initFormGroup();\n\n setTimeout(() => {\n this.popover.updatePosition(true);\n this.returnButton().focus();\n });\n }\n\n showList() {\n this.isListMode = true;\n\n setTimeout(() => this.listSelection().focus());\n this.popover.updatePosition(true);\n }\n\n /** opens popover */\n override open() {\n this.popover.show();\n }\n\n onSelectStartDate(value: D) {\n this.formGroup.controls.start.setValue(value);\n }\n\n onSelectEndDate(value: D) {\n this.formGroup.controls.end.setValue(value);\n }\n\n onFocusStartInput() {\n this.showStartCalendar = true;\n this.showEndCalendar = false;\n\n this.popover.updatePosition(true);\n }\n\n onFocusEndInput() {\n this.showEndCalendar = true;\n this.showStartCalendar = false;\n }\n\n hideCalendars() {\n this.showStartCalendar = false;\n this.showEndCalendar = false;\n }\n\n private initFormGroup() {\n this.formGroup = new FormGroup({\n start: new FormControl(this.start || this.defaultStart),\n end: new FormControl(this.end || this.defaultEnd)\n });\n }\n}\n","<button\n #popover=\"kbqPopover\"\n kbq-button\n kbqPopover\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverSize]=\"'custom'\"\n [kbqPopoverClass]=\"'kbq-pipe-date__popover'\"\n [kbqPopoverContent]=\"content\"\n [kbqPopoverOffset]=\"4\"\n [defaultPaddings]=\"false\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n (kbqPopoverVisibleChange)=\"isListMode = true\"\n>\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!formattedValue\">\n {{ formattedValue }}\n </span>\n</button>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #content>\n @if (isListMode) {\n <div class=\"kbq-date-list\">\n <kbq-list-selection #listSelection [autoSelect]=\"false\" [ngModel]=\"data.value?.name\">\n <kbq-list-option (click)=\"showPeriod()\" (keydown.enter)=\"showPeriod()\">\n {{ localeData.datePipe?.customPeriod }}\n <!-- prevents [kbq-icon] from matching icon slot in kbq-list-option, keeping chevron after label text -->\n <ng-container>\n <i kbq-icon=\"kbq-chevron-right_16\" color=\"contrast-fade\"></i>\n </ng-container>\n </kbq-list-option>\n\n @for (item of values; track item) {\n <kbq-list-option [value]=\"item.name\" (click)=\"onSelect(item)\" (keydown.enter)=\"onSelect(item)\">\n {{ item.name }}\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n } @else {\n <div class=\"kbq-date-period kbq-datepicker__content\" (keydown)=\"onKeydown($event)\">\n <div class=\"kbq-date-period__header\">\n <button\n #returnButton\n kbq-button\n [color]=\"colors.Theme\"\n [kbqStyle]=\"styles.Transparent\"\n (click)=\"showList()\"\n >\n <i kbq-icon=\"kbq-chevron-left_16\"></i>\n {{ localeData.datePipe.backToPeriodSelection }}\n </button>\n </div>\n\n <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodFrom }}</label>\n\n <div class=\"kbq-form__row_with-time kbq-form__control\">\n <kbq-form-field class=\"kbq-date-period__date\" [class.kbq-focused]=\"showStartCalendar\">\n <input\n formControlName=\"start\"\n [kbqCalendar]=\"startDateCalendar\"\n [max]=\"formGroup.controls.end.value\"\n (focusin)=\"onFocusStartInput()\"\n (keydown.tab)=\"hideCalendars()\"\n />\n <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n </kbq-form-field>\n\n <kbq-form-field class=\"kbq-date-period__time\">\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix></i>\n <input formControlName=\"start\" kbqTimepicker (focusin)=\"hideCalendars()\" />\n </kbq-form-field>\n </div>\n\n <kbq-calendar\n #startDateCalendar\n [class.kbq-calendar_hidden]=\"!showStartCalendar\"\n (selectedChange)=\"onSelectStartDate($event)\"\n />\n\n <label class=\"kbq-form__label\">{{ localeData.datePipe.customPeriodTo }}</label>\n\n <div class=\"kbq-form__row_with-time kbq-form__control\">\n <kbq-form-field class=\"kbq-date-period__date\" [class.kbq-focused]=\"showEndCalendar\">\n <input\n formControlName=\"end\"\n [kbqCalendar]=\"endDateCalendar\"\n (focusin)=\"onFocusEndInput()\"\n (keydown.tab)=\"hideCalendars()\"\n />\n <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n </kbq-form-field>\n\n <kbq-form-field class=\"kbq-date-period__time\">\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix></i>\n <input formControlName=\"end\" kbqTimepicker (focusin)=\"hideCalendars()\" />\n </kbq-form-field>\n </div>\n\n @if (formGroup.controls.start.invalid) {\n <kbq-hint class=\"kbq-date-period__hint\" [color]=\"'error'\">\n {{ localeData.datePipe.customPeriodErrorHint }}\n </kbq-hint>\n }\n\n <kbq-calendar\n #endDateCalendar\n [class.kbq-calendar_hidden]=\"!showEndCalendar\"\n (selectedChange)=\"onSelectEndDate($event)\"\n />\n </form>\n\n <div class=\"kbq-date-period__footer\">\n <button\n kbq-button\n [color]=\"'theme'\"\n [disabled]=\"disabled\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"onApplyPeriod()\"\n >\n <span>{{ localeData.pipe.applyButton }}</span>\n &nbsp;\n <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n </button>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ formattedValue }}</div>\n</ng-template>\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnInit,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOption, KbqPseudoCheckboxModule, KbqPseudoCheckboxState } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { KbqSelectValue } from '../filter-bar.types';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-multi-select',\n imports: [\n FormsModule,\n KbqButtonModule,\n KbqDividerModule,\n KbqSelectModule,\n NgClass,\n KbqPipeState,\n KbqBadgeModule,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n NgTemplateOutlet,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n ReactiveFormsModule,\n AsyncPipe,\n KbqPseudoCheckboxModule\n ],\n templateUrl: 'pipe-multi-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-multiselect.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements AfterViewInit, OnInit {\n /** control for search options */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search options */\n filteredOptions: Observable<any[]>;\n\n /** @docs-private */\n @ViewChild(KbqSelect) select: KbqSelect;\n\n /** @docs-private */\n @ViewChildren(KbqOption) options: QueryList<KbqOption>;\n\n /** selected value */\n get selected() {\n if (this.selectedAllEqualsSelectedNothing) {\n return this.internalSelected;\n }\n\n return this.data.value;\n }\n\n /** Whether the current pipe is empty. */\n get isEmpty(): boolean {\n return (\n super.isEmpty ||\n (Array.isArray(this.data.value) && !this.data.value.length) ||\n (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected)\n );\n }\n\n /** state for checkbox 'select all'. */\n get checkboxState(): KbqPseudoCheckboxState {\n if (!this.options) return 'unchecked';\n\n if (this.select.selectionModel.selected.length === this.values.length) {\n return 'checked';\n } else if (!this.select.selectionModel.selected.length) {\n return 'unchecked';\n }\n\n return 'indeterminate';\n }\n\n /** true if all visible options selected */\n get allVisibleOptionsSelected(): boolean {\n return this.visibleOptions?.every((option) => option.selected);\n }\n\n /** true if all options selected */\n get allOptionsSelected(): boolean {\n return this.select?.triggerValues.length === this.values?.length;\n }\n\n get selectedAllEqualsSelectedNothing(): boolean {\n return this.data.selectedAllEqualsSelectedNothing ?? this.filterBar!.selectedAllEqualsSelectedNothing;\n }\n\n private get visibleOptions(): KbqOption[] {\n return this.options?.filter((option) => option.selectable);\n }\n\n private selectionAllInProgress = false;\n private internalSelected: KbqSelectValue[] | null;\n\n /** @docs-private */\n ngOnInit(): void {\n this.updateInternalSelected();\n\n this.filteredOptions = merge(this.filterBar!.internalTemplatesChanges, this.searchControl.valueChanges).pipe(\n map(this.getFilteredOptions),\n takeUntilDestroyed(this.destroyRef)\n );\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.select.closedStream\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n /** @docs-private */\n onSelect(item: KbqSelectValue[]) {\n if (this.selectionAllInProgress) return;\n\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.data.value = [];\n } else {\n this.data.value = item;\n }\n\n this.emitChangePipeEvent();\n\n this.stateChanges.next();\n }\n\n /** @docs-private */\n onClear() {\n this.data.value = [];\n\n this.updateInternalSelected();\n\n this.filterBar?.onClearPipe.emit(this.data);\n this.filterBar?.onChangePipe.emit(this.data);\n this.stateChanges.next();\n }\n\n /** @docs-private */\n toggleSelectionAllByEnterKey() {\n if (this.data.selectAll && this.select.keyManager.activeItemIndex === 0) {\n this.toggleSelectionAll();\n }\n }\n\n /** @docs-private */\n toggleSelectionAll(emitEvent: boolean = true) {\n this.selectionAllInProgress = true;\n\n if (this.allVisibleOptionsSelected) {\n this.visibleOptions.forEach((option) => option.deselect());\n } else {\n this.visibleOptions.forEach((option) => option.select());\n }\n\n this.selectionAllInProgress = false;\n\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.data.value = [];\n } else {\n this.data.value = [...this.select.value];\n }\n\n if (emitEvent) {\n this.emitChangePipeEvent();\n }\n\n this.stateChanges.next();\n }\n\n /** Comparator of selected options */\n compareByValue = (o1: any, o2: any): boolean => o1?.id === o2?.id;\n\n /** handler for select all options in select */\n selectAllHandler = (event: KeyboardEvent) => {\n event.preventDefault();\n\n this.toggleSelectionAll();\n };\n\n /** @docs-private */\n onClose() {\n if (this.allOptionsSelected) {\n this.updateInternalSelected();\n }\n }\n\n /** opens select */\n override open() {\n this.select.open();\n }\n\n private updateInternalSelected() {\n if (this.selectedAllEqualsSelectedNothing) {\n this.internalSelected = this.data.value?.slice() || [];\n }\n }\n\n private emitChangePipeEvent() {\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.filterBar?.onChangePipe.emit({ ...this.data, value: [] });\n } else {\n this.filterBar?.onChangePipe.emit(this.data);\n }\n }\n\n private getFilteredOptions = (): KbqSelectValue[] => {\n return this.searchControl.value\n ? this.values.filter((item) => item.name.toLowerCase().includes(this.searchControl.value.toLowerCase()))\n : this.values;\n };\n}\n","<kbq-select\n #select=\"kbqSelect\"\n multiple\n [compareWith]=\"compareByValue\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [panelClass]=\"'kbq-pipe-multiselect__panel'\"\n [selectAllHandler]=\"selectAllHandler\"\n [tabIndex]=\"-1\"\n [value]=\"selected\"\n (closed)=\"onClose()\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText class=\"kbq-pipe__name\">{{ data.name }}</span>\n @if (select.triggerValues.length === 1) {\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n {{ select.triggerValue }}\n </span>\n } @else if (\n select.triggerValues.length > 1 &&\n (!selectedAllEqualsSelectedNothing || (selectedAllEqualsSelectedNothing && !allOptionsSelected))\n ) {\n <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n {{ select.triggerValues.length }}\n </kbq-badge>\n }\n </button>\n @if (data.search) {\n <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.search.placeholder }}\"\n autocomplete=\"off\"\n kbqInput\n type=\"text\"\n [formControl]=\"searchControl\"\n (keydown.enter)=\"toggleSelectionAllByEnterKey()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n }\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n @if (data.selectAll && !select.isEmptySearchResult) {\n <kbq-option\n [class.kbq-selected]=\"allVisibleOptionsSelected\"\n [selectable]=\"false\"\n (click)=\"toggleSelectionAll()\"\n (keydown.enter)=\"toggleSelectionAll()\"\n >\n <kbq-pseudo-checkbox [state]=\"checkboxState\" />\n {{ localeData.pipe.selectAll }}\n </kbq-option>\n }\n\n @for (item of filteredOptions | async; track item) {\n <kbq-option [value]=\"item\">\n @if (isTemplateRef(valueTemplate)) {\n <ng-container\n [ngTemplateOutlet]=\"$any(valueTemplate)\"\n [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n />\n } @else {\n {{ item.name }}\n }\n </kbq-option>\n }\n</kbq-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { NgClass, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqHighlightModule, KbqPseudoCheckboxModule, KbqPseudoCheckboxState } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport {\n FlatTreeControl,\n KbqTreeFlatDataSource,\n KbqTreeFlattener,\n KbqTreeModule,\n kbqTreeSelectAllValue,\n KbqTreeSelection\n} from '@koobiq/components/tree';\nimport { KbqTreeSelect, KbqTreeSelectModule } from '@koobiq/components/tree-select';\nimport { Observable } from 'rxjs';\nimport { KbqPipeTemplate, KbqSelectValue, KbqTreeSelectFlatNode, KbqTreeSelectNode } from '../filter-bar.types';\nimport { getId, KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-multi-tree-select',\n imports: [\n KbqButtonModule,\n KbqDividerModule,\n NgClass,\n KbqPipeState,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n KbqPipeMinWidth,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n ReactiveFormsModule,\n KbqHighlightModule,\n KbqTreeModule,\n KbqTreeSelectModule,\n NgIf,\n FormsModule,\n KbqBadgeModule,\n KbqPseudoCheckboxModule\n ],\n templateUrl: 'pipe-multi-tree-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-multi-tree-select.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeMultiTreeSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements OnInit, AfterViewInit {\n /** control for search options */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search options */\n filteredOptions: Observable<any[]>;\n\n treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;\n treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n template: any;\n\n /** @docs-private */\n @ViewChild(KbqTreeSelect) select: KbqTreeSelect;\n\n /** @docs-private */\n @ViewChild(KbqTreeSelection) tree: KbqTreeSelection;\n\n /** selected value */\n get selected() {\n if (this.selectedAllEqualsSelectedNothing) {\n return this.internalSelected;\n }\n\n return this.data.value;\n }\n\n /** Whether the current pipe is empty. */\n get isEmpty(): boolean {\n return (\n super.isEmpty ||\n (Array.isArray(this.data.value) && !this.data.value.length) ||\n (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected)\n );\n }\n\n get selectAllCheckboxState(): KbqPseudoCheckboxState {\n if (!this.select) return 'unchecked';\n\n if (this.allOptionsSelected) {\n return 'checked';\n } else if (this.select.selected.length > 0) {\n return 'indeterminate';\n }\n\n return 'unchecked';\n }\n\n get numberOfSelectedLeaves(): number {\n return this.select.selected.filter(({ value }) => value !== kbqTreeSelectAllValue).length;\n }\n\n /** true if all options selected */\n get allOptionsSelected(): boolean {\n const dataNodesLength = this.treeControl?.dataNodes?.length;\n const dataNodesForSelect = this.data.selectAll ? dataNodesLength - 1 : dataNodesLength;\n\n return this.select?.triggerValues?.length === dataNodesForSelect;\n }\n\n get selectedAllEqualsSelectedNothing(): boolean {\n return this.data.selectedAllEqualsSelectedNothing ?? this.filterBar!.selectedAllEqualsSelectedNothing;\n }\n\n /** true if all visible options selected */\n get allVisibleOptionsSelected(): boolean {\n return this.tree.renderedOptions\n .filter((option) => option.value !== kbqTreeSelectAllValue)\n .every((option) => option.selected);\n }\n\n private internalSelected: KbqSelectValue[] | null;\n\n constructor() {\n super();\n\n this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);\n\n this.treeControl = new FlatTreeControl<KbqTreeSelectFlatNode>(\n this.getLevel,\n this.isExpandable,\n this.getValue,\n this.getViewValue\n );\n\n this.dataSource = new KbqTreeFlatDataSource(this.treeControl, this.treeFlattener);\n\n this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n }\n\n ngOnInit(): void {\n this.updateInternalSelected();\n\n this.searchControl.valueChanges.subscribe((value) => this.treeControl.filterNodes(value));\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.select.closedStream\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n isNodeHasChild(_: number, nodeData) {\n return nodeData.expandable;\n }\n\n isNodeSelectAll(_: number, nodeData) {\n return nodeData.value === kbqTreeSelectAllValue;\n }\n\n onSelect({ value: option }) {\n if (!option) return;\n\n if (this.tree.treeControl.isExpandable(option.data)) {\n this.tree.setStateChildren(option, !option.selected);\n }\n\n this.toggleParents(option.data.parent);\n\n setTimeout(() => {\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.data.value = [];\n } else {\n this.data.value = this.select.selectedValues;\n }\n\n this.emitChangePipeEvent();\n\n this.stateChanges.next();\n });\n }\n\n searchKeydownHandler() {\n if (this.data.selectAll && this.tree.keyManager.activeItemIndex === 0) {\n this.toggleSelectAllNode();\n }\n }\n\n toggleSelectAllNode(emitEvent: boolean = true) {\n if (this.select.search?.ngControl.value) {\n const renderedOptions = this.tree.renderedOptions.filter(({ value }) => value !== kbqTreeSelectAllValue);\n\n if (this.allVisibleOptionsSelected) {\n renderedOptions.forEach((option) => option.setSelected(false));\n } else {\n renderedOptions.forEach((option) => option.setSelected(true));\n }\n } else {\n if (this.allOptionsSelected) {\n this.tree.selectionModel.clear();\n } else {\n const [, ...dataNodesForSelect] = this.treeControl.dataNodes;\n\n // @todo DS-3827\n this.tree.selectionModel.select(...(dataNodesForSelect as any));\n }\n }\n\n setTimeout(() => {\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.data.value = [];\n } else {\n this.data.value = [...this.select.selectedValues];\n }\n\n if (emitEvent) {\n this.emitChangePipeEvent();\n }\n\n this.stateChanges.next();\n });\n }\n\n /** updates values for selection and value template */\n override updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n const template = templates?.find((template) => getId(template) === getId(this.data));\n\n if (template?.values) {\n this.values = template.values;\n this.valueTemplate = template.valueTemplate;\n\n const values = [...(template.values as KbqTreeSelectNode[])];\n\n if (this.data.selectAll) {\n values.unshift({\n name: this.localeData.pipe.selectAll,\n value: kbqTreeSelectAllValue,\n children: null\n });\n }\n\n this.dataSource.data = values;\n }\n };\n\n /** opens select */\n override open() {\n setTimeout(() => this.select.open());\n }\n\n override onClear() {\n super.onClear();\n\n this.updateInternalSelected();\n }\n\n /** @docs-private */\n onOpen() {\n this.treeControl.expandAll();\n }\n\n /** @docs-private */\n onClose() {\n if (this.allOptionsSelected) {\n this.updateInternalSelected();\n }\n }\n\n /** handler for select all options in select */\n selectAllHandler = (event: KeyboardEvent) => {\n event.preventDefault();\n\n this.toggleSelectAllNode();\n };\n\n private updateInternalSelected() {\n if (this.selectedAllEqualsSelectedNothing) {\n this.internalSelected = this.data.value?.slice() || [];\n }\n }\n\n private emitChangePipeEvent() {\n if (this.selectedAllEqualsSelectedNothing && this.allOptionsSelected) {\n this.filterBar?.onChangePipe.emit({ ...this.data, value: [] });\n } else {\n this.filterBar?.onChangePipe.emit(this.data);\n }\n }\n\n private toggleParents(parent) {\n if (!parent) {\n return;\n }\n\n const descendants = this.treeControl.getDescendants(parent);\n const isParentSelected = this.select.selectionModel.selected.includes(parent);\n\n if (!isParentSelected && descendants.every((d: any) => this.select.selectionModel.selected.includes(d))) {\n this.select.selectionModel.select(parent);\n this.toggleParents(parent.parent);\n } else if (isParentSelected) {\n this.select.selectionModel.deselect(parent);\n this.toggleParents(parent.parent);\n }\n }\n\n private transformer = (node: KbqTreeSelectNode, level: number, parent: any) => {\n const flatNode = new KbqTreeSelectFlatNode();\n\n flatNode.name = node.name;\n flatNode.value = node.value;\n flatNode.parent = parent;\n flatNode.level = level;\n flatNode.expandable = !!node.children;\n\n return flatNode;\n };\n\n private getLevel = (node: KbqTreeSelectFlatNode) => {\n return node.level;\n };\n\n private isExpandable = (node: KbqTreeSelectFlatNode) => {\n return node.expandable;\n };\n\n private getChildren = (node: KbqTreeSelectNode): KbqTreeSelectNode[] | null => {\n return node.children;\n };\n\n private getValue = (node: KbqTreeSelectFlatNode): unknown => {\n return node.value;\n };\n\n private getViewValue = (node: KbqTreeSelectFlatNode): string => {\n return `${node.name}`;\n };\n}\n","<kbq-tree-select\n #select\n [autoSelect]=\"false\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [multiple]=\"true\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [ngModel]=\"selected\"\n [panelClass]=\"'kbq-pipe-multi-tree-select__panel'\"\n [selectAllHandler]=\"selectAllHandler\"\n [tabIndex]=\"-1\"\n (closed)=\"onClose()\"\n (opened)=\"onOpen()\"\n (selectionChange)=\"onSelect($event)\"\n>\n <!-- eslint-disable-next-line @angular-eslint/template/prefer-control-flow -->\n <kbq-form-field *ngIf=\"data.search\" kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.search.placeholder }}\"\n autocomplete=\"off\"\n kbqInput\n type=\"text\"\n [formControl]=\"searchControl\"\n (keydown.enter)=\"searchKeydownHandler()\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n <kbq-cleaner #kbqSelectCleaner />\n\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n\n @if (select.selected?.length === 1) {\n <span #kbqTitleText class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!select.triggerValue\">\n {{ select.selected[0].name }}\n </span>\n } @else if (\n select.selected?.length > 1 &&\n (!selectedAllEqualsSelectedNothing || (selectedAllEqualsSelectedNothing && !allOptionsSelected))\n ) {\n <kbq-badge [badgeColor]=\"'contrast'\" [compact]=\"true\">\n {{ numberOfSelectedLeaves }}\n </kbq-badge>\n }\n </button>\n\n <kbq-tree-selection [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <kbq-tree-option\n *kbqTreeNodeDef=\"let node; when: isNodeSelectAll\"\n kbqTreeNodePadding\n [class.kbq-selected]=\"allOptionsSelected\"\n [selectable]=\"false\"\n (click)=\"toggleSelectAllNode()\"\n >\n <kbq-pseudo-checkbox [state]=\"selectAllCheckboxState\" />\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n\n <kbq-tree-option *kbqTreeNodeDef=\"let node\" kbqTreeNodePadding [checkboxThirdState]=\"true\">\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n\n <kbq-tree-option\n *kbqTreeNodeDef=\"let node; when: isNodeHasChild\"\n kbqTreeNodePadding\n [checkboxThirdState]=\"true\"\n >\n <kbq-tree-node-toggle [node]=\"node\" />\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n </kbq-tree-selection>\n</kbq-tree-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-readonly',\n imports: [\n KbqButtonModule,\n KbqTitleModule,\n KbqPipeState,\n KbqPipeTitleDirective,\n KbqPipeMinWidth,\n KbqPipeButton\n ],\n template: `\n <button kbq-button [disabled]=\"data.disabled\" [kbqPipeState]=\"data\" [kbqPipeTitle]=\"pipeTooltip\">\n <span #kbqTitleText class=\"kbq-pipe__name\" kbqPipeMinWidth>{{ data.name }}</span>\n <span #kbqTitleText class=\"kbq-pipe__value\" kbqPipeMinWidth [class.kbq-pipe__value_empty]=\"!data.value\">\n {{ data.value }}\n </span>\n </button>\n\n @if (showRemoveButton) {\n <kbq-pipe-button />\n }\n\n <ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ data.value }}</div>\n </ng-template>\n `,\n styleUrls: ['base-pipe.scss', 'pipe-readonly.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeReadonlyComponent extends KbqBasePipe<string | null> {\n open(): void {}\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { merge, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { KbqSelectValue } from '../filter-bar.types';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-select',\n imports: [\n KbqButtonModule,\n KbqDividerModule,\n KbqSelectModule,\n NgClass,\n KbqPipeState,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n KbqPipeMinWidth,\n NgTemplateOutlet,\n KbqFormFieldModule,\n KbqIcon,\n KbqInputModule,\n ReactiveFormsModule,\n AsyncPipe\n ],\n templateUrl: 'pipe-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-select.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue> implements AfterViewInit, OnInit {\n /** control for search options */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search options */\n filteredOptions: Observable<any[]>;\n\n /** @docs-private */\n @ViewChild(KbqSelect) select: KbqSelect;\n\n /** selected value */\n get selected() {\n return this.data.value;\n }\n\n /** Whether the current pipe is empty. */\n get isEmpty(): boolean {\n return !this.data.value;\n }\n\n /** @docs-private */\n ngOnInit(): void {\n this.filteredOptions = merge(\n of(this.values),\n this.searchControl.valueChanges.pipe(map((value) => this.getFilteredOptions(value)))\n );\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.select.closedStream\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n onSelect(item: KbqSelectValue) {\n this.data.value = item;\n this.filterBar?.onChangePipe.emit(this.data);\n this.stateChanges.next();\n }\n\n /** Comparator of selected options */\n compareByValue = (o1: any, o2: any): boolean => o1 && o2 && o1.id === o2.id;\n\n /** opens select */\n override open() {\n this.select.open();\n }\n\n private getFilteredOptions(value: string): KbqSelectValue[] {\n return value\n ? this.values.filter((item) => item.name.toLowerCase().includes(value.toLowerCase()))\n : this.values;\n }\n}\n","<kbq-select\n #select\n [compareWith]=\"compareByValue\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [panelClass]=\"'kbq-pipe-select__panel'\"\n [tabIndex]=\"-1\"\n [value]=\"selected\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span\n #kbqTitleText\n kbqPipeMinWidth\n class=\"kbq-pipe__value\"\n [class.kbq-pipe__value_empty]=\"!select.triggerValue\"\n >\n {{ select.triggerValue }}\n </span>\n </button>\n\n @if (data.search) {\n <kbq-form-field kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.search.placeholder }}\"\n kbqInput\n type=\"text\"\n [formControl]=\"searchControl\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n }\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n @for (item of filteredOptions | async; track item) {\n <kbq-option [value]=\"item\">\n @if (isTemplateRef(valueTemplate)) {\n <ng-container\n [ngTemplateOutlet]=\"$any(valueTemplate)\"\n [ngTemplateOutletContext]=\"{ $implicit, option: item }\"\n />\n } @else {\n {{ item.name }}\n }\n </kbq-option>\n }\n</kbq-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { NgClass } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ENTER } from '@koobiq/cdk/keycodes';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { PopUpPlacements } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTextareaModule } from '@koobiq/components/textarea';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-text',\n imports: [\n KbqButtonModule,\n KbqFormFieldModule,\n KbqPopoverModule,\n KbqInputModule,\n KbqDividerModule,\n FormsModule,\n KbqTextareaModule,\n NgClass,\n KbqPipeButton,\n ReactiveFormsModule,\n KbqTitleModule,\n KbqPipeState,\n KbqPipeTitleDirective,\n KbqPipeMinWidth\n ],\n templateUrl: 'pipe-text.html',\n styleUrls: ['base-pipe.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeTextComponent extends KbqBasePipe<string | null> implements AfterViewInit, OnInit {\n readonly placements = PopUpPlacements;\n\n /** @docs-private */\n @ViewChild(KbqPopoverTrigger) popover: KbqPopoverTrigger;\n\n /** Whether the current pipe is disabled. */\n get disabled(): boolean {\n return !this.control.value;\n }\n\n /** textarea control */\n control = new FormControl<typeof this.data.value>('');\n\n ngOnInit(): void {\n this.control.setValue(this.data.value);\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.popover.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible) => {\n this.stateChanges.next();\n\n if (!visible) {\n this.filterBar?.onClosePipe.next(this.data);\n }\n });\n }\n\n onApply() {\n this.data.value = this.control.value;\n this.stateChanges.next();\n\n this.control.markAsPristine();\n this.popover.hide();\n\n this.filterBar?.onChangePipe.next(this.data);\n }\n\n /** @docs-private */\n onKeydown($event: KeyboardEvent) {\n if (!this.disabled && ($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApply();\n }\n }\n\n /** clears the pipe and triggers changes */\n override onClear() {\n super.onClear();\n\n this.control.reset();\n }\n\n /** opens popover */\n override open() {\n this.popover.show();\n }\n}\n","<button\n kbq-button\n kbqPopover\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverSize]=\"'custom'\"\n [kbqPopoverClass]=\"'kbq-pipe__popover'\"\n [kbqPopoverContent]=\"content\"\n [kbqPopoverFooter]=\"footer\"\n [kbqPopoverOffset]=\"4\"\n [defaultPaddings]=\"false\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [ngClass]=\"{ 'kbq-active': popover?.isOpen }\"\n>\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__value\" [class.kbq-pipe__value_empty]=\"!data.value\">\n {{ data.value }}\n </span>\n</button>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #content>\n <kbq-form-field (keydown)=\"onKeydown($event)\">\n <textarea kbqTextarea rows=\"1\" [formControl]=\"control\" [freeRowsHeight]=\"0\" [maxRows]=\"5\"></textarea>\n </kbq-form-field>\n</ng-template>\n\n<ng-template #footer>\n <button kbq-button [color]=\"'theme'\" [disabled]=\"disabled\" [kbqStyle]=\"'transparent'\" (click)=\"onApply()\">\n <span>{{ localeData.pipe.applyButton }}</span>\n &nbsp;\n <span class=\"kbq-button_hot-key\">{{ isMac ? '⌘ ' : 'Ctrl + ' }}Enter</span>\n </button>\n</ng-template>\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ data.value }}</div>\n</ng-template>\n","import { NgClass, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqHighlightModule } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport {\n FlatTreeControl,\n KbqTreeFlatDataSource,\n KbqTreeFlattener,\n KbqTreeModule,\n KbqTreeOption\n} from '@koobiq/components/tree';\nimport { KbqTreeSelect, KbqTreeSelectModule } from '@koobiq/components/tree-select';\nimport { Observable } from 'rxjs';\nimport { KbqPipeTemplate, KbqSelectValue, KbqTreeSelectFlatNode, KbqTreeSelectNode } from '../filter-bar.types';\nimport { getId, KbqBasePipe, KbqPipeMinWidth } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n selector: 'kbq-pipe-tree-select',\n imports: [\n KbqButtonModule,\n KbqDividerModule,\n NgClass,\n KbqPipeState,\n KbqPipeButton,\n KbqTitleModule,\n KbqPipeTitleDirective,\n KbqPipeMinWidth,\n KbqFormFieldModule,\n KbqIconModule,\n KbqInputModule,\n ReactiveFormsModule,\n KbqHighlightModule,\n KbqTreeModule,\n KbqTreeSelectModule,\n NgIf,\n FormsModule\n ],\n templateUrl: 'pipe-tree-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-tree-select.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ]\n})\nexport class KbqPipeTreeSelectComponent extends KbqBasePipe<KbqSelectValue> implements OnInit, AfterViewInit {\n /** control for search options */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search options */\n filteredOptions: Observable<any[]>;\n\n treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;\n treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;\n\n template: any;\n\n /** @docs-private */\n @ViewChild(KbqTreeSelect) select: KbqTreeSelect;\n\n /** selected value */\n get selected() {\n return this.data.value;\n }\n\n /** Whether the current pipe is empty. */\n get isEmpty(): boolean {\n return !this.data.value;\n }\n\n constructor() {\n super();\n\n this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);\n\n this.treeControl = new FlatTreeControl<KbqTreeSelectFlatNode>(\n this.getLevel,\n this.isExpandable,\n this.getValue,\n this.getViewValue\n );\n\n this.dataSource = new KbqTreeFlatDataSource(this.treeControl, this.treeFlattener);\n\n this.filterBar?.internalTemplatesChanges.pipe(takeUntilDestroyed()).subscribe(this.updateTemplates);\n }\n\n ngOnInit(): void {\n this.searchControl.valueChanges.subscribe((value) => this.treeControl.filterNodes(value));\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.select.closedStream\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.filterBar?.onClosePipe.next(this.data));\n }\n\n hasChild(_: number, nodeData) {\n return nodeData.expandable;\n }\n\n onSelect(item: KbqTreeOption) {\n this.data.value = item.value;\n this.filterBar?.onChangePipe.emit(this.data);\n this.select.close();\n setTimeout(() => this.select.focus());\n this.stateChanges.next();\n }\n\n /** updates values for selection and value template */\n override updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n const template = templates?.find((template) => getId(template) === getId(this.data));\n\n if (template?.values) {\n this.values = template.values;\n this.valueTemplate = template.valueTemplate;\n\n this.dataSource.data = template.values as KbqTreeSelectNode[];\n }\n };\n\n /** opens select */\n override open() {\n setTimeout(() => this.select.open());\n }\n\n onOpen() {\n this.treeControl.expandAll();\n }\n\n private transformer = (node: KbqTreeSelectNode, level: number, parent: any) => {\n const flatNode = new KbqTreeSelectFlatNode();\n\n flatNode.name = node.name;\n flatNode.value = node.value;\n flatNode.parent = parent;\n flatNode.level = level;\n flatNode.expandable = !!node.children;\n\n return flatNode;\n };\n\n private getLevel = (node: KbqTreeSelectFlatNode) => {\n return node.level;\n };\n\n private isExpandable = (node: KbqTreeSelectFlatNode) => {\n return node.expandable;\n };\n\n private getChildren = (node: KbqTreeSelectNode): KbqTreeSelectNode[] | null => {\n return node.children;\n };\n\n private getValue = (node: KbqTreeSelectFlatNode): unknown => {\n return node.value;\n };\n\n private getViewValue = (node: KbqTreeSelectFlatNode): string => {\n return `${node.name}`;\n };\n}\n","<kbq-tree-select\n #select\n [autoSelect]=\"false\"\n [disabled]=\"data.disabled\"\n [kbqPipeTitle]=\"pipeTooltip\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n [ngModel]=\"selected\"\n [panelClass]=\"'kbq-pipe-tree-select__panel'\"\n [tabIndex]=\"-1\"\n (opened)=\"onOpen()\"\n (selectionChange)=\"onSelect($event.value)\"\n>\n <!-- eslint-disable-next-line @angular-eslint/template/prefer-control-flow -->\n <kbq-form-field *ngIf=\"data.search\" kbqFormFieldWithoutBorders kbqSelectSearch>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n <input\n placeholder=\"{{ localeData.search.placeholder }}\"\n autocomplete=\"off\"\n kbqInput\n type=\"text\"\n [formControl]=\"searchControl\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <div kbq-select-search-empty-result>{{ localeData.pipe.emptySearchResult }}</div>\n\n <kbq-cleaner #kbqSelectCleaner />\n\n <button\n kbq-button\n kbq-select-matcher\n [disabled]=\"data.disabled\"\n [kbqPipeState]=\"data\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <span #kbqTitleText kbqPipeMinWidth class=\"kbq-pipe__name\">{{ data.name }}</span>\n <span\n #kbqTitleText\n kbqPipeMinWidth\n class=\"kbq-pipe__value\"\n [class.kbq-pipe__value_empty]=\"!select.triggerValue\"\n >\n {{ select.triggerValue }}\n </span>\n </button>\n\n <kbq-tree-selection [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <kbq-tree-option *kbqTreeNodeDef=\"let node\" kbqTreeNodePadding>\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n\n <kbq-tree-option *kbqTreeNodeDef=\"let node; when: hasChild\" kbqTreeNodePadding [selectable]=\"false\">\n <kbq-tree-node-toggle [node]=\"node\" />\n <span [innerHTML]=\"treeControl.getViewValue(node) | mcHighlight: treeControl.filterValue.value\"></span>\n </kbq-tree-option>\n </kbq-tree-selection>\n</kbq-tree-select>\n\n@if (showRemoveButton) {\n <kbq-pipe-button />\n}\n\n<ng-template #pipeTooltip>\n <div class=\"kbq-pipe-tooltip__name kbq-text-compact\">{{ data.name }}</div>\n <div class=\"kbq-pipe-tooltip__value kbq-text-compact\">{{ select.triggerValue }}</div>\n</ng-template>\n","import { InjectionToken, Provider, TemplateRef } from '@angular/core';\nimport { ruRULocaleData } from '@koobiq/components/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqPipeDateComponent } from './pipes/pipe-date';\nimport { KbqPipeDatetimeComponent } from './pipes/pipe-datetime';\nimport { KbqPipeMultiSelectComponent } from './pipes/pipe-multi-select';\nimport { KbqPipeMultiTreeSelectComponent } from './pipes/pipe-multi-tree-select';\nimport { KbqPipeReadonlyComponent } from './pipes/pipe-readonly';\nimport { KbqPipeSelectComponent } from './pipes/pipe-select';\nimport { KbqPipeTextComponent } from './pipes/pipe-text';\nimport { KbqPipeTreeSelectComponent } from './pipes/pipe-tree-select';\n\n/**default configuration of filter-bar */\nexport const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION = ruRULocaleData.filterBar;\n\n/** Injection Token for providing configuration of filter-bar */\nexport const KBQ_FILTER_BAR_CONFIGURATION = new InjectionToken('KbqFilterBarConfiguration');\n\n/** Injection Token for providing pipes in filter-bar */\nexport const KBQ_FILTER_BAR_PIPES = new InjectionToken<any>('kbq-filter-bar-pipes');\n\n/** Utility provider for `KBQ_FILTER_BAR_PIPES`. */\nexport const kbqFilterBarPipesProvider = (): Provider => {\n return {\n provide: KBQ_FILTER_BAR_PIPES,\n useValue: new Map<string, unknown>(defaultFilterBarPipes)\n };\n};\n\n/** list of pipe types available out of the box */\nexport enum KbqPipeTypes {\n ReadOnly = 'readonly',\n Text = 'text',\n Select = 'select',\n TreeSelect = 'tree-select',\n MultiSelect = 'multiselect',\n MultiTreeSelect = 'multi-tree-select',\n Date = 'date',\n Datetime = 'datetime'\n}\n\nexport type KbqPipeType = `${KbqPipeTypes}` | string;\n\n/** list of pipes available out of the box. */\nexport const defaultFilterBarPipes: [string, unknown][] = [\n [KbqPipeTypes.ReadOnly, KbqPipeReadonlyComponent],\n [KbqPipeTypes.Text, KbqPipeTextComponent],\n [KbqPipeTypes.Select, KbqPipeSelectComponent],\n [KbqPipeTypes.TreeSelect, KbqPipeTreeSelectComponent],\n [KbqPipeTypes.MultiSelect, KbqPipeMultiSelectComponent],\n [KbqPipeTypes.MultiTreeSelect, KbqPipeMultiTreeSelectComponent],\n [KbqPipeTypes.Date, KbqPipeDateComponent],\n [KbqPipeTypes.Datetime, KbqPipeDatetimeComponent]\n];\n\nexport interface KbqDateTimeValue {\n name?: string;\n start?: string;\n end?: string;\n}\n\nexport interface KbqSelectValue {\n name: string;\n value: unknown;\n}\n\nexport interface KbqFilter {\n name: string;\n\n pipes: KbqPipe[];\n\n readonly: boolean;\n disabled: boolean;\n changed: boolean;\n // this is business logic state (like a flag)\n saved: boolean;\n}\n\nexport interface KbqPipe {\n name: string;\n id?: string | number;\n type: KbqPipeType;\n value: unknown | null;\n\n search?: boolean;\n selectAll?: boolean;\n\n openOnAdd?: boolean;\n openOnReset?: boolean;\n\n /**\n * This is special logic that unselect all items when all selected because \"all selected = nothing selected\".\n * Default is true\n * */\n selectedAllEqualsSelectedNothing?: boolean;\n\n /** @deprecated use cleanable = false and removable = false instead */\n required?: boolean;\n cleanable: boolean;\n removable: boolean;\n disabled: boolean;\n}\n\nexport interface KbqPipeData<V> extends KbqPipe {\n value: V | null;\n}\n\nexport interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {\n values?: unknown[];\n valueTemplate?: TemplateRef<any> | string;\n}\n\nexport interface KbqSaveFilterError {\n text?: string;\n nameAlreadyExists?: boolean;\n}\n\n/** saving statuses for KbqSaveFilterEvent */\nexport enum KbqSaveFilterStatuses {\n OnlyChanges = 'onlyChanges',\n NewName = 'newName',\n NewFilter = 'newFilter'\n}\n\nexport interface KbqSaveFilterEvent {\n filter: KbqFilter;\n filterBar: KbqFilterBar;\n status?: KbqSaveFilterStatuses;\n}\n\n/** Flattened node */\nexport class KbqTreeSelectFlatNode {\n name: string;\n value: unknown;\n level: number;\n expandable: boolean;\n parent?: KbqTreeSelectFlatNode;\n}\n\nexport interface KbqTreeSelectNode {\n children: KbqTreeSelectNode[] | null;\n name: string;\n value: unknown;\n}\n\n/**\n * Build the file structure tree. The `value` is the Json object, or a sub-tree of a Json object.\n * The return value is the list of extends `KbqTreeSelectNode`.\n */\nexport function kbqBuildTree<T extends KbqTreeSelectNode>(value: any, level: number): T[] {\n const data: T[] = [];\n\n for (const [k, v] of Object.entries(value)) {\n data.push({\n name: k.toString(),\n value: v,\n children: typeof v === 'object' && v && !v['value'] ? kbqBuildTree(v, level + 1) : null\n } as T);\n }\n\n return data;\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, inject, Output } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilter } from './filter-bar.types';\n\n@Component({\n selector: 'kbq-filter-reset',\n imports: [KbqButtonModule],\n template: `\n <button kbq-button [color]=\"'theme'\" [kbqStyle]=\"'transparent'\" (click)=\"resetFilter()\">\n <ng-content>{{ localeData }}</ng-content>\n </button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-filter-reset'\n }\n})\nexport class KbqFilterReset {\n /** KbqFilterBar instance */\n private readonly filterBar = inject(KbqFilterBar);\n\n /** Event that is generated whenever the user reset a filter. */\n @Output() readonly onResetFilter = new EventEmitter<KbqFilter | null>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar.configuration.reset.buttonName;\n }\n\n protected resetFilter() {\n this.onResetFilter.emit(this.filterBar.filter!);\n\n this.filterBar.changes.next();\n this.filterBar.onResetFilter.next(true);\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButton, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilters } from './filters';\n\n@Directive({\n selector: '[kbqFilterBarButton]',\n host: {\n '(click)': 'saveFocusedElement()',\n '(keydown)': 'saveFocusedElement()'\n }\n})\nexport class KbqFilterBarButton {\n private readonly button = inject(KbqButton);\n /** KbqFilterBar instance */\n private readonly filterBar = inject(KbqFilterBar);\n /** KbqFilters instance */\n protected readonly filters = inject(KbqFilters);\n\n constructor() {\n this.filterBar.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.button.kbqStyle = KbqButtonStyles.Outline;\n this.button.color = KbqComponentColors.ContrastFade;\n\n if (this.filterBar.filter?.changed || this.filterBar.filter?.saved) {\n this.button.kbqStyle = 'changed-filter';\n this.button.color = KbqComponentColors.Empty;\n }\n });\n }\n\n /** @docs-private */\n saveFocusedElement() {\n this.filters.saveFocusedElement(this.button);\n }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms';\nimport { KbqAlertModule } from '@koobiq/components/alert';\nimport { KbqButton, KbqButtonModule, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors, KbqFormsModule, PopUpPlacements, PopUpSizes } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule, KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqInputModule } from '@koobiq/components/input';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { merge, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilterBarButton } from './filter-bar-button';\nimport { KbqFilter, KbqSaveFilterError, KbqSaveFilterEvent, KbqSaveFilterStatuses } from './filter-bar.types';\n\n@Component({\n selector: 'kbq-filters',\n imports: [\n ReactiveFormsModule,\n KbqButtonModule,\n KbqDropdownModule,\n KbqDividerModule,\n KbqIcon,\n KbqTitleModule,\n KbqFormFieldModule,\n KbqInputModule,\n NgClass,\n KbqFilterBarButton,\n AsyncPipe,\n KbqTooltipTrigger,\n KbqPopoverModule,\n FormsModule,\n KbqFormsModule,\n KbqAlertModule\n ],\n templateUrl: 'filters.html',\n styleUrls: ['filters.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'kbqFilters',\n host: {\n class: 'kbq-filters'\n }\n})\nexport class KbqFilters implements OnInit {\n /** @docs-private */\n protected readonly elementRef = inject(ElementRef);\n /** @docs-private */\n protected readonly destroyRef = inject(DestroyRef);\n /** @docs-private */\n protected readonly focusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected readonly placements = PopUpPlacements;\n /** @docs-private */\n protected readonly styles = KbqButtonStyles;\n /** @docs-private */\n protected readonly colors = KbqComponentColors;\n\n /** KbqFilterBar instance */\n protected readonly filterBar = inject(KbqFilterBar);\n\n /** @docs-private */\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /** @docs-private */\n @ViewChild('mainButton') protected mainButton: KbqButton;\n /** @docs-private */\n @ViewChild('saveNewFilterButton') protected saveNewFilterButton: KbqButton;\n /** @docs-private */\n @ViewChild('filterActionsButton') protected filterActionsButton: KbqButton;\n\n /** @docs-private */\n @ViewChild(KbqPopoverTrigger) protected popover: KbqPopoverTrigger;\n /** @docs-private */\n @ViewChild(KbqDropdownTrigger) protected dropdown: KbqDropdownTrigger;\n /** @docs-private */\n @ViewChild('filterActionsButton') protected filterActionsDropdown: KbqDropdownTrigger;\n\n @ViewChild('search') private search: ElementRef;\n @ViewChild('newFilterName') private newFilterName: ElementRef;\n @ViewChild('saveFilterButton') private saveFilterButton: KbqButton;\n\n /** control for search filter */\n searchControl: UntypedFormControl = new UntypedFormControl();\n /** filtered by search filters */\n filteredOptions: Observable<KbqFilter[]>;\n\n /** @docs-private */\n popoverSize = PopUpSizes.Medium;\n /** @docs-private */\n popoverOffset: number = 4;\n\n /** new filter name for saving */\n filterName: FormControl<string | null>;\n\n /** true if saving a new filter, false if saving changes in filter */\n saveNewFilter: boolean;\n\n showFilterSavingError: boolean = false;\n filterSavingErrorText: string;\n\n isSaving: boolean = false;\n\n @Input() filters: KbqFilter[];\n\n /** Event that is generated whenever the user selects a filter. */\n @Output() readonly onSelectFilter = new EventEmitter<KbqFilter>();\n /** Event that is generated whenever the user save a filter. */\n @Output() readonly onSave = new EventEmitter<KbqSaveFilterEvent>();\n /** Event that is generated whenever the user change a filter. */\n @Output() readonly onChangeFilter = new EventEmitter<KbqSaveFilterEvent>();\n /** Event that is generated whenever the user saves a filter as new.\n * @deprecated use onSave with status = newFilter. */\n @Output() readonly onSaveAsNew = new EventEmitter<KbqSaveFilterEvent>();\n /** Event that is generated whenever the user remove a filter. */\n @Output() readonly onRemoveFilter = new EventEmitter<KbqFilter>();\n /** Event that is generated whenever the user reset a filter changes. */\n @Output() readonly onResetFilterChanges = new EventEmitter<KbqFilter | null>();\n\n /** header of popover. Depends on the mode */\n get popoverHeader(): string {\n return this.saveNewFilter ? this.localeData.saveAsNew : this.localeData.saveChanges;\n }\n\n /** Component state. true if opened dropdown or popup */\n get opened(): boolean {\n return this.popover?.isOpen || this.dropdown?.opened;\n }\n\n /** Component state. true if opened dropdown or popup of filterActions */\n get filterActionsOpened(): boolean {\n return this.popover?.isOpen || this.filterActionsDropdown?.opened;\n }\n\n /** Selected filter */\n get filter(): KbqFilter | null {\n return this.filterBar.filter;\n }\n\n /** Component state. True if 'filters' input contains no elements. */\n get isEmpty(): boolean {\n return this.filters.length === 0;\n }\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar.configuration.filters;\n }\n\n /** Current focus origin state.\n * @docs-private */\n get focusOrigin(): FocusOrigin {\n return this._focusOrigin;\n }\n\n private _focusOrigin: FocusOrigin = null;\n\n private focusedElementBeforeOpen: KbqButton | null;\n\n constructor() {\n this.filterBar.changes.subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n ngOnInit(): void {\n this.filteredOptions = merge(\n of(this.filters),\n this.searchControl.valueChanges.pipe(map((value) => this.getFilteredOptions(value)))\n );\n\n this.focusMonitor\n .monitor(this.elementRef, true)\n .pipe(\n filter((origin) => !!origin),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((origin) => (this._focusOrigin = origin));\n }\n\n /** @docs-private */\n focusedElementBeforeIs(button: KbqButton): boolean {\n return this.focusedElementBeforeOpen === button;\n }\n\n selectFilter(filter: KbqFilter) {\n this.filterBar.internalFilterChanges.next(structuredClone(filter));\n\n this.onSelectFilter.next(filter);\n }\n\n saveChanges() {\n if (!this.filterBar.filter) return;\n\n this.filterBar.filter.saved = true;\n this.filterBar.filter.changed = false;\n\n this.filterBar.internalFilterChanges.next(this.filterBar.filter);\n\n this.onSave.emit({\n filter: this.filterBar.filter,\n filterBar: this.filterBar,\n status: KbqSaveFilterStatuses.OnlyChanges\n });\n }\n\n saveAsNew(event?: Event) {\n if (this.filterName.invalid) return;\n\n const name = this.filterName.value || '';\n\n // @todo default filter\n const filter = structuredClone<KbqFilter>(this.filter as KbqFilter) || { pipes: [] };\n\n filter.name = name;\n filter.saved = true;\n filter.changed = false;\n\n this.isSaving = true;\n this.popover.preventClose = true;\n this.filterName.disable();\n\n if (this.saveNewFilter) {\n this.onSaveAsNew.emit({ filter, filterBar: this.filterBar });\n this.onSave.emit({ filter, filterBar: this.filterBar, status: KbqSaveFilterStatuses.NewFilter });\n } else {\n this.onSave.emit({ filter, filterBar: this.filterBar, status: KbqSaveFilterStatuses.NewName });\n }\n\n event?.preventDefault();\n }\n\n showError(error?: KbqSaveFilterError) {\n if (error?.nameAlreadyExists) {\n this.filterName.setErrors({ filterNameAlreadyExist: true });\n }\n\n this.showFilterSavingError = true;\n\n this.filterSavingErrorText = error?.text ?? this.filterBar.configuration.filters.errorHint;\n }\n\n restoreFocus() {\n if (this.focusedElementBeforeOpen && !this.focusedElementBeforeOpen.disabled) {\n this.focusMonitor.focusVia(this.focusedElementBeforeOpen.elementRef, this.focusOrigin);\n this.focusedElementBeforeOpen = null;\n }\n }\n\n preparePopover() {\n this.filterName = new FormControl<string>(this.filter?.name || '', Validators.required);\n\n this.filterName.valueChanges.pipe(distinctUntilChanged()).subscribe(() => (this.showFilterSavingError = false));\n\n this.popover.show();\n\n merge(...this.popover.defaultClosingActions())\n .pipe(\n filter(() => !this.isSaving),\n takeUntilDestroyed(this.popover.instanceDestroyRef)\n )\n .subscribe(() => this.closePopover(false));\n\n this.popover.visibleChange\n .pipe(\n filter((state) => !state),\n takeUntilDestroyed(this.popover.instanceDestroyRef)\n )\n .subscribe(this.closePopover);\n\n setTimeout(() => {\n this.newFilterName.nativeElement.focus();\n this.filterName.setErrors(null);\n });\n }\n\n openSaveAsNewFilterPopover() {\n this.saveNewFilter = true;\n\n this.preparePopover();\n }\n\n openChangeFilterNamePopover() {\n this.saveNewFilter = false;\n\n this.preparePopover();\n }\n\n /** @docs-private */\n saveFocusedElement(button?: KbqButton) {\n this.focusedElementBeforeOpen = button || null;\n }\n\n closePopover = (restoreFocus: boolean = true) => {\n this.popover.hide();\n\n if (restoreFocus) this.restoreFocus();\n\n setTimeout(() => this.changeDetectorRef.detectChanges());\n\n this.showFilterSavingError = false;\n };\n\n /** @docs-private */\n stopEventPropagation(event: Event) {\n event.stopPropagation();\n }\n\n /** @docs-private */\n searchKeydownHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.closePopover();\n } else {\n this.stopEventPropagation(event);\n }\n }\n\n /** @docs-private */\n onDropdownOpen() {\n this.searchControl.setValue(null);\n setTimeout(() => this.search.nativeElement.focus());\n }\n\n resetFilterChanges() {\n this.filterBar.resetFilterChangedState();\n\n this.onResetFilterChanges.emit(this.filter!);\n }\n\n removeFilter() {\n this.onRemoveFilter.next(this.filter!);\n\n setTimeout(() => this.focusMonitor.focusVia(this.mainButton.elementRef, this.focusOrigin), 0);\n }\n\n /** Hide the popup and restore focus.\n * Use this method in the onSave, onSaveAsNew, or onChangeFilter events after the data has been successfully saved. */\n filterSavedSuccessfully() {\n this.isSaving = false;\n this.popover.preventClose = false;\n\n this.popover.hide();\n setTimeout(() => this.restoreFocus(), 0);\n\n this.changeDetectorRef.markForCheck();\n }\n\n /** Shows an error. Use this method in the onSave, onSaveAsNew, or onChangeFilter events if saving data failed. */\n filterSavedUnsuccessfully(error?: KbqSaveFilterError) {\n this.isSaving = false;\n this.popover.preventClose = false;\n\n this.showError(error);\n this.filterName.enable();\n setTimeout(() => this.saveFilterButton.focus());\n\n this.changeDetectorRef.markForCheck();\n }\n\n private getFilteredOptions(value): KbqFilter[] {\n const searchFilter = value && value.new ? value.value : value;\n\n return searchFilter\n ? this.filters.filter((filter) => filter.name.toLowerCase().includes(searchFilter.toLowerCase()))\n : this.filters;\n }\n}\n","<button\n #mainButton\n kbq-button\n kbq-title\n kbqFilterBarButton\n kbqPopover\n [kbqDropdownTriggerFor]=\"savedFilters\"\n [kbqPopoverArrow]=\"false\"\n [kbqPopoverOffset]=\"popoverOffset\"\n [kbqPopoverClass]=\"'kbq-filters__save-as-new-filter-popover'\"\n [kbqPopoverContent]=\"saveAsNewPopoverContent\"\n [kbqPopoverFooter]=\"saveAsNewPopoverFooter\"\n [kbqPopoverHeader]=\"saveAsNewPopoverHeader\"\n [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqTrigger]=\"'manual'\"\n [disabled]=\"isSaving\"\n [class.kbq-active]=\"focusedElementBeforeIs(mainButton) && opened\"\n (dropdownClosed)=\"searchControl.setValue('')\"\n (dropdownOpened)=\"onDropdownOpen()\"\n>\n <span #kbqTitleText class=\"kbq-filters__filter-name\">\n @if (filter?.name) {\n {{ filter!.name }}\n } @else {\n <ng-content>\n <i kbq-icon=\"kbq-list_16\"></i>\n {{ localeData.defaultName }}\n </ng-content>\n }\n </span>\n</button>\n\n@if (filterBar.isChanged && !filterBar.isSaved) {\n <button\n #saveNewFilterButton\n kbqTooltip=\"{{ localeData.saveNewFilterTooltip }}\"\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [class.kbq-active]=\"focusedElementBeforeIs(saveNewFilterButton) && opened\"\n [color]=\"colors.Empty\"\n [disabled]=\"isSaving\"\n (click)=\"openSaveAsNewFilterPopover()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n </button>\n}\n\n@if (filterBar.isSaved) {\n <button\n #filterActionsButton\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n [kbqDropdownTriggerFor]=\"filterActions\"\n [disabled]=\"isSaving\"\n [class.kbq-active]=\"focusedElementBeforeIs(filterActionsButton) && filterActionsOpened\"\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n >\n <i kbq-icon=\"kbq-ellipsis-vertical_16\"></i>\n </button>\n\n <i kbq-icon=\"kbq-chevron-right-s_16\" class=\"kbq-filter-bar__arrow\" [color]=\"'theme'\"></i>\n} @else {\n <kbq-divider class=\"kbq-filter-bar__separator\" [vertical]=\"true\" />\n}\n\n<kbq-dropdown #savedFilters=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n <div [style.display]=\"isEmpty ? 'none' : 'initial'\">\n <kbq-form-field kbqFormFieldWithoutBorders>\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n <input\n #search\n placeholder=\"{{ localeData.searchPlaceholder }}\"\n autocomplete=\"off\"\n kbqInput\n [formControl]=\"searchControl\"\n (click)=\"stopEventPropagation($event)\"\n (keydown)=\"searchKeydownHandler($event)\"\n />\n <kbq-cleaner />\n </kbq-form-field>\n\n <kbq-divider />\n\n @for (filter of filteredOptions | async; track filter) {\n <button\n kbq-dropdown-item\n kbq-title\n [class.kbq-selected]=\"filterBar.filter?.name === filter.name\"\n (click)=\"selectFilter(filter)\"\n >\n {{ filter.name }}\n </button>\n } @empty {\n <button kbq-dropdown-item [disabled]=\"true\">\n {{ localeData.searchEmptyResult }}\n </button>\n }\n\n <kbq-divider />\n </div>\n\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ localeData.saveAsNewFilter }}\n </button>\n</kbq-dropdown>\n\n<kbq-dropdown #filterActions=\"kbqDropdown\" [class]=\"'kbq-filters__dropdown'\">\n @if (filterBar.isSavedAndChanged && !filterBar.isReadOnly) {\n <button\n kbq-dropdown-item\n [ngClass]=\"{ 'kbq-button_changed-saved-filter': filterBar.isSavedAndChanged }\"\n (click)=\"saveChanges()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n {{ localeData.saveChanges }}\n @if (filterBar.isSavedAndChanged) {\n <i kbq-icon=\"kbq-circle-xs_16\" class=\"kbq-icon-button kbq-warning layout-margin-left-xs\"></i>\n }\n </button>\n }\n <button kbq-dropdown-item (click)=\"openSaveAsNewFilterPopover()\">\n <i kbq-icon=\"kbq-plus_16\"></i>\n {{ localeData.saveAsNew }}\n </button>\n\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"openChangeFilterNamePopover()\">\n <i kbq-icon=\"kbq-pencil_16\"></i>\n {{ localeData.change }}\n </button>\n }\n\n @if (filterBar.isSavedAndChanged || !filterBar.isReadOnly) {\n <kbq-divider />\n }\n\n @if (filterBar.isSavedAndChanged) {\n <button kbq-dropdown-item (click)=\"resetFilterChanges()\">\n <i kbq-icon=\"kbq-circle-xmark_16\"></i>\n {{ localeData.resetChanges }}\n </button>\n }\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"removeFilter()\">\n <i kbq-icon=\"kbq-trash_16\"></i>\n {{ localeData.remove }}\n </button>\n }\n</kbq-dropdown>\n\n<ng-template #saveAsNewPopoverHeader>{{ popoverHeader }}</ng-template>\n\n<ng-template #saveAsNewPopoverContent>\n @if (showFilterSavingError) {\n <kbq-alert class=\"layout-margin-bottom-m\" [alertColor]=\"'error'\" [alertStyle]=\"'colored'\" [compact]=\"true\">\n {{ filterSavingErrorText }}\n </kbq-alert>\n }\n <div class=\"kbq-form-vertical\">\n <div class=\"kbq-form__row\">\n <label class=\"kbq-form__label\">{{ localeData.name }}</label>\n\n <kbq-form-field class=\"kbq-form__control\">\n <input\n #newFilterName\n kbqInput\n type=\"text\"\n [formControl]=\"filterName\"\n (keydown.enter)=\"saveAsNew($event)\"\n />\n\n @if (filterName.hasError('filterNameAlreadyExist')) {\n <kbq-error>{{ localeData.error }}</kbq-error>\n }\n </kbq-form-field>\n </div>\n </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n <button\n #saveFilterButton\n kbq-button\n class=\"layout-margin-right-l\"\n [class.kbq-progress]=\"isSaving\"\n [disabled]=\"isSaving\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'filled'\"\n (click)=\"saveAsNew()\"\n >\n {{ localeData.saveButton }}\n </button>\n <button\n kbq-button\n [color]=\"'contrast-fade'\"\n [kbqStyle]=\"'filled'\"\n [disabled]=\"isSaving\"\n (click)=\"closePopover(true)\"\n >\n {{ localeData.cancelButton }}\n </button>\n</ng-template>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n inject,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KBQ_LOCALE_SERVICE } from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { BehaviorSubject, merge } from 'rxjs';\nimport {\n KBQ_FILTER_BAR_CONFIGURATION,\n KBQ_FILTER_BAR_DEFAULT_CONFIGURATION,\n KbqFilter,\n KbqPipe,\n KbqPipeTemplate\n} from './filter-bar.types';\nimport { KbqFilterReset } from './filter-reset';\nimport { KbqFilters } from './filters';\n\n@Component({\n selector: 'kbq-filter-bar, [kbq-filter-bar]',\n imports: [KbqDividerModule],\n template: `\n <div class=\"kbq-filter-bar__left\">\n <ng-content select=\"kbq-filters\" />\n\n <ng-content />\n\n <ng-content select=\"kbq-pipe-add\" />\n\n <ng-content select=\"kbq-filter-reset\" />\n </div>\n\n <div class=\"kbq-filter-bar__right\">\n <ng-content select=\"kbq-filter-search, [kbq-filter-search], kbq-search-expandable\" />\n\n <ng-content select=\"kbq-filter-refresher, [kbq-filter-refresher]\" />\n </div>\n `,\n styleUrls: ['filter-bar.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-filter-bar'\n }\n})\nexport class KbqFilterBar {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n readonly externalConfiguration = inject(KBQ_FILTER_BAR_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** @docs-private */\n @ContentChild(KbqFilters) filters: KbqFilters;\n /** @docs-private */\n @ContentChild(KbqFilterReset) filterReset: KbqFilterReset;\n\n /**\n * This is special logic that unselect all items when all selected because \"all selected = nothing selected\".\n * Default is true\n * */\n @Input({ transform: booleanAttribute }) selectedAllEqualsSelectedNothing: boolean = true;\n\n /** Filter that is currently selected */\n @Input()\n get filter(): KbqFilter | null {\n return this._filter;\n }\n\n set filter(value: KbqFilter | null) {\n if (this._filter === value) return;\n\n this._filter = value;\n\n this.changes.next();\n }\n\n private _filter: KbqFilter | null;\n\n /** An array of templates that are used when adding a pipe. Also contains lists of options to select (values). */\n @Input()\n get pipeTemplates(): KbqPipeTemplate[] {\n return this._templates;\n }\n\n set pipeTemplates(value: KbqPipeTemplate[]) {\n this._templates = value;\n\n this.internalTemplatesChanges.next(this._templates);\n }\n\n private _templates: KbqPipeTemplate[] = [];\n /**\n * Event that emits whenever the raw value of the filter changes. This is here primarily\n * to facilitate the two-way binding for the `filter` input.\n * @docs-private\n */\n @Output() readonly filterChange = new EventEmitter<KbqFilter | null>();\n /** Event that emits whenever the value of the pipe changes. */\n @Output() readonly onChangePipe = new EventEmitter<KbqPipe>();\n /** Event that emits whenever the pipe deleted. */\n @Output() readonly onRemovePipe = new EventEmitter<KbqPipe>();\n /** Event that emits whenever the pipe cleared. */\n @Output() readonly onClearPipe = new EventEmitter<KbqPipe>();\n /** Event that emits whenever the select or multiselect pipe closed. */\n @Output() readonly onClosePipe = new EventEmitter<KbqPipe>();\n\n /** Whether the current filter is saved and changed */\n get isSavedAndChanged(): boolean {\n return this.isSaved && this.isChanged;\n }\n\n /** Whether the current filter is saved */\n get isSaved(): boolean {\n return !!this.filter?.saved;\n }\n\n /** Whether the current filter is changed */\n get isChanged(): boolean {\n return !!this.filter?.changed;\n }\n\n /** Whether the current filter is readonly */\n get isReadOnly(): boolean {\n return !!this.filter?.readonly;\n }\n\n /** Whether the current filter is disabled */\n get isDisabled(): boolean {\n return !!this.filter?.disabled;\n }\n\n private savedFilter: KbqFilter | null = null;\n\n /** Event that emits whenever the filter is reset. */\n readonly onResetFilter = new BehaviorSubject<boolean>(false);\n /** all changes */\n readonly changes = new BehaviorSubject<void>(undefined);\n /** internal filter changes */\n readonly internalFilterChanges = new BehaviorSubject<KbqFilter | null>(null);\n /** internal changes in templates */\n readonly internalTemplatesChanges = new BehaviorSubject<KbqPipeTemplate[] | null>(null);\n /** this subject need for opens pipe after adding\n * @docs-private */\n readonly openPipe = new BehaviorSubject<string | number | null>(null);\n\n constructor() {\n this.internalFilterChanges.pipe(takeUntilDestroyed()).subscribe((filter) => {\n this._filter = filter;\n\n this.filterChange.emit(this.filter);\n });\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n\n merge(this.onChangePipe, this.onRemovePipe)\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n if (this.filter) {\n this.filter.changed = true;\n this.filterChange.emit(this.filter);\n }\n });\n\n merge(this.filterChange, this.onChangePipe, this.onRemovePipe, this.internalFilterChanges)\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n this.changes.next();\n this.changeDetectorRef.markForCheck();\n });\n }\n\n /** Remove pipe from current filter and emit event */\n removePipe(pipe: KbqPipe) {\n this.filter?.pipes.splice(this.filter?.pipes.indexOf(pipe), 1);\n\n this.onRemovePipe.next(pipe);\n this.changes.next();\n }\n\n /** Save current state of filter */\n saveFilterState(filter?: KbqFilter) {\n this.savedFilter = structuredClone(filter ?? this.filter);\n }\n\n /** Restore previously saved filter state */\n restoreFilterState(filter?: KbqFilter) {\n this.filter = structuredClone(filter ?? this.savedFilter);\n }\n\n /** Set the filter state \"changed\" to false */\n resetFilterChangedState() {\n this.filter!.changed = false;\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('filterBar');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_FILTER_BAR_DEFAULT_CONFIGURATION;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\n\n@Component({\n selector: 'kbq-filter-refresher, [kbq-filter-refresher]',\n imports: [\n KbqButtonModule,\n KbqIconModule\n ],\n template: `\n <button kbq-button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n <i kbq-icon=\"kbq-arrow-rotate-right_16\"></i>\n </button>\n <button kbq-button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\">\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n </button>\n `,\n styleUrls: ['filter-refresher.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-filter-refresher'\n }\n})\nexport class KbqFilterBarRefresher {}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n input,\n numberAttribute,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqInput, KbqInputModule } from '@koobiq/components/input';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { debounceTime, distinctUntilChanged } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { KbqFilterBar } from './filter-bar';\n\nexport const defaultOnSearchTimeout = 0;\n\n/** @deprecated Will be removed in next major release. Use `kbq-search-expandable` instead. */\n@Component({\n selector: 'kbq-filter-search, [kbq-filter-search]',\n imports: [\n KbqDividerModule,\n KbqButtonModule,\n KbqToolTipModule,\n KbqIconModule,\n KbqFormFieldModule,\n KbqInputModule,\n ReactiveFormsModule\n ],\n template: `\n <button\n kbq-button\n [kbqTooltip]=\"resolvedTooltip\"\n [class.kbq-filter_hidden]=\"isSearchActive\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"openSearch()\"\n >\n <i kbq-icon=\"kbq-magnifying-glass_16\"></i>\n </button>\n\n <kbq-form-field [class.kbq-filter_hidden]=\"!isSearchActive\">\n <i kbq-icon=\"kbq-magnifying-glass_16\" kbqPrefix></i>\n\n <input\n autocomplete=\"off\"\n kbqInput\n [placeholder]=\"resolvedPlaceholder\"\n [formControl]=\"searchControl\"\n (blur)=\"onBlur()\"\n (keydown.escape)=\"onEscape()\"\n (keydown.enter)=\"onEnter()\"\n />\n\n <kbq-cleaner (click)=\"onClear()\" />\n </kbq-form-field>\n `,\n styleUrl: 'filter-search.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-filter-search'\n }\n})\nexport class KbqFilterBarSearch implements AfterViewInit {\n /** KbqFilterBar instance */\n private readonly filterBar = inject(KbqFilterBar);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n @ViewChild(KbqInput) private input: KbqInput;\n @ViewChild(KbqButton) private button: KbqButton;\n @ViewChild(KbqTooltipTrigger) private tooltip: KbqTooltipTrigger;\n\n /** control for search */\n searchControl: UntypedFormControl = new UntypedFormControl();\n\n /** Whether the search active */\n isSearchActive: boolean = false;\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.filterBar.configuration.search;\n }\n\n /**\n /** Timeout in milliseconds for emit event. The default value is taken from defaultOnSearchTimeout\n * @default 0\n */\n readonly onSearchTimeout = input(defaultOnSearchTimeout, { transform: numberAttribute });\n\n /** Emit event by enter or not. Default is false */\n readonly emitValueByEnter = input(false, { transform: booleanAttribute });\n\n /** Value of the field after initialization */\n readonly initialValue = input();\n\n /** Custom tooltip text. When set, overrides localeData.tooltip */\n readonly customTooltip = input<string>('', { alias: 'tooltip' });\n\n /** Custom placeholder text. When set, overrides localeData.placeholder */\n readonly customPlaceholder = input<string>('', { alias: 'placeholder' });\n\n /** @docs-private */\n get resolvedTooltip(): string {\n return this.customTooltip() || this.localeData.tooltip;\n }\n\n /** @docs-private */\n get resolvedPlaceholder(): string {\n return this.customPlaceholder() || this.localeData.placeholder;\n }\n\n /** event that is generated whenever a user performs a search. */\n @Output() readonly onSearch = new EventEmitter<string>();\n\n ngAfterViewInit(): void {\n this.filterBar.filterReset?.onResetFilter.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onReset);\n\n if (this.initialValue()) {\n this.searchControl.setValue(this.initialValue(), { emitEvent: false });\n }\n\n this.searchControl.valueChanges\n .pipe(\n distinctUntilChanged(),\n filter(() => !this.emitValueByEnter()),\n debounceTime(this.onSearchTimeout()),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(this.onSearch);\n }\n\n openSearch(): void {\n this.isSearchActive = true;\n\n setTimeout(() => this.input.focus());\n }\n\n /** @docs-private */\n onBlur(): void {\n if (this.searchControl.value) return;\n\n this.onEscape();\n }\n\n /** @docs-private */\n onEscape(): void {\n this.isSearchActive = false;\n\n this.button.focusViaKeyboard();\n\n this.tooltip.hide();\n }\n\n /** @docs-private */\n onEnter(): void {\n if (this.emitValueByEnter()) {\n this.onSearch.emit(this.searchControl.value);\n }\n }\n\n /** @docs-private */\n onClear() {\n this.isSearchActive = false;\n\n setTimeout(() => {\n this.button.focus();\n\n this.tooltip.hide();\n });\n }\n\n /** @docs-private */\n onReset = () => {\n this.changeDetectorRef.markForCheck();\n };\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqOption, KbqOptionModule } from '@koobiq/components/core';\nimport { KbqDropdownModule } from '@koobiq/components/dropdown';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqSelect, KbqSelectModule } from '@koobiq/components/select';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilter, KbqPipe, KbqPipeTemplate } from './filter-bar.types';\nimport { getId } from './pipes/base-pipe';\n\n@Component({\n selector: 'kbq-pipe-add',\n imports: [\n KbqDropdownModule,\n KbqToolTipModule,\n KbqButtonModule,\n KbqIcon,\n KbqOptionModule,\n KbqSelectModule,\n NgClass\n ],\n template: `\n <kbq-select #select [tabIndex]=\"-1\" [multiple]=\"true\" [value]=\"addedPipes\" [compareWith]=\"compareWith\">\n <button\n kbqTooltip=\"{{ filterBar.configuration.add.tooltip }}\"\n kbq-button\n kbq-select-matcher\n [color]=\"'contrast-fade'\"\n [kbqStyle]=\"'outline'\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n >\n <i kbq-icon=\"kbq-plus_16\"></i>\n </button>\n\n @for (template of filterBar.pipeTemplates; track template) {\n <kbq-option\n #option\n [userSelect]=\"true\"\n [value]=\"template\"\n [showCheckbox]=\"false\"\n (click)=\"addPipeFromTemplate(option)\"\n >\n {{ template.name }}\n </kbq-option>\n }\n </kbq-select>\n `,\n styleUrl: 'pipe-add.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-pipe-add'\n }\n})\nexport class KbqPipeAdd {\n /** KbqFilterBar instance */\n protected readonly filterBar = inject(KbqFilterBar);\n\n /** @docs-private */\n @ViewChild(KbqSelect) select: KbqSelect;\n\n /** Event that is generated after add pipe. */\n @Output() readonly onAddPipe = new EventEmitter<KbqPipeTemplate>();\n\n /** template of filter */\n @Input() filterTemplate: KbqFilter = {\n name: '',\n pipes: [],\n\n readonly: false,\n disabled: false,\n changed: false,\n saved: false\n };\n\n /** already added pipes. Used to open an already added pipe. */\n addedPipes: (string | number)[] = [];\n\n constructor() {\n this.filterBar.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.filterBar?.filter) {\n this.addedPipes = this.filterBar.filter.pipes.map((pipe: KbqPipe) => getId(pipe));\n }\n });\n }\n\n addPipeFromTemplate(option: KbqOption) {\n if (option.selected) {\n this.filterBar.openPipe.next(getId(option.value));\n } else {\n option.select();\n\n if (!this.filterBar.filter) {\n this.filterBar.filter = structuredClone(this.filterTemplate);\n }\n\n this.filterBar.filter.changed = true;\n this.filterBar.filter.pipes.push(\n Object.assign({}, option.value, { values: undefined, valueTemplate: undefined, openOnAdd: true })\n );\n\n this.onAddPipe.next(option.value);\n this.filterBar.filterChange.emit(this.filterBar.filter);\n }\n\n this.select.close();\n }\n\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n compareWith(o1: KbqPipe, o2: string): boolean {\n return getId(o1) === o2;\n }\n}\n","import { AfterContentInit, Directive, inject, Injector, Input, ViewContainerRef } from '@angular/core';\nimport { KBQ_FILTER_BAR_PIPES, KbqPipe } from './filter-bar.types';\nimport { KBQ_PIPE_DATA } from './pipes/base-pipe';\n\n@Directive({\n selector: '[kbqPipe]'\n})\nexport class KbqPipeDirective<T extends KbqPipe> implements AfterContentInit {\n private injector = inject(Injector);\n private pipes = inject(KBQ_FILTER_BAR_PIPES);\n private viewContainerRef = inject(ViewContainerRef);\n\n @Input({ alias: 'kbqPipe' }) pipe: T;\n\n ngAfterContentInit(): void {\n const component = this.pipes.get(this.pipe.type);\n\n if (!component) {\n throw new Error(`Can't find component for this type: ${this.pipe.type}`);\n }\n\n this.viewContainerRef.createComponent(component, { injector: this.getInjector(this.pipe) });\n }\n\n private getInjector(pipe: T): Injector {\n return Injector.create({\n providers: [{ provide: KBQ_PIPE_DATA, useValue: pipe }],\n parent: this.injector\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilterBarButton } from './filter-bar-button';\nimport { kbqFilterBarPipesProvider } from './filter-bar.types';\nimport { KbqFilterBarRefresher } from './filter-refresher';\nimport { KbqFilterReset } from './filter-reset';\nimport { KbqFilterBarSearch } from './filter-search';\nimport { KbqFilters } from './filters';\nimport { KbqPipeAdd } from './pipe-add';\nimport { KbqPipeDirective } from './pipe.directive';\nimport { KbqPipeButton } from './pipes/pipe-button';\nimport { KbqPipeState } from './pipes/pipe-state';\nimport { KbqPipeTitleDirective } from './pipes/pipe-title';\n\nconst COMPONENTS = [\n KbqFilterBar,\n KbqFilters,\n KbqFilterBarRefresher,\n KbqFilterBarButton,\n KbqFilterReset,\n KbqPipeAdd,\n KbqPipeDirective,\n KbqPipeButton,\n KbqFilterBarSearch,\n KbqPipeTitleDirective,\n KbqPipeState\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS,\n providers: [kbqFilterBarPipesProvider()]\n})\nexport class KbqFilterBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i6","this","i8","i4","i7","i5","i3","distinctUntilChanged","debounceTime"],"mappings":"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"}