@cuby-ui/core 0.0.558 → 0.0.559

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 (44) hide show
  1. package/components/date-range-calendar/date-range-calendar.component.d.ts +53 -0
  2. package/components/date-range-calendar/date-range-calendar.interfaces.d.ts +1 -0
  3. package/components/date-range-calendar/date-range-calendar.module.d.ts +7 -0
  4. package/components/date-range-calendar/index.d.ts +3 -0
  5. package/components/filter-bar/components/add-filter-button/add-filter-button.component.d.ts +10 -0
  6. package/components/filter-bar/components/date-filter/date-filter.component.d.ts +32 -0
  7. package/components/filter-bar/components/filter-remove-button/filter-remove-button.component.d.ts +8 -0
  8. package/components/filter-bar/components/index.d.ts +7 -0
  9. package/components/filter-bar/components/multiselect-filter/multiselect-filter.component.d.ts +16 -0
  10. package/components/filter-bar/components/range-filter/range-filter.component.d.ts +23 -0
  11. package/components/filter-bar/components/select-filter/select-filter.component.d.ts +17 -0
  12. package/components/filter-bar/components/string-filter/string-filter.component.d.ts +17 -0
  13. package/components/filter-bar/filter-bar.component.d.ts +14 -0
  14. package/components/filter-bar/filter-bar.interfaces.d.ts +89 -0
  15. package/components/filter-bar/filter-bar.module.d.ts +7 -0
  16. package/components/filter-bar/filter-bar.utils.d.ts +3 -0
  17. package/components/filter-bar/index.d.ts +3 -0
  18. package/components/index.d.ts +2 -0
  19. package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
  20. package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
  21. package/esm2022/components/date-range-calendar/date-range-calendar.component.mjs +206 -0
  22. package/esm2022/components/date-range-calendar/date-range-calendar.interfaces.mjs +2 -0
  23. package/esm2022/components/date-range-calendar/date-range-calendar.module.mjs +16 -0
  24. package/esm2022/components/date-range-calendar/index.mjs +3 -0
  25. package/esm2022/components/filter-bar/components/add-filter-button/add-filter-button.component.mjs +25 -0
  26. package/esm2022/components/filter-bar/components/date-filter/date-filter.component.mjs +147 -0
  27. package/esm2022/components/filter-bar/components/filter-remove-button/filter-remove-button.component.mjs +20 -0
  28. package/esm2022/components/filter-bar/components/index.mjs +8 -0
  29. package/esm2022/components/filter-bar/components/multiselect-filter/multiselect-filter.component.mjs +70 -0
  30. package/esm2022/components/filter-bar/components/range-filter/range-filter.component.mjs +99 -0
  31. package/esm2022/components/filter-bar/components/select-filter/select-filter.component.mjs +63 -0
  32. package/esm2022/components/filter-bar/components/string-filter/string-filter.component.mjs +66 -0
  33. package/esm2022/components/filter-bar/filter-bar.component.mjs +52 -0
  34. package/esm2022/components/filter-bar/filter-bar.interfaces.mjs +3 -0
  35. package/esm2022/components/filter-bar/filter-bar.module.mjs +16 -0
  36. package/esm2022/components/filter-bar/filter-bar.utils.mjs +114 -0
  37. package/esm2022/components/filter-bar/index.mjs +3 -0
  38. package/esm2022/components/index.mjs +3 -1
  39. package/fesm2022/cuby-ui-core.mjs +828 -18
  40. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  41. package/package.json +1 -1
  42. package/widgets/ui/categories/components/category-item/category-item.component.d.ts +2 -2
  43. package/widgets/ui/loader/components/stated-loader/stated-loader.component.d.ts +1 -1
  44. package/widgets/ui/storage-list/components/storage-list-item/storage-list-item.component.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, inject, Renderer2, input, model, effect, Directive, InjectionToken, Input, HostBinding, ChangeDetectorRef, ViewChild, EventEmitter, Output, NgModule, Injector, Injectable, SkipSelf, Optional, DestroyRef, NgZone, signal, Self, INJECTOR, TemplateRef, forwardRef, ViewEncapsulation, computed, ContentChildren, ElementRef, HostListener, ViewContainerRef, booleanAttribute, untracked, Pipe, makeEnvironmentProviders, APP_INITIALIZER, ErrorHandler, viewChild, output } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, inject, Renderer2, input, model, effect, Directive, InjectionToken, Input, HostBinding, ChangeDetectorRef, ViewChild, EventEmitter, Output, NgModule, Injector, Injectable, SkipSelf, Optional, DestroyRef, NgZone, signal, Self, INJECTOR, TemplateRef, forwardRef, ViewEncapsulation, computed, ContentChildren, output, ElementRef, HostListener, ViewContainerRef, booleanAttribute, untracked, Pipe, makeEnvironmentProviders, APP_INITIALIZER, ErrorHandler, viewChild } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT, NgForOf, NgIf, NgComponentOutlet, NgTemplateOutlet, NgFor, NgClass, Location, UpperCasePipe, AsyncPipe, KeyValuePipe, LowerCasePipe, TitleCasePipe } from '@angular/common';
5
5
  import { DomSanitizer } from '@angular/platform-browser';
@@ -15,7 +15,7 @@ import { CuiExchangeContextApiService, CuiJTextApiService, CuiTreeStructNavigato
15
15
  import { HttpErrorResponse } from '@angular/common/http';
16
16
  import * as i4 from '@jsverse/transloco';
17
17
  import { TranslocoService, TranslocoModule, TranslocoDirective, TranslocoPipe } from '@jsverse/transloco';
18
- import * as i2$1 from '@angular/forms';
18
+ import * as i5 from '@angular/forms';
19
19
  import { Validators, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule, FormControl, NonNullableFormBuilder } from '@angular/forms';
20
20
  import * as i2 from '@taiga-ui/polymorpheus';
21
21
  import { PolymorpheusComponent, injectContext, PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
@@ -2536,6 +2536,219 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2536
2536
  args: [{ selector: 'header[cuiContentHeader]', imports: [CuiSvgModule, CuiTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"wrapper\">\n <span class=\"heading\">\n {{ heading() }}\n\n @if (tooltip(); as tooltip) {\n <cui-svg\n icon=\"cuiIconQuestionCircleBold\"\n [cuiTooltip]=\"tooltip\"\n />\n }\n </span>\n\n @if (subheading(); as subheading) {\n <h2 class=\"subheading\">{{ subheading }}</h2>\n }\n</div>\n\n<ng-content />\n", styles: [":host{display:flex;justify-content:space-between;align-items:center;gap:12px}.wrapper{display:flex;flex-direction:column;gap:4px}.heading{display:flex;flex-direction:row;gap:4px;align-items:center;justify-content:flex-start;font-weight:500;font-size:16px;line-height:24px}.subheading{font-weight:400;font-size:14px;line-height:20px;color:var(--cui-base-500)}\n"] }]
2537
2537
  }] });
2538
2538
 
2539
+ class CuiDateRangeCalendarComponent {
2540
+ constructor() {
2541
+ /** Selection mode: 'range' for date range, 'single' for single date */
2542
+ this.mode = input('range');
2543
+ /** Start date of the range */
2544
+ this.startDate = input(null);
2545
+ /** End date of the range */
2546
+ this.endDate = input(null);
2547
+ /** Selected date (for single mode) */
2548
+ this.selectedDate = input(null);
2549
+ /** Emitted when a date range is applied */
2550
+ this.rangeSelected = output();
2551
+ /** Emitted when a single date is applied */
2552
+ this.dateSelected = output();
2553
+ /** Emitted when the user cancels */
2554
+ this.cancelled = output();
2555
+ /** Currently displayed month */
2556
+ this.currentMonth = signal(new Date());
2557
+ /** Temporary start date (during range selection) */
2558
+ this.tmpStartDate = signal(null);
2559
+ /** Temporary end date (during range selection) */
2560
+ this.tmpEndDate = signal(null);
2561
+ /** Temporary selected date (for single mode) */
2562
+ this.tmpSelectedDate = signal(null);
2563
+ /** Week day labels */
2564
+ this.weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
2565
+ /** Current month display name */
2566
+ this.currentMonthName = computed(() => {
2567
+ const date = this.currentMonth();
2568
+ return date.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });
2569
+ });
2570
+ /** Calendar days grid */
2571
+ this.calendarDays = computed(() => {
2572
+ const date = this.currentMonth();
2573
+ const year = date.getFullYear();
2574
+ const month = date.getMonth();
2575
+ const firstDay = new Date(year, month, 1);
2576
+ const lastDay = new Date(year, month + 1, 0);
2577
+ // Get the day of the week for the first day (0 = Sunday, convert so Monday = 0)
2578
+ let startDayOfWeek = firstDay.getDay() - 1;
2579
+ if (startDayOfWeek < 0) {
2580
+ startDayOfWeek = 6;
2581
+ }
2582
+ const days = [];
2583
+ // Add previous month's trailing days
2584
+ const prevMonthLastDay = new Date(year, month, 0).getDate();
2585
+ for (let i = startDayOfWeek - 1; i >= 0; i--) {
2586
+ days.push({
2587
+ date: new Date(year, month - 1, prevMonthLastDay - i),
2588
+ isCurrentMonth: false
2589
+ });
2590
+ }
2591
+ // Add current month's days
2592
+ for (let i = 1; i <= lastDay.getDate(); i++) {
2593
+ days.push({
2594
+ date: new Date(year, month, i),
2595
+ isCurrentMonth: true
2596
+ });
2597
+ }
2598
+ // Add next month's leading days to fill the grid (6 rows x 7 days = 42)
2599
+ const remainingDays = 42 - days.length;
2600
+ for (let i = 1; i <= remainingDays; i++) {
2601
+ days.push({
2602
+ date: new Date(year, month + 1, i),
2603
+ isCurrentMonth: false
2604
+ });
2605
+ }
2606
+ return days;
2607
+ });
2608
+ // Initialize temporary values from inputs via effect (signal inputs are not resolved in constructor)
2609
+ effect(() => {
2610
+ if (this.mode() === 'range') {
2611
+ const start = this.startDate();
2612
+ const end = this.endDate();
2613
+ if (start) {
2614
+ this.tmpStartDate.set(start);
2615
+ this.currentMonth.set(new Date(start.getFullYear(), start.getMonth(), 1));
2616
+ }
2617
+ if (end) {
2618
+ this.tmpEndDate.set(end);
2619
+ }
2620
+ }
2621
+ else {
2622
+ const selected = this.selectedDate();
2623
+ if (selected) {
2624
+ this.tmpSelectedDate.set(selected);
2625
+ this.currentMonth.set(new Date(selected.getFullYear(), selected.getMonth(), 1));
2626
+ }
2627
+ }
2628
+ });
2629
+ }
2630
+ goToPrevMonth() {
2631
+ const current = this.currentMonth();
2632
+ this.currentMonth.set(new Date(current.getFullYear(), current.getMonth() - 1, 1));
2633
+ }
2634
+ goToNextMonth() {
2635
+ const current = this.currentMonth();
2636
+ this.currentMonth.set(new Date(current.getFullYear(), current.getMonth() + 1, 1));
2637
+ }
2638
+ selectDate(date) {
2639
+ if (this.mode() !== 'range') {
2640
+ // Single date mode - just select the date
2641
+ this.tmpSelectedDate.set(date);
2642
+ return;
2643
+ }
2644
+ // Range mode
2645
+ const start = this.tmpStartDate();
2646
+ const end = this.tmpEndDate();
2647
+ if (!start || (start && end)) {
2648
+ // Start a new selection
2649
+ this.tmpStartDate.set(date);
2650
+ this.tmpEndDate.set(null);
2651
+ }
2652
+ else {
2653
+ // Complete the selection
2654
+ if (date < start) {
2655
+ // If selected date is before start, swap them
2656
+ this.tmpEndDate.set(start);
2657
+ this.tmpStartDate.set(date);
2658
+ }
2659
+ else {
2660
+ this.tmpEndDate.set(date);
2661
+ }
2662
+ }
2663
+ }
2664
+ isSelected(date) {
2665
+ if (this.mode() !== 'range') {
2666
+ // Single date mode
2667
+ const selected = this.tmpSelectedDate();
2668
+ return selected !== null && this.isSameDay(date, selected);
2669
+ }
2670
+ // Range mode
2671
+ const start = this.tmpStartDate();
2672
+ const end = this.tmpEndDate();
2673
+ if (start && this.isSameDay(date, start)) {
2674
+ return true;
2675
+ }
2676
+ if (end && this.isSameDay(date, end)) {
2677
+ return true;
2678
+ }
2679
+ return false;
2680
+ }
2681
+ isInRange(date) {
2682
+ const start = this.tmpStartDate();
2683
+ const end = this.tmpEndDate();
2684
+ if (!start || !end) {
2685
+ return false;
2686
+ }
2687
+ return date > start && date < end;
2688
+ }
2689
+ isRangeStart(date) {
2690
+ const start = this.tmpStartDate();
2691
+ return start !== null && this.isSameDay(date, start);
2692
+ }
2693
+ isRangeEnd(date) {
2694
+ const end = this.tmpEndDate();
2695
+ return end !== null && this.isSameDay(date, end);
2696
+ }
2697
+ isToday(date) {
2698
+ return this.isSameDay(date, new Date());
2699
+ }
2700
+ apply() {
2701
+ if (this.mode() !== 'range') {
2702
+ // Single date mode
2703
+ const selected = this.tmpSelectedDate();
2704
+ if (selected) {
2705
+ this.dateSelected.emit(selected);
2706
+ }
2707
+ }
2708
+ else {
2709
+ // Range mode
2710
+ const start = this.tmpStartDate();
2711
+ const end = this.tmpEndDate();
2712
+ if (start && end) {
2713
+ this.rangeSelected.emit({ start, end });
2714
+ }
2715
+ }
2716
+ }
2717
+ cancel() {
2718
+ this.cancelled.emit();
2719
+ }
2720
+ hasSelection() {
2721
+ if (this.mode() !== 'range') {
2722
+ return this.tmpSelectedDate() !== null;
2723
+ }
2724
+ return this.tmpStartDate() !== null;
2725
+ }
2726
+ isSameDay(date1, date2) {
2727
+ return (date1.getFullYear() === date2.getFullYear() &&
2728
+ date1.getMonth() === date2.getMonth() &&
2729
+ date1.getDate() === date2.getDate());
2730
+ }
2731
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDateRangeCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2732
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiDateRangeCalendarComponent, isStandalone: true, selector: "cui-date-range-calendar", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, startDate: { classPropertyName: "startDate", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rangeSelected: "rangeSelected", dateSelected: "dateSelected", cancelled: "cancelled" }, ngImport: i0, template: "<div class=\"cui-calendar\">\n <div class=\"cui-calendar__header\">\n <button\n type=\"button\"\n class=\"cui-calendar__nav-btn\"\n (click)=\"goToPrevMonth()\"\n >\n <cui-svg icon=\"cuiIconChevronLeft\" />\n </button>\n <span class=\"cui-calendar__month-name\">{{ currentMonthName() }}</span>\n <button\n type=\"button\"\n class=\"cui-calendar__nav-btn\"\n (click)=\"goToNextMonth()\"\n >\n <cui-svg icon=\"cuiIconChevronRight\" />\n </button>\n </div>\n\n <div class=\"cui-calendar__weekdays\">\n @for (day of weekDays; track day) {\n <div class=\"cui-calendar__weekday\">{{ day }}</div>\n }\n </div>\n\n <div class=\"cui-calendar__days\">\n @for (day of calendarDays(); track day.date.getTime()) {\n <button\n type=\"button\"\n class=\"cui-calendar__day\"\n [class.cui-calendar__day--other-month]=\"!day.isCurrentMonth\"\n [class.cui-calendar__day--selected]=\"isSelected(day.date)\"\n [class.cui-calendar__day--in-range]=\"isInRange(day.date)\"\n [class.cui-calendar__day--range-start]=\"isRangeStart(day.date)\"\n [class.cui-calendar__day--range-end]=\"isRangeEnd(day.date)\"\n [class.cui-calendar__day--today]=\"isToday(day.date)\"\n (click)=\"selectDate(day.date)\"\n >\n {{ day.date.getDate() }}\n </button>\n }\n </div>\n\n <div class=\"cui-calendar__footer\">\n <button\n type=\"button\"\n cuiButton\n appearance=\"secondary\"\n (click)=\"cancel()\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n cuiButton\n appearance=\"action\"\n [disabled]=\"!hasSelection()\"\n (click)=\"apply()\"\n >\n Apply\n </button>\n </div>\n</div>\n", styles: [".cui-calendar{display:flex;flex-direction:column;padding:12px;min-width:280px}.cui-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.cui-calendar__nav-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:6px;cursor:pointer;transition:background .2s}.cui-calendar__nav-btn:hover{background:var(--cui-base-100)}.cui-calendar__month-name{font-weight:500;font-size:14px;line-height:20px;color:var(--cui-base-900)}.cui-calendar__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}.cui-calendar__weekday{font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:center;justify-content:center;height:32px;color:var(--cui-base-500)}.cui-calendar__days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.cui-calendar__day{font-weight:400;font-size:13px;line-height:16px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:6px;cursor:pointer;transition:background .2s;color:var(--cui-base-900)}.cui-calendar__day:hover{background:var(--cui-base-100)}.cui-calendar__day--other-month{color:var(--cui-base-400)}.cui-calendar__day--today{font-weight:600;border:1px solid var(--cui-base-300)}.cui-calendar__day--selected{background:var(--cui-light-blue-600);color:var(--cui-base-0)}.cui-calendar__day--selected:hover{background:var(--cui-light-blue-700)}.cui-calendar__day--in-range{background:var(--cui-lavender-bg);border-radius:0}.cui-calendar__day--in-range:hover{background:var(--cui-base-200)}.cui-calendar__day--range-start{border-radius:6px 0 0 6px}.cui-calendar__day--range-end{border-radius:0 6px 6px 0}.cui-calendar__day--range-start.cui-calendar__day--range-end{border-radius:6px}.cui-calendar__footer{display:flex;gap:8px;justify-content:flex-end;margin-top:12px;padding-top:12px;border-top:1px solid var(--cui-base-200)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2733
+ }
2734
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDateRangeCalendarComponent, decorators: [{
2735
+ type: Component,
2736
+ args: [{ selector: 'cui-date-range-calendar', standalone: true, imports: [CuiButtonModule, CuiSvgModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cui-calendar\">\n <div class=\"cui-calendar__header\">\n <button\n type=\"button\"\n class=\"cui-calendar__nav-btn\"\n (click)=\"goToPrevMonth()\"\n >\n <cui-svg icon=\"cuiIconChevronLeft\" />\n </button>\n <span class=\"cui-calendar__month-name\">{{ currentMonthName() }}</span>\n <button\n type=\"button\"\n class=\"cui-calendar__nav-btn\"\n (click)=\"goToNextMonth()\"\n >\n <cui-svg icon=\"cuiIconChevronRight\" />\n </button>\n </div>\n\n <div class=\"cui-calendar__weekdays\">\n @for (day of weekDays; track day) {\n <div class=\"cui-calendar__weekday\">{{ day }}</div>\n }\n </div>\n\n <div class=\"cui-calendar__days\">\n @for (day of calendarDays(); track day.date.getTime()) {\n <button\n type=\"button\"\n class=\"cui-calendar__day\"\n [class.cui-calendar__day--other-month]=\"!day.isCurrentMonth\"\n [class.cui-calendar__day--selected]=\"isSelected(day.date)\"\n [class.cui-calendar__day--in-range]=\"isInRange(day.date)\"\n [class.cui-calendar__day--range-start]=\"isRangeStart(day.date)\"\n [class.cui-calendar__day--range-end]=\"isRangeEnd(day.date)\"\n [class.cui-calendar__day--today]=\"isToday(day.date)\"\n (click)=\"selectDate(day.date)\"\n >\n {{ day.date.getDate() }}\n </button>\n }\n </div>\n\n <div class=\"cui-calendar__footer\">\n <button\n type=\"button\"\n cuiButton\n appearance=\"secondary\"\n (click)=\"cancel()\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n cuiButton\n appearance=\"action\"\n [disabled]=\"!hasSelection()\"\n (click)=\"apply()\"\n >\n Apply\n </button>\n </div>\n</div>\n", styles: [".cui-calendar{display:flex;flex-direction:column;padding:12px;min-width:280px}.cui-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.cui-calendar__nav-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:6px;cursor:pointer;transition:background .2s}.cui-calendar__nav-btn:hover{background:var(--cui-base-100)}.cui-calendar__month-name{font-weight:500;font-size:14px;line-height:20px;color:var(--cui-base-900)}.cui-calendar__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}.cui-calendar__weekday{font-weight:500;font-size:12px;line-height:14px;display:flex;align-items:center;justify-content:center;height:32px;color:var(--cui-base-500)}.cui-calendar__days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.cui-calendar__day{font-weight:400;font-size:13px;line-height:16px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:6px;cursor:pointer;transition:background .2s;color:var(--cui-base-900)}.cui-calendar__day:hover{background:var(--cui-base-100)}.cui-calendar__day--other-month{color:var(--cui-base-400)}.cui-calendar__day--today{font-weight:600;border:1px solid var(--cui-base-300)}.cui-calendar__day--selected{background:var(--cui-light-blue-600);color:var(--cui-base-0)}.cui-calendar__day--selected:hover{background:var(--cui-light-blue-700)}.cui-calendar__day--in-range{background:var(--cui-lavender-bg);border-radius:0}.cui-calendar__day--in-range:hover{background:var(--cui-base-200)}.cui-calendar__day--range-start{border-radius:6px 0 0 6px}.cui-calendar__day--range-end{border-radius:0 6px 6px 0}.cui-calendar__day--range-start.cui-calendar__day--range-end{border-radius:6px}.cui-calendar__footer{display:flex;gap:8px;justify-content:flex-end;margin-top:12px;padding-top:12px;border-top:1px solid var(--cui-base-200)}\n"] }]
2737
+ }], ctorParameters: () => [] });
2738
+
2739
+ class CuiDateRangeCalendarModule {
2740
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDateRangeCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2741
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: CuiDateRangeCalendarModule, imports: [CuiDateRangeCalendarComponent], exports: [CuiDateRangeCalendarComponent] }); }
2742
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDateRangeCalendarModule, imports: [CuiDateRangeCalendarComponent] }); }
2743
+ }
2744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDateRangeCalendarModule, decorators: [{
2745
+ type: NgModule,
2746
+ args: [{
2747
+ imports: [CuiDateRangeCalendarComponent],
2748
+ exports: [CuiDateRangeCalendarComponent]
2749
+ }]
2750
+ }] });
2751
+
2539
2752
  const CUI_ROOT_SELECTOR = 'cui-root';
2540
2753
 
2541
2754
  const CUI_DIALOGS = cuiCreateToken(new BehaviorSubject([]));
@@ -3249,7 +3462,7 @@ class CuiInputNumberComponent {
3249
3462
  });
3250
3463
  }
3251
3464
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3252
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: { precision: "precision", min: "min", max: "max" }, host: { listeners: { "click": "onFocus()" }, properties: { "class._disabled": "this.isDisabled", "attr.data-size": "this.size", "class._with-error": "this.isError" } }, providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [maskito]=\"maskOptions\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n", styles: [":host{--cui-input-autofill-bg: var(--cui-input);--cui-input-autofill-color: var(--cui-base-900);padding-right:13px;padding-left:13px;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;cursor:text;background:var(--cui-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}:host:hover{border-color:var(--cui-base-300)}:host:focus-within{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}:host[data-size=sm]{padding-top:7px;padding-bottom:7px}:host[data-size=md]{padding-top:8px;padding-bottom:8px}:host._disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}:host._with-error{border-color:var(--cui-danger)}:host._with-error:focus-within{box-shadow:0 0 0 2px #d92d2040}.c-input{padding:0;outline:none;margin:0;border-width:0;appearance:none;caret-color:currentColor;background:none;color:inherit;font:inherit;line-height:inherit;width:100%}.c-input:-webkit-autofill,.c-input:-webkit-autofill:hover,.c-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 200px var(--cui-input-autofill-bg) inset;-webkit-text-fill-color:var(--cui-input-autofill-color);caret-color:var(--cui-input-autofill-color)}.c-input:disabled{cursor:not-allowed}.c-input::placeholder{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3465
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: { precision: "precision", min: "min", max: "max" }, host: { listeners: { "click": "onFocus()" }, properties: { "class._disabled": "this.isDisabled", "attr.data-size": "this.size", "class._with-error": "this.isError" } }, providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputNumberComponent, true)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [maskito]=\"maskOptions\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n", styles: [":host{--cui-input-autofill-bg: var(--cui-input);--cui-input-autofill-color: var(--cui-base-900);padding-right:13px;padding-left:13px;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;cursor:text;background:var(--cui-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}:host:hover{border-color:var(--cui-base-300)}:host:focus-within{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}:host[data-size=sm]{padding-top:7px;padding-bottom:7px}:host[data-size=md]{padding-top:8px;padding-bottom:8px}:host._disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}:host._with-error{border-color:var(--cui-danger)}:host._with-error:focus-within{box-shadow:0 0 0 2px #d92d2040}.c-input{padding:0;outline:none;margin:0;border-width:0;appearance:none;caret-color:currentColor;background:none;color:inherit;font:inherit;line-height:inherit;width:100%}.c-input:-webkit-autofill,.c-input:-webkit-autofill:hover,.c-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 200px var(--cui-input-autofill-bg) inset;-webkit-text-fill-color:var(--cui-input-autofill-color);caret-color:var(--cui-input-autofill-color)}.c-input:disabled{cursor:not-allowed}.c-input::placeholder{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3253
3466
  }
3254
3467
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInputNumberComponent, decorators: [{
3255
3468
  type: Component,
@@ -3391,7 +3604,7 @@ class CuiInputPasswordComponent {
3391
3604
  this.isPasswordHidden = !this.isPasswordHidden;
3392
3605
  }
3393
3606
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInputPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3394
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CuiInputPasswordComponent, selector: "cui-input-password", host: { properties: { "class._disabled": "this.isDisabled", "attr.data-size": "this.size", "class._with-error": "this.isError" } }, providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)], ngImport: i0, template: "<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n<button\n *ngIf=\"isToggleButtonShown\"\n [title]=\"buttonTitle\"\n class=\"c-button\"\n (click)=\"onTogglePasswordVisibility()\"\n>\n <cui-svg\n [icon]=\"icon\"\n [width]=\"16\"\n [height]=\"16\"\n color=\"var(--cui-base-500)\"\n ></cui-svg>\n</button>\n", styles: [":host{--cui-input-autofill-bg: var(--cui-input);--cui-input-autofill-color: var(--cui-base-900);padding-right:13px;padding-left:13px;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;cursor:text;background:var(--cui-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}:host:hover{border-color:var(--cui-base-300)}:host:focus-within{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}:host[data-size=sm]{padding-top:7px;padding-bottom:7px}:host[data-size=md]{padding-top:8px;padding-bottom:8px}:host._disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}:host._with-error{border-color:var(--cui-danger)}:host._with-error:focus-within{box-shadow:0 0 0 2px #d92d2040}.c-input{padding:0;outline:none;margin:0;border-width:0;appearance:none;caret-color:currentColor;background:none;color:inherit;font:inherit;line-height:inherit;width:100%}.c-input:-webkit-autofill,.c-input:-webkit-autofill:hover,.c-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 200px var(--cui-input-autofill-bg) inset;-webkit-text-fill-color:var(--cui-input-autofill-color);caret-color:var(--cui-input-autofill-color)}.c-input:disabled{cursor:not-allowed}.c-input::placeholder{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;display:flex}.c-input::-ms-reveal{display:none}.c-input[type=password]{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3607
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CuiInputPasswordComponent, selector: "cui-input-password", host: { properties: { "class._disabled": "this.isDisabled", "attr.data-size": "this.size", "class._with-error": "this.isError" } }, providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputPasswordComponent, true)], ngImport: i0, template: "<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n<button\n *ngIf=\"isToggleButtonShown\"\n [title]=\"buttonTitle\"\n class=\"c-button\"\n (click)=\"onTogglePasswordVisibility()\"\n>\n <cui-svg\n [icon]=\"icon\"\n [width]=\"16\"\n [height]=\"16\"\n color=\"var(--cui-base-500)\"\n ></cui-svg>\n</button>\n", styles: [":host{--cui-input-autofill-bg: var(--cui-input);--cui-input-autofill-color: var(--cui-base-900);padding-right:13px;padding-left:13px;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;cursor:text;background:var(--cui-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}:host:hover{border-color:var(--cui-base-300)}:host:focus-within{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}:host[data-size=sm]{padding-top:7px;padding-bottom:7px}:host[data-size=md]{padding-top:8px;padding-bottom:8px}:host._disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}:host._with-error{border-color:var(--cui-danger)}:host._with-error:focus-within{box-shadow:0 0 0 2px #d92d2040}.c-input{padding:0;outline:none;margin:0;border-width:0;appearance:none;caret-color:currentColor;background:none;color:inherit;font:inherit;line-height:inherit;width:100%}.c-input:-webkit-autofill,.c-input:-webkit-autofill:hover,.c-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 200px var(--cui-input-autofill-bg) inset;-webkit-text-fill-color:var(--cui-input-autofill-color);caret-color:var(--cui-input-autofill-color)}.c-input:disabled{cursor:not-allowed}.c-input::placeholder{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;display:flex}.c-input::-ms-reveal{display:none}.c-input[type=password]{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3395
3608
  }
3396
3609
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInputPasswordComponent, decorators: [{
3397
3610
  type: Component,
@@ -3474,7 +3687,7 @@ class CuiInputTextComponent {
3474
3687
  this.onChange(value);
3475
3688
  }
3476
3689
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInputTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3477
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CuiInputTextComponent, selector: "cui-input-text", host: { listeners: { "click": "onFocus()" }, properties: { "class._disabled": "this.isDisabled", "attr.data-size": "this.size", "class._with-error": "this.isError" } }, providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n<button\n type=\"button\"\n class=\"c-button\"\n [class.c-button_hidden]=\"isClearButtonHidden\"\n (click)=\"onClear()\"\n>\n <cui-svg\n icon=\"cuiIconClear\"\n color=\"var(--cui-base-300)\"\n class=\"c-close-icon\"\n />\n</button>\n", styles: [":host{--cui-input-autofill-bg: var(--cui-input);--cui-input-autofill-color: var(--cui-base-900);padding-right:13px;padding-left:13px;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;cursor:text;background:var(--cui-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}:host:hover{border-color:var(--cui-base-300)}:host:focus-within{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}:host[data-size=sm]{padding-top:7px;padding-bottom:7px}:host[data-size=md]{padding-top:8px;padding-bottom:8px}:host._disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}:host._with-error{border-color:var(--cui-danger)}:host._with-error:focus-within{box-shadow:0 0 0 2px #d92d2040}.c-input{padding:0;outline:none;margin:0;border-width:0;appearance:none;caret-color:currentColor;background:none;color:inherit;font:inherit;line-height:inherit;width:100%}.c-input:-webkit-autofill,.c-input:-webkit-autofill:hover,.c-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 200px var(--cui-input-autofill-bg) inset;-webkit-text-fill-color:var(--cui-input-autofill-color);caret-color:var(--cui-input-autofill-color)}.c-input:disabled{cursor:not-allowed}.c-input::placeholder{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;display:flex}.c-close-icon ::ng-deep path{stroke:var(--cui-base-0)!important}.c-button_hidden{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3690
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CuiInputTextComponent, selector: "cui-input-text", host: { listeners: { "click": "onFocus()" }, properties: { "class._disabled": "this.isDisabled", "attr.data-size": "this.size", "class._with-error": "this.isError" } }, providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTextComponent, true)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<cui-svg\n *ngIf=\"iconLeft\"\n [icon]=\"iconLeft\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"value\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n<button\n type=\"button\"\n class=\"c-button\"\n [class.c-button_hidden]=\"isClearButtonHidden\"\n (click)=\"onClear()\"\n>\n <cui-svg\n icon=\"cuiIconClear\"\n color=\"var(--cui-base-300)\"\n class=\"c-close-icon\"\n />\n</button>\n", styles: [":host{--cui-input-autofill-bg: var(--cui-input);--cui-input-autofill-color: var(--cui-base-900);padding-right:13px;padding-left:13px;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;cursor:text;background:var(--cui-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}:host:hover{border-color:var(--cui-base-300)}:host:focus-within{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}:host[data-size=sm]{padding-top:7px;padding-bottom:7px}:host[data-size=md]{padding-top:8px;padding-bottom:8px}:host._disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}:host._with-error{border-color:var(--cui-danger)}:host._with-error:focus-within{box-shadow:0 0 0 2px #d92d2040}.c-input{padding:0;outline:none;margin:0;border-width:0;appearance:none;caret-color:currentColor;background:none;color:inherit;font:inherit;line-height:inherit;width:100%}.c-input:-webkit-autofill,.c-input:-webkit-autofill:hover,.c-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 200px var(--cui-input-autofill-bg) inset;-webkit-text-fill-color:var(--cui-input-autofill-color);caret-color:var(--cui-input-autofill-color)}.c-input:disabled{cursor:not-allowed}.c-input::placeholder{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;display:flex}.c-close-icon ::ng-deep path{stroke:var(--cui-base-0)!important}.c-button_hidden{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3478
3691
  }
3479
3692
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInputTextComponent, decorators: [{
3480
3693
  type: Component,
@@ -3576,7 +3789,7 @@ class CuiInputTimeComponent {
3576
3789
  return maskitoTimeOptionsGenerator({ mode });
3577
3790
  }
3578
3791
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInputTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3579
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CuiInputTimeComponent, selector: "cui-input-time", inputs: { mode: "mode" }, host: { listeners: { "click": "onFocus()" }, properties: { "class._disabled": "this.isDisabled", "attr.data-size": "this.size", "class._with-error": "this.isError" } }, providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<cui-svg\n icon=\"cuiIconClock\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"computedValue\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [maskito]=\"maskOptions\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n", styles: [":host{--cui-input-autofill-bg: var(--cui-input);--cui-input-autofill-color: var(--cui-base-900);padding-right:13px;padding-left:13px;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;cursor:text;background:var(--cui-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}:host:hover{border-color:var(--cui-base-300)}:host:focus-within{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}:host[data-size=sm]{padding-top:7px;padding-bottom:7px}:host[data-size=md]{padding-top:8px;padding-bottom:8px}:host._disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}:host._with-error{border-color:var(--cui-danger)}:host._with-error:focus-within{box-shadow:0 0 0 2px #d92d2040}.c-input{padding:0;outline:none;margin:0;border-width:0;appearance:none;caret-color:currentColor;background:none;color:inherit;font:inherit;line-height:inherit;width:100%}.c-input:-webkit-autofill,.c-input:-webkit-autofill:hover,.c-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 200px var(--cui-input-autofill-bg) inset;-webkit-text-fill-color:var(--cui-input-autofill-color);caret-color:var(--cui-input-autofill-color)}.c-input:disabled{cursor:not-allowed}.c-input::placeholder{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;display:flex}\n"], dependencies: [{ kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3792
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CuiInputTimeComponent, selector: "cui-input-time", inputs: { mode: "mode" }, host: { listeners: { "click": "onFocus()" }, properties: { "class._disabled": "this.isDisabled", "attr.data-size": "this.size", "class._with-error": "this.isError" } }, providers: [CUI_TEXT_FILED_CONTROLLER_PROVIDER, cuiProvide(NG_VALUE_ACCESSOR, CuiInputTimeComponent, true)], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<cui-svg\n icon=\"cuiIconClock\"\n color=\"var(--cui-base-500)\"\n></cui-svg>\n<input\n #input\n [ngModel]=\"computedValue\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder\"\n type=\"text\"\n [maskito]=\"maskOptions\"\n [disabled]=\"isDisabled\"\n class=\"c-input\"\n (input)=\"onInput($event)\"\n (focus)=\"onTouched()\"\n/>\n", styles: [":host{--cui-input-autofill-bg: var(--cui-input);--cui-input-autofill-color: var(--cui-base-900);padding-right:13px;padding-left:13px;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;cursor:text;background:var(--cui-input);color:var(--cui-base-900);font-family:var(--cui-main-font)}:host:hover{border-color:var(--cui-base-300)}:host:focus-within{box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}:host[data-size=sm]{padding-top:7px;padding-bottom:7px}:host[data-size=md]{padding-top:8px;padding-bottom:8px}:host._disabled{cursor:not-allowed;opacity:.5;background:var(--cui-base-50);border-color:var(--cui-base-200)}:host._with-error{border-color:var(--cui-danger)}:host._with-error:focus-within{box-shadow:0 0 0 2px #d92d2040}.c-input{padding:0;outline:none;margin:0;border-width:0;appearance:none;caret-color:currentColor;background:none;color:inherit;font:inherit;line-height:inherit;width:100%}.c-input:-webkit-autofill,.c-input:-webkit-autofill:hover,.c-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 200px var(--cui-input-autofill-bg) inset;-webkit-text-fill-color:var(--cui-input-autofill-color);caret-color:var(--cui-input-autofill-color)}.c-input:disabled{cursor:not-allowed}.c-input::placeholder{color:var(--cui-base-400)}.c-button{padding:0;border:0;flex-shrink:0;outline:none;cursor:pointer;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;display:flex}\n"], dependencies: [{ kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3580
3793
  }
3581
3794
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInputTimeComponent, decorators: [{
3582
3795
  type: Component,
@@ -4450,6 +4663,603 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4450
4663
  args: [{ selector: 'cui-file-icon', imports: [CuiSvgModule], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (extensionColor(); as color) {\n <cui-svg\n icon=\"cuiIconBoldFileDefaultSm\"\n [color]=\"color\"\n class=\"icon\"\n ></cui-svg>\n\n <span class=\"extension\">{{ extension() }}</span>\n}\n", styles: [":host{--c-text-color: var(--cui-base-0);position:relative;display:inline-block}:host .extension{font-size:10px;line-height:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:absolute;bottom:4px;left:5px;display:inline-block;font-family:var(--cui-nunito-italic-font);font-weight:800;font-style:italic;max-width:30px;color:var(--c-text-color);text-transform:uppercase;transform:scale(.5);transform-origin:left bottom}\n"] }]
4451
4664
  }] });
4452
4665
 
4666
+ class CuiFilterRemoveButtonComponent {
4667
+ constructor() {
4668
+ this.label = input.required();
4669
+ this.removed = output();
4670
+ }
4671
+ onRemove() {
4672
+ this.removed.emit();
4673
+ }
4674
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFilterRemoveButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4675
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CuiFilterRemoveButtonComponent, isStandalone: true, selector: "cui-filter-remove-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { removed: "removed" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"filter-remove-button\"\n>\n <cui-svg\n icon=\"cuiIconVector\"\n (click)=\"onRemove(); $event.stopPropagation()\"\n />\n <span class=\"filter-remove-button__label\">{{ label() }}:</span>\n</button>\n", styles: [":host{display:contents}.filter-remove-button{display:flex;flex-direction:row;gap:4px;align-items:center;justify-content:flex-start;padding-right:6px;padding-left:6px;font-weight:500;font-size:12px;line-height:14px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-left-radius:8px;border-bottom-left-radius:8px;cursor:pointer}.filter-remove-button:hover,.filter-remove-button:focus{outline:none}.filter-remove-button__label{font-weight:500;font-size:12px;line-height:14px}\n"], dependencies: [{ kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4676
+ }
4677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFilterRemoveButtonComponent, decorators: [{
4678
+ type: Component,
4679
+ args: [{ selector: 'cui-filter-remove-button', standalone: true, imports: [CuiSvgModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"filter-remove-button\"\n>\n <cui-svg\n icon=\"cuiIconVector\"\n (click)=\"onRemove(); $event.stopPropagation()\"\n />\n <span class=\"filter-remove-button__label\">{{ label() }}:</span>\n</button>\n", styles: [":host{display:contents}.filter-remove-button{display:flex;flex-direction:row;gap:4px;align-items:center;justify-content:flex-start;padding-right:6px;padding-left:6px;font-weight:500;font-size:12px;line-height:14px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-left-radius:8px;border-bottom-left-radius:8px;cursor:pointer}.filter-remove-button:hover,.filter-remove-button:focus{outline:none}.filter-remove-button__label{font-weight:500;font-size:12px;line-height:14px}\n"] }]
4680
+ }] });
4681
+
4682
+ class CuiStringFilterComponent {
4683
+ constructor() {
4684
+ this.filter = input.required();
4685
+ this.removed = output();
4686
+ this.changed = output();
4687
+ this.tmpValue = signal('');
4688
+ this.currentValue = computed(() => {
4689
+ const f = this.filter();
4690
+ return f.value.type === 'string' ? f.value.value : '';
4691
+ });
4692
+ this.hasValue = computed(() => !!this.currentValue());
4693
+ }
4694
+ onRemove() {
4695
+ this.removed.emit(this.filter().id);
4696
+ }
4697
+ onDropdownOpened(opened) {
4698
+ if (opened) {
4699
+ this.tmpValue.set(this.currentValue());
4700
+ }
4701
+ }
4702
+ onTmpValueChange(value) {
4703
+ this.tmpValue.set(value);
4704
+ }
4705
+ applyValue(dropdown) {
4706
+ const f = this.filter();
4707
+ if (f.value.type !== 'string') {
4708
+ return;
4709
+ }
4710
+ this.changed.emit({
4711
+ ...f,
4712
+ value: { ...f.value, value: this.tmpValue() }
4713
+ });
4714
+ dropdown.close();
4715
+ }
4716
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiStringFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4717
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiStringFilterComponent, isStandalone: true, selector: "cui-string-filter", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { removed: "removed", changed: "changed" }, ngImport: i0, template: "<cui-filter-remove-button\n [label]=\"filter().field.label | transloco\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"string-filter__trigger\"\n [class.string-filter__trigger--active]=\"hasValue()\"\n [cuiDropdown]=\"dropdownTpl\"\n #dropdown=\"cuiDropdown\"\n (isOpened)=\"onDropdownOpened($event)\"\n>\n @if (hasValue()) {\n <span\n class=\"string-filter__value\"\n [cuiTooltip]=\"currentValue()\"\n >\n {{ currentValue() }}\n </span>\n } @else {\n <span class=\"string-filter__placeholder\">{{ 'ENTER_VALUE' | transloco }}</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n <div class=\"string-filter__dropdown\">\n <div class=\"string-filter__label\">\n {{ 'FILTER_BY' | transloco: { field: filter().field.label | transloco } }}\n </div>\n <cui-input-text\n [ngModel]=\"tmpValue()\"\n (ngModelChange)=\"onTmpValueChange($event)\"\n maxlength=\"25\"\n [cuiTextFieldPlaceholder]=\"'ENTER_VALUE' | transloco\"\n />\n <div class=\"string-filter__footer\">\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n appearance=\"secondary\"\n (click)=\"dropdown.close()\"\n >\n {{ 'CANCEL' | transloco }}\n </button>\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n appearance=\"action-cyan\"\n (click)=\"applyValue(dropdown)\"\n >\n {{ 'APPLY' | transloco }}\n </button>\n </div>\n </div>\n</ng-template>", styles: [":host{display:inline-flex}.string-filter__trigger{padding:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.string-filter__trigger:hover{background:var(--cui-base-200)}.string-filter__trigger:focus{outline:none}.string-filter__trigger--active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.string-filter__trigger--active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.string-filter__value{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.string-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.string-filter__dropdown{display:flex;flex-direction:column;gap:12px;padding:8px;width:300px;max-width:calc(100vw - 16px);background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}.string-filter__label{font-weight:500;font-size:13px;line-height:16px;color:var(--cui-base-900)}.string-filter__footer{display:flex;flex-direction:row;gap:8px;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "directive", type: CuiDropdownDirective, selector: "[cuiDropdown]", inputs: ["cuiDropdown", "orientation"], outputs: ["isOpened"], exportAs: ["cuiDropdown"] }, { kind: "component", type: CuiFilterRemoveButtonComponent, selector: "cui-filter-remove-button", inputs: ["label"], outputs: ["removed"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "directive", type: CuiTooltipDirective, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: ["cuiTooltipContext", "cuiTooltipAppearance", "cuiTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4718
+ }
4719
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiStringFilterComponent, decorators: [{
4720
+ type: Component,
4721
+ args: [{ selector: 'cui-string-filter', standalone: true, imports: [
4722
+ CuiButtonModule,
4723
+ CuiDropdownDirective,
4724
+ CuiFilterRemoveButtonComponent,
4725
+ CuiInputModule,
4726
+ CuiSvgModule,
4727
+ CuiTooltipDirective,
4728
+ FormsModule,
4729
+ TranslocoPipe
4730
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<cui-filter-remove-button\n [label]=\"filter().field.label | transloco\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"string-filter__trigger\"\n [class.string-filter__trigger--active]=\"hasValue()\"\n [cuiDropdown]=\"dropdownTpl\"\n #dropdown=\"cuiDropdown\"\n (isOpened)=\"onDropdownOpened($event)\"\n>\n @if (hasValue()) {\n <span\n class=\"string-filter__value\"\n [cuiTooltip]=\"currentValue()\"\n >\n {{ currentValue() }}\n </span>\n } @else {\n <span class=\"string-filter__placeholder\">{{ 'ENTER_VALUE' | transloco }}</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n <div class=\"string-filter__dropdown\">\n <div class=\"string-filter__label\">\n {{ 'FILTER_BY' | transloco: { field: filter().field.label | transloco } }}\n </div>\n <cui-input-text\n [ngModel]=\"tmpValue()\"\n (ngModelChange)=\"onTmpValueChange($event)\"\n maxlength=\"25\"\n [cuiTextFieldPlaceholder]=\"'ENTER_VALUE' | transloco\"\n />\n <div class=\"string-filter__footer\">\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n appearance=\"secondary\"\n (click)=\"dropdown.close()\"\n >\n {{ 'CANCEL' | transloco }}\n </button>\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n appearance=\"action-cyan\"\n (click)=\"applyValue(dropdown)\"\n >\n {{ 'APPLY' | transloco }}\n </button>\n </div>\n </div>\n</ng-template>", styles: [":host{display:inline-flex}.string-filter__trigger{padding:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.string-filter__trigger:hover{background:var(--cui-base-200)}.string-filter__trigger:focus{outline:none}.string-filter__trigger--active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.string-filter__trigger--active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.string-filter__value{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.string-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.string-filter__dropdown{display:flex;flex-direction:column;gap:12px;padding:8px;width:300px;max-width:calc(100vw - 16px);background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}.string-filter__label{font-weight:500;font-size:13px;line-height:16px;color:var(--cui-base-900)}.string-filter__footer{display:flex;flex-direction:row;gap:8px;justify-content:flex-end}\n"] }]
4731
+ }] });
4732
+
4733
+ class CuiRangeFilterComponent {
4734
+ constructor() {
4735
+ this.filter = input.required();
4736
+ this.removed = output();
4737
+ this.changed = output();
4738
+ this.tmpMin = signal(null);
4739
+ this.tmpMax = signal(null);
4740
+ this.currentMin = computed(() => {
4741
+ const f = this.filter();
4742
+ return f.value.type === 'range' ? f.value.min : null;
4743
+ });
4744
+ this.currentMax = computed(() => {
4745
+ const f = this.filter();
4746
+ return f.value.type === 'range' ? f.value.max : null;
4747
+ });
4748
+ this.hasValue = computed(() => this.currentMin() !== null || this.currentMax() !== null);
4749
+ this.displayValue = computed(() => {
4750
+ const min = this.currentMin();
4751
+ const max = this.currentMax();
4752
+ if (min !== null && max !== null) {
4753
+ return `${min} – ${max}`;
4754
+ }
4755
+ if (min !== null) {
4756
+ return `≥ ${min}`;
4757
+ }
4758
+ if (max !== null) {
4759
+ return `≤ ${max}`;
4760
+ }
4761
+ return '';
4762
+ });
4763
+ this.minPlaceholder = computed(() => {
4764
+ const field = this.filter().field;
4765
+ return field.rangeConfig?.minPlaceholder ?? 'MIN';
4766
+ });
4767
+ this.maxPlaceholder = computed(() => {
4768
+ const field = this.filter().field;
4769
+ return field.rangeConfig?.maxPlaceholder ?? 'MAX';
4770
+ });
4771
+ }
4772
+ onRemove() {
4773
+ this.removed.emit(this.filter().id);
4774
+ }
4775
+ onDropdownOpened(isOpened) {
4776
+ if (isOpened) {
4777
+ this.tmpMin.set(this.currentMin());
4778
+ this.tmpMax.set(this.currentMax());
4779
+ }
4780
+ }
4781
+ onTmpMinChange(value) {
4782
+ this.tmpMin.set(value);
4783
+ }
4784
+ onTmpMaxChange(value) {
4785
+ this.tmpMax.set(value);
4786
+ }
4787
+ applyValue(dropdown) {
4788
+ const f = this.filter();
4789
+ if (f.value.type !== 'range') {
4790
+ return;
4791
+ }
4792
+ const newValue = {
4793
+ type: 'range',
4794
+ min: this.tmpMin(),
4795
+ max: this.tmpMax()
4796
+ };
4797
+ this.changed.emit({ ...f, value: newValue });
4798
+ dropdown.close();
4799
+ }
4800
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiRangeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4801
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiRangeFilterComponent, isStandalone: true, selector: "cui-range-filter", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { removed: "removed", changed: "changed" }, ngImport: i0, template: "<cui-filter-remove-button\n [label]=\"filter().field.label | transloco\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"range-filter__trigger\"\n [class.range-filter__trigger_active]=\"hasValue()\"\n [cuiDropdown]=\"dropdownTpl\"\n #dropdown=\"cuiDropdown\"\n (isOpened)=\"onDropdownOpened($event)\"\n>\n @if (hasValue()) {\n <span\n class=\"range-filter__value\"\n [cuiTooltip]=\"displayValue()\"\n >\n {{ displayValue() }}\n </span>\n } @else {\n <span class=\"range-filter__placeholder\">{{ 'ENTER_VALUE' | transloco }}</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n <div class=\"range-filter__dropdown\">\n <div class=\"range-filter__label\">\n {{ 'FILTER_BY' | transloco: { field: filter().field.label | transloco } }}\n </div>\n <div class=\"range-filter__inputs\">\n <cui-input-number\n [ngModel]=\"tmpMin()\"\n (ngModelChange)=\"onTmpMinChange($event)\"\n [cuiTextFieldPlaceholder]=\"minPlaceholder() | transloco\"\n />\n <span class=\"range-filter__separator\">\u2013</span>\n <cui-input-number\n [ngModel]=\"tmpMax()\"\n (ngModelChange)=\"onTmpMaxChange($event)\"\n [cuiTextFieldPlaceholder]=\"maxPlaceholder() | transloco\"\n />\n </div>\n <div class=\"range-filter__footer\">\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n appearance=\"secondary\"\n (click)=\"dropdown.close()\"\n >\n {{ 'CANCEL' | transloco }}\n </button>\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n appearance=\"action-cyan\"\n (click)=\"applyValue(dropdown)\"\n >\n {{ 'APPLY' | transloco }}\n </button>\n </div>\n </div>\n</ng-template>", styles: [":host{display:inline-flex}.range-filter__trigger{padding:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.range-filter__trigger:hover{background:var(--cui-base-200)}.range-filter__trigger:focus{outline:none}.range-filter__trigger_active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.range-filter__trigger_active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.range-filter__value{font-weight:500;font-size:12px;line-height:14px;max-width:200px;overflow:hidden;color:var(--cui-base-900);text-overflow:ellipsis;white-space:nowrap}.range-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.range-filter__dropdown{display:flex;flex-direction:column;gap:12px;padding:8px;width:300px;max-width:calc(100vw - 16px);overflow:hidden;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026}.range-filter__label{font-weight:500;font-size:13px;line-height:16px;color:var(--cui-base-900)}.range-filter__inputs{display:flex;flex-direction:row;gap:8px;align-items:center}.range-filter__separator{font-weight:500;font-size:13px;line-height:16px;color:var(--cui-base-500)}.range-filter__footer{display:flex;flex-direction:row;gap:8px;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "directive", type: CuiDropdownDirective, selector: "[cuiDropdown]", inputs: ["cuiDropdown", "orientation"], outputs: ["isOpened"], exportAs: ["cuiDropdown"] }, { kind: "component", type: CuiFilterRemoveButtonComponent, selector: "cui-filter-remove-button", inputs: ["label"], outputs: ["removed"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "directive", type: CuiTooltipDirective, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: ["cuiTooltipContext", "cuiTooltipAppearance", "cuiTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4802
+ }
4803
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiRangeFilterComponent, decorators: [{
4804
+ type: Component,
4805
+ args: [{ selector: 'cui-range-filter', standalone: true, imports: [
4806
+ CuiButtonModule,
4807
+ CuiDropdownDirective,
4808
+ CuiFilterRemoveButtonComponent,
4809
+ CuiInputNumberModule,
4810
+ CuiSvgModule,
4811
+ CuiTooltipDirective,
4812
+ FormsModule,
4813
+ TranslocoPipe
4814
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<cui-filter-remove-button\n [label]=\"filter().field.label | transloco\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"range-filter__trigger\"\n [class.range-filter__trigger_active]=\"hasValue()\"\n [cuiDropdown]=\"dropdownTpl\"\n #dropdown=\"cuiDropdown\"\n (isOpened)=\"onDropdownOpened($event)\"\n>\n @if (hasValue()) {\n <span\n class=\"range-filter__value\"\n [cuiTooltip]=\"displayValue()\"\n >\n {{ displayValue() }}\n </span>\n } @else {\n <span class=\"range-filter__placeholder\">{{ 'ENTER_VALUE' | transloco }}</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n <div class=\"range-filter__dropdown\">\n <div class=\"range-filter__label\">\n {{ 'FILTER_BY' | transloco: { field: filter().field.label | transloco } }}\n </div>\n <div class=\"range-filter__inputs\">\n <cui-input-number\n [ngModel]=\"tmpMin()\"\n (ngModelChange)=\"onTmpMinChange($event)\"\n [cuiTextFieldPlaceholder]=\"minPlaceholder() | transloco\"\n />\n <span class=\"range-filter__separator\">\u2013</span>\n <cui-input-number\n [ngModel]=\"tmpMax()\"\n (ngModelChange)=\"onTmpMaxChange($event)\"\n [cuiTextFieldPlaceholder]=\"maxPlaceholder() | transloco\"\n />\n </div>\n <div class=\"range-filter__footer\">\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n appearance=\"secondary\"\n (click)=\"dropdown.close()\"\n >\n {{ 'CANCEL' | transloco }}\n </button>\n <button\n type=\"button\"\n cuiButton\n size=\"xs\"\n appearance=\"action-cyan\"\n (click)=\"applyValue(dropdown)\"\n >\n {{ 'APPLY' | transloco }}\n </button>\n </div>\n </div>\n</ng-template>", styles: [":host{display:inline-flex}.range-filter__trigger{padding:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.range-filter__trigger:hover{background:var(--cui-base-200)}.range-filter__trigger:focus{outline:none}.range-filter__trigger_active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.range-filter__trigger_active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.range-filter__value{font-weight:500;font-size:12px;line-height:14px;max-width:200px;overflow:hidden;color:var(--cui-base-900);text-overflow:ellipsis;white-space:nowrap}.range-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.range-filter__dropdown{display:flex;flex-direction:column;gap:12px;padding:8px;width:300px;max-width:calc(100vw - 16px);overflow:hidden;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026}.range-filter__label{font-weight:500;font-size:13px;line-height:16px;color:var(--cui-base-900)}.range-filter__inputs{display:flex;flex-direction:row;gap:8px;align-items:center}.range-filter__separator{font-weight:500;font-size:13px;line-height:16px;color:var(--cui-base-500)}.range-filter__footer{display:flex;flex-direction:row;gap:8px;justify-content:flex-end}\n"] }]
4815
+ }] });
4816
+
4817
+ class CuiSelectFilterComponent {
4818
+ constructor() {
4819
+ this.filter = input.required();
4820
+ this.removed = output();
4821
+ this.changed = output();
4822
+ this.currentValue = computed(() => {
4823
+ const f = this.filter();
4824
+ return f.value.type === 'select' ? f.value.value : null;
4825
+ });
4826
+ this.currentLabel = computed(() => {
4827
+ const f = this.filter();
4828
+ if (f.value.type !== 'select' || !f.value.value) {
4829
+ return '';
4830
+ }
4831
+ const selectedValue = f.value.value;
4832
+ const field = f.field;
4833
+ return field.selectOptions?.find((opt) => opt.value === selectedValue)?.label ?? selectedValue;
4834
+ });
4835
+ this.hasValue = computed(() => !!this.currentValue());
4836
+ this.options = computed(() => {
4837
+ const field = this.filter().field;
4838
+ return field.selectOptions ?? [];
4839
+ });
4840
+ }
4841
+ onRemove() {
4842
+ this.removed.emit(this.filter().id);
4843
+ }
4844
+ isOptionSelected(value) {
4845
+ return this.currentValue() === value;
4846
+ }
4847
+ selectOption(value, dropdown) {
4848
+ const f = this.filter();
4849
+ if (f.value.type !== 'select') {
4850
+ return;
4851
+ }
4852
+ this.changed.emit({
4853
+ ...f,
4854
+ value: { ...f.value, value: f.value.value === value ? null : value }
4855
+ });
4856
+ dropdown.close();
4857
+ }
4858
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiSelectFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4859
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiSelectFilterComponent, isStandalone: true, selector: "cui-select-filter", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { removed: "removed", changed: "changed" }, ngImport: i0, template: "<cui-filter-remove-button\n [label]=\"filter().field.label | transloco\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"select-filter__trigger\"\n [class.select-filter__trigger--active]=\"hasValue()\"\n [cuiDropdown]=\"dropdownTpl\"\n #dropdown=\"cuiDropdown\"\n>\n @if (hasValue()) {\n <span\n class=\"select-filter__value\"\n [cuiTooltip]=\"currentLabel()\"\n >\n {{ currentLabel() }}\n </span>\n } @else {\n <span class=\"select-filter__placeholder\">{{ 'SELECT_VALUE' | transloco }}</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n <div class=\"select-filter__dropdown\">\n @for (opt of options(); track opt.value) {\n <button\n type=\"button\"\n class=\"select-filter__option\"\n [class.select-filter__option--selected]=\"isOptionSelected(opt.value)\"\n (click)=\"selectOption(opt.value, dropdown)\"\n >\n {{ opt.label }}\n </button>\n }\n </div>\n</ng-template>", styles: [":host{display:inline-flex}.select-filter__trigger{padding:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.select-filter__trigger:hover{background:var(--cui-base-200)}.select-filter__trigger:focus{outline:none}.select-filter__trigger--active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.select-filter__trigger--active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.select-filter__value{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.select-filter__dropdown{display:flex;flex-direction:column;gap:0;padding-top:4px;padding-bottom:4px;min-width:165px;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}.select-filter__option{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:flex-start;border:0;flex-shrink:0;outline:none;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;font-weight:400;font-size:13px;line-height:16px;padding:8px 12px;width:100%;text-align:left;color:var(--cui-base-900);cursor:pointer;-webkit-user-select:none;user-select:none}.select-filter__option:hover{background:var(--cui-base-50)}.select-filter__option--selected{background:var(--cui-lavender-bg);font-weight:500}\n"], dependencies: [{ kind: "directive", type: CuiDropdownDirective, selector: "[cuiDropdown]", inputs: ["cuiDropdown", "orientation"], outputs: ["isOpened"], exportAs: ["cuiDropdown"] }, { kind: "component", type: CuiFilterRemoveButtonComponent, selector: "cui-filter-remove-button", inputs: ["label"], outputs: ["removed"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "directive", type: CuiTooltipDirective, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: ["cuiTooltipContext", "cuiTooltipAppearance", "cuiTooltip"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4860
+ }
4861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiSelectFilterComponent, decorators: [{
4862
+ type: Component,
4863
+ args: [{ selector: 'cui-select-filter', standalone: true, imports: [
4864
+ CuiDropdownDirective,
4865
+ CuiFilterRemoveButtonComponent,
4866
+ CuiSvgModule,
4867
+ CuiTooltipDirective,
4868
+ TranslocoPipe
4869
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<cui-filter-remove-button\n [label]=\"filter().field.label | transloco\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"select-filter__trigger\"\n [class.select-filter__trigger--active]=\"hasValue()\"\n [cuiDropdown]=\"dropdownTpl\"\n #dropdown=\"cuiDropdown\"\n>\n @if (hasValue()) {\n <span\n class=\"select-filter__value\"\n [cuiTooltip]=\"currentLabel()\"\n >\n {{ currentLabel() }}\n </span>\n } @else {\n <span class=\"select-filter__placeholder\">{{ 'SELECT_VALUE' | transloco }}</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n <div class=\"select-filter__dropdown\">\n @for (opt of options(); track opt.value) {\n <button\n type=\"button\"\n class=\"select-filter__option\"\n [class.select-filter__option--selected]=\"isOptionSelected(opt.value)\"\n (click)=\"selectOption(opt.value, dropdown)\"\n >\n {{ opt.label }}\n </button>\n }\n </div>\n</ng-template>", styles: [":host{display:inline-flex}.select-filter__trigger{padding:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.select-filter__trigger:hover{background:var(--cui-base-200)}.select-filter__trigger:focus{outline:none}.select-filter__trigger--active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.select-filter__trigger--active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.select-filter__value{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.select-filter__dropdown{display:flex;flex-direction:column;gap:0;padding-top:4px;padding-bottom:4px;min-width:165px;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}.select-filter__option{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:flex-start;border:0;flex-shrink:0;outline:none;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;font-weight:400;font-size:13px;line-height:16px;padding:8px 12px;width:100%;text-align:left;color:var(--cui-base-900);cursor:pointer;-webkit-user-select:none;user-select:none}.select-filter__option:hover{background:var(--cui-base-50)}.select-filter__option--selected{background:var(--cui-lavender-bg);font-weight:500}\n"] }]
4870
+ }] });
4871
+
4872
+ class CuiMultiSelectFilterComponent {
4873
+ constructor() {
4874
+ this.filter = input.required();
4875
+ this.removed = output();
4876
+ this.changed = output();
4877
+ this.currentValues = computed(() => {
4878
+ const f = this.filter();
4879
+ return f.value.type === 'multiselect' ? f.value.values : [];
4880
+ });
4881
+ this.currentLabels = computed(() => {
4882
+ const f = this.filter();
4883
+ if (f.value.type !== 'multiselect') {
4884
+ return '';
4885
+ }
4886
+ const field = f.field;
4887
+ return f.value.values
4888
+ .map((val) => field.multiSelectOptions?.find((opt) => opt.value === val)?.label ?? val)
4889
+ .join(', ');
4890
+ });
4891
+ this.hasValue = computed(() => this.currentValues().length > 0);
4892
+ this.options = computed(() => {
4893
+ const field = this.filter().field;
4894
+ return field.multiSelectOptions ?? [];
4895
+ });
4896
+ }
4897
+ onRemove() {
4898
+ this.removed.emit(this.filter().id);
4899
+ }
4900
+ isOptionSelected(value) {
4901
+ return this.currentValues().includes(value);
4902
+ }
4903
+ toggleOption(value) {
4904
+ const f = this.filter();
4905
+ if (f.value.type !== 'multiselect') {
4906
+ return;
4907
+ }
4908
+ const currentValues = f.value.values;
4909
+ const newValues = currentValues.includes(value)
4910
+ ? currentValues.filter((v) => v !== value)
4911
+ : [...currentValues, value];
4912
+ this.changed.emit({
4913
+ ...f,
4914
+ value: { ...f.value, values: newValues }
4915
+ });
4916
+ }
4917
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiMultiSelectFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4918
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiMultiSelectFilterComponent, isStandalone: true, selector: "cui-multiselect-filter", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { removed: "removed", changed: "changed" }, ngImport: i0, template: "<cui-filter-remove-button\n [label]=\"filter().field.label | transloco\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"multiselect-filter__trigger\"\n [class.multiselect-filter__trigger--active]=\"hasValue()\"\n [cuiDropdown]=\"dropdownTpl\"\n>\n @if (hasValue()) {\n <span\n class=\"multiselect-filter__value\"\n [cuiTooltip]=\"currentLabels()\"\n >\n {{ currentLabels() }}\n </span>\n } @else {\n <span class=\"multiselect-filter__placeholder\">{{ 'SELECT_VALUES' | transloco }}</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n <div class=\"multiselect-filter__dropdown\">\n @for (opt of options(); track opt.value) {\n <label class=\"multiselect-filter__option\">\n <input\n type=\"checkbox\"\n cuiCheckbox\n [checked]=\"isOptionSelected(opt.value)\"\n (change)=\"toggleOption(opt.value)\"\n />\n <span>{{ opt.label }}</span>\n </label>\n }\n </div>\n</ng-template>", styles: [":host{display:inline-flex}.multiselect-filter__trigger{padding:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.multiselect-filter__trigger:hover{background:var(--cui-base-200)}.multiselect-filter__trigger:focus{outline:none}.multiselect-filter__trigger--active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.multiselect-filter__trigger--active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.multiselect-filter__value{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multiselect-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.multiselect-filter__dropdown{display:flex;flex-direction:column;gap:0;padding-top:4px;padding-bottom:4px;min-width:165px;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}.multiselect-filter__option{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-start;padding:8px 12px;cursor:pointer;-webkit-user-select:none;user-select:none}.multiselect-filter__option:hover{background:var(--cui-base-50)}.multiselect-filter__option span{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-900)}\n"], dependencies: [{ kind: "ngmodule", type: CuiCheckboxModule }, { kind: "component", type: CuiCheckboxComponent, selector: "input[type=\"checkbox\"][cuiCheckbox]" }, { kind: "directive", type: CuiDropdownDirective, selector: "[cuiDropdown]", inputs: ["cuiDropdown", "orientation"], outputs: ["isOpened"], exportAs: ["cuiDropdown"] }, { kind: "component", type: CuiFilterRemoveButtonComponent, selector: "cui-filter-remove-button", inputs: ["label"], outputs: ["removed"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "directive", type: CuiTooltipDirective, selector: "[cuiTooltip]:not(ng-container):not(ng-template)", inputs: ["cuiTooltipContext", "cuiTooltipAppearance", "cuiTooltip"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4919
+ }
4920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiMultiSelectFilterComponent, decorators: [{
4921
+ type: Component,
4922
+ args: [{ selector: 'cui-multiselect-filter', standalone: true, imports: [
4923
+ CuiCheckboxModule,
4924
+ CuiDropdownDirective,
4925
+ CuiFilterRemoveButtonComponent,
4926
+ CuiSvgModule,
4927
+ CuiTooltipDirective,
4928
+ TranslocoPipe
4929
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<cui-filter-remove-button\n [label]=\"filter().field.label | transloco\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"multiselect-filter__trigger\"\n [class.multiselect-filter__trigger--active]=\"hasValue()\"\n [cuiDropdown]=\"dropdownTpl\"\n>\n @if (hasValue()) {\n <span\n class=\"multiselect-filter__value\"\n [cuiTooltip]=\"currentLabels()\"\n >\n {{ currentLabels() }}\n </span>\n } @else {\n <span class=\"multiselect-filter__placeholder\">{{ 'SELECT_VALUES' | transloco }}</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #dropdownTpl>\n <div class=\"multiselect-filter__dropdown\">\n @for (opt of options(); track opt.value) {\n <label class=\"multiselect-filter__option\">\n <input\n type=\"checkbox\"\n cuiCheckbox\n [checked]=\"isOptionSelected(opt.value)\"\n (change)=\"toggleOption(opt.value)\"\n />\n <span>{{ opt.label }}</span>\n </label>\n }\n </div>\n</ng-template>", styles: [":host{display:inline-flex}.multiselect-filter__trigger{padding:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.multiselect-filter__trigger:hover{background:var(--cui-base-200)}.multiselect-filter__trigger:focus{outline:none}.multiselect-filter__trigger--active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.multiselect-filter__trigger--active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.multiselect-filter__value{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multiselect-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.multiselect-filter__dropdown{display:flex;flex-direction:column;gap:0;padding-top:4px;padding-bottom:4px;min-width:165px;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}.multiselect-filter__option{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-start;padding:8px 12px;cursor:pointer;-webkit-user-select:none;user-select:none}.multiselect-filter__option:hover{background:var(--cui-base-50)}.multiselect-filter__option span{font-weight:400;font-size:13px;line-height:16px;color:var(--cui-base-900)}\n"] }]
4930
+ }] });
4931
+
4932
+ class CuiAddFilterButtonComponent {
4933
+ constructor() {
4934
+ this.availableFields = input.required();
4935
+ this.fieldSelected = output();
4936
+ }
4937
+ selectField(field, dropdown) {
4938
+ this.fieldSelected.emit(field);
4939
+ dropdown.close();
4940
+ }
4941
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiAddFilterButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4942
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiAddFilterButtonComponent, isStandalone: true, selector: "cui-add-filter-button", inputs: { availableFields: { classPropertyName: "availableFields", publicName: "availableFields", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { fieldSelected: "fieldSelected" }, ngImport: i0, template: "<div class=\"cui-add-filter\">\n <button\n type=\"button\"\n class=\"cui-add-filter__btn\"\n cuiButton\n size=\"xxs\"\n appearance=\"outlined\"\n [cuiDropdown]=\"dropdownTpl\"\n #dropdown=\"cuiDropdown\"\n >\n <cui-svg\n icon=\"cuiIconPlusSm\"\n [width]=\"16\"\n color=\"var(--cui-info)\"\n />\n {{ 'ADD_FILTER' | transloco }}\n </button>\n <ng-template #dropdownTpl>\n <div class=\"cui-add-filter__dropdown\">\n @for (field of availableFields(); track field.id) {\n <button\n type=\"button\"\n class=\"cui-add-filter__dropdown-item\"\n (click)=\"selectField(field, dropdown)\"\n >\n {{ field.label | transloco }}\n </button>\n }\n </div>\n </ng-template>\n</div>", styles: [".cui-add-filter{position:relative;align-self:flex-start}.cui-add-filter__btn{color:var(--cui-light-blue-600)}.cui-add-filter__dropdown{padding-top:4px;padding-bottom:4px;display:flex;flex-direction:column;gap:0;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:200px;overflow:hidden}.cui-add-filter__dropdown-item{border:0;flex-shrink:0;outline:none;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;font-size:14px;line-height:20px;padding:8px 12px;display:block;width:100%;text-align:left;color:var(--cui-base-900);cursor:pointer}.cui-add-filter__dropdown-item:hover{background:var(--cui-base-50)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "directive", type: CuiDropdownDirective, selector: "[cuiDropdown]", inputs: ["cuiDropdown", "orientation"], outputs: ["isOpened"], exportAs: ["cuiDropdown"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4943
+ }
4944
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiAddFilterButtonComponent, decorators: [{
4945
+ type: Component,
4946
+ args: [{ selector: 'cui-add-filter-button', standalone: true, imports: [CuiButtonModule, CuiDropdownDirective, CuiSvgModule, TranslocoPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cui-add-filter\">\n <button\n type=\"button\"\n class=\"cui-add-filter__btn\"\n cuiButton\n size=\"xxs\"\n appearance=\"outlined\"\n [cuiDropdown]=\"dropdownTpl\"\n #dropdown=\"cuiDropdown\"\n >\n <cui-svg\n icon=\"cuiIconPlusSm\"\n [width]=\"16\"\n color=\"var(--cui-info)\"\n />\n {{ 'ADD_FILTER' | transloco }}\n </button>\n <ng-template #dropdownTpl>\n <div class=\"cui-add-filter__dropdown\">\n @for (field of availableFields(); track field.id) {\n <button\n type=\"button\"\n class=\"cui-add-filter__dropdown-item\"\n (click)=\"selectField(field, dropdown)\"\n >\n {{ field.label | transloco }}\n </button>\n }\n </div>\n </ng-template>\n</div>", styles: [".cui-add-filter{position:relative;align-self:flex-start}.cui-add-filter__btn{color:var(--cui-light-blue-600)}.cui-add-filter__dropdown{padding-top:4px;padding-bottom:4px;display:flex;flex-direction:column;gap:0;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:200px;overflow:hidden}.cui-add-filter__dropdown-item{border:0;flex-shrink:0;outline:none;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;font-size:14px;line-height:20px;padding:8px 12px;display:block;width:100%;text-align:left;color:var(--cui-base-900);cursor:pointer}.cui-add-filter__dropdown-item:hover{background:var(--cui-base-50)}\n"] }]
4947
+ }] });
4948
+
4949
+ const DEFAULT_OPERATOR_LABELS = {
4950
+ on: 'On',
4951
+ before: 'Before',
4952
+ after: 'After',
4953
+ between: 'Between'
4954
+ };
4955
+ class CuiDateFilterComponent {
4956
+ constructor() {
4957
+ this.filter = input.required();
4958
+ this.removed = output();
4959
+ this.changed = output();
4960
+ this.operatorOptions = computed(() => {
4961
+ const field = this.filter().field;
4962
+ const operators = field.dateOperators ?? ['on', 'before', 'after', 'between'];
4963
+ return operators.map((op) => ({
4964
+ value: op,
4965
+ label: field.operatorLabels?.[op] ?? DEFAULT_OPERATOR_LABELS[op]
4966
+ }));
4967
+ });
4968
+ this.currentOperator = computed(() => {
4969
+ const f = this.filter();
4970
+ return f.value.type === 'date' ? f.value.operator : 'on';
4971
+ });
4972
+ this.operatorLabel = computed(() => {
4973
+ const options = this.operatorOptions();
4974
+ const op = options.find((o) => o.value === this.currentOperator());
4975
+ return op?.label ?? '';
4976
+ });
4977
+ this.dateLabel = computed(() => {
4978
+ const f = this.filter();
4979
+ if (f.value.type !== 'date') {
4980
+ return '';
4981
+ }
4982
+ const dateValue = f.value;
4983
+ if (dateValue.operator === 'between') {
4984
+ if (dateValue.rangeStart && dateValue.rangeEnd) {
4985
+ return `${this.formatDate(dateValue.rangeStart)} - ${this.formatDate(dateValue.rangeEnd)}`;
4986
+ }
4987
+ return '';
4988
+ }
4989
+ return dateValue.value ? this.formatDate(dateValue.value) : '';
4990
+ });
4991
+ this.hasValue = computed(() => {
4992
+ const f = this.filter();
4993
+ if (f.value.type !== 'date') {
4994
+ return false;
4995
+ }
4996
+ if (f.value.operator === 'between') {
4997
+ return !!f.value.rangeStart && !!f.value.rangeEnd;
4998
+ }
4999
+ return !!f.value.value;
5000
+ });
5001
+ this.rangeStart = computed(() => {
5002
+ const f = this.filter();
5003
+ return f.value.type === 'date' && f.value.rangeStart ? new Date(f.value.rangeStart) : null;
5004
+ });
5005
+ this.rangeEnd = computed(() => {
5006
+ const f = this.filter();
5007
+ return f.value.type === 'date' && f.value.rangeEnd ? new Date(f.value.rangeEnd) : null;
5008
+ });
5009
+ this.selectedDate = computed(() => {
5010
+ const f = this.filter();
5011
+ return f.value.type === 'date' && f.value.value ? new Date(f.value.value) : null;
5012
+ });
5013
+ this.calendarMode = computed(() => (this.currentOperator() === 'between' ? 'range' : 'single'));
5014
+ }
5015
+ onRemove() {
5016
+ this.removed.emit(this.filter().id);
5017
+ }
5018
+ selectOperator(operator, dropdown) {
5019
+ const f = this.filter();
5020
+ if (f.value.type !== 'date') {
5021
+ return;
5022
+ }
5023
+ const isBetween = operator === 'between';
5024
+ const updated = {
5025
+ ...f,
5026
+ value: {
5027
+ type: 'date',
5028
+ operator,
5029
+ value: isBetween ? null : f.value.value,
5030
+ rangeStart: isBetween ? f.value.rangeStart : null,
5031
+ rangeEnd: isBetween ? f.value.rangeEnd : null
5032
+ }
5033
+ };
5034
+ this.changed.emit(updated);
5035
+ dropdown.close();
5036
+ }
5037
+ onRangeSelected(range, dropdown) {
5038
+ const f = this.filter();
5039
+ if (f.value.type !== 'date') {
5040
+ return;
5041
+ }
5042
+ this.changed.emit({
5043
+ ...f,
5044
+ value: {
5045
+ type: 'date',
5046
+ operator: 'between',
5047
+ value: null,
5048
+ rangeStart: range.start,
5049
+ rangeEnd: range.end
5050
+ }
5051
+ });
5052
+ dropdown.close();
5053
+ }
5054
+ onSingleDateSelected(date, dropdown) {
5055
+ const f = this.filter();
5056
+ if (f.value.type !== 'date') {
5057
+ return;
5058
+ }
5059
+ this.changed.emit({
5060
+ ...f,
5061
+ value: {
5062
+ type: 'date',
5063
+ operator: f.value.operator,
5064
+ value: date,
5065
+ rangeStart: null,
5066
+ rangeEnd: null
5067
+ }
5068
+ });
5069
+ dropdown.close();
5070
+ }
5071
+ formatDate(date) {
5072
+ return date.toLocaleDateString();
5073
+ }
5074
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDateFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5075
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiDateFilterComponent, isStandalone: true, selector: "cui-date-filter", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { removed: "removed", changed: "changed" }, ngImport: i0, template: "<cui-filter-remove-button\n [label]=\"filter().field.label\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"date-filter__operator\"\n [cuiDropdown]=\"operatorDropdownTpl\"\n #operatorDropdown=\"cuiDropdown\"\n>\n <span class=\"date-filter__operator-label\">{{ operatorLabel() }}</span>\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<button\n type=\"button\"\n class=\"date-filter__trigger\"\n [class.date-filter__trigger--active]=\"hasValue()\"\n [cuiDropdown]=\"calendarDropdownTpl\"\n #calendarDropdown=\"cuiDropdown\"\n>\n @if (dateLabel()) {\n <span class=\"date-filter__value\">\n {{ dateLabel() }}\n </span>\n } @else {\n <span class=\"date-filter__placeholder\">Select date</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #operatorDropdownTpl>\n <div class=\"date-filter__dropdown\">\n @for (op of operatorOptions(); track op.value) {\n <button\n type=\"button\"\n class=\"date-filter__option\"\n [class.date-filter__option--selected]=\"currentOperator() === op.value\"\n (click)=\"selectOperator(op.value, operatorDropdown)\"\n >\n {{ op.label }}\n </button>\n }\n </div>\n</ng-template>\n\n<ng-template #calendarDropdownTpl>\n <div class=\"date-filter__calendar-dropdown\">\n <cui-date-range-calendar\n [mode]=\"calendarMode()\"\n [startDate]=\"rangeStart()\"\n [endDate]=\"rangeEnd()\"\n [selectedDate]=\"selectedDate()\"\n (rangeSelected)=\"onRangeSelected($event, calendarDropdown)\"\n (dateSelected)=\"onSingleDateSelected($event, calendarDropdown)\"\n (cancelled)=\"calendarDropdown.close()\"\n />\n </div>\n</ng-template>\n", styles: [":host{display:inline-flex}.date-filter__operator{padding-right:6px;padding-left:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:4px;height:28px;background:transparent;border:1px solid var(--cui-base-200);cursor:pointer}.date-filter__operator:hover{background:var(--cui-base-200)}.date-filter__operator:focus{outline:none}.date-filter__operator-label{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900)}.date-filter__trigger{padding-right:6px;padding-left:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.date-filter__trigger:hover{background:var(--cui-base-200)}.date-filter__trigger:focus{outline:none}.date-filter__trigger--active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.date-filter__trigger--active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.date-filter__value{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.date-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.date-filter__dropdown{display:flex;flex-direction:column;gap:0;padding-top:4px;padding-bottom:4px;min-width:165px;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}.date-filter__option{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:flex-start;border:0;flex-shrink:0;outline:none;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;font-weight:400;font-size:13px;line-height:16px;padding:8px 12px;width:100%;text-align:left;color:var(--cui-base-900);cursor:pointer;-webkit-user-select:none;user-select:none}.date-filter__option:hover{background:var(--cui-base-50)}.date-filter__option--selected{background:var(--cui-lavender-bg)}.date-filter__calendar-dropdown{background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiDateRangeCalendarComponent, selector: "cui-date-range-calendar", inputs: ["mode", "startDate", "endDate", "selectedDate"], outputs: ["rangeSelected", "dateSelected", "cancelled"] }, { kind: "directive", type: CuiDropdownDirective, selector: "[cuiDropdown]", inputs: ["cuiDropdown", "orientation"], outputs: ["isOpened"], exportAs: ["cuiDropdown"] }, { kind: "component", type: CuiFilterRemoveButtonComponent, selector: "cui-filter-remove-button", inputs: ["label"], outputs: ["removed"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5076
+ }
5077
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiDateFilterComponent, decorators: [{
5078
+ type: Component,
5079
+ args: [{ selector: 'cui-date-filter', standalone: true, imports: [
5080
+ CuiButtonModule,
5081
+ CuiDateRangeCalendarComponent,
5082
+ CuiDropdownDirective,
5083
+ CuiFilterRemoveButtonComponent,
5084
+ CuiSvgModule
5085
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<cui-filter-remove-button\n [label]=\"filter().field.label\"\n (removed)=\"onRemove()\"\n/>\n\n<button\n type=\"button\"\n class=\"date-filter__operator\"\n [cuiDropdown]=\"operatorDropdownTpl\"\n #operatorDropdown=\"cuiDropdown\"\n>\n <span class=\"date-filter__operator-label\">{{ operatorLabel() }}</span>\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<button\n type=\"button\"\n class=\"date-filter__trigger\"\n [class.date-filter__trigger--active]=\"hasValue()\"\n [cuiDropdown]=\"calendarDropdownTpl\"\n #calendarDropdown=\"cuiDropdown\"\n>\n @if (dateLabel()) {\n <span class=\"date-filter__value\">\n {{ dateLabel() }}\n </span>\n } @else {\n <span class=\"date-filter__placeholder\">Select date</span>\n }\n <cui-svg icon=\"cuiIconChevronDown\" />\n</button>\n\n<ng-template #operatorDropdownTpl>\n <div class=\"date-filter__dropdown\">\n @for (op of operatorOptions(); track op.value) {\n <button\n type=\"button\"\n class=\"date-filter__option\"\n [class.date-filter__option--selected]=\"currentOperator() === op.value\"\n (click)=\"selectOperator(op.value, operatorDropdown)\"\n >\n {{ op.label }}\n </button>\n }\n </div>\n</ng-template>\n\n<ng-template #calendarDropdownTpl>\n <div class=\"date-filter__calendar-dropdown\">\n <cui-date-range-calendar\n [mode]=\"calendarMode()\"\n [startDate]=\"rangeStart()\"\n [endDate]=\"rangeEnd()\"\n [selectedDate]=\"selectedDate()\"\n (rangeSelected)=\"onRangeSelected($event, calendarDropdown)\"\n (dateSelected)=\"onSingleDateSelected($event, calendarDropdown)\"\n (cancelled)=\"calendarDropdown.close()\"\n />\n </div>\n</ng-template>\n", styles: [":host{display:inline-flex}.date-filter__operator{padding-right:6px;padding-left:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:4px;height:28px;background:transparent;border:1px solid var(--cui-base-200);cursor:pointer}.date-filter__operator:hover{background:var(--cui-base-200)}.date-filter__operator:focus{outline:none}.date-filter__operator-label{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900)}.date-filter__trigger{padding-right:6px;padding-left:6px;font-weight:500;font-size:12px;line-height:14px;display:inline-flex;align-items:center;gap:8px;height:28px;background:transparent;border:1px solid var(--cui-base-200);border-top-right-radius:8px;border-bottom-right-radius:8px;cursor:pointer}.date-filter__trigger:hover{background:var(--cui-base-200)}.date-filter__trigger:focus{outline:none}.date-filter__trigger--active{background:var(--cui-lavender-bg);border-color:var(--cui-badge-lavender-label)}.date-filter__trigger--active:hover{background:var(--cui-base-200);border-color:var(--cui-base-200)}.date-filter__value{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-900);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.date-filter__placeholder{font-weight:500;font-size:12px;line-height:14px;color:var(--cui-base-500)}.date-filter__dropdown{display:flex;flex-direction:column;gap:0;padding-top:4px;padding-bottom:4px;min-width:165px;background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}.date-filter__option{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:flex-start;border:0;flex-shrink:0;outline:none;appearance:none;color:inherit;font:inherit;background:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;font-weight:400;font-size:13px;line-height:16px;padding:8px 12px;width:100%;text-align:left;color:var(--cui-base-900);cursor:pointer;-webkit-user-select:none;user-select:none}.date-filter__option:hover{background:var(--cui-base-50)}.date-filter__option--selected{background:var(--cui-lavender-bg)}.date-filter__calendar-dropdown{background:var(--cui-base-0);border:1px solid var(--cui-base-200);border-radius:8px;box-shadow:0 4px 12px #00000026;overflow:hidden}\n"] }]
5086
+ }] });
5087
+
5088
+ function buildOutputObject(filters) {
5089
+ const result = {};
5090
+ for (const filter of filters) {
5091
+ const entries = extractEntries(filter.field, filter.value);
5092
+ for (const [path, val] of entries) {
5093
+ setByPath(result, path, val);
5094
+ }
5095
+ }
5096
+ return result;
5097
+ }
5098
+ function extractEntries(field, value) {
5099
+ switch (field.type) {
5100
+ case 'string': {
5101
+ const v = value;
5102
+ if (!v.value)
5103
+ return [];
5104
+ return [[field.outputMapping.value, v.value]];
5105
+ }
5106
+ case 'select': {
5107
+ const v = value;
5108
+ if (v.value == null)
5109
+ return [];
5110
+ return [[field.outputMapping.value, v.value]];
5111
+ }
5112
+ case 'multiselect': {
5113
+ const v = value;
5114
+ if (!v.values.length)
5115
+ return [];
5116
+ return [[field.outputMapping.values, v.values]];
5117
+ }
5118
+ case 'date': {
5119
+ const v = value;
5120
+ const mapping = field.outputMapping;
5121
+ return buildDateEntries(v.operator, v.value, v.rangeStart, v.rangeEnd, mapping.start, mapping.end);
5122
+ }
5123
+ case 'range': {
5124
+ const v = value;
5125
+ const mapping = field.outputMapping;
5126
+ const entries = [];
5127
+ if (v.min != null)
5128
+ entries.push([mapping.min, v.min]);
5129
+ if (v.max != null)
5130
+ entries.push([mapping.max, v.max]);
5131
+ return entries;
5132
+ }
5133
+ }
5134
+ }
5135
+ function buildDateEntries(operator, value, rangeStart, rangeEnd, startPath, endPath) {
5136
+ const entries = [];
5137
+ switch (operator) {
5138
+ case 'on':
5139
+ if (value) {
5140
+ entries.push([startPath, formatDateStart(value)]);
5141
+ entries.push([endPath, formatDateEnd(value)]);
5142
+ }
5143
+ break;
5144
+ case 'before':
5145
+ if (value) {
5146
+ entries.push([endPath, formatDateEnd(value)]);
5147
+ }
5148
+ break;
5149
+ case 'after':
5150
+ if (value) {
5151
+ entries.push([startPath, formatDateStart(value)]);
5152
+ }
5153
+ break;
5154
+ case 'between':
5155
+ if (rangeStart)
5156
+ entries.push([startPath, formatDateStart(rangeStart)]);
5157
+ if (rangeEnd)
5158
+ entries.push([endPath, formatDateEnd(rangeEnd)]);
5159
+ break;
5160
+ }
5161
+ return entries;
5162
+ }
5163
+ function formatDateStart(date) {
5164
+ return formatDate(date) + 'T00:00:00';
5165
+ }
5166
+ function formatDateEnd(date) {
5167
+ return formatDate(date) + 'T23:59:59';
5168
+ }
5169
+ function formatDate(date) {
5170
+ const y = date.getFullYear();
5171
+ const m = String(date.getMonth() + 1).padStart(2, '0');
5172
+ const d = String(date.getDate()).padStart(2, '0');
5173
+ return `${y}-${m}-${d}`;
5174
+ }
5175
+ function setByPath(obj, path, value) {
5176
+ const keys = path.split('.');
5177
+ let current = obj;
5178
+ for (let i = 0; i < keys.length - 1; i++) {
5179
+ const key = keys[i];
5180
+ if (!(key in current) || typeof current[key] !== 'object' || current[key] === null) {
5181
+ current[key] = {};
5182
+ }
5183
+ current = current[key];
5184
+ }
5185
+ current[keys[keys.length - 1]] = value;
5186
+ }
5187
+ function buildDefaultValue(field) {
5188
+ switch (field.type) {
5189
+ case 'string':
5190
+ return { type: 'string', operator: field.stringOperators?.[0] ?? 'contains', value: '' };
5191
+ case 'select':
5192
+ return { type: 'select', operator: field.selectOperators?.[0] ?? 'equals', value: null };
5193
+ case 'multiselect':
5194
+ return { type: 'multiselect', operator: field.multiSelectOperators?.[0] ?? 'in', values: [] };
5195
+ case 'date':
5196
+ return { type: 'date', operator: field.dateOperators?.[0] ?? 'on', value: null, rangeStart: null, rangeEnd: null };
5197
+ case 'range':
5198
+ return { type: 'range', min: null, max: null };
5199
+ }
5200
+ }
5201
+
5202
+ class CuiFilterBarComponent {
5203
+ constructor() {
5204
+ this.fields = input.required();
5205
+ this.filterChange = output();
5206
+ this._filters = signal([]);
5207
+ this.availableFields = computed(() => {
5208
+ const usedIds = new Set(this._filters().map(f => f.id));
5209
+ return this.fields().filter(f => !usedIds.has(f.id));
5210
+ });
5211
+ }
5212
+ selectField(field) {
5213
+ const newFilter = {
5214
+ id: crypto.randomUUID(),
5215
+ field,
5216
+ value: buildDefaultValue(field)
5217
+ };
5218
+ this._filters.set([...this._filters(), newFilter]);
5219
+ this.emitFilterChange();
5220
+ }
5221
+ onFilterChanged(updated) {
5222
+ const next = this._filters().map(f => (f.id === updated.id ? updated : f));
5223
+ this._filters.set(next);
5224
+ this.emitFilterChange();
5225
+ }
5226
+ onFilterRemoved(id) {
5227
+ const next = this._filters().filter(f => f.id !== id);
5228
+ this._filters.set(next);
5229
+ this.emitFilterChange();
5230
+ }
5231
+ emitFilterChange() {
5232
+ this.filterChange.emit(buildOutputObject(this._filters()));
5233
+ }
5234
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFilterBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5235
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiFilterBarComponent, isStandalone: true, selector: "cui-filter-bar", inputs: { fields: { classPropertyName: "fields", publicName: "fields", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { filterChange: "filterChange" }, ngImport: i0, template: "<div class=\"cui-filter-bar\">\n <div class=\"cui-filter-bar__list\">\n @for (filter of _filters(); track filter.id) {\n @switch (filter.field.type) {\n @case ('string') {\n <cui-string-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n @case ('date') {\n <cui-date-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n @case ('range') {\n <cui-range-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n @case ('select') {\n <cui-select-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n @case ('multiselect') {\n <cui-multiselect-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n }\n }\n\n @if (availableFields().length > 0) {\n <cui-add-filter-button\n [availableFields]=\"availableFields()\"\n (fieldSelected)=\"selectField($event)\"\n />\n }\n </div>\n</div>\n", styles: [".cui-filter-bar{display:flex;flex-direction:row;gap:12px}.cui-filter-bar__list{display:flex;flex-direction:row;gap:8px;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: CuiAddFilterButtonComponent, selector: "cui-add-filter-button", inputs: ["availableFields"], outputs: ["fieldSelected"] }, { kind: "component", type: CuiDateFilterComponent, selector: "cui-date-filter", inputs: ["filter"], outputs: ["removed", "changed"] }, { kind: "component", type: CuiMultiSelectFilterComponent, selector: "cui-multiselect-filter", inputs: ["filter"], outputs: ["removed", "changed"] }, { kind: "component", type: CuiRangeFilterComponent, selector: "cui-range-filter", inputs: ["filter"], outputs: ["removed", "changed"] }, { kind: "component", type: CuiSelectFilterComponent, selector: "cui-select-filter", inputs: ["filter"], outputs: ["removed", "changed"] }, { kind: "component", type: CuiStringFilterComponent, selector: "cui-string-filter", inputs: ["filter"], outputs: ["removed", "changed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5236
+ }
5237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFilterBarComponent, decorators: [{
5238
+ type: Component,
5239
+ args: [{ selector: 'cui-filter-bar', standalone: true, imports: [
5240
+ CuiAddFilterButtonComponent,
5241
+ CuiDateFilterComponent,
5242
+ CuiFilterRemoveButtonComponent,
5243
+ CuiMultiSelectFilterComponent,
5244
+ CuiRangeFilterComponent,
5245
+ CuiSelectFilterComponent,
5246
+ CuiStringFilterComponent
5247
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cui-filter-bar\">\n <div class=\"cui-filter-bar__list\">\n @for (filter of _filters(); track filter.id) {\n @switch (filter.field.type) {\n @case ('string') {\n <cui-string-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n @case ('date') {\n <cui-date-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n @case ('range') {\n <cui-range-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n @case ('select') {\n <cui-select-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n @case ('multiselect') {\n <cui-multiselect-filter\n [filter]=\"filter\"\n (changed)=\"onFilterChanged($event)\"\n (removed)=\"onFilterRemoved($event)\"\n />\n }\n }\n }\n\n @if (availableFields().length > 0) {\n <cui-add-filter-button\n [availableFields]=\"availableFields()\"\n (fieldSelected)=\"selectField($event)\"\n />\n }\n </div>\n</div>\n", styles: [".cui-filter-bar{display:flex;flex-direction:row;gap:12px}.cui-filter-bar__list{display:flex;flex-direction:row;gap:8px;flex-wrap:wrap}\n"] }]
5248
+ }] });
5249
+
5250
+ class CuiFilterBarModule {
5251
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFilterBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5252
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: CuiFilterBarModule, imports: [CuiFilterBarComponent], exports: [CuiFilterBarComponent] }); }
5253
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFilterBarModule, imports: [CuiFilterBarComponent] }); }
5254
+ }
5255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiFilterBarModule, decorators: [{
5256
+ type: NgModule,
5257
+ args: [{
5258
+ imports: [CuiFilterBarComponent],
5259
+ exports: [CuiFilterBarComponent]
5260
+ }]
5261
+ }] });
5262
+
4453
5263
  const COMBINED_TEXT_BLOCK_PART = 'combined-text-block-part';
4454
5264
  const COMBINED_TEXT_BLOCK = 'combined-text-block';
4455
5265
  const COMBINED_TEXT_BLOCK_NAME = 'paragraph';
@@ -5229,7 +6039,7 @@ class MarkerModalComponent {
5229
6039
  this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';
5230
6040
  }
5231
6041
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MarkerModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5232
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MarkerModalComponent, isStandalone: true, selector: "ng-component", inputs: { title: "title", url: "url", tool: "tool", isGlobal: "isGlobal", isTool: "isTool", target: "target", space: "space" }, outputs: { saveClicked: "saveClicked", cancelClicked: "cancelClicked" }, host: { properties: { "class._hidden": "this.hide", "class._fixed": "this.fixed" } }, hostDirectives: [{ directive: i1$1.CuiClickOutsideDirective }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <ng-container *ngIf=\"isVisible()\">\n <form\n autocomplete=\"off\"\n class=\"wrapper\"\n >\n <cui-form-field>\n <!-- eslint-disable-next-line -->\n <label\n [for]=\"titleId\"\n cuiLabel\n [isRequired]=\"true\"\n (click)=\"onTitleLabelClick(titleElement)\"\n >\n {{ t('TITLE') }}\n </label>\n <!-- TODO: \u0435\u0441\u043B\u0438 \u043D\u0430\u0439\u0434\u0435\u0442\u0441\u044F \u0432\u0430\u0440\u0438\u043A \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u0447\u0435\u0440\u0435\u0437 \u0444\u043E\u0440\u043C\u0443 -->\n <div\n class=\"title\"\n [class.title_invalid]=\"isTitleInvalid()\"\n >\n <div\n #titleElement\n class=\"title__text\"\n contenteditable\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\n (paste)=\"onTitlePaste($event)\"\n (keyup)=\"onTitleChange($event)\"\n [innerHTML]=\"startTitle\"\n ></div>\n <button\n type=\"button\"\n class=\"title__clear\"\n (click)=\"onClearTitle(titleElement)\"\n >\n <cui-svg\n icon=\"cuiIconClear\"\n color=\"var(--cui-base-300)\"\n class=\"title__icon\"\n />\n </button>\n </div>\n\n <cui-hint\n *ngIf=\"isTitleInvalid()\"\n hintType=\"error\"\n >\n <ng-container *ngIf=\"isTitleEmpty()\">\n {{ t('FIELD_IS_REQUIRED') }}\n </ng-container>\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: TITLE_MAX_LENGTH }) }}\n </ng-container>\n </cui-hint>\n </cui-form-field>\n <cui-form-field>\n <label\n [for]=\"dataId\"\n cuiLabel\n [isRequired]=\"true\"\n >\n {{ isTool ? t('TOOL') : t('URL') }}\n </label>\n <ng-container *ngIf=\"dynamicDataControl\">\n <ng-container *ngIf=\"isTool; else input\">\n <div>\n <button\n #target=\"elementRef\"\n class=\"button tool-button\"\n cuiButton\n type=\"button\"\n cuiElement\n appearance=\"outlined-gray\"\n size=\"sm\"\n >\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\n </button>\n </div>\n <cc-marker-select\n [formControl]=\"dynamicDataControl\"\n [target]=\"target.nativeElement\"\n />\n </ng-container>\n <ng-template #input>\n <cui-input-text\n [cuiTextFieldId]=\"dataId\"\n [formControl]=\"dynamicDataControl\"\n autocomplete=\"off\"\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\n />\n <cui-hint\n *ngIf=\"isDynamicDataErrorShown\"\n hintType=\"error\"\n >\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\n {{ t('FIELD_IS_REQUIRED') }}\n </ng-container>\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\n {{ t('INVALID_URL') }}\n </ng-container>\n </cui-hint>\n </ng-template>\n </ng-container>\n </cui-form-field>\n <div class=\"buttons\">\n <button\n cuiButton\n type=\"button\"\n appearance=\"outlined-gray\"\n size=\"sm\"\n (click)=\"onCancel()\"\n >\n {{ t('CANCEL') }}\n </button>\n <button\n cuiButton\n type=\"submit\"\n appearance=\"action\"\n size=\"sm\"\n [disabled]=\"isFormInvalid\"\n (click)=\"onSave()\"\n >\n {{ t('SAVE') }}\n </button>\n </div>\n </form>\n </ng-container>\n</ng-container>\n", styles: [":host{position:absolute;z-index:1;left:0}:host._fixed{position:fixed}:host._hidden{position:fixed;visibility:hidden}:host ::ng-deep .tool-button{width:100%}:host ::ng-deep .tool-button>span{justify-content:flex-start!important}.wrapper{padding:11px;box-shadow:0 2px 4px -1px #0000000f,0 4px 6px -1px #0000001a;display:flex;flex-direction:column;gap:16px;border-radius:8px;border:1px solid var(--cui-base-200);max-width:450px;background-color:var(--cui-base-0)}.buttons{padding-top:12px;display:flex;justify-content:flex-end;gap:12px}.title{padding:7px 13px;cursor:text;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;width:426px;background:var(--cui-input);color:var(--cui-base-900)}.title:hover{border-color:var(--cui-base-300)}.title:focus-within{outline:none;box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}.title_invalid,.title_invalid:focus-within{box-shadow:none;border-color:var(--cui-danger)}.title__text{flex-grow:1;text-wrap:nowrap;overflow:hidden}.title__text[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.title__text:focus{outline:none}.title__clear{padding:0;visibility:hidden}.title__icon{width:16px}.title__icon ::ng-deep [stroke]{stroke:var(--cui-base-0)}.title__text:not(:empty)+.title__clear{visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "directive", type: CuiElementDirective, selector: "[cuiElement]", exportAs: ["elementRef"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "ngmodule", type: CuiHintModule }, { kind: "component", type: CuiHintComponent, selector: "cui-hint", inputs: ["hintType"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MarkerSelectComponent, selector: "cc-marker-select", inputs: ["target", "space"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6042
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MarkerModalComponent, isStandalone: true, selector: "ng-component", inputs: { title: "title", url: "url", tool: "tool", isGlobal: "isGlobal", isTool: "isTool", target: "target", space: "space" }, outputs: { saveClicked: "saveClicked", cancelClicked: "cancelClicked" }, host: { properties: { "class._hidden": "this.hide", "class._fixed": "this.fixed" } }, hostDirectives: [{ directive: i1$1.CuiClickOutsideDirective }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <ng-container *ngIf=\"isVisible()\">\n <form\n autocomplete=\"off\"\n class=\"wrapper\"\n >\n <cui-form-field>\n <!-- eslint-disable-next-line -->\n <label\n [for]=\"titleId\"\n cuiLabel\n [isRequired]=\"true\"\n (click)=\"onTitleLabelClick(titleElement)\"\n >\n {{ t('TITLE') }}\n </label>\n <!-- TODO: \u0435\u0441\u043B\u0438 \u043D\u0430\u0439\u0434\u0435\u0442\u0441\u044F \u0432\u0430\u0440\u0438\u043A \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u0447\u0435\u0440\u0435\u0437 \u0444\u043E\u0440\u043C\u0443 -->\n <div\n class=\"title\"\n [class.title_invalid]=\"isTitleInvalid()\"\n >\n <div\n #titleElement\n class=\"title__text\"\n contenteditable\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\n (paste)=\"onTitlePaste($event)\"\n (keyup)=\"onTitleChange($event)\"\n [innerHTML]=\"startTitle\"\n ></div>\n <button\n type=\"button\"\n class=\"title__clear\"\n (click)=\"onClearTitle(titleElement)\"\n >\n <cui-svg\n icon=\"cuiIconClear\"\n color=\"var(--cui-base-300)\"\n class=\"title__icon\"\n />\n </button>\n </div>\n\n <cui-hint\n *ngIf=\"isTitleInvalid()\"\n hintType=\"error\"\n >\n <ng-container *ngIf=\"isTitleEmpty()\">\n {{ t('FIELD_IS_REQUIRED') }}\n </ng-container>\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS', { value: TITLE_MAX_LENGTH }) }}\n </ng-container>\n </cui-hint>\n </cui-form-field>\n <cui-form-field>\n <label\n [for]=\"dataId\"\n cuiLabel\n [isRequired]=\"true\"\n >\n {{ isTool ? t('TOOL') : t('URL') }}\n </label>\n <ng-container *ngIf=\"dynamicDataControl\">\n <ng-container *ngIf=\"isTool; else input\">\n <div>\n <button\n #target=\"elementRef\"\n class=\"button tool-button\"\n cuiButton\n type=\"button\"\n cuiElement\n appearance=\"outlined-gray\"\n size=\"sm\"\n >\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\n </button>\n </div>\n <cc-marker-select\n [formControl]=\"dynamicDataControl\"\n [target]=\"target.nativeElement\"\n />\n </ng-container>\n <ng-template #input>\n <cui-input-text\n [cuiTextFieldId]=\"dataId\"\n [formControl]=\"dynamicDataControl\"\n autocomplete=\"off\"\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\n />\n <cui-hint\n *ngIf=\"isDynamicDataErrorShown\"\n hintType=\"error\"\n >\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\n {{ t('FIELD_IS_REQUIRED') }}\n </ng-container>\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\n {{ t('INVALID_URL') }}\n </ng-container>\n </cui-hint>\n </ng-template>\n </ng-container>\n </cui-form-field>\n <div class=\"buttons\">\n <button\n cuiButton\n type=\"button\"\n appearance=\"outlined-gray\"\n size=\"sm\"\n (click)=\"onCancel()\"\n >\n {{ t('CANCEL') }}\n </button>\n <button\n cuiButton\n type=\"submit\"\n appearance=\"action\"\n size=\"sm\"\n [disabled]=\"isFormInvalid\"\n (click)=\"onSave()\"\n >\n {{ t('SAVE') }}\n </button>\n </div>\n </form>\n </ng-container>\n</ng-container>\n", styles: [":host{position:absolute;z-index:1;left:0}:host._fixed{position:fixed}:host._hidden{position:fixed;visibility:hidden}:host ::ng-deep .tool-button{width:100%}:host ::ng-deep .tool-button>span{justify-content:flex-start!important}.wrapper{padding:11px;box-shadow:0 2px 4px -1px #0000000f,0 4px 6px -1px #0000001a;display:flex;flex-direction:column;gap:16px;border-radius:8px;border:1px solid var(--cui-base-200);max-width:450px;background-color:var(--cui-base-0)}.buttons{padding-top:12px;display:flex;justify-content:flex-end;gap:12px}.title{padding:7px 13px;cursor:text;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;width:426px;background:var(--cui-input);color:var(--cui-base-900)}.title:hover{border-color:var(--cui-base-300)}.title:focus-within{outline:none;box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}.title_invalid,.title_invalid:focus-within{box-shadow:none;border-color:var(--cui-danger)}.title__text{flex-grow:1;text-wrap:nowrap;overflow:hidden}.title__text[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.title__text:focus{outline:none}.title__clear{padding:0;visibility:hidden}.title__icon{width:16px}.title__icon ::ng-deep [stroke]{stroke:var(--cui-base-0)}.title__text:not(:empty)+.title__clear{visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "directive", type: CuiElementDirective, selector: "[cuiElement]", exportAs: ["elementRef"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "ngmodule", type: CuiHintModule }, { kind: "component", type: CuiHintComponent, selector: "cui-hint", inputs: ["hintType"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MarkerSelectComponent, selector: "cc-marker-select", inputs: ["target", "space"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5233
6043
  }
5234
6044
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MarkerModalComponent, decorators: [{
5235
6045
  type: Component,
@@ -8526,7 +9336,7 @@ class CuiCategoryFormComponent {
8526
9336
  Promise.resolve().then(() => this.input().nativeElement.focus());
8527
9337
  }
8528
9338
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCategoryFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8529
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: CuiCategoryFormComponent, isStandalone: true, selector: "cui-category-form", inputs: { isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, defaultTitle: { classPropertyName: "defaultTitle", publicName: "defaultTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { created: "created", canceled: "canceled" }, host: { listeners: { "click": "onHostClick($event)" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <form\n [formGroup]=\"form\"\n class=\"form\"\n (ngSubmit)=\"onSubmit()\"\n >\n <div class=\"input\">\n <input\n #input\n cuiGhostInput\n formControlName=\"title\"\n type=\"text\"\n placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\n [isError]=\"isTitleInvalid\"\n (keyup)=\"$event.preventDefault()\"\n />\n <cui-general-control-error-hint [control]=\"titleControl\" />\n </div>\n <button\n cuiIconButton\n type=\"submit\"\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"isSubmitButtonDisabled\"\n class=\"button\"\n ></button>\n </form>\n <button\n cuiIconButton\n type=\"button\"\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n (click)=\"onCancel($event)\"\n [disabled]=\"isDisabled()\"\n class=\"button\"\n ></button>\n</ng-container>\n", styles: [":host{padding-top:2px;padding-bottom:2px;display:flex;gap:4px;flex-grow:1}.form,.input{flex-grow:1}.form{display:flex;flex-direction:row;gap:4px}.input{display:flex;flex-direction:column;gap:4px;align-items:flex-start;justify-content:flex-start}.button{width:28px}.button:disabled{opacity:.5}\n"], dependencies: [{ kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "component", type: CuiGhostInputComponent, selector: "input [cuiGhostInput]", inputs: ["isError"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9339
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: CuiCategoryFormComponent, isStandalone: true, selector: "cui-category-form", inputs: { isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, defaultTitle: { classPropertyName: "defaultTitle", publicName: "defaultTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { created: "created", canceled: "canceled" }, host: { listeners: { "click": "onHostClick($event)" } }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <form\n [formGroup]=\"form\"\n class=\"form\"\n (ngSubmit)=\"onSubmit()\"\n >\n <div class=\"input\">\n <input\n #input\n cuiGhostInput\n formControlName=\"title\"\n type=\"text\"\n placeholder=\"{{ t('ADD_CATEGORY_NAME') }}...\"\n [isError]=\"isTitleInvalid\"\n (keyup)=\"$event.preventDefault()\"\n />\n <cui-general-control-error-hint [control]=\"titleControl\" />\n </div>\n <button\n cuiIconButton\n type=\"submit\"\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"isSubmitButtonDisabled\"\n class=\"button\"\n ></button>\n </form>\n <button\n cuiIconButton\n type=\"button\"\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n (click)=\"onCancel($event)\"\n [disabled]=\"isDisabled()\"\n class=\"button\"\n ></button>\n</ng-container>\n", styles: [":host{padding-top:2px;padding-bottom:2px;display:flex;gap:4px;flex-grow:1}.form,.input{flex-grow:1}.form{display:flex;flex-direction:row;gap:4px}.input{display:flex;flex-direction:column;gap:4px;align-items:flex-start;justify-content:flex-start}.button{width:28px}.button:disabled{opacity:.5}\n"], dependencies: [{ kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "component", type: CuiGhostInputComponent, selector: "input [cuiGhostInput]", inputs: ["isError"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8530
9340
  }
8531
9341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCategoryFormComponent, decorators: [{
8532
9342
  type: Component,
@@ -8909,7 +9719,7 @@ class CuiCheckListBlockListItemActionCardComponent {
8909
9719
  });
8910
9720
  }
8911
9721
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCheckListBlockListItemActionCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8912
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCheckListBlockListItemActionCardComponent, isStandalone: true, selector: "cui-checklist-block-list-item-action-card", inputs: { purposeType: { classPropertyName: "purposeType", publicName: "purposeType", isSignal: true, isRequired: false, transformFunction: null }, isConsiderationNeeded: { classPropertyName: "isConsiderationNeeded", publicName: "isConsiderationNeeded", isSignal: true, isRequired: false, transformFunction: null }, actionInfo: { classPropertyName: "actionInfo", publicName: "actionInfo", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { consideredCorrectChanged: "consideredCorrectChanged", checkListActionChanged: "checkListActionChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div\n class=\"card\"\n [formGroup]=\"actionForm\"\n >\n <div class=\"title-container\">\n <span class=\"title\">{{ actionInfo().title }}</span>\n @if (isConsiderationNeeded()) {\n <label\n cuiLabel\n class=\"title__input\"\n >\n <input\n cuiRadio\n type=\"radio\"\n [checked]=\"actionInfo().considerCorrect\"\n [formControl]=\"isConsideredCorrectControl\"\n [value]=\"true\"\n />\n {{ t('CONSIDER_CORRECT') }}\n </label>\n }\n </div>\n <div class=\"blocks\">\n <div\n class=\"block-card\"\n [formGroup]=\"photoGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('PHOTO') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n <div\n class=\"block-card\"\n [formGroup]=\"commentGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('COMMENT') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [":host{flex:1 1 240px;min-width:240px}.card{padding:11px;display:flex;flex-direction:column;gap:10px;border:1px solid var(--cui-base-200);border-radius:8px}.title-container{display:flex;flex-direction:row;gap:8px;justify-content:space-between;align-items:center}.title{font-weight:500;font-size:14px;line-height:20px}.title__input{font-weight:400;font-size:14px;line-height:20px}.blocks{display:flex;flex-direction:column;gap:8px}.block-card{padding:13px 11px;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px}.block-card_multiple-lines{flex-direction:column;align-items:unset}.block-card__checkboxes-container{padding:13px 8px;display:flex;gap:12px}\n"], dependencies: [{ kind: "ngmodule", type: CuiCheckboxModule }, { kind: "component", type: CuiCheckboxComponent, selector: "input[type=\"checkbox\"][cuiCheckbox]" }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiRadioModule }, { kind: "component", type: CuiRadioComponent, selector: "input[type=\"radio\"][cuiRadio]" }, { kind: "ngmodule", type: CuiSelectModule }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "ngmodule", type: CuiTextFieldControllerModule }, { kind: "ngmodule", type: CuiToggleModule }, { kind: "component", type: CuiToggleComponent, selector: "input[type=\"checkbox\"][cuiToggle]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9722
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCheckListBlockListItemActionCardComponent, isStandalone: true, selector: "cui-checklist-block-list-item-action-card", inputs: { purposeType: { classPropertyName: "purposeType", publicName: "purposeType", isSignal: true, isRequired: false, transformFunction: null }, isConsiderationNeeded: { classPropertyName: "isConsiderationNeeded", publicName: "isConsiderationNeeded", isSignal: true, isRequired: false, transformFunction: null }, actionInfo: { classPropertyName: "actionInfo", publicName: "actionInfo", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { consideredCorrectChanged: "consideredCorrectChanged", checkListActionChanged: "checkListActionChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div\n class=\"card\"\n [formGroup]=\"actionForm\"\n >\n <div class=\"title-container\">\n <span class=\"title\">{{ actionInfo().title }}</span>\n @if (isConsiderationNeeded()) {\n <label\n cuiLabel\n class=\"title__input\"\n >\n <input\n cuiRadio\n type=\"radio\"\n [checked]=\"actionInfo().considerCorrect\"\n [formControl]=\"isConsideredCorrectControl\"\n [value]=\"true\"\n />\n {{ t('CONSIDER_CORRECT') }}\n </label>\n }\n </div>\n <div class=\"blocks\">\n <div\n class=\"block-card\"\n [formGroup]=\"photoGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('PHOTO') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n <div\n class=\"block-card\"\n [formGroup]=\"commentGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('COMMENT') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [":host{flex:1 1 240px;min-width:240px}.card{padding:11px;display:flex;flex-direction:column;gap:10px;border:1px solid var(--cui-base-200);border-radius:8px}.title-container{display:flex;flex-direction:row;gap:8px;justify-content:space-between;align-items:center}.title{font-weight:500;font-size:14px;line-height:20px}.title__input{font-weight:400;font-size:14px;line-height:20px}.blocks{display:flex;flex-direction:column;gap:8px}.block-card{padding:13px 11px;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px}.block-card_multiple-lines{flex-direction:column;align-items:unset}.block-card__checkboxes-container{padding:13px 8px;display:flex;gap:12px}\n"], dependencies: [{ kind: "ngmodule", type: CuiCheckboxModule }, { kind: "component", type: CuiCheckboxComponent, selector: "input[type=\"checkbox\"][cuiCheckbox]" }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiRadioModule }, { kind: "component", type: CuiRadioComponent, selector: "input[type=\"radio\"][cuiRadio]" }, { kind: "ngmodule", type: CuiSelectModule }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "ngmodule", type: CuiTextFieldControllerModule }, { kind: "ngmodule", type: CuiToggleModule }, { kind: "component", type: CuiToggleComponent, selector: "input[type=\"checkbox\"][cuiToggle]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8913
9723
  }
8914
9724
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCheckListBlockListItemActionCardComponent, decorators: [{
8915
9725
  type: Component,
@@ -8999,7 +9809,7 @@ class CuiChecklistBlockTitleControlComponent {
8999
9809
  return this.control().invalid && this.control().dirty;
9000
9810
  }
9001
9811
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiChecklistBlockTitleControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9002
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CuiChecklistBlockTitleControlComponent, isStandalone: true, selector: "cui-checklist-block-title-control", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n for=\"title\"\n >\n {{ t('TITLE') }}\n </label>\n <cui-input-text\n [formControl]=\"control()\"\n cuiTextFieldId=\"title\"\n [cuiTextFieldIsError]=\"isTitleError\"\n cuiTextFieldPlaceholder=\"{{ t('ADD_A_TITLE') }}...\"\n />\n <cui-general-control-error-hint [control]=\"control()\" />\n </cui-form-field>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiTextFieldControllerModule }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9812
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CuiChecklistBlockTitleControlComponent, isStandalone: true, selector: "cui-checklist-block-title-control", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n for=\"title\"\n >\n {{ t('TITLE') }}\n </label>\n <cui-input-text\n [formControl]=\"control()\"\n cuiTextFieldId=\"title\"\n [cuiTextFieldIsError]=\"isTitleError\"\n cuiTextFieldPlaceholder=\"{{ t('ADD_A_TITLE') }}...\"\n />\n <cui-general-control-error-hint [control]=\"control()\" />\n </cui-form-field>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiTextFieldControllerModule }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9003
9813
  }
9004
9814
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiChecklistBlockTitleControlComponent, decorators: [{
9005
9815
  type: Component,
@@ -9230,7 +10040,7 @@ class CuiCheckListBlockListItemEvaluationCriteriaComponent {
9230
10040
  });
9231
10041
  }
9232
10042
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCheckListBlockListItemEvaluationCriteriaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCheckListBlockListItemEvaluationCriteriaComponent, isStandalone: true, selector: "li[cuiChecklistBlockListItemEvaluationCriteria]", inputs: { loadingIds: { classPropertyName: "loadingIds", publicName: "loadingIds", isSignal: true, isRequired: true, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, criteriaGroup: { classPropertyName: "criteriaGroup", publicName: "criteriaGroup", isSignal: true, isRequired: true, transformFunction: null }, evaluationCriteriaFormArray: { classPropertyName: "evaluationCriteriaFormArray", publicName: "evaluationCriteriaFormArray", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { saveClicked: "saveClicked", deleteClicked: "deleteClicked", cancelClicked: "cancelClicked" }, ngImport: i0, template: "<div *transloco=\"let t\">\n <form\n *cuiLet=\"criteriaGroup() as form\"\n [formGroup]=\"form\"\n [class.form_edit]=\"isEditMode()\"\n clas=\"form\"\n >\n <div class=\"content\">\n <span class=\"index\">{{ index() }}.</span>\n @if (!isEditMode()) {\n <cui-svg\n cuiDragPointer\n icon=\"cuiIconDragHandleDots\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n }\n <div\n style.gap=\"{{ gap() }}px\"\n class=\"wrapper\"\n >\n <cui-input-number\n formControlName=\"evaluation\"\n cuiTextFieldPlaceholder=\"0\"\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\n [min]=\"1\"\n [max]=\"99\"\n class=\"input-number\"\n />\n <textarea\n cuiTextarea\n formControlName=\"criteria\"\n [rows]=\"1\"\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\n class=\"textarea\"\n ></textarea>\n </div>\n @if (isEditMode()) {\n <button\n type=\"submit\"\n cuiIconButton\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"form.invalid\"\n class=\"button\"\n (click)=\"onSave()\"\n ></button>\n <button\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n class=\"button\"\n (click)=\"onCancel()\"\n ></button>\n } @else {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n [disabled]=\"isLoading()\"\n (click)=\"onToggleEditMode()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDelete()\"\n ></button>\n }\n </div>\n <cui-general-control-error-hint\n [control]=\"form.controls.criteria\"\n class=\"error-hint\"\n />\n </form>\n</div>\n", styles: [".form{display:flex;flex-direction:column;gap:8px}.form_edit{padding:12px;border-radius:8px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.content{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-start}.index{font-weight:500;font-size:14px;line-height:20px;width:22px}.icon{cursor:grab}.icon:active{cursor:grabbing}.wrapper{display:flex;flex-direction:row;gap:0;flex-grow:1}.input-number{padding-right:9px;padding-left:9px;flex-shrink:0;width:44px;background:inherit}.input-number._disabled{cursor:initial;opacity:1;border-right-width:0;border-radius:8px 0 0 8px}.input-number ::ng-deep .c-input{text-align:center}.input-number ::ng-deep .c-input:disabled{cursor:text}.textarea{background:var(--cui-base-0)}.textarea:disabled{cursor:initial;opacity:1;background:var(--cui-base-0);border-left-width:0;border-radius:0 8px 8px 0}.button:disabled{cursor:not-allowed;opacity:.5}.error-hint{margin-left:82px}.cui-drag-drop-placeholder{height:44px;border:1px dashed var(--cui-base-200);border-radius:8px;background:var(--cui-base-0)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "directive", type: CuiLetDirective, selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "component", type: CuiTextareaComponent, selector: "textarea[cuiTextarea]", inputs: ["rows", "noBordersAndPaddings"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: CuiDragPointerDirective, selector: "[cuiDragPointer]" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10043
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCheckListBlockListItemEvaluationCriteriaComponent, isStandalone: true, selector: "li[cuiChecklistBlockListItemEvaluationCriteria]", inputs: { loadingIds: { classPropertyName: "loadingIds", publicName: "loadingIds", isSignal: true, isRequired: true, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, criteriaGroup: { classPropertyName: "criteriaGroup", publicName: "criteriaGroup", isSignal: true, isRequired: true, transformFunction: null }, evaluationCriteriaFormArray: { classPropertyName: "evaluationCriteriaFormArray", publicName: "evaluationCriteriaFormArray", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { saveClicked: "saveClicked", deleteClicked: "deleteClicked", cancelClicked: "cancelClicked" }, ngImport: i0, template: "<div *transloco=\"let t\">\n <form\n *cuiLet=\"criteriaGroup() as form\"\n [formGroup]=\"form\"\n [class.form_edit]=\"isEditMode()\"\n clas=\"form\"\n >\n <div class=\"content\">\n <span class=\"index\">{{ index() }}.</span>\n @if (!isEditMode()) {\n <cui-svg\n cuiDragPointer\n icon=\"cuiIconDragHandleDots\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n }\n <div\n style.gap=\"{{ gap() }}px\"\n class=\"wrapper\"\n >\n <cui-input-number\n formControlName=\"evaluation\"\n cuiTextFieldPlaceholder=\"0\"\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\n [min]=\"1\"\n [max]=\"99\"\n class=\"input-number\"\n />\n <textarea\n cuiTextarea\n formControlName=\"criteria\"\n [rows]=\"1\"\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\n class=\"textarea\"\n ></textarea>\n </div>\n @if (isEditMode()) {\n <button\n type=\"submit\"\n cuiIconButton\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"form.invalid\"\n class=\"button\"\n (click)=\"onSave()\"\n ></button>\n <button\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n class=\"button\"\n (click)=\"onCancel()\"\n ></button>\n } @else {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n [disabled]=\"isLoading()\"\n (click)=\"onToggleEditMode()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDelete()\"\n ></button>\n }\n </div>\n <cui-general-control-error-hint\n [control]=\"form.controls.criteria\"\n class=\"error-hint\"\n />\n </form>\n</div>\n", styles: [".form{display:flex;flex-direction:column;gap:8px}.form_edit{padding:12px;border-radius:8px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.content{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-start}.index{font-weight:500;font-size:14px;line-height:20px;width:22px}.icon{cursor:grab}.icon:active{cursor:grabbing}.wrapper{display:flex;flex-direction:row;gap:0;flex-grow:1}.input-number{padding-right:9px;padding-left:9px;flex-shrink:0;width:44px;background:inherit}.input-number._disabled{cursor:initial;opacity:1;border-right-width:0;border-radius:8px 0 0 8px}.input-number ::ng-deep .c-input{text-align:center}.input-number ::ng-deep .c-input:disabled{cursor:text}.textarea{background:var(--cui-base-0)}.textarea:disabled{cursor:initial;opacity:1;background:var(--cui-base-0);border-left-width:0;border-radius:0 8px 8px 0}.button:disabled{cursor:not-allowed;opacity:.5}.error-hint{margin-left:82px}.cui-drag-drop-placeholder{height:44px;border:1px dashed var(--cui-base-200);border-radius:8px;background:var(--cui-base-0)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "directive", type: CuiLetDirective, selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "component", type: CuiTextareaComponent, selector: "textarea[cuiTextarea]", inputs: ["rows", "noBordersAndPaddings"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: CuiDragPointerDirective, selector: "[cuiDragPointer]" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9234
10044
  }
9235
10045
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCheckListBlockListItemEvaluationCriteriaComponent, decorators: [{
9236
10046
  type: Component,
@@ -9490,7 +10300,7 @@ class CuiCheckListBlockListItemEvaluationComponent {
9490
10300
  array.splice(toIndex, 0, item);
9491
10301
  }
9492
10302
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCheckListBlockListItemEvaluationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9493
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCheckListBlockListItemEvaluationComponent, isStandalone: true, selector: "cui-checklist-block-list-item-evaluation", inputs: { checkListItem: { classPropertyName: "checkListItem", publicName: "checkListItem", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div class=\"action\">\n <div class=\"action__inputs-container\">\n <div\n class=\"action__input\"\n [formGroup]=\"photoFormGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('PHOTO') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n <div\n class=\"action__input\"\n [formGroup]=\"commentFormGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('COMMENT') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n </div>\n <div class=\"action__criteria-title-container\">\n <label\n cuiLabel\n [isRequired]=\"true\"\n for=\"evaluationCriteria\"\n >\n {{ t('EVALUATION_CRITERIA') }}\n </label>\n <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\n </div>\n <ul\n cuiDragList\n class=\"list\"\n >\n @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\n <li\n cuiChecklistBlockListItemEvaluationCriteria\n [index]=\"index + 1\"\n cuiDragDrop\n [disabled]=\"isAddButtonDisabled()\"\n (elementDragged)=\"onDrop($event)\"\n [criteriaGroup]=\"control\"\n [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\n [loadingIds]=\"loadingIds()\"\n (saveClicked)=\"onSaveEvaluationCriteria($event)\"\n (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\n (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\n ></li>\n } @empty {\n <li\n cuiEmptyState\n [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\n ></li>\n }\n </ul>\n <div class=\"action__footer\">\n <button\n cuiButton\n size=\"xxs\"\n appearance=\"flat\"\n icon=\"cuiIconPlus\"\n type=\"button\"\n [disabled]=\"isAddButtonDisabled()\"\n (click)=\"onAddEvaluationCriteriaItem()\"\n >\n {{ t('NEW_OPTION') }}\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;border-radius:inherit}.action{padding:15px;display:flex;flex-direction:column;border-radius:0 0 8px 8px;gap:16px;background:var(--cui-base-10)}.action__criteria-title-container{display:flex;flex-direction:column;gap:4px}.action__criteria-subtitle{font-weight:400;font-size:14px;line-height:20px;color:var(--cui-base-500)}.action__inputs-container{display:flex;flex-direction:column;gap:8px;background:var(--cui-base-0)}.action__input{padding-right:11px;padding-left:11px;display:flex;height:48px;flex-direction:row;justify-content:space-between;border:1px solid var(--cui-base-200);border-radius:8px}.action__criteria{display:flex;flex-direction:row;align-items:center;gap:12px}.action__criteria-index{padding:8px;font-weight:500;font-size:14px;line-height:20px;display:flex;width:44px;flex-direction:row;justify-content:center;align-items:center;border-radius:8px;background-color:var(--cui-base-0)}.action__criteria-input{flex:1;background:var(--cui-base-0)}.list{display:flex;flex-direction:column;gap:8px}\n"], dependencies: [{ kind: "component", type: CuiCheckListBlockListItemEvaluationCriteriaComponent, selector: "li[cuiChecklistBlockListItemEvaluationCriteria]", inputs: ["loadingIds", "index", "criteriaGroup", "evaluationCriteriaFormArray"], outputs: ["saveClicked", "deleteClicked", "cancelClicked"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiCheckboxModule }, { kind: "component", type: CuiCheckboxComponent, selector: "input[type=\"checkbox\"][cuiCheckbox]" }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "ngmodule", type: CuiTextFieldControllerModule }, { kind: "ngmodule", type: CuiToggleModule }, { kind: "component", type: CuiToggleComponent, selector: "input[type=\"checkbox\"][cuiToggle]" }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: CuiDragDropDirective, selector: "[cuiDragDrop]", inputs: ["disabled"], outputs: ["elementDragged"] }, { kind: "directive", type: CuiDragListDirective, selector: "[cuiDragList]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10303
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCheckListBlockListItemEvaluationComponent, isStandalone: true, selector: "cui-checklist-block-list-item-evaluation", inputs: { checkListItem: { classPropertyName: "checkListItem", publicName: "checkListItem", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <div class=\"action\">\n <div class=\"action__inputs-container\">\n <div\n class=\"action__input\"\n [formGroup]=\"photoFormGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('PHOTO') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n <div\n class=\"action__input\"\n [formGroup]=\"commentFormGroup\"\n >\n <label cuiLabel>\n <input\n cuiCheckbox\n type=\"checkbox\"\n formControlName=\"isEnable\"\n />\n {{ t('COMMENT') }}\n </label>\n <label cuiLabel>\n <input\n cuiToggle\n type=\"checkbox\"\n formControlName=\"isRequired\"\n />\n {{ t('REQUIRED') }}\n </label>\n </div>\n </div>\n <div class=\"action__criteria-title-container\">\n <label\n cuiLabel\n [isRequired]=\"true\"\n for=\"evaluationCriteria\"\n >\n {{ t('EVALUATION_CRITERIA') }}\n </label>\n <p class=\"action__criteria-subtitle\">{{ t('EACH_EVALUATION_CRITERION_SHOULD_BE') }}</p>\n </div>\n <ul\n cuiDragList\n class=\"list\"\n >\n @for (control of evaluationCriteriaFormArray.controls; track control.controls['id']; let index = $index) {\n <li\n cuiChecklistBlockListItemEvaluationCriteria\n [index]=\"index + 1\"\n cuiDragDrop\n [disabled]=\"isAddButtonDisabled()\"\n (elementDragged)=\"onDrop($event)\"\n [criteriaGroup]=\"control\"\n [evaluationCriteriaFormArray]=\"evaluationCriteriaFormArray\"\n [loadingIds]=\"loadingIds()\"\n (saveClicked)=\"onSaveEvaluationCriteria($event)\"\n (cancelClicked)=\"onCancelNewEvaluationCriteria()\"\n (deleteClicked)=\"openModalDeleteEvaluationCriteria($event)\"\n ></li>\n } @empty {\n <li\n cuiEmptyState\n [subtitle]=\"t('NO_EVALUATION_CRITERIA_TO_VIEW')\"\n ></li>\n }\n </ul>\n <div class=\"action__footer\">\n <button\n cuiButton\n size=\"xxs\"\n appearance=\"flat\"\n icon=\"cuiIconPlus\"\n type=\"button\"\n [disabled]=\"isAddButtonDisabled()\"\n (click)=\"onAddEvaluationCriteriaItem()\"\n >\n {{ t('NEW_OPTION') }}\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;border-radius:inherit}.action{padding:15px;display:flex;flex-direction:column;border-radius:0 0 8px 8px;gap:16px;background:var(--cui-base-10)}.action__criteria-title-container{display:flex;flex-direction:column;gap:4px}.action__criteria-subtitle{font-weight:400;font-size:14px;line-height:20px;color:var(--cui-base-500)}.action__inputs-container{display:flex;flex-direction:column;gap:8px;background:var(--cui-base-0)}.action__input{padding-right:11px;padding-left:11px;display:flex;height:48px;flex-direction:row;justify-content:space-between;border:1px solid var(--cui-base-200);border-radius:8px}.action__criteria{display:flex;flex-direction:row;align-items:center;gap:12px}.action__criteria-index{padding:8px;font-weight:500;font-size:14px;line-height:20px;display:flex;width:44px;flex-direction:row;justify-content:center;align-items:center;border-radius:8px;background-color:var(--cui-base-0)}.action__criteria-input{flex:1;background:var(--cui-base-0)}.list{display:flex;flex-direction:column;gap:8px}\n"], dependencies: [{ kind: "component", type: CuiCheckListBlockListItemEvaluationCriteriaComponent, selector: "li[cuiChecklistBlockListItemEvaluationCriteria]", inputs: ["loadingIds", "index", "criteriaGroup", "evaluationCriteriaFormArray"], outputs: ["saveClicked", "deleteClicked", "cancelClicked"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiCheckboxModule }, { kind: "component", type: CuiCheckboxComponent, selector: "input[type=\"checkbox\"][cuiCheckbox]" }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "ngmodule", type: CuiTextFieldControllerModule }, { kind: "ngmodule", type: CuiToggleModule }, { kind: "component", type: CuiToggleComponent, selector: "input[type=\"checkbox\"][cuiToggle]" }, { kind: "component", type: CuiEmptyStateComponent, selector: "cui-empty-state, [cuiEmptyState]", inputs: ["title", "subtitle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: CuiDragDropDirective, selector: "[cuiDragDrop]", inputs: ["disabled"], outputs: ["elementDragged"] }, { kind: "directive", type: CuiDragListDirective, selector: "[cuiDragList]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9494
10304
  }
9495
10305
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCheckListBlockListItemEvaluationComponent, decorators: [{
9496
10306
  type: Component,
@@ -9927,7 +10737,7 @@ class CuiCriterionInfoFormComponent {
9927
10737
  return !this.isDescriptionEmpty() && !this.form.invalid;
9928
10738
  }
9929
10739
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCriterionInfoFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9930
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCriterionInfoFormComponent, isStandalone: true, selector: "cui-criterion-info-form", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formChanged: "formChanged", isFormValidChanged: "isFormValidChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"descriptionId\"\n >\n {{ t('SHORT_DESCRIPTION') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"descriptionId\"\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n [cuiTextFieldIsError]=\"isDescriptionError\"\n [formControl]=\"form.controls.description\"\n />\n\n @if (isDescriptionError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.description\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n\n <cui-utility-thumbnail\n [context]=\"config().requestOptions\"\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiEditorBlockComponent, selector: "cui-editor-block", inputs: ["title", "editorId", "config", "required"], outputs: ["editorEmpty"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "component", type: CuiUtilityThumbnailComponent, selector: "cui-utility-thumbnail", inputs: ["context", "thumbnail", "framerId"], outputs: ["thumbnailChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10740
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCriterionInfoFormComponent, isStandalone: true, selector: "cui-criterion-info-form", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formChanged: "formChanged", isFormValidChanged: "isFormValidChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"descriptionId\"\n >\n {{ t('SHORT_DESCRIPTION') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"descriptionId\"\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n [cuiTextFieldIsError]=\"isDescriptionError\"\n [formControl]=\"form.controls.description\"\n />\n\n @if (isDescriptionError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.description\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n\n <cui-utility-thumbnail\n [context]=\"config().requestOptions\"\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiEditorBlockComponent, selector: "cui-editor-block", inputs: ["title", "editorId", "config", "required"], outputs: ["editorEmpty"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "component", type: CuiUtilityThumbnailComponent, selector: "cui-utility-thumbnail", inputs: ["context", "thumbnail", "framerId"], outputs: ["thumbnailChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9931
10741
  }
9932
10742
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCriterionInfoFormComponent, decorators: [{
9933
10743
  type: Component,
@@ -10150,7 +10960,7 @@ class CuiInstructionInfoFormComponent {
10150
10960
  return !this.isDescriptionEmpty() && !this.form.invalid;
10151
10961
  }
10152
10962
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInstructionInfoFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiInstructionInfoFormComponent, isStandalone: true, selector: "cui-instruction-info-form", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formChanged: "formChanged", isFormValidChanged: "isFormValidChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"descriptionId\"\n >\n {{ t('SHORT_DESCRIPTION') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"descriptionId\"\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n [cuiTextFieldIsError]=\"isDescriptionError\"\n [formControl]=\"form.controls.description\"\n />\n\n @if (isDescriptionError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.description\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-utility-thumbnail\n [context]=\"config().requestOptions\"\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiEditorBlockComponent, selector: "cui-editor-block", inputs: ["title", "editorId", "config", "required"], outputs: ["editorEmpty"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "component", type: CuiUtilityThumbnailComponent, selector: "cui-utility-thumbnail", inputs: ["context", "thumbnail", "framerId"], outputs: ["thumbnailChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10963
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiInstructionInfoFormComponent, isStandalone: true, selector: "cui-instruction-info-form", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, framerId: { classPropertyName: "framerId", publicName: "framerId", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { formChanged: "formChanged", isFormValidChanged: "isFormValidChanged" }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n <section class=\"content\">\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"titleId\"\n >\n {{ t('TITLE') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"titleId\"\n [cuiTextFieldPlaceholder]=\"t('ADD_A_TITLE')\"\n [cuiTextFieldIsError]=\"isTitleError\"\n [formControl]=\"form.controls.title\"\n />\n\n @if (isTitleError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.title\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-form-field>\n <label\n cuiLabel\n [isRequired]=\"true\"\n [for]=\"descriptionId\"\n >\n {{ t('SHORT_DESCRIPTION') }}\n </label>\n\n <cui-input-text\n [cuiTextFieldId]=\"descriptionId\"\n cuiTextFieldPlaceholder=\"{{ t('SHORT_DESCRIPTION') }}...\"\n [cuiTextFieldIsError]=\"isDescriptionError\"\n [formControl]=\"form.controls.description\"\n />\n\n @if (isDescriptionError) {\n <cui-general-control-error-hint\n [control]=\"form.controls.description\"\n [isVisible]=\"true\"\n />\n }\n </cui-form-field>\n\n <cui-utility-thumbnail\n [context]=\"config().requestOptions\"\n [framerId]=\"framerId()\"\n [(thumbnail)]=\"thumbnail\"\n />\n\n @if (editorId(); as editorId) {\n <cui-editor-block\n [title]=\"form.controls.title.value || title()\"\n [config]=\"config()\"\n [editorId]=\"editorId\"\n [required]=\"true\"\n class=\"editor\"\n (editorEmpty)=\"onEditorEmpty($event)\"\n />\n }\n </section>\n</ng-container>\n", styles: ["::ng-deep cui-dialog:has(.instruction-description-modal){inset:0;margin:auto;transform:none!important}:host{--editor-height: 650px;display:block}:host .editor{--max-editor-height: var(--editor-height)}.content{display:flex;flex-direction:column;gap:16px;padding:16px 24px}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiEditorBlockComponent, selector: "cui-editor-block", inputs: ["title", "editorId", "config", "required"], outputs: ["editorEmpty"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }, { kind: "ngmodule", type: CuiHintModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "component", type: CuiUtilityThumbnailComponent, selector: "cui-utility-thumbnail", inputs: ["context", "thumbnail", "framerId"], outputs: ["thumbnailChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10154
10964
  }
10155
10965
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiInstructionInfoFormComponent, decorators: [{
10156
10966
  type: Component,
@@ -10771,7 +11581,7 @@ class CuiSelectModalSearchComponent {
10771
11581
  .subscribe((value) => this.searchStringChanged.emit(value));
10772
11582
  }
10773
11583
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiSelectModalSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10774
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CuiSelectModalSearchComponent, isStandalone: true, selector: "cui-select-modal-search", inputs: { searchControl: { classPropertyName: "searchControl", publicName: "searchControl", isSignal: true, isRequired: false, transformFunction: null }, controlDelay: { classPropertyName: "controlDelay", publicName: "controlDelay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchStringChanged: "searchStringChanged" }, ngImport: i0, template: "<cui-input-text\n cuiTextFieldPlaceholder=\"Search...\"\n cuiTextFieldIconLeft=\"cuiIconSearch\"\n [formControl]=\"searchControl()\"\n class=\"search\"\n/>\n<button\n class=\"filters\"\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconFiltersLines\"\n></button>\n", styles: [":host{padding-right:15px;display:flex;align-items:center;gap:4px}.search{width:100%}.filters{padding:4px;width:auto;height:auto}\n"], dependencies: [{ kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIconLeftDirective, selector: "[cuiTextFieldIconLeft]", inputs: ["cuiTextFieldIconLeft"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11584
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CuiSelectModalSearchComponent, isStandalone: true, selector: "cui-select-modal-search", inputs: { searchControl: { classPropertyName: "searchControl", publicName: "searchControl", isSignal: true, isRequired: false, transformFunction: null }, controlDelay: { classPropertyName: "controlDelay", publicName: "controlDelay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchStringChanged: "searchStringChanged" }, ngImport: i0, template: "<cui-input-text\n cuiTextFieldPlaceholder=\"Search...\"\n cuiTextFieldIconLeft=\"cuiIconSearch\"\n [formControl]=\"searchControl()\"\n class=\"search\"\n/>\n<button\n class=\"filters\"\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconFiltersLines\"\n></button>\n", styles: [":host{padding-right:15px;display:flex;align-items:center;gap:4px}.search{width:100%}.filters{padding:4px;width:auto;height:auto}\n"], dependencies: [{ kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: CuiTextFieldIconLeftDirective, selector: "[cuiTextFieldIconLeft]", inputs: ["cuiTextFieldIconLeft"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10775
11585
  }
10776
11586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiSelectModalSearchComponent, decorators: [{
10777
11587
  type: Component,
@@ -11488,7 +12298,7 @@ class ConsumableFormItemComponent {
11488
12298
  });
11489
12299
  }
11490
12300
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConsumableFormItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11491
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConsumableFormItemComponent, isStandalone: true, selector: "cc-consumable-form-item", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, consumptionOptions: { classPropertyName: "consumptionOptions", publicName: "consumptionOptions", isSignal: true, isRequired: true, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { consumableChanged: "consumableChanged" }, ngImport: i0, template: "@let formData = form();\n\n@if (readonly()) {\n <cui-consumable-form-item-readonly\n [title]=\"title()\"\n [consumable]=\"consumable()\"\n />\n} @else {\n <form\n [formGroup]=\"formData\"\n *transloco=\"let t\"\n class=\"form\"\n >\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"wrapper-input\">\n <div class=\"form__input\">\n @let quantity = formData.controls.quantity;\n\n <label [for]=\"consumptionId\">{{ t('AMOUNT') }}</label>\n <div class=\"field\">\n <cui-input-number\n [cuiTextFieldId]=\"quantityId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"quantity\"\n [cuiTextFieldIsError]=\"!!quantity.errors && quantity.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"piecesOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"quantity\"\n [isVisible]=\"!!quantity.errors && quantity.dirty\"\n />\n </div>\n\n <div class=\"form__input\">\n @let measureFormGroup = formData.controls.measure;\n @let consumption = measureFormGroup.controls.value;\n\n <label [for]=\"consumptionId\">{{ t('MEASURE') }}</label>\n <div\n class=\"field\"\n [formGroup]=\"measureFormGroup\"\n >\n <cui-input-number\n [cuiTextFieldId]=\"consumptionId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"value\"\n [precision]=\"3\"\n [cuiTextFieldIsError]=\"!!consumption.errors && consumption.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"consumptionOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"consumption\"\n [isVisible]=\"!!consumption.errors && consumption.dirty\"\n />\n </div>\n </div>\n </form>\n}\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px;align-self:center}.input{padding-right:84px;width:240px}.options{position:absolute;inset:1px 1px 1px auto;min-width:90px}.options ::ng-deep .c-button{border:0;height:100%}.options--error{inset:1px 20px 1px auto}.wrapper-input{display:flex;flex-direction:row;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}.form{display:flex;flex-direction:row;gap:8px;flex-wrap:wrap}.form__input{display:flex;flex-direction:column;gap:4px}.form__input cui-general-control-error-hint{display:block;min-height:20px}.field{display:flex;flex-direction:row;gap:4px;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "ngmodule", type: CuiSelectModule }, { kind: "component", type: CuiSelectComponent, selector: "cui-select[options]", inputs: ["options", "defaultOptionText"] }, { kind: "component", type: ConsumableFormItemReadonlyComponent, selector: "cui-consumable-form-item-readonly", inputs: ["title", "consumable"] }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12301
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConsumableFormItemComponent, isStandalone: true, selector: "cc-consumable-form-item", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, consumptionOptions: { classPropertyName: "consumptionOptions", publicName: "consumptionOptions", isSignal: true, isRequired: true, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { consumableChanged: "consumableChanged" }, ngImport: i0, template: "@let formData = form();\n\n@if (readonly()) {\n <cui-consumable-form-item-readonly\n [title]=\"title()\"\n [consumable]=\"consumable()\"\n />\n} @else {\n <form\n [formGroup]=\"formData\"\n *transloco=\"let t\"\n class=\"form\"\n >\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"wrapper-input\">\n <div class=\"form__input\">\n @let quantity = formData.controls.quantity;\n\n <label [for]=\"consumptionId\">{{ t('AMOUNT') }}</label>\n <div class=\"field\">\n <cui-input-number\n [cuiTextFieldId]=\"quantityId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"quantity\"\n [cuiTextFieldIsError]=\"!!quantity.errors && quantity.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"piecesOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"quantity\"\n [isVisible]=\"!!quantity.errors && quantity.dirty\"\n />\n </div>\n\n <div class=\"form__input\">\n @let measureFormGroup = formData.controls.measure;\n @let consumption = measureFormGroup.controls.value;\n\n <label [for]=\"consumptionId\">{{ t('MEASURE') }}</label>\n <div\n class=\"field\"\n [formGroup]=\"measureFormGroup\"\n >\n <cui-input-number\n [cuiTextFieldId]=\"consumptionId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"value\"\n [precision]=\"3\"\n [cuiTextFieldIsError]=\"!!consumption.errors && consumption.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"consumptionOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"consumption\"\n [isVisible]=\"!!consumption.errors && consumption.dirty\"\n />\n </div>\n </div>\n </form>\n}\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px;align-self:center}.input{padding-right:84px;width:240px}.options{position:absolute;inset:1px 1px 1px auto;min-width:90px}.options ::ng-deep .c-button{border:0;height:100%}.options--error{inset:1px 20px 1px auto}.wrapper-input{display:flex;flex-direction:row;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}.form{display:flex;flex-direction:row;gap:8px;flex-wrap:wrap}.form__input{display:flex;flex-direction:column;gap:4px}.form__input cui-general-control-error-hint{display:block;min-height:20px}.field{display:flex;flex-direction:row;gap:4px;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "ngmodule", type: CuiSelectModule }, { kind: "component", type: CuiSelectComponent, selector: "cui-select[options]", inputs: ["options", "defaultOptionText"] }, { kind: "component", type: ConsumableFormItemReadonlyComponent, selector: "cui-consumable-form-item-readonly", inputs: ["title", "consumable"] }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11492
12302
  }
11493
12303
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConsumableFormItemComponent, decorators: [{
11494
12304
  type: Component,
@@ -11578,7 +12388,7 @@ class ToolFormComponent {
11578
12388
  });
11579
12389
  }
11580
12390
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11581
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToolFormComponent, isStandalone: true, selector: "cui-tool-form", inputs: { utilityId: { classPropertyName: "utilityId", publicName: "utilityId", isSignal: true, isRequired: true, transformFunction: null }, tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, resourceType: { classPropertyName: "resourceType", publicName: "resourceType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toolChanged: "toolChanged", toolDeleted: "toolDeleted" }, host: { properties: { "class._disabled": "isLoading() || tool().isDelete" } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @let controlsData = controls();\n\n @if (readonly()) {\n <cc-tool-form-readonly [tool]=\"tool()\" />\n } @else if (controlsData) {\n <td class=\"cc-table__td info custom\">\n {{ tool().name }}\n\n @if (tool().isDelete) {\n <cui-badge\n class=\"badge\"\n [size]=\"'sm'\"\n color=\"red\"\n >\n {{ t('DELETED') }}\n </cui-badge>\n }\n </td>\n <td class=\"cc-table__td custom\">\n <cui-input-number\n type=\"text\"\n [formControl]=\"controlsData.quantity\"\n [cuiTextFieldIsError]=\"!!controlsData.quantity.errors && controlsData.quantity.dirty\"\n />\n <cui-general-control-error-hint\n [control]=\"controlsData.quantity\"\n [isVisible]=\"!!controlsData.quantity.errors && controlsData.quantity.dirty\"\n />\n </td>\n <td class=\"cc-table__td custom\">\n <cui-select\n [formControl]=\"controlsData.unit\"\n [options]=\"toolboxOptions()\"\n />\n </td>\n <td class=\"cc-table__td button custom\">\n <button\n type=\"button\"\n cuiButton\n icon=\"cuiIconTrash\"\n size=\"xxs\"\n appearance=\"ghost\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDeleteToolbox()\"\n ></button>\n </td>\n }\n</ng-container>\n", styles: [":host{display:contents}:host._disabled .custom{pointer-events:none;opacity:.7}:host._disabled .button{opacity:1;pointer-events:all}.info{display:flex;flex-direction:row;gap:0}.badge{margin-left:auto}.custom{padding-right:4px;padding-left:4px}.readonly{min-height:36px}\n"], dependencies: [{ kind: "component", type: ToolFormReadonlyComponent, selector: "cc-tool-form-readonly", inputs: ["tool"] }, { kind: "ngmodule", type: CuiSelectModule }, { kind: "component", type: CuiSelectComponent, selector: "cui-select[options]", inputs: ["options", "defaultOptionText"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CuiBadgeModule }, { kind: "component", type: CuiBadgeComponent, selector: "cui-badge", inputs: ["color", "size", "variant"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12391
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ToolFormComponent, isStandalone: true, selector: "cui-tool-form", inputs: { utilityId: { classPropertyName: "utilityId", publicName: "utilityId", isSignal: true, isRequired: true, transformFunction: null }, tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, resourceType: { classPropertyName: "resourceType", publicName: "resourceType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toolChanged: "toolChanged", toolDeleted: "toolDeleted" }, host: { properties: { "class._disabled": "isLoading() || tool().isDelete" } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\n @let controlsData = controls();\n\n @if (readonly()) {\n <cc-tool-form-readonly [tool]=\"tool()\" />\n } @else if (controlsData) {\n <td class=\"cc-table__td info custom\">\n {{ tool().name }}\n\n @if (tool().isDelete) {\n <cui-badge\n class=\"badge\"\n [size]=\"'sm'\"\n color=\"red\"\n >\n {{ t('DELETED') }}\n </cui-badge>\n }\n </td>\n <td class=\"cc-table__td custom\">\n <cui-input-number\n type=\"text\"\n [formControl]=\"controlsData.quantity\"\n [cuiTextFieldIsError]=\"!!controlsData.quantity.errors && controlsData.quantity.dirty\"\n />\n <cui-general-control-error-hint\n [control]=\"controlsData.quantity\"\n [isVisible]=\"!!controlsData.quantity.errors && controlsData.quantity.dirty\"\n />\n </td>\n <td class=\"cc-table__td custom\">\n <cui-select\n [formControl]=\"controlsData.unit\"\n [options]=\"toolboxOptions()\"\n />\n </td>\n <td class=\"cc-table__td button custom\">\n <button\n type=\"button\"\n cuiButton\n icon=\"cuiIconTrash\"\n size=\"xxs\"\n appearance=\"ghost\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDeleteToolbox()\"\n ></button>\n </td>\n }\n</ng-container>\n", styles: [":host{display:contents}:host._disabled .custom{pointer-events:none;opacity:.7}:host._disabled .button{opacity:1;pointer-events:all}.info{display:flex;flex-direction:row;gap:0}.badge{margin-left:auto}.custom{padding-right:4px;padding-left:4px}.readonly{min-height:36px}\n"], dependencies: [{ kind: "component", type: ToolFormReadonlyComponent, selector: "cc-tool-form-readonly", inputs: ["tool"] }, { kind: "ngmodule", type: CuiSelectModule }, { kind: "component", type: CuiSelectComponent, selector: "cui-select[options]", inputs: ["options", "defaultOptionText"] }, { kind: "directive", type: CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CuiBadgeModule }, { kind: "component", type: CuiBadgeComponent, selector: "cui-badge", inputs: ["color", "size", "variant"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11582
12392
  }
11583
12393
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToolFormComponent, decorators: [{
11584
12394
  type: Component,
@@ -12687,5 +13497,5 @@ const CuiTranslations = {
12687
13497
  * Generated bundle index. Do not edit.
12688
13498
  */
12689
13499
 
12690
- export { AlertHintComponent, AngularOutsideLoaderService, AssigneeRoleItemComponent, AssigneeRolesTabsComponent, ButtonChangeThemeComponent, CUI_ACTIVITY_SERVICE_TOKEN, CUI_ALERTS, CUI_ALERT_CONTEXT, CUI_ALERT_DEFAULT_OPTIONS, CUI_ALERT_OPTIONS, CUI_ANIMATIONS_DEFAULT_DURATION, CUI_BADGE_DEFAULT_OPTIONS, CUI_BADGE_OPTIONS, CUI_BANNER_DEFAULT_OPTIONS, CUI_BANNER_OPTIONS, CUI_BUTTON_DEFAULT_OPTIONS, CUI_BUTTON_OPTIONS, CUI_DEFAULT_THEME, CUI_DIALOGS, CUI_DIALOG_CONTEXT, CUI_DIALOG_DEFAULT_OPTIONS, CUI_DIALOG_OPTIONS, CUI_INPUT_TIME_DEFAULT_OPTIONS, CUI_INPUT_TIME_OPTIONS, CUI_NOTIFICATION_DEFAULT_OPTIONS, CUI_NOTIFICATION_ICONS, CUI_NOTIFICATION_ICON_OPTIONS, CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE, CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE, CUI_NOTIFICATION_OPTIONS, CUI_RESOURCE_STATE_SERVICE_TOKEN, CUI_ROOT_SELECTOR, CUI_STORAGE_LIST_SERVICE_TOKEN, CUI_SUBJECT_MODAL_SERVICE_TOKEN, CUI_TABS_SERVICE_TOKEN, CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FIELD_ICON_LEFT, CUI_TEXT_FIELD_ID, CUI_TEXT_FIELD_IS_ERROR, CUI_TEXT_FIELD_PLACEHOLDER, CUI_TEXT_FIELD_SIZE, CUI_TEXT_FILED_CONTROLLER_PROVIDER, CUI_THEME, CUI_THEME_STORAGE_DEFAULT_KEY, CUI_THEME_STORAGE_KEY, CUI_TOOLTIP_COMPONENT, CUI_TOOLTIP_DEFAULT_OPTIONS, CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS, CUI_TOOLTIP_PROVIDERS, CUI_USED_ELEMENTS_SERVICE_TOKEN, CUI_UTILITY_SERVICE_TOKEN, ContentHeaderComponent, CuiAbstractTabsComponent, CuiAccordionComponent, CuiAccordionDirective, CuiAccordionItemComponent, CuiAccordionModule, CuiActivityBaseService, CuiActivityImplService, CuiAlertComponent, CuiAlertModule, CuiAlertService, CuiAlertsComponent, CuiAttachesTool, CuiAuthBase, CuiAuthService, CuiBadgeComponent, CuiBadgeModule, CuiBannerComponent, CuiBannerModule, CuiBreadcrumbComponent, CuiBreadcrumbsComponent, CuiBreadcrumbsModule, CuiButtonComponent, CuiButtonGroupComponent, CuiButtonGroupModule, CuiButtonModule, CuiCardWrapperComponent, CuiCategoriesComponent, CuiCheckboxComponent, CuiCheckboxModule, CuiChecklistBlockComponent, CuiCircleLoaderComponent, CuiContentWrapperComponent, CuiContextMenuComponent, CuiContextMenuModule, CuiCriterionInfoComponent, CuiCriterionInfoFormComponent, CuiCriterionModalCreateComponent, CuiCriterionReadonlyInfoComponent, CuiDeleteModalComponent, CuiDialogActionsComponent, CuiDialogComponent, CuiDialogHeaderComponent, CuiDialogModule, CuiDialogService, CuiDialogsComponent, CuiDropdownDirective, CuiDropdownWrapperComponent, CuiEditorBlockComponent, CuiEditorComponent, CuiEditorModalComponent, CuiEditorReadonlyComponent, CuiEditorTranslations, CuiEmptyStateComponent, CuiFileIconComponent, CuiFileUploader, CuiFileUploaderStatus, CuiFormFieldComponent, CuiFormFieldModule, CuiFramerPreviewComponent, CuiGeneralControlErrorHintComponent, CuiGhostInputComponent, CuiGlobalErrorHandler, CuiHeaderTool, CuiHintComponent, CuiHintModule, CuiHybridStorageService, CuiIconButtonComponent, CuiIconButtonModule, CuiImageTool, CuiInputModule, CuiInputNumberComponent, CuiInputNumberModule, CuiInputPasswordComponent, CuiInputPasswordModule, CuiInputTextComponent, CuiInputTimeComponent, CuiInputTimeModule, CuiInstructionInfoComponent, CuiInstructionInfoFormComponent, CuiInstructionModalCreateComponent, CuiInstructionReadonlyInfoComponent, CuiLabelComponent, CuiLabelModule, CuiLayoutComponent, CuiLetterBoxComponent, CuiLibTranslations, CuiLinearLoaderComponent, CuiLinkMarker, CuiListTool, CuiLoaderComponent, CuiLoaderService, CuiLoadingState, CuiNotificationComponent, CuiNotificationModule, CuiPositionService, CuiPulseLoaderComponent, CuiRadioComponent, CuiRadioModule, CuiReadonlyCriterionModalComponent, CuiReadonlyInstructionModalComponent, CuiReadonlyUtilityModalComponent, CuiRenderDynamicComponentsComponent, CuiRenderDynamicComponentsService, CuiRoleMarker, CuiRootComponent, CuiRootModule, CuiSelectComponent, CuiSelectModalComponent, CuiSelectModalFolderComponent, CuiSelectModalSearchComponent, CuiSelectModalService, CuiSelectModule, CuiSelectedCategoryService, CuiSidebarContainerComponent, CuiSidebarHeaderComponent, CuiSidebarNavigationComponent, CuiSidebarNavigationContainerComponent, CuiSidebarNavigationItemComponent, CuiSidebarService, CuiSkeleton, CuiStatedLoaderComponent, CuiStorageListComponent, CuiSvgComponent, CuiSvgModule, CuiTabDirective, CuiTabsComponent, CuiTabsServiceImpl, CuiTextFieldController, CuiTextFieldControllerModule, CuiTextFieldIconLeftDirective, CuiTextFieldIdDirective, CuiTextFieldIsErrorDirective, CuiTextFieldPlaceholderDirective, CuiTextFieldSizeDirective, CuiTextareaComponent, CuiTextareaModule, CuiThemeService, CuiTimePipe, CuiToggleComponent, CuiToggleModule, CuiToolMarker, CuiTooltip, CuiTooltipComponent, CuiTooltipDescribe, CuiTooltipDirective, CuiTooltipDriver, CuiTooltipHost, CuiTooltipHover, CuiTooltipManual, CuiTooltipOptionsDirective, CuiTooltipOverflow, CuiTooltipPointer, CuiTooltipPosition, CuiTooltipService, CuiTooltipUnstyled, CuiTooltipUnstyledComponent, CuiTooltips, CuiTranslations, CuiUserActionContextMenuComponent, CuiUtilityModalComponent, CuiUtilityModalCreateComponent, CuiUtilityReadonlyThumbnailComponent, CuiUtilityThumbnailComponent, CuiVideoTool, CuiVisualViewportService, InsertedComponent, ModalDividedSectionComponent, ModalHeaderComponent, ModalHeaderInsertedButtonsComponent, ModalInfoTabComponent, ModalOperationPartComponent, ModalResourcesTabComponent, OptionsButtonComponent, RenderDynamicModalComponent, ResourceStateBaseService, ResourcesBlockComponent, ResourcesBlockPartComponent, ResourcesBlockTabsComponent$1 as ResourcesBlockTabsComponent, ResourcesOptionsComponent, SubjectModalBaseService, UTILITY_MODAL_SERVICE_TOKEN, UsedElementsBaseService, UtilityBaseService, UtilityInfoReadonlyComponent, createEditorTools, cuiAuthInterceptor, cuiCheckFixedPosition, cuiCreateDefaultValidators, cuiErrorHandlerInterceptor, cuiGetDuration, cuiIsObscured, cuiLoaderInterceptor, cuiOverrideOptions, cuiProvideEditor, cuiRemoveSpaces, cuiReplace, cuiToAnimationOptions, cuiTooltipOptionsProvider, cuiXNdjsonInterceptor, handleError, openFileInBrowser, presetConfigToken, provideCuiAuth, provideCuiErrorHandler, provideCuiTabs, setLoading, sseStreamReaderInterceptor };
13500
+ export { AlertHintComponent, AngularOutsideLoaderService, AssigneeRoleItemComponent, AssigneeRolesTabsComponent, ButtonChangeThemeComponent, CUI_ACTIVITY_SERVICE_TOKEN, CUI_ALERTS, CUI_ALERT_CONTEXT, CUI_ALERT_DEFAULT_OPTIONS, CUI_ALERT_OPTIONS, CUI_ANIMATIONS_DEFAULT_DURATION, CUI_BADGE_DEFAULT_OPTIONS, CUI_BADGE_OPTIONS, CUI_BANNER_DEFAULT_OPTIONS, CUI_BANNER_OPTIONS, CUI_BUTTON_DEFAULT_OPTIONS, CUI_BUTTON_OPTIONS, CUI_DEFAULT_THEME, CUI_DIALOGS, CUI_DIALOG_CONTEXT, CUI_DIALOG_DEFAULT_OPTIONS, CUI_DIALOG_OPTIONS, CUI_INPUT_TIME_DEFAULT_OPTIONS, CUI_INPUT_TIME_OPTIONS, CUI_NOTIFICATION_DEFAULT_OPTIONS, CUI_NOTIFICATION_ICONS, CUI_NOTIFICATION_ICON_OPTIONS, CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE, CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE, CUI_NOTIFICATION_OPTIONS, CUI_RESOURCE_STATE_SERVICE_TOKEN, CUI_ROOT_SELECTOR, CUI_STORAGE_LIST_SERVICE_TOKEN, CUI_SUBJECT_MODAL_SERVICE_TOKEN, CUI_TABS_SERVICE_TOKEN, CUI_TEXT_FIELD_CONTROLLER, CUI_TEXT_FIELD_ICON_LEFT, CUI_TEXT_FIELD_ID, CUI_TEXT_FIELD_IS_ERROR, CUI_TEXT_FIELD_PLACEHOLDER, CUI_TEXT_FIELD_SIZE, CUI_TEXT_FILED_CONTROLLER_PROVIDER, CUI_THEME, CUI_THEME_STORAGE_DEFAULT_KEY, CUI_THEME_STORAGE_KEY, CUI_TOOLTIP_COMPONENT, CUI_TOOLTIP_DEFAULT_OPTIONS, CUI_TOOLTIP_DIRECTIONS, CUI_TOOLTIP_OPTIONS, CUI_TOOLTIP_PROVIDERS, CUI_USED_ELEMENTS_SERVICE_TOKEN, CUI_UTILITY_SERVICE_TOKEN, ContentHeaderComponent, CuiAbstractTabsComponent, CuiAccordionComponent, CuiAccordionDirective, CuiAccordionItemComponent, CuiAccordionModule, CuiActivityBaseService, CuiActivityImplService, CuiAlertComponent, CuiAlertModule, CuiAlertService, CuiAlertsComponent, CuiAttachesTool, CuiAuthBase, CuiAuthService, CuiBadgeComponent, CuiBadgeModule, CuiBannerComponent, CuiBannerModule, CuiBreadcrumbComponent, CuiBreadcrumbsComponent, CuiBreadcrumbsModule, CuiButtonComponent, CuiButtonGroupComponent, CuiButtonGroupModule, CuiButtonModule, CuiCardWrapperComponent, CuiCategoriesComponent, CuiCheckboxComponent, CuiCheckboxModule, CuiChecklistBlockComponent, CuiCircleLoaderComponent, CuiContentWrapperComponent, CuiContextMenuComponent, CuiContextMenuModule, CuiCriterionInfoComponent, CuiCriterionInfoFormComponent, CuiCriterionModalCreateComponent, CuiCriterionReadonlyInfoComponent, CuiDateRangeCalendarComponent, CuiDateRangeCalendarModule, CuiDeleteModalComponent, CuiDialogActionsComponent, CuiDialogComponent, CuiDialogHeaderComponent, CuiDialogModule, CuiDialogService, CuiDialogsComponent, CuiDropdownDirective, CuiDropdownWrapperComponent, CuiEditorBlockComponent, CuiEditorComponent, CuiEditorModalComponent, CuiEditorReadonlyComponent, CuiEditorTranslations, CuiEmptyStateComponent, CuiFileIconComponent, CuiFileUploader, CuiFileUploaderStatus, CuiFilterBarComponent, CuiFilterBarModule, CuiFormFieldComponent, CuiFormFieldModule, CuiFramerPreviewComponent, CuiGeneralControlErrorHintComponent, CuiGhostInputComponent, CuiGlobalErrorHandler, CuiHeaderTool, CuiHintComponent, CuiHintModule, CuiHybridStorageService, CuiIconButtonComponent, CuiIconButtonModule, CuiImageTool, CuiInputModule, CuiInputNumberComponent, CuiInputNumberModule, CuiInputPasswordComponent, CuiInputPasswordModule, CuiInputTextComponent, CuiInputTimeComponent, CuiInputTimeModule, CuiInstructionInfoComponent, CuiInstructionInfoFormComponent, CuiInstructionModalCreateComponent, CuiInstructionReadonlyInfoComponent, CuiLabelComponent, CuiLabelModule, CuiLayoutComponent, CuiLetterBoxComponent, CuiLibTranslations, CuiLinearLoaderComponent, CuiLinkMarker, CuiListTool, CuiLoaderComponent, CuiLoaderService, CuiLoadingState, CuiNotificationComponent, CuiNotificationModule, CuiPositionService, CuiPulseLoaderComponent, CuiRadioComponent, CuiRadioModule, CuiReadonlyCriterionModalComponent, CuiReadonlyInstructionModalComponent, CuiReadonlyUtilityModalComponent, CuiRenderDynamicComponentsComponent, CuiRenderDynamicComponentsService, CuiRoleMarker, CuiRootComponent, CuiRootModule, CuiSelectComponent, CuiSelectModalComponent, CuiSelectModalFolderComponent, CuiSelectModalSearchComponent, CuiSelectModalService, CuiSelectModule, CuiSelectedCategoryService, CuiSidebarContainerComponent, CuiSidebarHeaderComponent, CuiSidebarNavigationComponent, CuiSidebarNavigationContainerComponent, CuiSidebarNavigationItemComponent, CuiSidebarService, CuiSkeleton, CuiStatedLoaderComponent, CuiStorageListComponent, CuiSvgComponent, CuiSvgModule, CuiTabDirective, CuiTabsComponent, CuiTabsServiceImpl, CuiTextFieldController, CuiTextFieldControllerModule, CuiTextFieldIconLeftDirective, CuiTextFieldIdDirective, CuiTextFieldIsErrorDirective, CuiTextFieldPlaceholderDirective, CuiTextFieldSizeDirective, CuiTextareaComponent, CuiTextareaModule, CuiThemeService, CuiTimePipe, CuiToggleComponent, CuiToggleModule, CuiToolMarker, CuiTooltip, CuiTooltipComponent, CuiTooltipDescribe, CuiTooltipDirective, CuiTooltipDriver, CuiTooltipHost, CuiTooltipHover, CuiTooltipManual, CuiTooltipOptionsDirective, CuiTooltipOverflow, CuiTooltipPointer, CuiTooltipPosition, CuiTooltipService, CuiTooltipUnstyled, CuiTooltipUnstyledComponent, CuiTooltips, CuiTranslations, CuiUserActionContextMenuComponent, CuiUtilityModalComponent, CuiUtilityModalCreateComponent, CuiUtilityReadonlyThumbnailComponent, CuiUtilityThumbnailComponent, CuiVideoTool, CuiVisualViewportService, InsertedComponent, ModalDividedSectionComponent, ModalHeaderComponent, ModalHeaderInsertedButtonsComponent, ModalInfoTabComponent, ModalOperationPartComponent, ModalResourcesTabComponent, OptionsButtonComponent, RenderDynamicModalComponent, ResourceStateBaseService, ResourcesBlockComponent, ResourcesBlockPartComponent, ResourcesBlockTabsComponent$1 as ResourcesBlockTabsComponent, ResourcesOptionsComponent, SubjectModalBaseService, UTILITY_MODAL_SERVICE_TOKEN, UsedElementsBaseService, UtilityBaseService, UtilityInfoReadonlyComponent, createEditorTools, cuiAuthInterceptor, cuiCheckFixedPosition, cuiCreateDefaultValidators, cuiErrorHandlerInterceptor, cuiGetDuration, cuiIsObscured, cuiLoaderInterceptor, cuiOverrideOptions, cuiProvideEditor, cuiRemoveSpaces, cuiReplace, cuiToAnimationOptions, cuiTooltipOptionsProvider, cuiXNdjsonInterceptor, handleError, openFileInBrowser, presetConfigToken, provideCuiAuth, provideCuiErrorHandler, provideCuiTabs, setLoading, sseStreamReaderInterceptor };
12691
13501
  //# sourceMappingURL=cuby-ui-core.mjs.map