@koobiq/components 18.22.0 → 18.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/alert/_alert-theme.scss +4 -0
  2. package/alert/alert-tokens.scss +1 -1
  3. package/alert/alert.component.d.ts +8 -2
  4. package/checkbox/checkbox.d.ts +6 -6
  5. package/core/animation/animation.d.ts +5 -2
  6. package/core/common-behaviors/checkbox.d.ts +5 -0
  7. package/core/common-behaviors/index.d.ts +1 -0
  8. package/core/pop-up/pop-up-trigger.d.ts +9 -1
  9. package/core/utils/utils.d.ts +2 -0
  10. package/esm2022/actions-panel/actions-panel-container.mjs +1 -1
  11. package/esm2022/actions-panel/actions-panel.mjs +1 -1
  12. package/esm2022/alert/alert.component.mjs +11 -5
  13. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +1 -1
  14. package/esm2022/breadcrumbs/breadcrumbs.mjs +1 -1
  15. package/esm2022/button-toggle/button-toggle.component.mjs +1 -1
  16. package/esm2022/checkbox/checkbox.mjs +5 -5
  17. package/esm2022/code-block/code-block-highlight.mjs +1 -1
  18. package/esm2022/code-block/code-block.mjs +1 -1
  19. package/esm2022/core/animation/animation.mjs +4 -1
  20. package/esm2022/core/common-behaviors/checkbox.mjs +2 -0
  21. package/esm2022/core/common-behaviors/color.mjs +1 -1
  22. package/esm2022/core/common-behaviors/index.mjs +2 -1
  23. package/esm2022/core/formatters/number/formatter.mjs +1 -1
  24. package/esm2022/core/forms/validators.mjs +1 -1
  25. package/esm2022/core/line/line.mjs +1 -1
  26. package/esm2022/core/overlay/overlay-position-map.mjs +1 -1
  27. package/esm2022/core/pop-up/pop-up-trigger.mjs +26 -11
  28. package/esm2022/core/pop-up/pop-up.mjs +1 -4
  29. package/esm2022/core/select/common.mjs +1 -1
  30. package/esm2022/core/services/measure-scrollbar.service.mjs +1 -1
  31. package/esm2022/core/utils/utils.mjs +5 -1
  32. package/esm2022/core/version.mjs +2 -2
  33. package/esm2022/datepicker/calendar-header.component.mjs +1 -1
  34. package/esm2022/datepicker/datepicker-input.directive.mjs +1 -1
  35. package/esm2022/datepicker/datepicker.component.mjs +1 -1
  36. package/esm2022/datepicker/month-view.component.mjs +1 -1
  37. package/esm2022/dropdown/dropdown-item.component.mjs +1 -1
  38. package/esm2022/dropdown/dropdown-trigger.directive.mjs +1 -1
  39. package/esm2022/dropdown/dropdown.component.mjs +1 -1
  40. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +1 -1
  41. package/esm2022/file-upload/file-drop.mjs +1 -1
  42. package/esm2022/file-upload/file-upload.mjs +1 -1
  43. package/esm2022/file-upload/single-file-upload.component.mjs +1 -1
  44. package/esm2022/filter-bar/filter-bar-button.mjs +2 -1
  45. package/esm2022/filter-bar/filter-bar.mjs +14 -1
  46. package/esm2022/filter-bar/filter-bar.module.mjs +5 -3
  47. package/esm2022/filter-bar/filter-bar.types.mjs +27 -2
  48. package/esm2022/filter-bar/filter-reset.mjs +15 -5
  49. package/esm2022/filter-bar/filter-search.mjs +18 -5
  50. package/esm2022/filter-bar/filters.mjs +22 -6
  51. package/esm2022/filter-bar/pipe-add.mjs +10 -1
  52. package/esm2022/filter-bar/pipe.directive.mjs +7 -25
  53. package/esm2022/filter-bar/pipes/base-pipe.mjs +23 -3
  54. package/esm2022/filter-bar/pipes/pipe-button.mjs +12 -6
  55. package/esm2022/filter-bar/pipes/pipe-date.mjs +26 -8
  56. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +27 -8
  57. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +6 -1
  58. package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -1
  59. package/esm2022/filter-bar/pipes/pipe-state.mjs +2 -1
  60. package/esm2022/filter-bar/pipes/pipe-text.mjs +7 -3
  61. package/esm2022/filter-bar/pipes/pipe-title.mjs +2 -1
  62. package/esm2022/form-field/form-field.mjs +1 -1
  63. package/esm2022/form-field/validate.directive.mjs +1 -1
  64. package/esm2022/input/input-number.mjs +1 -1
  65. package/esm2022/list/list-selection.component.mjs +1 -1
  66. package/esm2022/markdown/markdown.component.mjs +2 -2
  67. package/esm2022/modal/modal.component.mjs +1 -1
  68. package/esm2022/modal/modal.service.mjs +1 -1
  69. package/esm2022/navbar/navbar.component.mjs +9 -12
  70. package/esm2022/navbar/vertical-navbar.component.mjs +9 -13
  71. package/esm2022/overflow-items/overflow-items.mjs +1 -1
  72. package/esm2022/popover/popover-confirm.component.mjs +1 -1
  73. package/esm2022/radio/radio.component.mjs +3 -3
  74. package/esm2022/scrollbar/scrollbar.component.mjs +1 -1
  75. package/esm2022/scrollbar/scrollbar.directive.mjs +1 -1
  76. package/esm2022/select/select.component.mjs +1 -1
  77. package/esm2022/sidepanel/sidepanel.service.mjs +1 -1
  78. package/esm2022/splitter/splitter.component.mjs +1 -1
  79. package/esm2022/tabs/paginated-tab-header.mjs +1 -1
  80. package/esm2022/tabs/tab-body.component.mjs +1 -1
  81. package/esm2022/tabs/tab-group.component.mjs +1 -1
  82. package/esm2022/tags/tag-input.mjs +1 -1
  83. package/esm2022/tags/tag-list.component.mjs +1 -1
  84. package/esm2022/tags/tag.component.mjs +1 -1
  85. package/esm2022/textarea/textarea.component.mjs +1 -1
  86. package/esm2022/timepicker/timepicker.directive.mjs +1 -1
  87. package/esm2022/toggle/toggle.component.mjs +95 -16
  88. package/esm2022/tree/control/base-tree-control.mjs +1 -1
  89. package/esm2022/tree/control/flat-tree-control.filters.mjs +1 -1
  90. package/esm2022/tree/control/nested-tree-control.mjs +1 -1
  91. package/esm2022/tree/data-source/flat-data-source.mjs +1 -1
  92. package/esm2022/tree/padding.directive.mjs +1 -1
  93. package/esm2022/tree/tree-base.mjs +1 -1
  94. package/esm2022/tree/tree-selection.component.mjs +1 -1
  95. package/esm2022/tree-select/tree-select.component.mjs +1 -1
  96. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-alert.mjs +10 -4
  98. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  99. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  101. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-checkbox.mjs +4 -4
  103. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  105. package/fesm2022/koobiq-components-core.mjs +33 -15
  106. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  109. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  111. package/fesm2022/koobiq-components-filter-bar.mjs +1470 -1322
  112. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  113. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  115. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-markdown.mjs +2 -2
  117. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  119. package/fesm2022/koobiq-components-navbar.mjs +15 -22
  120. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  121. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-radio.mjs +2 -2
  124. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  125. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  126. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  127. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  129. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  131. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  133. package/fesm2022/koobiq-components-toggle.mjs +94 -15
  134. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  137. package/filter-bar/filter-bar-button.d.ts +1 -0
  138. package/filter-bar/filter-bar.d.ts +14 -0
  139. package/filter-bar/filter-bar.types.d.ts +13 -3
  140. package/filter-bar/filter-reset.d.ts +6 -2
  141. package/filter-bar/filter-search.d.ts +17 -10
  142. package/filter-bar/filters.d.ts +26 -11
  143. package/filter-bar/pipe-add.d.ts +10 -0
  144. package/filter-bar/pipe.directive.d.ts +5 -5
  145. package/filter-bar/pipes/base-pipe.d.ts +28 -2
  146. package/filter-bar/pipes/pipe-button.d.ts +6 -1
  147. package/filter-bar/pipes/pipe-date.d.ts +30 -10
  148. package/filter-bar/pipes/pipe-date.scss +29 -27
  149. package/filter-bar/pipes/pipe-datetime.d.ts +31 -10
  150. package/filter-bar/pipes/pipe-multi-select.d.ts +7 -0
  151. package/filter-bar/pipes/pipe-select.d.ts +7 -0
  152. package/filter-bar/pipes/pipe-state.d.ts +1 -0
  153. package/filter-bar/pipes/pipe-text.d.ts +5 -0
  154. package/link/_link-theme.scss +14 -0
  155. package/markdown/markdown.scss +0 -4
  156. package/navbar/navbar.component.d.ts +2 -2
  157. package/navbar/vertical-navbar.component.d.ts +3 -3
  158. package/package.json +5 -5
  159. package/prebuilt-themes/dark-theme.css +1 -1
  160. package/prebuilt-themes/light-theme.css +1 -1
  161. package/prebuilt-themes/theme.css +1 -1
  162. package/radio/radio.scss +0 -1
  163. package/schematics/ng-add/index.js +3 -3
  164. package/toggle/_toggle-theme.scss +12 -3
  165. package/toggle/toggle-tokens.scss +2 -2
  166. package/toggle/toggle.component.d.ts +22 -4
  167. package/toggle/toggle.scss +37 -0
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-filter-bar.mjs","sources":["../../../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/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-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/pipe.directive.ts","../../../packages/components/filter-bar/filter-bar.module.ts","../../../packages/components/filter-bar/koobiq-components-filter-bar.ts"],"sourcesContent":["import { InjectionToken, TemplateRef } from '@angular/core';\nimport { ruRULocaleData } from '@koobiq/components/core';\nimport { KbqFilterBar } from './filter-bar';\n\nexport const KBQ_FILTER_BAR_CONFIGURATION = new InjectionToken('KbqFilterBarConfiguration');\n\nexport const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION = ruRULocaleData.filterBar;\n\nexport enum KbqPipeTypes {\n Text = 'text',\n Select = 'select',\n MultiSelect = 'multiselect',\n Date = 'date',\n Datetime = 'datetime'\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: KbqPipeTypes;\n value: unknown | null;\n\n search?: boolean;\n\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 search?: boolean;\n openOnAdd?: boolean;\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\nexport interface KbqSaveFilterEvent {\n filter: KbqFilter | null;\n filterBar: KbqFilterBar;\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 standalone: true,\n selector: 'kbq-filter-reset',\n template: `\n <button [color]=\"'theme'\" [kbqStyle]=\"'transparent'\" (click)=\"onResetFilter.emit(filterBar.filter!)\" kbq-button>\n <ng-content>{{ filterBar.configuration.reset.buttonName }}</ng-content>\n </button>\n `,\n host: {\n class: 'kbq-filter-reset'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KbqButtonModule]\n})\nexport class KbqFilterReset {\n protected 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","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';\n\n@Directive({\n standalone: true,\n selector: '[kbqFilterBarButton]'\n})\nexport class KbqFilterBarButton {\n private readonly button = inject(KbqButton);\n private readonly filterBar = inject(KbqFilterBar);\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","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\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 { filter, map } from 'rxjs/operators';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilterBarButton } from './filter-bar-button';\nimport { KbqFilter, KbqSaveFilterError, KbqSaveFilterEvent } from './filter-bar.types';\n\n@Component({\n standalone: true,\n exportAs: 'kbqFilters',\n selector: 'kbq-filters',\n templateUrl: 'filters.html',\n styleUrls: ['filters.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-filters'\n },\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})\nexport class KbqFilters implements OnInit {\n protected readonly placements = PopUpPlacements;\n\n protected readonly filterBar = inject(KbqFilterBar);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n @ViewChild(KbqButton) button: KbqButton;\n @ViewChild(KbqPopoverTrigger) popover: KbqPopoverTrigger;\n @ViewChild(KbqDropdownTrigger) dropdown: KbqDropdownTrigger;\n @ViewChild('search') search: ElementRef;\n @ViewChild('newFilterName') newFilterName: ElementRef;\n\n protected readonly styles = KbqButtonStyles;\n protected readonly colors = KbqComponentColors;\n\n searchControl: UntypedFormControl = new UntypedFormControl();\n filteredOptions: Observable<KbqFilter[]>;\n\n popoverSize = PopUpSizes.Medium;\n\n filterName: FormControl<string | null>;\n saveNewFilter: boolean;\n showFilterSavingError: boolean = false;\n filterSavingErrorText: string;\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 @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 get popoverHeader(): string {\n return this.saveNewFilter ? 'Новый фильтр' : 'Изменить фильтр';\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 /** 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 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\n selectFilter(filter: KbqFilter) {\n this.filterBar.internalFilterChanges.next(structuredClone(filter));\n\n this.filterBar.saveFilterState();\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.saveFilterState();\n\n this.filterBar.internalFilterChanges.next(this.filterBar.filter);\n\n this.onSave.emit({ filter: this.filterBar.filter, filterBar: this.filterBar });\n }\n\n saveAsNew() {\n if (this.filterName.invalid) return;\n\n const name = this.filterName.value || '';\n\n if (this.saveNewFilter) {\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.onSaveAsNew.emit({ filter, filterBar: this.filterBar });\n } else {\n this.filterBar.filter!.name = name;\n this.filterBar.filter!.saved = true;\n this.filterBar.filter!.changed = false;\n\n this.onSave.emit({ filter: this.filterBar.filter, filterBar: this.filterBar });\n }\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 this.button.focus();\n }\n\n preparePopover() {\n this.filterName = new FormControl<string>(this.filter?.name || '', Validators.required);\n\n this.filterName.valueChanges.subscribe(() => (this.showFilterSavingError = false));\n\n this.popover.show();\n\n merge(...this.popover.defaultClosingActions()).subscribe(this.closePopover);\n this.popover.visibleChange.pipe(filter((state) => !state)).subscribe(this.closePopover);\n\n setTimeout(() => this.newFilterName.nativeElement.focus());\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 closePopover = () => {\n this.popover.hide();\n\n this.restoreFocus();\n\n setTimeout(() => this.changeDetectorRef.detectChanges());\n };\n\n stopEventPropagation(event: Event) {\n event.stopPropagation();\n }\n\n searchKeydownHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.closePopover();\n } else {\n this.stopEventPropagation(event);\n }\n }\n\n onDropdownOpen() {\n setTimeout(() => this.search.nativeElement.focus());\n }\n\n resetFilterChanges() {\n this.filterBar.resetFilterChangedState();\n\n this.onResetFilterChanges.emit(this.filter!);\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.popover.hide();\n this.restoreFocus();\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.showError(error);\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 kbq-button\n kbq-title\n kbqFilterBarButton\n kbqPopover\n [kbqDropdownTriggerFor]=\"savedFilters\"\n [kbqPopoverArrow]=\"false\"\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 [ngClass]=\"{ 'kbq-active': 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 {{ filterBar.configuration.filters.defaultName }}\n </ng-content>\n }\n </span>\n</button>\n\n@if (filterBar.isChanged && !filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n kbqTooltip=\"{{ filterBar.configuration.filters.saveNewFilterTooltip }}\"\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n (click)=\"openSaveAsNewFilterPopover()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n </button>\n}\n\n@if (filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n [kbqDropdownTriggerFor]=\"filterActions\"\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 autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ filterBar.configuration.filters.searchPlaceholder }}\"\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 {{ filterBar.configuration.filters.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 {{ filterBar.configuration.filters.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 {{ filterBar.configuration.filters.saveChanges }}\n @if (filterBar.isSavedAndChanged) {\n <i class=\"kbq kbq-icon kbq-icon-button kbq-circle-xs_16 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 {{ filterBar.configuration.filters.saveAsNew }}\n </button>\n\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"openChangeFilterNamePopover()\">\n <i kbq-icon=\"kbq-pencil_16\"></i>\n {{ filterBar.configuration.filters.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-xmark-circle_16\"></i>\n {{ filterBar.configuration.filters.resetChanges }}\n </button>\n }\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"this.onRemoveFilter.next(this.filter!)\">\n <i kbq-icon=\"kbq-trash_16\"></i>\n {{ filterBar.configuration.filters.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\">{{ filterBar.configuration.filters.name }}</label>\n\n <kbq-form-field class=\"kbq-form__control\">\n <input #newFilterName kbqInput type=\"text\" [formControl]=\"filterName\" />\n\n @if (filterName.hasError('filterNameAlreadyExist')) {\n <kbq-hint [color]=\"'error'\">{{ filterBar.configuration.filters.error }}</kbq-hint>\n }\n </kbq-form-field>\n </div>\n </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n <button kbq-button class=\"layout-margin-right-l\" [color]=\"'contrast'\" [kbqStyle]=\"'filled'\" (click)=\"saveAsNew()\">\n {{ filterBar.configuration.filters.saveButton }}\n </button>\n <button kbq-button [color]=\"'contrast-fade'\" [kbqStyle]=\"'filled'\" (click)=\"closePopover()\">\n {{ filterBar.configuration.filters.cancelButton }}\n </button>\n</ng-template>\n","import {\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 standalone: true,\n selector: 'kbq-filter-bar, [kbq-filter-bar]',\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]\" />\n\n <ng-content select=\"kbq-filter-refresher, [kbq-filter-refresher]\" />\n </div>\n `,\n styleUrls: ['filter-bar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KbqDividerModule],\n host: {\n class: 'kbq-filter-bar'\n }\n})\nexport class KbqFilterBar {\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n readonly externalConfiguration = inject(KBQ_FILTER_BAR_CONFIGURATION, { optional: true });\n\n configuration;\n\n @ContentChild(KbqFilters) filters: KbqFilters;\n @ContentChild(KbqFilterReset) filterReset: KbqFilterReset;\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 set pipeTemplates(value: KbqPipeTemplate[]) {\n this._templates = value;\n\n this.internalTemplatesChanges.next(this._templates);\n }\n\n get pipeTemplates(): KbqPipeTemplate[] {\n return 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\n get isSavedAndChanged(): boolean {\n return this.isSaved && this.isChanged;\n }\n\n get isSaved(): boolean {\n return !!this.filter?.saved;\n }\n\n get isChanged(): boolean {\n return !!this.filter?.changed;\n }\n\n get isReadOnly(): boolean {\n return !!this.filter?.readonly;\n }\n\n get isDisabled(): boolean {\n return !!this.filter?.disabled;\n }\n\n private savedFilter: KbqFilter | null = null;\n\n readonly changes = new BehaviorSubject<void>(undefined);\n readonly internalFilterChanges = new BehaviorSubject<KbqFilter | null>(null);\n readonly internalTemplatesChanges = new BehaviorSubject<KbqPipeTemplate[] | null>(null);\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 }\n\n this.filterChange.emit(this.filter);\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 }\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 standalone: true,\n selector: 'kbq-filter-refresher, [kbq-filter-refresher]',\n template: `\n <button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\" kbq-button>\n <i kbq-icon=\"kbq-arrow-rotate-right_16\"></i>\n </button>\n <button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\" kbq-button>\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n </button>\n `,\n styleUrls: ['filter-refresher.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n KbqButtonModule,\n KbqIconModule\n ],\n host: {\n class: 'kbq-filter-refresher'\n }\n})\nexport class KbqFilterBarRefresher {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\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 { KbqFilterBar } from './filter-bar';\n\n@Component({\n standalone: true,\n selector: 'kbq-filter-search, [kbq-filter-search]',\n template: `\n <button\n [class.kbq-filter_hidden]=\"isSearchActive\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"openSearch()\"\n kbq-button\n kbqTooltip=\"{{ filterBar.configuration.search.tooltip }}\"\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 [formControl]=\"searchControl\"\n (blur)=\"onBlur()\"\n (keydown.escape)=\"onEscape()\"\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ filterBar.configuration.search.placeholder }}\"\n />\n\n <kbq-cleaner (click)=\"onClear()\" />\n </kbq-form-field>\n `,\n styleUrl: 'filter-search.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n KbqDividerModule,\n KbqButtonModule,\n KbqToolTipModule,\n KbqIconModule,\n KbqFormFieldModule,\n KbqInputModule,\n ReactiveFormsModule\n ],\n host: {\n class: 'kbq-filter-search'\n }\n})\nexport class KbqFilterBarSearch {\n protected readonly filterBar = inject(KbqFilterBar);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n @ViewChild(KbqInput) input: KbqInput;\n @ViewChild(KbqButton) button: KbqButton;\n @ViewChild(KbqTooltipTrigger) tooltip: KbqTooltipTrigger;\n\n searchControl: UntypedFormControl = new UntypedFormControl();\n\n isSearchActive: boolean = false;\n\n @Output() readonly onSearch = new EventEmitter<string>();\n\n constructor() {\n this.searchControl.valueChanges.subscribe(this.onSearch);\n\n this.filterBar.filterReset?.onResetFilter.pipe(takeUntilDestroyed()).subscribe(this.onReset);\n }\n\n openSearch(): void {\n this.isSearchActive = true;\n\n setTimeout(() => this.input.focus());\n }\n\n onBlur(): void {\n if (this.searchControl.value) return;\n\n this.onEscape();\n }\n\n onEscape(): void {\n this.isSearchActive = false;\n\n this.button.focusViaKeyboard();\n\n this.tooltip.hide();\n }\n\n onClear() {\n this.isSearchActive = false;\n\n setTimeout(() => {\n this.button.focus();\n\n this.tooltip.hide();\n });\n }\n\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, KbqSelectMatcher } 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';\n\n@Component({\n standalone: true,\n selector: 'kbq-pipe-add',\n template: `\n <kbq-select #select [tabIndex]=\"-1\" [multiple]=\"true\" [value]=\"addedPipes\" [compareWith]=\"compareWith\">\n <button\n [color]=\"'contrast-fade'\"\n [kbqStyle]=\"'outline'\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n kbq-button\n kbqTooltip=\"{{ filterBar.configuration.add.tooltip }}\"\n kbq-select-matcher\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 host: {\n class: 'kbq-pipe-add'\n },\n imports: [\n KbqDropdownModule,\n KbqToolTipModule,\n KbqButtonModule,\n KbqIcon,\n KbqOptionModule,\n KbqSelectMatcher,\n KbqSelectModule,\n NgClass\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqPipeAdd {\n protected readonly filterBar = inject(KbqFilterBar);\n\n @ViewChild(KbqSelect) select: KbqSelect;\n\n @Output() readonly onAddPipe = new EventEmitter<KbqPipeTemplate>();\n\n @Input() filterTemplate: KbqFilter = {\n name: '',\n pipes: [],\n\n readonly: false,\n disabled: false,\n changed: false,\n saved: false\n };\n\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) => pipe.id || pipe.name);\n }\n });\n }\n\n addPipeFromTemplate(option: KbqOption) {\n if (option.selected) {\n this.filterBar.openPipe.next(option.value.id || option.value.name);\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 compareWith(o1: KbqPipe, o2: string): boolean {\n return (o1.id || o1.name) === o2;\n }\n}\n","import {\n afterNextRender,\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n TemplateRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { delay, filter } from 'rxjs/operators';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqPipeData, KbqPipeTemplate } from '../filter-bar.types';\n\nexport const KBQ_PIPE_DATA = new InjectionToken('KBQ_PIPE_DATA');\n\n@Directive({\n standalone: true,\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 readonly stateChanges = new Subject<void>();\n readonly data = inject<KbqPipeData<V>>(KBQ_PIPE_DATA);\n\n protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n protected values;\n protected valueTemplate?: TemplateRef<any> | string;\n\n // todo DS-3511\n isMac = /^mac/i.test(navigator.userAgent);\n\n $implicit: unknown;\n\n get isEmpty(): boolean {\n return this.data.value === null || this.data.value === undefined;\n }\n\n get showRemoveButton(): boolean {\n return !this.data.required && (this.data.removable || (this.data.cleanable && !this.isEmpty));\n }\n\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\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)).subscribe((name) => {\n if (this.data.name === name) {\n this.open();\n }\n });\n }\n\n isTemplateRef(value): boolean {\n return value instanceof TemplateRef;\n }\n\n updateTemplates = (templates: KbqPipeTemplate[] | null) => {\n const template = templates?.find((template) => template.type === this.data?.type);\n\n if (template?.values) {\n this.values = template.values;\n this.valueTemplate = template.valueTemplate;\n }\n };\n\n onRemove() {\n this.filterBar?.removePipe(this.data);\n\n this.stateChanges.next();\n }\n\n onClear() {\n this.data.value = null;\n\n this.stateChanges.next();\n }\n\n abstract open(): void;\n}\n\n@Directive({\n standalone: true,\n selector: '[kbqPipeMinWidth]',\n host: {\n '[style.min-width]': 'minWidth'\n }\n})\nexport class KbqPipeMinWidth {\n protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n\n protected readonly elementRef = inject(ElementRef);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n minWidth: string;\n maxSymbolsForFitContent: number = 20;\n\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 { KbqBasePipe } from './base-pipe';\n\n@Directive({\n standalone: true,\n selector: '[kbqPipeState]'\n})\nexport class KbqPipeState<T> implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly button = inject(KbqButton);\n private readonly pipe = inject(KbqBasePipe);\n\n @Input({ alias: 'kbqPipeState' })\n set state(pipe: T | null) {\n this._state = pipe;\n\n this.updateState();\n }\n\n get state(): T | null {\n return this._state;\n }\n\n private _state: T | null = null;\n\n ngOnInit(): void {\n this.pipe.stateChanges.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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { KbqFilterBar } from '../filter-bar';\nimport { KbqBasePipe } from './base-pipe';\nimport { KbqPipeState } from './pipe-state';\n\n@Component({\n standalone: true,\n selector: 'kbq-pipe-button',\n template: `\n <button\n class=\"kbq-pipe__remove-button\"\n [disabled]=\"pipe.data.disabled\"\n [kbqPipeState]=\"pipe.data\"\n (click)=\"pipe.data.cleanable ? pipe.onClear() : pipe.onRemove()\"\n kbq-button\n kbqTooltip=\"{{ pipe.data.cleanable ? localeData.clearButtonTooltip : localeData.removeButtonTooltip }}\"\n >\n <i kbq-icon=\"kbq-xmark-s_16\"></i>\n </button>\n `,\n styleUrl: 'pipe-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-pipe-button'\n },\n imports: [\n KbqIcon,\n KbqDividerModule,\n KbqButtonModule,\n KbqPipeState,\n KbqTooltipTrigger\n ]\n})\nexport class KbqPipeButton {\n protected readonly pipe = inject(KbqBasePipe);\n protected readonly filterBar = inject(KbqFilterBar, { optional: true });\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n get localeData() {\n return this.filterBar?.configuration.pipe;\n }\n\n constructor() {\n this.filterBar?.changes.pipe(takeUntilDestroyed()).subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n","import {\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@Directive({\n standalone: true,\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 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.mutationSubscription = this.createMutationObserver()\n .pipe(throttleTime(this.debounceInterval))\n .subscribe(() => {\n this.disabled = !this.isOverflown;\n this.content = this.viewValue;\n });\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 createMutationObserver(): Observable<MutationRecord[]> {\n return new Observable((observer) => {\n const mutationObserver = new MutationObserver((mutations) => observer.next(mutations));\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 { ChangeDetectionStrategy, Component, inject, viewChild, ViewChild, ViewEncapsulation } from '@angular/core';\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 KBQ_VALIDATION,\n KbqComponentColors,\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 { KbqIcon } 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 { 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 standalone: true,\n selector: 'kbq-pipe-date',\n templateUrl: 'pipe-date.html',\n styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KBQ_VALIDATION,\n useValue: { useValidation: false }\n },\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\n imports: [\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqIcon,\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})\nexport class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> {\n protected readonly adapter = inject(DateAdapter);\n protected readonly formatter = inject(DateFormatter);\n\n protected readonly placements = PopUpPlacements;\n protected readonly styles = KbqButtonStyles;\n protected readonly colors = KbqComponentColors;\n\n protected list = true;\n\n protected formGroup: FormGroup;\n\n protected showStartCalendar: boolean = false;\n protected showEndCalendar: boolean = false;\n\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 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 get start() {\n return this.adapter.parse(this.data.value?.start, '');\n }\n\n get defaultStart() {\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 get end() {\n return this.adapter.parse(this.data.value?.end, '');\n }\n\n get defaultEnd() {\n if (this.data.value?.start) {\n return this.adapter.today();\n }\n\n return this.adapter.today().plus({ days: 1 });\n }\n\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 @ViewChild('popover') popover: KbqPopoverTrigger;\n listSelection = viewChild.required('listSelection', { read: KbqListSelection });\n returnButton = viewChild.required('returnButton', { read: KbqButton });\n\n onKeydown($event: KeyboardEvent) {\n if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApplyPeriod();\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 openPeriod() {\n this.list = 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 openList() {\n this.list = true;\n\n setTimeout(() => this.listSelection().focus());\n this.popover.updatePosition(true);\n }\n\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 [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n (kbqPopoverVisibleChange)=\"list = 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 (list) {\n <div class=\"kbq-date-list\">\n <kbq-list-selection #listSelection [autoSelect]=\"false\" [ngModel]=\"data.value?.name\">\n <kbq-list-option (click)=\"openPeriod()\" (keydown.enter)=\"openPeriod()\">\n {{ localeData.datePipe.customPeriod }}\n <i class=\"kbq kbq-icon kbq-chevron-right_16 kbq-contrast-fade\"></i>\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)=\"openList()\"\n >\n <i kbq-icon=\"kbq-chevron-left_16\"></i>\n {{ localeData.datePipe.backToPeriodSelection }}\n </button>\n </div>\n\n <kbq-divider />\n\n <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n <div class=\"kbq-date-period__content-header\">{{ localeData.datePipe.customPeriod }}</div>\n <div class=\"kbq-form__row\">\n <label class=\"kbq-form__label flex-10\">{{ localeData.datePipe.customPeriodFrom }}</label>\n\n <kbq-form-field\n class=\"kbq-date-period__date kbq-form__control\"\n [class.kbq-focused]=\"showStartCalendar\"\n >\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 </div>\n\n <kbq-calendar\n #startDateCalendar\n [class.kbq-calendar_hidden]=\"!showStartCalendar\"\n (selectedChange)=\"onSelectStartDate($event)\"\n />\n\n <div class=\"kbq-form__row\">\n <label class=\"kbq-form__label flex-10\">{{ localeData.datePipe.customPeriodTo }}</label>\n\n <kbq-form-field\n class=\"kbq-date-period__date kbq-form__control\"\n [class.kbq-focused]=\"showEndCalendar\"\n >\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 </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 { ChangeDetectionStrategy, Component, inject, viewChild, ViewChild, ViewEncapsulation } from '@angular/core';\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 KBQ_VALIDATION,\n KbqComponentColors,\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 { KbqIcon } 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 { 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 standalone: true,\n selector: 'kbq-pipe-datetime',\n templateUrl: 'pipe-datetime.html',\n styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KBQ_VALIDATION,\n useValue: { useValidation: false }\n },\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\n imports: [\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqIcon,\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})\nexport class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTimeValue> {\n protected readonly adapter = inject(DateAdapter);\n protected readonly formatter = inject(DateFormatter);\n\n protected readonly placements = PopUpPlacements;\n protected readonly styles = KbqButtonStyles;\n protected readonly colors = KbqComponentColors;\n\n protected list = true;\n\n protected formGroup: FormGroup;\n\n protected showStartCalendar: boolean = false;\n protected showEndCalendar: boolean = false;\n\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 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 get start() {\n return this.adapter.parse(this.data.value?.start, '');\n }\n\n get defaultStart() {\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 get end() {\n return this.adapter.parse(this.data.value?.end, '');\n }\n\n get defaultEnd() {\n if (this.data.value?.start) {\n return this.adapter.today();\n }\n\n return this.adapter.today().endOf('day');\n }\n\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 @ViewChild('popover') popover: KbqPopoverTrigger;\n listSelection = viewChild.required('listSelection', { read: KbqListSelection });\n returnButton = viewChild.required('returnButton', { read: KbqButton });\n\n onKeydown($event: KeyboardEvent) {\n if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApplyPeriod();\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 openPeriod() {\n this.list = 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 openList() {\n this.list = true;\n\n setTimeout(() => this.listSelection().focus());\n this.popover.updatePosition(true);\n }\n\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 [kbqPopoverPlacement]=\"placements.BottomLeft\"\n [kbqPopoverPlacementPriority]=\"[placements.BottomLeft, placements.TopLeft]\"\n (kbqPopoverVisibleChange)=\"list = 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 (list) {\n <div class=\"kbq-date-list\">\n <kbq-list-selection #listSelection [ngModel]=\"data.value?.name\">\n <kbq-list-option (click)=\"openPeriod()\" (keydown.enter)=\"openPeriod()\">\n {{ localeData.datePipe?.customPeriod }}\n <i class=\"kbq kbq-icon kbq-chevron-right_16 kbq-contrast-fade\"></i>\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)=\"openList()\"\n >\n <i kbq-icon=\"kbq-chevron-left_16\"></i>\n {{ localeData.datePipe.backToPeriodSelection }}\n </button>\n </div>\n\n <kbq-divider />\n\n <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n <div class=\"kbq-date-period__content-header\">{{ localeData.datePipe.customPeriod }}</div>\n <div class=\"kbq-form__row kbq-form__row_with-time\">\n <label class=\"kbq-form__label flex-10\">{{ localeData.datePipe.customPeriodFrom }}</label>\n\n <kbq-form-field\n class=\"kbq-date-period__date kbq-form__control\"\n [class.kbq-focused]=\"showStartCalendar\"\n >\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 kbq-form__control\">\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 <div class=\"kbq-form__row kbq-form__row_with-time\">\n <label class=\"kbq-form__label flex-10\">{{ localeData.datePipe.customPeriodTo }}</label>\n\n <kbq-form-field\n class=\"kbq-date-period__date kbq-form__control\"\n [class.kbq-focused]=\"showEndCalendar\"\n >\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 kbq-form__control\">\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 { ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\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 } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n standalone: true,\n selector: 'kbq-pipe-multi-select',\n templateUrl: 'pipe-multi-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-multiselect.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\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 KbqIcon,\n KbqInputModule,\n ReactiveFormsModule,\n AsyncPipe\n ]\n})\nexport class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements OnInit {\n searchControl: UntypedFormControl = new UntypedFormControl();\n filteredOptions: Observable<any[]>;\n\n @ViewChild(KbqSelect) select: KbqSelect;\n\n get selected() {\n return this.data.value;\n }\n\n get isEmpty(): boolean {\n return !this.data.value?.length;\n }\n\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 onSelect(item: KbqSelectValue[]) {\n this.data.value = item;\n this.filterBar?.onChangePipe.emit(this.data);\n this.stateChanges.next();\n }\n\n onClear() {\n this.data.value = [];\n\n this.filterBar?.onChangePipe.emit(this.data);\n this.stateChanges.next();\n }\n\n compareByValue = (o1: any, o2: any): boolean => o1?.id === o2?.id;\n\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=\"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 [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 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 (select.triggerValues.length > 1) {\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 kbqInput placeholder=\"Search\" type=\"text\" [formControl]=\"searchControl\" />\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 { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\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 standalone: true,\n selector: 'kbq-pipe-select',\n templateUrl: 'pipe-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-select.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\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})\nexport class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue> implements OnInit {\n searchControl: UntypedFormControl = new UntypedFormControl();\n filteredOptions: Observable<any[]>;\n\n @ViewChild(KbqSelect) select: KbqSelect;\n\n get selected() {\n return this.data.value;\n }\n\n get isEmpty(): boolean {\n return !this.data.value;\n }\n\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 onSelect(item: KbqSelectValue) {\n this.data.value = item;\n this.filterBar?.onChangePipe.emit(this.data);\n this.stateChanges.next();\n }\n\n compareByValue = (o1: any, o2: any): boolean => o1 && o2 && o1.id === o2.id;\n\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 kbqInput placeholder=\"Search\" type=\"text\" [formControl]=\"searchControl\" />\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 { 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 standalone: true,\n selector: 'kbq-pipe-text',\n templateUrl: 'pipe-text.html',\n styleUrls: ['base-pipe.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\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})\nexport class KbqPipeTextComponent extends KbqBasePipe<string | null> implements AfterViewInit, OnInit {\n readonly placements = PopUpPlacements;\n\n @ViewChild(KbqPopoverTrigger) popover: KbqPopoverTrigger;\n\n get disabled(): boolean {\n return !this.control.value;\n }\n\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.subscribe(() => this.stateChanges.next());\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 onKeydown($event: KeyboardEvent) {\n if (!this.disabled && ($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApply();\n }\n }\n\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 [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 { AfterContentInit, Directive, inject, Injector, Input, ViewContainerRef } from '@angular/core';\nimport { KbqPipe, KbqPipeTemplate, KbqPipeTypes } from './filter-bar.types';\nimport { KBQ_PIPE_DATA } from './pipes/base-pipe';\nimport { KbqPipeDateComponent } from './pipes/pipe-date';\nimport { KbqPipeDatetimeComponent } from './pipes/pipe-datetime';\nimport { KbqPipeMultiSelectComponent } from './pipes/pipe-multi-select';\nimport { KbqPipeSelectComponent } from './pipes/pipe-select';\nimport { KbqPipeTextComponent } from './pipes/pipe-text';\n\n@Directive({\n standalone: true,\n selector: '[kbqPipe]'\n})\nexport class KbqPipeDirective<T extends KbqPipe> implements AfterContentInit {\n private injector = inject(Injector);\n protected readonly viewContainerRef = inject(ViewContainerRef);\n\n values: KbqPipeTemplate[];\n\n @Input({ alias: 'kbqPipe' }) pipe: T;\n\n ngAfterContentInit(): void {\n const options = {\n injector: this.getInjector(this.pipe)\n };\n\n // todo this for extend and configure\n if (this.pipe.type === KbqPipeTypes.Text) {\n this.viewContainerRef.createComponent(KbqPipeTextComponent, options);\n } else if (this.pipe.type === KbqPipeTypes.Select) {\n this.viewContainerRef.createComponent(KbqPipeSelectComponent, options);\n } else if (this.pipe.type === KbqPipeTypes.MultiSelect) {\n this.viewContainerRef.createComponent(KbqPipeMultiSelectComponent, options);\n } else if (this.pipe.type === KbqPipeTypes.Date) {\n this.viewContainerRef.createComponent(KbqPipeDateComponent, options);\n } else if (this.pipe.type === KbqPipeTypes.Datetime) {\n this.viewContainerRef.createComponent(KbqPipeDatetimeComponent, options);\n }\n }\n\n 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 { 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 exports: COMPONENTS,\n imports: COMPONENTS\n})\nexport class KbqFilterBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i8","i3","i4","i5","i6","i1","this","i7"],"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-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/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 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 } 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@Directive({\n standalone: true,\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\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 /** Whether the current platform is a Mac. */\n isMac = isMac();\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.required && (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\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)).subscribe((name) => {\n if (this.data.name === name) {\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) => template.type === this.data?.type);\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\n /** @docs-private */\n abstract open(): void;\n}\n\n@Directive({\n standalone: true,\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);\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 { KbqBasePipe } from './base-pipe';\n\n@Directive({\n standalone: true,\n selector: '[kbqPipeState]'\n})\nexport class KbqPipeState<T> implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly button = inject(KbqButton);\n private readonly pipe = inject(KbqBasePipe);\n\n /** calculates and updates styles of button from pipe state */\n @Input({ alias: 'kbqPipeState' })\n set state(pipe: T | null) {\n this._state = pipe;\n\n this.updateState();\n }\n\n get state(): T | null {\n return this._state;\n }\n\n private _state: T | null = null;\n\n ngOnInit(): void {\n this.pipe.stateChanges.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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIcon } 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 standalone: true,\n selector: 'kbq-pipe-button',\n template: `\n <button\n class=\"kbq-pipe__remove-button\"\n [disabled]=\"pipe.data.disabled\"\n [kbqPipeState]=\"pipe.data\"\n (click)=\"pipe.data.cleanable ? pipe.onClear() : pipe.onRemove()\"\n kbq-button\n kbqTooltip=\"{{ pipe.data.cleanable ? localeData.clearButtonTooltip : localeData.removeButtonTooltip }}\"\n >\n <i kbq-icon=\"kbq-xmark-s_16\"></i>\n </button>\n `,\n styleUrl: 'pipe-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-pipe-button'\n },\n imports: [\n KbqIcon,\n KbqButtonModule,\n KbqPipeState,\n KbqTooltipTrigger\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 /** 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 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 standalone: true,\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 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.mutationSubscription = this.createMutationObserver()\n .pipe(throttleTime(this.debounceInterval))\n .subscribe(() => {\n this.disabled = !this.isOverflown;\n this.content = this.viewValue;\n });\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 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 { ChangeDetectionStrategy, Component, inject, viewChild, ViewChild, ViewEncapsulation } from '@angular/core';\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 KBQ_VALIDATION,\n KbqComponentColors,\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 { KbqIcon } 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 { 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 standalone: true,\n selector: 'kbq-pipe-date',\n templateUrl: 'pipe-date.html',\n styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KBQ_VALIDATION,\n useValue: { useValidation: false }\n },\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\n imports: [\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqIcon,\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})\nexport class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> {\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 /** keydown handler\n * @docs-private */\n onKeydown($event: KeyboardEvent) {\n if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApplyPeriod();\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 [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 <i class=\"kbq kbq-icon kbq-chevron-right_16 kbq-contrast-fade\"></i>\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 <kbq-divider />\n\n <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n <div class=\"kbq-date-period__content-header\">{{ localeData.datePipe.customPeriod }}</div>\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 { ChangeDetectionStrategy, Component, inject, viewChild, ViewChild, ViewEncapsulation } from '@angular/core';\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 KBQ_VALIDATION,\n KbqComponentColors,\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 { KbqIcon } 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 { 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 standalone: true,\n selector: 'kbq-pipe-datetime',\n templateUrl: 'pipe-datetime.html',\n styleUrls: ['base-pipe.scss', 'pipe-date.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KBQ_VALIDATION,\n useValue: { useValidation: false }\n },\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\n imports: [\n ReactiveFormsModule,\n KbqFormFieldModule,\n KbqIcon,\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})\nexport class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTimeValue> {\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 /** keydown handler\n * @docs-private */\n onKeydown($event: KeyboardEvent) {\n if (($event.ctrlKey || $event.metaKey) && $event.keyCode === ENTER) {\n this.onApplyPeriod();\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 [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 <i class=\"kbq kbq-icon kbq-chevron-right_16 kbq-contrast-fade\"></i>\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 <kbq-divider />\n\n <form class=\"kbq-date-period__content kbq-form-horizontal\" [formGroup]=\"formGroup\">\n <div class=\"kbq-date-period__content-header\">{{ localeData.datePipe.customPeriod }}</div>\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 { ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\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 } from './base-pipe';\nimport { KbqPipeButton } from './pipe-button';\nimport { KbqPipeState } from './pipe-state';\nimport { KbqPipeTitleDirective } from './pipe-title';\n\n@Component({\n standalone: true,\n selector: 'kbq-pipe-multi-select',\n templateUrl: 'pipe-multi-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-multiselect.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\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 KbqIcon,\n KbqInputModule,\n ReactiveFormsModule,\n AsyncPipe\n ]\n})\nexport class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements 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?.length;\n }\n\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 onSelect(item: KbqSelectValue[]) {\n this.data.value = item;\n this.filterBar?.onChangePipe.emit(this.data);\n this.stateChanges.next();\n }\n\n onClear() {\n this.data.value = [];\n\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?.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=\"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 [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 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 (select.triggerValues.length > 1) {\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 kbqInput placeholder=\"Search\" type=\"text\" [formControl]=\"searchControl\" />\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 { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\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 standalone: true,\n selector: 'kbq-pipe-select',\n templateUrl: 'pipe-select.html',\n styleUrls: ['base-pipe.scss', 'pipe-select.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\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})\nexport class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue> implements 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 ngOnInit(): void {\n this.filteredOptions = merge(\n of(this.values),\n this.searchControl.valueChanges.pipe(map((value) => this.getFilteredOptions(value)))\n );\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 kbqInput placeholder=\"Search\" type=\"text\" [formControl]=\"searchControl\" />\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 { 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 standalone: true,\n selector: 'kbq-pipe-text',\n templateUrl: 'pipe-text.html',\n styleUrls: ['base-pipe.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: KbqBasePipe,\n useExisting: this\n }\n ],\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})\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.subscribe(() => this.stateChanges.next());\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 /** 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 [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 { 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 { KbqPipeSelectComponent } from './pipes/pipe-select';\nimport { KbqPipeTextComponent } from './pipes/pipe-text';\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 Text = 'text',\n Select = 'select',\n MultiSelect = 'multiselect',\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.Text, KbqPipeTextComponent],\n [KbqPipeTypes.Select, KbqPipeSelectComponent],\n [KbqPipeTypes.MultiSelect, KbqPipeMultiSelectComponent],\n [KbqPipeTypes.Date, KbqPipeDateComponent],\n [KbqPipeTypes.Datetime, KbqPipeDatetimeComponent]\n\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\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 search?: boolean;\n openOnAdd?: boolean;\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\nexport interface KbqSaveFilterEvent {\n filter: KbqFilter | null;\n filterBar: KbqFilterBar;\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 standalone: true,\n selector: 'kbq-filter-reset',\n template: `\n <button [color]=\"'theme'\" [kbqStyle]=\"'transparent'\" (click)=\"resetFilter()\" kbq-button>\n <ng-content>{{ localeData }}</ng-content>\n </button>\n `,\n host: {\n class: 'kbq-filter-reset'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KbqButtonModule]\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 }\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';\n\n@Directive({\n standalone: true,\n selector: '[kbqFilterBarButton]'\n})\nexport class KbqFilterBarButton {\n private readonly button = inject(KbqButton);\n /** KbqFilterBar instance */\n private readonly filterBar = inject(KbqFilterBar);\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","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\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 { filter, map } from 'rxjs/operators';\nimport { KbqFilterBar } from './filter-bar';\nimport { KbqFilterBarButton } from './filter-bar-button';\nimport { KbqFilter, KbqSaveFilterError, KbqSaveFilterEvent } from './filter-bar.types';\n\n@Component({\n standalone: true,\n exportAs: 'kbqFilters',\n selector: 'kbq-filters',\n templateUrl: 'filters.html',\n styleUrls: ['filters.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-filters'\n },\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})\nexport class KbqFilters implements OnInit {\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 @ViewChild(KbqButton) private button: KbqButton;\n @ViewChild(KbqPopoverTrigger) private popover: KbqPopoverTrigger;\n @ViewChild(KbqDropdownTrigger) private dropdown: KbqDropdownTrigger;\n @ViewChild('search') private search: ElementRef;\n @ViewChild('newFilterName') private newFilterName: ElementRef;\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\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 @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 @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 /** 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 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\n selectFilter(filter: KbqFilter) {\n this.filterBar.internalFilterChanges.next(structuredClone(filter));\n\n this.filterBar.saveFilterState();\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.saveFilterState();\n\n this.filterBar.internalFilterChanges.next(this.filterBar.filter);\n\n this.onSave.emit({ filter: this.filterBar.filter, filterBar: this.filterBar });\n }\n\n saveAsNew() {\n if (this.filterName.invalid) return;\n\n const name = this.filterName.value || '';\n\n if (this.saveNewFilter) {\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.onSaveAsNew.emit({ filter, filterBar: this.filterBar });\n } else {\n this.filterBar.filter!.name = name;\n this.filterBar.filter!.saved = true;\n this.filterBar.filter!.changed = false;\n\n this.onSave.emit({ filter: this.filterBar.filter, filterBar: this.filterBar });\n }\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 this.button.focus();\n }\n\n preparePopover() {\n this.filterName = new FormControl<string>(this.filter?.name || '', Validators.required);\n\n this.filterName.valueChanges.subscribe(() => (this.showFilterSavingError = false));\n\n this.popover.show();\n\n merge(...this.popover.defaultClosingActions()).subscribe(this.closePopover);\n this.popover.visibleChange.pipe(filter((state) => !state)).subscribe(this.closePopover);\n\n setTimeout(() => this.newFilterName.nativeElement.focus());\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 closePopover = () => {\n this.popover.hide();\n\n this.restoreFocus();\n\n setTimeout(() => this.changeDetectorRef.detectChanges());\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 setTimeout(() => this.search.nativeElement.focus());\n }\n\n resetFilterChanges() {\n this.filterBar.resetFilterChangedState();\n\n this.onResetFilterChanges.emit(this.filter!);\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.popover.hide();\n this.restoreFocus();\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.showError(error);\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 kbq-button\n kbq-title\n kbqFilterBarButton\n kbqPopover\n [kbqDropdownTriggerFor]=\"savedFilters\"\n [kbqPopoverArrow]=\"false\"\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 [ngClass]=\"{ 'kbq-active': 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 kbq-button\n kbqFilterBarButton\n kbqTooltip=\"{{ localeData.saveNewFilterTooltip }}\"\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n (click)=\"openSaveAsNewFilterPopover()\"\n >\n <i kbq-icon=\"kbq-floppy-disk_16\"></i>\n </button>\n}\n\n@if (filterBar.isSaved) {\n <button\n kbq-button\n kbqFilterBarButton\n class=\"kbq-button_action\"\n [color]=\"colors.Empty\"\n [kbqDropdownTriggerFor]=\"filterActions\"\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 autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.searchPlaceholder }}\"\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 class=\"kbq kbq-icon kbq-icon-button kbq-circle-xs_16 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-xmark-circle_16\"></i>\n {{ localeData.resetChanges }}\n </button>\n }\n @if (!filterBar.isReadOnly) {\n <button kbq-dropdown-item (click)=\"this.onRemoveFilter.next(this.filter!)\">\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 #newFilterName kbqInput type=\"text\" [formControl]=\"filterName\" />\n\n @if (filterName.hasError('filterNameAlreadyExist')) {\n <kbq-hint [color]=\"'error'\">{{ localeData.error }}</kbq-hint>\n }\n </kbq-form-field>\n </div>\n </div>\n</ng-template>\n\n<ng-template #saveAsNewPopoverFooter>\n <button kbq-button class=\"layout-margin-right-l\" [color]=\"'contrast'\" [kbqStyle]=\"'filled'\" (click)=\"saveAsNew()\">\n {{ localeData.saveButton }}\n </button>\n <button kbq-button [color]=\"'contrast-fade'\" [kbqStyle]=\"'filled'\" (click)=\"closePopover()\">\n {{ localeData.cancelButton }}\n </button>\n</ng-template>\n","import {\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 standalone: true,\n selector: 'kbq-filter-bar, [kbq-filter-bar]',\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]\" />\n\n <ng-content select=\"kbq-filter-refresher, [kbq-filter-refresher]\" />\n </div>\n `,\n styleUrls: ['filter-bar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KbqDividerModule],\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 /** 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 set pipeTemplates(value: KbqPipeTemplate[]) {\n this._templates = value;\n\n this.internalTemplatesChanges.next(this._templates);\n }\n\n get pipeTemplates(): KbqPipeTemplate[] {\n return 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\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 /** 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 }\n\n this.filterChange.emit(this.filter);\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 standalone: true,\n selector: 'kbq-filter-refresher, [kbq-filter-refresher]',\n template: `\n <button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\" kbq-button>\n <i kbq-icon=\"kbq-arrow-rotate-right_16\"></i>\n </button>\n <button [color]=\"'contrast'\" [kbqStyle]=\"'transparent'\" kbq-button>\n <i kbq-icon=\"kbq-chevron-down_16\"></i>\n </button>\n `,\n styleUrls: ['filter-refresher.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n KbqButtonModule,\n KbqIconModule\n ],\n host: {\n class: 'kbq-filter-refresher'\n }\n})\nexport class KbqFilterBarRefresher {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\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 { KbqFilterBar } from './filter-bar';\n\n@Component({\n standalone: true,\n selector: 'kbq-filter-search, [kbq-filter-search]',\n template: `\n <button\n [class.kbq-filter_hidden]=\"isSearchActive\"\n [color]=\"'contrast'\"\n [kbqStyle]=\"'transparent'\"\n (click)=\"openSearch()\"\n kbq-button\n kbqTooltip=\"{{ localeData.tooltip }}\"\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 [formControl]=\"searchControl\"\n (blur)=\"onBlur()\"\n (keydown.escape)=\"onEscape()\"\n autocomplete=\"off\"\n kbqInput\n placeholder=\"{{ localeData.placeholder }}\"\n />\n\n <kbq-cleaner (click)=\"onClear()\" />\n </kbq-form-field>\n `,\n styleUrl: 'filter-search.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n KbqDividerModule,\n KbqButtonModule,\n KbqToolTipModule,\n KbqIconModule,\n KbqFormFieldModule,\n KbqInputModule,\n ReactiveFormsModule\n ],\n host: {\n class: 'kbq-filter-search'\n }\n})\nexport class KbqFilterBarSearch {\n /** KbqFilterBar instance */\n private readonly filterBar = inject(KbqFilterBar);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\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 /** event that is generated whenever a user performs a search. */\n @Output() readonly onSearch = new EventEmitter<string>();\n\n constructor() {\n this.searchControl.valueChanges.subscribe(this.onSearch);\n\n this.filterBar.filterReset?.onResetFilter.pipe(takeUntilDestroyed()).subscribe(this.onReset);\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 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, KbqSelectMatcher } 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';\n\n@Component({\n standalone: true,\n selector: 'kbq-pipe-add',\n template: `\n <kbq-select #select [tabIndex]=\"-1\" [multiple]=\"true\" [value]=\"addedPipes\" [compareWith]=\"compareWith\">\n <button\n [color]=\"'contrast-fade'\"\n [kbqStyle]=\"'outline'\"\n [ngClass]=\"{ 'kbq-active': select.panelOpen }\"\n kbq-button\n kbqTooltip=\"{{ filterBar.configuration.add.tooltip }}\"\n kbq-select-matcher\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 host: {\n class: 'kbq-pipe-add'\n },\n imports: [\n KbqDropdownModule,\n KbqToolTipModule,\n KbqButtonModule,\n KbqIcon,\n KbqOptionModule,\n KbqSelectMatcher,\n KbqSelectModule,\n NgClass\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\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) => pipe.id || pipe.name);\n }\n });\n }\n\n addPipeFromTemplate(option: KbqOption) {\n if (option.selected) {\n this.filterBar.openPipe.next(option.value.id || option.value.name);\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 (o1.id || o1.name) === 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 standalone: true,\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 exports: COMPONENTS,\n imports: 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","i3","i4","i5","i7","i8"],"mappings":"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"}