@taiga-ui/kit 3.47.0 → 3.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/bundles/taiga-ui-kit-components-calendar-range.umd.js +9 -6
  2. package/bundles/taiga-ui-kit-components-calendar-range.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-input-date-range.umd.js.map +1 -1
  4. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-multi-select.umd.js +3 -3
  6. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-constants.umd.js.map +1 -1
  8. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js.map +1 -1
  9. package/bundles/taiga-ui-kit-pipes-filter-by-input.umd.js +22 -10
  10. package/bundles/taiga-ui-kit-pipes-filter-by-input.umd.js.map +1 -1
  11. package/components/calendar-range/calendar-range.component.d.ts +9 -3
  12. package/components/input-date-range/input-date-range.component.d.ts +7 -2
  13. package/components/input-phone-international/input-phone-international.component.d.ts +2 -2
  14. package/components/multi-select/multi-select.component.d.ts +9 -3
  15. package/components/multi-select/multi-select.module.d.ts +1 -1
  16. package/components/multi-select/native-multi-select/native-multi-select.d.ts +2 -2
  17. package/constants/max-day-range-length-mapper.d.ts +7 -2
  18. package/esm2015/components/calendar-range/calendar-range.component.js +3 -3
  19. package/esm2015/components/input-date-range/input-date-range.component.js +1 -1
  20. package/esm2015/components/input-phone-international/input-phone-international.component.js +1 -1
  21. package/esm2015/components/multi-select/multi-select.component.js +1 -1
  22. package/esm2015/components/multi-select/multi-select.module.js +2 -2
  23. package/esm2015/components/multi-select/native-multi-select/native-multi-select-group.component.js +1 -1
  24. package/esm2015/components/multi-select/native-multi-select/native-multi-select.component.js +1 -1
  25. package/esm2015/components/multi-select/native-multi-select/native-multi-select.js +1 -1
  26. package/esm2015/constants/max-day-range-length-mapper.js +1 -1
  27. package/esm2015/internal/primitive-calendar-range/primitive-calendar-range.component.js +1 -1
  28. package/esm2015/pipes/filter-by-input/filter-by-input-with.pipe.js +11 -4
  29. package/esm2015/pipes/filter-by-input/filter-by-input.base.js +3 -3
  30. package/esm2015/pipes/filter-by-input/filter-by-input.pipe.js +11 -4
  31. package/fesm2015/taiga-ui-kit-components-calendar-range.js +2 -2
  32. package/fesm2015/taiga-ui-kit-components-calendar-range.js.map +1 -1
  33. package/fesm2015/taiga-ui-kit-components-input-date-range.js.map +1 -1
  34. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  35. package/fesm2015/taiga-ui-kit-components-multi-select.js +2 -2
  36. package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
  37. package/fesm2015/taiga-ui-kit-constants.js.map +1 -1
  38. package/fesm2015/taiga-ui-kit-internal-primitive-calendar-range.js.map +1 -1
  39. package/fesm2015/taiga-ui-kit-pipes-filter-by-input.js +20 -7
  40. package/fesm2015/taiga-ui-kit-pipes-filter-by-input.js.map +1 -1
  41. package/internal/primitive-calendar-range/primitive-calendar-range.component.d.ts +2 -2
  42. package/package.json +4 -4
  43. package/pipes/filter-by-input/filter-by-input-with.pipe.d.ts +5 -4
  44. package/pipes/filter-by-input/filter-by-input.base.d.ts +7 -1
  45. package/pipes/filter-by-input/filter-by-input.pipe.d.ts +5 -4
@@ -2,8 +2,9 @@ import { __decorate } from 'tslib';
2
2
  import { tuiIsPresent, tuiPure, TUI_DEFAULT_STRINGIFY, TUI_DEFAULT_MATCHER, TUI_FOCUSABLE_ITEM_ACCESSOR } from '@taiga-ui/cdk';
3
3
  import { tuiIsFlat } from '@taiga-ui/kit/utils';
4
4
  import * as i0 from '@angular/core';
5
- import { Pipe, Inject, NgModule } from '@angular/core';
5
+ import { Pipe, Inject, Optional, NgModule } from '@angular/core';
6
6
  import { TUI_DATA_LIST_HOST } from '@taiga-ui/core';
7
+ import { TuiMultiSelectDirective } from '@taiga-ui/kit/components/multi-select';
7
8
 
8
9
  class AbstractTuiFilterByInput {
9
10
  get query() {
@@ -21,13 +22,13 @@ class AbstractTuiFilterByInput {
21
22
  }
22
23
  filterFlat(items, matcher, stringify, query) {
23
24
  const match = this.getMatch(items, stringify, query);
24
- return tuiIsPresent(match)
25
+ return tuiIsPresent(match) && !this.multiSelect
25
26
  ? items
26
27
  : items.filter(item => matcher(item, query, stringify));
27
28
  }
28
29
  filter2d(items, matcher, stringify, query) {
29
30
  const match = items.find(item => tuiIsPresent(this.getMatch(item, stringify, query)));
30
- return tuiIsPresent(match)
31
+ return tuiIsPresent(match) && !this.multiSelect
31
32
  ? items
32
33
  : items.map(inner => this.filterFlat(inner, matcher, stringify, query));
33
34
  }
@@ -40,16 +41,17 @@ __decorate([
40
41
  ], AbstractTuiFilterByInput.prototype, "filter", null);
41
42
 
42
43
  class TuiFilterByInputPipe extends AbstractTuiFilterByInput {
43
- constructor(accessor, host) {
44
+ constructor(accessor, host, multiSelect) {
44
45
  super();
45
46
  this.accessor = accessor;
46
47
  this.host = host;
48
+ this.multiSelect = multiSelect;
47
49
  }
48
50
  transform(items, matcher = TUI_DEFAULT_MATCHER) {
49
51
  return this.filter(items, matcher, this.host.stringify || TUI_DEFAULT_STRINGIFY, this.query);
50
52
  }
51
53
  }
52
- TuiFilterByInputPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiFilterByInputPipe, deps: [{ token: TUI_FOCUSABLE_ITEM_ACCESSOR }, { token: TUI_DATA_LIST_HOST }], target: i0.ɵɵFactoryTarget.Pipe });
54
+ TuiFilterByInputPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiFilterByInputPipe, deps: [{ token: TUI_FOCUSABLE_ITEM_ACCESSOR }, { token: TUI_DATA_LIST_HOST }, { token: TuiMultiSelectDirective, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
53
55
  TuiFilterByInputPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiFilterByInputPipe, name: "tuiFilterByInput", pure: false });
54
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiFilterByInputPipe, decorators: [{
55
57
  type: Pipe,
@@ -63,21 +65,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
63
65
  }] }, { type: undefined, decorators: [{
64
66
  type: Inject,
65
67
  args: [TUI_DATA_LIST_HOST]
68
+ }] }, { type: undefined, decorators: [{
69
+ type: Optional
70
+ }, {
71
+ type: Inject,
72
+ args: [TuiMultiSelectDirective]
66
73
  }] }]; } });
67
74
 
68
75
  /**
69
76
  * @deprecated Use {@link TuiFilterByInputPipe} instead
70
77
  */
71
78
  class TuiFilterByInputWithPipe extends AbstractTuiFilterByInput {
72
- constructor(accessor) {
79
+ constructor(accessor, multiSelect) {
73
80
  super();
74
81
  this.accessor = accessor;
82
+ this.multiSelect = multiSelect;
75
83
  }
76
84
  transform(items, stringify) {
77
85
  return this.filter(items, TUI_DEFAULT_MATCHER, stringify, this.query);
78
86
  }
79
87
  }
80
- TuiFilterByInputWithPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiFilterByInputWithPipe, deps: [{ token: TUI_FOCUSABLE_ITEM_ACCESSOR }], target: i0.ɵɵFactoryTarget.Pipe });
88
+ TuiFilterByInputWithPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiFilterByInputWithPipe, deps: [{ token: TUI_FOCUSABLE_ITEM_ACCESSOR }, { token: TuiMultiSelectDirective, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
81
89
  TuiFilterByInputWithPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiFilterByInputWithPipe, name: "tuiFilterByInputWith", pure: false });
82
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiFilterByInputWithPipe, decorators: [{
83
91
  type: Pipe,
@@ -88,6 +96,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
88
96
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
89
97
  type: Inject,
90
98
  args: [TUI_FOCUSABLE_ITEM_ACCESSOR]
99
+ }] }, { type: undefined, decorators: [{
100
+ type: Optional
101
+ }, {
102
+ type: Inject,
103
+ args: [TuiMultiSelectDirective]
91
104
  }] }]; } });
92
105
 
93
106
  class TuiFilterByInputPipeModule {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-pipes-filter-by-input.js","sources":["../../../projects/kit/pipes/filter-by-input/filter-by-input.base.ts","../../../projects/kit/pipes/filter-by-input/filter-by-input.pipe.ts","../../../projects/kit/pipes/filter-by-input/filter-by-input-with.pipe.ts","../../../projects/kit/pipes/filter-by-input/filter-by-input.module.ts","../../../projects/kit/pipes/filter-by-input/taiga-ui-kit-pipes-filter-by-input.ts"],"sourcesContent":["import {\n TuiFocusableElementAccessor,\n tuiIsPresent,\n tuiPure,\n TuiStringHandler,\n TuiStringMatcher,\n} from '@taiga-ui/cdk';\nimport {tuiIsFlat} from '@taiga-ui/kit/utils';\n\nexport type ArrayElement<A> = A extends ReadonlyArray<infer T>\n ? A extends ReadonlyArray<ReadonlyArray<infer G>>\n ? G\n : T\n : never;\n\nexport abstract class AbstractTuiFilterByInput {\n protected abstract readonly accessor: TuiFocusableElementAccessor;\n\n protected get query(): string {\n return this.accessor.nativeFocusableElement\n ? (this.accessor.nativeFocusableElement as HTMLInputElement).value || ``\n : ``;\n }\n\n @tuiPure\n protected filter<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n if (!items) {\n return null;\n }\n\n return tuiIsFlat(items)\n ? this.filterFlat(items, matcher, stringify, query)\n : this.filter2d(items, matcher, stringify, query);\n }\n\n private filterFlat<T>(\n items: readonly T[],\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): readonly T[] {\n const match = this.getMatch(items, stringify, query);\n\n return tuiIsPresent(match)\n ? items\n : items.filter(item => matcher(item, query, stringify));\n }\n\n private filter2d<T>(\n items: ReadonlyArray<readonly T[]>,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> {\n const match = items.find(item =>\n tuiIsPresent(this.getMatch(item, stringify, query)),\n );\n\n return tuiIsPresent(match)\n ? items\n : items.map(inner => this.filterFlat(inner, matcher, stringify, query));\n }\n\n private getMatch<T>(\n items: readonly T[],\n stringify: TuiStringHandler<T>,\n query: string,\n ): T | undefined {\n return items.find(\n item => stringify(item).toLocaleLowerCase() === query.toLocaleLowerCase(),\n );\n }\n}\n","import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {\n TUI_DEFAULT_MATCHER,\n TUI_DEFAULT_STRINGIFY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TuiFocusableElementAccessor,\n TuiStringMatcher,\n} from '@taiga-ui/cdk';\nimport {TUI_DATA_LIST_HOST, TuiDataListHost} from '@taiga-ui/core';\n\nimport {AbstractTuiFilterByInput, ArrayElement} from './filter-by-input.base';\n\n@Pipe({\n name: `tuiFilterByInput`,\n pure: false,\n})\nexport class TuiFilterByInputPipe\n extends AbstractTuiFilterByInput\n implements PipeTransform\n{\n constructor(\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n protected readonly accessor: TuiFocusableElementAccessor,\n @Inject(TUI_DATA_LIST_HOST)\n private readonly host: TuiDataListHost<unknown>,\n ) {\n super();\n }\n\n transform<T>(items: T, matcher?: TuiStringMatcher<ArrayElement<T>>): T;\n transform<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T> = TUI_DEFAULT_MATCHER,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n return this.filter(\n items,\n matcher,\n this.host.stringify || TUI_DEFAULT_STRINGIFY,\n this.query,\n );\n }\n}\n","import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {\n TUI_DEFAULT_MATCHER,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TuiFocusableElementAccessor,\n TuiStringHandler,\n} from '@taiga-ui/cdk';\n\nimport {AbstractTuiFilterByInput, ArrayElement} from './filter-by-input.base';\n\n/**\n * @deprecated Use {@link TuiFilterByInputPipe} instead\n */\n@Pipe({\n name: `tuiFilterByInputWith`,\n pure: false,\n})\nexport class TuiFilterByInputWithPipe\n extends AbstractTuiFilterByInput\n implements PipeTransform\n{\n constructor(\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n protected readonly accessor: TuiFocusableElementAccessor,\n ) {\n super();\n }\n\n transform<T>(items: T, matcher?: TuiStringHandler<ArrayElement<T>>): T;\n transform<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n stringify: TuiStringHandler<T>,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n return this.filter(items, TUI_DEFAULT_MATCHER, stringify, this.query);\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiFilterByInputPipe} from './filter-by-input.pipe';\nimport {TuiFilterByInputWithPipe} from './filter-by-input-with.pipe';\n\n@NgModule({\n declarations: [TuiFilterByInputPipe, TuiFilterByInputWithPipe],\n exports: [TuiFilterByInputPipe, TuiFilterByInputWithPipe],\n})\nexport class TuiFilterByInputPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAesB,wBAAwB,CAAA;AAG1C,IAAA,IAAc,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB;cACpC,IAAI,CAAC,QAAQ,CAAC,sBAA2C,CAAC,KAAK,IAAI,CAAE,CAAA;cACtE,EAAE,CAAC;KACZ;AAGS,IAAA,MAAM,CACZ,KAAwD,EACxD,OAA4B,EAC5B,SAA8B,EAC9B,KAAa,EAAA;QAEb,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,OAAO,SAAS,CAAC,KAAK,CAAC;AACnB,cAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC;AACnD,cAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;KACzD;AAEO,IAAA,UAAU,CACd,KAAmB,EACnB,OAA4B,EAC5B,SAA8B,EAC9B,KAAa,EAAA;AAEb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,YAAY,CAAC,KAAK,CAAC;AACtB,cAAE,KAAK;AACP,cAAE,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;KAC/D;AAEO,IAAA,QAAQ,CACZ,KAAkC,EAClC,OAA4B,EAC5B,SAA8B,EAC9B,KAAa,EAAA;QAEb,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IACzB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CACtD,CAAC;QAEF,OAAO,YAAY,CAAC,KAAK,CAAC;AACtB,cAAE,KAAK;cACL,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;KAC/E;AAEO,IAAA,QAAQ,CACZ,KAAmB,EACnB,SAA8B,EAC9B,KAAa,EAAA;QAEb,OAAO,KAAK,CAAC,IAAI,CACb,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,KAAK,KAAK,CAAC,iBAAiB,EAAE,CAC5E,CAAC;KACL;AACJ,CAAA;AApDG,UAAA,CAAA;IADC,OAAO;AAcP,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA;;ACtBC,MAAO,oBACT,SAAQ,wBAAwB,CAAA;IAGhC,WAEuB,CAAA,QAAqC,EAEvC,IAA8B,EAAA;AAE/C,QAAA,KAAK,EAAE,CAAC;QAJW,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA6B;QAEvC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAA0B;KAGlD;AAGD,IAAA,SAAS,CACL,KAAwD,EACxD,OAAA,GAA+B,mBAAmB,EAAA;QAElD,OAAO,IAAI,CAAC,MAAM,CACd,KAAK,EACL,OAAO,EACP,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,qBAAqB,EAC5C,IAAI,CAAC,KAAK,CACb,CAAC;KACL;;kHAxBQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAKjB,2BAA2B,EAAA,EAAA,EAAA,KAAA,EAE3B,kBAAkB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gHAPrB,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,CAAkB,gBAAA,CAAA;AACxB,oBAAA,IAAI,EAAE,KAAK;AACd,iBAAA,CAAA;;0BAMQ,MAAM;2BAAC,2BAA2B,CAAA;;0BAElC,MAAM;2BAAC,kBAAkB,CAAA;;;ACblC;;AAEG;AAKG,MAAO,wBACT,SAAQ,wBAAwB,CAAA;AAGhC,IAAA,WAAA,CAEuB,QAAqC,EAAA;AAExD,QAAA,KAAK,EAAE,CAAC;QAFW,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA6B;KAG3D;IAGD,SAAS,CACL,KAAwD,EACxD,SAA8B,EAAA;AAE9B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACzE;;AAjBQ,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAKrB,2BAA2B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;oHAL9B,wBAAwB,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,CAAsB,oBAAA,CAAA;AAC5B,oBAAA,IAAI,EAAE,KAAK;AACd,iBAAA,CAAA;;0BAMQ,MAAM;2BAAC,2BAA2B,CAAA;;;MCb9B,0BAA0B,CAAA;;wHAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,iBAHpB,oBAAoB,EAAE,wBAAwB,CACnD,EAAA,OAAA,EAAA,CAAA,oBAAoB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;yHAE/C,0BAA0B,EAAA,CAAA,CAAA;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,oBAAoB,EAAE,wBAAwB,CAAC;AAC9D,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,wBAAwB,CAAC;AAC5D,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-pipes-filter-by-input.js","sources":["../../../projects/kit/pipes/filter-by-input/filter-by-input.base.ts","../../../projects/kit/pipes/filter-by-input/filter-by-input.pipe.ts","../../../projects/kit/pipes/filter-by-input/filter-by-input-with.pipe.ts","../../../projects/kit/pipes/filter-by-input/filter-by-input.module.ts","../../../projects/kit/pipes/filter-by-input/taiga-ui-kit-pipes-filter-by-input.ts"],"sourcesContent":["import {\n TuiFocusableElementAccessor,\n tuiIsPresent,\n tuiPure,\n TuiStringHandler,\n TuiStringMatcher,\n} from '@taiga-ui/cdk';\nimport {tuiIsFlat} from '@taiga-ui/kit/utils';\n\nexport type TuiArrayElement<A> = A extends ReadonlyArray<infer T>\n ? A extends ReadonlyArray<ReadonlyArray<infer G>>\n ? G\n : T\n : never;\n\n/**\n * @deprecated: use {@link TuiArrayElement}\n * TODO: remove in v4.0\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type ArrayElement<A> = TuiArrayElement<A>;\n\nexport abstract class AbstractTuiFilterByInput {\n protected abstract readonly accessor: TuiFocusableElementAccessor;\n protected abstract readonly multiSelect: unknown;\n\n protected get query(): string {\n return this.accessor.nativeFocusableElement\n ? (this.accessor.nativeFocusableElement as HTMLInputElement).value || ``\n : ``;\n }\n\n @tuiPure\n protected filter<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n if (!items) {\n return null;\n }\n\n return tuiIsFlat(items)\n ? this.filterFlat(items, matcher, stringify, query)\n : this.filter2d(items, matcher, stringify, query);\n }\n\n private filterFlat<T>(\n items: readonly T[],\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): readonly T[] {\n const match = this.getMatch(items, stringify, query);\n\n return tuiIsPresent(match) && !this.multiSelect\n ? items\n : items.filter(item => matcher(item, query, stringify));\n }\n\n private filter2d<T>(\n items: ReadonlyArray<readonly T[]>,\n matcher: TuiStringMatcher<T>,\n stringify: TuiStringHandler<T>,\n query: string,\n ): ReadonlyArray<readonly T[]> {\n const match = items.find(item =>\n tuiIsPresent(this.getMatch(item, stringify, query)),\n );\n\n return tuiIsPresent(match) && !this.multiSelect\n ? items\n : items.map(inner => this.filterFlat(inner, matcher, stringify, query));\n }\n\n private getMatch<T>(\n items: readonly T[],\n stringify: TuiStringHandler<T>,\n query: string,\n ): T | undefined {\n return items.find(\n item => stringify(item).toLocaleLowerCase() === query.toLocaleLowerCase(),\n );\n }\n}\n","import {Inject, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {\n TUI_DEFAULT_MATCHER,\n TUI_DEFAULT_STRINGIFY,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TuiFocusableElementAccessor,\n TuiStringMatcher,\n} from '@taiga-ui/cdk';\nimport {TUI_DATA_LIST_HOST, TuiDataListHost} from '@taiga-ui/core';\nimport {TuiMultiSelectDirective} from '@taiga-ui/kit/components/multi-select';\n\nimport {AbstractTuiFilterByInput, TuiArrayElement} from './filter-by-input.base';\n\n@Pipe({\n name: `tuiFilterByInput`,\n pure: false,\n})\nexport class TuiFilterByInputPipe\n extends AbstractTuiFilterByInput\n implements PipeTransform\n{\n constructor(\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n protected readonly accessor: TuiFocusableElementAccessor,\n @Inject(TUI_DATA_LIST_HOST)\n private readonly host: TuiDataListHost<unknown>,\n @Optional()\n @Inject(TuiMultiSelectDirective)\n protected readonly multiSelect: unknown,\n ) {\n super();\n }\n\n transform<T>(items: T, matcher?: TuiStringMatcher<TuiArrayElement<T>>): T;\n transform<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n matcher: TuiStringMatcher<T> = TUI_DEFAULT_MATCHER,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n return this.filter(\n items,\n matcher,\n this.host.stringify || TUI_DEFAULT_STRINGIFY,\n this.query,\n );\n }\n}\n","import {Inject, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {\n TUI_DEFAULT_MATCHER,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TuiFocusableElementAccessor,\n TuiStringHandler,\n} from '@taiga-ui/cdk';\nimport {TuiMultiSelectDirective} from '@taiga-ui/kit/components/multi-select';\n\nimport {AbstractTuiFilterByInput, TuiArrayElement} from './filter-by-input.base';\n\n/**\n * @deprecated Use {@link TuiFilterByInputPipe} instead\n */\n@Pipe({\n name: `tuiFilterByInputWith`,\n pure: false,\n})\nexport class TuiFilterByInputWithPipe\n extends AbstractTuiFilterByInput\n implements PipeTransform\n{\n constructor(\n @Inject(TUI_FOCUSABLE_ITEM_ACCESSOR)\n protected readonly accessor: TuiFocusableElementAccessor,\n @Optional()\n @Inject(TuiMultiSelectDirective)\n protected readonly multiSelect: unknown,\n ) {\n super();\n }\n\n transform<T>(items: T, matcher?: TuiStringHandler<TuiArrayElement<T>>): T;\n transform<T>(\n items: ReadonlyArray<readonly T[]> | readonly T[] | null,\n stringify: TuiStringHandler<T>,\n ): ReadonlyArray<readonly T[]> | readonly T[] | null {\n return this.filter(items, TUI_DEFAULT_MATCHER, stringify, this.query);\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiFilterByInputPipe} from './filter-by-input.pipe';\nimport {TuiFilterByInputWithPipe} from './filter-by-input-with.pipe';\n\n@NgModule({\n declarations: [TuiFilterByInputPipe, TuiFilterByInputWithPipe],\n exports: [TuiFilterByInputPipe, TuiFilterByInputWithPipe],\n})\nexport class TuiFilterByInputPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
2
- import { TuiBooleanHandler, TuiDay, TuiDayRange, TuiDestroyService, TuiMapper, TuiMonth } from '@taiga-ui/cdk';
2
+ import { TuiBooleanHandler, TuiDay, TuiDayRange, TuiDestroyService, TuiMonth, TuiTypedMapper } from '@taiga-ui/cdk';
3
3
  import { TuiMarkerHandler } from '@taiga-ui/core';
4
4
  import { Observable } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
@@ -21,7 +21,7 @@ export declare class TuiPrimitiveCalendarRangeComponent implements OnInit {
21
21
  constructor(valueChanges: Observable<TuiDayRange | null> | null, cdr: ChangeDetectorRef, destroy$: TuiDestroyService);
22
22
  get cappedUserViewedMonthSecond(): TuiMonth;
23
23
  get cappedUserViewedMonthFirst(): TuiMonth;
24
- monthOffset: TuiMapper<TuiMonth, TuiMonth>;
24
+ monthOffset: TuiTypedMapper<[TuiMonth, number], TuiMonth>;
25
25
  ngOnInit(): void;
26
26
  onSectionFirstViewedMonth(month: TuiMonth): void;
27
27
  onSectionSecondViewedMonth(month: TuiMonth): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/kit",
3
- "version": "3.47.0",
3
+ "version": "3.48.0",
4
4
  "description": "Taiga UI Angular main components kit",
5
5
  "keywords": [
6
6
  "angular",
@@ -28,9 +28,9 @@
28
28
  "@ng-web-apis/common": ">=3.0.0",
29
29
  "@ng-web-apis/mutation-observer": ">=3.0.0",
30
30
  "@ng-web-apis/resize-observer": ">=3.0.0",
31
- "@taiga-ui/cdk": ">=3.47.0",
32
- "@taiga-ui/core": ">=3.47.0",
33
- "@taiga-ui/i18n": ">=3.47.0",
31
+ "@taiga-ui/cdk": ">=3.48.0",
32
+ "@taiga-ui/core": ">=3.48.0",
33
+ "@taiga-ui/i18n": ">=3.48.0",
34
34
  "@tinkoff/ng-polymorpheus": ">=4.0.0",
35
35
  "rxjs": ">=6.0.0"
36
36
  },
@@ -1,14 +1,15 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import { TuiFocusableElementAccessor, TuiStringHandler } from '@taiga-ui/cdk';
3
- import { AbstractTuiFilterByInput, ArrayElement } from './filter-by-input.base';
3
+ import { AbstractTuiFilterByInput, TuiArrayElement } from './filter-by-input.base';
4
4
  import * as i0 from "@angular/core";
5
5
  /**
6
6
  * @deprecated Use {@link TuiFilterByInputPipe} instead
7
7
  */
8
8
  export declare class TuiFilterByInputWithPipe extends AbstractTuiFilterByInput implements PipeTransform {
9
9
  protected readonly accessor: TuiFocusableElementAccessor;
10
- constructor(accessor: TuiFocusableElementAccessor);
11
- transform<T>(items: T, matcher?: TuiStringHandler<ArrayElement<T>>): T;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiFilterByInputWithPipe, never>;
10
+ protected readonly multiSelect: unknown;
11
+ constructor(accessor: TuiFocusableElementAccessor, multiSelect: unknown);
12
+ transform<T>(items: T, matcher?: TuiStringHandler<TuiArrayElement<T>>): T;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiFilterByInputWithPipe, [null, { optional: true; }]>;
13
14
  static ɵpipe: i0.ɵɵPipeDeclaration<TuiFilterByInputWithPipe, "tuiFilterByInputWith">;
14
15
  }
@@ -1,7 +1,13 @@
1
1
  import { TuiFocusableElementAccessor, TuiStringHandler, TuiStringMatcher } from '@taiga-ui/cdk';
2
- export declare type ArrayElement<A> = A extends ReadonlyArray<infer T> ? A extends ReadonlyArray<ReadonlyArray<infer G>> ? G : T : never;
2
+ export declare type TuiArrayElement<A> = A extends ReadonlyArray<infer T> ? A extends ReadonlyArray<ReadonlyArray<infer G>> ? G : T : never;
3
+ /**
4
+ * @deprecated: use {@link TuiArrayElement}
5
+ * TODO: remove in v4.0
6
+ */
7
+ export declare type ArrayElement<A> = TuiArrayElement<A>;
3
8
  export declare abstract class AbstractTuiFilterByInput {
4
9
  protected abstract readonly accessor: TuiFocusableElementAccessor;
10
+ protected abstract readonly multiSelect: unknown;
5
11
  protected get query(): string;
6
12
  protected filter<T>(items: ReadonlyArray<readonly T[]> | readonly T[] | null, matcher: TuiStringMatcher<T>, stringify: TuiStringHandler<T>, query: string): ReadonlyArray<readonly T[]> | readonly T[] | null;
7
13
  private filterFlat;
@@ -1,13 +1,14 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import { TuiFocusableElementAccessor, TuiStringMatcher } from '@taiga-ui/cdk';
3
3
  import { TuiDataListHost } from '@taiga-ui/core';
4
- import { AbstractTuiFilterByInput, ArrayElement } from './filter-by-input.base';
4
+ import { AbstractTuiFilterByInput, TuiArrayElement } from './filter-by-input.base';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class TuiFilterByInputPipe extends AbstractTuiFilterByInput implements PipeTransform {
7
7
  protected readonly accessor: TuiFocusableElementAccessor;
8
8
  private readonly host;
9
- constructor(accessor: TuiFocusableElementAccessor, host: TuiDataListHost<unknown>);
10
- transform<T>(items: T, matcher?: TuiStringMatcher<ArrayElement<T>>): T;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiFilterByInputPipe, never>;
9
+ protected readonly multiSelect: unknown;
10
+ constructor(accessor: TuiFocusableElementAccessor, host: TuiDataListHost<unknown>, multiSelect: unknown);
11
+ transform<T>(items: T, matcher?: TuiStringMatcher<TuiArrayElement<T>>): T;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiFilterByInputPipe, [null, null, { optional: true; }]>;
12
13
  static ɵpipe: i0.ɵɵPipeDeclaration<TuiFilterByInputPipe, "tuiFilterByInput">;
13
14
  }