@taiga-ui/core 4.52.0-canary.6de148b → 4.52.0-canary.763e67d

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 (127) hide show
  1. package/classes/accessors.d.ts +1 -1
  2. package/components/calendar/calendar-sheet.component.d.ts +1 -1
  3. package/components/calendar/calendar-sheet.pipe.d.ts +1 -1
  4. package/components/calendar/calendar.options.d.ts +9 -0
  5. package/components/calendar/index.d.ts +1 -0
  6. package/components/calendar/order-week-days.pipe.d.ts +1 -1
  7. package/components/input/input.d.ts +4 -1
  8. package/components/label/label.directive.d.ts +1 -1
  9. package/components/link/index.d.ts +0 -1
  10. package/components/link/link.directive.d.ts +8 -6
  11. package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
  12. package/components/scrollbar/scrollbar.component.d.ts +1 -5
  13. package/components/spin-button/spin-button.component.d.ts +1 -1
  14. package/directives/items-handlers/items-handlers.directive.d.ts +5 -9
  15. package/directives/items-handlers/items-handlers.tokens.d.ts +4 -4
  16. package/fesm2022/taiga-ui-core-classes.mjs +3 -3
  17. package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
  18. package/fesm2022/taiga-ui-core-components-button.mjs +7 -7
  19. package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-core-components-calendar.mjs +35 -29
  21. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-core-components-cell.mjs +6 -6
  23. package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-core-components-data-list.mjs +17 -17
  25. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-core-components-error.mjs +9 -9
  27. package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-core-components-expand.mjs +3 -3
  29. package/fesm2022/taiga-ui-core-components-expand.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-core-components-icon.mjs +6 -6
  31. package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-core-components-input.mjs +17 -8
  33. package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-core-components-label.mjs +10 -12
  35. package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
  36. package/fesm2022/taiga-ui-core-components-link.mjs +13 -24
  37. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-core-components-loader.mjs +3 -3
  39. package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-core-components-notification.mjs +19 -21
  41. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-core-components-root.mjs +4 -4
  43. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +42 -47
  45. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-core-components-spin-button.mjs +5 -5
  47. package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-core-components-textfield.mjs +32 -30
  49. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-core-components-title.mjs +6 -6
  51. package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-core-directives-appearance.mjs +10 -10
  53. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-core-directives-date-format.mjs +3 -3
  55. package/fesm2022/taiga-ui-core-directives-date-format.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-core-directives-group.mjs +7 -7
  57. package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-core-directives-icons.mjs +9 -9
  59. package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +15 -36
  61. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-core-directives-number-format.mjs +3 -3
  63. package/fesm2022/taiga-ui-core-directives-number-format.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-core-pipes-format-number.mjs +3 -3
  65. package/fesm2022/taiga-ui-core-pipes-format-number.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-core-portals-alert.mjs +10 -10
  67. package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-core-portals-dialog.mjs +13 -13
  69. package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-core-portals-dropdown.mjs +57 -57
  71. package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-core-portals-hint.mjs +55 -55
  73. package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-core-portals-modal.mjs +8 -8
  75. package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-core-portals-popup.mjs +9 -9
  77. package/fesm2022/taiga-ui-core-portals-popup.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-core-services.mjs +15 -34
  79. package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-core-tokens.mjs +4 -28
  81. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-core-utils-dom.mjs.map +1 -1
  83. package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +13 -4
  85. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-core.mjs +0 -1
  87. package/fesm2022/taiga-ui-core.mjs.map +1 -1
  88. package/index.d.ts +0 -1
  89. package/package.json +60 -65
  90. package/portals/hint/hint-position.directive.d.ts +3 -3
  91. package/portals/hint/hint.directive.d.ts +1 -1
  92. package/services/index.d.ts +0 -1
  93. package/styles/components/appearance.less +5 -0
  94. package/styles/components/button.less +1 -1
  95. package/styles/components/link.less +8 -23
  96. package/styles/components/notification.less +4 -4
  97. package/styles/components/textfield.less +22 -58
  98. package/styles/mixins/appearance.less +9 -25
  99. package/styles/mixins/appearance.scss +8 -24
  100. package/styles/taiga-ui-local.less +0 -1
  101. package/styles/taiga-ui-local.scss +0 -1
  102. package/styles/taiga-ui-theme.less +0 -1
  103. package/styles/theme/appearance/outline.less +9 -18
  104. package/styles/theme/appearance/primary.less +2 -4
  105. package/styles/theme/appearance/secondary.less +6 -14
  106. package/styles/theme/appearance/status.less +0 -4
  107. package/styles/theme/appearance/table.less +38 -31
  108. package/styles/theme/appearance.less +0 -1
  109. package/styles/theme/variables.less +15 -15
  110. package/tokens/common-icons.d.ts +2 -0
  111. package/tokens/index.d.ts +0 -4
  112. package/types/point.d.ts +1 -1
  113. package/utils/miscellaneous/font-scaling.d.ts +2 -1
  114. package/animations/animations.d.ts +0 -109
  115. package/animations/index.d.ts +0 -1
  116. package/components/link/link.options.d.ts +0 -10
  117. package/fesm2022/taiga-ui-core-animations.mjs +0 -370
  118. package/fesm2022/taiga-ui-core-animations.mjs.map +0 -1
  119. package/services/dark-theme.service.d.ts +0 -10
  120. package/styles/mixins/wrapper.less +0 -64
  121. package/styles/mixins/wrapper.scss +0 -61
  122. package/styles/theme/appearance/opposite.less +0 -17
  123. package/styles/theme/wrapper.less +0 -211
  124. package/tokens/day-type-handler.d.ts +0 -7
  125. package/tokens/first-day-of-week.d.ts +0 -5
  126. package/tokens/scroll-ref.d.ts +0 -2
  127. package/tokens/spin-icons.d.ts +0 -6
@@ -1,17 +1,26 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
- import { inject, InjectionToken, provideAppInitializer, effect } from '@angular/core';
2
+ import { InjectionToken, signal, inject, provideAppInitializer, effect } from '@angular/core';
3
3
  import { TUI_FONT_SIZE_HANDLER } from '@taiga-ui/cdk/directives/font-size';
4
4
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
5
+ import { tuiPx, tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
5
6
  import { tuiGetElementObscures } from '@taiga-ui/cdk/utils/dom';
6
7
  import { REMOVE_STYLES_ON_COMPONENT_DESTROY } from '@angular/platform-browser';
7
- import { tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
8
8
  import { TUI_DARK_MODE } from '@taiga-ui/core/tokens';
9
9
  import { provideEventPlugins } from '@taiga-ui/event-plugins';
10
10
 
11
+ const TUI_FONT_OFFSET = new InjectionToken(ngDevMode ? 'TUI_FONT_OFFSET' : '', { factory: () => signal(0) });
11
12
  function tuiEnableFontScaling() {
12
13
  return {
13
14
  provide: TUI_FONT_SIZE_HANDLER,
14
- useFactory: ({ documentElement } = inject(DOCUMENT)) => (size) => documentElement.style.setProperty('--tui-font-offset', `${tuiClamp(size, 17, 28) - 17}px`),
15
+ useFactory: () => {
16
+ const offset = inject(TUI_FONT_OFFSET);
17
+ const { documentElement } = inject(DOCUMENT);
18
+ return (size) => {
19
+ const current = tuiClamp(size, 17, 28) - 17;
20
+ offset.set(current);
21
+ return documentElement.style.setProperty('--tui-font-offset', tuiPx(current));
22
+ };
23
+ },
15
24
  };
16
25
  }
17
26
 
@@ -122,5 +131,5 @@ function tuiSizeBigger(size, biggerThanSize = 's') {
122
131
  * Generated bundle index. Do not edit.
123
132
  */
124
133
 
125
- export { TUI_ANIMATIONS_DEFAULT_DURATION, TUI_OPTIONS, provideTaiga, tuiEnableFontScaling, tuiGetDuration, tuiIsEditingKey, tuiIsObscured, tuiOverrideOptions, tuiSizeBigger };
134
+ export { TUI_ANIMATIONS_DEFAULT_DURATION, TUI_FONT_OFFSET, TUI_OPTIONS, provideTaiga, tuiEnableFontScaling, tuiGetDuration, tuiIsEditingKey, tuiIsObscured, tuiOverrideOptions, tuiSizeBigger };
126
135
  //# sourceMappingURL=taiga-ui-core-utils-miscellaneous.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-utils-miscellaneous.mjs","sources":["../../../projects/core/utils/miscellaneous/font-scaling.ts","../../../projects/core/utils/miscellaneous/get-duration.ts","../../../projects/core/utils/miscellaneous/is-editing-key.ts","../../../projects/core/utils/miscellaneous/is-obscured.ts","../../../projects/core/utils/miscellaneous/override-options.ts","../../../projects/core/utils/miscellaneous/provide-taiga.ts","../../../projects/core/utils/miscellaneous/size-bigger.ts","../../../projects/core/utils/miscellaneous/taiga-ui-core-utils-miscellaneous.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {inject, type Provider} from '@angular/core';\nimport {TUI_FONT_SIZE_HANDLER} from '@taiga-ui/cdk/directives/font-size';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\n\nexport function tuiEnableFontScaling(): Provider {\n return {\n provide: TUI_FONT_SIZE_HANDLER,\n useFactory:\n ({documentElement} = inject(DOCUMENT)) =>\n (size: number): void =>\n documentElement.style.setProperty(\n '--tui-font-offset',\n `${tuiClamp(size, 17, 28) - 17}px`,\n ),\n };\n}\n","export const TUI_ANIMATIONS_DEFAULT_DURATION = 300;\n\nexport function tuiGetDuration(speed: number): number {\n return speed && TUI_ANIMATIONS_DEFAULT_DURATION / speed;\n}\n","const KEYS: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n\n/**\n * Check if pressed key is interactive in terms of input field\n */\nexport function tuiIsEditingKey(key = ''): boolean {\n return key.length === 1 || KEYS.includes(key);\n}\n","import {tuiGetElementObscures} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * @internal\n */\nexport function tuiIsObscured(el: HTMLElement, exceptSelector = 'tui-popups'): boolean {\n return !!tuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\n}\n","export function tuiOverrideOptions<T>(\n override: Partial<T>,\n fallback: T,\n): (directive: T | null, options: T | null) => T {\n return (directive, options) => {\n const result: T = directive || {...(options || fallback)};\n\n Object.keys(override).forEach((key) => {\n // Update directive props with new defaults before inputs are processed\n (result as Record<string, unknown>)[key] = override[key as keyof T];\n });\n\n return result;\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {\n effect,\n type EnvironmentProviders,\n inject,\n InjectionToken,\n provideAppInitializer,\n type Provider,\n} from '@angular/core';\nimport {REMOVE_STYLES_ON_COMPONENT_DESTROY} from '@angular/platform-browser';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DARK_MODE} from '@taiga-ui/core/tokens';\nimport {provideEventPlugins} from '@taiga-ui/event-plugins';\n\nimport {tuiEnableFontScaling} from './font-scaling';\n\ninterface ExperimentalAPIs {\n readonly all: boolean;\n}\n\nexport interface TuiOptions {\n readonly mode?: 'dark' | 'light';\n readonly apis: Partial<ExperimentalAPIs> | 'stable';\n readonly fontScaling: boolean;\n readonly scrollbars: 'custom' | 'native';\n}\n\nconst DEFAULT: TuiOptions = {\n apis: 'stable',\n fontScaling: true,\n scrollbars: 'custom',\n};\n\nexport const TUI_OPTIONS = new InjectionToken<TuiOptions>(ngDevMode ? 'TUI_OPTIONS' : '');\n\nexport function provideTaiga(\n config: Partial<TuiOptions> = {},\n): Array<EnvironmentProviders | Provider> {\n const options = {...DEFAULT, ...config};\n const providers: Array<EnvironmentProviders | Provider> = [\n {\n provide: REMOVE_STYLES_ON_COMPONENT_DESTROY,\n useValue: false,\n },\n {\n provide: TUI_OPTIONS,\n useValue: options,\n },\n provideEventPlugins(),\n provideAppInitializer(() => {\n const doc = inject(DOCUMENT);\n const mode = inject(TUI_DARK_MODE);\n\n if (options.scrollbars === 'custom') {\n doc.documentElement.classList.add('tui-zero-scrollbar');\n }\n\n if (tuiIsPresent(options.mode)) {\n mode.set(options.mode === 'dark');\n }\n\n effect(() => {\n if (mode()) {\n doc.body.setAttribute('tuiTheme', 'dark');\n } else {\n doc.body.removeAttribute('tuiTheme');\n }\n });\n }),\n ];\n\n if (options.fontScaling) {\n providers.push(tuiEnableFontScaling());\n }\n\n return providers;\n}\n","import {type TuiSizeXXL, type TuiSizeXXS} from '@taiga-ui/core/types';\n\nconst SIZES: Record<TuiSizeXXL | TuiSizeXXS, number> = {\n xxs: 0,\n xs: 1,\n s: 2,\n m: 3,\n l: 4,\n xl: 5,\n xxl: 6,\n};\n\n/**\n * Compares size constants to determine if first size is bigger than the second\n *\n * @param size size that we need to compare\n * @param biggerThanSize size to compare with, 's' by default\n */\nexport function tuiSizeBigger(\n size: TuiSizeXXL | TuiSizeXXS,\n biggerThanSize: TuiSizeXXL | TuiSizeXXS = 's',\n): boolean {\n return SIZES[size] > SIZES[biggerThanSize];\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-utils-miscellaneous.mjs","sources":["../../../projects/core/utils/miscellaneous/font-scaling.ts","../../../projects/core/utils/miscellaneous/get-duration.ts","../../../projects/core/utils/miscellaneous/is-editing-key.ts","../../../projects/core/utils/miscellaneous/is-obscured.ts","../../../projects/core/utils/miscellaneous/override-options.ts","../../../projects/core/utils/miscellaneous/provide-taiga.ts","../../../projects/core/utils/miscellaneous/size-bigger.ts","../../../projects/core/utils/miscellaneous/taiga-ui-core-utils-miscellaneous.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n inject,\n InjectionToken,\n type Provider,\n signal,\n type WritableSignal,\n} from '@angular/core';\nimport {TUI_FONT_SIZE_HANDLER} from '@taiga-ui/cdk/directives/font-size';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_FONT_OFFSET = new InjectionToken<WritableSignal<number>>(\n ngDevMode ? 'TUI_FONT_OFFSET' : '',\n {factory: () => signal(0)},\n);\n\nexport function tuiEnableFontScaling(): Provider {\n return {\n provide: TUI_FONT_SIZE_HANDLER,\n useFactory: () => {\n const offset = inject(TUI_FONT_OFFSET);\n const {documentElement} = inject(DOCUMENT);\n\n return (size: number): void => {\n const current = tuiClamp(size, 17, 28) - 17;\n\n offset.set(current);\n\n return documentElement.style.setProperty(\n '--tui-font-offset',\n tuiPx(current),\n );\n };\n },\n };\n}\n","export const TUI_ANIMATIONS_DEFAULT_DURATION = 300;\n\nexport function tuiGetDuration(speed: number): number {\n return speed && TUI_ANIMATIONS_DEFAULT_DURATION / speed;\n}\n","const KEYS: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n\n/**\n * Check if pressed key is interactive in terms of input field\n */\nexport function tuiIsEditingKey(key = ''): boolean {\n return key.length === 1 || KEYS.includes(key);\n}\n","import {tuiGetElementObscures} from '@taiga-ui/cdk/utils/dom';\n\n/**\n * @internal\n */\nexport function tuiIsObscured(el: HTMLElement, exceptSelector = 'tui-popups'): boolean {\n return !!tuiGetElementObscures(el)?.some((el) => !el.closest(exceptSelector));\n}\n","export function tuiOverrideOptions<T>(\n override: Partial<T>,\n fallback: T,\n): (directive: T | null, options: T | null) => T {\n return (directive, options) => {\n const result: T = directive || {...(options || fallback)};\n\n Object.keys(override).forEach((key) => {\n // Update directive props with new defaults before inputs are processed\n (result as Record<string, unknown>)[key] = override[key as keyof T];\n });\n\n return result;\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {\n effect,\n type EnvironmentProviders,\n inject,\n InjectionToken,\n provideAppInitializer,\n type Provider,\n} from '@angular/core';\nimport {REMOVE_STYLES_ON_COMPONENT_DESTROY} from '@angular/platform-browser';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DARK_MODE} from '@taiga-ui/core/tokens';\nimport {provideEventPlugins} from '@taiga-ui/event-plugins';\n\nimport {tuiEnableFontScaling} from './font-scaling';\n\ninterface ExperimentalAPIs {\n readonly all: boolean;\n}\n\nexport interface TuiOptions {\n readonly mode?: 'dark' | 'light';\n readonly apis: Partial<ExperimentalAPIs> | 'stable';\n readonly fontScaling: boolean;\n readonly scrollbars: 'custom' | 'native';\n}\n\nconst DEFAULT: TuiOptions = {\n apis: 'stable',\n fontScaling: true,\n scrollbars: 'custom',\n};\n\nexport const TUI_OPTIONS = new InjectionToken<TuiOptions>(ngDevMode ? 'TUI_OPTIONS' : '');\n\nexport function provideTaiga(\n config: Partial<TuiOptions> = {},\n): Array<EnvironmentProviders | Provider> {\n const options = {...DEFAULT, ...config};\n const providers: Array<EnvironmentProviders | Provider> = [\n {\n provide: REMOVE_STYLES_ON_COMPONENT_DESTROY,\n useValue: false,\n },\n {\n provide: TUI_OPTIONS,\n useValue: options,\n },\n provideEventPlugins(),\n provideAppInitializer(() => {\n const doc = inject(DOCUMENT);\n const mode = inject(TUI_DARK_MODE);\n\n if (options.scrollbars === 'custom') {\n doc.documentElement.classList.add('tui-zero-scrollbar');\n }\n\n if (tuiIsPresent(options.mode)) {\n mode.set(options.mode === 'dark');\n }\n\n effect(() => {\n if (mode()) {\n doc.body.setAttribute('tuiTheme', 'dark');\n } else {\n doc.body.removeAttribute('tuiTheme');\n }\n });\n }),\n ];\n\n if (options.fontScaling) {\n providers.push(tuiEnableFontScaling());\n }\n\n return providers;\n}\n","import {type TuiSizeXXL, type TuiSizeXXS} from '@taiga-ui/core/types';\n\nconst SIZES: Record<TuiSizeXXL | TuiSizeXXS, number> = {\n xxs: 0,\n xs: 1,\n s: 2,\n m: 3,\n l: 4,\n xl: 5,\n xxl: 6,\n};\n\n/**\n * Compares size constants to determine if first size is bigger than the second\n *\n * @param size size that we need to compare\n * @param biggerThanSize size to compare with, 's' by default\n */\nexport function tuiSizeBigger(\n size: TuiSizeXXL | TuiSizeXXS,\n biggerThanSize: TuiSizeXXL | TuiSizeXXS = 's',\n): boolean {\n return SIZES[size] > SIZES[biggerThanSize];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- export * from '@taiga-ui/core/animations';
2
1
  export * from '@taiga-ui/core/classes';
3
2
  export * from '@taiga-ui/core/components';
4
3
  export * from '@taiga-ui/core/directives';
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core.mjs","sources":["../../../projects/core/taiga-ui-core.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.mjs","sources":["../../../projects/core/taiga-ui-core.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAAA;;AAEG"}
package/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from '@taiga-ui/core/animations';
2
1
  export * from '@taiga-ui/core/classes';
3
2
  export * from '@taiga-ui/core/components';
4
3
  export * from '@taiga-ui/core/directives';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/core",
3
- "version": "4.52.0-canary.6de148b",
3
+ "version": "4.52.0-canary.763e67d",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -30,10 +30,18 @@
30
30
  "types": "./classes/index.d.ts",
31
31
  "default": "./fesm2022/taiga-ui-core-classes.mjs"
32
32
  },
33
+ "./components": {
34
+ "types": "./components/index.d.ts",
35
+ "default": "./fesm2022/taiga-ui-core-components.mjs"
36
+ },
33
37
  "./directives": {
34
38
  "types": "./directives/index.d.ts",
35
39
  "default": "./fesm2022/taiga-ui-core-directives.mjs"
36
40
  },
41
+ "./pipes": {
42
+ "types": "./pipes/index.d.ts",
43
+ "default": "./fesm2022/taiga-ui-core-pipes.mjs"
44
+ },
37
45
  "./portals": {
38
46
  "types": "./portals/index.d.ts",
39
47
  "default": "./fesm2022/taiga-ui-core-portals.mjs"
@@ -42,78 +50,18 @@
42
50
  "types": "./services/index.d.ts",
43
51
  "default": "./fesm2022/taiga-ui-core-services.mjs"
44
52
  },
45
- "./animations": {
46
- "types": "./animations/index.d.ts",
47
- "default": "./fesm2022/taiga-ui-core-animations.mjs"
48
- },
49
- "./components": {
50
- "types": "./components/index.d.ts",
51
- "default": "./fesm2022/taiga-ui-core-components.mjs"
52
- },
53
- "./pipes": {
54
- "types": "./pipes/index.d.ts",
55
- "default": "./fesm2022/taiga-ui-core-pipes.mjs"
53
+ "./tokens": {
54
+ "types": "./tokens/index.d.ts",
55
+ "default": "./fesm2022/taiga-ui-core-tokens.mjs"
56
56
  },
57
57
  "./types": {
58
58
  "types": "./types/index.d.ts",
59
59
  "default": "./fesm2022/taiga-ui-core-types.mjs"
60
60
  },
61
- "./tokens": {
62
- "types": "./tokens/index.d.ts",
63
- "default": "./fesm2022/taiga-ui-core-tokens.mjs"
64
- },
65
61
  "./utils": {
66
62
  "types": "./utils/index.d.ts",
67
63
  "default": "./fesm2022/taiga-ui-core-utils.mjs"
68
64
  },
69
- "./directives/appearance": {
70
- "types": "./directives/appearance/index.d.ts",
71
- "default": "./fesm2022/taiga-ui-core-directives-appearance.mjs"
72
- },
73
- "./directives/date-format": {
74
- "types": "./directives/date-format/index.d.ts",
75
- "default": "./fesm2022/taiga-ui-core-directives-date-format.mjs"
76
- },
77
- "./directives/group": {
78
- "types": "./directives/group/index.d.ts",
79
- "default": "./fesm2022/taiga-ui-core-directives-group.mjs"
80
- },
81
- "./directives/icons": {
82
- "types": "./directives/icons/index.d.ts",
83
- "default": "./fesm2022/taiga-ui-core-directives-icons.mjs"
84
- },
85
- "./directives/items-handlers": {
86
- "types": "./directives/items-handlers/index.d.ts",
87
- "default": "./fesm2022/taiga-ui-core-directives-items-handlers.mjs"
88
- },
89
- "./directives/number-format": {
90
- "types": "./directives/number-format/index.d.ts",
91
- "default": "./fesm2022/taiga-ui-core-directives-number-format.mjs"
92
- },
93
- "./portals/alert": {
94
- "types": "./portals/alert/index.d.ts",
95
- "default": "./fesm2022/taiga-ui-core-portals-alert.mjs"
96
- },
97
- "./portals/dialog": {
98
- "types": "./portals/dialog/index.d.ts",
99
- "default": "./fesm2022/taiga-ui-core-portals-dialog.mjs"
100
- },
101
- "./portals/dropdown": {
102
- "types": "./portals/dropdown/index.d.ts",
103
- "default": "./fesm2022/taiga-ui-core-portals-dropdown.mjs"
104
- },
105
- "./portals/hint": {
106
- "types": "./portals/hint/index.d.ts",
107
- "default": "./fesm2022/taiga-ui-core-portals-hint.mjs"
108
- },
109
- "./portals/modal": {
110
- "types": "./portals/modal/index.d.ts",
111
- "default": "./fesm2022/taiga-ui-core-portals-modal.mjs"
112
- },
113
- "./portals/popup": {
114
- "types": "./portals/popup/index.d.ts",
115
- "default": "./fesm2022/taiga-ui-core-portals-popup.mjs"
116
- },
117
65
  "./components/button": {
118
66
  "types": "./components/button/index.d.ts",
119
67
  "default": "./fesm2022/taiga-ui-core-components-button.mjs"
@@ -182,10 +130,58 @@
182
130
  "types": "./components/title/index.d.ts",
183
131
  "default": "./fesm2022/taiga-ui-core-components-title.mjs"
184
132
  },
133
+ "./directives/appearance": {
134
+ "types": "./directives/appearance/index.d.ts",
135
+ "default": "./fesm2022/taiga-ui-core-directives-appearance.mjs"
136
+ },
137
+ "./directives/date-format": {
138
+ "types": "./directives/date-format/index.d.ts",
139
+ "default": "./fesm2022/taiga-ui-core-directives-date-format.mjs"
140
+ },
141
+ "./directives/group": {
142
+ "types": "./directives/group/index.d.ts",
143
+ "default": "./fesm2022/taiga-ui-core-directives-group.mjs"
144
+ },
145
+ "./directives/icons": {
146
+ "types": "./directives/icons/index.d.ts",
147
+ "default": "./fesm2022/taiga-ui-core-directives-icons.mjs"
148
+ },
149
+ "./directives/items-handlers": {
150
+ "types": "./directives/items-handlers/index.d.ts",
151
+ "default": "./fesm2022/taiga-ui-core-directives-items-handlers.mjs"
152
+ },
153
+ "./directives/number-format": {
154
+ "types": "./directives/number-format/index.d.ts",
155
+ "default": "./fesm2022/taiga-ui-core-directives-number-format.mjs"
156
+ },
185
157
  "./pipes/format-number": {
186
158
  "types": "./pipes/format-number/index.d.ts",
187
159
  "default": "./fesm2022/taiga-ui-core-pipes-format-number.mjs"
188
160
  },
161
+ "./portals/alert": {
162
+ "types": "./portals/alert/index.d.ts",
163
+ "default": "./fesm2022/taiga-ui-core-portals-alert.mjs"
164
+ },
165
+ "./portals/dialog": {
166
+ "types": "./portals/dialog/index.d.ts",
167
+ "default": "./fesm2022/taiga-ui-core-portals-dialog.mjs"
168
+ },
169
+ "./portals/dropdown": {
170
+ "types": "./portals/dropdown/index.d.ts",
171
+ "default": "./fesm2022/taiga-ui-core-portals-dropdown.mjs"
172
+ },
173
+ "./portals/hint": {
174
+ "types": "./portals/hint/index.d.ts",
175
+ "default": "./fesm2022/taiga-ui-core-portals-hint.mjs"
176
+ },
177
+ "./portals/modal": {
178
+ "types": "./portals/modal/index.d.ts",
179
+ "default": "./fesm2022/taiga-ui-core-portals-modal.mjs"
180
+ },
181
+ "./portals/popup": {
182
+ "types": "./portals/popup/index.d.ts",
183
+ "default": "./fesm2022/taiga-ui-core-portals-popup.mjs"
184
+ },
189
185
  "./utils/dom": {
190
186
  "types": "./utils/dom/index.d.ts",
191
187
  "default": "./fesm2022/taiga-ui-core-utils-dom.mjs"
@@ -200,7 +196,6 @@
200
196
  }
201
197
  },
202
198
  "peerDependencies": {
203
- "@angular/animations": ">=19.0.0",
204
199
  "@angular/common": ">=19.0.0",
205
200
  "@angular/core": ">=19.0.0",
206
201
  "@angular/forms": ">=19.0.0",
@@ -4,17 +4,17 @@ import { type TuiHintDirection } from './hint-options.directive';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class TuiHintPosition extends TuiPositionAccessor {
6
6
  private readonly el;
7
- private readonly offset;
8
7
  private readonly viewport;
9
8
  private readonly accessor;
10
9
  private readonly points;
11
10
  readonly direction: import("@angular/core").InputSignal<TuiHintDirection | TuiHintDirection[]>;
11
+ readonly offset: import("@angular/core").InputSignal<number>;
12
12
  readonly directionChange: import("@angular/core").OutputEmitterRef<TuiHintDirection>;
13
13
  readonly type = "hint";
14
14
  emitDirection(direction: TuiHintDirection): void;
15
- getPosition(rect: DOMRect, el?: HTMLElement): TuiPoint;
15
+ getPosition({ width, height }: DOMRect): TuiPoint;
16
16
  private get fallback();
17
17
  private checkPosition;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiHintPosition, never>;
19
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiHintPosition, never, never, { "direction": { "alias": "tuiHintDirection"; "required": false; "isSignal": true; }; }, { "directionChange": "tuiHintDirectionChange"; }, never, never, true, never>;
19
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiHintPosition, never, never, { "direction": { "alias": "tuiHintDirection"; "required": false; "isSignal": true; }; "offset": { "alias": "tuiHintOffset"; "required": false; "isSignal": true; }; }, { "directionChange": "tuiHintDirectionChange"; }, never, never, true, never>;
20
20
  }
@@ -20,5 +20,5 @@ export declare class TuiHintDirective<C> implements OnDestroy, OnChanges, TuiRec
20
20
  getClientRect(): DOMRect;
21
21
  toggle(show: boolean): void;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiHintDirective<any>, never>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiHintDirective<any>, "[tuiHint]:not(ng-container):not(ng-template)", never, { "content": { "alias": "tuiHint"; "required": false; "isSignal": true; }; "context": { "alias": "tuiHintContext"; "required": false; "isSignal": true; }; "appearance": { "alias": "tuiHintAppearance"; "required": false; "isSignal": true; }; }, { "visible": "tuiHintVisible"; }, never, never, true, [{ directive: typeof i1.TuiHintDriver; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiHintHover; inputs: { "tuiHintHideDelay": "tuiHintHideDelay"; "tuiHintShowDelay": "tuiHintShowDelay"; }; outputs: {}; }, { directive: typeof i3.TuiHintPosition; inputs: { "tuiHintDirection": "tuiHintDirection"; }; outputs: { "tuiHintDirectionChange": "tuiHintDirectionChange"; }; }]>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiHintDirective<any>, "[tuiHint]:not(ng-container):not(ng-template)", never, { "content": { "alias": "tuiHint"; "required": false; "isSignal": true; }; "context": { "alias": "tuiHintContext"; "required": false; "isSignal": true; }; "appearance": { "alias": "tuiHintAppearance"; "required": false; "isSignal": true; }; }, { "visible": "tuiHintVisible"; }, never, never, true, [{ directive: typeof i1.TuiHintDriver; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiHintHover; inputs: { "tuiHintHideDelay": "tuiHintHideDelay"; "tuiHintShowDelay": "tuiHintShowDelay"; }; outputs: {}; }, { directive: typeof i3.TuiHintPosition; inputs: { "tuiHintDirection": "tuiHintDirection"; "tuiHintOffset": "tuiHintOffset"; }; outputs: { "tuiHintDirectionChange": "tuiHintDirectionChange"; }; }]>;
24
24
  }
@@ -1,4 +1,3 @@
1
1
  export * from './breakpoint.service';
2
- export * from './dark-theme.service';
3
2
  export * from './position.service';
4
3
  export * from './visual-viewport.service';
@@ -41,5 +41,10 @@
41
41
  .appearance-disabled({
42
42
  cursor: initial;
43
43
  opacity: var(--tui-disabled-opacity);
44
+
45
+ &::before,
46
+ &::after {
47
+ cursor: initial;
48
+ }
44
49
  });
45
50
  }
@@ -138,7 +138,7 @@
138
138
  margin: 0;
139
139
  }
140
140
 
141
- &&[style*='--t-icon-start:']::after {
141
+ &&[data-icon-start]::after {
142
142
  display: none;
143
143
  }
144
144
  }
@@ -21,19 +21,15 @@
21
21
  border: none;
22
22
  cursor: pointer;
23
23
  font: inherit;
24
- color: var(--tui-text-primary);
24
+ color: inherit;
25
+ border-radius: 0.125rem;
26
+ outline-width: 1px;
27
+ outline-offset: -1px;
25
28
  text-decoration: none dashed currentColor;
26
29
  text-underline-offset: 0.2em;
27
- text-decoration-thickness: 0.7px;
30
+ text-decoration-thickness: 1px;
28
31
  text-decoration-color: color-mix(in lch, currentColor, transparent);
29
32
 
30
- // TODO: Remove in v5
31
- @media @tui-mouse {
32
- &:hover {
33
- --tui-text-secondary: var(--tui-text-primary);
34
- }
35
- }
36
-
37
33
  &::before {
38
34
  margin-inline-end: 0.25rem;
39
35
  }
@@ -58,12 +54,6 @@
58
54
  display: inline-block;
59
55
  }
60
56
 
61
- .appearance-focus({
62
- outline: none;
63
- background: var(--tui-service-selection-background);
64
- background: color-mix(in lch, currentColor 12%, transparent);
65
- });
66
-
67
57
  .appearance-hover({
68
58
  text-decoration-color: currentColor;
69
59
  });
@@ -72,13 +62,8 @@
72
62
  text-decoration-color: currentColor;
73
63
  });
74
64
 
75
- @media @tui-mouse {
76
- &[data-appearance='']:hover {
77
- opacity: 0.7;
78
- }
79
- }
80
-
81
- &[data-appearance='']:active {
82
- opacity: 0.7;
65
+ &[data-appearance=''] {
66
+ text-decoration-line: underline;
67
+ text-decoration-style: solid;
83
68
  }
84
69
  }
@@ -42,11 +42,11 @@ tui-notification,
42
42
  --t-start: 0;
43
43
  --t-end: 0;
44
44
 
45
- &[style*='--t-icon-start:'] {
45
+ &[data-icon-start] {
46
46
  --t-start: 2rem;
47
47
  }
48
48
 
49
- &[style*='--t-icon-end:'] {
49
+ &[data-icon-end] {
50
50
  --t-end: 1.5rem;
51
51
  }
52
52
 
@@ -78,7 +78,7 @@ tui-notification,
78
78
  line-height: 1.25rem;
79
79
  border-radius: var(--tui-radius-m);
80
80
 
81
- &[style*='--t-icon-start:'] {
81
+ &[data-icon-start] {
82
82
  --t-start: 1.5rem;
83
83
  }
84
84
 
@@ -133,7 +133,7 @@ tui-notification,
133
133
  line-height: 1.25rem;
134
134
  border-radius: var(--tui-radius-m);
135
135
 
136
- &[style*='--t-icon-start:'] {
136
+ &[data-icon-start] {
137
137
  --t-start: 1.625rem;
138
138
  }
139
139
 
@@ -30,11 +30,11 @@ tui-textfield {
30
30
  color: var(--tui-text-tertiary);
31
31
  }
32
32
 
33
- &[style*='--t-icon-start:'] {
33
+ &[data-icon-start] {
34
34
  --t-start: 2.25rem;
35
35
  }
36
36
 
37
- &[style*='--t-icon-end:'] {
37
+ &[data-icon-end] {
38
38
  --t-end: 2.25rem;
39
39
  }
40
40
 
@@ -42,8 +42,7 @@ tui-textfield {
42
42
  position: relative;
43
43
  block-size: auto;
44
44
  align-self: stretch;
45
- border-inline-start: var(--t-padding) solid transparent;
46
- border-inline-end: var(--t-padding) solid transparent;
45
+ border-inline: var(--t-padding) solid transparent;
47
46
  margin: 0 calc(-1 * var(--t-padding));
48
47
  }
49
48
 
@@ -80,8 +79,7 @@ tui-textfield {
80
79
  font: inherit;
81
80
  resize: none;
82
81
  outline: none;
83
- padding-block-start: 1.125rem;
84
- padding-block-end: 1.125rem;
82
+ padding-block: 1.125rem;
85
83
  color: var(--tui-text-primary);
86
84
 
87
85
  &[inputmode='none'] {
@@ -98,31 +96,28 @@ tui-textfield {
98
96
  font: var(--tui-font-text-ui-s);
99
97
  line-height: 1rem;
100
98
 
101
- &[style*='--t-icon-start:'] {
99
+ &[data-icon-start] {
102
100
  --t-start: 1.25rem;
103
101
  }
104
102
 
105
- &[style*='--t-icon-end:'] {
103
+ &[data-icon-end] {
106
104
  --t-end: 1.25rem;
107
105
  }
108
106
 
109
107
  &::before {
110
- margin-inline-end: 0.5rem;
111
- margin-inline-start: -0.125rem;
108
+ margin-inline: -0.125rem 0.5rem;
112
109
  font-size: 1rem;
113
110
  }
114
111
 
115
112
  &::after {
116
- margin-inline-end: calc(-0.125rem - var(--t-padding));
117
- margin-inline-start: calc(0.625rem - var(--t-padding));
113
+ margin-inline: calc(0.625rem - var(--t-padding)) calc(-0.125rem - var(--t-padding));
118
114
  font-size: 1rem;
119
115
  }
120
116
 
121
117
  input,
122
118
  select,
123
119
  textarea {
124
- padding-block-start: 0.5rem;
125
- padding-block-end: 0.5rem;
120
+ padding-block: 0.5rem;
126
121
  }
127
122
 
128
123
  & > .t-content {
@@ -140,29 +135,26 @@ tui-textfield {
140
135
  font: var(--tui-font-text-ui-s);
141
136
  line-height: 1rem;
142
137
 
143
- &[style*='--t-icon-start:'] {
138
+ &[data-icon-start] {
144
139
  --t-start: 1.75rem;
145
140
  }
146
141
 
147
- &[style*='--t-icon-end:'] {
142
+ &[data-icon-end] {
148
143
  --t-end: 1.75rem;
149
144
  }
150
145
 
151
146
  &::before {
152
- margin-inline-start: -0.125rem;
153
- margin-inline-end: 0.125rem;
147
+ margin-inline: -0.125rem 0.125rem;
154
148
  }
155
149
 
156
150
  &::after {
157
- margin-inline-start: calc(0.25rem - var(--t-padding));
158
- margin-inline-end: calc(-0.125rem - var(--t-padding));
151
+ margin-inline: calc(0.25rem - var(--t-padding)) calc(-0.125rem - var(--t-padding));
159
152
  }
160
153
 
161
154
  input,
162
155
  select,
163
156
  textarea {
164
- padding-block-start: 0.875rem;
165
- padding-block-end: 0.875rem;
157
+ padding-block: 0.875rem;
166
158
  }
167
159
 
168
160
  & > .t-content {
@@ -211,36 +203,12 @@ tui-textfield {
211
203
  opacity: var(--tui-disabled-opacity);
212
204
  }
213
205
 
214
- &:has(label:not(:empty)) {
215
- & > .t-template,
216
- input:not([type='range']),
217
- select:defined,
218
- textarea:defined {
219
- padding-block-start: calc(var(--t-height) / 3);
220
- padding-block-end: 0;
221
- }
222
- }
223
-
224
- &:not([data-focus='true']):has(label:not(:empty)) {
225
- & > .t-template,
226
- input:not([type='range']),
227
- select:defined,
228
- textarea:defined {
229
- &::placeholder,
230
- &._empty {
231
- color: transparent;
232
- }
233
- }
234
- }
235
-
236
- // TODO: Fallback until Safari 15.4
237
206
  &._with-label {
238
207
  & > .t-template,
239
208
  input:not([type='range']),
240
209
  select:defined,
241
210
  textarea:defined {
242
- padding-block-start: calc(var(--t-height) / 3);
243
- padding-block-end: 0;
211
+ padding-block: calc(var(--t-height) / 3) 0;
244
212
  }
245
213
  }
246
214
 
@@ -268,8 +236,12 @@ tui-textfield {
268
236
  border-width: 0;
269
237
  overscroll-behavior: none;
270
238
  // StackBlitz changes "0rem" to "0" breaking calc
271
- padding-inline-start: calc(var(--t-start, ~'0rem') + var(--t-padding));
272
- padding-inline-end: calc(var(--t-end, ~'0rem') + var(--t-side) + var(--t-padding));
239
+ padding-inline: calc(var(--t-start, ~'0rem') + var(--t-padding))
240
+ calc(var(--t-end, ~'0rem') + var(--t-side, ~'0rem') + var(--t-padding));
241
+
242
+ &:disabled {
243
+ animation: tuiPresent 1s infinite;
244
+ }
273
245
  }
274
246
 
275
247
  & > .t-template {
@@ -338,14 +310,6 @@ tui-textfield {
338
310
  }
339
311
  });
340
312
  }
341
-
342
- // @deprecated remove in v5
343
- .ios-only({
344
- &._ios-fix {
345
- position: fixed;
346
- left: 1000rem;
347
- }
348
- });
349
313
  }
350
314
 
351
315
  // Increasing specificity to override all other styles
@@ -423,7 +387,7 @@ tui-textfield {
423
387
  }
424
388
 
425
389
  & > .t-filler:defined {
426
- pointer-events: none;
390
+ pointer-events: none !important;
427
391
  color: var(--tui-text-tertiary);
428
392
  opacity: 1;
429
393
  }