@taiga-ui/core 3.1.0 → 3.3.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 (83) hide show
  1. package/README.md +1 -6
  2. package/bundles/taiga-ui-core-components-button.umd.js +1 -1
  3. package/bundles/taiga-ui-core-components-button.umd.js.map +1 -1
  4. package/bundles/taiga-ui-core-components-dialog.umd.js +2 -2
  5. package/bundles/taiga-ui-core-components-dialog.umd.js.map +1 -1
  6. package/bundles/taiga-ui-core-components-loader.umd.js +1 -1
  7. package/bundles/taiga-ui-core-components-loader.umd.js.map +1 -1
  8. package/bundles/taiga-ui-core-components-primitive-checkbox.umd.js +1 -1
  9. package/bundles/taiga-ui-core-components-primitive-checkbox.umd.js.map +1 -1
  10. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js +4 -4
  11. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js.map +1 -1
  12. package/bundles/taiga-ui-core-components-root.umd.js +1 -1
  13. package/bundles/taiga-ui-core-directives-textfield-controller.umd.js +7 -7
  14. package/bundles/taiga-ui-core-directives-textfield-controller.umd.js.map +1 -1
  15. package/bundles/taiga-ui-core-tokens.umd.js +33 -33
  16. package/bundles/taiga-ui-core-tokens.umd.js.map +1 -1
  17. package/esm2015/components/button/button-options.js +2 -2
  18. package/esm2015/components/dialog/dialog.providers.js +3 -3
  19. package/esm2015/components/loader/loader-options.js +2 -2
  20. package/esm2015/components/primitive-checkbox/checkbox-options.js +2 -2
  21. package/esm2015/components/primitive-textfield/primitive-textfield-options.js +2 -2
  22. package/esm2015/components/primitive-textfield/primitive-textfield.component.js +1 -1
  23. package/esm2015/components/primitive-textfield/textfield/textfield.component.js +3 -3
  24. package/esm2015/components/root/root.component.js +1 -1
  25. package/esm2015/directives/textfield-controller/textfield-cleaner.directive.js +2 -2
  26. package/esm2015/directives/textfield-controller/textfield-controller.provider.js +2 -2
  27. package/esm2015/directives/textfield-controller/textfield-custom-content.directive.js +2 -2
  28. package/esm2015/directives/textfield-controller/textfield-icon-left.directive.js +2 -2
  29. package/esm2015/directives/textfield-controller/textfield-icon.directive.js +2 -2
  30. package/esm2015/directives/textfield-controller/textfield-label-outside.directive.js +2 -2
  31. package/esm2015/directives/textfield-controller/textfield-size.directive.js +2 -2
  32. package/esm2015/tokens/animation-options.js +2 -2
  33. package/esm2015/tokens/animations-duration.js +2 -2
  34. package/esm2015/tokens/assert-enabled.js +2 -2
  35. package/esm2015/tokens/data-list-accessor.js +2 -2
  36. package/esm2015/tokens/data-list-host.js +2 -2
  37. package/esm2015/tokens/document-or-shadow-root.js +2 -2
  38. package/esm2015/tokens/element-ref.js +2 -2
  39. package/esm2015/tokens/first-day-of-week.js +2 -2
  40. package/esm2015/tokens/i18n.js +7 -7
  41. package/esm2015/tokens/icon-place.js +2 -2
  42. package/esm2015/tokens/icons-path.js +2 -2
  43. package/esm2015/tokens/icons.js +2 -2
  44. package/esm2015/tokens/is-mobile-resolution.js +2 -2
  45. package/esm2015/tokens/media.js +2 -2
  46. package/esm2015/tokens/mode.js +2 -2
  47. package/esm2015/tokens/notification-options.js +2 -2
  48. package/esm2015/tokens/number-format.js +2 -2
  49. package/esm2015/tokens/option-content.js +2 -2
  50. package/esm2015/tokens/ordered-short-week-days.js +2 -2
  51. package/esm2015/tokens/sanitizer.js +2 -2
  52. package/esm2015/tokens/scroll-ref.js +2 -2
  53. package/esm2015/tokens/selection-stream.js +2 -2
  54. package/esm2015/tokens/svg-content-processor.js +2 -2
  55. package/esm2015/tokens/svg-src-processor.js +2 -2
  56. package/esm2015/tokens/textfield-appearance.js +2 -2
  57. package/esm2015/tokens/textfield-host.js +2 -2
  58. package/esm2015/tokens/theme.js +2 -2
  59. package/esm2015/tokens/value-accessor.js +2 -2
  60. package/fesm2015/taiga-ui-core-components-button.js +1 -1
  61. package/fesm2015/taiga-ui-core-components-button.js.map +1 -1
  62. package/fesm2015/taiga-ui-core-components-dialog.js +2 -2
  63. package/fesm2015/taiga-ui-core-components-dialog.js.map +1 -1
  64. package/fesm2015/taiga-ui-core-components-loader.js +1 -1
  65. package/fesm2015/taiga-ui-core-components-loader.js.map +1 -1
  66. package/fesm2015/taiga-ui-core-components-primitive-checkbox.js +1 -1
  67. package/fesm2015/taiga-ui-core-components-primitive-checkbox.js.map +1 -1
  68. package/fesm2015/taiga-ui-core-components-primitive-textfield.js +4 -4
  69. package/fesm2015/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  70. package/fesm2015/taiga-ui-core-components-root.js +1 -1
  71. package/fesm2015/taiga-ui-core-directives-textfield-controller.js +7 -7
  72. package/fesm2015/taiga-ui-core-directives-textfield-controller.js.map +1 -1
  73. package/fesm2015/taiga-ui-core-tokens.js +33 -33
  74. package/fesm2015/taiga-ui-core-tokens.js.map +1 -1
  75. package/package.json +4 -4
  76. package/styles/mixins/mixins.scss +35 -20
  77. package/styles/mixins/picker.scss +13 -13
  78. package/styles/mixins/slider.scss +17 -0
  79. package/styles/mixins/text.scss +2 -0
  80. package/styles/mixins/textfield.less +1 -0
  81. package/styles/mixins/textfield.scss +89 -94
  82. package/styles/mixins/wrapper.scss +5 -3
  83. package/styles/variables/media.scss +21 -0
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-tokens.js","sources":["../../../projects/core/tokens/animations-duration.ts","../../../projects/core/tokens/animation-options.ts","../../../projects/core/tokens/assert-enabled.ts","../../../projects/core/tokens/data-list-accessor.ts","../../../projects/core/tokens/data-list-host.ts","../../../projects/core/tokens/document-or-shadow-root.ts","../../../projects/core/tokens/element-ref.ts","../../../projects/core/tokens/first-day-of-week.ts","../../../projects/core/tokens/i18n.ts","../../../projects/core/tokens/icon-place.ts","../../../projects/core/tokens/icons.ts","../../../projects/core/tokens/icons-path.ts","../../../projects/core/tokens/media.ts","../../../projects/core/tokens/is-mobile-resolution.ts","../../../projects/core/tokens/mode.ts","../../../projects/core/tokens/notification-options.ts","../../../projects/core/tokens/number-format.ts","../../../projects/core/tokens/option-content.ts","../../../projects/core/tokens/ordered-short-week-days.ts","../../../projects/core/tokens/sanitizer.ts","../../../projects/core/tokens/scroll-ref.ts","../../../projects/core/tokens/selection-stream.ts","../../../projects/core/tokens/svg-content-processor.ts","../../../projects/core/tokens/svg-src-processor.ts","../../../projects/core/tokens/textfield-appearance.ts","../../../projects/core/tokens/textfield-host.ts","../../../projects/core/tokens/theme.ts","../../../projects/core/tokens/value-accessor.ts","../../../projects/core/tokens/taiga-ui-core-tokens.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport const TUI_ANIMATIONS_DURATION = new InjectionToken<number>(\n `Duration of all Taiga UI animations in ms`,\n {\n factory: () => 300,\n },\n);\n","import {AnimationOptions} from '@angular/animations';\nimport {inject, InjectionToken} from '@angular/core';\n\nimport {TUI_ANIMATIONS_DURATION} from './animations-duration';\n\nexport const TUI_ANIMATION_OPTIONS = new InjectionToken<AnimationOptions>(\n `Options for Taiga UI animations`,\n {\n factory: () => ({\n params: {\n duration: inject(TUI_ANIMATIONS_DURATION),\n },\n }),\n },\n);\n","import {InjectionToken, isDevMode} from '@angular/core';\n\nexport const TUI_ASSERT_ENABLED = new InjectionToken(\n `Flag to enable assertions across Taiga UI`,\n {\n factory: () => isDevMode(),\n },\n);\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiDataListAccessor} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DATA_LIST_ACCESSOR = new InjectionToken<TuiDataListAccessor>(\n `Accessor for options`,\n);\n\nexport function tuiAsDataListAccessor(useExisting: Type<TuiDataListAccessor>): Provider {\n return {\n provide: TUI_DATA_LIST_ACCESSOR,\n useExisting,\n };\n}\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiDataListHost} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DATA_LIST_HOST = new InjectionToken<TuiDataListHost<unknown>>(\n `DataList controller`,\n);\n\nexport function tuiAsDataListHost(useExisting: Type<TuiDataListHost<unknown>>): Provider {\n return {\n provide: TUI_DATA_LIST_HOST,\n useExisting,\n };\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_DOCUMENT_OR_SHADOW_ROOT = new InjectionToken<DocumentOrShadowRoot>(\n `Document or ShadowRoot`,\n);\n","import {ElementRef, InjectionToken} from '@angular/core';\n\nexport const TUI_ELEMENT_REF = new InjectionToken<ElementRef>(\n `ElementRef when you cannot use @Input for single time injection`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDayOfWeek} from '@taiga-ui/cdk';\n\nexport const TUI_FIRST_DAY_OF_WEEK = new InjectionToken<TuiDayOfWeek>(\n `The first day of the week index`,\n {\n factory: () => TuiDayOfWeek.Monday,\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {tuiExtractI18n} from '@taiga-ui/i18n';\n\nexport const TUI_MONTHS = new InjectionToken(`Localized months names`, {\n factory: tuiExtractI18n(`months`),\n});\n\nexport const TUI_CLOSE_WORD = new InjectionToken(`i18n 'close' word`, {\n factory: tuiExtractI18n(`close`),\n});\n\nexport const TUI_NOTHING_FOUND_MESSAGE = new InjectionToken(\n `i18n 'Nothing found' message`,\n {\n factory: tuiExtractI18n(`nothingFoundMessage`),\n },\n);\n\nexport const TUI_DEFAULT_ERROR_MESSAGE = new InjectionToken(`i18n of error message`, {\n factory: tuiExtractI18n(`defaultErrorMessage`),\n});\n\nexport const TUI_SPIN_TEXTS = new InjectionToken(`spin i18n texts`, {\n factory: tuiExtractI18n(`spinTexts`),\n});\n\nexport const TUI_SHORT_WEEK_DAYS = new InjectionToken(`calendars i18n texts`, {\n factory: tuiExtractI18n(`shortWeekDays`),\n});\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_ICONS_PLACE: InjectionToken<string> = new InjectionToken<string>(\n `Recommended paths to icons from documentation guide`,\n {\n factory: () => `assets/taiga-ui/icons`,\n },\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_ICONS = new InjectionToken<Record<string, string>>(\n `A key/value dictionary of icon names and src to be defined with TuiSvgService`,\n {\n factory: () => ({}),\n },\n);\n","import {inject, InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {tuiIconsPathFactory} from '@taiga-ui/core/utils';\n\nimport {TUI_ICONS_PLACE} from './icon-place';\n\nexport const TUI_ICONS_PATH: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `A handler to retrieve USE id for icon by name`,\n {factory: () => tuiIconsPathFactory(inject(TUI_ICONS_PLACE))},\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiMedia} from '@taiga-ui/core/interfaces';\n\nexport const TUI_MEDIA = new InjectionToken<TuiMedia>(`Token for media constant`, {\n factory: () => ({\n mobile: 768,\n desktopSmall: 1024,\n desktopLarge: 1280,\n }),\n});\n","import {inject, InjectionToken, NgZone} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk';\nimport {tuiIsMobile} from '@taiga-ui/core/utils';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, share, startWith} from 'rxjs/operators';\n\nimport {TUI_MEDIA} from './media';\n\nexport const TUI_IS_MOBILE_RES = new InjectionToken<Observable<boolean>>(\n `Mobile resolution stream for private providers`,\n {\n factory: () => {\n const windowRef = inject(WINDOW);\n const media = inject(TUI_MEDIA);\n\n return tuiTypedFromEvent(windowRef, `resize`).pipe(\n share(),\n startWith(null),\n map(() => tuiIsMobile(windowRef, media)),\n distinctUntilChanged(),\n tuiZoneOptimized(inject(NgZone)),\n );\n },\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiBrightness} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\n\nexport const TUI_MODE: InjectionToken<Observable<TuiBrightness | null>> =\n new InjectionToken<Observable<TuiBrightness | null>>(\n `Mode stream for private providers`,\n );\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiNotification} from '@taiga-ui/core/enums';\nimport {TuiAlertOptions} from '@taiga-ui/core/interfaces';\n\nexport interface TuiNotificationDefaultOptions\n extends Omit<TuiAlertOptions<unknown>, 'data'> {\n readonly defaultAutoCloseTime: number;\n}\n\n/** Default values for the notification options. */\nexport const TUI_NOTIFICATION_DEFAULT_OPTIONS: TuiNotificationDefaultOptions = {\n autoClose: true,\n label: ``,\n status: TuiNotification.Info,\n hasIcon: true,\n hasCloseButton: true,\n defaultAutoCloseTime: 3000,\n};\n\nexport const TUI_NOTIFICATION_OPTIONS = new InjectionToken<TuiNotificationDefaultOptions>(\n `Default parameters for notification alert component`,\n {\n factory: () => TUI_NOTIFICATION_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiNotificationOptionsProvider(\n options: Partial<TuiNotificationDefaultOptions>,\n): ValueProvider {\n return {\n provide: TUI_NOTIFICATION_OPTIONS,\n useValue: {...TUI_NOTIFICATION_DEFAULT_OPTIONS, ...options},\n };\n}\n","import {InjectionToken} from '@angular/core';\nimport {TUI_DEFAULT_NUMBER_FORMAT} from '@taiga-ui/core/constants';\nimport {TuiNumberFormatSettings} from '@taiga-ui/core/interfaces';\n\nexport const TUI_NUMBER_FORMAT = new InjectionToken<TuiNumberFormatSettings>(\n `Formatting configuration for displayed numbers`,\n {\n factory: () => TUI_DEFAULT_NUMBER_FORMAT,\n },\n);\n","import {InjectionToken, Provider, TemplateRef} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport const TUI_OPTION_CONTENT = new InjectionToken<\n PolymorpheusContent<TuiContextWithImplicit<TemplateRef<Record<string, unknown>>>>\n>(`Content for tuiOption component`);\n\nexport function tuiAsOptionContent(\n useValue: PolymorpheusContent<\n TuiContextWithImplicit<TemplateRef<Record<string, unknown>>>\n >,\n): Provider {\n return {\n provide: TUI_OPTION_CONTENT,\n useValue,\n };\n}\n","import {inject, InjectionToken} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_FIRST_DAY_OF_WEEK, TUI_SHORT_WEEK_DAYS} from './index';\n\nexport type WEEK_DAYS_NAMES = [string, string, string, string, string, string, string];\n\nconst convertToSundayFirstWeekFormat = (\n weekDaysNames: WEEK_DAYS_NAMES,\n): WEEK_DAYS_NAMES => {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [\n weekDaysNames[sundayIndex],\n ...weekDaysNames.slice(0, sundayIndex),\n ] as WEEK_DAYS_NAMES;\n};\n\nexport const TUI_ORDERED_SHORT_WEEK_DAYS = new InjectionToken<\n Observable<WEEK_DAYS_NAMES>\n>(`Ordered calendars i18n texts`, {\n factory: () => {\n const firstDayOfWeekIndex = inject(TUI_FIRST_DAY_OF_WEEK);\n\n return inject(TUI_SHORT_WEEK_DAYS).pipe(\n map(convertToSundayFirstWeekFormat),\n map(\n weekDays =>\n [\n ...weekDays.slice(firstDayOfWeekIndex),\n ...weekDays.slice(0, firstDayOfWeekIndex),\n ] as WEEK_DAYS_NAMES,\n ),\n );\n },\n});\n","import {InjectionToken, Sanitizer} from '@angular/core';\n\nexport const TUI_SANITIZER = new InjectionToken<Sanitizer>(\n `A custom Sanitizer to sanitize source before inlining`,\n);\n","import {ElementRef, InjectionToken} from '@angular/core';\n\nexport const TUI_SCROLL_REF = new InjectionToken<ElementRef<HTMLElement>>(\n `Scrollable container`,\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {share, switchMapTo, takeUntil} from 'rxjs/operators';\n\nexport const TUI_SELECTION_STREAM = new InjectionToken<Observable<unknown>>(\n `A stream of possible selection changes`,\n {\n factory: () => {\n const documentRef = inject(DOCUMENT);\n\n return merge(\n tuiTypedFromEvent(documentRef, `selectionchange`),\n tuiTypedFromEvent(documentRef, `mouseup`),\n tuiTypedFromEvent(documentRef, `mousedown`).pipe(\n switchMapTo(\n tuiTypedFromEvent(documentRef, `mousemove`).pipe(\n takeUntil(tuiTypedFromEvent(documentRef, `mouseup`)),\n ),\n ),\n ),\n tuiTypedFromEvent(documentRef, `keydown`),\n tuiTypedFromEvent(documentRef, `keyup`),\n ).pipe(share());\n },\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiStringHandler, tuiSvgLinearGradientProcessor} from '@taiga-ui/cdk';\n\nexport const TUI_SVG_CONTENT_PROCESSOR: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `Transform function the contents of the loaded svg file`,\n {factory: () => tuiSvgLinearGradientProcessor},\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {identity} from 'rxjs';\n\nexport const TUI_SVG_SRC_PROCESSOR: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(`Source path processor for svg`, {\n factory: () => identity,\n });\n","import {InjectionToken} from '@angular/core';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\n\nexport const TUI_TEXTFIELD_APPEARANCE = new InjectionToken<string>(\n `Appearance for inputs`,\n {\n factory: () => TuiAppearance.Textfield,\n },\n);\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\n\nexport const TUI_TEXTFIELD_HOST = new InjectionToken<TuiTextfieldHost>(\n `An interface to communicate with textfield based controls`,\n);\n\nexport function tuiAsTextfieldHost(useExisting: Type<TuiTextfieldHost>): Provider {\n return {\n provide: TUI_TEXTFIELD_HOST,\n useExisting,\n };\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_THEME = new InjectionToken<string>(`Theme name`, {\n factory: () => `Taiga`,\n});\n","import {InjectionToken} from '@angular/core';\nimport {ControlValueAccessor} from '@angular/forms';\n\nexport const TUI_VALUE_ACCESSOR = new InjectionToken<ControlValueAccessor>(\n `Buffer token to pass NG_VALUE_ACCESSOR to a different Injector`,\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-tokens.js","sources":["../../../projects/core/tokens/animations-duration.ts","../../../projects/core/tokens/animation-options.ts","../../../projects/core/tokens/assert-enabled.ts","../../../projects/core/tokens/data-list-accessor.ts","../../../projects/core/tokens/data-list-host.ts","../../../projects/core/tokens/document-or-shadow-root.ts","../../../projects/core/tokens/element-ref.ts","../../../projects/core/tokens/first-day-of-week.ts","../../../projects/core/tokens/i18n.ts","../../../projects/core/tokens/icon-place.ts","../../../projects/core/tokens/icons.ts","../../../projects/core/tokens/icons-path.ts","../../../projects/core/tokens/media.ts","../../../projects/core/tokens/is-mobile-resolution.ts","../../../projects/core/tokens/mode.ts","../../../projects/core/tokens/notification-options.ts","../../../projects/core/tokens/number-format.ts","../../../projects/core/tokens/option-content.ts","../../../projects/core/tokens/ordered-short-week-days.ts","../../../projects/core/tokens/sanitizer.ts","../../../projects/core/tokens/scroll-ref.ts","../../../projects/core/tokens/selection-stream.ts","../../../projects/core/tokens/svg-content-processor.ts","../../../projects/core/tokens/svg-src-processor.ts","../../../projects/core/tokens/textfield-appearance.ts","../../../projects/core/tokens/textfield-host.ts","../../../projects/core/tokens/theme.ts","../../../projects/core/tokens/value-accessor.ts","../../../projects/core/tokens/taiga-ui-core-tokens.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\n\nexport const TUI_ANIMATIONS_DURATION = new InjectionToken<number>(\n `[TUI_ANIMATIONS_DURATION]: Duration of all Taiga UI animations in ms`,\n {\n factory: () => 300,\n },\n);\n","import {AnimationOptions} from '@angular/animations';\nimport {inject, InjectionToken} from '@angular/core';\n\nimport {TUI_ANIMATIONS_DURATION} from './animations-duration';\n\nexport const TUI_ANIMATION_OPTIONS = new InjectionToken<AnimationOptions>(\n `[TUI_ANIMATION_OPTIONS]: Options for Taiga UI animations`,\n {\n factory: () => ({\n params: {\n duration: inject(TUI_ANIMATIONS_DURATION),\n },\n }),\n },\n);\n","import {InjectionToken, isDevMode} from '@angular/core';\n\nexport const TUI_ASSERT_ENABLED = new InjectionToken(\n `[TUI_ASSERT_ENABLED]: Flag to enable assertions across Taiga UI`,\n {\n factory: () => isDevMode(),\n },\n);\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiDataListAccessor} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DATA_LIST_ACCESSOR = new InjectionToken<TuiDataListAccessor>(\n `[TUI_DATA_LIST_ACCESSOR]: Accessor for options`,\n);\n\nexport function tuiAsDataListAccessor(useExisting: Type<TuiDataListAccessor>): Provider {\n return {\n provide: TUI_DATA_LIST_ACCESSOR,\n useExisting,\n };\n}\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiDataListHost} from '@taiga-ui/core/interfaces';\n\nexport const TUI_DATA_LIST_HOST = new InjectionToken<TuiDataListHost<unknown>>(\n `[TUI_DATA_LIST_HOST]: DataList controller`,\n);\n\nexport function tuiAsDataListHost(useExisting: Type<TuiDataListHost<unknown>>): Provider {\n return {\n provide: TUI_DATA_LIST_HOST,\n useExisting,\n };\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_DOCUMENT_OR_SHADOW_ROOT = new InjectionToken<DocumentOrShadowRoot>(\n `[TUI_DOCUMENT_OR_SHADOW_ROOT]: Document or ShadowRoot`,\n);\n","import {ElementRef, InjectionToken} from '@angular/core';\n\nexport const TUI_ELEMENT_REF = new InjectionToken<ElementRef>(\n `[TUI_ELEMENT_REF]: ElementRef when you cannot use @Input for single time injection`,\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiDayOfWeek} from '@taiga-ui/cdk';\n\nexport const TUI_FIRST_DAY_OF_WEEK = new InjectionToken<TuiDayOfWeek>(\n `[TUI_FIRST_DAY_OF_WEEK]: The first day of the week index`,\n {\n factory: () => TuiDayOfWeek.Monday,\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {tuiExtractI18n} from '@taiga-ui/i18n';\n\nexport const TUI_MONTHS = new InjectionToken(`[TUI_MONTHS]: Localized months names`, {\n factory: tuiExtractI18n(`months`),\n});\n\nexport const TUI_CLOSE_WORD = new InjectionToken(`[TUI_CLOSE_WORD]: i18n 'close' word`, {\n factory: tuiExtractI18n(`close`),\n});\n\nexport const TUI_NOTHING_FOUND_MESSAGE = new InjectionToken(\n `[TUI_NOTHING_FOUND_MESSAGE]: i18n 'Nothing found' message`,\n {\n factory: tuiExtractI18n(`nothingFoundMessage`),\n },\n);\n\nexport const TUI_DEFAULT_ERROR_MESSAGE = new InjectionToken(\n `[TUI_DEFAULT_ERROR_MESSAGE]: i18n of error message`,\n {\n factory: tuiExtractI18n(`defaultErrorMessage`),\n },\n);\n\nexport const TUI_SPIN_TEXTS = new InjectionToken(`[TUI_SPIN_TEXTS]: spin i18n texts`, {\n factory: tuiExtractI18n(`spinTexts`),\n});\n\nexport const TUI_SHORT_WEEK_DAYS = new InjectionToken(\n `[TUI_SHORT_WEEK_DAYS]: calendars i18n texts`,\n {\n factory: tuiExtractI18n(`shortWeekDays`),\n },\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_ICONS_PLACE: InjectionToken<string> = new InjectionToken<string>(\n `[TUI_ICONS_PLACE]: Recommended paths to icons from documentation guide`,\n {\n factory: () => `assets/taiga-ui/icons`,\n },\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_ICONS = new InjectionToken<Record<string, string>>(\n `[TUI_ICONS]: A key/value dictionary of icon names and src to be defined with TuiSvgService`,\n {\n factory: () => ({}),\n },\n);\n","import {inject, InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {tuiIconsPathFactory} from '@taiga-ui/core/utils';\n\nimport {TUI_ICONS_PLACE} from './icon-place';\n\nexport const TUI_ICONS_PATH: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `[TUI_ICONS_PATH]: A handler to retrieve USE id for icon by name`,\n {factory: () => tuiIconsPathFactory(inject(TUI_ICONS_PLACE))},\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiMedia} from '@taiga-ui/core/interfaces';\n\nexport const TUI_MEDIA = new InjectionToken<TuiMedia>(\n `[TUI_MEDIA]: Token for media constant`,\n {\n factory: () => ({\n mobile: 768,\n desktopSmall: 1024,\n desktopLarge: 1280,\n }),\n },\n);\n","import {inject, InjectionToken, NgZone} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {tuiTypedFromEvent, tuiZoneOptimized} from '@taiga-ui/cdk';\nimport {tuiIsMobile} from '@taiga-ui/core/utils';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, map, share, startWith} from 'rxjs/operators';\n\nimport {TUI_MEDIA} from './media';\n\nexport const TUI_IS_MOBILE_RES = new InjectionToken<Observable<boolean>>(\n `[TUI_IS_MOBILE_RES]: Mobile resolution stream for private providers`,\n {\n factory: () => {\n const windowRef = inject(WINDOW);\n const media = inject(TUI_MEDIA);\n\n return tuiTypedFromEvent(windowRef, `resize`).pipe(\n share(),\n startWith(null),\n map(() => tuiIsMobile(windowRef, media)),\n distinctUntilChanged(),\n tuiZoneOptimized(inject(NgZone)),\n );\n },\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiBrightness} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\n\nexport const TUI_MODE: InjectionToken<Observable<TuiBrightness | null>> =\n new InjectionToken<Observable<TuiBrightness | null>>(\n `[TUI_MODE]: Mode stream for private providers`,\n );\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiNotification} from '@taiga-ui/core/enums';\nimport {TuiAlertOptions} from '@taiga-ui/core/interfaces';\n\nexport interface TuiNotificationDefaultOptions\n extends Omit<TuiAlertOptions<unknown>, 'data'> {\n readonly defaultAutoCloseTime: number;\n}\n\n/** Default values for the notification options. */\nexport const TUI_NOTIFICATION_DEFAULT_OPTIONS: TuiNotificationDefaultOptions = {\n autoClose: true,\n label: ``,\n status: TuiNotification.Info,\n hasIcon: true,\n hasCloseButton: true,\n defaultAutoCloseTime: 3000,\n};\n\nexport const TUI_NOTIFICATION_OPTIONS = new InjectionToken<TuiNotificationDefaultOptions>(\n `[TUI_NOTIFICATION_OPTIONS]: Default parameters for notification alert component`,\n {\n factory: () => TUI_NOTIFICATION_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiNotificationOptionsProvider(\n options: Partial<TuiNotificationDefaultOptions>,\n): ValueProvider {\n return {\n provide: TUI_NOTIFICATION_OPTIONS,\n useValue: {...TUI_NOTIFICATION_DEFAULT_OPTIONS, ...options},\n };\n}\n","import {InjectionToken} from '@angular/core';\nimport {TUI_DEFAULT_NUMBER_FORMAT} from '@taiga-ui/core/constants';\nimport {TuiNumberFormatSettings} from '@taiga-ui/core/interfaces';\n\nexport const TUI_NUMBER_FORMAT = new InjectionToken<TuiNumberFormatSettings>(\n `[TUI_NUMBER_FORMAT]: Formatting configuration for displayed numbers`,\n {\n factory: () => TUI_DEFAULT_NUMBER_FORMAT,\n },\n);\n","import {InjectionToken, Provider, TemplateRef} from '@angular/core';\nimport {TuiContextWithImplicit} from '@taiga-ui/cdk';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport const TUI_OPTION_CONTENT = new InjectionToken<\n PolymorpheusContent<TuiContextWithImplicit<TemplateRef<Record<string, unknown>>>>\n>(`[TUI_OPTION_CONTENT]: Content for tuiOption component`);\n\nexport function tuiAsOptionContent(\n useValue: PolymorpheusContent<\n TuiContextWithImplicit<TemplateRef<Record<string, unknown>>>\n >,\n): Provider {\n return {\n provide: TUI_OPTION_CONTENT,\n useValue,\n };\n}\n","import {inject, InjectionToken} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_FIRST_DAY_OF_WEEK, TUI_SHORT_WEEK_DAYS} from './index';\n\nexport type WEEK_DAYS_NAMES = [string, string, string, string, string, string, string];\n\nconst convertToSundayFirstWeekFormat = (\n weekDaysNames: WEEK_DAYS_NAMES,\n): WEEK_DAYS_NAMES => {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [\n weekDaysNames[sundayIndex],\n ...weekDaysNames.slice(0, sundayIndex),\n ] as WEEK_DAYS_NAMES;\n};\n\nexport const TUI_ORDERED_SHORT_WEEK_DAYS = new InjectionToken<\n Observable<WEEK_DAYS_NAMES>\n>(`[TUI_ORDERED_SHORT_WEEK_DAYS]: Ordered calendars i18n texts`, {\n factory: () => {\n const firstDayOfWeekIndex = inject(TUI_FIRST_DAY_OF_WEEK);\n\n return inject(TUI_SHORT_WEEK_DAYS).pipe(\n map(convertToSundayFirstWeekFormat),\n map(\n weekDays =>\n [\n ...weekDays.slice(firstDayOfWeekIndex),\n ...weekDays.slice(0, firstDayOfWeekIndex),\n ] as WEEK_DAYS_NAMES,\n ),\n );\n },\n});\n","import {InjectionToken, Sanitizer} from '@angular/core';\n\nexport const TUI_SANITIZER = new InjectionToken<Sanitizer>(\n `[TUI_SANITIZER]: A custom Sanitizer to sanitize source before inlining`,\n);\n","import {ElementRef, InjectionToken} from '@angular/core';\n\nexport const TUI_SCROLL_REF = new InjectionToken<ElementRef<HTMLElement>>(\n `[TUI_SCROLL_REF]: Scrollable container`,\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {share, switchMapTo, takeUntil} from 'rxjs/operators';\n\nexport const TUI_SELECTION_STREAM = new InjectionToken<Observable<unknown>>(\n `[TUI_SELECTION_STREAM]: A stream of possible selection changes`,\n {\n factory: () => {\n const documentRef = inject(DOCUMENT);\n\n return merge(\n tuiTypedFromEvent(documentRef, `selectionchange`),\n tuiTypedFromEvent(documentRef, `mouseup`),\n tuiTypedFromEvent(documentRef, `mousedown`).pipe(\n switchMapTo(\n tuiTypedFromEvent(documentRef, `mousemove`).pipe(\n takeUntil(tuiTypedFromEvent(documentRef, `mouseup`)),\n ),\n ),\n ),\n tuiTypedFromEvent(documentRef, `keydown`),\n tuiTypedFromEvent(documentRef, `keyup`),\n ).pipe(share());\n },\n },\n);\n","import {InjectionToken} from '@angular/core';\nimport {TuiStringHandler, tuiSvgLinearGradientProcessor} from '@taiga-ui/cdk';\n\nexport const TUI_SVG_CONTENT_PROCESSOR: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `[TUI_SVG_CONTENT_PROCESSOR]: Transform function the contents of the loaded svg file`,\n {factory: () => tuiSvgLinearGradientProcessor},\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiStringHandler} from '@taiga-ui/cdk';\nimport {identity} from 'rxjs';\n\nexport const TUI_SVG_SRC_PROCESSOR: InjectionToken<TuiStringHandler<string>> =\n new InjectionToken<TuiStringHandler<string>>(\n `[TUI_SVG_SRC_PROCESSOR]: Source path processor for svg`,\n {\n factory: () => identity,\n },\n );\n","import {InjectionToken} from '@angular/core';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\n\nexport const TUI_TEXTFIELD_APPEARANCE = new InjectionToken<string>(\n `[TUI_TEXTFIELD_APPEARANCE]: Appearance for inputs`,\n {\n factory: () => TuiAppearance.Textfield,\n },\n);\n","import {InjectionToken, Provider, Type} from '@angular/core';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\n\nexport const TUI_TEXTFIELD_HOST = new InjectionToken<TuiTextfieldHost>(\n `[TUI_TEXTFIELD_HOST]: An interface to communicate with textfield based controls`,\n);\n\nexport function tuiAsTextfieldHost(useExisting: Type<TuiTextfieldHost>): Provider {\n return {\n provide: TUI_TEXTFIELD_HOST,\n useExisting,\n };\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const TUI_THEME = new InjectionToken<string>(`[TUI_THEME]: Theme name`, {\n factory: () => `Taiga`,\n});\n","import {InjectionToken} from '@angular/core';\nimport {ControlValueAccessor} from '@angular/forms';\n\nexport const TUI_VALUE_ACCESSOR = new InjectionToken<ControlValueAccessor>(\n `[TUI_VALUE_ACCESSOR]: Buffer token to pass NG_VALUE_ACCESSOR to a different Injector`,\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/core",
3
- "version": "3.1.0",
3
+ "version": "3.3.0",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -15,7 +15,7 @@
15
15
  "repository": "https://github.com/tinkoff/taiga-ui",
16
16
  "license": "Apache-2.0",
17
17
  "dependencies": {
18
- "@taiga-ui/i18n": "^3.1.0",
18
+ "@taiga-ui/i18n": "^3.3.0",
19
19
  "tslib": "^2.0.0"
20
20
  },
21
21
  "peerDependencies": {
@@ -27,8 +27,8 @@
27
27
  "@angular/router": ">=9.0.0",
28
28
  "@ng-web-apis/common": ">=2.0.0",
29
29
  "@ng-web-apis/mutation-observer": ">=2.0.0",
30
- "@taiga-ui/cdk": ">=3.1.0",
31
- "@taiga-ui/i18n": ">=3.1.0",
30
+ "@taiga-ui/cdk": ">=3.3.0",
31
+ "@taiga-ui/i18n": ">=3.3.0",
32
32
  "@tinkoff/ng-event-plugins": ">=3.0.0",
33
33
  "@tinkoff/ng-polymorpheus": ">=4.0.0",
34
34
  "rxjs": ">=6.0.0"
@@ -53,8 +53,33 @@
53
53
  line-height: inherit;
54
54
  }
55
55
 
56
- @mixin clearinput() {
56
+ @mixin autofill($mode: default) {
57
+ &:-webkit-autofill,
58
+ &:-webkit-autofill:hover,
59
+ &:-webkit-autofill:focus {
60
+ caret-color: var(--tui-base-09);
61
+ border-radius: inherit;
62
+ color: inherit !important;
63
+ background-color: transparent !important;
64
+
65
+ @if ($mode == default) {
66
+ -webkit-text-fill-color: var(--tui-text-01) !important;
67
+ border-color: var(--tui-autofill);
68
+ -webkit-box-shadow: 0 0 0 100rem var(--tui-autofill) inset !important; // to overlay native background
69
+ }
70
+
71
+ @if ($mode == dark) {
72
+ -webkit-text-fill-color: var(--tui-text-01-night) !important;
73
+ border-color: var(--tui-autofill-night);
74
+ -webkit-box-shadow: 0 0 0 100rem var(--tui-autofill-night) inset !important;
75
+ }
76
+ }
77
+ }
78
+
79
+ @mixin clearinput($mode: default) {
80
+ @include autofill($mode);
57
81
  padding: 0;
82
+ margin: 0;
58
83
  border: 0;
59
84
  border-radius: inherit;
60
85
  background: none;
@@ -67,16 +92,6 @@
67
92
  appearance: none;
68
93
  word-break: keep-all;
69
94
  -webkit-text-fill-color: currentColor; // for Safari
70
-
71
- &:-webkit-autofill,
72
- &:-webkit-autofill:hover,
73
- &:-webkit-autofill:focus {
74
- border-radius: inherit;
75
- -webkit-text-fill-color: inherit !important;
76
- color: inherit !important;
77
- background-color: transparent !important;
78
- -webkit-box-shadow: 0 0 0 1000px var(--tui-autofill) inset !important; // to overlay native background
79
- }
80
95
  }
81
96
 
82
97
  @mixin visually-hidden() {
@@ -101,7 +116,7 @@
101
116
  height: 1rem;
102
117
  border-radius: 6.25rem;
103
118
  background-clip: padding-box;
104
- border: 0.375rem solid transparent;
119
+ border: 2.667rem solid transparent;
105
120
  }
106
121
 
107
122
  &::-webkit-scrollbar {
@@ -131,12 +146,12 @@
131
146
 
132
147
  // Dropdown
133
148
  @if ($mode == 2) {
134
- box-shadow: 0 0.5rem 1rem rgba(51, 51, 51, 0.2);
149
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.16);
135
150
  }
136
151
 
137
152
  // Modal
138
153
  @if ($mode == 3) {
139
- box-shadow: 0 1.125rem 1.875rem rgba(51, 51, 51, 0.52);
154
+ box-shadow: 0 1.125rem 1.875rem rgba(0, 0, 0, 0.48);
140
155
  }
141
156
 
142
157
  // Sidebar
@@ -156,7 +171,7 @@
156
171
 
157
172
  // Modal mobile
158
173
  @if ($mode == 7) {
159
- box-shadow: 0 -1rem 1.75rem rgba(51, 51, 51, 0.24);
174
+ box-shadow: 0 -1rem 1.75rem rgba(0, 0, 0, 0.24);
160
175
  }
161
176
  }
162
177
 
@@ -260,16 +275,16 @@
260
275
  }
261
276
 
262
277
  // typical properties for text overflow with ellipsis
263
- @mixin text-overflow() {
264
- white-space: nowrap;
278
+ @mixin text-overflow($type: nowrap) {
279
+ white-space: $type;
265
280
  overflow: hidden;
266
281
  text-overflow: ellipsis;
267
282
  }
268
283
 
269
284
  /* stylelint-disable selector-max-specificity */
270
285
  @mixin text-overflow-with-fade(
271
- $color: rgba(255, 255, 255, 1),
272
- $transparentColor: rgba(255, 255, 255, 0),
286
+ $color: var(--tui-base-01),
287
+ $transparentColor: transparent,
273
288
  $width: 1.875rem
274
289
  ) {
275
290
  position: relative;
@@ -357,6 +372,7 @@
357
372
 
358
373
  // hide an element visually without hiding it from screen readers
359
374
  @mixin sr-only() {
375
+ position: absolute;
360
376
  clip: rect(1px, 1px, 1px, 1px);
361
377
  clip-path: inset(50%);
362
378
  height: 1px;
@@ -364,5 +380,4 @@
364
380
  margin: -1px;
365
381
  overflow: hidden;
366
382
  padding: 0;
367
- position: absolute;
368
383
  }
@@ -1,20 +1,20 @@
1
1
  @mixin picker($itemSize) {
2
2
  :host {
3
- @include text-body-m();
4
3
  display: block;
4
+ font: var(--tui-font-text-m);
5
5
  }
6
6
 
7
7
  .t-row {
8
8
  @include createStackingContext();
9
9
  display: flex;
10
10
  justify-content: space-between;
11
- height: 36px;
11
+ height: 2.25rem;
12
12
  }
13
13
 
14
14
  .t-item {
15
15
  position: relative;
16
16
  flex: 1;
17
- line-height: 32px;
17
+ line-height: 2rem;
18
18
  border-radius: var(--tui-radius-m);
19
19
 
20
20
  &:before,
@@ -57,10 +57,10 @@
57
57
  &_today:after {
58
58
  @include center-left();
59
59
  content: '';
60
- bottom: 5px;
61
- height: 2px;
62
- width: 12px;
63
- border-radius: 6px;
60
+ bottom: 0.3125rem;
61
+ height: 0.125rem;
62
+ width: 0.75rem;
63
+ border-radius: 0.375rem;
64
64
  background-color: var(--tui-text-02);
65
65
  }
66
66
 
@@ -123,25 +123,25 @@
123
123
 
124
124
  &[data-range='end'] > .t-item {
125
125
  &:before {
126
- left: 4px;
126
+ left: 0.25rem;
127
127
  }
128
128
 
129
129
  &:after {
130
- left: -32px;
130
+ left: -2rem;
131
131
  right: 100%;
132
- transform: translateX(23px) scaleY(0.6) scaleX(0.4) rotate(45deg);
132
+ transform: translateX(1.4375rem) scaleY(0.6) scaleX(0.4) rotate(45deg);
133
133
  }
134
134
  }
135
135
 
136
136
  &[data-range='start'] > .t-item {
137
137
  &:before {
138
- right: 4px;
138
+ right: 0.25rem;
139
139
  }
140
140
 
141
141
  &:after {
142
142
  left: 100%;
143
- right: -32px;
144
- transform: translateX(-23px) scaleY(0.6) scaleX(0.4) rotate(45deg);
143
+ right: -2rem;
144
+ transform: translateX(-1.4375rem) scaleY(0.6) scaleX(0.4) rotate(45deg);
145
145
  }
146
146
  }
147
147
 
@@ -31,4 +31,21 @@ $thumb-diameters: (
31
31
  tui-input-slider + & {
32
32
  margin-left: calc(var(--tui-radius-m) / 2 + #{$first-tick-center});
33
33
  }
34
+
35
+ tui-input-range + &,
36
+ tui-range + & {
37
+ $thumb: map-get($thumb-diameters, $input-size);
38
+ margin-left: $thumb;
39
+ margin-right: $thumb;
40
+
41
+ & > * {
42
+ &:first-child {
43
+ left: -$thumb;
44
+ }
45
+
46
+ &:last-child {
47
+ right: -$thumb;
48
+ }
49
+ }
50
+ }
34
51
  }
@@ -3,6 +3,8 @@
3
3
  color: var(--tui-text-01);
4
4
  }
5
5
 
6
+ // TODO: 4.0 delete all deprecations below
7
+
6
8
  // headings
7
9
 
8
10
  // deprecated
@@ -71,6 +71,7 @@
71
71
  overflow: hidden;
72
72
  text-transform: inherit;
73
73
  resize: none;
74
+ text-overflow: ellipsis;
74
75
 
75
76
  :host[data-mode='onDark'] &,
76
77
  :host-context(tui-primitive-textfield[data-mode='onDark']),
@@ -1,8 +1,11 @@
1
+ $line-height-l: 1.25rem;
2
+
1
3
  @mixin textfield-host() {
2
4
  @include text-basic();
3
5
  position: relative;
4
6
  display: block;
5
7
  border-radius: var(--tui-radius-m);
8
+ text-align: left;
6
9
 
7
10
  &[data-size='s'] {
8
11
  height: var(--tui-height-s);
@@ -20,7 +23,8 @@
20
23
  height: var(--tui-height-l);
21
24
  min-height: var(--tui-height-l);
22
25
  max-height: var(--tui-height-l);
23
- font-size: 15px;
26
+ font: var(--tui-font-text-m);
27
+ line-height: $line-height-l;
24
28
  }
25
29
  }
26
30
 
@@ -28,17 +32,26 @@
28
32
  display: flex;
29
33
  height: 100%;
30
34
  width: 100%;
31
- padding: 0 12px;
35
+ padding: 0 var(--tui-padding-m);
32
36
  box-sizing: border-box;
33
37
  align-items: center;
34
38
  overflow: hidden;
35
39
 
36
40
  :host[data-size='s'] & {
37
- padding-right: 8px;
41
+ padding: 0 var(--tui-padding-s);
38
42
  }
39
43
 
40
44
  :host[data-size='l'] & {
41
- padding-left: 16px;
45
+ padding: 0 var(--tui-padding-l);
46
+ }
47
+
48
+ &:after {
49
+ content: '';
50
+ margin-right: -0.25rem;
51
+ }
52
+
53
+ :host[data-size='m'] &:after {
54
+ display: none;
42
55
  }
43
56
  }
44
57
 
@@ -46,75 +59,101 @@
46
59
  @include text-basic();
47
60
  @include clearinput();
48
61
  @include fullsize();
49
- padding: 0 12px;
62
+ padding: 0 var(--tui-padding-m);
63
+ border: solid transparent;
64
+ border-width: 0 var(--border-end, 0) 0 var(--border-start, 0);
65
+ border-inline-start-width: var(--border-start, 0);
66
+ border-inline-end-width: var(--border-end, 0);
67
+ text-indent: var(--text-indent);
68
+ text-align: inherit;
50
69
  box-sizing: border-box;
51
70
  white-space: nowrap;
52
71
  overflow: hidden;
53
72
  text-transform: inherit;
73
+ resize: none;
74
+ text-overflow: ellipsis;
54
75
 
55
- :host[data-size='s'] & {
56
- padding: 0 8px 0 12px;
76
+ :host[data-mode='onDark'] &,
77
+ :host-context(tui-primitive-textfield[data-mode='onDark']),
78
+ :host-context(tui-text-area[data-mode='onDark']) {
79
+ @include autofill(dark);
57
80
  }
58
81
 
59
- :host[data-size='l'] & {
60
- padding: 0 16px;
82
+ :host[data-size='s'] &,
83
+ :host-context(tui-primitive-textfield[data-size='s']):not(tui-primitive-textfield),
84
+ :host-context(tui-text-area[data-size='s']):not(tui-text-area) {
85
+ padding: 0 var(--tui-padding-s);
61
86
  }
62
87
 
63
- :host._disabled & {
88
+ :host[data-size='l'] &,
89
+ :host-context(tui-primitive-textfield[data-size='l']):not(tui-primitive-textfield),
90
+ :host-context(tui-text-area[data-size='l']):not(tui-text-area) {
91
+ padding: 0 var(--tui-padding-l);
92
+ }
93
+
94
+ :host._disabled &,
95
+ :host-context(tui-primitive-textfield._disabled),
96
+ :host-context(tui-text-area._disabled) {
64
97
  // $bad TODO: research why you can reach disabled textfield with mask inside a label without that
65
98
  pointer-events: none;
66
99
  }
67
100
 
68
- :host[data-size='l']:not(._label-outside) & {
69
- padding-top: 20px;
101
+ :host[data-size='l']:not(._label-outside) &,
102
+ :host-context(tui-primitive-textfield[data-size='l']:not(._label-outside)):not(tui-primitive-textfield) {
103
+ padding-top: $line-height-l;
70
104
 
71
105
  // Workaround for raising placeholder in temporary autofill
72
- &:-webkit-autofill + .content .placeholder {
73
- width: 114%; // compensation of scale(0.87)
74
- transform: translateY(-10px) scale(0.87);
106
+ &:-webkit-autofill + .t-content .t-placeholder {
107
+ font-size: 0.8156rem;
108
+ transform: translateY(-0.625rem);
75
109
  }
76
110
  }
77
111
 
78
- :host[data-size='m']:not(._label-outside) & {
79
- padding-top: 18px;
112
+ :host[data-size='m']:not(._label-outside) &,
113
+ :host-context(tui-primitive-textfield[data-size='m']:not(._label-outside)):not(tui-primitive-textfield) {
114
+ padding-top: 1.125rem;
80
115
 
81
116
  // Workaround for raising placeholder in temporary autofill
82
- &:-webkit-autofill + .content .placeholder {
83
- width: 118%; // compensation of scale(0.85)
84
- transform: translateY(-8px) scale(0.85);
117
+ &:-webkit-autofill + .t-content .t-placeholder {
118
+ font-size: 0.69rem;
119
+ transform: translateY(-0.5rem);
85
120
  }
86
121
  }
122
+
123
+ :host._hidden input&,
124
+ :host-context(tui-primitive-textfield._hidden) {
125
+ opacity: 0;
126
+ text-indent: -10em; // Hide blinking caret even in IE
127
+ -webkit-user-select: none; // Hide blinking caret in mobile safari
128
+ }
87
129
  }
88
130
 
89
131
  @mixin textfield-wrapper() {
90
132
  flex: 1;
91
133
  min-width: 0;
92
- padding-right: $space;
134
+ padding-right: 0.25rem;
135
+ padding-inline-end: 0.25rem;
136
+ padding-inline-start: 0;
93
137
  }
94
138
 
95
139
  @mixin textfield-placeholder() {
96
- @include transition('transform, min-width, color, letter-spacing');
140
+ @include transition('transform, font-size, color, letter-spacing');
97
141
  @include text-basic();
98
142
  @include text-overflow();
99
143
  display: block;
100
144
  width: 100%;
101
- height: 20px;
102
- font-size: 13px;
103
- box-sizing: border-box;
104
145
  user-select: none;
105
- pointer-events: none;
106
146
  color: var(--tui-text-02);
107
- transform-origin: left;
108
- letter-spacing: normal;
109
- text-transform: none;
147
+ pointer-events: none;
148
+ will-change: transform;
149
+ transform: translateY(0);
110
150
 
111
151
  &_raised {
112
- width: 114%; // compensation of scale(0.87)
113
- transform: translateY(-10px) scale(0.87);
152
+ transform: translateY(-0.625rem);
114
153
 
115
154
  :host[data-size='m'] & {
116
- width: 118%;
117
- transform: translateY(-8px) scale(0.85);
155
+ font: var(--tui-font-text-xs);
156
+ transform: translateY(-0.5rem);
118
157
  letter-spacing: 0.025rem;
119
158
  }
120
159
 
@@ -136,7 +175,11 @@
136
175
  }
137
176
 
138
177
  :host[data-size='l'] & {
139
- font-size: 15px;
178
+ font-size: 0.9375rem;
179
+
180
+ &_raised {
181
+ font-size: 0.8156rem;
182
+ }
140
183
  }
141
184
 
142
185
  :host[data-size='m']._focused:not(._label-outside) &,
@@ -164,6 +207,7 @@
164
207
 
165
208
  @supports (-webkit-hyphens: none) {
166
209
  & {
210
+ will-change: unset;
167
211
  transition-property: transform, color, letter-spacing;
168
212
  }
169
213
  }
@@ -171,8 +215,8 @@
171
215
 
172
216
  @mixin input-icon() {
173
217
  display: flex;
174
- width: 24px;
175
- height: 24px;
218
+ width: 1.5rem;
219
+ height: 1.5rem;
176
220
  align-items: center;
177
221
  justify-content: center;
178
222
  color: var(--tui-text-03);
@@ -208,92 +252,43 @@
208
252
  }
209
253
  }
210
254
 
211
- @mixin example-text() {
212
- display: flex;
213
- align-items: center;
214
- height: 20px;
215
- margin: -20px 0;
216
- padding: 10px 0;
217
- box-sizing: content-box;
218
- color: var(--tui-text-03);
219
- letter-spacing: normal;
220
- text-transform: none;
221
-
222
- :host[data-size='m']._label-outside & {
223
- margin-top: -19px;
224
- }
225
-
226
- :host[data-mode='onDark'] & {
227
- color: var(--tui-text-03-night);
228
- }
229
- }
230
-
231
255
  @mixin textfield() {
232
256
  :host {
233
257
  @include textfield-host();
234
258
  }
235
259
 
236
- .input {
260
+ .t-input {
237
261
  @include textfield-input();
238
262
  }
239
263
 
240
- .ghost {
241
- visibility: hidden;
242
- white-space: pre;
243
- text-overflow: clip;
244
- }
245
-
246
- .filler {
247
- vertical-align: middle;
248
- }
249
-
250
- .content {
264
+ .t-content {
251
265
  @include textfield-content();
252
266
  }
253
267
 
254
- .wrapper {
268
+ .t-wrapper {
255
269
  @include textfield-wrapper();
256
270
  }
257
271
 
258
- .value-decoration {
259
- @include example-text();
260
- }
261
-
262
- .value-decoration-inner {
263
- @include text-overflow();
264
- min-width: 0;
265
- }
266
-
267
- .postfix {
268
- @include transition('color');
269
- color: var(--tui-text-01);
270
-
271
- &_shifted {
272
- margin-left: 0.5ch;
273
- }
274
-
275
- :host[data-mode='onDark'] & {
276
- color: var(--tui-text-01-night);
277
- }
278
- }
279
-
280
- .placeholder {
272
+ .t-placeholder {
281
273
  @include textfield-placeholder();
282
274
  }
283
275
 
284
- .cleaner {
276
+ .t-cleaner {
285
277
  @include icon-button();
286
278
  }
287
279
 
288
280
  // $bad TODO: Refactor this and interactive icons together
289
- .icon {
281
+ .t-icon {
290
282
  @include input-icon();
291
283
 
292
284
  &_left {
293
285
  margin: 0 2 * $space 0 -$space;
286
+ margin-inline-start: -$space;
287
+ margin-inline-end: 2 * $space;
294
288
 
295
289
  :host[data-size='s'] & {
296
290
  margin-right: $space;
291
+ margin-inline-end: $space;
297
292
  }
298
293
  }
299
294
  }