@taiga-ui/kit 4.54.0 → 4.56.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 (68) hide show
  1. package/components/avatar/avatar.options.d.ts +1 -3
  2. package/components/confirm/confirm.component.d.ts +1 -0
  3. package/components/confirm/confirm.service.d.ts +2 -1
  4. package/components/index.d.ts +1 -0
  5. package/components/input-number/quantum.directive.d.ts +1 -1
  6. package/components/multi-select/multi-select-group/multi-select-group.component.d.ts +1 -1
  7. package/components/rating/rating.options.d.ts +5 -3
  8. package/components/toast/index.d.ts +5 -0
  9. package/components/toast/toast.component.d.ts +17 -0
  10. package/components/toast/toast.d.ts +3 -0
  11. package/components/toast/toast.directive.d.ts +7 -0
  12. package/components/toast/toast.options.d.ts +8 -0
  13. package/components/toast/toast.service.d.ts +16 -0
  14. package/esm2022/components/avatar/avatar.options.mjs +3 -9
  15. package/esm2022/components/checkbox/checkbox.component.mjs +2 -2
  16. package/esm2022/components/confirm/confirm.component.mjs +5 -3
  17. package/esm2022/components/confirm/confirm.service.mjs +7 -7
  18. package/esm2022/components/index.mjs +2 -1
  19. package/esm2022/components/input-chip/input-chip.directive.mjs +11 -6
  20. package/esm2022/components/input-number/quantum.directive.mjs +6 -5
  21. package/esm2022/components/input-range/input-range.component.mjs +3 -5
  22. package/esm2022/components/input-slider/input-slider.directive.mjs +3 -3
  23. package/esm2022/components/multi-select/multi-select-group/multi-select-group.component.mjs +6 -5
  24. package/esm2022/components/radio/radio.component.mjs +2 -2
  25. package/esm2022/components/rating/rating.component.mjs +3 -3
  26. package/esm2022/components/rating/rating.options.mjs +1 -1
  27. package/esm2022/components/slider/slider.component.mjs +2 -2
  28. package/esm2022/components/switch/switch.component.mjs +2 -2
  29. package/esm2022/components/toast/index.mjs +6 -0
  30. package/esm2022/components/toast/taiga-ui-kit-components-toast.mjs +5 -0
  31. package/esm2022/components/toast/toast.component.mjs +50 -0
  32. package/esm2022/components/toast/toast.directive.mjs +68 -0
  33. package/esm2022/components/toast/toast.mjs +4 -0
  34. package/esm2022/components/toast/toast.options.mjs +8 -0
  35. package/esm2022/components/toast/toast.service.mjs +54 -0
  36. package/fesm2022/taiga-ui-kit-components-avatar.mjs +4 -8
  37. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-kit-components-checkbox.mjs +2 -2
  39. package/fesm2022/taiga-ui-kit-components-checkbox.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-kit-components-confirm.mjs +10 -8
  41. package/fesm2022/taiga-ui-kit-components-confirm.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +10 -5
  43. package/fesm2022/taiga-ui-kit-components-input-chip.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-kit-components-input-number.mjs +5 -4
  45. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-kit-components-input-range.mjs +2 -4
  47. package/fesm2022/taiga-ui-kit-components-input-range.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-kit-components-input-slider.mjs +2 -2
  49. package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-kit-components-multi-select.mjs +6 -6
  51. package/fesm2022/taiga-ui-kit-components-multi-select.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-kit-components-radio.mjs +2 -2
  53. package/fesm2022/taiga-ui-kit-components-radio.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-kit-components-rating.mjs +2 -2
  55. package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-kit-components-slider.mjs +2 -2
  57. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-kit-components-switch.mjs +2 -2
  59. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-kit-components-toast.mjs +172 -0
  61. package/fesm2022/taiga-ui-kit-components-toast.mjs.map +1 -0
  62. package/fesm2022/taiga-ui-kit-components.mjs +1 -0
  63. package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
  64. package/package.json +10 -4
  65. package/styles/components/checkbox.less +1 -1
  66. package/styles/components/radio.less +1 -1
  67. package/styles/components/switch.less +1 -1
  68. package/styles/components/toast.less +45 -0
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-switch.mjs","sources":["../../../projects/kit/components/switch/switch.options.ts","../../../projects/kit/components/switch/switch.component.ts","../../../projects/kit/components/switch/taiga-ui-kit-components-switch.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiSwitchOptions {\n readonly showIcons: boolean;\n readonly size: TuiSizeS;\n readonly icon: TuiStringHandler<TuiSizeS> | string;\n readonly appearance: TuiStringHandler<HTMLInputElement>;\n}\n\nexport const TUI_SWITCH_DEFAULT_OPTIONS: TuiSwitchOptions = {\n showIcons: true,\n size: 'm',\n icon: '@tui.check',\n appearance: (el) => (el.checked ? 'primary' : 'secondary'),\n};\n\nexport const TUI_SWITCH_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_SWITCH_OPTIONS' : '',\n {\n factory: () => TUI_SWITCH_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiSwitchOptionsProvider(options: Partial<TuiSwitchOptions>): Provider {\n return tuiProvideOptions(TUI_SWITCH_OPTIONS, options, TUI_SWITCH_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n type DoCheck,\n inject,\n Input,\n type OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TUI_SWITCH_OPTIONS} from './switch.options';\n\n@Component({\n standalone: true,\n selector: 'input[type=\"checkbox\"][tuiSwitch]',\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/switch.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiAppearance,\n inputs: ['tuiAppearanceState', 'tuiAppearanceFocus', 'tuiAppearanceMode'],\n },\n TuiNativeValidator,\n ],\n host: {\n role: 'switch',\n '[disabled]': '!control || control.disabled',\n '[attr.data-size]': 'size',\n '[class._readonly]': '!control',\n '[style.--t-checked-icon]': 'icon',\n },\n})\nexport class TuiSwitch implements DoCheck, OnInit {\n private readonly appearance = inject(TuiAppearance);\n private readonly resolver = tuiInjectIconResolver();\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly options = inject(TUI_SWITCH_OPTIONS);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n\n protected readonly control = inject(NgControl, {self: true, optional: true});\n\n @Input()\n public size: TuiSizeS = this.options.size;\n\n @Input()\n public showIcons = this.options.showIcons;\n\n public ngOnInit(): void {\n this.control?.valueChanges\n ?.pipe(tuiWatch(this.cdr), takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n\n public ngDoCheck(): void {\n this.appearance.tuiAppearance = this.options.appearance(this.el);\n }\n\n protected get icon(): string | null {\n const {options, resolver, size} = this;\n const icon = tuiIsString(options.icon) ? options.icon : options.icon(size);\n\n return this.showIcons && icon ? `url(${resolver(icon)})` : null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-switch.mjs","sources":["../../../projects/kit/components/switch/switch.options.ts","../../../projects/kit/components/switch/switch.component.ts","../../../projects/kit/components/switch/taiga-ui-kit-components-switch.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiSwitchOptions {\n readonly showIcons: boolean;\n readonly size: TuiSizeS;\n readonly icon: TuiStringHandler<TuiSizeS> | string;\n readonly appearance: TuiStringHandler<HTMLInputElement>;\n}\n\nexport const TUI_SWITCH_DEFAULT_OPTIONS: TuiSwitchOptions = {\n showIcons: true,\n size: 'm',\n icon: '@tui.check',\n appearance: (el) => (el.checked ? 'primary' : 'secondary'),\n};\n\nexport const TUI_SWITCH_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_SWITCH_OPTIONS' : '',\n {\n factory: () => TUI_SWITCH_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiSwitchOptionsProvider(options: Partial<TuiSwitchOptions>): Provider {\n return tuiProvideOptions(TUI_SWITCH_OPTIONS, options, TUI_SWITCH_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n type DoCheck,\n inject,\n Input,\n type OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TUI_SWITCH_OPTIONS} from './switch.options';\n\n@Component({\n standalone: true,\n selector: 'input[type=\"checkbox\"][tuiSwitch]',\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/switch.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiAppearance,\n inputs: ['tuiAppearanceState', 'tuiAppearanceFocus', 'tuiAppearanceMode'],\n },\n TuiNativeValidator,\n ],\n host: {\n role: 'switch',\n '[disabled]': '!control || control.disabled',\n '[attr.data-size]': 'size',\n '[class._readonly]': '!control',\n '[style.--t-checked-icon]': 'icon',\n },\n})\nexport class TuiSwitch implements DoCheck, OnInit {\n private readonly appearance = inject(TuiAppearance);\n private readonly resolver = tuiInjectIconResolver();\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly options = inject(TUI_SWITCH_OPTIONS);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n\n protected readonly control = inject(NgControl, {self: true, optional: true});\n\n @Input()\n public size: TuiSizeS = this.options.size;\n\n @Input()\n public showIcons = this.options.showIcons;\n\n public ngOnInit(): void {\n this.control?.valueChanges\n ?.pipe(tuiWatch(this.cdr), takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n\n public ngDoCheck(): void {\n this.appearance.tuiAppearance = this.options.appearance(this.el);\n }\n\n protected get icon(): string | null {\n const {options, resolver, size} = this;\n const icon = tuiIsString(options.icon) ? options.icon : options.icon(size);\n\n return this.showIcons && icon ? `url(${resolver(icon)})` : null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, ElementRef, Directive, ViewChild, Injectable } from '@angular/core';
3
+ import { TUI_PLATFORM, TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
4
+ import { tuiWithStyles, tuiCreateToken, tuiCreateTokenFromFactory } from '@taiga-ui/cdk/utils/miscellaneous';
5
+ import { tuiButtonOptionsProvider } from '@taiga-ui/core/components';
6
+ import * as i1 from '@taiga-ui/core/directives/icons';
7
+ import { TuiWithIcons } from '@taiga-ui/core/directives/icons';
8
+ import { TUI_ICON_END, TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
9
+ import { tuiAvatarOptionsProvider } from '@taiga-ui/kit/components/avatar';
10
+ import { tuiBadgeOptionsProvider } from '@taiga-ui/kit/components/badge';
11
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
12
+ import { TuiPopoverDirective } from '@taiga-ui/cdk/directives/popover';
13
+ import { TuiPopoverService, tuiAsPopover } from '@taiga-ui/cdk/services';
14
+ import { TUI_ALERTS } from '@taiga-ui/core/components/alert';
15
+ import { of, switchMap, timer, EMPTY, takeUntil, fromEvent, repeat, BehaviorSubject, pairwise } from 'rxjs';
16
+ import { NgIf } from '@angular/common';
17
+ import * as i1$1 from '@taiga-ui/cdk/directives/animated';
18
+ import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
19
+ import { TuiSwipe } from '@taiga-ui/cdk/directives/swipe';
20
+ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
21
+ import { TuiButton } from '@taiga-ui/core/components/button';
22
+ import { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
23
+ import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
24
+
25
+ class TuiToastStyles {
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiToastStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-toast" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiToast]{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;grid-row:1 / span 2;box-sizing:border-box;gap:.75rem;color:var(--tui-text-primary);background:var(--tui-background-elevation-3);min-block-size:3.5rem;border-radius:1rem;padding:.75rem 1rem;box-shadow:var(--tui-shadow-medium);align-items:center;justify-content:center;inline-size:-webkit-max-content;inline-size:max-content;font:var(--tui-font-text-ui-s);max-inline-size:min(calc(100vw - 2rem),25rem);border:inherit;text-decoration:none;overflow:hidden}[tuiToast]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled){cursor:pointer}[tuiToast]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled){cursor:pointer}[tuiToast]>*,[tuiToast]:after,[tuiToast]:before{max-inline-size:50%;margin:0 -.25rem}[tuiToast]:after{font-size:1rem;color:var(--tui-text-tertiary)}[tuiToast] tui-avatar{margin-inline-end:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastStyles, decorators: [{
30
+ type: Component,
31
+ args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
32
+ class: 'tui-toast',
33
+ }, styles: ["[tuiToast]{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;grid-row:1 / span 2;box-sizing:border-box;gap:.75rem;color:var(--tui-text-primary);background:var(--tui-background-elevation-3);min-block-size:3.5rem;border-radius:1rem;padding:.75rem 1rem;box-shadow:var(--tui-shadow-medium);align-items:center;justify-content:center;inline-size:-webkit-max-content;inline-size:max-content;font:var(--tui-font-text-ui-s);max-inline-size:min(calc(100vw - 2rem),25rem);border:inherit;text-decoration:none;overflow:hidden}[tuiToast]:matches(a,button,select,textarea,input,label,.tui-interactive):not(:disabled){cursor:pointer}[tuiToast]:is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled){cursor:pointer}[tuiToast]>*,[tuiToast]:after,[tuiToast]:before{max-inline-size:50%;margin:0 -.25rem}[tuiToast]:after{font-size:1rem;color:var(--tui-text-tertiary)}[tuiToast] tui-avatar{margin-inline-end:0}\n"] }]
34
+ }] });
35
+ class TuiToastDirective {
36
+ constructor() {
37
+ this.nothing = tuiWithStyles(TuiToastStyles);
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiToastDirective, isStandalone: true, selector: "[tuiToast]:not(ng-template)", providers: [
41
+ tuiBadgeOptionsProvider({ size: 'l' }),
42
+ tuiAvatarOptionsProvider(() => ({
43
+ size: inject(TUI_PLATFORM) === 'web' ? 's' : 'm',
44
+ })),
45
+ tuiButtonOptionsProvider(() => ({
46
+ size: 's',
47
+ appearance: inject(TUI_PLATFORM) === 'web' ? 'secondary-grayscale' : 'secondary',
48
+ })),
49
+ {
50
+ provide: TUI_ICON_END,
51
+ useFactory: () => inject(ElementRef).nativeElement?.matches('a, button')
52
+ ? inject(TUI_COMMON_ICONS).more
53
+ : '',
54
+ },
55
+ ], hostDirectives: [{ directive: i1.TuiWithIcons }], ngImport: i0 }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastDirective, decorators: [{
58
+ type: Directive,
59
+ args: [{
60
+ standalone: true,
61
+ selector: '[tuiToast]:not(ng-template)',
62
+ providers: [
63
+ tuiBadgeOptionsProvider({ size: 'l' }),
64
+ tuiAvatarOptionsProvider(() => ({
65
+ size: inject(TUI_PLATFORM) === 'web' ? 's' : 'm',
66
+ })),
67
+ tuiButtonOptionsProvider(() => ({
68
+ size: 's',
69
+ appearance: inject(TUI_PLATFORM) === 'web' ? 'secondary-grayscale' : 'secondary',
70
+ })),
71
+ {
72
+ provide: TUI_ICON_END,
73
+ useFactory: () => inject(ElementRef).nativeElement?.matches('a, button')
74
+ ? inject(TUI_COMMON_ICONS).more
75
+ : '',
76
+ },
77
+ ],
78
+ hostDirectives: [TuiWithIcons],
79
+ }]
80
+ }] });
81
+
82
+ class TuiToastComponent {
83
+ constructor() {
84
+ this.el = tuiInjectElement();
85
+ this.isMobile = inject(TUI_IS_MOBILE);
86
+ this.context = injectContext();
87
+ this.icons = inject(TUI_COMMON_ICONS);
88
+ this.$ = of(this.context.autoClose)
89
+ .pipe(switchMap((autoClose) => (autoClose ? timer(autoClose) : EMPTY)), takeUntil(fromEvent(this.el, 'mouseenter')), repeat({ delay: () => fromEvent(this.el, 'mouseleave') }), takeUntilDestroyed())
90
+ .subscribe(() => this.context.$implicit.complete());
91
+ }
92
+ ngAfterViewInit() {
93
+ if (this.button) {
94
+ this.el.querySelector('[tuiToast]')?.appendChild(this.button.nativeElement);
95
+ }
96
+ }
97
+ onSwipe() {
98
+ if (this.context.closable) {
99
+ this.context.$implicit.complete();
100
+ }
101
+ }
102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
103
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiToastComponent, isStandalone: true, selector: "tui-toast", host: { attributes: { "role": "status" }, properties: { "class._mobile": "isMobile", "attr.data-appearance": "context.appearance" } }, viewQueries: [{ propertyName: "button", first: true, predicate: TuiButton, descendants: true, read: ElementRef }], hostDirectives: [{ directive: i1$1.TuiAnimated }], ngImport: i0, template: "<div\n class=\"t-wrapper\"\n (tuiSwipe)=\"onSwipe()\"\n>\n <div\n *polymorpheusOutlet=\"context.content as text; context: context\"\n tuiToast\n [iconStart]=\"context.data?.toString() || ''\"\n >\n {{ text }}\n </div>\n <button\n *ngIf=\"context.closable && !isMobile\"\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.close\"\n (click.stop.prevent)=\"context.$implicit.complete()\"\n >\n Close\n </button>\n</div>\n", styles: ["::ng-deep *:has(>tui-toast){flex-direction:column-reverse!important;justify-content:flex-end}:host{transition-property:grid-template-rows;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;top:1.25rem;display:grid;margin:0 auto;touch-action:none;animation-fill-mode:both;--tui-from: translate3d(0, -2rem, 0)}:host.tui-enter{place-items:end;animation-name:tuiSlide,tuiCollapse}:host.tui-leave{animation-name:tuiFade,tuiCollapse}:host.tui-leave:first-child{animation-name:tuiFade}:host._mobile{top:env(safe-area-inset-top)}:host._mobile.tui-enter{animation-delay:var(--tui-duration)}:host._mobile.tui-leave{place-items:end;animation-name:tuiSlide,tuiCollapse}.t-wrapper{grid-row:1 / span 2}.t-wrapper:before{content:\"\";display:block;block-size:.75rem}:host._mobile .t-wrapper:before{block-size:.25rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiSwipe, selector: "[tuiSwipe]", outputs: ["tuiSwipe"] }, { kind: "directive", type: TuiToastDirective, selector: "[tuiToast]:not(ng-template)" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
+ }
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastComponent, decorators: [{
106
+ type: Component,
107
+ args: [{ standalone: true, selector: 'tui-toast', imports: [NgIf, PolymorpheusOutlet, TuiButton, TuiSwipe, TuiToastDirective], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [TuiAnimated], host: {
108
+ role: 'status',
109
+ '[class._mobile]': 'isMobile',
110
+ '[attr.data-appearance]': 'context.appearance',
111
+ }, template: "<div\n class=\"t-wrapper\"\n (tuiSwipe)=\"onSwipe()\"\n>\n <div\n *polymorpheusOutlet=\"context.content as text; context: context\"\n tuiToast\n [iconStart]=\"context.data?.toString() || ''\"\n >\n {{ text }}\n </div>\n <button\n *ngIf=\"context.closable && !isMobile\"\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.close\"\n (click.stop.prevent)=\"context.$implicit.complete()\"\n >\n Close\n </button>\n</div>\n", styles: ["::ng-deep *:has(>tui-toast){flex-direction:column-reverse!important;justify-content:flex-end}:host{transition-property:grid-template-rows;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;top:1.25rem;display:grid;margin:0 auto;touch-action:none;animation-fill-mode:both;--tui-from: translate3d(0, -2rem, 0)}:host.tui-enter{place-items:end;animation-name:tuiSlide,tuiCollapse}:host.tui-leave{animation-name:tuiFade,tuiCollapse}:host.tui-leave:first-child{animation-name:tuiFade}:host._mobile{top:env(safe-area-inset-top)}:host._mobile.tui-enter{animation-delay:var(--tui-duration)}:host._mobile.tui-leave{place-items:end;animation-name:tuiSlide,tuiCollapse}.t-wrapper{grid-row:1 / span 2}.t-wrapper:before{content:\"\";display:block;block-size:.75rem}:host._mobile .t-wrapper:before{block-size:.25rem}\n"] }]
112
+ }], propDecorators: { button: [{
113
+ type: ViewChild,
114
+ args: [TuiButton, { read: ElementRef }]
115
+ }] } });
116
+
117
+ const TUI_TOAST_DEFAULT_OPTIONS = {
118
+ appearance: '',
119
+ autoClose: 5000,
120
+ closable: true,
121
+ };
122
+ const [TUI_TOAST_OPTIONS, tuiToastOptionsProvider] = tuiCreateOptions(TUI_TOAST_DEFAULT_OPTIONS);
123
+
124
+ const TOASTS = tuiCreateToken(new BehaviorSubject([]));
125
+ const TUI_TOASTS_CONCURRENCY = tuiCreateTokenFromFactory(() => inject(TUI_IS_MOBILE) ? 1 : 2);
126
+ class TuiToastService extends TuiPopoverService {
127
+ constructor() {
128
+ super(...arguments);
129
+ this.concurrency = inject(TUI_TOASTS_CONCURRENCY);
130
+ this.alerts = inject(TUI_ALERTS);
131
+ this.sub = this.items$
132
+ .pipe(pairwise(), takeUntilDestroyed())
133
+ .subscribe(([prev, next]) => {
134
+ const closed = prev.filter((item) => !next.includes(item));
135
+ const alerts = this.alerts.value.filter((item) => !closed.includes(item));
136
+ const toasts = new Set([...alerts, ...next.slice(0, this.concurrency)]);
137
+ this.alerts.next(Array.from(toasts));
138
+ });
139
+ }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
141
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastService, providedIn: 'root', useFactory: () => new TuiToastService(TOASTS, TuiToastComponent, inject(TUI_TOAST_OPTIONS)) }); }
142
+ }
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastService, decorators: [{
144
+ type: Injectable,
145
+ args: [{
146
+ providedIn: 'root',
147
+ useFactory: () => new TuiToastService(TOASTS, TuiToastComponent, inject(TUI_TOAST_OPTIONS)),
148
+ }]
149
+ }] });
150
+ class TuiToastTemplate extends TuiPopoverDirective {
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastTemplate, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
152
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiToastTemplate, isStandalone: true, selector: "ng-template[tuiToast]", inputs: { options: ["tuiToastOptions", "options"], open: ["tuiToast", "open"] }, outputs: { openChange: "tuiToastChange" }, providers: [tuiAsPopover(TuiToastService)], usesInheritance: true, ngImport: i0 }); }
153
+ }
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiToastTemplate, decorators: [{
155
+ type: Directive,
156
+ args: [{
157
+ standalone: true,
158
+ selector: 'ng-template[tuiToast]',
159
+ inputs: ['options: tuiToastOptions', 'open: tuiToast'],
160
+ outputs: ['openChange: tuiToastChange'],
161
+ providers: [tuiAsPopover(TuiToastService)],
162
+ }]
163
+ }] });
164
+
165
+ const TuiToast = [TuiToastDirective, TuiToastTemplate];
166
+
167
+ /**
168
+ * Generated bundle index. Do not edit.
169
+ */
170
+
171
+ export { TUI_TOASTS_CONCURRENCY, TUI_TOAST_DEFAULT_OPTIONS, TUI_TOAST_OPTIONS, TuiToast, TuiToastComponent, TuiToastDirective, TuiToastService, TuiToastTemplate, tuiToastOptionsProvider };
172
+ //# sourceMappingURL=taiga-ui-kit-components-toast.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-kit-components-toast.mjs","sources":["../../../projects/kit/components/toast/toast.directive.ts","../../../projects/kit/components/toast/toast.component.ts","../../../projects/kit/components/toast/toast.template.html","../../../projects/kit/components/toast/toast.options.ts","../../../projects/kit/components/toast/toast.service.ts","../../../projects/kit/components/toast/toast.ts","../../../projects/kit/components/toast/taiga-ui-kit-components-toast.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_PLATFORM} from '@taiga-ui/cdk/tokens';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport {TUI_COMMON_ICONS, TUI_ICON_END} from '@taiga-ui/core/tokens';\nimport {tuiAvatarOptionsProvider} from '@taiga-ui/kit/components/avatar';\nimport {tuiBadgeOptionsProvider} from '@taiga-ui/kit/components/badge';\n\n@Component({\n standalone: true,\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/toast.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-toast',\n },\n})\nclass TuiToastStyles {}\n\n@Directive({\n standalone: true,\n selector: '[tuiToast]:not(ng-template)',\n providers: [\n tuiBadgeOptionsProvider({size: 'l'}),\n tuiAvatarOptionsProvider(() => ({\n size: inject(TUI_PLATFORM) === 'web' ? 's' : 'm',\n })),\n tuiButtonOptionsProvider(() => ({\n size: 's',\n appearance:\n inject(TUI_PLATFORM) === 'web' ? 'secondary-grayscale' : 'secondary',\n })),\n {\n provide: TUI_ICON_END,\n useFactory: () =>\n inject(ElementRef).nativeElement?.matches('a, button')\n ? inject(TUI_COMMON_ICONS).more\n : '',\n },\n ],\n hostDirectives: [TuiWithIcons],\n})\nexport class TuiToastDirective {\n protected readonly nothing = tuiWithStyles(TuiToastStyles);\n}\n","import {NgIf} from '@angular/common';\nimport {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n ViewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {TuiSwipe} from '@taiga-ui/cdk/directives/swipe';\nimport {type TuiPopover} from '@taiga-ui/cdk/services';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {EMPTY, fromEvent, of, repeat, switchMap, takeUntil, timer} from 'rxjs';\n\nimport {TuiToastDirective} from './toast.directive';\nimport {type TuiToastOptions} from './toast.options';\n\n@Component({\n standalone: true,\n selector: 'tui-toast',\n imports: [NgIf, PolymorpheusOutlet, TuiButton, TuiSwipe, TuiToastDirective],\n templateUrl: './toast.template.html',\n styleUrls: ['./toast.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiAnimated],\n host: {\n role: 'status',\n '[class._mobile]': 'isMobile',\n '[attr.data-appearance]': 'context.appearance',\n },\n})\nexport class TuiToastComponent<O, I> implements AfterViewInit {\n @ViewChild(TuiButton, {read: ElementRef})\n private readonly button?: ElementRef<HTMLButtonElement>;\n\n private readonly el = tuiInjectElement();\n\n protected readonly isMobile = inject(TUI_IS_MOBILE);\n protected readonly context = injectContext<TuiPopover<TuiToastOptions<I>, O>>();\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly $ = of(this.context.autoClose)\n .pipe(\n switchMap((autoClose) => (autoClose ? timer(autoClose) : EMPTY)),\n takeUntil(fromEvent(this.el, 'mouseenter')),\n repeat({delay: () => fromEvent(this.el, 'mouseleave')}),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.context.$implicit.complete());\n\n public ngAfterViewInit(): void {\n if (this.button) {\n this.el.querySelector('[tuiToast]')?.appendChild(this.button.nativeElement);\n }\n }\n\n protected onSwipe(): void {\n if (this.context.closable) {\n this.context.$implicit.complete();\n }\n }\n}\n","<div\n class=\"t-wrapper\"\n (tuiSwipe)=\"onSwipe()\"\n>\n <div\n *polymorpheusOutlet=\"context.content as text; context: context\"\n tuiToast\n [iconStart]=\"context.data?.toString() || ''\"\n >\n {{ text }}\n </div>\n <button\n *ngIf=\"context.closable && !isMobile\"\n appearance=\"icon\"\n size=\"xs\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.close\"\n (click.stop.prevent)=\"context.$implicit.complete()\"\n >\n Close\n </button>\n</div>\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiToastOptions<I> {\n autoClose: number;\n closable: boolean;\n appearance: string;\n data?: I;\n}\n\nexport const TUI_TOAST_DEFAULT_OPTIONS: TuiToastOptions<void> = {\n appearance: '',\n autoClose: 5000,\n closable: true,\n};\n\nexport const [TUI_TOAST_OPTIONS, tuiToastOptionsProvider] = tuiCreateOptions(\n TUI_TOAST_DEFAULT_OPTIONS,\n);\n","import {Directive, inject, Injectable} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover, type TuiPopover, TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {\n tuiCreateToken,\n tuiCreateTokenFromFactory,\n} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_ALERTS} from '@taiga-ui/core/components/alert';\nimport {BehaviorSubject, pairwise} from 'rxjs';\n\nimport {TuiToastComponent} from './toast.component';\nimport {TUI_TOAST_OPTIONS, type TuiToastOptions} from './toast.options';\n\nconst TOASTS = tuiCreateToken(\n new BehaviorSubject<ReadonlyArray<TuiPopover<TuiToastOptions<unknown>, any>>>([]),\n);\n\nexport const TUI_TOASTS_CONCURRENCY = tuiCreateTokenFromFactory<number>(() =>\n inject(TUI_IS_MOBILE) ? 1 : 2,\n);\n\n@Injectable({\n providedIn: 'root',\n useFactory: () =>\n new TuiToastService(TOASTS, TuiToastComponent, inject(TUI_TOAST_OPTIONS)),\n})\nexport class TuiToastService extends TuiPopoverService<TuiToastOptions<any>> {\n private readonly concurrency = inject(TUI_TOASTS_CONCURRENCY);\n private readonly alerts = inject(TUI_ALERTS);\n\n protected readonly sub = this.items$\n .pipe(pairwise(), takeUntilDestroyed())\n .subscribe(([prev, next]) => {\n const closed = prev.filter((item) => !next.includes(item));\n const alerts = this.alerts.value.filter((item) => !closed.includes(item));\n const toasts = new Set([...alerts, ...next.slice(0, this.concurrency)]);\n\n this.alerts.next(Array.from(toasts));\n });\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiToast]',\n inputs: ['options: tuiToastOptions', 'open: tuiToast'],\n outputs: ['openChange: tuiToastChange'],\n providers: [tuiAsPopover(TuiToastService)],\n})\nexport class TuiToastTemplate<T> extends TuiPopoverDirective<TuiToastOptions<T>> {}\n","import {TuiToastDirective} from './toast.directive';\nimport {TuiToastTemplate} from './toast.service';\n\nexport const TuiToast = [TuiToastDirective, TuiToastTemplate] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -69,6 +69,7 @@ export * from '@taiga-ui/kit/components/switch';
69
69
  export * from '@taiga-ui/kit/components/tabs';
70
70
  export * from '@taiga-ui/kit/components/textarea';
71
71
  export * from '@taiga-ui/kit/components/tiles';
72
+ export * from '@taiga-ui/kit/components/toast';
72
73
  export * from '@taiga-ui/kit/components/tree';
73
74
 
74
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components.mjs","sources":["../../../projects/kit/components/taiga-ui-kit-components.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG"}
1
+ {"version":3,"file":"taiga-ui-kit-components.mjs","sources":["../../../projects/kit/components/taiga-ui-kit-components.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/kit",
3
- "version": "4.54.0",
3
+ "version": "4.56.0",
4
4
  "description": "Taiga UI Angular main components kit",
5
5
  "keywords": [
6
6
  "angular",
@@ -479,6 +479,12 @@
479
479
  "esm": "./esm2022/components/tiles/taiga-ui-kit-components-tiles.mjs",
480
480
  "default": "./fesm2022/taiga-ui-kit-components-tiles.mjs"
481
481
  },
482
+ "./components/toast": {
483
+ "types": "./components/toast/index.d.ts",
484
+ "esm2022": "./esm2022/components/toast/taiga-ui-kit-components-toast.mjs",
485
+ "esm": "./esm2022/components/toast/taiga-ui-kit-components-toast.mjs",
486
+ "default": "./fesm2022/taiga-ui-kit-components-toast.mjs"
487
+ },
482
488
  "./components/tree": {
483
489
  "types": "./components/tree/index.d.ts",
484
490
  "esm2022": "./esm2022/components/tree/taiga-ui-kit-components-tree.mjs",
@@ -667,9 +673,9 @@
667
673
  "@ng-web-apis/intersection-observer": "^4.12.0",
668
674
  "@ng-web-apis/mutation-observer": "^4.12.0",
669
675
  "@ng-web-apis/resize-observer": "^4.12.0",
670
- "@taiga-ui/cdk": "^4.54.0",
671
- "@taiga-ui/core": "^4.54.0",
672
- "@taiga-ui/i18n": "^4.54.0",
676
+ "@taiga-ui/cdk": "^4.56.0",
677
+ "@taiga-ui/core": "^4.56.0",
678
+ "@taiga-ui/i18n": "^4.56.0",
673
679
  "@taiga-ui/polymorpheus": "^4.9.0",
674
680
  "rxjs": ">=7.0.0"
675
681
  },
@@ -46,7 +46,7 @@
46
46
  mask 0s var(--tui-duration) ease-in-out;
47
47
  }
48
48
 
49
- &:disabled._readonly {
49
+ &:disabled._readonly._readonly {
50
50
  opacity: 1;
51
51
  pointer-events: none;
52
52
  }
@@ -29,7 +29,7 @@
29
29
  border-radius: 100%;
30
30
  color: var(--tui-text-primary-on-accent-1);
31
31
 
32
- &:disabled._readonly {
32
+ &:disabled._readonly._readonly {
33
33
  opacity: 1;
34
34
  }
35
35
 
@@ -62,7 +62,7 @@
62
62
  }
63
63
  }
64
64
 
65
- &:disabled._readonly {
65
+ &:disabled._readonly._readonly {
66
66
  opacity: 1;
67
67
  }
68
68
 
@@ -0,0 +1,45 @@
1
+ @import '@taiga-ui/core/styles/taiga-ui-local.less';
2
+
3
+ [tuiToast] {
4
+ .transition(transform);
5
+
6
+ display: flex;
7
+ grid-row: 1 / span 2;
8
+ box-sizing: border-box;
9
+ gap: 0.75rem;
10
+ color: var(--tui-text-primary);
11
+ background: var(--tui-background-elevation-3);
12
+ min-block-size: 3.5rem;
13
+ border-radius: 1rem;
14
+ padding: 0.75rem 1rem;
15
+ box-shadow: var(--tui-shadow-medium);
16
+ align-items: center;
17
+ justify-content: center;
18
+ inline-size: max-content;
19
+ font: var(--tui-font-text-ui-s);
20
+ max-inline-size: ~'min(calc(100vw - 2rem), 25rem)';
21
+ border: inherit;
22
+ text-decoration: none;
23
+ overflow: hidden;
24
+
25
+ .interactive({
26
+ cursor: pointer;
27
+ });
28
+
29
+ > *,
30
+ &::after,
31
+ &::before {
32
+ max-inline-size: 50%;
33
+ margin: 0 -0.25rem;
34
+ }
35
+
36
+ &::after {
37
+ font-size: 1rem;
38
+ color: var(--tui-text-tertiary);
39
+ }
40
+
41
+ // TODO: replace tui-avatar to tuiAvatar in v5
42
+ tui-avatar {
43
+ margin-inline-end: 0;
44
+ }
45
+ }