UNPKG

xui

Version:

xUI Components for Angular

149 lines 16 kB
import { __decorate, __metadata } from "tslib"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, HostListener, Input, Optional, QueryList, Self } from '@angular/core'; import { NgControl } from '@angular/forms'; import { Subject } from 'rxjs'; import { RADIO_LIST_ACCESSOR } from './radio-list.types'; import { InputBoolean } from '../utils'; import { RadioOptionComponent } from './radio-option.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; export class RadioListComponent { get value() { return this._value; } set value(v) { if (this._value !== v) { this._value = v; this.onChange?.(v); this.onChange$.next(null); } } constructor(cdr, control) { this.cdr = cdr; this.control = control; this._mouseDown = false; this._value = null; this.size = 'md'; this.color = 'light'; this.disabled = false; this.onChange$ = new Subject(); if (this.control) { this.control.valueAccessor = this; } } ngOnInit() { this.control?.statusChanges?.subscribe(() => this.cdr.markForCheck()); } writeValue(source) { this.value = source; } registerOnChange(onChange) { this.onChange = onChange; } registerOnTouched(onTouched) { this.onTouched = onTouched; } setDisabledState(isDisabled) { this.disabled = isDisabled; } prev(event) { event.preventDefault(); event.stopPropagation(); this.select(true); } next(event) { event.preventDefault(); event.stopPropagation(); this.select(false); } mouseDown() { this._mouseDown = true; } mouseUp() { this._mouseDown = false; } focus() { if (!this._mouseDown) { this.focusedValue = this.value; this.onChange$.next(null); } } focusout() { this.focusedValue = undefined; this.onChange$.next(null); this.onTouched?.(); } select(prev) { if (this.disabled) { return; } const options = this.optionsRef.toArray(); let next = options.findIndex(x => x.value === this.value); let iteration = 0; do { next += prev ? -1 : 1; if (prev && next < 0) { next = options.length - 1; iteration++; } else if (!prev && next >= options.length) { next = 0; iteration++; } if (iteration == 2) { return; } } while (options[next].disabled); this.value = options[next].value; this.focusedValue = this.value; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: RadioListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: RadioListComponent, selector: "xui-radio-list", inputs: { size: "size", color: "color", disabled: "disabled", value: "value" }, host: { listeners: { "keydown.arrowup": "prev($event)", "keydown.arrowdown": "next($event)", "mousedown": "mouseDown()", "mouseup": "mouseUp()", "focusin": "focus()", "focusout": "focusout()" } }, providers: [{ provide: RADIO_LIST_ACCESSOR, useExisting: RadioListComponent }], queries: [{ propertyName: "optionsRef", predicate: RadioOptionComponent }], ngImport: i0, template: '<div class="x-radio-list" tabindex="0"><ng-content></ng-content></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } __decorate([ InputBoolean(), __metadata("design:type", Object) ], RadioListComponent.prototype, "disabled", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: RadioListComponent, decorators: [{ type: Component, args: [{ selector: 'xui-radio-list', changeDetection: ChangeDetectionStrategy.OnPush, template: '<div class="x-radio-list" tabindex="0"><ng-content></ng-content></div>', providers: [{ provide: RADIO_LIST_ACCESSOR, useExisting: RadioListComponent }] }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{ type: Self }, { type: Optional }] }]; }, propDecorators: { size: [{ type: Input }], color: [{ type: Input }], disabled: [{ type: Input }], optionsRef: [{ type: ContentChildren, args: [RadioOptionComponent] }], value: [{ type: Input }], prev: [{ type: HostListener, args: ['keydown.arrowup', ['$event']] }], next: [{ type: HostListener, args: ['keydown.arrowdown', ['$event']] }], mouseDown: [{ type: HostListener, args: ['mousedown'] }], mouseUp: [{ type: HostListener, args: ['mouseup'] }], focus: [{ type: HostListener, args: ['focusin'] }], focusout: [{ type: HostListener, args: ['focusout'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3h1aS9zcmMvcmFkaW8tbGlzdC9yYWRpby1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0wsbUJBQW1CLEVBS3BCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBU2hFLE1BQU0sT0FBTyxrQkFBa0I7SUFpQjdCLElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFlBQW9CLEdBQXNCLEVBQTZCLE9BQW1CO1FBQXRFLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQTZCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUF6QmxGLGVBQVUsR0FB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LENBQUMsUUFBUSxDQUFDO2dCQVFyQyxTQUFTO3NCQURoQixZQUFZO3VCQUFDLFdBQVc7Z0JBTWpCLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxTQUFTO2dCQU1mLEtBQUs7c0JBRFosWUFBWTt1QkFBQyxTQUFTO2dCQVNmLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIFJBRElPX0xJU1RfQUNDRVNTT1IsXG4gIFJhZGlvTGlzdEFjY2Vzc29yLFxuICBSYWRpb0xpc3RDb2xvcixcbiAgUmFkaW9MaXN0U2l6ZSxcbiAgUmFkaW9MaXN0VmFsdWVcbn0gZnJvbSAnLi9yYWRpby1saXN0LnR5cGVzJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBSYWRpb09wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8tb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWktcmFkaW8tbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJ4LXJhZGlvLWxpc3RcIiB0YWJpbmRleD1cIjBcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+JyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBSQURJT19MSVNUX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogUmFkaW9MaXN0Q29tcG9uZW50IH1dXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIFJhZGlvTGlzdEFjY2Vzc29yLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZT86IChzb3VyY2U6IFJhZGlvTGlzdFZhbHVlKSA9PiB2b2lkO1xuICBwcml2YXRlIG9uVG91Y2hlZD86ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgX21vdXNlRG93biA9IGZhbHNlO1xuICBwcml2YXRlIF92YWx1ZTogUmFkaW9MaXN0VmFsdWUgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHNpemU6IFJhZGlvTGlzdFNpemUgPSAnbWQnO1xuICBASW5wdXQoKSBjb2xvcjogUmFkaW9MaXN0Q29sb3IgPSAnbGlnaHQnO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAQ29udGVudENoaWxkcmVuKFJhZGlvT3B0aW9uQ29tcG9uZW50KSBvcHRpb25zUmVmITogUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD47XG5cbiAgZm9jdXNlZFZhbHVlPzogUmFkaW9MaXN0VmFsdWU7XG4gIG9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2KSB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB2KSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgICB0aGlzLm9uQ2hhbmdlPy4odik7XG4gICAgICB0aGlzLm9uQ2hhbmdlJC5uZXh0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29udHJvbD86IE5nQ29udHJvbCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHNvdXJjZTogUmFkaW9MaXN0VmFsdWUpIHtcbiAgICB0aGlzLnZhbHVlID0gc291cmNlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHNvdXJjZTogUmFkaW9MaXN0VmFsdWUpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd3VwJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBwcmV2KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlbGVjdCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dkb3duJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBuZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlbGVjdChmYWxzZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nKVxuICBwcml2YXRlIG1vdXNlRG93bigpIHtcbiAgICB0aGlzLl9tb3VzZURvd24gPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcpXG4gIHByaXZhdGUgbW91c2VVcCgpIHtcbiAgICB0aGlzLl9tb3VzZURvd24gPSBmYWxzZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzaW4nKVxuICBwcml2YXRlIGZvY3VzKCkge1xuICAgIGlmICghdGhpcy5fbW91c2VEb3duKSB7XG4gICAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlzLm9uQ2hhbmdlJC5uZXh0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgcHJpdmF0ZSBmb2N1c291dCgpIHtcbiAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9uQ2hhbmdlJC5uZXh0KG51bGwpO1xuICAgIHRoaXMub25Ub3VjaGVkPy4oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0KHByZXY6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnNSZWYudG9BcnJheSgpO1xuICAgIGxldCBuZXh0ID0gb3B0aW9ucy5maW5kSW5kZXgoeCA9PiB4LnZhbHVlID09PSB0aGlzLnZhbHVlKTtcbiAgICBsZXQgaXRlcmF0aW9uID0gMDtcblxuICAgIGRvIHtcbiAgICAgIG5leHQgKz0gcHJldiA/IC0xIDogMTtcblxuICAgICAgaWYgKHByZXYgJiYgbmV4dCA8IDApIHtcbiAgICAgICAgbmV4dCA9IG9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgaXRlcmF0aW9uKys7XG4gICAgICB9IGVsc2UgaWYgKCFwcmV2ICYmIG5leHQgPj0gb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgbmV4dCA9IDA7XG4gICAgICAgIGl0ZXJhdGlvbisrO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlcmF0aW9uID09IDIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gd2hpbGUgKG9wdGlvbnNbbmV4dF0uZGlzYWJsZWQpO1xuXG4gICAgdGhpcy52YWx1ZSA9IG9wdGlvbnNbbmV4dF0udmFsdWU7XG4gICAgdGhpcy5mb2N1c2VkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICB9XG59XG4iXX0=