@updevs/components 1.0.0-alpha.92 → 1.0.0-alpha.93

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.
@@ -25,21 +25,22 @@ export class SearchSectionComponent extends BaseComponent {
25
25
  this.isFilterSectionOpen = signal(false);
26
26
  this.canApplyFilters = computed(() => this.activeFilters().length > 0
27
27
  && this.activeFilters().every(af => !af.isHidden && !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value)));
28
+ this.visibleFiltersCount = computed(() => this.searchRequest().filters?.filter(af => !af.isHidden).length || 0);
28
29
  this.canPerformActions = computed(() => this.canApplyFilters() && !this.isSearching());
29
- this.badgeConfig = computed(() => (this.searchRequest().filters?.length || 0) > 0
30
+ this.badgeConfig = computed(() => this.visibleFiltersCount() > 0
30
31
  ? ({
31
32
  isNotification: true,
32
33
  isPill: true,
33
34
  bgColor: 'primary-lt',
34
- text: { text: this.searchRequest().filters.length.toString(), isTranslated: true }
35
+ text: { text: this.visibleFiltersCount().toString(), isTranslated: true }
35
36
  })
36
37
  : undefined);
37
38
  this.filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? 'primary' : undefined);
38
39
  this.searchSubject = new Subject();
39
40
  this.filtersOperandsService = inject(FiltersOperandsService);
40
41
  effect(() => {
41
- if ((this.searchRequest().filters?.length || 0) > 0) {
42
- this.activeFilters.set([...FilterTools.convertToFilterItem(this.searchRequest().filters || [], this.filtersOperandsService.getAllOperands())]);
42
+ if (this.visibleFiltersCount() > 0) {
43
+ this.activeFilters.set([...FilterTools.convertToFilterItem(this.searchRequest().filters?.filter(af => !af.isHidden) || [], this.filtersOperandsService.getAllOperands())]);
43
44
  }
44
45
  else {
45
46
  this.activeFilters.set([]);
@@ -90,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
90
91
  type: HostBinding,
91
92
  args: ['class']
92
93
  }] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYmxlL3NyYy9jb21wb25lbnRzL3NlYXJjaC1zZWN0aW9uL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9zZWFyY2gtc2VjdGlvbi9zZWFyY2gtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7OztBQU9yRixNQUFNLE9BQU8sc0JBQTBCLFNBQVEsYUFBYTtJQWtDeEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWxDVSxpQkFBWSxHQUFHLHVEQUF1RCxDQUFDO1FBRTdGLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBc0IsQ0FBQztRQUNyRCxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxQixDQUFDO1FBQzlDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUss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QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBN0ZRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdxQ0NsQm5DLHdnRUFxQ0E7OzJGRG5CYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksb0JBQW9CO3dEQUtSLFlBQVk7c0JBQWpDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFRlbXBsYXRlUmVmLCBIb3N0QmluZGluZywgc2lnbmFsLCBjb21wdXRlZCwgbW9kZWwsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaFJlcXVlc3RNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrL3N0b3Jlcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcbmltcG9ydCB7IE9wdGlvbmFsVHlwZSwgQmdDb2xvclN0eWxlVHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IEJhZGdlQ29uZmlnIH0gZnJvbSAnQHVwZGV2cy9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IFN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmlsdGVySXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbHRlci1pdGVtLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlclRvb2xzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZmlsdGVycy50b29scyc7XG5pbXBvcnQgeyBCYXNlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMvYmFzZS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyc09wZXJhbmRzU2VydmljZSB9IGZyb20gJy4uLy4uL2Fic3RyYWN0aW9ucy9maWx0ZXJzLW9wZXJhbmRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1zZWFyY2gtc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlY3Rpb25Db21wb25lbnQ8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd3JhcHBlckNsYXNzID0gJ2NhcmQtYm9keSBib3JkZXItYm90dG9tIHB5LTMgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yJztcblxuICAgIHNlYXJjaFJlcXVlc3QgPSBtb2RlbC5yZXF1aXJlZDxTZWFyY2hSZXF1ZXN0TW9kZWw+KCk7XG4gICAgaGFzQ2hhbmdlcyA9IG1vZGVsLnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgY29sdW1ucyA9IGlucHV0LnJlcXVpcmVkPEJhc2VDb2x1bW5Nb2RlbFtdPigpO1xuICAgIGlzU2VhcmNoaW5nID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgICBzZWFyY2hSZXF1ZXN0U3ViamVjdCA9IGlucHV0LnJlcXVpcmVkPFN1YmplY3Q8U2VhcmNoUmVxdWVzdE1vZGVsPj4oKTtcbiAgICBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxUYWJsZUNvbmZpZ01vZGVsPFQ+PigpO1xuICAgIGFjdGlvbnNUcGwgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICAgIGFjdGl2ZUZpbHRlcnMgPSBzaWduYWw8RmlsdGVySXRlbU1vZGVsW10+KFtdKTtcbiAgICBpc0ZpbHRlclNlY3Rpb25PcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgICBjYW5BcHBseUZpbHRlcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGl2ZUZpbHRlcnMoKS5sZW5ndGggPiAwXG4gICAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVycygpLmV2ZXJ5KGFmID0+XG4gICAgICAgICAgICAhYWYuaXNIaWRkZW4gJiYgISFhZi5uYW1lICYmICEhYWYub3BlcmFuZENvbmZpZz8ub3BlcmFuZCAmJiAoIWFmLm9wZXJhbmRDb25maWc/LnJlcXVpcmVzVmFsdWUgfHwgISFhZi52YWx1ZSlcbiAgICAgICAgKVxuICAgICk7XG4gICAgY2FuUGVyZm9ybUFjdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbkFwcGx5RmlsdGVycygpICYmICF0aGlzLmlzU2VhcmNoaW5nKCkpO1xuICAgIGJhZGdlQ29uZmlnID0gY29tcHV0ZWQ8T3B0aW9uYWxUeXBlPEJhZGdlQ29uZmlnPj4oKCkgPT5cbiAgICAgICAgKHRoaXMuc2VhcmNoUmVxdWVzdCgpLmZpbHRlcnM/Lmxlbmd0aCB8fCAwKSA+IDBcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICBpc05vdGlmaWNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1BpbGw6IHRydWUsXG4gICAgICAgICAgICAgICAgYmdDb2xvcjogJ3ByaW1hcnktbHQnLFxuICAgICAgICAgICAgICAgIHRleHQ6IHsgdGV4dDogdGhpcy5zZWFyY2hSZXF1ZXN0KCkuZmlsdGVycyEubGVuZ3RoLnRvU3RyaW5nKCksIGlzVHJhbnNsYXRlZDogdHJ1ZSB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIGZpbHRlclNlY3Rpb25CdG5Db2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNGaWx0ZXJTZWN0aW9uT3BlbigpID8gPEJnQ29sb3JTdHlsZVR5cGU+J3ByaW1hcnknIDogdW5kZWZpbmVkKTtcblxuICAgIHJlYWRvbmx5IHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcnNPcGVyYW5kc1NlcnZpY2UgPSBpbmplY3QoRmlsdGVyc09wZXJhbmRzU2VydmljZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCh0aGlzLnNlYXJjaFJlcXVlc3QoKS5maWx0ZXJzPy5sZW5ndGggfHwgMCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzLnNldChcbiAgICAgICAgICAgICAgICAgICAgWy4uLkZpbHRlclRvb2xzLmNvbnZlcnRUb0ZpbHRlckl0ZW0odGhpcy5zZWFyY2hSZXF1ZXN0KCkuZmlsdGVycyB8fCBbXSwgdGhpcy5maWx0ZXJzT3BlcmFuZHNTZXJ2aWNlLmdldEFsbE9wZXJhbmRzKCkpXVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy5zZXQoW10pO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNGaWx0ZXJTZWN0aW9uT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWFyY2hTdWIgPSB0aGlzLnNlYXJjaFN1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuY29uZmlnKCkuc2VhcmNoSW5wdXREZWJvdW5jZVRpbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRlcm0gPT5cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFJlcXVlc3RTdWJqZWN0KCkubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc2VhcmNoUmVxdWVzdCgpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGVybVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9ucyhzZWFyY2hTdWIpO1xuICAgIH1cblxuICAgIHNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hSZXF1ZXN0U3ViamVjdCgpLm5leHQoe1xuICAgICAgICAgICAgLi4udGhpcy5zZWFyY2hSZXF1ZXN0KCksXG4gICAgICAgICAgICBmaWx0ZXJzOiBGaWx0ZXJUb29scy5jb252ZXJ0VG9SZXF1ZXN0RmlsdGVyKHRoaXMuYWN0aXZlRmlsdGVycygpLCB0aGlzLmNvbmZpZygpLmNvbHVtbnMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZUZpbHRlclNlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUZpbHRlcnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRW1wdHlGaWx0ZXJSb3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJTZWN0aW9uT3Blbi51cGRhdGUoaXNPcGVuID0+ICFpc09wZW4pO1xuICAgIH1cblxuICAgIG9uUm93UmVtb3ZlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVycygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnNldChmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaCgpO1xuICAgIH1cblxuICAgIGFkZEVtcHR5RmlsdGVyUm93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlcnMudXBkYXRlKGN1cnIgPT4ge1xuICAgICAgICAgICAgY3Vyci5wdXNoKHt9KTtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY3Vycl07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyBwcmVmaXg6ICdVcERldnMuVGFibGUnXCI+XG4gICAgQGlmICghIWFjdGlvbnNUcGwoKSkge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0aW9uc1RwbCgpIVwiPjwvbmctdGVtcGxhdGU+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPHVwZC1pbnB1dCB3cmFwcGVyQ2xhc3Nlcz1cInctMTAwXCIgW3BsYWNlaG9sZGVyXT1cInt0ZXh0OidVcERldnMuVGFibGUuU2VhcmNoJywgaXNUcmFuc2xhdGVkOmZhbHNlfVwiIFtpc0FwcGVuZEJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWFyY2hTdWJqZWN0Lm5leHQoJGV2ZW50KVwiIFt2YWx1ZV09XCJzZWFyY2hSZXF1ZXN0KCkuZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB1cGRJbnB1dEFwcGVuZD5cbiAgICAgICAgICAgICAgICA8dXBkLWJ1dHRvbiBbaXNJY29uXT1cInRydWVcIiBbY29sb3JTdHlsZV09XCJmaWx0ZXJTZWN0aW9uQnRuQ29sb3IoKVwiIChjbGlja2VkKT1cInRvZ2dsZUZpbHRlclNlY3Rpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIFtiYWRnZUNvbmZpZ109XCJiYWRnZUNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1cGQtaWNvbiBbdGFibGVySWNvbl09XCJpc0ZpbHRlclNlY3Rpb25PcGVuKCkgPyAnZmlsdGVyLXVwJyA6ICdmaWx0ZXItZG93bidcIiBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdXBkLWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0ZpbHRlclNlY3Rpb25PcGVuKCkpIHtcbiAgICAgICAgQGZvciAocm93IG9mIGFjdGl2ZUZpbHRlcnMoKTsgdHJhY2sgcm93OyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHVwZC1maWx0ZXItcm93IFtzdG9yZV09XCJjb25maWcoKS5zdG9yZVwiIFtjdXJyZW50RmlsdGVyXT1cInJvd1wiIFsoYWN0aXZlRmlsdGVycyldPVwiYWN0aXZlRmlsdGVyc1wiIFtjb2x1bW5zXT1cImNvbHVtbnMoKVwiXG4gICAgICAgICAgICAgICAgW3Jvd0luZGV4XT1cImlcIiAocmVtb3ZlZCk9XCJvblJvd1JlbW92ZWQoKVwiIFtpc0Rpc2FibGVkXT1cImlzU2VhcmNoaW5nKClcIj5cbiAgICAgICAgICAgIDwvdXBkLWZpbHRlci1yb3c+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibXMtYXV0byBkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgIDx1cGQtYnV0dG9uIGN1c3RvbUNsYXNzZXM9XCJnYXAtMlwiIGNvbG9yU3R5bGU9XCJwcmltYXJ5XCIgW2lzT3V0bGluZV09XCJ0cnVlXCIgKGNsaWNrZWQpPVwiYWRkRW1wdHlGaWx0ZXJSb3coKVwiXG4gICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiIWNhblBlcmZvcm1BY3Rpb25zKClcIj5cbiAgICAgICAgICAgICAgICA8dXBkLWljb24gdGFibGVySWNvbj1cInBsdXNcIiB0YWJsZXJJY29uV2VpZ2h0PVwiYm9sZFwiIFt0YWJsZXJJY29uU2l6ZV09XCIyMFwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAge3sgdCgnQWRkTmV3RmlsdGVyJykgfX1cbiAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgICAgIDx1cGQtYnV0dG9uIGN1c3RvbUNsYXNzZXM9XCJnYXAtMlwiIGNvbG9yU3R5bGU9XCJzdWNjZXNzXCIgW2lzRGlzYWJsZWRdPVwiIWNhblBlcmZvcm1BY3Rpb25zKClcIiAoY2xpY2tlZCk9XCJzZWFyY2goKVwiPlxuICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwiY2hlY2tzXCIgdGFibGVySWNvbldlaWdodD1cImJvbGRcIiBbdGFibGVySWNvblNpemVdPVwiMjBcIj48L3VwZC1pY29uPlxuICAgICAgICAgICAgICAgIHt7IHQoJ0FwcGx5RmlsdGVycycpIH19XG4gICAgICAgICAgICA8L3VwZC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctY29udGFpbmVyPlxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RhYmxlL3NyYy9jb21wb25lbnRzL3NlYXJjaC1zZWN0aW9uL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJsZS9zcmMvY29tcG9uZW50cy9zZWFyY2gtc2VjdGlvbi9zZWFyY2gtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7OztBQU9yRixNQUFNLE9BQU8sc0JBQTBCLFNBQVEsYUFBYTtJQWtDeEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWxDVSxpQkFBWSxHQUFHLHVEQUF1RCxDQUFDO1FBRXBGLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBc0IsQ0FBQztRQUNyRCxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxQixDQUFDO1FBQzlDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVyxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUss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QUNiLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBN0ZRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdxQ0NsQm5DLHdnRUFxQ0E7OzJGRG5CYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksb0JBQW9CO3dEQUtSLFlBQVk7c0JBQWpDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIFRlbXBsYXRlUmVmLCBIb3N0QmluZGluZywgc2lnbmFsLCBjb21wdXRlZCwgbW9kZWwsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaFJlcXVlc3RNb2RlbCB9IGZyb20gJ0B1cGRldnMvc2RrL3N0b3Jlcyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHVwZGV2cy9zZGsvbGF5b3V0JztcbmltcG9ydCB7IE9wdGlvbmFsVHlwZSwgQmdDb2xvclN0eWxlVHlwZSB9IGZyb20gJ0B1cGRldnMvc2RrL3R5cGVzJztcbmltcG9ydCB7IEJhZGdlQ29uZmlnIH0gZnJvbSAnQHVwZGV2cy9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IFN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmlsdGVySXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbHRlci1pdGVtLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEZpbHRlclRvb2xzIH0gZnJvbSAnLi4vLi4vdG9vbHMvZmlsdGVycy50b29scyc7XG5pbXBvcnQgeyBCYXNlQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi9hYnN0cmFjdGlvbnMvYmFzZS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyc09wZXJhbmRzU2VydmljZSB9IGZyb20gJy4uLy4uL2Fic3RyYWN0aW9ucy9maWx0ZXJzLW9wZXJhbmRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VwZC1zZWFyY2gtc2VjdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vc2VhcmNoLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlY3Rpb25Db21wb25lbnQ8VD4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd3JhcHBlckNsYXNzID0gJ2NhcmQtYm9keSBib3JkZXItYm90dG9tIHB5LTMgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yJztcblxuICAgIHJlYWRvbmx5IHNlYXJjaFJlcXVlc3QgPSBtb2RlbC5yZXF1aXJlZDxTZWFyY2hSZXF1ZXN0TW9kZWw+KCk7XG4gICAgcmVhZG9ubHkgaGFzQ2hhbmdlcyA9IG1vZGVsLnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgcmVhZG9ubHkgY29sdW1ucyA9IGlucHV0LnJlcXVpcmVkPEJhc2VDb2x1bW5Nb2RlbFtdPigpO1xuICAgIHJlYWRvbmx5IGlzU2VhcmNoaW5nID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgICByZWFkb25seSBzZWFyY2hSZXF1ZXN0U3ViamVjdCA9IGlucHV0LnJlcXVpcmVkPFN1YmplY3Q8U2VhcmNoUmVxdWVzdE1vZGVsPj4oKTtcbiAgICByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxUYWJsZUNvbmZpZ01vZGVsPFQ+PigpO1xuICAgIHJlYWRvbmx5IGFjdGlvbnNUcGwgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICAgIHJlYWRvbmx5IGFjdGl2ZUZpbHRlcnMgPSBzaWduYWw8RmlsdGVySXRlbU1vZGVsW10+KFtdKTtcbiAgICByZWFkb25seSBpc0ZpbHRlclNlY3Rpb25PcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgICByZWFkb25seSBjYW5BcHBseUZpbHRlcnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGl2ZUZpbHRlcnMoKS5sZW5ndGggPiAwXG4gICAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVycygpLmV2ZXJ5KGFmID0+XG4gICAgICAgICAgICAhYWYuaXNIaWRkZW4gJiYgISFhZi5uYW1lICYmICEhYWYub3BlcmFuZENvbmZpZz8ub3BlcmFuZCAmJiAoIWFmLm9wZXJhbmRDb25maWc/LnJlcXVpcmVzVmFsdWUgfHwgISFhZi52YWx1ZSlcbiAgICAgICAgKVxuICAgICk7XG4gICAgcmVhZG9ubHkgdmlzaWJsZUZpbHRlcnNDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VhcmNoUmVxdWVzdCgpLmZpbHRlcnM/LmZpbHRlcihhZiA9PiAhYWYuaXNIaWRkZW4pLmxlbmd0aCB8fCAwKTtcbiAgICByZWFkb25seSBjYW5QZXJmb3JtQWN0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FuQXBwbHlGaWx0ZXJzKCkgJiYgIXRoaXMuaXNTZWFyY2hpbmcoKSk7XG4gICAgcmVhZG9ubHkgYmFkZ2VDb25maWcgPSBjb21wdXRlZDxPcHRpb25hbFR5cGU8QmFkZ2VDb25maWc+PigoKSA9PlxuICAgICAgICB0aGlzLnZpc2libGVGaWx0ZXJzQ291bnQoKSA+IDBcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICBpc05vdGlmaWNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1BpbGw6IHRydWUsXG4gICAgICAgICAgICAgICAgYmdDb2xvcjogJ3ByaW1hcnktbHQnLFxuICAgICAgICAgICAgICAgIHRleHQ6IHsgdGV4dDogdGhpcy52aXNpYmxlRmlsdGVyc0NvdW50KCkudG9TdHJpbmcoKSwgaXNUcmFuc2xhdGVkOiB0cnVlIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmVhZG9ubHkgZmlsdGVyU2VjdGlvbkJ0bkNvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuKCkgPyA8QmdDb2xvclN0eWxlVHlwZT4ncHJpbWFyeScgOiB1bmRlZmluZWQpO1xuICAgIHJlYWRvbmx5IHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcnNPcGVyYW5kc1NlcnZpY2UgPSBpbmplY3QoRmlsdGVyc09wZXJhbmRzU2VydmljZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZUZpbHRlcnNDb3VudCgpID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy5zZXQoXG4gICAgICAgICAgICAgICAgICAgIFsuLi5GaWx0ZXJUb29scy5jb252ZXJ0VG9GaWx0ZXJJdGVtKHRoaXMuc2VhcmNoUmVxdWVzdCgpLmZpbHRlcnM/LmZpbHRlcihhZiA9PiAhYWYuaXNIaWRkZW4pIHx8IFtdLCB0aGlzLmZpbHRlcnNPcGVyYW5kc1NlcnZpY2UuZ2V0QWxsT3BlcmFuZHMoKSldXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJzLnNldChbXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnNldChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFN1YiA9IHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5jb25maWcoKS5zZWFyY2hJbnB1dERlYm91bmNlVGltZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGVybSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVxdWVzdFN1YmplY3QoKS5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5zZWFyY2hSZXF1ZXN0KCksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXJtXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hZGRTdWJzY3JpcHRpb25zKHNlYXJjaFN1Yik7XG4gICAgfVxuXG4gICAgc2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaFJlcXVlc3RTdWJqZWN0KCkubmV4dCh7XG4gICAgICAgICAgICAuLi50aGlzLnNlYXJjaFJlcXVlc3QoKSxcbiAgICAgICAgICAgIGZpbHRlcnM6IEZpbHRlclRvb2xzLmNvbnZlcnRUb1JlcXVlc3RGaWx0ZXIodGhpcy5hY3RpdmVGaWx0ZXJzKCksIHRoaXMuY29uZmlnKCkuY29sdW1ucylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRmlsdGVyU2VjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVycygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5hZGRFbXB0eUZpbHRlclJvdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZpbHRlclNlY3Rpb25PcGVuLnVwZGF0ZShpc09wZW4gPT4gIWlzT3Blbik7XG4gICAgfVxuXG4gICAgb25Sb3dSZW1vdmVkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVyU2VjdGlvbk9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgfVxuXG4gICAgYWRkRW1wdHlGaWx0ZXJSb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVycy51cGRhdGUoY3VyciA9PiB7XG4gICAgICAgICAgICBjdXJyLnB1c2goe30pO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jdXJyXTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHByZWZpeDogJ1VwRGV2cy5UYWJsZSdcIj5cbiAgICBAaWYgKCEhYWN0aW9uc1RwbCgpKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25zVHBsKCkhXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICA8dXBkLWlucHV0IHdyYXBwZXJDbGFzc2VzPVwidy0xMDBcIiBbcGxhY2Vob2xkZXJdPVwie3RleHQ6J1VwRGV2cy5UYWJsZS5TZWFyY2gnLCBpc1RyYW5zbGF0ZWQ6ZmFsc2V9XCIgW2lzQXBwZW5kQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNlYXJjaFN1YmplY3QubmV4dCgkZXZlbnQpXCIgW3ZhbHVlXT1cInNlYXJjaFJlcXVlc3QoKS5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHVwZElucHV0QXBwZW5kPlxuICAgICAgICAgICAgICAgIDx1cGQtYnV0dG9uIFtpc0ljb25dPVwidHJ1ZVwiIFtjb2xvclN0eWxlXT1cImZpbHRlclNlY3Rpb25CdG5Db2xvcigpXCIgKGNsaWNrZWQpPVwidG9nZ2xlRmlsdGVyU2VjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhZGdlQ29uZmlnXT1cImJhZGdlQ29uZmlnKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVwZC1pY29uIFt0YWJsZXJJY29uXT1cImlzRmlsdGVyU2VjdGlvbk9wZW4oKSA/ICdmaWx0ZXItdXAnIDogJ2ZpbHRlci1kb3duJ1wiIFt0YWJsZXJJY29uU2l6ZV09XCIyMFwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC91cGQtaW5wdXQ+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzRmlsdGVyU2VjdGlvbk9wZW4oKSkge1xuICAgICAgICBAZm9yIChyb3cgb2YgYWN0aXZlRmlsdGVycygpOyB0cmFjayByb3c7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dXBkLWZpbHRlci1yb3cgW3N0b3JlXT1cImNvbmZpZygpLnN0b3JlXCIgW2N1cnJlbnRGaWx0ZXJdPVwicm93XCIgWyhhY3RpdmVGaWx0ZXJzKV09XCJhY3RpdmVGaWx0ZXJzXCIgW2NvbHVtbnNdPVwiY29sdW1ucygpXCJcbiAgICAgICAgICAgICAgICBbcm93SW5kZXhdPVwiaVwiIChyZW1vdmVkKT1cIm9uUm93UmVtb3ZlZCgpXCIgW2lzRGlzYWJsZWRdPVwiaXNTZWFyY2hpbmcoKVwiPlxuICAgICAgICAgICAgPC91cGQtZmlsdGVyLXJvdz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcy1hdXRvIGQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cImdhcC0yXCIgY29sb3JTdHlsZT1cInByaW1hcnlcIiBbaXNPdXRsaW5lXT1cInRydWVcIiAoY2xpY2tlZCk9XCJhZGRFbXB0eUZpbHRlclJvdygpXCJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIhY2FuUGVyZm9ybUFjdGlvbnMoKVwiPlxuICAgICAgICAgICAgICAgIDx1cGQtaWNvbiB0YWJsZXJJY29uPVwicGx1c1wiIHRhYmxlckljb25XZWlnaHQ9XCJib2xkXCIgW3RhYmxlckljb25TaXplXT1cIjIwXCI+PC91cGQtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyB0KCdBZGROZXdGaWx0ZXInKSB9fVxuICAgICAgICAgICAgPC91cGQtYnV0dG9uPlxuICAgICAgICAgICAgPHVwZC1idXR0b24gY3VzdG9tQ2xhc3Nlcz1cImdhcC0yXCIgY29sb3JTdHlsZT1cInN1Y2Nlc3NcIiBbaXNEaXNhYmxlZF09XCIhY2FuUGVyZm9ybUFjdGlvbnMoKVwiIChjbGlja2VkKT1cInNlYXJjaCgpXCI+XG4gICAgICAgICAgICAgICAgPHVwZC1pY29uIHRhYmxlckljb249XCJjaGVja3NcIiB0YWJsZXJJY29uV2VpZ2h0PVwiYm9sZFwiIFt0YWJsZXJJY29uU2l6ZV09XCIyMFwiPjwvdXBkLWljb24+XG4gICAgICAgICAgICAgICAge3sgdCgnQXBwbHlGaWx0ZXJzJykgfX1cbiAgICAgICAgICAgIDwvdXBkLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -765,21 +765,22 @@ class SearchSectionComponent extends BaseComponent {
765
765
  this.isFilterSectionOpen = signal(false);
766
766
  this.canApplyFilters = computed(() => this.activeFilters().length > 0
767
767
  && this.activeFilters().every(af => !af.isHidden && !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value)));
768
+ this.visibleFiltersCount = computed(() => this.searchRequest().filters?.filter(af => !af.isHidden).length || 0);
768
769
  this.canPerformActions = computed(() => this.canApplyFilters() && !this.isSearching());
769
- this.badgeConfig = computed(() => (this.searchRequest().filters?.length || 0) > 0
770
+ this.badgeConfig = computed(() => this.visibleFiltersCount() > 0
770
771
  ? ({
771
772
  isNotification: true,
772
773
  isPill: true,
773
774
  bgColor: 'primary-lt',
774
- text: { text: this.searchRequest().filters.length.toString(), isTranslated: true }
775
+ text: { text: this.visibleFiltersCount().toString(), isTranslated: true }
775
776
  })
776
777
  : undefined);
777
778
  this.filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? 'primary' : undefined);
778
779
  this.searchSubject = new Subject();
779
780
  this.filtersOperandsService = inject(FiltersOperandsService);
780
781
  effect(() => {
781
- if ((this.searchRequest().filters?.length || 0) > 0) {
782
- this.activeFilters.set([...FilterTools.convertToFilterItem(this.searchRequest().filters || [], this.filtersOperandsService.getAllOperands())]);
782
+ if (this.visibleFiltersCount() > 0) {
783
+ this.activeFilters.set([...FilterTools.convertToFilterItem(this.searchRequest().filters?.filter(af => !af.isHidden) || [], this.filtersOperandsService.getAllOperands())]);
783
784
  }
784
785
  else {
785
786
  this.activeFilters.set([]);
@@ -1 +1 @@
1
- {"version":3,"file":"updevs-components-table.mjs","sources":["../../../../libs/components/table/src/models/enums/column-type.enum.ts","../../../../libs/components/table/src/abstractions/base.column.ts","../../../../libs/components/table/src/abstractions/base-column.model.ts","../../../../libs/components/table/src/abstractions/filters-operands.service.ts","../../../../libs/components/table/src/components/columns/text-column/text-column.component.ts","../../../../libs/components/table/src/components/columns/text-column/text-column.component.html","../../../../libs/components/table/src/components/columns/number-column/number-column.component.ts","../../../../libs/components/table/src/components/columns/number-column/number-column.component.html","../../../../libs/components/table/src/components/columns/boolean-column/boolean-column.component.ts","../../../../libs/components/table/src/components/columns/boolean-column/boolean-column.component.html","../../../../libs/components/table/src/components/columns/date-time-column/date-time-column.component.ts","../../../../libs/components/table/src/components/columns/date-time-column/date-time-column.component.html","../../../../libs/components/table/src/directives/table-column.directive.ts","../../../../libs/components/table/src/models/columns/boolean-column.model.ts","../../../../libs/components/table/src/models/columns/custom-column.model.ts","../../../../libs/components/table/src/models/columns/date-time-column.model.ts","../../../../libs/components/table/src/models/columns/text-column.model.ts","../../../../libs/components/table/src/models/columns/guid-column.model.ts","../../../../libs/components/table/src/models/columns/image-column.model.ts","../../../../libs/components/table/src/models/columns/number-column.model.ts","../../../../libs/components/table/src/models/table-config.model.ts","../../../../libs/components/table/src/components/columns-manager/columns-manager.component.ts","../../../../libs/components/table/src/components/columns-manager/columns-manager.component.html","../../../../libs/components/table/src/services/storages/saved-views.storage.ts","../../../../libs/components/table/src/components/save-search/save-search.component.ts","../../../../libs/components/table/src/components/save-search/save-search.component.html","../../../../libs/components/table/src/tools/filters.tools.ts","../../../../libs/components/table/src/tools/table.constants.ts","../../../../libs/components/table/src/models/upd-table-config.model.ts","../../../../libs/components/table/src/services/upd-table-config.service.ts","../../../../libs/components/table/src/components/filter-row/filter-row.component.ts","../../../../libs/components/table/src/components/filter-row/filter-row.component.html","../../../../libs/components/table/src/components/search-section/search-section.component.ts","../../../../libs/components/table/src/components/search-section/search-section.component.html","../../../../libs/components/table/src/table.component.ts","../../../../libs/components/table/src/table.component.html","../../../../libs/components/table/src/services/stores/filters-operands.store.ts","../../../../libs/components/table/src/models/operands-lists/filter-operands-list.config.ts","../../../../libs/components/table/src/models/operands-lists/string-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/date-or-number-operands-list.config.ts","../../../../libs/components/table/src/models/operands-lists/number-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/boolean-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/date-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/guid-filter-operands-list.model.ts","../../../../libs/components/table/src/services/default-filters-operands.service.ts","../../../../libs/components/table/src/upd-table.module.ts","../../../../libs/components/table/src/updevs-components-table.ts"],"sourcesContent":["export enum ColumnTypeEnum {\n Text = 1,\n DateTime = 2,\n Number = 3,\n Boolean = 4,\n Date = 5,\n Time = 6,\n Image = 7,\n Currency = 8,\n Custom = 9,\n Masked = 10,\n Guid = 11\n}\n","import { inject, Directive } from '@angular/core';\nimport { TextService } from '@updevs/sdk';\nimport { FontWeightType, TextAlignmentType, TextDecorationType, OverflowStrategyType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from './base-column.model';\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\n\n@Directive()\nexport abstract class BaseColumn<TConfig extends BaseColumnModel> {\n private static readonly alignmentClassMap: { [key in TextAlignmentType]: { text: string; nonText: string } } = {\n justify: { text: 'text-justify', nonText: 'justify-content-between' },\n center: { text: 'text-center', nonText: 'justify-content-center' },\n right: { text: 'text-end', nonText: 'justify-content-end' },\n left: { text: 'text-start', nonText: 'justify-content-start' }\n };\n private static readonly overflowClassMap: { [key in OverflowStrategyType]: string } = {\n 'no-wrap': 'text-nowrap',\n wrap: 'text-wrap',\n 'word-break': 'text-break',\n truncate: 'text-truncate'\n };\n private static readonly decorationClassMap: { [key in TextDecorationType]: string } = {\n underline: 'text-decoration-underline',\n strikethrough: 'text-decoration-line-through',\n none: 'text-decoration-none'\n };\n private static readonly weightClassMap: { [key in FontWeightType]: string } = {\n bold: 'fw-bold',\n bolder: 'fw-bolder',\n light: 'fw-light',\n lighter: 'fw-lighter',\n normal: 'fw-normal'\n };\n\n record!: any;\n config!: TConfig;\n get value(): any {\n return (this.record as any)[this.config.name];\n }\n get isTextType(): boolean {\n return this.config.type !== ColumnTypeEnum.Boolean\n && this.config.type !== ColumnTypeEnum.Image\n && this.config.type !== ColumnTypeEnum.Custom;\n }\n get prefix(): string {\n return this.textService.getText(this.config.prefix);\n }\n get suffix(): string {\n return this.textService.getText(this.config.suffix);\n }\n get prefixSpace(): string {\n return !!this.prefix && this.config.shouldSpaceAfterPrefix ? ' ' : '';\n }\n get suffixSpace(): string {\n return !!this.suffix && this.config.shouldSpaceBeforeSuffix ? ' ' : '';\n }\n readonly textService = inject(TextService);\n\n private get alignmentClass(): string {\n const map = BaseColumn.alignmentClassMap[this.config.alignment] || BaseColumn.alignmentClassMap['left'];\n return this.isTextType ? map.text : map.nonText;\n }\n private get overflowClass(): string {\n return BaseColumn.overflowClassMap[this.config.overflowStrategy] || 'text-truncate';\n }\n private get decorationClass(): string {\n return this.config.decoration ? BaseColumn.decorationClassMap[this.config.decoration] : '';\n }\n private get weightClass(): string {\n return BaseColumn.weightClassMap[this.config.weight] || 'fw-normal';\n }\n\n getRecordAs<T>(): T {\n return this.record as T;\n }\n\n getClasses(): string[] {\n return [\n this.alignmentClass,\n this.overflowClass,\n this.decorationClass,\n this.weightClass,\n this.config.isItalic ? 'fst-italic' : ''\n ];\n }\n}\n","import { TextModel } from '@updevs/sdk';\nimport { DataTypeEnum } from '@updevs/sdk/stores';\nimport { WidthModel } from '@updevs/sdk/layout';\nimport { OptionalType, TextAlignmentType, TextDecorationType, OverflowStrategyType, FontWeightType } from '@updevs/sdk/types';\n\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\n\nexport class BaseColumnModel {\n name!: string;\n title?: TextModel;\n titleAlignment: TextAlignmentType = 'left';\n allowSort = true;\n isItalic = false;\n type = ColumnTypeEnum.Text;\n /**\n * Width.\n */\n width?: WidthModel;\n alignment: TextAlignmentType = 'left';\n decoration?: TextDecorationType;\n weight: FontWeightType = 'normal';\n overflowStrategy: OverflowStrategyType = 'truncate';\n shouldSpaceAfterPrefix = true;\n shouldSpaceBeforeSuffix = true;\n isHidden = false;\n prefix?: TextModel;\n suffix?: TextModel;\n\n get dataType(): DataTypeEnum {\n switch (this.type) {\n case ColumnTypeEnum.Boolean:\n return DataTypeEnum.Boolean;\n case ColumnTypeEnum.DateTime:\n case ColumnTypeEnum.Date:\n case ColumnTypeEnum.Time:\n return DataTypeEnum.Date;\n case ColumnTypeEnum.Currency:\n case ColumnTypeEnum.Number:\n return DataTypeEnum.Number;\n case ColumnTypeEnum.Guid:\n return DataTypeEnum.Guid;\n default:\n return DataTypeEnum.String;\n }\n }\n\n get widthClass(): string {\n if (!this.width || !!this.width.pixels) {\n return '';\n }\n\n const prefix = !!this.width.gridColumn ? 'col' : 'w';\n const auto = !!this.width.gridColumn && this.width.gridColumn === 0 ? 'auto' : '';\n\n return `${prefix}-${auto || this.widthSize}`;\n }\n\n get widthSize(): number {\n return !this.width ? 0 : this.width.gridColumn || this.width.percentage || 0;\n }\n\n get pixelsSize(): OptionalType<number> {\n return this.width?.pixels;\n }\n\n constructor(columnType: ColumnTypeEnum, init?: Partial<BaseColumnModel>) {\n if (!!init) {\n Object.assign(this, init);\n }\n\n this.type = columnType;\n }\n}\n","import { DataTypeEnum } from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\n\nimport { FilterOperandConfig } from '../models/filter-operand.config';\n\nexport abstract class FiltersOperandsService {\n abstract get isLoaded(): boolean;\n abstract getOperands(type: DataTypeEnum): FilterOperandConfig[];\n abstract getAllOperands(): NonNullableDictionaryType<FilterOperandConfig[]>;\n}\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { TextColumnModel } from '../../../models/columns/text-column.model';\n\n@Component({\n selector: 'upd-text-column',\n templateUrl: './text-column.component.html',\n styleUrl: './text-column.component.scss'\n})\nexport class TextColumnComponent extends BaseColumn<TextColumnModel> {\n override getClasses(): string[] {\n return [\n ...super.getClasses(),\n this.transformClass\n ];\n }\n\n private get transformClass(): string {\n switch (this.config.transform) {\n case 'capitalize':\n return 'text-capitalize';\n case 'lowercase':\n return 'text-lowercase';\n case 'uppercase':\n return 'text-uppercase';\n default:\n return '';\n }\n }\n}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { NumberColumnModel } from '../../../models/columns/number-column.model';\n\n@Component({\n selector: 'upd-number-column',\n templateUrl: './number-column.component.html',\n styleUrl: './number-column.component.scss'\n})\nexport class NumberColumnComponent extends BaseColumn<NumberColumnModel> {}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | number:config.numberFormat }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { BooleanColumnModel } from '../../../models/columns/boolean-column.model';\n\n@Component({\n selector: 'upd-boolean-column',\n templateUrl: './boolean-column.component.html',\n styleUrl: './boolean-column.component.scss'\n})\nexport class BooleanColumnComponent extends BaseColumn<BooleanColumnModel> {\n override getClasses(): string[] {\n return [\n ...super.getClasses(),\n this.colorClass\n ];\n }\n\n private get colorClass(): string {\n if (!this.config.shouldColorHighlight) {\n return '';\n }\n\n return `text-${(!!this.value ? this.config.trueColor : this.config.falseColor)}`;\n }\n}\n","<div [ngClass]=\"getClasses()\">\n @switch (config.displayType) {\n @case ('text') {\n {{ prefix }}{{ prefixSpace }}{{ !!value ? textService.getText(config.trueText) : textService.getText(config.falseText) }}{{ suffixSpace }}{{ suffix }}\n }\n @case ('toggle') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [tablerIcon]=\"!!value ? 'toggle-right' : 'toggle-left'\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n @case ('icon') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [model]=\"!!value ? config.trueIcon : config.falseIcon\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n }\n</div>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { DateTimeColumnModel } from '../../../models/columns/date-time-column.model';\n\n@Component({\n selector: 'upd-date-time-column',\n templateUrl: './date-time-column.component.html',\n styleUrl: './date-time-column.component.scss'\n})\nexport class DateTimeColumnComponent extends BaseColumn<DateTimeColumnModel> {}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | date:config.dateTimeFormat }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Directive, input, inject, ViewContainerRef, effect } from '@angular/core';\nimport { DynamicComponentLoaderService } from '@updevs/sdk/layout';\nimport { ComponentType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../abstractions/base-column.model';\nimport { BaseColumn } from '../abstractions/base.column';\nimport { CustomColumnModel } from '../models/columns/custom-column.model';\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\nimport { TextColumnComponent } from '../components/columns/text-column/text-column.component';\nimport { NumberColumnComponent } from '../components/columns/number-column/number-column.component';\nimport { BooleanColumnComponent } from '../components/columns/boolean-column/boolean-column.component';\nimport { DateTimeColumnComponent } from '../components/columns/date-time-column/date-time-column.component';\n\n@Directive({\n selector: '[updTableColumn]'\n})\nexport class TableColumnDirective<TConfig extends BaseColumnModel> {\n record = input.required();\n config = input.required<TConfig>();\n\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly dynamicLoaderService = inject(DynamicComponentLoaderService);\n\n constructor() {\n effect(() => {\n const component = this.dynamicLoaderService.load(this.getComponentType(), this.viewContainerRef);\n component.instance.record = this.record();\n component.instance.config = this.config();\n });\n }\n\n getComponentType(): ComponentType<BaseColumn<TConfig>> {\n switch (this.config().type) {\n case ColumnTypeEnum.Text:\n // @ts-ignore\n return TextColumnComponent;\n case ColumnTypeEnum.Number:\n // @ts-ignore\n return NumberColumnComponent;\n case ColumnTypeEnum.Boolean:\n // @ts-ignore\n return BooleanColumnComponent;\n case ColumnTypeEnum.Date:\n case ColumnTypeEnum.DateTime:\n // @ts-ignore\n return DateTimeColumnComponent;\n case ColumnTypeEnum.Guid:\n // @ts-ignore\n return TextColumnComponent;\n case ColumnTypeEnum.Custom:\n return (this.config() as unknown as CustomColumnModel).component;\n default:\n throw Error();\n }\n }\n}\n","import { IconModel } from '@updevs/icons';\nimport { TextModel } from '@updevs/sdk';\nimport { ColorStyleType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class BooleanColumnModel extends BaseColumnModel {\n displayType: 'text' | 'toggle' | 'icon' = 'text';\n trueText: TextModel = { text: 'UpDevs.Table.Filters.Boolean.True', isTranslated: false };\n falseText: TextModel = { text: 'UpDevs.Table.Filters.Boolean.False', isTranslated: false };\n trueIcon: IconModel = { tablerIcon: 'square-check' };\n falseIcon: IconModel = { tablerIcon: 'square' };\n trueColor: ColorStyleType = 'success';\n falseColor: ColorStyleType = 'secondary';\n shouldColorHighlight = true;\n\n constructor(init?: Partial<BooleanColumnModel>) {\n super(ColumnTypeEnum.Boolean, init);\n\n if (this.displayType !== 'text') {\n this.alignment = 'center';\n }\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class CustomColumnModel extends BaseColumnModel {\n component: any;\n\n constructor(init?: Partial<CustomColumnModel>) {\n super(ColumnTypeEnum.Custom, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { DateTimeFormatEnum } from '@updevs/sdk/core';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class DateTimeColumnModel extends BaseColumnModel {\n format = DateTimeFormatEnum.ShortDate;\n customFormat?: string;\n get dateTimeFormat(): string {\n return this.customFormat || this.format;\n }\n\n constructor(init?: Partial<DateTimeColumnModel>) {\n super(ColumnTypeEnum.DateTime, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { TextTransformType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class TextColumnModel extends BaseColumnModel {\n transform?: TextTransformType;\n\n constructor(init?: Partial<TextColumnModel>) {\n super(ColumnTypeEnum.Text, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { ColumnTypeEnum } from '../enums/column-type.enum';\nimport { TextColumnModel } from './text-column.model';\n\nexport class GuidColumnModel extends TextColumnModel {\n constructor(init?: Partial<GuidColumnModel>) {\n super(init);\n\n this.transform = 'uppercase';\n\n if (!!init) {\n Object.assign(this, init);\n }\n\n this.type = ColumnTypeEnum.Guid;\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class ImageColumnModel extends BaseColumnModel {\n imageWidth?: number;\n imageHeight?: number;\n\n constructor(init?: Partial<ImageColumnModel>) {\n super(ColumnTypeEnum.Image, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class NumberColumnModel extends BaseColumnModel {\n minIntegerDigits = 1;\n minFractionDigits = 0;\n maxFractionDigits = 3;\n get numberFormat(): string {\n return `${this.minIntegerDigits}.${this.minFractionDigits}-${this.maxFractionDigits}`;\n }\n\n constructor(init?: Partial<NumberColumnModel>) {\n super(ColumnTypeEnum.Number, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { TextModel } from '@updevs/sdk';\nimport { ButtonModel } from '@updevs/sdk/layout';\nimport { BaseSearchStore } from '@updevs/sdk/stores';\nimport { GetByIdType } from '@updevs/sdk/types';\n\nimport { TableConfig } from './table.config';\nimport { BaseColumnModel } from '../abstractions/base-column.model';\n\nexport class TableConfigModel<T> implements TableConfig<T> {\n name!: string;\n store?: BaseSearchStore<T>;\n columns: BaseColumnModel[] = [];\n title?: TextModel;\n canSearch = true;\n canSaveViews = true;\n canLoadSavedViews = true;\n canManageColumns = true;\n shouldAutoSearch = true;\n hasCheckboxColumn = true;\n isResponsive = true;\n hasStickyHeader = false;\n data: T[] = [];\n preSelectedItems: T[] = [];\n searchInputDebounceTime = 300;\n /**\n * Actions added to each record row as a group of buttons.\n */\n customActions: ButtonModel[] = [];\n /**\n * Actions added to the header of the table as regular buttons.\n */\n customHeaderActions: ButtonModel[] = [];\n\n constructor(init?: TableConfig<T>) {\n if (!!init) {\n Object.assign(this, init);\n }\n }\n\n getIdFunction: GetByIdType<T> = (item: T) => (item as any).id;\n}\n","import { Component, computed, signal } from '@angular/core';\nimport { DragAndDropColumnConfig, DragAndDropColumnModel } from '@updevs/components/drag-and-drop';\nimport { BaseModal } from '@updevs/components/modal';\n\nimport { TableConfig } from '../../models/table.config';\n\n@Component({\n selector: 'upd-columns-manager',\n templateUrl: './columns-manager.component.html',\n styleUrl: './columns-manager.component.scss'\n})\nexport class ColumnsManagerComponent<T> extends BaseModal<TableConfig<T>> {\n config = computed(() => ({ columns: [this.visibleColumn(), this.hiddenColumn()], canReorder: true }));\n columns = signal<DragAndDropColumnModel[]>([]);\n\n private readonly visibleColumn = computed<DragAndDropColumnConfig>(() =>\n ({\n name: 'visible',\n title: { text: 'UpDevs.Table.VisibleColumns', isTranslated: false },\n canBeEmpty: false,\n items: this.data().columns.filter(c => !c.isHidden).map(c => ({\n name: c.name,\n text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }\n }))\n })\n );\n private readonly hiddenColumn = computed<DragAndDropColumnConfig>(() =>\n ({\n name: 'hidden',\n title: { text: 'UpDevs.Table.HiddenColumns', isTranslated: false },\n items: this.data().columns.filter(c => c.isHidden).map(c => ({\n name: c.name,\n text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }\n }))\n })\n );\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.ColumnsManager'\">\n <upd-drag-and-drop [config]=\"config()\" [(columns)]=\"columns\"></upd-drag-and-drop>\n</ng-container>\n","import { Injectable, Signal, computed } from '@angular/core';\nimport { Tools } from '@updevs/sdk/core';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { BaseByUserSignalStorage } from '@updevs/sdk/security';\n\nimport { SavedViewModel } from '../../models/saved-view.model';\n\n@Injectable()\nexport class SavedViewsStorage extends BaseByUserSignalStorage {\n private readonly lastStateKey = 'last-state';\n\n constructor() {\n super('saved-views');\n }\n\n saveView(data: SavedViewModel): void {\n data.id = data.id || Tools.Guid.generate();\n data.userId = this._loggedUserId;\n\n this.save(data, this._getUserKey(data.id, data.tableName));\n }\n\n saveLastState(data: SavedViewModel): void {\n data.id = this.lastStateKey;\n this.saveView(data);\n }\n\n getById(tableName: string, id: string): Signal<OptionalType<SavedViewModel>> {\n return this.get(this._getUserKey(id, tableName));\n }\n\n getAll(tableName: string): Signal<SavedViewModel[]> {\n return computed(() => {\n const records = this.getAllItems<SavedViewModel>();\n return records().filter(sv =>\n sv.tableName.toLowerCase() === tableName.toLowerCase()\n && sv.userId === this._loggedUserId\n && sv.id !== this.lastStateKey\n );\n });\n }\n\n getLastState(tableName: string): Signal<OptionalType<SavedViewModel>> {\n return this.getById(tableName, this.lastStateKey);\n }\n\n resetAllIsDefault(tableName: string): void {\n const savedViews = this.getAll(tableName)();\n savedViews.forEach(sv => {\n sv.isDefault = false;\n this.saveView(sv);\n });\n }\n\n removeViews(tableName: string, ...keys: string[]): void {\n super.remove(...keys.map(k => this._getUserKey(k, tableName)));\n }\n\n getByName(tableName: string, name: string): OptionalType<SavedViewModel> {\n const records = this.getAllItems<SavedViewModel>();\n return records().find(sv =>\n sv.tableName.toLowerCase() === tableName.toLowerCase()\n && sv.userId === this._loggedUserId\n && sv.name?.toLowerCase() === name?.toLowerCase()\n && sv.id !== this.lastStateKey\n );\n }\n}\n","import { Component, model, inject, OnInit } from '@angular/core';\nimport { Validators, FormGroup, ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { FormRowModel, DynamicFieldType } from '@updevs/components/form';\nimport { BaseModal } from '@updevs/components/modal';\n\nimport { SavedViewModel } from '../../models/saved-view.model';\nimport { SavedViewsStorage } from '../../services/storages/saved-views.storage';\n\n@Component({\n selector: 'upd-save-search',\n templateUrl: './save-search.component.html',\n styleUrl: './save-search.component.scss'\n})\nexport class SaveSearchComponent extends BaseModal<SavedViewModel> implements OnInit {\n formGroup = model(new FormGroup({}));\n formRows: FormRowModel[] = [];\n\n private readonly savedViewsStorage = inject(SavedViewsStorage);\n\n ngOnInit(): void {\n this.formRows = [\n {\n fields: [\n {\n name: 'name',\n type: DynamicFieldType.Input,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Table.SaveSearch.Name', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3), this.uniqueNameValidator()],\n initValue: this.data().name\n }\n ]\n },\n {\n fields: [\n {\n name: 'isDefault',\n type: DynamicFieldType.Checkbox,\n colSize: { default: 6 },\n label: { text: 'UpDevs.Table.SaveSearch.IsDefault', isTranslated: false },\n hint: { text: 'UpDevs.Table.SaveSearch.IsDefaultHint', isTranslated: false },\n hintAsTooltip: true,\n initValue: this.data().isDefault || false\n }\n ]\n }\n ];\n }\n\n cancel(): void {\n this.modalRef().close();\n }\n\n save(): void {\n const formValue = this.formGroup().value as any;\n const data = { ...this.data(), name: formValue.name, isDefault: formValue.isDefault };\n\n if (data.isDefault) {\n this.savedViewsStorage.resetAllIsDefault(this.data().tableName);\n }\n\n this.savedViewsStorage.saveView(data);\n this.modalRef().close();\n }\n\n private uniqueNameValidator = (): ValidatorFn => (control: AbstractControl): ValidationErrors | null => {\n const existingRecord = this.savedViewsStorage.getByName(this.data().tableName, control.value);\n return !!existingRecord\n ? { nameNotUnique: { errorText: { text: 'UpDevs.Table.SavedViews.NameNotUnique', isTranslated: false } } }\n // eslint-disable-next-line no-null/no-null\n : null;\n };\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.SaveSearch'\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ t('Title') }}</h5>\n </div>\n <div class=\"modal-body py-4\">\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\"></upd-form>\n </div>\n <div class=\"modal-footer\">\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"cancel()\">\n {{ t('Cancel') }}\n </upd-button>\n <upd-button colorStyle=\"primary\" [iconModel]=\"{tablerIcon:'device-floppy'}\" (clicked)=\"save()\" [isDisabled]=\"!formGroup().valid\">\n {{ t('Save') }}\n </upd-button>\n </div>\n</ng-container>\n","import {\n BaseFilter,\n DataTypeEnum,\n BooleanColumnFilter,\n FilterBooleanOperandEnum,\n DateColumnFilter,\n FilterDateOperandEnum,\n NumberColumnFilter,\n FilterNumberOperandEnum,\n GuidColumnFilter,\n FilterOperandEnum,\n StringColumnFilter\n} from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\n\nimport { FilterItemModel } from '../models/filter-item.model';\nimport { BaseColumnModel } from '../abstractions/base-column.model';\nimport { FilterOperandConfig } from '../models/filter-operand.config';\n\nexport class FilterTools {\n static convertToFilterItem(filters: BaseFilter[], operands: NonNullableDictionaryType<FilterOperandConfig[]>): FilterItemModel[] {\n return filters.map(f => ({\n name: f.column,\n value: f.value,\n operandConfig: operands[f.dataType].find(op => op.operand === f.operand),\n isHidden: f.isHidden\n }));\n }\n\n static convertToRequestFilter(filters: FilterItemModel[], columns: BaseColumnModel[]): BaseFilter[] {\n return filters.map(af => {\n const col = columns.find(c => c.name === af.name);\n\n switch (col?.dataType) {\n case DataTypeEnum.Boolean:\n return new BooleanColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterBooleanOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n case DataTypeEnum.Date:\n return new DateColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterDateOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n case DataTypeEnum.Number:\n return new NumberColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterNumberOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n case DataTypeEnum.Guid:\n return new GuidColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n default:\n return new StringColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { UpdTableConfig } from '../models/upd-table.config';\n\n/**\n * Table constants.\n */\nexport class TableConstants {\n /**\n * Key to inject the default configuration.\n */\n static defaultOptionsKey = 'upd-table-default-options';\n\n /**\n * Injection token for the default configuration.\n */\n static defaultOptionsInjectionToken = new InjectionToken<UpdTableConfig>(TableConstants.defaultOptionsKey);\n}\n","import { UpdTableConfig } from './upd-table.config';\n\nexport class UpdTableConfigModel implements UpdTableConfig {\n shouldLoadFieldsFromServer = false;\n urlToLoadOperandsFromServer?: string;\n\n constructor(init?: UpdTableConfig) {\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { TableConstants } from '../tools/table.constants';\nimport { UpdTableConfig } from '../models/upd-table.config';\nimport { UpdTableConfigModel } from '../models/upd-table-config.model';\n\n@Injectable()\nexport class UpdTableConfigService {\n /**\n * Configuration (See: #upsee[p:models, i:UpdTableConfigModel]).\n */\n readonly config: UpdTableConfigModel;\n\n constructor(@Inject(TableConstants.defaultOptionsInjectionToken) layoutConfig: UpdTableConfig) {\n this.config = new UpdTableConfigModel(layoutConfig);\n }\n}\n","import { Component, signal, inject, OnInit, input, model, HostBinding, Output, EventEmitter } from '@angular/core';\nimport { TextService } from '@updevs/sdk';\nimport { BaseSearchStore, DataTypeEnum } from '@updevs/sdk/stores';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { SelectItem } from '@updevs/components/form-controls/select';\nimport { BaseComponent } from '@updevs/sdk/layout';\n\nimport { UpdTableConfigService } from '../../services/upd-table-config.service';\nimport { FiltersOperandsService } from '../../abstractions/filters-operands.service';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { FilterOperandConfig } from '../../models/filter-operand.config';\n\n@Component({\n selector: 'upd-filter-row',\n templateUrl: './filter-row.component.html',\n styleUrl: './filter-row.component.scss'\n})\nexport class FilterRowComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = 'd-flex gap-2';\n\n @Output() readonly removed: EventEmitter<void> = new EventEmitter();\n\n DataTypeEnum = DataTypeEnum;\n\n activeFilters = model.required<FilterItemModel[]>();\n rowIndex = input.required<number>();\n columns = input.required<BaseColumnModel[]>();\n isDisabled = input.required<boolean>();\n store = input<BaseSearchStore>();\n currentFilter = input<FilterItemModel>();\n currentField = signal<OptionalType<SelectItem>>(undefined);\n currentOperand = signal<OptionalType<FilterOperandConfig>>(undefined);\n fieldsOptions = signal<SelectItem[]>([]);\n comparisonOperatorOptions = signal<SelectItem[]>([]);\n isValueSectionEnabled = signal<boolean>(true);\n\n get fieldType(): DataTypeEnum {\n return this.currentField()?.objectData || DataTypeEnum.String;\n }\n get selectedField(): OptionalType<SelectItem> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name\n ? this.fieldsOptions().find(f => f.value === currentFilter.name)\n : undefined;\n }\n get selectedOperand(): OptionalType<SelectItem> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name\n ? this.comparisonOperatorOptions().find(co => co.value === currentFilter.operandConfig?.operand)\n : undefined;\n }\n get selectedValue(): OptionalType<any> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name ? currentFilter.value : undefined;\n }\n\n private currentOperands: FilterOperandConfig[] = [];\n private readonly configService = inject(UpdTableConfigService);\n private readonly filtersOperandsService = inject(FiltersOperandsService);\n private readonly textService = inject(TextService);\n\n ngOnInit(): void {\n if (!!this.store() && this.configService.config.shouldLoadFieldsFromServer) {\n this.store()!.getFilterableFields().subscribe(fields =>\n this.fieldsOptions.set(fields.map(f => ({ value: f.name!, text: f.description!, objectData: f.type })))\n );\n } else {\n this.fieldsOptions.set(\n this.columns().filter(c => !!c.title).map(c =>\n ({ value: c.name, text: this.textService.getText(c.title), objectData: c.dataType }))\n );\n }\n\n if (!!this.selectedField) {\n if (!!this.selectedOperand) {\n this.onSelectOperand(this.selectedOperand);\n }\n\n this.onSelectField(this.selectedField);\n }\n }\n\n onSelectField(item?: SelectItem): void {\n this.currentField.set(item);\n\n const dataType = item?.objectData;\n\n if (!!dataType) {\n this.currentOperands = this.filtersOperandsService.getOperands(dataType);\n this.comparisonOperatorOptions.set(\n this.currentOperands.map(o => ({ value: o.operand, text: this.textService.getText(o.text), listItem: { icon: o.icon } }))\n );\n } else {\n this.comparisonOperatorOptions.set([]);\n }\n\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].name = this.currentField()?.value;\n return [...curr];\n });\n }\n\n onSelectOperand(item?: SelectItem): void {\n this.currentOperand.set(this.currentOperands.find(co => co.operand === item?.value));\n this.isValueSectionEnabled.set(!!this.currentOperand()?.requiresValue);\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].operandConfig = this.currentOperand();\n return [...curr];\n });\n }\n\n updateValue(value?: any): void {\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].value = value;\n return [...curr];\n });\n }\n\n removeFilterItem(): void {\n this.activeFilters.update(curr => {\n curr.splice(this.rowIndex(), 1);\n return [...curr];\n });\n this.removed.emit();\n }\n}\n","<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [value]=\"selectedField\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\" (selectedItem)=\"onSelectOperand($event)\"\n [value]=\"selectedOperand\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (DataTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (DataTypeEnum.Date) {\n\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>","import { Component, input, TemplateRef, HostBinding, signal, computed, model, OnInit, effect, inject } from '@angular/core';\nimport { SearchRequestModel } from '@updevs/sdk/stores';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { OptionalType, BgColorStyleType } from '@updevs/sdk/types';\nimport { BadgeConfig } from '@updevs/components/badge';\nimport { Subject, distinctUntilChanged, debounceTime } from 'rxjs';\n\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { TableConfigModel } from '../../models/table-config.model';\nimport { FilterTools } from '../../tools/filters.tools';\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { FiltersOperandsService } from '../../abstractions/filters-operands.service';\n\n@Component({\n selector: 'upd-search-section',\n templateUrl: './search-section.component.html',\n styleUrl: './search-section.component.scss'\n})\nexport class SearchSectionComponent<T> extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClass = 'card-body border-bottom py-3 d-flex flex-column gap-2';\n\n searchRequest = model.required<SearchRequestModel>();\n hasChanges = model.required<boolean>();\n columns = input.required<BaseColumnModel[]>();\n isSearching = input.required<boolean>();\n searchRequestSubject = input.required<Subject<SearchRequestModel>>();\n config = input.required<TableConfigModel<T>>();\n actionsTpl = input<TemplateRef<any>>();\n activeFilters = signal<FilterItemModel[]>([]);\n isFilterSectionOpen = signal(false);\n canApplyFilters = computed(() => this.activeFilters().length > 0\n && this.activeFilters().every(af =>\n !af.isHidden && !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value)\n )\n );\n canPerformActions = computed(() => this.canApplyFilters() && !this.isSearching());\n badgeConfig = computed<OptionalType<BadgeConfig>>(() =>\n (this.searchRequest().filters?.length || 0) > 0\n ? ({\n isNotification: true,\n isPill: true,\n bgColor: 'primary-lt',\n text: { text: this.searchRequest().filters!.length.toString(), isTranslated: true }\n })\n : undefined\n );\n filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? <BgColorStyleType>'primary' : undefined);\n\n readonly searchSubject = new Subject<string>();\n\n private readonly filtersOperandsService = inject(FiltersOperandsService);\n\n constructor() {\n super();\n\n effect(() => {\n if ((this.searchRequest().filters?.length || 0) > 0) {\n this.activeFilters.set(\n [...FilterTools.convertToFilterItem(this.searchRequest().filters || [], this.filtersOperandsService.getAllOperands())]\n );\n } else {\n this.activeFilters.set([]);\n this.isFilterSectionOpen.set(false);\n }\n }, { allowSignalWrites: true });\n }\n\n ngOnInit(): void {\n const searchSub = this.searchSubject\n .pipe(\n distinctUntilChanged(),\n debounceTime(this.config().searchInputDebounceTime)\n )\n .subscribe(term =>\n this.searchRequestSubject().next({\n ...this.searchRequest(),\n description: term\n })\n );\n\n this.addSubscriptions(searchSub);\n }\n\n search(): void {\n this.searchRequestSubject().next({\n ...this.searchRequest(),\n filters: FilterTools.convertToRequestFilter(this.activeFilters(), this.config().columns)\n });\n }\n\n toggleFilterSection(): void {\n if (this.activeFilters().length === 0) {\n this.addEmptyFilterRow();\n }\n\n this.isFilterSectionOpen.update(isOpen => !isOpen);\n }\n\n onRowRemoved(): void {\n if (this.activeFilters().length === 0) {\n this.isFilterSectionOpen.set(false);\n }\n\n this.search();\n }\n\n addEmptyFilterRow(): void {\n this.activeFilters.update(curr => {\n curr.push({});\n return [...curr];\n });\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\" [isAppendButton]=\"true\"\n (valueChange)=\"searchSubject.next($event)\" [value]=\"searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [(activeFilters)]=\"activeFilters\" [columns]=\"columns()\"\n [rowIndex]=\"i\" (removed)=\"onRowRemoved()\" [isDisabled]=\"isSearching()\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\" (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>\n","import { Component, inject, signal, computed, effect, OnInit, Signal, model, ElementRef, viewChild } from '@angular/core';\nimport { TablerIconsType } from '@updevs/icons';\nimport { TextService } from '@updevs/sdk';\nimport { SelectionModel, Tools, ServerResponseService } from '@updevs/sdk/core';\nimport { OptionalType, ButtonSizeType } from '@updevs/sdk/types';\nimport { BaseComponent, ButtonModel } from '@updevs/sdk/layout';\nimport { SearchRequestModel, BaseSearchStore, ColumnSort, SortDirectionEnum, SearchResponseModel } from '@updevs/sdk/stores';\nimport { ModalService, ModalRef, ModalAlertService } from '@updevs/components/modal';\nimport { DropdownItem, DropdownActionClickedModel } from '@updevs/components/dropdown';\nimport { distinctUntilChanged, tap, switchMap, finalize, Subject, catchError, of } from 'rxjs';\n\nimport { BooleanColumnModel } from './models/columns/boolean-column.model';\nimport { DateTimeColumnModel } from './models/columns/date-time-column.model';\nimport { GuidColumnModel } from './models/columns/guid-column.model';\nimport { ImageColumnModel } from './models/columns/image-column.model';\nimport { NumberColumnModel } from './models/columns/number-column.model';\nimport { TextColumnModel } from './models/columns/text-column.model';\nimport { ColumnTypeEnum } from './models/enums/column-type.enum';\nimport { TableConfig } from './models/table.config';\nimport { TableConfigModel } from './models/table-config.model';\nimport { BaseColumnModel } from './abstractions/base-column.model';\nimport { FilterItemModel } from './models/filter-item.model';\nimport { ColumnsManagerComponent } from './components/columns-manager/columns-manager.component';\nimport { SaveSearchComponent } from './components/save-search/save-search.component';\nimport { SavedViewModel } from './models/saved-view.model';\nimport { SavedViewsStorage } from './services/storages/saved-views.storage';\n\nimport Utils = Tools.Utils;\n\n@Component({\n selector: 'upd-table',\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss'\n})\nexport class TableComponent<T> extends BaseComponent implements OnInit {\n savedViewsRef = viewChild('savedViewsBtn', { read: ElementRef });\n config = model.required<TableConfig<T>>();\n isSearching = signal<boolean>(false);\n selectedItems = computed<T[]>(() => this.selectionModel().selected());\n activeSavedView = signal<OptionalType<SavedViewModel>>(undefined);\n isMainCheckboxChecked = false;\n isMainCheckboxIndeterminate = false;\n isSavedViewsDropdownOpen = false;\n\n get numberOfColumns(): number {\n return this.columns().length\n + (this.configModel().hasCheckboxColumn ? 1 : 0)\n + (this.configModel().customActions.length > 0 ? 1 : 0)\n + (!!this.pendingWidthColClass ? 1 : 0);\n }\n get hasWidth(): boolean {\n return this.columns().some(rec => !!rec.width);\n }\n get pendingWidthColClass(): string {\n if (!this.hasWidth || this.isWidthInPixels) {\n return '';\n }\n\n const isGrid = this.columns().some(rec => !!rec.width?.gridColumn);\n const total = isGrid ? 12 : 100;\n const remainingSize = total - this.columns().reduce((acc, item) => acc + item.widthSize, 0);\n\n // TODO: add spaces of checkbox and customactions columns\n\n return remainingSize > 0 ? `${(isGrid ? 'col' : 'w')}-${remainingSize}` : '';\n }\n get isWidthInPixels(): boolean {\n return this.columns().some(rec => !!rec.width?.pixels);\n }\n\n readonly searchRequest = model<SearchRequestModel>({});\n readonly activeFilters = model<FilterItemModel[]>([]);\n readonly currentPage = model<number>(1);\n readonly pageSize = model<number>(0);\n readonly hasSearchChanged = signal(false);\n readonly totalRecords = signal<number>(0);\n readonly configModel = computed(() => new TableConfigModel(this.config()));\n readonly data: Signal<T[]> = computed(() => this.configModel().data.length > 0 ? this.configModel().data : this.currentData());\n readonly selectionModel = computed(() => new SelectionModel<T>(this.configModel().getIdFunction));\n readonly currentSorting = signal<OptionalType<ColumnSort>>(undefined);\n readonly hiddenColumns = computed(() =>\n this.configModel().canManageColumns ? this.configModel().columns.filter(c => c.isHidden).length : 0\n );\n readonly columns = signal<BaseColumnModel[]>([]);\n readonly searchRequestSubject = new Subject<SearchRequestModel>();\n readonly textService = inject(TextService);\n readonly savedViewsOptions = computed<DropdownItem[]>(() => {\n const allSavedViewsOptions: DropdownItem[] = [];\n this.allSavedViews().forEach(sv => allSavedViewsOptions.push(this.getSavedViewOption(sv)));\n\n return allSavedViewsOptions;\n });\n\n private get isRemote(): boolean {\n return !!this.configModel().store;\n }\n private get store(): BaseSearchStore<T> {\n return this.configModel().store!;\n }\n private shouldForceSearch = false;\n private columnsBackup: BaseColumnModel[] = [];\n\n private readonly currentData = signal<T[]>([]);\n private readonly currentFavoriteButtons = computed<ButtonModel[]>(() => this.favoriteButtons);\n private readonly smallSizeSignal = signal<ButtonSizeType>('small');\n private readonly allSavedViews = computed(() => this.savedViewsStorage.getAll(this.configModel().name)());\n private readonly favoriteButtons: ButtonModel[] = [];\n private readonly serverResponseService = inject(ServerResponseService);\n private readonly savedViewsStorage = inject(SavedViewsStorage);\n private readonly modalService = inject(ModalService);\n private readonly modalAlertService = inject(ModalAlertService);\n\n constructor() {\n super();\n\n effect(() => {\n if (this.data().length > 0 && this.configModel().data.length > 0) {\n this.setupPreSelected();\n }\n\n if (this.selectedItems().length > 0) {\n if (this.selectedItems().length !== this.data().length) {\n this.isMainCheckboxChecked = false;\n this.isMainCheckboxIndeterminate = true;\n } else {\n this.isMainCheckboxIndeterminate = false;\n this.isMainCheckboxChecked = true;\n }\n } else {\n this.isMainCheckboxChecked = false;\n this.isMainCheckboxIndeterminate = false;\n }\n });\n }\n\n ngOnInit(): void {\n this.columnsBackup = [...this.config().columns];\n const searchSubjectSub = this.searchRequestSubject\n .pipe(\n distinctUntilChanged((prev, curr) => !this.shouldForceSearch ? Utils.areEqual(prev, curr) : false),\n tap((request) => {\n this.isSearching.set(true);\n this.currentData.set([]);\n this.searchRequest.set(request);\n\n if (\n (request.filters?.length || 0) > 0\n || (request.description || '').length > 0\n || (request.sortings?.length || 0) > 0\n ) {\n this.hasSearchChanged.set(true);\n }\n }),\n switchMap(() =>\n this.store.search(this.searchRequest()).pipe(\n catchError(() => of()) // Already handled by the ServerResponseService.\n )\n ),\n finalize(() => this.shouldForceSearch = false)\n )\n .subscribe(resp => this.setupSearchResults(resp));\n const serverResponseSub = this.serverResponseService.onError.subscribe(error => {\n if (!!error) {\n this.isSearching.set(false);\n }\n });\n\n if (this.configModel().shouldAutoSearch && this.isRemote) {\n this.shouldForceSearch = true;\n this.searchRequestSubject.next({});\n }\n\n this.updateColumns(this.configModel().columns);\n this.addSubscriptions(searchSubjectSub, serverResponseSub);\n }\n\n toggleAllSelection(isChecked: boolean): void {\n if (isChecked) {\n this.selectionModel().select(...this.currentData());\n } else {\n this.selectionModel().clearSelection();\n }\n }\n\n toggleItemSelection(record: T): void {\n if (this.selectionModel().isSelected(record)) {\n this.selectionModel().deselect(record);\n } else {\n this.selectionModel().select(record);\n }\n }\n\n canSortColumn(columnName: string): boolean {\n return this.getColumnByName(columnName).allowSort;\n }\n\n sortByColumn(columnName: string): void {\n const currentSort = this.currentSorting();\n\n const nextDirection = (currentSort?.column === columnName && currentSort.direction === SortDirectionEnum.Asc)\n ? SortDirectionEnum.Desc\n : SortDirectionEnum.Asc;\n\n this.currentSorting.set(new ColumnSort({\n column: columnName,\n direction: nextDirection\n }));\n\n if (this.isRemote) {\n this.searchRequest.set({\n ...this.searchRequest(),\n sortings: [this.currentSorting()!]\n });\n this.searchRequestSubject.next(this.searchRequest());\n } else {\n const col = this.getColumnByName(columnName);\n // TODO: local sort\n }\n }\n\n getSortingIcon(columnName: string): TablerIconsType {\n return !!this.currentSorting() && this.currentSorting()!.column === columnName\n ? (this.currentSorting()!.direction === SortDirectionEnum.Asc ? 'sort-ascending' : 'sort-descending')\n : 'arrows-sort';\n }\n\n onPageSettingsChanged(): void {\n this.searchRequest.set({\n ...this.searchRequest(),\n pageSize: this.pageSize(),\n pageIndex: this.currentPage()\n });\n this.searchRequestSubject.next(this.searchRequest());\n }\n\n getRecordId(record: T): any {\n return this.configModel().getIdFunction(record);\n }\n\n openColumnsManagerModal(): void {\n const ref: ModalRef = this.modalService.open(undefined, {\n bodyContentType: ColumnsManagerComponent,\n showCloseButton: false,\n showCancelButton: true,\n data: this.config(),\n isTextCentered: false,\n actionButtons: [\n new ButtonModel({\n text: signal({ text: 'UpDevs.Table.ColumnsManager.Apply', isTranslated: false }),\n colorStyle: signal('primary'),\n iconModel: signal({ tablerIcon: 'checks' }),\n clickFunction: () => ref.close()\n })\n ]\n });\n ref.afterClose = () => {\n const result = ref.getBodyInstance<ColumnsManagerComponent<T>>()?.columns();\n\n if (!!result) {\n const previousVisibleColumnsOrder = this.columns().map(c => c.name);\n const visibleColumnsNames = result.find(c => c.name === 'visible')?.items().map(i => i.name) || [];\n const newColumns: BaseColumnModel[] = [];\n\n this.config.update(config => {\n visibleColumnsNames.forEach(name => {\n const col = config.columns.find(c => c.name === name)!;\n col.isHidden = false;\n\n newColumns.push(col);\n });\n config.columns.forEach(c => {\n if (!visibleColumnsNames.includes(c.name)) {\n c.isHidden = true;\n newColumns.push(c);\n }\n });\n\n return { ...config, columns: [...newColumns] };\n });\n this.updateColumns(newColumns);\n\n const newVisibleColumnsOrder = newColumns.map(c => c.name);\n\n if (previousVisibleColumnsOrder.length !== newVisibleColumnsOrder.length\n || !previousVisibleColumnsOrder.every((v, i) => v === newVisibleColumnsOrder[i])) {\n this.hasSearchChanged.set(true);\n }\n }\n };\n }\n\n openSaveSearchModal(data?: SavedViewModel): void {\n data = data || {\n tableName: this.configModel().name,\n request: this.searchRequest(),\n columns: this.configModel().columns\n };\n this.modalService.open(SaveSearchComponent, { showCloseButton: false, data });\n }\n\n selectSavedView(item: DropdownItem): void {\n const savedView = this.savedViewsStorage.getById(this.configModel().name, item.id)();\n this.isSavedViewsDropdownOpen = false;\n\n if (!!savedView) {\n this.updateColumns(savedView.columns);\n this.config.update(curr => {\n curr.columns = savedView.columns;\n return { ...curr };\n });\n this.activeSavedView.set(savedView);\n this.searchRequestSubject.next({ ...savedView.request });\n }\n }\n\n resetViewState(): void {\n this.activeSavedView.set(undefined);\n this.updateColumns(this.columnsBackup);\n this.config.update(curr => {\n curr.columns = this.columnsBackup;\n return { ...curr };\n });\n this.searchRequestSubject.next({});\n }\n\n reload(): void {\n this.shouldForceSearch = true;\n this.searchRequestSubject.next({});\n }\n\n adaptCustomAction(btn: ButtonModel, item: T): ButtonModel {\n const newBtn = new ButtonModel({\n id: btn.id,\n iconModel: btn.iconModel,\n title: btn.title,\n isIcon: signal(true),\n isLink: signal(true),\n size: signal('small'),\n text: undefined,\n colorStyle: btn.colorStyle,\n isOutline: btn.isOutline\n });\n const defaultFunction = btn.clickFunction;\n newBtn.clickFunction = (evt) => {\n evt.event?.preventDefault();\n evt.event?.stopPropagation();\n\n if (!!defaultFunction) {\n defaultFunction({ event: evt.event, data: item });\n }\n };\n\n return newBtn;\n }\n\n private updateColumns(columns: BaseColumnModel[]): void {\n this.columns.set(columns.filter(c => !c.isHidden).map(c => this.createColumnModel(c)));\n }\n\n private createColumnModel(data: BaseColumnModel): BaseColumnModel {\n switch (data.type) {\n case ColumnTypeEnum.Text:\n return new TextColumnModel({ ...data });\n case ColumnTypeEnum.Number:\n return new NumberColumnModel({ ...data });\n case ColumnTypeEnum.Boolean:\n return new BooleanColumnModel({ ...data });\n case ColumnTypeEnum.DateTime:\n case ColumnTypeEnum.Date:\n case ColumnTypeEnum.Time:\n return new DateTimeColumnModel({ ...data });\n case ColumnTypeEnum.Image:\n return new ImageColumnModel({ ...data });\n case ColumnTypeEnum.Guid:\n return new GuidColumnModel({ ...data });\n case ColumnTypeEnum.Masked:\n case ColumnTypeEnum.Custom:\n case ColumnTypeEnum.Currency:\n default:\n return new BaseColumnModel(data.type, { ...data });\n }\n }\n\n private getColumnByName(columnName: string): BaseColumnModel {\n const col = this.columns().find(c => c.name === columnName);\n\n if (!col) {\n throw Error('Tried accessing non existing column');\n }\n\n return col;\n }\n\n private setupPreSelected(): void {\n this.configModel().preSelectedItems.forEach(item => {\n const id = this.getRecordId(item);\n\n if (this.data().find(d => this.getRecordId(d) === id) && !this.selectionModel().isSelected(item)) {\n this.selectionModel().select(item);\n }\n });\n }\n\n private setupSearchResults(resp: SearchResponseModel<T>): void {\n this.isSearching.set(false);\n this.currentData.set(resp.records);\n this.totalRecords.set(resp.totalRecords || 0);\n this.currentPage.set(resp.pageIndex || 0);\n this.pageSize.set(resp.pageSize || 0);\n this.setupPreSelected();\n }\n\n private getActionButtons(currentFavoriteButtons: Signal<ButtonModel[]>, savedView: SavedViewModel): ButtonModel[] {\n return [\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('primary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.MarkAsDefault', isTranslated: false }),\n isActive: signal(savedView.isDefault || false),\n iconModel: signal({ tablerIcon: 'heart' }),\n clickFunction: (evt) => {\n const btnModel = (evt.data as DropdownActionClickedModel);\n const isButtonActive = btnModel.button.isActive();\n\n if (!isButtonActive) {\n this.savedViewsStorage.resetAllIsDefault(this.configModel().name);\n }\n\n savedView.isDefault = !isButtonActive;\n\n currentFavoriteButtons().forEach(cfb => cfb.isActive.set(false));\n btnModel.button.isActive.set(!isButtonActive);\n this.savedViewsStorage.saveView(savedView);\n }\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('secondary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Duplicate', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'copy' }),\n clickFunction: () => {\n const duplicateView = {\n ...savedView,\n id: Tools.Guid.generate(),\n name: savedView.name +\n ` (${this.textService.getText({ text: 'UpDevs.Table.SavedViews.DuplicateSuffix', isTranslated: false })})`\n };\n this.openSaveSearchModal(duplicateView);\n }\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('secondary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Edit', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'edit' }),\n clickFunction: () => this.openSaveSearchModal(savedView)\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('danger'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Remove', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'x' }),\n clickFunction: () => {\n const title = this.textService.getText(\n { text: 'UpDevs.Table.SavedViews.ConfirmRemove', isTranslated: false },\n { view: savedView.name }\n );\n this.modalAlertService.showConfirm({ text: title, isTranslated: true }).subscribe(isConfirmed => {\n if (isConfirmed) {\n this.savedViewsStorage.removeViews(this.configModel().name, savedView.id!);\n }\n });\n }\n })\n ];\n }\n\n private getSavedViewOption(savedView: SavedViewModel): DropdownItem {\n const actionButtons = this.getActionButtons(this.currentFavoriteButtons, savedView);\n this.favoriteButtons.push(actionButtons.find(ab => ab.iconModel?.().tablerIcon === 'heart')!);\n\n return {\n id: savedView.id,\n type: 'with-toolbar',\n text: { text: savedView.name!, isTranslated: true },\n toolbarType: 'spaced',\n isActive: this.activeSavedView()?.id === savedView.id,\n actionButtons\n };\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().customHeaderActions.length > 0) {\n <div class=\"card-body py-3 d-flex flex-column gap-2\">\n <div class=\"ms-auto d-flex gap-2\">\n @for (btn of configModel().customHeaderActions; track btn) {\n <upd-button customClasses=\"gap-2\" [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [isSearching]=\"isSearching()\"\n [(searchRequest)]=\"searchRequest\" [searchRequestSubject]=\"searchRequestSubject\" [config]=\"configModel()\"\n [(hasChanges)]=\"hasSearchChanged\" [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\"\n [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\" colorClass=\"text-body-tertiary\"\n [tablerIconSize]=\"16\" (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n\n @if (configModel().customActions.length > 0) {\n <th class=\"custom-actions\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td [style.width.px]=\"col.pixelsSize\">\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n\n @if (configModel().customActions.length > 0) {\n <td style=\"overflow: unset\">\n <div class=\"grow-left d-flex\">\n @if (configModel().customActions.length > 1) {\n <upd-button customClasses=\"ca-item\" [iconModel]=\"{tablerIcon:'dots'}\" [isIcon]=\"true\"\n [isLink]=\"true\" size=\"small\"></upd-button>\n\n <div class=\"ca-dropdown-content rounded shadow-sm\">\n @for (btn of configModel().customActions; track btn) {\n <upd-button [model]=\"adaptCustomAction(btn, record)\"></upd-button>\n }\n </div>\n } @else {\n <upd-button [model]=\"adaptCustomAction(configModel().customActions[0], record)\">\n </upd-button>\n }\n </div>\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\"\n [(currentPage)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\"\n updPopover=\"{{ t('CurrentSavedView') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\"\n updPopover=\"{{ t('HiddenColumnsTooltip') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!hasSearchChanged()\" (clicked)=\"openSaveSearchModal()\"\n updPopover=\"{{ t('SaveCurrentView') }}\" [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isSavedViewsDropdownOpen = $event\" [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { BaseStore, DataTypeEnum } from '@updevs/sdk/stores';\nimport { Observable } from 'rxjs';\n\nimport { UpdTableConfigService } from '../upd-table-config.service';\nimport { FilterOperandConfig } from '../../models/filter-operand.config';\n\n@Injectable()\nexport class FiltersOperandsStore extends BaseStore {\n constructor(configService: UpdTableConfigService) {\n super({ baseUrl: configService.config.urlToLoadOperandsFromServer || '' });\n }\n\n load(fieldType: DataTypeEnum): Observable<FilterOperandConfig[]> {\n return this._requestService.makeGet<FilterOperandConfig[]>(this.getRequestModel(fieldType.toString()));\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\n\nconst translationKey = 'UpDevs.Table.Filters.General';\n\nexport class FilterOperandsListConfig {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterOperandEnum.Equals]: {\n operand: FilterOperandEnum.Equals,\n text: { text: `${translationKey}.Equals`, isTranslated: false },\n icon: { tablerIcon: 'equal' },\n requiresValue: true\n },\n [FilterOperandEnum.NotEquals]: {\n operand: FilterOperandEnum.NotEquals,\n text: { text: `${translationKey}.NotEquals`, isTranslated: false },\n icon: { tablerIcon: 'equal-not' },\n requiresValue: true\n },\n [FilterOperandEnum.IsEmpty]: {\n operand: FilterOperandEnum.IsEmpty,\n text: { text: `${translationKey}.IsEmpty`, isTranslated: false },\n icon: { tablerIcon: 'droplet' },\n requiresValue: false\n },\n [FilterOperandEnum.IsNotEmpty]: {\n operand: FilterOperandEnum.IsNotEmpty,\n text: { text: `${translationKey}.IsNotEmpty`, isTranslated: false },\n icon: { tablerIcon: 'droplet', tablerIconType: 'solid' },\n requiresValue: false\n }\n };\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\n\nconst translationKey = 'UpDevs.Table.Filters.String';\n\nexport class StringFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterOperandEnum.StartsWith]: {\n operand: FilterOperandEnum.StartsWith,\n text: { text: `${translationKey}.StartsWith`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain-start' },\n requiresValue: true\n },\n [FilterOperandEnum.EndsWith]: {\n operand: FilterOperandEnum.EndsWith,\n text: { text: `${translationKey}.EndsWith`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain-end' },\n requiresValue: true\n },\n [FilterOperandEnum.Contains]: {\n operand: FilterOperandEnum.Contains,\n text: { text: `${translationKey}.Contains`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain' },\n requiresValue: true\n },\n [FilterOperandEnum.NotContains]: {\n operand: FilterOperandEnum.NotContains,\n text: { text: `${translationKey}.NotContains`, isTranslated: false },\n icon: { tablerIcon: 'brackets-off' },\n requiresValue: true\n },\n [FilterOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterOperandEnum.In]: {\n operand: FilterOperandEnum.In,\n text: { text: `${translationKey}.In`, isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\n\nconst translationKey = 'UpDevs.Table.Filters.DateOrNumber';\n\nexport class DateOrNumberOperandsListConfig {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterDateOperandEnum.GreaterThan]: {\n operand: FilterDateOperandEnum.GreaterThan,\n text: { text: `${translationKey}.GreaterThan`, isTranslated: false },\n icon: { tablerIcon: 'math-greater' },\n requiresValue: true\n },\n [FilterDateOperandEnum.LessThan]: {\n operand: FilterDateOperandEnum.LessThan,\n text: { text: `${translationKey}.LessThan`, isTranslated: false },\n icon: { tablerIcon: 'math-lower' },\n requiresValue: true\n },\n [FilterDateOperandEnum.GreaterThanOrEqualTo]: {\n operand: FilterDateOperandEnum.GreaterThanOrEqualTo,\n text: { text: `${translationKey}.GreaterThanOrEqualTo`, isTranslated: false },\n icon: { tablerIcon: 'math-equal-greater' },\n requiresValue: true\n },\n [FilterDateOperandEnum.LessThanOrEqualTo]: {\n operand: FilterDateOperandEnum.LessThanOrEqualTo,\n text: { text: `${translationKey}.LessThanOrEqualTo`, isTranslated: false },\n icon: { tablerIcon: 'math-equal-lower' },\n requiresValue: true\n }\n };\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterNumberOperandEnum, FilterOperandEnum, FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { DateOrNumberOperandsListConfig } from './date-or-number-operands-list.config';\n\nexport class NumberFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterNumberOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterNumberOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterNumberOperandEnum.GreaterThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThan],\n [FilterNumberOperandEnum.LessThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThan],\n [FilterNumberOperandEnum.GreaterThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThanOrEqualTo],\n [FilterNumberOperandEnum.LessThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThanOrEqualTo],\n [FilterNumberOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterNumberOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterNumberOperandEnum.In]: {\n operand: FilterNumberOperandEnum.In,\n text: { text: 'UpDevs.Table.Filters.Number.In', isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum, FilterBooleanOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\n\nconst translationKey = 'UpDevs.Table.Filters.Boolean';\n\nexport class BooleanFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterBooleanOperandEnum.True]: {\n operand: FilterBooleanOperandEnum.True,\n text: { text: `${translationKey}.True`, isTranslated: false },\n icon: { tablerIcon: 'toggle-right' },\n requiresValue: false\n },\n [FilterBooleanOperandEnum.False]: {\n operand: FilterBooleanOperandEnum.False,\n text: { text: `${translationKey}.False`, isTranslated: false },\n icon: { tablerIcon: 'toggle-left' },\n requiresValue: false\n },\n [FilterBooleanOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterBooleanOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty]\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum, FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { DateOrNumberOperandsListConfig } from './date-or-number-operands-list.config';\n\nexport class DateFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterDateOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterDateOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterDateOperandEnum.GreaterThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThan],\n [FilterDateOperandEnum.LessThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThan],\n [FilterDateOperandEnum.GreaterThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThanOrEqualTo],\n [FilterDateOperandEnum.LessThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThanOrEqualTo],\n [FilterDateOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterDateOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterDateOperandEnum.Between]: {\n operand: FilterDateOperandEnum.Between,\n text: { text: 'UpDevs.Table.Filters.Date.Between', isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterGuidOperandEnum, FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { StringFilterOperandsListModel } from './string-filter-operands-list.model';\n\nexport class GuidFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterGuidOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterGuidOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterGuidOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterGuidOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterGuidOperandEnum.In]: StringFilterOperandsListModel.options[FilterOperandEnum.In]\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DataTypeEnum } from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\nimport { forkJoin } from 'rxjs';\n\nimport { FiltersOperandsService } from '../abstractions/filters-operands.service';\nimport { UpdTableConfigService } from './upd-table-config.service';\nimport { FilterOperandConfig } from '../models/filter-operand.config';\nimport { FiltersOperandsStore } from './stores/filters-operands.store';\nimport { StringFilterOperandsListModel } from '../models/operands-lists/string-filter-operands-list.model';\nimport { NumberFilterOperandsListModel } from '../models/operands-lists/number-filter-operands-list.model';\nimport { BooleanFilterOperandsListModel } from '../models/operands-lists/boolean-filter-operands-list.model';\nimport { DateFilterOperandsListModel } from '../models/operands-lists/date-filter-operands-list.model';\nimport { GuidFilterOperandsListModel } from '../models/operands-lists/guid-filter-operands-list.model';\n\n@Injectable()\nexport class DefaultFiltersOperandsService extends FiltersOperandsService {\n get isLoaded(): boolean {\n return this._isLoaded;\n }\n\n private _isLoaded = false;\n private readonly configService = inject(UpdTableConfigService);\n private readonly filterOperandsStore = inject(FiltersOperandsStore);\n private readonly cachedData: NonNullableDictionaryType<FilterOperandConfig[]> = {};\n\n constructor() {\n super();\n\n if (!!this.configService.config.urlToLoadOperandsFromServer) {\n forkJoin({\n guidOps: this.filterOperandsStore.load(DataTypeEnum.Guid),\n stringOps: this.filterOperandsStore.load(DataTypeEnum.String),\n numberOps: this.filterOperandsStore.load(DataTypeEnum.Number),\n dateOps: this.filterOperandsStore.load(DataTypeEnum.Date),\n booleanOps: this.filterOperandsStore.load(DataTypeEnum.Boolean)\n }).subscribe(resp => {\n this.cachedData[DataTypeEnum.Guid] = resp.guidOps;\n this.cachedData[DataTypeEnum.String] = resp.stringOps;\n this.cachedData[DataTypeEnum.Number] = resp.numberOps;\n this.cachedData[DataTypeEnum.Date] = resp.dateOps;\n this.cachedData[DataTypeEnum.Boolean] = resp.booleanOps;\n this._isLoaded = true;\n });\n } else {\n this.cachedData[DataTypeEnum.Guid] = GuidFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.String] = StringFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Number] = NumberFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Date] = DateFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Boolean] = BooleanFilterOperandsListModel.optionsAsList;\n this._isLoaded = true;\n }\n }\n\n override getOperands(type: DataTypeEnum): FilterOperandConfig[] {\n return this._isLoaded ? this.cachedData[type] : [];\n }\n\n override getAllOperands(): NonNullableDictionaryType<FilterOperandConfig[]> {\n return this.cachedData;\n }\n}\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdModalModule } from '@updevs/components/modal';\nimport { UpdPaginatorModule } from '@updevs/components/paginator';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdCheckboxModule } from '@updevs/components/form-controls/checkbox';\nimport { UpdSelectModule } from '@updevs/components/form-controls/select';\nimport { UpdTimePickerModule } from '@updevs/components/form-controls/time-picker';\nimport { UpdDragAndDropModule } from '@updevs/components/drag-and-drop';\nimport { UpdFormModule } from '@updevs/components/form';\nimport { UpdBadgeModule } from '@updevs/components/badge';\nimport { UpdPopoverModule } from '@updevs/components/popover';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from './assets/i18n/en.json';\nimport * as pt from './assets/i18n/pt.json';\nimport { TableComponent } from './table.component';\nimport { DefaultFiltersOperandsService } from './services/default-filters-operands.service';\nimport { UpdTableConfig } from './models/upd-table.config';\nimport { TableConstants } from './tools/table.constants';\nimport { FiltersOperandsService } from './abstractions/filters-operands.service';\nimport { UpdTableConfigService } from './services/upd-table-config.service';\nimport { FiltersOperandsStore } from './services/stores/filters-operands.store';\nimport { SearchSectionComponent } from './components/search-section/search-section.component';\nimport { FilterRowComponent } from './components/filter-row/filter-row.component';\nimport { TableColumnDirective } from './directives/table-column.directive';\nimport { NumberColumnComponent } from './components/columns/number-column/number-column.component';\nimport { DateTimeColumnComponent } from './components/columns/date-time-column/date-time-column.component';\nimport { BooleanColumnComponent } from './components/columns/boolean-column/boolean-column.component';\nimport { TextColumnComponent } from './components/columns/text-column/text-column.component';\nimport { ColumnsManagerComponent } from './components/columns-manager/columns-manager.component';\nimport { SaveSearchComponent } from './components/save-search/save-search.component';\nimport { SavedViewsStorage } from './services/storages/saved-views.storage';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoDirective,\n UpdIconsModule,\n UpdButtonModule,\n UpdModalModule,\n UpdPaginatorModule,\n UpdInputModule,\n UpdCheckboxModule,\n UpdSelectModule,\n UpdDragAndDropModule,\n UpdFormModule,\n UpdDropdownModule,\n UpdTimePickerModule,\n UpdBadgeModule,\n UpdPopoverModule\n ],\n declarations: [\n TableComponent,\n SearchSectionComponent,\n FilterRowComponent,\n TableColumnDirective,\n NumberColumnComponent,\n DateTimeColumnComponent,\n BooleanColumnComponent,\n TextColumnComponent,\n ColumnsManagerComponent,\n SaveSearchComponent\n ],\n exports: [\n TableComponent,\n TableColumnDirective\n ],\n providers: [\n UpdTableConfigService,\n FiltersOperandsStore,\n SavedViewsStorage\n ]\n})\nexport class UpdTableModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n\n /**\n * Sets up the table module with the provided configuration.\n * @param config Configuration.\n */\n static forRoot(config: UpdTableConfig): ModuleWithProviders<UpdTableModule> {\n const customizableProviders: Provider[] = [\n config.filtersOperandsService || {\n provide: FiltersOperandsService,\n useClass: DefaultFiltersOperandsService\n }\n ];\n\n return {\n ngModule: UpdTableModule,\n providers: [\n { provide: TableConstants.defaultOptionsInjectionToken, useValue: config },\n ...customizableProviders\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i6.FilterRowComponent","i5","i9.SearchSectionComponent","i10.TableColumnDirective","i1.UpdTableConfigService","translationKey","en","pt"],"mappings":"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"}
1
+ {"version":3,"file":"updevs-components-table.mjs","sources":["../../../../libs/components/table/src/models/enums/column-type.enum.ts","../../../../libs/components/table/src/abstractions/base.column.ts","../../../../libs/components/table/src/abstractions/base-column.model.ts","../../../../libs/components/table/src/abstractions/filters-operands.service.ts","../../../../libs/components/table/src/components/columns/text-column/text-column.component.ts","../../../../libs/components/table/src/components/columns/text-column/text-column.component.html","../../../../libs/components/table/src/components/columns/number-column/number-column.component.ts","../../../../libs/components/table/src/components/columns/number-column/number-column.component.html","../../../../libs/components/table/src/components/columns/boolean-column/boolean-column.component.ts","../../../../libs/components/table/src/components/columns/boolean-column/boolean-column.component.html","../../../../libs/components/table/src/components/columns/date-time-column/date-time-column.component.ts","../../../../libs/components/table/src/components/columns/date-time-column/date-time-column.component.html","../../../../libs/components/table/src/directives/table-column.directive.ts","../../../../libs/components/table/src/models/columns/boolean-column.model.ts","../../../../libs/components/table/src/models/columns/custom-column.model.ts","../../../../libs/components/table/src/models/columns/date-time-column.model.ts","../../../../libs/components/table/src/models/columns/text-column.model.ts","../../../../libs/components/table/src/models/columns/guid-column.model.ts","../../../../libs/components/table/src/models/columns/image-column.model.ts","../../../../libs/components/table/src/models/columns/number-column.model.ts","../../../../libs/components/table/src/models/table-config.model.ts","../../../../libs/components/table/src/components/columns-manager/columns-manager.component.ts","../../../../libs/components/table/src/components/columns-manager/columns-manager.component.html","../../../../libs/components/table/src/services/storages/saved-views.storage.ts","../../../../libs/components/table/src/components/save-search/save-search.component.ts","../../../../libs/components/table/src/components/save-search/save-search.component.html","../../../../libs/components/table/src/tools/filters.tools.ts","../../../../libs/components/table/src/tools/table.constants.ts","../../../../libs/components/table/src/models/upd-table-config.model.ts","../../../../libs/components/table/src/services/upd-table-config.service.ts","../../../../libs/components/table/src/components/filter-row/filter-row.component.ts","../../../../libs/components/table/src/components/filter-row/filter-row.component.html","../../../../libs/components/table/src/components/search-section/search-section.component.ts","../../../../libs/components/table/src/components/search-section/search-section.component.html","../../../../libs/components/table/src/table.component.ts","../../../../libs/components/table/src/table.component.html","../../../../libs/components/table/src/services/stores/filters-operands.store.ts","../../../../libs/components/table/src/models/operands-lists/filter-operands-list.config.ts","../../../../libs/components/table/src/models/operands-lists/string-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/date-or-number-operands-list.config.ts","../../../../libs/components/table/src/models/operands-lists/number-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/boolean-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/date-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/guid-filter-operands-list.model.ts","../../../../libs/components/table/src/services/default-filters-operands.service.ts","../../../../libs/components/table/src/upd-table.module.ts","../../../../libs/components/table/src/updevs-components-table.ts"],"sourcesContent":["export enum ColumnTypeEnum {\n Text = 1,\n DateTime = 2,\n Number = 3,\n Boolean = 4,\n Date = 5,\n Time = 6,\n Image = 7,\n Currency = 8,\n Custom = 9,\n Masked = 10,\n Guid = 11\n}\n","import { inject, Directive } from '@angular/core';\nimport { TextService } from '@updevs/sdk';\nimport { FontWeightType, TextAlignmentType, TextDecorationType, OverflowStrategyType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from './base-column.model';\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\n\n@Directive()\nexport abstract class BaseColumn<TConfig extends BaseColumnModel> {\n private static readonly alignmentClassMap: { [key in TextAlignmentType]: { text: string; nonText: string } } = {\n justify: { text: 'text-justify', nonText: 'justify-content-between' },\n center: { text: 'text-center', nonText: 'justify-content-center' },\n right: { text: 'text-end', nonText: 'justify-content-end' },\n left: { text: 'text-start', nonText: 'justify-content-start' }\n };\n private static readonly overflowClassMap: { [key in OverflowStrategyType]: string } = {\n 'no-wrap': 'text-nowrap',\n wrap: 'text-wrap',\n 'word-break': 'text-break',\n truncate: 'text-truncate'\n };\n private static readonly decorationClassMap: { [key in TextDecorationType]: string } = {\n underline: 'text-decoration-underline',\n strikethrough: 'text-decoration-line-through',\n none: 'text-decoration-none'\n };\n private static readonly weightClassMap: { [key in FontWeightType]: string } = {\n bold: 'fw-bold',\n bolder: 'fw-bolder',\n light: 'fw-light',\n lighter: 'fw-lighter',\n normal: 'fw-normal'\n };\n\n record!: any;\n config!: TConfig;\n get value(): any {\n return (this.record as any)[this.config.name];\n }\n get isTextType(): boolean {\n return this.config.type !== ColumnTypeEnum.Boolean\n && this.config.type !== ColumnTypeEnum.Image\n && this.config.type !== ColumnTypeEnum.Custom;\n }\n get prefix(): string {\n return this.textService.getText(this.config.prefix);\n }\n get suffix(): string {\n return this.textService.getText(this.config.suffix);\n }\n get prefixSpace(): string {\n return !!this.prefix && this.config.shouldSpaceAfterPrefix ? ' ' : '';\n }\n get suffixSpace(): string {\n return !!this.suffix && this.config.shouldSpaceBeforeSuffix ? ' ' : '';\n }\n readonly textService = inject(TextService);\n\n private get alignmentClass(): string {\n const map = BaseColumn.alignmentClassMap[this.config.alignment] || BaseColumn.alignmentClassMap['left'];\n return this.isTextType ? map.text : map.nonText;\n }\n private get overflowClass(): string {\n return BaseColumn.overflowClassMap[this.config.overflowStrategy] || 'text-truncate';\n }\n private get decorationClass(): string {\n return this.config.decoration ? BaseColumn.decorationClassMap[this.config.decoration] : '';\n }\n private get weightClass(): string {\n return BaseColumn.weightClassMap[this.config.weight] || 'fw-normal';\n }\n\n getRecordAs<T>(): T {\n return this.record as T;\n }\n\n getClasses(): string[] {\n return [\n this.alignmentClass,\n this.overflowClass,\n this.decorationClass,\n this.weightClass,\n this.config.isItalic ? 'fst-italic' : ''\n ];\n }\n}\n","import { TextModel } from '@updevs/sdk';\nimport { DataTypeEnum } from '@updevs/sdk/stores';\nimport { WidthModel } from '@updevs/sdk/layout';\nimport { OptionalType, TextAlignmentType, TextDecorationType, OverflowStrategyType, FontWeightType } from '@updevs/sdk/types';\n\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\n\nexport class BaseColumnModel {\n name!: string;\n title?: TextModel;\n titleAlignment: TextAlignmentType = 'left';\n allowSort = true;\n isItalic = false;\n type = ColumnTypeEnum.Text;\n /**\n * Width.\n */\n width?: WidthModel;\n alignment: TextAlignmentType = 'left';\n decoration?: TextDecorationType;\n weight: FontWeightType = 'normal';\n overflowStrategy: OverflowStrategyType = 'truncate';\n shouldSpaceAfterPrefix = true;\n shouldSpaceBeforeSuffix = true;\n isHidden = false;\n prefix?: TextModel;\n suffix?: TextModel;\n\n get dataType(): DataTypeEnum {\n switch (this.type) {\n case ColumnTypeEnum.Boolean:\n return DataTypeEnum.Boolean;\n case ColumnTypeEnum.DateTime:\n case ColumnTypeEnum.Date:\n case ColumnTypeEnum.Time:\n return DataTypeEnum.Date;\n case ColumnTypeEnum.Currency:\n case ColumnTypeEnum.Number:\n return DataTypeEnum.Number;\n case ColumnTypeEnum.Guid:\n return DataTypeEnum.Guid;\n default:\n return DataTypeEnum.String;\n }\n }\n\n get widthClass(): string {\n if (!this.width || !!this.width.pixels) {\n return '';\n }\n\n const prefix = !!this.width.gridColumn ? 'col' : 'w';\n const auto = !!this.width.gridColumn && this.width.gridColumn === 0 ? 'auto' : '';\n\n return `${prefix}-${auto || this.widthSize}`;\n }\n\n get widthSize(): number {\n return !this.width ? 0 : this.width.gridColumn || this.width.percentage || 0;\n }\n\n get pixelsSize(): OptionalType<number> {\n return this.width?.pixels;\n }\n\n constructor(columnType: ColumnTypeEnum, init?: Partial<BaseColumnModel>) {\n if (!!init) {\n Object.assign(this, init);\n }\n\n this.type = columnType;\n }\n}\n","import { DataTypeEnum } from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\n\nimport { FilterOperandConfig } from '../models/filter-operand.config';\n\nexport abstract class FiltersOperandsService {\n abstract get isLoaded(): boolean;\n abstract getOperands(type: DataTypeEnum): FilterOperandConfig[];\n abstract getAllOperands(): NonNullableDictionaryType<FilterOperandConfig[]>;\n}\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { TextColumnModel } from '../../../models/columns/text-column.model';\n\n@Component({\n selector: 'upd-text-column',\n templateUrl: './text-column.component.html',\n styleUrl: './text-column.component.scss'\n})\nexport class TextColumnComponent extends BaseColumn<TextColumnModel> {\n override getClasses(): string[] {\n return [\n ...super.getClasses(),\n this.transformClass\n ];\n }\n\n private get transformClass(): string {\n switch (this.config.transform) {\n case 'capitalize':\n return 'text-capitalize';\n case 'lowercase':\n return 'text-lowercase';\n case 'uppercase':\n return 'text-uppercase';\n default:\n return '';\n }\n }\n}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { NumberColumnModel } from '../../../models/columns/number-column.model';\n\n@Component({\n selector: 'upd-number-column',\n templateUrl: './number-column.component.html',\n styleUrl: './number-column.component.scss'\n})\nexport class NumberColumnComponent extends BaseColumn<NumberColumnModel> {}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | number:config.numberFormat }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { BooleanColumnModel } from '../../../models/columns/boolean-column.model';\n\n@Component({\n selector: 'upd-boolean-column',\n templateUrl: './boolean-column.component.html',\n styleUrl: './boolean-column.component.scss'\n})\nexport class BooleanColumnComponent extends BaseColumn<BooleanColumnModel> {\n override getClasses(): string[] {\n return [\n ...super.getClasses(),\n this.colorClass\n ];\n }\n\n private get colorClass(): string {\n if (!this.config.shouldColorHighlight) {\n return '';\n }\n\n return `text-${(!!this.value ? this.config.trueColor : this.config.falseColor)}`;\n }\n}\n","<div [ngClass]=\"getClasses()\">\n @switch (config.displayType) {\n @case ('text') {\n {{ prefix }}{{ prefixSpace }}{{ !!value ? textService.getText(config.trueText) : textService.getText(config.falseText) }}{{ suffixSpace }}{{ suffix }}\n }\n @case ('toggle') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [tablerIcon]=\"!!value ? 'toggle-right' : 'toggle-left'\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n @case ('icon') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [model]=\"!!value ? config.trueIcon : config.falseIcon\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n }\n</div>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { DateTimeColumnModel } from '../../../models/columns/date-time-column.model';\n\n@Component({\n selector: 'upd-date-time-column',\n templateUrl: './date-time-column.component.html',\n styleUrl: './date-time-column.component.scss'\n})\nexport class DateTimeColumnComponent extends BaseColumn<DateTimeColumnModel> {}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | date:config.dateTimeFormat }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Directive, input, inject, ViewContainerRef, effect } from '@angular/core';\nimport { DynamicComponentLoaderService } from '@updevs/sdk/layout';\nimport { ComponentType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../abstractions/base-column.model';\nimport { BaseColumn } from '../abstractions/base.column';\nimport { CustomColumnModel } from '../models/columns/custom-column.model';\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\nimport { TextColumnComponent } from '../components/columns/text-column/text-column.component';\nimport { NumberColumnComponent } from '../components/columns/number-column/number-column.component';\nimport { BooleanColumnComponent } from '../components/columns/boolean-column/boolean-column.component';\nimport { DateTimeColumnComponent } from '../components/columns/date-time-column/date-time-column.component';\n\n@Directive({\n selector: '[updTableColumn]'\n})\nexport class TableColumnDirective<TConfig extends BaseColumnModel> {\n record = input.required();\n config = input.required<TConfig>();\n\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly dynamicLoaderService = inject(DynamicComponentLoaderService);\n\n constructor() {\n effect(() => {\n const component = this.dynamicLoaderService.load(this.getComponentType(), this.viewContainerRef);\n component.instance.record = this.record();\n component.instance.config = this.config();\n });\n }\n\n getComponentType(): ComponentType<BaseColumn<TConfig>> {\n switch (this.config().type) {\n case ColumnTypeEnum.Text:\n // @ts-ignore\n return TextColumnComponent;\n case ColumnTypeEnum.Number:\n // @ts-ignore\n return NumberColumnComponent;\n case ColumnTypeEnum.Boolean:\n // @ts-ignore\n return BooleanColumnComponent;\n case ColumnTypeEnum.Date:\n case ColumnTypeEnum.DateTime:\n // @ts-ignore\n return DateTimeColumnComponent;\n case ColumnTypeEnum.Guid:\n // @ts-ignore\n return TextColumnComponent;\n case ColumnTypeEnum.Custom:\n return (this.config() as unknown as CustomColumnModel).component;\n default:\n throw Error();\n }\n }\n}\n","import { IconModel } from '@updevs/icons';\nimport { TextModel } from '@updevs/sdk';\nimport { ColorStyleType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class BooleanColumnModel extends BaseColumnModel {\n displayType: 'text' | 'toggle' | 'icon' = 'text';\n trueText: TextModel = { text: 'UpDevs.Table.Filters.Boolean.True', isTranslated: false };\n falseText: TextModel = { text: 'UpDevs.Table.Filters.Boolean.False', isTranslated: false };\n trueIcon: IconModel = { tablerIcon: 'square-check' };\n falseIcon: IconModel = { tablerIcon: 'square' };\n trueColor: ColorStyleType = 'success';\n falseColor: ColorStyleType = 'secondary';\n shouldColorHighlight = true;\n\n constructor(init?: Partial<BooleanColumnModel>) {\n super(ColumnTypeEnum.Boolean, init);\n\n if (this.displayType !== 'text') {\n this.alignment = 'center';\n }\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class CustomColumnModel extends BaseColumnModel {\n component: any;\n\n constructor(init?: Partial<CustomColumnModel>) {\n super(ColumnTypeEnum.Custom, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { DateTimeFormatEnum } from '@updevs/sdk/core';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class DateTimeColumnModel extends BaseColumnModel {\n format = DateTimeFormatEnum.ShortDate;\n customFormat?: string;\n get dateTimeFormat(): string {\n return this.customFormat || this.format;\n }\n\n constructor(init?: Partial<DateTimeColumnModel>) {\n super(ColumnTypeEnum.DateTime, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { TextTransformType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class TextColumnModel extends BaseColumnModel {\n transform?: TextTransformType;\n\n constructor(init?: Partial<TextColumnModel>) {\n super(ColumnTypeEnum.Text, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { ColumnTypeEnum } from '../enums/column-type.enum';\nimport { TextColumnModel } from './text-column.model';\n\nexport class GuidColumnModel extends TextColumnModel {\n constructor(init?: Partial<GuidColumnModel>) {\n super(init);\n\n this.transform = 'uppercase';\n\n if (!!init) {\n Object.assign(this, init);\n }\n\n this.type = ColumnTypeEnum.Guid;\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class ImageColumnModel extends BaseColumnModel {\n imageWidth?: number;\n imageHeight?: number;\n\n constructor(init?: Partial<ImageColumnModel>) {\n super(ColumnTypeEnum.Image, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class NumberColumnModel extends BaseColumnModel {\n minIntegerDigits = 1;\n minFractionDigits = 0;\n maxFractionDigits = 3;\n get numberFormat(): string {\n return `${this.minIntegerDigits}.${this.minFractionDigits}-${this.maxFractionDigits}`;\n }\n\n constructor(init?: Partial<NumberColumnModel>) {\n super(ColumnTypeEnum.Number, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { TextModel } from '@updevs/sdk';\nimport { ButtonModel } from '@updevs/sdk/layout';\nimport { BaseSearchStore } from '@updevs/sdk/stores';\nimport { GetByIdType } from '@updevs/sdk/types';\n\nimport { TableConfig } from './table.config';\nimport { BaseColumnModel } from '../abstractions/base-column.model';\n\nexport class TableConfigModel<T> implements TableConfig<T> {\n name!: string;\n store?: BaseSearchStore<T>;\n columns: BaseColumnModel[] = [];\n title?: TextModel;\n canSearch = true;\n canSaveViews = true;\n canLoadSavedViews = true;\n canManageColumns = true;\n shouldAutoSearch = true;\n hasCheckboxColumn = true;\n isResponsive = true;\n hasStickyHeader = false;\n data: T[] = [];\n preSelectedItems: T[] = [];\n searchInputDebounceTime = 300;\n /**\n * Actions added to each record row as a group of buttons.\n */\n customActions: ButtonModel[] = [];\n /**\n * Actions added to the header of the table as regular buttons.\n */\n customHeaderActions: ButtonModel[] = [];\n\n constructor(init?: TableConfig<T>) {\n if (!!init) {\n Object.assign(this, init);\n }\n }\n\n getIdFunction: GetByIdType<T> = (item: T) => (item as any).id;\n}\n","import { Component, computed, signal } from '@angular/core';\nimport { DragAndDropColumnConfig, DragAndDropColumnModel } from '@updevs/components/drag-and-drop';\nimport { BaseModal } from '@updevs/components/modal';\n\nimport { TableConfig } from '../../models/table.config';\n\n@Component({\n selector: 'upd-columns-manager',\n templateUrl: './columns-manager.component.html',\n styleUrl: './columns-manager.component.scss'\n})\nexport class ColumnsManagerComponent<T> extends BaseModal<TableConfig<T>> {\n config = computed(() => ({ columns: [this.visibleColumn(), this.hiddenColumn()], canReorder: true }));\n columns = signal<DragAndDropColumnModel[]>([]);\n\n private readonly visibleColumn = computed<DragAndDropColumnConfig>(() =>\n ({\n name: 'visible',\n title: { text: 'UpDevs.Table.VisibleColumns', isTranslated: false },\n canBeEmpty: false,\n items: this.data().columns.filter(c => !c.isHidden).map(c => ({\n name: c.name,\n text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }\n }))\n })\n );\n private readonly hiddenColumn = computed<DragAndDropColumnConfig>(() =>\n ({\n name: 'hidden',\n title: { text: 'UpDevs.Table.HiddenColumns', isTranslated: false },\n items: this.data().columns.filter(c => c.isHidden).map(c => ({\n name: c.name,\n text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }\n }))\n })\n );\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.ColumnsManager'\">\n <upd-drag-and-drop [config]=\"config()\" [(columns)]=\"columns\"></upd-drag-and-drop>\n</ng-container>\n","import { Injectable, Signal, computed } from '@angular/core';\nimport { Tools } from '@updevs/sdk/core';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { BaseByUserSignalStorage } from '@updevs/sdk/security';\n\nimport { SavedViewModel } from '../../models/saved-view.model';\n\n@Injectable()\nexport class SavedViewsStorage extends BaseByUserSignalStorage {\n private readonly lastStateKey = 'last-state';\n\n constructor() {\n super('saved-views');\n }\n\n saveView(data: SavedViewModel): void {\n data.id = data.id || Tools.Guid.generate();\n data.userId = this._loggedUserId;\n\n this.save(data, this._getUserKey(data.id, data.tableName));\n }\n\n saveLastState(data: SavedViewModel): void {\n data.id = this.lastStateKey;\n this.saveView(data);\n }\n\n getById(tableName: string, id: string): Signal<OptionalType<SavedViewModel>> {\n return this.get(this._getUserKey(id, tableName));\n }\n\n getAll(tableName: string): Signal<SavedViewModel[]> {\n return computed(() => {\n const records = this.getAllItems<SavedViewModel>();\n return records().filter(sv =>\n sv.tableName.toLowerCase() === tableName.toLowerCase()\n && sv.userId === this._loggedUserId\n && sv.id !== this.lastStateKey\n );\n });\n }\n\n getLastState(tableName: string): Signal<OptionalType<SavedViewModel>> {\n return this.getById(tableName, this.lastStateKey);\n }\n\n resetAllIsDefault(tableName: string): void {\n const savedViews = this.getAll(tableName)();\n savedViews.forEach(sv => {\n sv.isDefault = false;\n this.saveView(sv);\n });\n }\n\n removeViews(tableName: string, ...keys: string[]): void {\n super.remove(...keys.map(k => this._getUserKey(k, tableName)));\n }\n\n getByName(tableName: string, name: string): OptionalType<SavedViewModel> {\n const records = this.getAllItems<SavedViewModel>();\n return records().find(sv =>\n sv.tableName.toLowerCase() === tableName.toLowerCase()\n && sv.userId === this._loggedUserId\n && sv.name?.toLowerCase() === name?.toLowerCase()\n && sv.id !== this.lastStateKey\n );\n }\n}\n","import { Component, model, inject, OnInit } from '@angular/core';\nimport { Validators, FormGroup, ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { FormRowModel, DynamicFieldType } from '@updevs/components/form';\nimport { BaseModal } from '@updevs/components/modal';\n\nimport { SavedViewModel } from '../../models/saved-view.model';\nimport { SavedViewsStorage } from '../../services/storages/saved-views.storage';\n\n@Component({\n selector: 'upd-save-search',\n templateUrl: './save-search.component.html',\n styleUrl: './save-search.component.scss'\n})\nexport class SaveSearchComponent extends BaseModal<SavedViewModel> implements OnInit {\n formGroup = model(new FormGroup({}));\n formRows: FormRowModel[] = [];\n\n private readonly savedViewsStorage = inject(SavedViewsStorage);\n\n ngOnInit(): void {\n this.formRows = [\n {\n fields: [\n {\n name: 'name',\n type: DynamicFieldType.Input,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Table.SaveSearch.Name', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3), this.uniqueNameValidator()],\n initValue: this.data().name\n }\n ]\n },\n {\n fields: [\n {\n name: 'isDefault',\n type: DynamicFieldType.Checkbox,\n colSize: { default: 6 },\n label: { text: 'UpDevs.Table.SaveSearch.IsDefault', isTranslated: false },\n hint: { text: 'UpDevs.Table.SaveSearch.IsDefaultHint', isTranslated: false },\n hintAsTooltip: true,\n initValue: this.data().isDefault || false\n }\n ]\n }\n ];\n }\n\n cancel(): void {\n this.modalRef().close();\n }\n\n save(): void {\n const formValue = this.formGroup().value as any;\n const data = { ...this.data(), name: formValue.name, isDefault: formValue.isDefault };\n\n if (data.isDefault) {\n this.savedViewsStorage.resetAllIsDefault(this.data().tableName);\n }\n\n this.savedViewsStorage.saveView(data);\n this.modalRef().close();\n }\n\n private uniqueNameValidator = (): ValidatorFn => (control: AbstractControl): ValidationErrors | null => {\n const existingRecord = this.savedViewsStorage.getByName(this.data().tableName, control.value);\n return !!existingRecord\n ? { nameNotUnique: { errorText: { text: 'UpDevs.Table.SavedViews.NameNotUnique', isTranslated: false } } }\n // eslint-disable-next-line no-null/no-null\n : null;\n };\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.SaveSearch'\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ t('Title') }}</h5>\n </div>\n <div class=\"modal-body py-4\">\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\"></upd-form>\n </div>\n <div class=\"modal-footer\">\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"cancel()\">\n {{ t('Cancel') }}\n </upd-button>\n <upd-button colorStyle=\"primary\" [iconModel]=\"{tablerIcon:'device-floppy'}\" (clicked)=\"save()\" [isDisabled]=\"!formGroup().valid\">\n {{ t('Save') }}\n </upd-button>\n </div>\n</ng-container>\n","import {\n BaseFilter,\n DataTypeEnum,\n BooleanColumnFilter,\n FilterBooleanOperandEnum,\n DateColumnFilter,\n FilterDateOperandEnum,\n NumberColumnFilter,\n FilterNumberOperandEnum,\n GuidColumnFilter,\n FilterOperandEnum,\n StringColumnFilter\n} from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\n\nimport { FilterItemModel } from '../models/filter-item.model';\nimport { BaseColumnModel } from '../abstractions/base-column.model';\nimport { FilterOperandConfig } from '../models/filter-operand.config';\n\nexport class FilterTools {\n static convertToFilterItem(filters: BaseFilter[], operands: NonNullableDictionaryType<FilterOperandConfig[]>): FilterItemModel[] {\n return filters.map(f => ({\n name: f.column,\n value: f.value,\n operandConfig: operands[f.dataType].find(op => op.operand === f.operand),\n isHidden: f.isHidden\n }));\n }\n\n static convertToRequestFilter(filters: FilterItemModel[], columns: BaseColumnModel[]): BaseFilter[] {\n return filters.map(af => {\n const col = columns.find(c => c.name === af.name);\n\n switch (col?.dataType) {\n case DataTypeEnum.Boolean:\n return new BooleanColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterBooleanOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n case DataTypeEnum.Date:\n return new DateColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterDateOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n case DataTypeEnum.Number:\n return new NumberColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterNumberOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n case DataTypeEnum.Guid:\n return new GuidColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n default:\n return new StringColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterOperandEnum>af.operandConfig.operand : undefined,\n isHidden: af.isHidden\n });\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { UpdTableConfig } from '../models/upd-table.config';\n\n/**\n * Table constants.\n */\nexport class TableConstants {\n /**\n * Key to inject the default configuration.\n */\n static defaultOptionsKey = 'upd-table-default-options';\n\n /**\n * Injection token for the default configuration.\n */\n static defaultOptionsInjectionToken = new InjectionToken<UpdTableConfig>(TableConstants.defaultOptionsKey);\n}\n","import { UpdTableConfig } from './upd-table.config';\n\nexport class UpdTableConfigModel implements UpdTableConfig {\n shouldLoadFieldsFromServer = false;\n urlToLoadOperandsFromServer?: string;\n\n constructor(init?: UpdTableConfig) {\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { TableConstants } from '../tools/table.constants';\nimport { UpdTableConfig } from '../models/upd-table.config';\nimport { UpdTableConfigModel } from '../models/upd-table-config.model';\n\n@Injectable()\nexport class UpdTableConfigService {\n /**\n * Configuration (See: #upsee[p:models, i:UpdTableConfigModel]).\n */\n readonly config: UpdTableConfigModel;\n\n constructor(@Inject(TableConstants.defaultOptionsInjectionToken) layoutConfig: UpdTableConfig) {\n this.config = new UpdTableConfigModel(layoutConfig);\n }\n}\n","import { Component, signal, inject, OnInit, input, model, HostBinding, Output, EventEmitter } from '@angular/core';\nimport { TextService } from '@updevs/sdk';\nimport { BaseSearchStore, DataTypeEnum } from '@updevs/sdk/stores';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { SelectItem } from '@updevs/components/form-controls/select';\nimport { BaseComponent } from '@updevs/sdk/layout';\n\nimport { UpdTableConfigService } from '../../services/upd-table-config.service';\nimport { FiltersOperandsService } from '../../abstractions/filters-operands.service';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { FilterOperandConfig } from '../../models/filter-operand.config';\n\n@Component({\n selector: 'upd-filter-row',\n templateUrl: './filter-row.component.html',\n styleUrl: './filter-row.component.scss'\n})\nexport class FilterRowComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = 'd-flex gap-2';\n\n @Output() readonly removed: EventEmitter<void> = new EventEmitter();\n\n DataTypeEnum = DataTypeEnum;\n\n activeFilters = model.required<FilterItemModel[]>();\n rowIndex = input.required<number>();\n columns = input.required<BaseColumnModel[]>();\n isDisabled = input.required<boolean>();\n store = input<BaseSearchStore>();\n currentFilter = input<FilterItemModel>();\n currentField = signal<OptionalType<SelectItem>>(undefined);\n currentOperand = signal<OptionalType<FilterOperandConfig>>(undefined);\n fieldsOptions = signal<SelectItem[]>([]);\n comparisonOperatorOptions = signal<SelectItem[]>([]);\n isValueSectionEnabled = signal<boolean>(true);\n\n get fieldType(): DataTypeEnum {\n return this.currentField()?.objectData || DataTypeEnum.String;\n }\n get selectedField(): OptionalType<SelectItem> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name\n ? this.fieldsOptions().find(f => f.value === currentFilter.name)\n : undefined;\n }\n get selectedOperand(): OptionalType<SelectItem> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name\n ? this.comparisonOperatorOptions().find(co => co.value === currentFilter.operandConfig?.operand)\n : undefined;\n }\n get selectedValue(): OptionalType<any> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name ? currentFilter.value : undefined;\n }\n\n private currentOperands: FilterOperandConfig[] = [];\n private readonly configService = inject(UpdTableConfigService);\n private readonly filtersOperandsService = inject(FiltersOperandsService);\n private readonly textService = inject(TextService);\n\n ngOnInit(): void {\n if (!!this.store() && this.configService.config.shouldLoadFieldsFromServer) {\n this.store()!.getFilterableFields().subscribe(fields =>\n this.fieldsOptions.set(fields.map(f => ({ value: f.name!, text: f.description!, objectData: f.type })))\n );\n } else {\n this.fieldsOptions.set(\n this.columns().filter(c => !!c.title).map(c =>\n ({ value: c.name, text: this.textService.getText(c.title), objectData: c.dataType }))\n );\n }\n\n if (!!this.selectedField) {\n if (!!this.selectedOperand) {\n this.onSelectOperand(this.selectedOperand);\n }\n\n this.onSelectField(this.selectedField);\n }\n }\n\n onSelectField(item?: SelectItem): void {\n this.currentField.set(item);\n\n const dataType = item?.objectData;\n\n if (!!dataType) {\n this.currentOperands = this.filtersOperandsService.getOperands(dataType);\n this.comparisonOperatorOptions.set(\n this.currentOperands.map(o => ({ value: o.operand, text: this.textService.getText(o.text), listItem: { icon: o.icon } }))\n );\n } else {\n this.comparisonOperatorOptions.set([]);\n }\n\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].name = this.currentField()?.value;\n return [...curr];\n });\n }\n\n onSelectOperand(item?: SelectItem): void {\n this.currentOperand.set(this.currentOperands.find(co => co.operand === item?.value));\n this.isValueSectionEnabled.set(!!this.currentOperand()?.requiresValue);\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].operandConfig = this.currentOperand();\n return [...curr];\n });\n }\n\n updateValue(value?: any): void {\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].value = value;\n return [...curr];\n });\n }\n\n removeFilterItem(): void {\n this.activeFilters.update(curr => {\n curr.splice(this.rowIndex(), 1);\n return [...curr];\n });\n this.removed.emit();\n }\n}\n","<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [value]=\"selectedField\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\" (selectedItem)=\"onSelectOperand($event)\"\n [value]=\"selectedOperand\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (DataTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (DataTypeEnum.Date) {\n\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>","import { Component, input, TemplateRef, HostBinding, signal, computed, model, OnInit, effect, inject } from '@angular/core';\nimport { SearchRequestModel } from '@updevs/sdk/stores';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { OptionalType, BgColorStyleType } from '@updevs/sdk/types';\nimport { BadgeConfig } from '@updevs/components/badge';\nimport { Subject, distinctUntilChanged, debounceTime } from 'rxjs';\n\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { TableConfigModel } from '../../models/table-config.model';\nimport { FilterTools } from '../../tools/filters.tools';\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { FiltersOperandsService } from '../../abstractions/filters-operands.service';\n\n@Component({\n selector: 'upd-search-section',\n templateUrl: './search-section.component.html',\n styleUrl: './search-section.component.scss'\n})\nexport class SearchSectionComponent<T> extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClass = 'card-body border-bottom py-3 d-flex flex-column gap-2';\n\n readonly searchRequest = model.required<SearchRequestModel>();\n readonly hasChanges = model.required<boolean>();\n readonly columns = input.required<BaseColumnModel[]>();\n readonly isSearching = input.required<boolean>();\n readonly searchRequestSubject = input.required<Subject<SearchRequestModel>>();\n readonly config = input.required<TableConfigModel<T>>();\n readonly actionsTpl = input<TemplateRef<any>>();\n readonly activeFilters = signal<FilterItemModel[]>([]);\n readonly isFilterSectionOpen = signal(false);\n readonly canApplyFilters = computed(() => this.activeFilters().length > 0\n && this.activeFilters().every(af =>\n !af.isHidden && !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value)\n )\n );\n readonly visibleFiltersCount = computed(() => this.searchRequest().filters?.filter(af => !af.isHidden).length || 0);\n readonly canPerformActions = computed(() => this.canApplyFilters() && !this.isSearching());\n readonly badgeConfig = computed<OptionalType<BadgeConfig>>(() =>\n this.visibleFiltersCount() > 0\n ? ({\n isNotification: true,\n isPill: true,\n bgColor: 'primary-lt',\n text: { text: this.visibleFiltersCount().toString(), isTranslated: true }\n })\n : undefined\n );\n readonly filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? <BgColorStyleType>'primary' : undefined);\n readonly searchSubject = new Subject<string>();\n\n private readonly filtersOperandsService = inject(FiltersOperandsService);\n\n constructor() {\n super();\n\n effect(() => {\n if (this.visibleFiltersCount() > 0) {\n this.activeFilters.set(\n [...FilterTools.convertToFilterItem(this.searchRequest().filters?.filter(af => !af.isHidden) || [], this.filtersOperandsService.getAllOperands())]\n );\n } else {\n this.activeFilters.set([]);\n this.isFilterSectionOpen.set(false);\n }\n }, { allowSignalWrites: true });\n }\n\n ngOnInit(): void {\n const searchSub = this.searchSubject\n .pipe(\n distinctUntilChanged(),\n debounceTime(this.config().searchInputDebounceTime)\n )\n .subscribe(term =>\n this.searchRequestSubject().next({\n ...this.searchRequest(),\n description: term\n })\n );\n\n this.addSubscriptions(searchSub);\n }\n\n search(): void {\n this.searchRequestSubject().next({\n ...this.searchRequest(),\n filters: FilterTools.convertToRequestFilter(this.activeFilters(), this.config().columns)\n });\n }\n\n toggleFilterSection(): void {\n if (this.activeFilters().length === 0) {\n this.addEmptyFilterRow();\n }\n\n this.isFilterSectionOpen.update(isOpen => !isOpen);\n }\n\n onRowRemoved(): void {\n if (this.activeFilters().length === 0) {\n this.isFilterSectionOpen.set(false);\n }\n\n this.search();\n }\n\n addEmptyFilterRow(): void {\n this.activeFilters.update(curr => {\n curr.push({});\n return [...curr];\n });\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\" [isAppendButton]=\"true\"\n (valueChange)=\"searchSubject.next($event)\" [value]=\"searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [(activeFilters)]=\"activeFilters\" [columns]=\"columns()\"\n [rowIndex]=\"i\" (removed)=\"onRowRemoved()\" [isDisabled]=\"isSearching()\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\" (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>\n","import { Component, inject, signal, computed, effect, OnInit, Signal, model, ElementRef, viewChild } from '@angular/core';\nimport { TablerIconsType } from '@updevs/icons';\nimport { TextService } from '@updevs/sdk';\nimport { SelectionModel, Tools, ServerResponseService } from '@updevs/sdk/core';\nimport { OptionalType, ButtonSizeType } from '@updevs/sdk/types';\nimport { BaseComponent, ButtonModel } from '@updevs/sdk/layout';\nimport { SearchRequestModel, BaseSearchStore, ColumnSort, SortDirectionEnum, SearchResponseModel } from '@updevs/sdk/stores';\nimport { ModalService, ModalRef, ModalAlertService } from '@updevs/components/modal';\nimport { DropdownItem, DropdownActionClickedModel } from '@updevs/components/dropdown';\nimport { distinctUntilChanged, tap, switchMap, finalize, Subject, catchError, of } from 'rxjs';\n\nimport { BooleanColumnModel } from './models/columns/boolean-column.model';\nimport { DateTimeColumnModel } from './models/columns/date-time-column.model';\nimport { GuidColumnModel } from './models/columns/guid-column.model';\nimport { ImageColumnModel } from './models/columns/image-column.model';\nimport { NumberColumnModel } from './models/columns/number-column.model';\nimport { TextColumnModel } from './models/columns/text-column.model';\nimport { ColumnTypeEnum } from './models/enums/column-type.enum';\nimport { TableConfig } from './models/table.config';\nimport { TableConfigModel } from './models/table-config.model';\nimport { BaseColumnModel } from './abstractions/base-column.model';\nimport { FilterItemModel } from './models/filter-item.model';\nimport { ColumnsManagerComponent } from './components/columns-manager/columns-manager.component';\nimport { SaveSearchComponent } from './components/save-search/save-search.component';\nimport { SavedViewModel } from './models/saved-view.model';\nimport { SavedViewsStorage } from './services/storages/saved-views.storage';\n\nimport Utils = Tools.Utils;\n\n@Component({\n selector: 'upd-table',\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss'\n})\nexport class TableComponent<T> extends BaseComponent implements OnInit {\n savedViewsRef = viewChild('savedViewsBtn', { read: ElementRef });\n config = model.required<TableConfig<T>>();\n isSearching = signal<boolean>(false);\n selectedItems = computed<T[]>(() => this.selectionModel().selected());\n activeSavedView = signal<OptionalType<SavedViewModel>>(undefined);\n isMainCheckboxChecked = false;\n isMainCheckboxIndeterminate = false;\n isSavedViewsDropdownOpen = false;\n\n get numberOfColumns(): number {\n return this.columns().length\n + (this.configModel().hasCheckboxColumn ? 1 : 0)\n + (this.configModel().customActions.length > 0 ? 1 : 0)\n + (!!this.pendingWidthColClass ? 1 : 0);\n }\n get hasWidth(): boolean {\n return this.columns().some(rec => !!rec.width);\n }\n get pendingWidthColClass(): string {\n if (!this.hasWidth || this.isWidthInPixels) {\n return '';\n }\n\n const isGrid = this.columns().some(rec => !!rec.width?.gridColumn);\n const total = isGrid ? 12 : 100;\n const remainingSize = total - this.columns().reduce((acc, item) => acc + item.widthSize, 0);\n\n // TODO: add spaces of checkbox and customactions columns\n\n return remainingSize > 0 ? `${(isGrid ? 'col' : 'w')}-${remainingSize}` : '';\n }\n get isWidthInPixels(): boolean {\n return this.columns().some(rec => !!rec.width?.pixels);\n }\n\n readonly searchRequest = model<SearchRequestModel>({});\n readonly activeFilters = model<FilterItemModel[]>([]);\n readonly currentPage = model<number>(1);\n readonly pageSize = model<number>(0);\n readonly hasSearchChanged = signal(false);\n readonly totalRecords = signal<number>(0);\n readonly configModel = computed(() => new TableConfigModel(this.config()));\n readonly data: Signal<T[]> = computed(() => this.configModel().data.length > 0 ? this.configModel().data : this.currentData());\n readonly selectionModel = computed(() => new SelectionModel<T>(this.configModel().getIdFunction));\n readonly currentSorting = signal<OptionalType<ColumnSort>>(undefined);\n readonly hiddenColumns = computed(() =>\n this.configModel().canManageColumns ? this.configModel().columns.filter(c => c.isHidden).length : 0\n );\n readonly columns = signal<BaseColumnModel[]>([]);\n readonly searchRequestSubject = new Subject<SearchRequestModel>();\n readonly textService = inject(TextService);\n readonly savedViewsOptions = computed<DropdownItem[]>(() => {\n const allSavedViewsOptions: DropdownItem[] = [];\n this.allSavedViews().forEach(sv => allSavedViewsOptions.push(this.getSavedViewOption(sv)));\n\n return allSavedViewsOptions;\n });\n\n private get isRemote(): boolean {\n return !!this.configModel().store;\n }\n private get store(): BaseSearchStore<T> {\n return this.configModel().store!;\n }\n private shouldForceSearch = false;\n private columnsBackup: BaseColumnModel[] = [];\n\n private readonly currentData = signal<T[]>([]);\n private readonly currentFavoriteButtons = computed<ButtonModel[]>(() => this.favoriteButtons);\n private readonly smallSizeSignal = signal<ButtonSizeType>('small');\n private readonly allSavedViews = computed(() => this.savedViewsStorage.getAll(this.configModel().name)());\n private readonly favoriteButtons: ButtonModel[] = [];\n private readonly serverResponseService = inject(ServerResponseService);\n private readonly savedViewsStorage = inject(SavedViewsStorage);\n private readonly modalService = inject(ModalService);\n private readonly modalAlertService = inject(ModalAlertService);\n\n constructor() {\n super();\n\n effect(() => {\n if (this.data().length > 0 && this.configModel().data.length > 0) {\n this.setupPreSelected();\n }\n\n if (this.selectedItems().length > 0) {\n if (this.selectedItems().length !== this.data().length) {\n this.isMainCheckboxChecked = false;\n this.isMainCheckboxIndeterminate = true;\n } else {\n this.isMainCheckboxIndeterminate = false;\n this.isMainCheckboxChecked = true;\n }\n } else {\n this.isMainCheckboxChecked = false;\n this.isMainCheckboxIndeterminate = false;\n }\n });\n }\n\n ngOnInit(): void {\n this.columnsBackup = [...this.config().columns];\n const searchSubjectSub = this.searchRequestSubject\n .pipe(\n distinctUntilChanged((prev, curr) => !this.shouldForceSearch ? Utils.areEqual(prev, curr) : false),\n tap((request) => {\n this.isSearching.set(true);\n this.currentData.set([]);\n this.searchRequest.set(request);\n\n if (\n (request.filters?.length || 0) > 0\n || (request.description || '').length > 0\n || (request.sortings?.length || 0) > 0\n ) {\n this.hasSearchChanged.set(true);\n }\n }),\n switchMap(() =>\n this.store.search(this.searchRequest()).pipe(\n catchError(() => of()) // Already handled by the ServerResponseService.\n )\n ),\n finalize(() => this.shouldForceSearch = false)\n )\n .subscribe(resp => this.setupSearchResults(resp));\n const serverResponseSub = this.serverResponseService.onError.subscribe(error => {\n if (!!error) {\n this.isSearching.set(false);\n }\n });\n\n if (this.configModel().shouldAutoSearch && this.isRemote) {\n this.shouldForceSearch = true;\n this.searchRequestSubject.next({});\n }\n\n this.updateColumns(this.configModel().columns);\n this.addSubscriptions(searchSubjectSub, serverResponseSub);\n }\n\n toggleAllSelection(isChecked: boolean): void {\n if (isChecked) {\n this.selectionModel().select(...this.currentData());\n } else {\n this.selectionModel().clearSelection();\n }\n }\n\n toggleItemSelection(record: T): void {\n if (this.selectionModel().isSelected(record)) {\n this.selectionModel().deselect(record);\n } else {\n this.selectionModel().select(record);\n }\n }\n\n canSortColumn(columnName: string): boolean {\n return this.getColumnByName(columnName).allowSort;\n }\n\n sortByColumn(columnName: string): void {\n const currentSort = this.currentSorting();\n\n const nextDirection = (currentSort?.column === columnName && currentSort.direction === SortDirectionEnum.Asc)\n ? SortDirectionEnum.Desc\n : SortDirectionEnum.Asc;\n\n this.currentSorting.set(new ColumnSort({\n column: columnName,\n direction: nextDirection\n }));\n\n if (this.isRemote) {\n this.searchRequest.set({\n ...this.searchRequest(),\n sortings: [this.currentSorting()!]\n });\n this.searchRequestSubject.next(this.searchRequest());\n } else {\n const col = this.getColumnByName(columnName);\n // TODO: local sort\n }\n }\n\n getSortingIcon(columnName: string): TablerIconsType {\n return !!this.currentSorting() && this.currentSorting()!.column === columnName\n ? (this.currentSorting()!.direction === SortDirectionEnum.Asc ? 'sort-ascending' : 'sort-descending')\n : 'arrows-sort';\n }\n\n onPageSettingsChanged(): void {\n this.searchRequest.set({\n ...this.searchRequest(),\n pageSize: this.pageSize(),\n pageIndex: this.currentPage()\n });\n this.searchRequestSubject.next(this.searchRequest());\n }\n\n getRecordId(record: T): any {\n return this.configModel().getIdFunction(record);\n }\n\n openColumnsManagerModal(): void {\n const ref: ModalRef = this.modalService.open(undefined, {\n bodyContentType: ColumnsManagerComponent,\n showCloseButton: false,\n showCancelButton: true,\n data: this.config(),\n isTextCentered: false,\n actionButtons: [\n new ButtonModel({\n text: signal({ text: 'UpDevs.Table.ColumnsManager.Apply', isTranslated: false }),\n colorStyle: signal('primary'),\n iconModel: signal({ tablerIcon: 'checks' }),\n clickFunction: () => ref.close()\n })\n ]\n });\n ref.afterClose = () => {\n const result = ref.getBodyInstance<ColumnsManagerComponent<T>>()?.columns();\n\n if (!!result) {\n const previousVisibleColumnsOrder = this.columns().map(c => c.name);\n const visibleColumnsNames = result.find(c => c.name === 'visible')?.items().map(i => i.name) || [];\n const newColumns: BaseColumnModel[] = [];\n\n this.config.update(config => {\n visibleColumnsNames.forEach(name => {\n const col = config.columns.find(c => c.name === name)!;\n col.isHidden = false;\n\n newColumns.push(col);\n });\n config.columns.forEach(c => {\n if (!visibleColumnsNames.includes(c.name)) {\n c.isHidden = true;\n newColumns.push(c);\n }\n });\n\n return { ...config, columns: [...newColumns] };\n });\n this.updateColumns(newColumns);\n\n const newVisibleColumnsOrder = newColumns.map(c => c.name);\n\n if (previousVisibleColumnsOrder.length !== newVisibleColumnsOrder.length\n || !previousVisibleColumnsOrder.every((v, i) => v === newVisibleColumnsOrder[i])) {\n this.hasSearchChanged.set(true);\n }\n }\n };\n }\n\n openSaveSearchModal(data?: SavedViewModel): void {\n data = data || {\n tableName: this.configModel().name,\n request: this.searchRequest(),\n columns: this.configModel().columns\n };\n this.modalService.open(SaveSearchComponent, { showCloseButton: false, data });\n }\n\n selectSavedView(item: DropdownItem): void {\n const savedView = this.savedViewsStorage.getById(this.configModel().name, item.id)();\n this.isSavedViewsDropdownOpen = false;\n\n if (!!savedView) {\n this.updateColumns(savedView.columns);\n this.config.update(curr => {\n curr.columns = savedView.columns;\n return { ...curr };\n });\n this.activeSavedView.set(savedView);\n this.searchRequestSubject.next({ ...savedView.request });\n }\n }\n\n resetViewState(): void {\n this.activeSavedView.set(undefined);\n this.updateColumns(this.columnsBackup);\n this.config.update(curr => {\n curr.columns = this.columnsBackup;\n return { ...curr };\n });\n this.searchRequestSubject.next({});\n }\n\n reload(): void {\n this.shouldForceSearch = true;\n this.searchRequestSubject.next({});\n }\n\n adaptCustomAction(btn: ButtonModel, item: T): ButtonModel {\n const newBtn = new ButtonModel({\n id: btn.id,\n iconModel: btn.iconModel,\n title: btn.title,\n isIcon: signal(true),\n isLink: signal(true),\n size: signal('small'),\n text: undefined,\n colorStyle: btn.colorStyle,\n isOutline: btn.isOutline\n });\n const defaultFunction = btn.clickFunction;\n newBtn.clickFunction = (evt) => {\n evt.event?.preventDefault();\n evt.event?.stopPropagation();\n\n if (!!defaultFunction) {\n defaultFunction({ event: evt.event, data: item });\n }\n };\n\n return newBtn;\n }\n\n private updateColumns(columns: BaseColumnModel[]): void {\n this.columns.set(columns.filter(c => !c.isHidden).map(c => this.createColumnModel(c)));\n }\n\n private createColumnModel(data: BaseColumnModel): BaseColumnModel {\n switch (data.type) {\n case ColumnTypeEnum.Text:\n return new TextColumnModel({ ...data });\n case ColumnTypeEnum.Number:\n return new NumberColumnModel({ ...data });\n case ColumnTypeEnum.Boolean:\n return new BooleanColumnModel({ ...data });\n case ColumnTypeEnum.DateTime:\n case ColumnTypeEnum.Date:\n case ColumnTypeEnum.Time:\n return new DateTimeColumnModel({ ...data });\n case ColumnTypeEnum.Image:\n return new ImageColumnModel({ ...data });\n case ColumnTypeEnum.Guid:\n return new GuidColumnModel({ ...data });\n case ColumnTypeEnum.Masked:\n case ColumnTypeEnum.Custom:\n case ColumnTypeEnum.Currency:\n default:\n return new BaseColumnModel(data.type, { ...data });\n }\n }\n\n private getColumnByName(columnName: string): BaseColumnModel {\n const col = this.columns().find(c => c.name === columnName);\n\n if (!col) {\n throw Error('Tried accessing non existing column');\n }\n\n return col;\n }\n\n private setupPreSelected(): void {\n this.configModel().preSelectedItems.forEach(item => {\n const id = this.getRecordId(item);\n\n if (this.data().find(d => this.getRecordId(d) === id) && !this.selectionModel().isSelected(item)) {\n this.selectionModel().select(item);\n }\n });\n }\n\n private setupSearchResults(resp: SearchResponseModel<T>): void {\n this.isSearching.set(false);\n this.currentData.set(resp.records);\n this.totalRecords.set(resp.totalRecords || 0);\n this.currentPage.set(resp.pageIndex || 0);\n this.pageSize.set(resp.pageSize || 0);\n this.setupPreSelected();\n }\n\n private getActionButtons(currentFavoriteButtons: Signal<ButtonModel[]>, savedView: SavedViewModel): ButtonModel[] {\n return [\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('primary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.MarkAsDefault', isTranslated: false }),\n isActive: signal(savedView.isDefault || false),\n iconModel: signal({ tablerIcon: 'heart' }),\n clickFunction: (evt) => {\n const btnModel = (evt.data as DropdownActionClickedModel);\n const isButtonActive = btnModel.button.isActive();\n\n if (!isButtonActive) {\n this.savedViewsStorage.resetAllIsDefault(this.configModel().name);\n }\n\n savedView.isDefault = !isButtonActive;\n\n currentFavoriteButtons().forEach(cfb => cfb.isActive.set(false));\n btnModel.button.isActive.set(!isButtonActive);\n this.savedViewsStorage.saveView(savedView);\n }\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('secondary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Duplicate', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'copy' }),\n clickFunction: () => {\n const duplicateView = {\n ...savedView,\n id: Tools.Guid.generate(),\n name: savedView.name +\n ` (${this.textService.getText({ text: 'UpDevs.Table.SavedViews.DuplicateSuffix', isTranslated: false })})`\n };\n this.openSaveSearchModal(duplicateView);\n }\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('secondary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Edit', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'edit' }),\n clickFunction: () => this.openSaveSearchModal(savedView)\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('danger'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Remove', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'x' }),\n clickFunction: () => {\n const title = this.textService.getText(\n { text: 'UpDevs.Table.SavedViews.ConfirmRemove', isTranslated: false },\n { view: savedView.name }\n );\n this.modalAlertService.showConfirm({ text: title, isTranslated: true }).subscribe(isConfirmed => {\n if (isConfirmed) {\n this.savedViewsStorage.removeViews(this.configModel().name, savedView.id!);\n }\n });\n }\n })\n ];\n }\n\n private getSavedViewOption(savedView: SavedViewModel): DropdownItem {\n const actionButtons = this.getActionButtons(this.currentFavoriteButtons, savedView);\n this.favoriteButtons.push(actionButtons.find(ab => ab.iconModel?.().tablerIcon === 'heart')!);\n\n return {\n id: savedView.id,\n type: 'with-toolbar',\n text: { text: savedView.name!, isTranslated: true },\n toolbarType: 'spaced',\n isActive: this.activeSavedView()?.id === savedView.id,\n actionButtons\n };\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().customHeaderActions.length > 0) {\n <div class=\"card-body py-3 d-flex flex-column gap-2\">\n <div class=\"ms-auto d-flex gap-2\">\n @for (btn of configModel().customHeaderActions; track btn) {\n <upd-button customClasses=\"gap-2\" [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [isSearching]=\"isSearching()\"\n [(searchRequest)]=\"searchRequest\" [searchRequestSubject]=\"searchRequestSubject\" [config]=\"configModel()\"\n [(hasChanges)]=\"hasSearchChanged\" [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\"\n [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\" colorClass=\"text-body-tertiary\"\n [tablerIconSize]=\"16\" (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n\n @if (configModel().customActions.length > 0) {\n <th class=\"custom-actions\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td [style.width.px]=\"col.pixelsSize\">\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n\n @if (configModel().customActions.length > 0) {\n <td style=\"overflow: unset\">\n <div class=\"grow-left d-flex\">\n @if (configModel().customActions.length > 1) {\n <upd-button customClasses=\"ca-item\" [iconModel]=\"{tablerIcon:'dots'}\" [isIcon]=\"true\"\n [isLink]=\"true\" size=\"small\"></upd-button>\n\n <div class=\"ca-dropdown-content rounded shadow-sm\">\n @for (btn of configModel().customActions; track btn) {\n <upd-button [model]=\"adaptCustomAction(btn, record)\"></upd-button>\n }\n </div>\n } @else {\n <upd-button [model]=\"adaptCustomAction(configModel().customActions[0], record)\">\n </upd-button>\n }\n </div>\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\"\n [(currentPage)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\"\n updPopover=\"{{ t('CurrentSavedView') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\"\n updPopover=\"{{ t('HiddenColumnsTooltip') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!hasSearchChanged()\" (clicked)=\"openSaveSearchModal()\"\n updPopover=\"{{ t('SaveCurrentView') }}\" [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isSavedViewsDropdownOpen = $event\" [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { BaseStore, DataTypeEnum } from '@updevs/sdk/stores';\nimport { Observable } from 'rxjs';\n\nimport { UpdTableConfigService } from '../upd-table-config.service';\nimport { FilterOperandConfig } from '../../models/filter-operand.config';\n\n@Injectable()\nexport class FiltersOperandsStore extends BaseStore {\n constructor(configService: UpdTableConfigService) {\n super({ baseUrl: configService.config.urlToLoadOperandsFromServer || '' });\n }\n\n load(fieldType: DataTypeEnum): Observable<FilterOperandConfig[]> {\n return this._requestService.makeGet<FilterOperandConfig[]>(this.getRequestModel(fieldType.toString()));\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\n\nconst translationKey = 'UpDevs.Table.Filters.General';\n\nexport class FilterOperandsListConfig {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterOperandEnum.Equals]: {\n operand: FilterOperandEnum.Equals,\n text: { text: `${translationKey}.Equals`, isTranslated: false },\n icon: { tablerIcon: 'equal' },\n requiresValue: true\n },\n [FilterOperandEnum.NotEquals]: {\n operand: FilterOperandEnum.NotEquals,\n text: { text: `${translationKey}.NotEquals`, isTranslated: false },\n icon: { tablerIcon: 'equal-not' },\n requiresValue: true\n },\n [FilterOperandEnum.IsEmpty]: {\n operand: FilterOperandEnum.IsEmpty,\n text: { text: `${translationKey}.IsEmpty`, isTranslated: false },\n icon: { tablerIcon: 'droplet' },\n requiresValue: false\n },\n [FilterOperandEnum.IsNotEmpty]: {\n operand: FilterOperandEnum.IsNotEmpty,\n text: { text: `${translationKey}.IsNotEmpty`, isTranslated: false },\n icon: { tablerIcon: 'droplet', tablerIconType: 'solid' },\n requiresValue: false\n }\n };\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\n\nconst translationKey = 'UpDevs.Table.Filters.String';\n\nexport class StringFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterOperandEnum.StartsWith]: {\n operand: FilterOperandEnum.StartsWith,\n text: { text: `${translationKey}.StartsWith`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain-start' },\n requiresValue: true\n },\n [FilterOperandEnum.EndsWith]: {\n operand: FilterOperandEnum.EndsWith,\n text: { text: `${translationKey}.EndsWith`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain-end' },\n requiresValue: true\n },\n [FilterOperandEnum.Contains]: {\n operand: FilterOperandEnum.Contains,\n text: { text: `${translationKey}.Contains`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain' },\n requiresValue: true\n },\n [FilterOperandEnum.NotContains]: {\n operand: FilterOperandEnum.NotContains,\n text: { text: `${translationKey}.NotContains`, isTranslated: false },\n icon: { tablerIcon: 'brackets-off' },\n requiresValue: true\n },\n [FilterOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterOperandEnum.In]: {\n operand: FilterOperandEnum.In,\n text: { text: `${translationKey}.In`, isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\n\nconst translationKey = 'UpDevs.Table.Filters.DateOrNumber';\n\nexport class DateOrNumberOperandsListConfig {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterDateOperandEnum.GreaterThan]: {\n operand: FilterDateOperandEnum.GreaterThan,\n text: { text: `${translationKey}.GreaterThan`, isTranslated: false },\n icon: { tablerIcon: 'math-greater' },\n requiresValue: true\n },\n [FilterDateOperandEnum.LessThan]: {\n operand: FilterDateOperandEnum.LessThan,\n text: { text: `${translationKey}.LessThan`, isTranslated: false },\n icon: { tablerIcon: 'math-lower' },\n requiresValue: true\n },\n [FilterDateOperandEnum.GreaterThanOrEqualTo]: {\n operand: FilterDateOperandEnum.GreaterThanOrEqualTo,\n text: { text: `${translationKey}.GreaterThanOrEqualTo`, isTranslated: false },\n icon: { tablerIcon: 'math-equal-greater' },\n requiresValue: true\n },\n [FilterDateOperandEnum.LessThanOrEqualTo]: {\n operand: FilterDateOperandEnum.LessThanOrEqualTo,\n text: { text: `${translationKey}.LessThanOrEqualTo`, isTranslated: false },\n icon: { tablerIcon: 'math-equal-lower' },\n requiresValue: true\n }\n };\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterNumberOperandEnum, FilterOperandEnum, FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { DateOrNumberOperandsListConfig } from './date-or-number-operands-list.config';\n\nexport class NumberFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterNumberOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterNumberOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterNumberOperandEnum.GreaterThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThan],\n [FilterNumberOperandEnum.LessThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThan],\n [FilterNumberOperandEnum.GreaterThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThanOrEqualTo],\n [FilterNumberOperandEnum.LessThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThanOrEqualTo],\n [FilterNumberOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterNumberOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterNumberOperandEnum.In]: {\n operand: FilterNumberOperandEnum.In,\n text: { text: 'UpDevs.Table.Filters.Number.In', isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum, FilterBooleanOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\n\nconst translationKey = 'UpDevs.Table.Filters.Boolean';\n\nexport class BooleanFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterBooleanOperandEnum.True]: {\n operand: FilterBooleanOperandEnum.True,\n text: { text: `${translationKey}.True`, isTranslated: false },\n icon: { tablerIcon: 'toggle-right' },\n requiresValue: false\n },\n [FilterBooleanOperandEnum.False]: {\n operand: FilterBooleanOperandEnum.False,\n text: { text: `${translationKey}.False`, isTranslated: false },\n icon: { tablerIcon: 'toggle-left' },\n requiresValue: false\n },\n [FilterBooleanOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterBooleanOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty]\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum, FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { DateOrNumberOperandsListConfig } from './date-or-number-operands-list.config';\n\nexport class DateFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterDateOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterDateOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterDateOperandEnum.GreaterThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThan],\n [FilterDateOperandEnum.LessThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThan],\n [FilterDateOperandEnum.GreaterThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThanOrEqualTo],\n [FilterDateOperandEnum.LessThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThanOrEqualTo],\n [FilterDateOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterDateOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterDateOperandEnum.Between]: {\n operand: FilterDateOperandEnum.Between,\n text: { text: 'UpDevs.Table.Filters.Date.Between', isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterGuidOperandEnum, FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { StringFilterOperandsListModel } from './string-filter-operands-list.model';\n\nexport class GuidFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterGuidOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterGuidOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterGuidOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterGuidOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterGuidOperandEnum.In]: StringFilterOperandsListModel.options[FilterOperandEnum.In]\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DataTypeEnum } from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\nimport { forkJoin } from 'rxjs';\n\nimport { FiltersOperandsService } from '../abstractions/filters-operands.service';\nimport { UpdTableConfigService } from './upd-table-config.service';\nimport { FilterOperandConfig } from '../models/filter-operand.config';\nimport { FiltersOperandsStore } from './stores/filters-operands.store';\nimport { StringFilterOperandsListModel } from '../models/operands-lists/string-filter-operands-list.model';\nimport { NumberFilterOperandsListModel } from '../models/operands-lists/number-filter-operands-list.model';\nimport { BooleanFilterOperandsListModel } from '../models/operands-lists/boolean-filter-operands-list.model';\nimport { DateFilterOperandsListModel } from '../models/operands-lists/date-filter-operands-list.model';\nimport { GuidFilterOperandsListModel } from '../models/operands-lists/guid-filter-operands-list.model';\n\n@Injectable()\nexport class DefaultFiltersOperandsService extends FiltersOperandsService {\n get isLoaded(): boolean {\n return this._isLoaded;\n }\n\n private _isLoaded = false;\n private readonly configService = inject(UpdTableConfigService);\n private readonly filterOperandsStore = inject(FiltersOperandsStore);\n private readonly cachedData: NonNullableDictionaryType<FilterOperandConfig[]> = {};\n\n constructor() {\n super();\n\n if (!!this.configService.config.urlToLoadOperandsFromServer) {\n forkJoin({\n guidOps: this.filterOperandsStore.load(DataTypeEnum.Guid),\n stringOps: this.filterOperandsStore.load(DataTypeEnum.String),\n numberOps: this.filterOperandsStore.load(DataTypeEnum.Number),\n dateOps: this.filterOperandsStore.load(DataTypeEnum.Date),\n booleanOps: this.filterOperandsStore.load(DataTypeEnum.Boolean)\n }).subscribe(resp => {\n this.cachedData[DataTypeEnum.Guid] = resp.guidOps;\n this.cachedData[DataTypeEnum.String] = resp.stringOps;\n this.cachedData[DataTypeEnum.Number] = resp.numberOps;\n this.cachedData[DataTypeEnum.Date] = resp.dateOps;\n this.cachedData[DataTypeEnum.Boolean] = resp.booleanOps;\n this._isLoaded = true;\n });\n } else {\n this.cachedData[DataTypeEnum.Guid] = GuidFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.String] = StringFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Number] = NumberFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Date] = DateFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Boolean] = BooleanFilterOperandsListModel.optionsAsList;\n this._isLoaded = true;\n }\n }\n\n override getOperands(type: DataTypeEnum): FilterOperandConfig[] {\n return this._isLoaded ? this.cachedData[type] : [];\n }\n\n override getAllOperands(): NonNullableDictionaryType<FilterOperandConfig[]> {\n return this.cachedData;\n }\n}\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdModalModule } from '@updevs/components/modal';\nimport { UpdPaginatorModule } from '@updevs/components/paginator';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdCheckboxModule } from '@updevs/components/form-controls/checkbox';\nimport { UpdSelectModule } from '@updevs/components/form-controls/select';\nimport { UpdTimePickerModule } from '@updevs/components/form-controls/time-picker';\nimport { UpdDragAndDropModule } from '@updevs/components/drag-and-drop';\nimport { UpdFormModule } from '@updevs/components/form';\nimport { UpdBadgeModule } from '@updevs/components/badge';\nimport { UpdPopoverModule } from '@updevs/components/popover';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from './assets/i18n/en.json';\nimport * as pt from './assets/i18n/pt.json';\nimport { TableComponent } from './table.component';\nimport { DefaultFiltersOperandsService } from './services/default-filters-operands.service';\nimport { UpdTableConfig } from './models/upd-table.config';\nimport { TableConstants } from './tools/table.constants';\nimport { FiltersOperandsService } from './abstractions/filters-operands.service';\nimport { UpdTableConfigService } from './services/upd-table-config.service';\nimport { FiltersOperandsStore } from './services/stores/filters-operands.store';\nimport { SearchSectionComponent } from './components/search-section/search-section.component';\nimport { FilterRowComponent } from './components/filter-row/filter-row.component';\nimport { TableColumnDirective } from './directives/table-column.directive';\nimport { NumberColumnComponent } from './components/columns/number-column/number-column.component';\nimport { DateTimeColumnComponent } from './components/columns/date-time-column/date-time-column.component';\nimport { BooleanColumnComponent } from './components/columns/boolean-column/boolean-column.component';\nimport { TextColumnComponent } from './components/columns/text-column/text-column.component';\nimport { ColumnsManagerComponent } from './components/columns-manager/columns-manager.component';\nimport { SaveSearchComponent } from './components/save-search/save-search.component';\nimport { SavedViewsStorage } from './services/storages/saved-views.storage';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoDirective,\n UpdIconsModule,\n UpdButtonModule,\n UpdModalModule,\n UpdPaginatorModule,\n UpdInputModule,\n UpdCheckboxModule,\n UpdSelectModule,\n UpdDragAndDropModule,\n UpdFormModule,\n UpdDropdownModule,\n UpdTimePickerModule,\n UpdBadgeModule,\n UpdPopoverModule\n ],\n declarations: [\n TableComponent,\n SearchSectionComponent,\n FilterRowComponent,\n TableColumnDirective,\n NumberColumnComponent,\n DateTimeColumnComponent,\n BooleanColumnComponent,\n TextColumnComponent,\n ColumnsManagerComponent,\n SaveSearchComponent\n ],\n exports: [\n TableComponent,\n TableColumnDirective\n ],\n providers: [\n UpdTableConfigService,\n FiltersOperandsStore,\n SavedViewsStorage\n ]\n})\nexport class UpdTableModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n\n /**\n * Sets up the table module with the provided configuration.\n * @param config Configuration.\n */\n static forRoot(config: UpdTableConfig): ModuleWithProviders<UpdTableModule> {\n const customizableProviders: Provider[] = [\n config.filtersOperandsService || {\n provide: FiltersOperandsService,\n useClass: DefaultFiltersOperandsService\n }\n ];\n\n return {\n ngModule: UpdTableModule,\n providers: [\n { provide: TableConstants.defaultOptionsInjectionToken, useValue: config },\n ...customizableProviders\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i6.FilterRowComponent","i5","i9.SearchSectionComponent","i10.TableColumnDirective","i1.UpdTableConfigService","translationKey","en","pt"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@updevs/components",
3
- "version": "1.0.0-alpha.92",
3
+ "version": "1.0.0-alpha.93",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.0.1 || ^19.0.0",
6
6
  "@angular/core": "^18.0.1 || ^19.0.0",
@@ -46,18 +46,18 @@
46
46
  "esm": "./esm2022/button/updevs-components-button.mjs",
47
47
  "default": "./fesm2022/updevs-components-button.mjs"
48
48
  },
49
- "./card": {
50
- "types": "./card/index.d.ts",
51
- "esm2022": "./esm2022/card/updevs-components-card.mjs",
52
- "esm": "./esm2022/card/updevs-components-card.mjs",
53
- "default": "./fesm2022/updevs-components-card.mjs"
54
- },
55
49
  "./drag-and-drop": {
56
50
  "types": "./drag-and-drop/index.d.ts",
57
51
  "esm2022": "./esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs",
58
52
  "esm": "./esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs",
59
53
  "default": "./fesm2022/updevs-components-drag-and-drop.mjs"
60
54
  },
55
+ "./card": {
56
+ "types": "./card/index.d.ts",
57
+ "esm2022": "./esm2022/card/updevs-components-card.mjs",
58
+ "esm": "./esm2022/card/updevs-components-card.mjs",
59
+ "default": "./fesm2022/updevs-components-card.mjs"
60
+ },
61
61
  "./dropdown": {
62
62
  "types": "./dropdown/index.d.ts",
63
63
  "esm2022": "./esm2022/dropdown/updevs-components-dropdown.mjs",
@@ -82,36 +82,36 @@
82
82
  "esm": "./esm2022/link/updevs-components-link.mjs",
83
83
  "default": "./fesm2022/updevs-components-link.mjs"
84
84
  },
85
- "./list": {
86
- "types": "./list/index.d.ts",
87
- "esm2022": "./esm2022/list/updevs-components-list.mjs",
88
- "esm": "./esm2022/list/updevs-components-list.mjs",
89
- "default": "./fesm2022/updevs-components-list.mjs"
90
- },
91
85
  "./modal": {
92
86
  "types": "./modal/index.d.ts",
93
87
  "esm2022": "./esm2022/modal/updevs-components-modal.mjs",
94
88
  "esm": "./esm2022/modal/updevs-components-modal.mjs",
95
89
  "default": "./fesm2022/updevs-components-modal.mjs"
96
90
  },
91
+ "./list": {
92
+ "types": "./list/index.d.ts",
93
+ "esm2022": "./esm2022/list/updevs-components-list.mjs",
94
+ "esm": "./esm2022/list/updevs-components-list.mjs",
95
+ "default": "./fesm2022/updevs-components-list.mjs"
96
+ },
97
97
  "./paginator": {
98
98
  "types": "./paginator/index.d.ts",
99
99
  "esm2022": "./esm2022/paginator/updevs-components-paginator.mjs",
100
100
  "esm": "./esm2022/paginator/updevs-components-paginator.mjs",
101
101
  "default": "./fesm2022/updevs-components-paginator.mjs"
102
102
  },
103
- "./pricing": {
104
- "types": "./pricing/index.d.ts",
105
- "esm2022": "./esm2022/pricing/updevs-components-pricing.mjs",
106
- "esm": "./esm2022/pricing/updevs-components-pricing.mjs",
107
- "default": "./fesm2022/updevs-components-pricing.mjs"
108
- },
109
103
  "./popover": {
110
104
  "types": "./popover/index.d.ts",
111
105
  "esm2022": "./esm2022/popover/updevs-components-popover.mjs",
112
106
  "esm": "./esm2022/popover/updevs-components-popover.mjs",
113
107
  "default": "./fesm2022/updevs-components-popover.mjs"
114
108
  },
109
+ "./pricing": {
110
+ "types": "./pricing/index.d.ts",
111
+ "esm2022": "./esm2022/pricing/updevs-components-pricing.mjs",
112
+ "esm": "./esm2022/pricing/updevs-components-pricing.mjs",
113
+ "default": "./fesm2022/updevs-components-pricing.mjs"
114
+ },
115
115
  "./table": {
116
116
  "types": "./table/index.d.ts",
117
117
  "esm2022": "./esm2022/table/updevs-components-table.mjs",
@@ -10,19 +10,20 @@ import { BaseColumnModel } from '../../abstractions/base-column.model';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class SearchSectionComponent<T> extends BaseComponent implements OnInit {
12
12
  wrapperClass: string;
13
- searchRequest: import("@angular/core").ModelSignal<SearchRequestModel>;
14
- hasChanges: import("@angular/core").ModelSignal<boolean>;
15
- columns: import("@angular/core").InputSignal<BaseColumnModel[]>;
16
- isSearching: import("@angular/core").InputSignal<boolean>;
17
- searchRequestSubject: import("@angular/core").InputSignal<Subject<SearchRequestModel>>;
18
- config: import("@angular/core").InputSignal<TableConfigModel<T>>;
19
- actionsTpl: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
20
- activeFilters: import("@angular/core").WritableSignal<FilterItemModel[]>;
21
- isFilterSectionOpen: import("@angular/core").WritableSignal<boolean>;
22
- canApplyFilters: import("@angular/core").Signal<boolean>;
23
- canPerformActions: import("@angular/core").Signal<boolean>;
24
- badgeConfig: import("@angular/core").Signal<OptionalType<BadgeConfig>>;
25
- filterSectionBtnColor: import("@angular/core").Signal<BgColorStyleType | undefined>;
13
+ readonly searchRequest: import("@angular/core").ModelSignal<SearchRequestModel>;
14
+ readonly hasChanges: import("@angular/core").ModelSignal<boolean>;
15
+ readonly columns: import("@angular/core").InputSignal<BaseColumnModel[]>;
16
+ readonly isSearching: import("@angular/core").InputSignal<boolean>;
17
+ readonly searchRequestSubject: import("@angular/core").InputSignal<Subject<SearchRequestModel>>;
18
+ readonly config: import("@angular/core").InputSignal<TableConfigModel<T>>;
19
+ readonly actionsTpl: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
20
+ readonly activeFilters: import("@angular/core").WritableSignal<FilterItemModel[]>;
21
+ readonly isFilterSectionOpen: import("@angular/core").WritableSignal<boolean>;
22
+ readonly canApplyFilters: import("@angular/core").Signal<boolean>;
23
+ readonly visibleFiltersCount: import("@angular/core").Signal<number>;
24
+ readonly canPerformActions: import("@angular/core").Signal<boolean>;
25
+ readonly badgeConfig: import("@angular/core").Signal<OptionalType<BadgeConfig>>;
26
+ readonly filterSectionBtnColor: import("@angular/core").Signal<BgColorStyleType | undefined>;
26
27
  readonly searchSubject: Subject<string>;
27
28
  private readonly filtersOperandsService;
28
29
  constructor();