@taiga-ui/core 5.15.0 → 5.16.0-canary.10d28cb

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 (54) hide show
  1. package/components/calendar/calendar.component.d.ts +1 -1
  2. package/components/textfield/textfield-multi/textfield-multi.component.d.ts +1 -1
  3. package/components/textfield/textfield.component.d.ts +1 -1
  4. package/fesm2022/taiga-ui-core-components-button.mjs +2 -2
  5. package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
  6. package/fesm2022/taiga-ui-core-components-calendar.mjs +2 -2
  7. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  8. package/fesm2022/taiga-ui-core-components-cell.mjs +3 -3
  9. package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
  10. package/fesm2022/taiga-ui-core-components-checkbox.mjs +2 -2
  11. package/fesm2022/taiga-ui-core-components-checkbox.mjs.map +1 -1
  12. package/fesm2022/taiga-ui-core-components-data-list.mjs +4 -4
  13. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  14. package/fesm2022/taiga-ui-core-components-icon.mjs +2 -2
  15. package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
  16. package/fesm2022/taiga-ui-core-components-label.mjs +3 -3
  17. package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
  18. package/fesm2022/taiga-ui-core-components-link.mjs +2 -2
  19. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-core-components-loader.mjs +2 -2
  21. package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-core-components-notification.mjs +2 -2
  23. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-core-components-radio.mjs +2 -2
  25. package/fesm2022/taiga-ui-core-components-radio.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-core-components-root.mjs +1 -1
  27. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +2 -2
  29. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-core-components-textfield.mjs +4 -4
  31. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-core-components-title.mjs +3 -3
  33. package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-core-directives-appearance.mjs +3 -3
  35. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  36. package/fesm2022/taiga-ui-core-directives-group.mjs +3 -3
  37. package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-core-directives-icons.mjs +3 -3
  39. package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-core-portals-alert.mjs +3 -3
  41. package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-core-portals-close.mjs +32 -0
  43. package/fesm2022/taiga-ui-core-portals-close.mjs.map +1 -0
  44. package/fesm2022/taiga-ui-core-portals-dialog.mjs +22 -6
  45. package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-core-portals-modal.mjs +3 -3
  47. package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-core-portals.mjs +1 -0
  49. package/fesm2022/taiga-ui-core-portals.mjs.map +1 -1
  50. package/package.json +52 -48
  51. package/portals/close/close.directive.d.ts +12 -0
  52. package/portals/close/index.d.ts +1 -0
  53. package/portals/dialog/dialog.providers.d.ts +3 -0
  54. package/portals/index.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-portals-modal.mjs","sources":["../../../projects/core/portals/modal/modal.component.ts","../../../projects/core/portals/modal/modal.service.ts","../../../projects/core/portals/modal/taiga-ui-core-portals-modal.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnDestroy,\n type OnInit,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiFocusTrap} from '@taiga-ui/cdk/directives/focus-trap';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {TuiScrollControls, TuiScrollRef} from '@taiga-ui/core/components/scrollbar';\nimport {\n injectContext,\n type PolymorpheusContent,\n PolymorpheusOutlet,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-modal',\n imports: [PolymorpheusOutlet, TuiScrollControls, TuiScrollRef],\n template: `\n <div tuiScrollRef>\n <ng-container *polymorpheusOutlet=\"component(); context: context\" />\n <tui-scroll-controls class=\"t-scrollbars\" />\n </div>\n `,\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './modal.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n hostDirectives: [TuiActiveZone, TuiFocusTrap],\n host: {\n 'aria-modal': 'true',\n 'data-tui-version': TUI_VERSION,\n role: 'dialog',\n class: 'tui-enter',\n '[attr.aria-labelledby]': 'context.id',\n '(animationend.self)': '$event.target.classList.remove(\"tui-enter\")',\n },\n})\nexport class TuiModalComponent<T> implements OnDestroy, OnInit {\n private readonly current = inject(TuiActiveZone);\n\n private readonly parent = findActive(\n inject(TuiActiveZone, {skipSelf: true}),\n tuiGetFocused(inject(DOCUMENT)),\n );\n\n public readonly context = injectContext<TuiPortalContext<T>>();\n public readonly component = signal<PolymorpheusContent<TuiPortalContext<T>>>(null);\n\n public ngOnInit(): void {\n this.current.tuiActiveZoneParentSetter = this.parent;\n }\n\n public ngOnDestroy(): void {\n this.current.tuiActiveZoneParentSetter = null;\n }\n}\n\nfunction findActive(zone: TuiActiveZone, el: Element | null): TuiActiveZone | null {\n if (!el || !zone.contains(el)) {\n return null;\n }\n\n const active = zone.children.find(\n (child) => !child['el'].matches('[tuiActiveZoneAdapter]') && child.contains(el),\n );\n\n return active ? findActive(active, el) : zone;\n}\n","import {inject, Injectable, type Type} from '@angular/core';\nimport {TUI_LEAVE} from '@taiga-ui/cdk/directives/animated';\nimport {TuiPortal} from '@taiga-ui/cdk/portals';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiModalComponent} from './modal.component';\n\n@Injectable()\nexport abstract class TuiModalService<T, K = void> extends TuiPortal<T, K> {\n protected abstract readonly content: Type<unknown>;\n protected readonly component = TuiModalComponent;\n\n constructor() {\n super(inject(TuiPopupService));\n }\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<T>>,\n ): () => void {\n const ref = this.service.add(component);\n const el: HTMLElement = ref.location.nativeElement;\n\n el.closest('tui-root')?.firstElementChild?.setAttribute('inert', '');\n ref.instance.component.set(new PolymorpheusComponent(this.content));\n\n return () => {\n ref.instance.component.set(null);\n ref.changeDetectorRef.detectChanges();\n el.classList.add(TUI_LEAVE);\n\n Promise.allSettled(getAnimations(el))\n .then(async () =>\n Promise.allSettled(\n getAnimations(el.firstElementChild?.firstElementChild),\n ),\n )\n .then(() => {\n // Under zoneless + provideAnimations Angular's animation engine queues\n // the modal removal but engine.flush never runs from a microtask, so\n // the element stays in DOM with `tui-leave` class. Detach it manually.\n el.closest('tui-root')?.firstElementChild?.removeAttribute('inert');\n ref.destroy();\n el.remove();\n });\n };\n }\n}\n\nfunction getAnimations(el?: Element | null): ReadonlyArray<Promise<unknown>> {\n return el?.getAnimations?.().map(async ({finished}) => finished) || [];\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-core-portals-modal.mjs","sources":["../../../projects/core/portals/modal/modal.component.ts","../../../projects/core/portals/modal/modal.service.ts","../../../projects/core/portals/modal/taiga-ui-core-portals-modal.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnDestroy,\n type OnInit,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiFocusTrap} from '@taiga-ui/cdk/directives/focus-trap';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {TuiScrollControls, TuiScrollRef} from '@taiga-ui/core/components/scrollbar';\nimport {\n injectContext,\n type PolymorpheusContent,\n PolymorpheusOutlet,\n} from '@taiga-ui/polymorpheus';\n\n@Component({\n selector: 'tui-modal',\n imports: [PolymorpheusOutlet, TuiScrollControls, TuiScrollRef],\n template: `\n <div tuiScrollRef>\n <ng-container *polymorpheusOutlet=\"component(); context: context\" />\n <tui-scroll-controls class=\"t-scrollbars\" />\n </div>\n `,\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './modal.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n hostDirectives: [TuiActiveZone, TuiFocusTrap],\n host: {\n 'aria-modal': 'true',\n 'data-tui-version': TUI_VERSION,\n role: 'dialog',\n class: 'tui-enter',\n '[attr.aria-labelledby]': 'context.id',\n '(animationend.self)': '$event.target.classList.remove(\"tui-enter\")',\n },\n})\nexport class TuiModalComponent<T> implements OnDestroy, OnInit {\n private readonly current = inject(TuiActiveZone);\n\n private readonly parent = findActive(\n inject(TuiActiveZone, {skipSelf: true}),\n tuiGetFocused(inject(DOCUMENT)),\n );\n\n public readonly context = injectContext<TuiPortalContext<T>>();\n public readonly component = signal<PolymorpheusContent<TuiPortalContext<T>>>(null);\n\n public ngOnInit(): void {\n this.current.tuiActiveZoneParentSetter = this.parent;\n }\n\n public ngOnDestroy(): void {\n this.current.tuiActiveZoneParentSetter = null;\n }\n}\n\nfunction findActive(zone: TuiActiveZone, el: Element | null): TuiActiveZone | null {\n if (!el || !zone.contains(el)) {\n return null;\n }\n\n const active = zone.children.find(\n (child) => !child['el'].matches('[tuiActiveZoneAdapter]') && child.contains(el),\n );\n\n return active ? findActive(active, el) : zone;\n}\n","import {inject, Injectable, type Type} from '@angular/core';\nimport {TUI_LEAVE} from '@taiga-ui/cdk/directives/animated';\nimport {TuiPortal} from '@taiga-ui/cdk/portals';\nimport {TuiPopupService} from '@taiga-ui/core/portals/popup';\nimport {PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiModalComponent} from './modal.component';\n\n@Injectable()\nexport abstract class TuiModalService<T, K = void> extends TuiPortal<T, K> {\n protected abstract readonly content: Type<unknown>;\n protected readonly component = TuiModalComponent;\n\n constructor() {\n super(inject(TuiPopupService));\n }\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<T>>,\n ): () => void {\n const ref = this.service.add(component);\n const el: HTMLElement = ref.location.nativeElement;\n\n el.closest('tui-root')?.firstElementChild?.setAttribute('inert', '');\n ref.instance.component.set(new PolymorpheusComponent(this.content));\n\n return () => {\n ref.instance.component.set(null);\n ref.changeDetectorRef.detectChanges();\n el.classList.add(TUI_LEAVE);\n\n Promise.allSettled(getAnimations(el))\n .then(async () =>\n Promise.allSettled(\n getAnimations(el.firstElementChild?.firstElementChild),\n ),\n )\n .then(() => {\n // Under zoneless + provideAnimations Angular's animation engine queues\n // the modal removal but engine.flush never runs from a microtask, so\n // the element stays in DOM with `tui-leave` class. Detach it manually.\n el.closest('tui-root')?.firstElementChild?.removeAttribute('inert');\n ref.destroy();\n el.remove();\n });\n };\n }\n}\n\nfunction getAnimations(el?: Element | null): ReadonlyArray<Promise<unknown>> {\n return el?.getAnimations?.().map(async ({finished}) => finished) || [];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from '@taiga-ui/core/portals/alert';
2
+ export * from '@taiga-ui/core/portals/close';
2
3
  export * from '@taiga-ui/core/portals/dialog';
3
4
  export * from '@taiga-ui/core/portals/dropdown';
4
5
  export * from '@taiga-ui/core/portals/hint';
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-portals.mjs","sources":["../../../projects/core/portals/taiga-ui-core-portals.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-core-portals.mjs","sources":["../../../projects/core/portals/taiga-ui-core-portals.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/core",
3
- "version": "5.15.0",
3
+ "version": "5.16.0-canary.10d28cb",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -41,11 +41,11 @@
41
41
  "@ng-web-apis/intersection-observer": "^5.3.0",
42
42
  "@ng-web-apis/mutation-observer": "^5.3.0",
43
43
  "@ng-web-apis/platform": "^5.3.0",
44
- "@taiga-ui/cdk": "5.15.0",
44
+ "@taiga-ui/cdk": "5.16.0",
45
45
  "@taiga-ui/event-plugins": "^5.0.0",
46
- "@taiga-ui/i18n": "5.15.0",
46
+ "@taiga-ui/i18n": "5.16.0",
47
47
  "@taiga-ui/polymorpheus": "^5.0.1",
48
- "@taiga-ui/styles": "5.15.0",
48
+ "@taiga-ui/styles": "5.16.0",
49
49
  "rxjs": ">=7.0.0"
50
50
  },
51
51
  "schematics": "./schematics/collection.json",
@@ -63,22 +63,22 @@
63
63
  "types": "./classes/index.d.ts",
64
64
  "default": "./fesm2022/taiga-ui-core-classes.mjs"
65
65
  },
66
- "./components": {
67
- "types": "./components/index.d.ts",
68
- "default": "./fesm2022/taiga-ui-core-components.mjs"
69
- },
70
66
  "./directives": {
71
67
  "types": "./directives/index.d.ts",
72
68
  "default": "./fesm2022/taiga-ui-core-directives.mjs"
73
69
  },
74
- "./portals": {
75
- "types": "./portals/index.d.ts",
76
- "default": "./fesm2022/taiga-ui-core-portals.mjs"
77
- },
78
70
  "./pipes": {
79
71
  "types": "./pipes/index.d.ts",
80
72
  "default": "./fesm2022/taiga-ui-core-pipes.mjs"
81
73
  },
74
+ "./components": {
75
+ "types": "./components/index.d.ts",
76
+ "default": "./fesm2022/taiga-ui-core-components.mjs"
77
+ },
78
+ "./portals": {
79
+ "types": "./portals/index.d.ts",
80
+ "default": "./fesm2022/taiga-ui-core-portals.mjs"
81
+ },
82
82
  "./services": {
83
83
  "types": "./services/index.d.ts",
84
84
  "default": "./fesm2022/taiga-ui-core-services.mjs"
@@ -95,6 +95,42 @@
95
95
  "types": "./utils/index.d.ts",
96
96
  "default": "./fesm2022/taiga-ui-core-utils.mjs"
97
97
  },
98
+ "./directives/appearance": {
99
+ "types": "./directives/appearance/index.d.ts",
100
+ "default": "./fesm2022/taiga-ui-core-directives-appearance.mjs"
101
+ },
102
+ "./directives/button-x": {
103
+ "types": "./directives/button-x/index.d.ts",
104
+ "default": "./fesm2022/taiga-ui-core-directives-button-x.mjs"
105
+ },
106
+ "./directives/date-format": {
107
+ "types": "./directives/date-format/index.d.ts",
108
+ "default": "./fesm2022/taiga-ui-core-directives-date-format.mjs"
109
+ },
110
+ "./directives/group": {
111
+ "types": "./directives/group/index.d.ts",
112
+ "default": "./fesm2022/taiga-ui-core-directives-group.mjs"
113
+ },
114
+ "./directives/icons": {
115
+ "types": "./directives/icons/index.d.ts",
116
+ "default": "./fesm2022/taiga-ui-core-directives-icons.mjs"
117
+ },
118
+ "./directives/items-handlers": {
119
+ "types": "./directives/items-handlers/index.d.ts",
120
+ "default": "./fesm2022/taiga-ui-core-directives-items-handlers.mjs"
121
+ },
122
+ "./directives/number-format": {
123
+ "types": "./directives/number-format/index.d.ts",
124
+ "default": "./fesm2022/taiga-ui-core-directives-number-format.mjs"
125
+ },
126
+ "./pipes/filter-by-input": {
127
+ "types": "./pipes/filter-by-input/index.d.ts",
128
+ "default": "./fesm2022/taiga-ui-core-pipes-filter-by-input.mjs"
129
+ },
130
+ "./pipes/format-number": {
131
+ "types": "./pipes/format-number/index.d.ts",
132
+ "default": "./fesm2022/taiga-ui-core-pipes-format-number.mjs"
133
+ },
98
134
  "./components/button": {
99
135
  "types": "./components/button/index.d.ts",
100
136
  "default": "./fesm2022/taiga-ui-core-components-button.mjs"
@@ -179,38 +215,14 @@
179
215
  "types": "./components/title/index.d.ts",
180
216
  "default": "./fesm2022/taiga-ui-core-components-title.mjs"
181
217
  },
182
- "./directives/appearance": {
183
- "types": "./directives/appearance/index.d.ts",
184
- "default": "./fesm2022/taiga-ui-core-directives-appearance.mjs"
185
- },
186
- "./directives/button-x": {
187
- "types": "./directives/button-x/index.d.ts",
188
- "default": "./fesm2022/taiga-ui-core-directives-button-x.mjs"
189
- },
190
- "./directives/date-format": {
191
- "types": "./directives/date-format/index.d.ts",
192
- "default": "./fesm2022/taiga-ui-core-directives-date-format.mjs"
193
- },
194
- "./directives/group": {
195
- "types": "./directives/group/index.d.ts",
196
- "default": "./fesm2022/taiga-ui-core-directives-group.mjs"
197
- },
198
- "./directives/icons": {
199
- "types": "./directives/icons/index.d.ts",
200
- "default": "./fesm2022/taiga-ui-core-directives-icons.mjs"
201
- },
202
- "./directives/items-handlers": {
203
- "types": "./directives/items-handlers/index.d.ts",
204
- "default": "./fesm2022/taiga-ui-core-directives-items-handlers.mjs"
205
- },
206
- "./directives/number-format": {
207
- "types": "./directives/number-format/index.d.ts",
208
- "default": "./fesm2022/taiga-ui-core-directives-number-format.mjs"
209
- },
210
218
  "./portals/alert": {
211
219
  "types": "./portals/alert/index.d.ts",
212
220
  "default": "./fesm2022/taiga-ui-core-portals-alert.mjs"
213
221
  },
222
+ "./portals/close": {
223
+ "types": "./portals/close/index.d.ts",
224
+ "default": "./fesm2022/taiga-ui-core-portals-close.mjs"
225
+ },
214
226
  "./portals/dialog": {
215
227
  "types": "./portals/dialog/index.d.ts",
216
228
  "default": "./fesm2022/taiga-ui-core-portals-dialog.mjs"
@@ -231,14 +243,6 @@
231
243
  "types": "./portals/popup/index.d.ts",
232
244
  "default": "./fesm2022/taiga-ui-core-portals-popup.mjs"
233
245
  },
234
- "./pipes/filter-by-input": {
235
- "types": "./pipes/filter-by-input/index.d.ts",
236
- "default": "./fesm2022/taiga-ui-core-pipes-filter-by-input.mjs"
237
- },
238
- "./pipes/format-number": {
239
- "types": "./pipes/format-number/index.d.ts",
240
- "default": "./fesm2022/taiga-ui-core-pipes-format-number.mjs"
241
- },
242
246
  "./utils/dom": {
243
247
  "types": "./utils/dom/index.d.ts",
244
248
  "default": "./fesm2022/taiga-ui-core-utils-dom.mjs"
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Emits on Esc/CloseWatcher and on clicks outside the host, tracked as
4
+ * mousedown/mouseup pairs → drag inside + release outside does not emit.
5
+ * Portals stacked after the host count as inside, clicks on pseudo-element
6
+ * overlays are detected by coordinates against the host rect.
7
+ */
8
+ export declare class TuiClose {
9
+ readonly tuiClose: import("@angular/core").OutputRef<unknown>;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiClose, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiClose, "[tuiClose]", never, {}, { "tuiClose": "tuiClose"; }, never, never, true, never>;
12
+ }
@@ -0,0 +1 @@
1
+ export * from './close.directive';
@@ -8,8 +8,11 @@ export declare class TuiDialogCloseService extends Observable<unknown> {
8
8
  private readonly el;
9
9
  private readonly esc$;
10
10
  private readonly mousedown$;
11
+ private readonly watcher$;
11
12
  constructor();
12
13
  private isOutside;
14
+ private shouldClose;
15
+ private isOutsideRect;
13
16
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiDialogCloseService, never>;
14
17
  static ɵprov: i0.ɵɵInjectableDeclaration<TuiDialogCloseService>;
15
18
  }
@@ -1,4 +1,5 @@
1
1
  export * from '@taiga-ui/core/portals/alert';
2
+ export * from '@taiga-ui/core/portals/close';
2
3
  export * from '@taiga-ui/core/portals/dialog';
3
4
  export * from '@taiga-ui/core/portals/dropdown';
4
5
  export * from '@taiga-ui/core/portals/hint';