@taiga-ui/kit
Version:
Taiga UI Angular main components kit
480 lines • 72.5 kB
JavaScript
import { __decorate, __extends, __param, __read, __spread } from "tslib";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostBinding, Inject, Input, Optional, Output, QueryList, Self, TemplateRef, ViewChild, ViewChildren, } from '@angular/core';
import { NgControl } from '@angular/forms';
import { AbstractTuiMultipleControl, ALWAYS_FALSE_HANDLER, ALWAYS_TRUE_HANDLER, EMPTY_QUERY, getActualTarget, isNativeFocusedIn, preventDefault, setNativeFocused, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiActiveZoneDirective, TuiBooleanHandler, TuiContextWithImplicit, tuiDefaultProp, TuiFocusableElementAccessor, TuiScrollService, typedFromEvent, } from '@taiga-ui/cdk';
import { HINT_CONTROLLER_PROVIDER, TEXTFIELD_CONTROLLER_PROVIDER, TUI_DATA_LIST_HOST, TUI_HINT_WATCHED_CONTROLLER, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTIFELD_WATCHED_CONTROLLER, TuiDataListDirective, TuiDataListHost, TuiHintControllerDirective, TuiHorizontalDirection, TuiHostedDropdownComponent, TuiModeDirective, TuiScrollbarComponent, TuiSizeL, TuiSizeS, TuiTextfieldController, } from '@taiga-ui/core';
import { ALLOWED_SPACE_REGEXP } from '@taiga-ui/kit/components/tag';
import { FIXED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/kit/providers';
import { TUI_TAG_STATUS } from '@taiga-ui/kit/tokens';
import { merge, Subject } from 'rxjs';
import { filter, map, mapTo, switchMap, takeUntil } from 'rxjs/operators';
var EVENT_Y_TO_X_COEFFICENT = 3;
var TuiInputTagComponent = /** @class */ (function (_super) {
__extends(TuiInputTagComponent, _super);
function TuiInputTagComponent(control, changeDetectorRef, tuiScrollService, elementRef, appearance, modeDirective, tagStatus, hintController, controller) {
var _this = _super.call(this, control, changeDetectorRef) || this;
_this.tuiScrollService = tuiScrollService;
_this.elementRef = elementRef;
_this.appearance = appearance;
_this.modeDirective = modeDirective;
_this.tagStatus = tagStatus;
_this.hintController = hintController;
_this.controller = controller;
_this.allowSpaces = true;
_this.icon = '';
_this.iconAlign = 'right';
_this.search = '';
_this.editable = true;
_this.tagValidator = ALWAYS_TRUE_HANDLER;
_this.expandable = true;
_this.inputHidden = false;
_this.disabledItemHandler = ALWAYS_FALSE_HANDLER;
_this.searchChange = new EventEmitter();
_this.open = false;
_this.tags = EMPTY_QUERY;
_this.scrollToStart$ = new Subject();
_this.scrollToEnd$ = new Subject();
return _this;
}
TuiInputTagComponent_1 = TuiInputTagComponent;
Object.defineProperty(TuiInputTagComponent.prototype, "pseudoFocusedSetter", {
set: function (value) {
if (!value && !this.focused) {
this.scrollToStart$.next();
}
this.pseudoFocused = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "scrollerSetter", {
set: function (scroller) {
this.initScrollerSubscrition(scroller);
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "nativeFocusableElement", {
get: function () {
return !this.focusableElement || this.computedDisabled
? null
: this.focusableElement.nativeElement;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "focused", {
get: function () {
return (isNativeFocusedIn(this.elementRef.nativeElement) ||
(!!this.dropdown && this.dropdown.focused));
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "size", {
get: function () {
return this.controller.size;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "labelOutside", {
get: function () {
return this.controller.labelOutside;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "hasCleaner", {
get: function () {
return (this.controller.cleaner && this.hasValue && !this.disabled && !this.readOnly);
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "hasNativeValue", {
get: function () {
return !!this.search;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "hasValue", {
get: function () {
return !!this.value.length || this.hasNativeValue;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "hasPlaceholder", {
get: function () {
return !this.labelOutside || (!this.hasValue && !this.hasExampleText);
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "placeholderRaised", {
get: function () {
return (!this.labelOutside &&
((this.computedFocused && !this.readOnly) || this.hasValue));
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "hasExampleText", {
get: function () {
return (!!this.controller.exampleText &&
this.computedFocused &&
!this.hasValue &&
!this.readOnly);
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "hasTooltip", {
get: function () {
return !!this.hintController.content && !this.disabled;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "iconAlignLeft", {
get: function () {
return !!this.icon && this.iconAlign === 'left';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "iconAlignRight", {
get: function () {
return !!this.icon && this.iconAlign === 'right';
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "hasRightIcons", {
get: function () {
return this.hasCleaner || this.hasTooltip || this.iconAlignRight;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiInputTagComponent.prototype, "status", {
get: function () {
return this.modeDirective && this.modeDirective.mode
? "default" /* Default */
: this.tagStatus;
},
enumerable: true,
configurable: true
});
TuiInputTagComponent.prototype.getLeftContent = function (tag) {
return !this.tagValidator(tag) && this.errorIconTemplate
? this.errorIconTemplate
: null;
};
TuiInputTagComponent.prototype.onCleanerClick = function () {
this.updateSearch('');
this.clear();
this.focusInput();
};
TuiInputTagComponent.prototype.onActiveZone = function (active) {
this.updateFocused(active);
if (active) {
return;
}
this.open = false;
this.addTag();
if (!this.pseudoFocused) {
this.scrollToStart$.next();
}
};
TuiInputTagComponent.prototype.onMouseDown = function (event) {
var actualTarget = getActualTarget(event);
if (!this.focusableElement ||
actualTarget === this.focusableElement.nativeElement ||
!(event.target instanceof Element) ||
(this.cleanerSvg && this.cleanerSvg.nativeElement.contains(event.target)) ||
(this.tagsContainer &&
actualTarget !== this.tagsContainer.nativeElement &&
this.tagsContainer.nativeElement.contains(actualTarget))) {
return;
}
event.preventDefault();
this.focusInput();
};
TuiInputTagComponent.prototype.onFieldKeyDownBackspace = function (event) {
if (!this.labelOutside && !this.hasNativeValue && this.value.length) {
this.deleteLastEnabledItem();
}
else {
this.onFieldKeyDownArrowLeft(event);
}
};
TuiInputTagComponent.prototype.onFieldKeyDownArrowLeft = function (event) {
if (!this.labelOutside || this.hasNativeValue || !this.value.length) {
return;
}
event.preventDefault();
setNativeFocused(this.tags.last.nativeElement);
};
TuiInputTagComponent.prototype.onFieldKeyDownEnter = function () {
this.addTag();
this.scrollToEnd$.next();
};
TuiInputTagComponent.prototype.onTagKeyDownArrowLeft = function (currentIndex) {
if (currentIndex <= 0) {
return;
}
this.onScrollKeyDown(currentIndex, -1);
};
TuiInputTagComponent.prototype.onTagKeyDownArrowRight = function (currentIndex) {
if (currentIndex === this.value.length - 1) {
this.focusInput();
return;
}
this.onScrollKeyDown(currentIndex, 1);
};
TuiInputTagComponent.prototype.onTagEdited = function (value, editedTag) {
this.focusInput();
this.updateValue(this.value
.map(function (tag) {
return tag !== editedTag
? tag
: value
.split(',')
.map(function (tag) { return tag.trim(); })
.filter(Boolean);
})
.reduce(function (result, item) { return result.concat(item); }, []));
};
TuiInputTagComponent.prototype.handleOption = function (item) {
this.focusInput();
this.updateSearch('');
this.updateValue(this.value.concat(item));
this.open = false;
this.scrollToEnd$.next();
};
TuiInputTagComponent.prototype.onInput = function (value) {
var _this = this;
var array = this.allowSpaces
? value.split(',')
: value.split(ALLOWED_SPACE_REGEXP);
var tags = array
.map(function (item) { return item.trim(); })
.filter(function (item, index, _a) {
var length = _a.length;
return item.length > 0 && index !== length - 1;
});
var validated = tags.filter(function (tag) { return !_this.disabledItemHandler(tag); });
if (array.length > 1) {
this.updateSearch(array[array.length - 1].trim());
this.updateValue(__spread(this.value, validated));
}
else {
this.updateSearch(value);
}
this.open = this.hasNativeValue;
};
TuiInputTagComponent.prototype.onHoveredChange = function (hovered) {
this.updateHovered(hovered);
};
TuiInputTagComponent.prototype.setDisabledState = function () {
_super.prototype.setDisabledState.call(this);
this.open = false;
};
TuiInputTagComponent.prototype.onScrollKeyDown = function (currentIndex, flag) {
var tag = this.tags.find(function (_item, index) { return index === currentIndex + flag; });
if (!tag || !this.scrollBar) {
return;
}
setNativeFocused(tag.nativeElement);
if (flag * this.scrollBar.nativeElement.clientWidth -
flag * tag.nativeElement.offsetLeft -
tag.nativeElement.clientWidth <
0) {
this.scrollBar.nativeElement.scrollLeft +=
flag * tag.nativeElement.clientWidth;
}
};
TuiInputTagComponent.prototype.initScrollerSubscrition = function (scroller) {
var _this = this;
if (!scroller || !scroller.browserScrollRef) {
return;
}
var nativeElement = scroller.browserScrollRef.nativeElement;
var wheel$ = typedFromEvent(nativeElement, 'wheel', { passive: false }).pipe(filter(function (event) { return event.deltaX === 0 && _this.shouldScroll(nativeElement); }), preventDefault(), map(function (_a) {
var deltaY = _a.deltaY;
return Math.max(nativeElement.scrollLeft + deltaY * EVENT_Y_TO_X_COEFFICENT, 0);
}));
var start$ = this.scrollToStart$.pipe(mapTo(0));
var end$ = this.scrollToEnd$.pipe(map(function () { return nativeElement.scrollWidth; }));
merge(wheel$, start$, end$)
.pipe(switchMap(function (left) { return _this.tuiScrollService.scroll$(nativeElement, 0, left); }), takeUntil(this.destroy$))
.subscribe();
};
TuiInputTagComponent.prototype.updateValue = function (value) {
var seen = new Set();
_super.prototype.updateValue.call(this, value
.reverse()
.filter(function (item) { return !!item && !seen.has(item) && seen.add(item); })
.reverse());
};
TuiInputTagComponent.prototype.updateSearch = function (value) {
if (this.focusableElement) {
this.focusableElement.nativeElement.value = value;
}
this.search = value;
this.searchChange.emit(value);
};
TuiInputTagComponent.prototype.shouldScroll = function (_a) {
var scrollWidth = _a.scrollWidth, offsetWidth = _a.offsetWidth;
return scrollWidth > offsetWidth;
};
TuiInputTagComponent.prototype.addTag = function () {
var inputValue = this.search.trim();
if (!inputValue || this.disabledItemHandler(inputValue)) {
return;
}
this.updateSearch('');
this.updateValue(this.value.concat(inputValue));
};
TuiInputTagComponent.prototype.deleteLastEnabledItem = function () {
for (var index = this.value.length - 1; index >= 0; index--) {
if (!this.disabledItemHandler(this.value[index])) {
this.updateValue(__spread(this.value.slice(0, index), this.value.slice(index + 1, this.value.length)));
break;
}
}
};
TuiInputTagComponent.prototype.focusInput = function (preventScroll) {
if (preventScroll === void 0) { preventScroll = false; }
if (this.nativeFocusableElement) {
setNativeFocused(this.nativeFocusableElement, true, preventScroll);
}
};
var TuiInputTagComponent_1;
TuiInputTagComponent.ctorParameters = function () { return [
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
{ type: TuiScrollService, decorators: [{ type: Inject, args: [TuiScrollService,] }] },
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
{ type: String, decorators: [{ type: Inject, args: [TUI_TEXTFIELD_APPEARANCE,] }] },
{ type: TuiModeDirective, decorators: [{ type: Optional }, { type: Inject, args: [TuiModeDirective,] }] },
{ type: undefined, decorators: [{ type: Inject, args: [TUI_TAG_STATUS,] }] },
{ type: TuiHintControllerDirective, decorators: [{ type: Inject, args: [TUI_HINT_WATCHED_CONTROLLER,] }] },
{ type: TuiTextfieldController, decorators: [{ type: Inject, args: [TUI_TEXTIFELD_WATCHED_CONTROLLER,] }] }
]; };
__decorate([
Input(),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "allowSpaces", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "icon", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "iconAlign", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "search", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "editable", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "tagValidator", void 0);
__decorate([
Input(),
HostBinding('class._expandable'),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "expandable", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "inputHidden", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiInputTagComponent.prototype, "disabledItemHandler", void 0);
__decorate([
Input('pseudoFocused')
], TuiInputTagComponent.prototype, "pseudoFocusedSetter", null);
__decorate([
Output()
], TuiInputTagComponent.prototype, "searchChange", void 0);
__decorate([
ViewChild(TuiScrollbarComponent)
], TuiInputTagComponent.prototype, "scrollerSetter", null);
__decorate([
ContentChild(TuiDataListDirective, { read: TemplateRef })
], TuiInputTagComponent.prototype, "datalist", void 0);
__decorate([
ViewChild('errorIcon')
], TuiInputTagComponent.prototype, "errorIconTemplate", void 0);
__decorate([
ViewChild(TuiHostedDropdownComponent)
], TuiInputTagComponent.prototype, "dropdown", void 0);
__decorate([
ViewChild('focusableElement')
], TuiInputTagComponent.prototype, "focusableElement", void 0);
__decorate([
ViewChild('tagsContainer')
], TuiInputTagComponent.prototype, "tagsContainer", void 0);
__decorate([
ViewChildren('tag', { read: ElementRef })
], TuiInputTagComponent.prototype, "tags", void 0);
__decorate([
ViewChild('cleaner', { read: ElementRef })
], TuiInputTagComponent.prototype, "cleanerSvg", void 0);
__decorate([
ViewChild(TuiScrollbarComponent, { read: ElementRef })
], TuiInputTagComponent.prototype, "scrollBar", void 0);
__decorate([
HostBinding('attr.data-tui-host-size')
], TuiInputTagComponent.prototype, "size", null);
__decorate([
HostBinding('class._label-outside')
], TuiInputTagComponent.prototype, "labelOutside", null);
TuiInputTagComponent = TuiInputTagComponent_1 = __decorate([
Component({
selector: 'tui-input-tag',
changeDetection: ChangeDetectionStrategy.OnPush,
template: "<!-- TODO: repair -->\n<tui-hosted-dropdown\n class=\"hosted\"\n [content]=\"datalist || ''\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-wrapper\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [focused]=\"computedFocused\"\n [hovered]=\"computedHovered\"\n [disabled]=\"computedDisabled\"\n [invalid]=\"computedInvalid\"\n (tuiHoveredChange)=\"onHoveredChange($event)\"\n (mousedown)=\"onMouseDown($event)\"\n >\n <div class=\"content\">\n <div *ngIf=\"iconAlignLeft\" class=\"icons icons_left\">\n <tui-svg class=\"icon\" [src]=\"icon\"></tui-svg>\n </div>\n <div class=\"wrapper\">\n <div class=\"absolute-wrapper\">\n <div\n *ngIf=\"hasPlaceholder\"\n automation-id=\"tui-input-tag__placeholder\"\n class=\"placeholder\"\n [class.placeholder_raised]=\"placeholderRaised\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"hasExampleText\"\n automation-id=\"tui-input-tag__example-text\"\n class=\"value-decoration\"\n >\n <span class=\"example-text-inner\">\n {{controller.exampleText}}\n </span>\n </div>\n </div>\n <tui-scrollbar\n *ngIf=\"!expandable; else items\"\n class=\"scrollbar\"\n [hidden]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"items\"></ng-container>\n </tui-scrollbar>\n <ng-template #items>\n <div #tagsContainer class=\"tags\">\n <ng-container\n *ngIf=\"controller.labelOutside; else text\"\n >\n <tui-tag\n *ngFor=\"let item of value; index as index\"\n #tag\n class=\"tag\"\n automation-id=\"tui-input-tag__tag\"\n [status]=\"status\"\n [leftContent]=\"getLeftContent(item)\"\n [allowSpaces]=\"allowSpaces\"\n [tuiFocusable]=\"false\"\n [disabled]=\"computedDisabled || disabledItemHandler(item)\"\n [editable]=\"editable && !readOnly\"\n [hoverable]=\"!readOnly\"\n [removable]=\"!readOnly\"\n [maxLength]=\"controller.maxLength\"\n [size]=\"controller.size\"\n [value]=\"item.toString()\"\n (edited)=\"onTagEdited($event, item)\"\n (keydown.arrowLeft.prevent)=\"onTagKeyDownArrowLeft(index)\"\n (keydown.arrowRight.prevent)=\"onTagKeyDownArrowRight(index)\"\n ></tui-tag>\n </ng-container>\n <ng-template #text>\n <span\n *ngFor=\"let item of value\"\n class=\"text\"\n [class.text_disabled]=\"disabledItemHandler(item)\"\n [class.text_error]=\"!tagValidator(item)\"\n >{{item}}</span\n >\n </ng-template>\n <div\n class=\"input-wrapper\"\n [class.input-wrapper_collapsed]=\"computedDisabled || readOnly || inputHidden\"\n >\n <div class=\"ghost\">{{search}}</div>\n <input\n #focusableElement\n type=\"text\"\n automation-id=\"tui-input-tag__native\"\n class=\"native\"\n [class.native_hidden]=\"inputHidden\"\n [attr.maxLength]=\"controller.maxLength\"\n [id]=\"id\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly || inputHidden\"\n [tuiFocusable]=\"computedFocusable\"\n [ngModel]=\"search\"\n (ngModelChange)=\"onInput($event)\"\n (keydown.arrowLeft)=\"onFieldKeyDownArrowLeft($event)\"\n (keydown.backspace)=\"onFieldKeyDownBackspace($event)\"\n (keydown.enter.prevent)=\"onFieldKeyDownEnter()\"\n />\n </div>\n </div>\n </ng-template>\n </div>\n <div *ngIf=\"hasRightIcons\" class=\"icons icons_right\">\n <tui-svg\n *ngIf=\"hasCleaner\"\n #cleaner\n class=\"cleaner\"\n automation-id=\"tui-input-tag__cleaner\"\n src=\"tuiIconCloseLarge\"\n (click.stop)=\"onCleanerClick()\"\n ></tui-svg>\n <tui-tooltip\n *ngIf=\"hasTooltip\"\n automation-id=\"tui-input-tag__tooltip\"\n class=\"tooltip\"\n describeId=\"placeholer_until_accesibility_is_added\"\n [direction]=\"hintController.direction\"\n [mode]=\"hintController.mode\"\n [content]=\"hintController.content\"\n ></tui-tooltip>\n <tui-svg\n *ngIf=\"iconAlignRight\"\n class=\"icon\"\n [src]=\"icon\"\n ></tui-svg>\n </div>\n </div>\n <ng-template #errorIcon>\n <tui-svg class=\"error-icon\" src=\"tuiIconAttention\"></tui-svg>\n </ng-template>\n </tui-wrapper>\n</tui-hosted-dropdown>\n",
providers: [
{
provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
useExisting: forwardRef(function () { return TuiInputTagComponent_1; }),
},
{
provide: TUI_DATA_LIST_HOST,
useExisting: forwardRef(function () { return TuiInputTagComponent_1; }),
},
FIXED_DROPDOWN_CONTROLLER_PROVIDER,
TEXTFIELD_CONTROLLER_PROVIDER,
HINT_CONTROLLER_PROVIDER,
],
styles: [":host{font:var(--tui-font-text-s);color:var(--tui-text-01);position:relative;display:block;border-radius:var(--tui-radius-m)}:host[data-tui-host-size='s']{height:var(--tui-height-s);min-height:var(--tui-height-s);max-height:var(--tui-height-s)}:host[data-tui-host-size='m']{height:var(--tui-height-m);min-height:var(--tui-height-m);max-height:var(--tui-height-m)}:host[data-tui-host-size='l']{height:var(--tui-height-l);min-height:var(--tui-height-l);max-height:var(--tui-height-l);font-size:15px}.input{font:var(--tui-font-text-s);color:var(--tui-text-01);padding:0 12px;border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-transform:inherit}.input:-webkit-autofill,.input:-webkit-autofill:focus,.input:-webkit-autofill:hover{border-radius:inherit;-webkit-text-fill-color:inherit!important;color:inherit!important;background-color:transparent!important;-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}:host[data-tui-host-size='s'] .input{padding:0 8px 0 12px}:host[data-tui-host-size='l'] .input{padding:0 16px}:host._disabled .input{pointer-events:none}:host._right-aligned .input{text-align:right}:host[data-tui-host-size='l']:not(._label-outside) .input{padding-top:20px}:host[data-tui-host-size='l']:not(._label-outside) .input:-webkit-autofill+.content .placeholder{width:114%;transform:translateY(-10px) scale(.87)}:host[data-tui-host-size='m']:not(._label-outside) .input{padding-top:18px}:host[data-tui-host-size='m']:not(._label-outside) .input:-webkit-autofill+.content .placeholder{width:118%;transform:translateY(-8px) scale(.85)}.ghost{visibility:hidden;white-space:pre;text-overflow:clip}.filler{vertical-align:middle}.content{display:flex;height:100%;width:100%;box-sizing:border-box;align-items:center;overflow:hidden}:host[data-tui-host-size='s'] .content{padding-right:8px}:host[data-tui-host-size='l'] .content{padding-left:16px}.wrapper{flex:1;min-width:0}.value-decoration{display:flex;align-items:center;height:20px;margin:-20px 0;padding:10px 0;box-sizing:content-box;color:var(--tui-text-03);letter-spacing:normal;text-transform:none}:host._right-aligned .value-decoration{flex-direction:row-reverse;margin-right:-4px}:host[data-tui-host-size='m']._label-outside .value-decoration{margin-top:-19px}:host[data-mode=onDark] .value-decoration{color:var(--tui-text-03-night)}.value-decoration-inner{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.postfix{transition-property:color;transition-duration:.3s;transition-timing-function:ease-in-out;color:var(--tui-text-01)}.postfix_shifted{margin-left:.5ch}:host[data-mode=onDark] .postfix{color:var(--tui-text-01-night)}.placeholder{transition-property:transform,min-width,color,letter-spacing;transition-duration:.3s;transition-timing-function:ease-in-out;font:var(--tui-font-text-s);color:var(--tui-text-01);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;height:20px;font-size:13px;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;color:var(--tui-text-02);transform-origin:left;letter-spacing:normal;text-transform:none}.placeholder_raised{width:114%;transform:translateY(-10px) scale(.87)}:host[data-tui-host-size='m'] .placeholder_raised{width:118%;transform:translateY(-8px) scale(.85);letter-spacing:.4px}:host._invalid:not(._focused) .placeholder_raised,:host._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill)}:host[data-mode=onDark]._invalid:not(._focused) .placeholder_raised,:host[data-mode=onDark]._invalid:not(._focused)._hovered .placeholder_raised{color:var(--tui-error-fill-night)}:host._focused .placeholder,:host[data-tui-host-size='l']._focused._label-outside .placeholder,:host[data-tui-host-size='m']._focused._label-outside .placeholder{color:var(--tui-text-03)}:host[data-tui-host-size='l'] .placeholder{font-size:15px}:host[data-tui-host-size='l']._focused:not(._label-outside) .placeholder,:host[data-tui-host-size='m']._focused:not(._label-outside) .placeholder{color:var(--tui-text-01)}:host[data-mode=onDark] .placeholder{color:var(--tui-text-02-night)}:host[data-tui-host-size='l'][data-mode=onDark]._focused:not(._label-outside) .placeholder,:host[data-tui-host-size='m'][data-mode=onDark]._focused:not(._label-outside) .placeholder{color:var(--tui-text-01-night)}:host[data-mode=onDark]._focused .placeholder,:host[data-tui-host-size='l'][data-mode=onDark]._focused._label-outside .placeholder,:host[data-tui-host-size='m'][data-mode=onDark]._focused._label-outside .placeholder{color:var(--tui-text-02-night)}.cleaner{transition-duration:.3s;transition-timing-function:ease-in-out;display:flex;width:24px;height:24px;align-items:center;justify-content:center;color:var(--tui-text-03);position:relative;box-sizing:border-box;cursor:pointer;transition-property:color,transform}.cleaner:hover{color:var(--tui-text-02)}:host._disabled .cleaner,:host._readonly .cleaner{pointer-events:none}:host[data-mode=onDark] .cleaner{color:var(--tui-text-03-night)}:host[data-mode=onDark] .cleaner:hover{color:var(--tui-text-01-night)}.icon{display:flex;width:24px;height:24px;align-items:center;justify-content:center;color:var(--tui-text-03)}:host[data-mode=onDark] .icon{color:var(--tui-text-03-night)}.icon_left{margin:0 8px 0 -4px}:host[data-tui-host-size='s'] .icon_left{margin-right:4px}:host{cursor:text}:host._expandable{height:auto;max-height:none}:host._disabled{pointer-events:none}:host._readonly{cursor:default}.hosted{display:block;border-radius:inherit}.scrollbar{margin:0 -4px;padding:0 4px}.tags{display:flex;align-items:center;box-sizing:border-box}:host._expandable .tags{flex-wrap:wrap;white-space:normal}:host._readonly .tags{pointer-events:none}:host[data-tui-host-size='m'] .tags{min-height:var(--tui-height-m);padding:8px 4px 8px 0}:host[data-tui-host-size='l'] .tags{min-height:var(--tui-height-l);padding:10px 4px 10px 0}:host[data-tui-host-size='m']:not(._label-outside) .tags{padding:19px 16px 0 0}:host[data-tui-host-size='l']:not(._label-outside) .tags{padding:27px 16px 9px 0}.content{padding:0;align-items:flex-start}:host[data-tui-host-size='m'] .content{padding-left:12px}.icons{display:flex;align-items:center;padding:0 12px}.icons_left{padding:0;margin-right:8px;margin-left:-4px}:host._expandable .icons_right{margin-left:-10px}:host[data-tui-host-size='m'] .icons{height:var(--tui-height-m)}:host[data-tui-host-size='l'] .icons{height:var(--tui-height-l)}.absolute-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center}:host[data-tui-host-size='m'] .absolute-wrapper{height:var(--tui-height-m)}:host[data-tui-host-size='l'] .absolute-wrapper{height:var(--tui-height-l)}.wrapper{position:relative;padding:0}.tag{margin:2px 8px 2px -4px;max-width:100%;flex-shrink:0}.text:after{content:',\\00a0'}.text_disabled{color:var(--tui-text-03)}.text_error{color:var(--tui-negative)}:host:not(._expandable) .text{white-space:nowrap}:host:not(:focus-within) .text:last-of-type:after{content:''}.input-wrapper{position:relative;flex:1;max-width:100%;min-height:28px}.input-wrapper_collapsed{flex:0;margin-left:-8px}:host[data-tui-host-size='l'] .input-wrapper{min-height:36px}:host:not(._label-outside) .input-wrapper{min-height:20px}.ghost{min-width:2px}:host:not(._expandable) .ghost{min-width:32px}.native{border:0;border-radius:inherit;background:0 0;font-size:inherit;line-height:inherit;font-weight:inherit;color:inherit;caret-color:currentColor;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;word-break:keep-all;-webkit-text-fill-color:currentColor;position:absolute;top:0;left:0;width:100%;height:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;padding:0;cursor:inherit}.native:-webkit-autofill,.native:-webkit-autofill:focus,.native:-webkit-autofill:hover{border-radius:inherit;-webkit-text-fill-color:inherit!important;color:inherit!important;background-color:transparent!important;-webkit-box-shadow:0 0 0 1000px var(--tui-autofill) inset!important}.native_hidden{opacity:0;text-indent:-10em}.error-icon{display:block;color:var(--tui-error-fill);width:16px;height:16px}"]
}),
__param(0, Optional()),
__param(0, Self()),
__param(0, Inject(NgControl)),
__param(1, Inject(ChangeDetectorRef)),
__param(2, Inject(TuiScrollService)),
__param(3, Inject(ElementRef)),
__param(4, Inject(TUI_TEXTFIELD_APPEARANCE)),
__param(5, Optional()),
__param(5, Inject(TuiModeDirective)),
__param(6, Inject(TUI_TAG_STATUS)),
__param(7, Inject(TUI_HINT_WATCHED_CONTROLLER)),
__param(8, Inject(TUI_TEXTIFELD_WATCHED_CONTROLLER))
], TuiInputTagComponent);
return TuiInputTagComponent;
}(AbstractTuiMultipleControl));
export { TuiInputTagComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9pbnB1dC10YWcvIiwic291cmNlcyI6WyJpbnB1dC10YWcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULElBQUksRUFDSixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLGNBQWMsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHdCQUF3QixFQUN4Qiw2QkFBNkIsRUFDN0Isa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsZ0NBQWdDLEVBQ2hDLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixRQUFRLEVBQ1IsUUFBUSxFQUNSLHNCQUFzQixHQUN6QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFN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