@taiga-ui/kit
Version:
Taiga UI Angular main components kit
114 lines • 14.7 kB
JavaScript
import { __decorate, __extends, __param } from "tslib";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, HostBinding, Inject, Input, Optional, QueryList, Self, ViewChildren, } from '@angular/core';
import { NgControl } from '@angular/forms';
import { AbstractTuiNullableControl, ALWAYS_FALSE_HANDLER, EMPTY_QUERY, isNativeFocusedIn, TUI_DEFAULT_IDENTITY_MATCHER, TUI_FOCUSABLE_ITEM_ACCESSOR, tuiDefaultProp, } from '@taiga-ui/cdk';
import { TuiRadioLabeledComponent } from '@taiga-ui/kit/components/radio-labeled';
var TuiRadioListComponent = /** @class */ (function (_super) {
__extends(TuiRadioListComponent, _super);
function TuiRadioListComponent(control, changeDetectorRef, elementRef) {
var _this = _super.call(this, control, changeDetectorRef) || this;
_this.elementRef = elementRef;
_this.items = [];
_this.size = 'm';
_this.identityMatcher = TUI_DEFAULT_IDENTITY_MATCHER;
_this.orientation = "vertical" /* Vertical */;
// @bad TODO: Remove & { index: number }
_this.itemContent = function (_a) {
var $implicit = _a.$implicit;
return String($implicit);
};
_this.disabledItemHandler = ALWAYS_FALSE_HANDLER;
_this.radioButtons = EMPTY_QUERY;
return _this;
}
TuiRadioListComponent_1 = TuiRadioListComponent;
Object.defineProperty(TuiRadioListComponent.prototype, "nativeFocusableElement", {
get: function () {
var focusableRadioButton = this.radioButtons.find(function (radioButton) { return radioButton.nativeFocusableElement !== null; });
return focusableRadioButton ? focusableRadioButton.nativeFocusableElement : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(TuiRadioListComponent.prototype, "focused", {
get: function () {
return isNativeFocusedIn(this.elementRef.nativeElement);
},
enumerable: true,
configurable: true
});
TuiRadioListComponent.prototype.computeId = function (index) {
return this.id + "-" + index;
};
TuiRadioListComponent.prototype.itemIsDisabled = function (item) {
return this.disabledItemHandler(item);
};
TuiRadioListComponent.prototype.getContentContext = function (item, index, active) {
return { $implicit: item, index: index, active: active };
};
TuiRadioListComponent.prototype.onModelChange = function (value) {
this.updateValue(value);
};
TuiRadioListComponent.prototype.itemIsActive = function (item) {
return this.value === null
? item === null
: this.identityMatcher(this.value, item);
};
var TuiRadioListComponent_1;
TuiRadioListComponent.ctorParameters = function () { return [
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] }
]; };
__decorate([
Input(),
tuiDefaultProp()
], TuiRadioListComponent.prototype, "items", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-size'),
tuiDefaultProp()
], TuiRadioListComponent.prototype, "size", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiRadioListComponent.prototype, "identityMatcher", void 0);
__decorate([
Input(),
HostBinding('attr.data-tui-host-orientation'),
tuiDefaultProp()
], TuiRadioListComponent.prototype, "orientation", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiRadioListComponent.prototype, "itemContent", void 0);
__decorate([
Input(),
tuiDefaultProp()
], TuiRadioListComponent.prototype, "disabledItemHandler", void 0);
__decorate([
ViewChildren(TuiRadioLabeledComponent)
], TuiRadioListComponent.prototype, "radioButtons", void 0);
TuiRadioListComponent = TuiRadioListComponent_1 = __decorate([
Component({
selector: 'tui-radio-list',
template: "<tui-radio-group class=\"group\">\n <tui-radio-labeled\n *ngFor=\"let item of items; index as index\"\n class=\"item\"\n [readOnly]=\"readOnly\"\n [nativeId]=\"computeId(index)\"\n [disabled]=\"disabled\"\n [item]=\"item\"\n [size]=\"size\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoDisabled]=\"itemIsDisabled(item)\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <div\n polymorpheus-outlet\n [content]=\"itemContent\"\n [context]=\"getContentContext(item, index, itemIsActive(item))\"\n ></div>\n </tui-radio-labeled>\n</tui-radio-group>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [
{
provide: TUI_FOCUSABLE_ITEM_ACCESSOR,
useExisting: forwardRef(function () { return TuiRadioListComponent_1; }),
},
],
styles: [":host{display:block}:host._readonly{pointer-events:none}:host[data-tui-host-orientation=horizontal] .group{display:flex;justify-content:inherit}:host[data-tui-host-orientation=horizontal] .item:nth-child(n+2){margin-left:24px}:host[data-tui-host-orientation=vertical] .item:nth-child(n+2){margin-top:12px}:host[data-tui-host-size='l'][data-tui-host-orientation=horizontal] .item:nth-child(n+2){margin-left:40px}:host[data-tui-host-size='l'][data-tui-host-orientation=vertical] .item:nth-child(n+2){margin-top:16px}"]
}),
__param(0, Optional()),
__param(0, Self()),
__param(0, Inject(NgControl)),
__param(1, Inject(ChangeDetectorRef)),
__param(2, Inject(ElementRef))
], TuiRadioListComponent);
return TuiRadioListComponent;
}(AbstractTuiNullableControl));
export { TuiRadioListComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvcmFkaW8tbGlzdC8iLCJzb3VyY2VzIjpbInJhZGlvLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksRUFDSixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUUzQixjQUFjLEdBR2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBZWhGO0lBQThDLHlDQUE2QjtJQWlDdkUsK0JBSUksT0FBeUIsRUFDRSxpQkFBb0MsRUFDMUIsVUFBbUM7UUFONUUsWUFRSSxrQkFBTSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsU0FDcEM7UUFId0MsZ0JBQVUsR0FBVixVQUFVLENBQXlCO1FBcEM1RSxXQUFLLEdBQXFCLEVBQUUsQ0FBQztRQUs3QixVQUFJLEdBQWEsR0FBRyxDQUFDO1FBSXJCLHFCQUFlLEdBQTBCLDRCQUE0QixDQUFDO1FBS3RFLGlCQUFXLDZCQUEyQztRQUV0RCx3Q0FBd0M7UUFHeEMsaUJBQVcsR0FBcUUsVUFBQyxFQUVoRjtnQkFERyx3QkFBUztZQUNQLE9BQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUFqQixDQUFpQixDQUFDO1FBSXhCLHlCQUFtQixHQUF5QixvQkFBb0IsQ0FBQztRQUdo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QUE7T0F2Q2QscUJBQXFCLENBaUZqQztJQUFELDRCQUFDO0NBQUEsQUFqRkQsQ0FBOEMsMEJBQTBCLEdBaUZ2RTtTQWpGWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBBTFdBWVNfRkFMU0VfSEFORExFUixcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBpc05hdGl2ZUZvY3VzZWRJbixcbiAgICBUVUlfREVGQVVMVF9JREVOVElUWV9NQVRDSEVSLFxuICAgIFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICBUdWlCb29sZWFuSGFuZGxlcixcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlJZGVudGl0eU1hdGNoZXIsXG4gICAgVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1R1aU9yaWVudGF0aW9uLCBUdWlTaXplTCwgVHVpVmFsdWVDb250ZW50Q29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlSYWRpb0xhYmVsZWRDb21wb25lbnR9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9yYWRpby1sYWJlbGVkJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktcmFkaW8tbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWxpc3QudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmFkaW8tbGlzdC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRVSV9GT0NVU0FCTEVfSVRFTV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFR1aVJhZGlvTGlzdENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpUmFkaW9MaXN0Q29tcG9uZW50PFQ+IGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VD4ge1xuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBpdGVtczogUmVhZG9ubHlBcnJheTxUPiA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10dWktaG9zdC1zaXplJylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNpemU6IFR1aVNpemVMID0gJ20nO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGlkZW50aXR5TWF0Y2hlcjogVHVpSWRlbnRpdHlNYXRjaGVyPFQ+ID0gVFVJX0RFRkFVTFRfSURFTlRJVFlfTUFUQ0hFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdHVpLWhvc3Qtb3JpZW50YXRpb24nKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgb3JpZW50YXRpb246IFR1aU9yaWVudGF0aW9uID0gVHVpT3JpZW50YXRpb24uVmVydGljYWw7XG5cbiAgICAvLyBAYmFkIFRPRE86IFJlbW92ZSAmIHsgaW5kZXg6IG51bWJlciB9XG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGl0ZW1Db250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PFR1aVZhbHVlQ29udGVudENvbnRleHQ8VD4gJiB7aW5kZXg6IG51bWJlcn0+ID0gKHtcbiAgICAgICAgJGltcGxpY2l0LFxuICAgIH0pID0+IFN0cmluZygkaW1wbGljaXQpO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFQ+ID0gQUxXQVlTX0ZBTFNFX0hBTkRMRVI7XG5cbiAgICBAVmlld0NoaWxkcmVuKFR1aVJhZGlvTGFiZWxlZENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhZGlvQnV0dG9uczogUXVlcnlMaXN0PFR1aVJhZGlvTGFiZWxlZENvbXBvbmVudDx7fT4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNvbnRyb2wsIGNoYW5nZURldGVjdG9yUmVmKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZVJhZGlvQnV0dG9uID0gdGhpcy5yYWRpb0J1dHRvbnMuZmluZChcbiAgICAgICAgICAgIHJhZGlvQnV0dG9uID0+IHJhZGlvQnV0dG9uLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgIT09IG51bGwsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZvY3VzYWJsZVJhZGlvQnV0dG9uID8gZm9jdXNhYmxlUmFkaW9CdXR0b24ubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWRJbih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29tcHV0ZUlkKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5pZH0tJHtpbmRleH1gO1xuICAgIH1cblxuICAgIGl0ZW1Jc0Rpc2FibGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50Q29udGV4dChcbiAgICAgICAgaXRlbTogVCxcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgICAgYWN0aXZlOiBib29sZWFuLFxuICAgICk6IFR1aVZhbHVlQ29udGVudENvbnRleHQ8VD4gJiB7aW5kZXg6IG51bWJlcn0ge1xuICAgICAgICByZXR1cm4geyRpbXBsaWNpdDogaXRlbSwgaW5kZXgsIGFjdGl2ZX07XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogVCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpdGVtSXNBY3RpdmUoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgPyBpdGVtID09PSBudWxsXG4gICAgICAgICAgICA6IHRoaXMuaWRlbnRpdHlNYXRjaGVyKHRoaXMudmFsdWUsIGl0ZW0pO1xuICAgIH1cbn1cbiJdfQ==