@alyle/ui
Version:
Minimal Design, a set of components for Angular
1 lines • 26.6 kB
Source Map (JSON)
{"version":3,"file":"alyle-ui-radio.mjs","sources":["../../../lib/radio/radio.ts","../../../lib/radio/radio.html","../../../lib/radio/alyle-ui-radio.ts"],"sourcesContent":["import {\n Component,\n forwardRef,\n NgModule,\n Input,\n Output,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n ContentChildren,\n QueryList,\n Optional,\n EventEmitter,\n ChangeDetectionStrategy,\n NgZone,\n ViewChild,\n ElementRef,\n Renderer2,\n AfterViewInit\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n FormsModule,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport {\n LyCommonModule,\n LyTheme2,\n LyCoreStyles,\n mixinDisableRipple,\n ThemeVariables,\n LyFocusState,\n LY_COMMON_STYLES,\n st2c,\n StyleCollection,\n LyClasses,\n StyleTemplate,\n ThemeRef,\n StyleRenderer } from '@alyle/ui';\nimport { Platform } from '@angular/cdk/platform';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nexport interface LyRadioTheme {\n /** Styles for Radio Component */\n root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n}\n\nexport interface LyRadioVariables {\n radio?: LyRadioTheme;\n}\n\nconst STYLE_PRIORITY = -2;\nconst DEFAULT_DISABLE_RIPPLE = false;\nconst DEFAULT_COLOR = 'accent';\n\nexport const LY_RADIO_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => LyRadioGroup),\n multi: true\n};\n\nlet idx = 0;\n\nexport class UndefinedValue {\n constructor() { }\n}\n\nexport const STYLES = (theme: ThemeVariables & LyRadioVariables, ref: ThemeRef) => {\n const radio = ref.selectorsOf(STYLES);\n const { after, before } = theme;\n return {\n $priority: STYLE_PRIORITY,\n /** ly-radio-group */\n root: ( ) => (_className: string) => `${_className}{display:inline-block;}${st2c((\n (theme.radio\n && theme.radio.root\n && (theme.radio.root instanceof StyleCollection\n ? theme.radio.root.setTransformer(fn => fn(radio))\n : theme.radio.root(radio))\n )), `${_className}`)}`,\n radio: ( ) => (_className: string) => `${_className}{display:inline-block;-webkit-tap-highlight-color:transparent;}${_className}${radio.checked} ${radio.container} div:nth-child(1){transform:scale(1.25);}${_className}${radio.checked} ${radio.container} div:nth-child(2){transform:scale(0.8);}${_className}${radio.onFocusByKeyboard} ${radio.container}::after{box-shadow:0 0 0 12px;background:currentColor;opacity:.13;border-radius:50%;}`,\n label: (_className: string) => `${_className}{user-select:none;cursor:pointer;white-space:nowrap;position:relative;display:flex;align-items:baseline;}`,\n labelContent: null,\n container: (_className: string) => `${_className}{position:relative;margin-${before}:.125em;margin-${after}:.5em;margin-top:auto;margin-bottom:auto;width:16px;height:16px;}${_className} div{margin:auto;border-radius:50%;width:1em;height:1em;box-sizing:border-box;}${_className}::after{content:'';}${st2c((LY_COMMON_STYLES.fill), `${_className}::after`)}${_className}::after{width:16px;height:16px;margin:auto;}${_className} div:nth-child(2){background:currentColor;transform:scale(0);}${_className} div:nth-child(1){transform:scale(1);border:solid .08em currentColor;color:${theme.text.disabled};}`,\n checked: null,\n _animations: ( ) => (_className: string) => `${_className} ${radio.container} div{transition:transform cubic-bezier(.1,1,0.5,1);transition-duration:250ms;}`,\n onFocusByKeyboard: null,\n disabled: ( ) => (_className: string) => `${_className}{color:${theme.disabled.contrast};}${_className} ${radio.container} div{color:${theme.disabled.contrast}!important;}`\n };\n};\n\n@Component({\n selector: 'ly-radio-group',\n template: `<ng-content></ng-content>`,\n providers: [LY_RADIO_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n exportAs: 'lyRadioGroup',\n standalone: false\n})\nexport class LyRadioGroup implements ControlValueAccessor {\n /** @docs-private */\n static readonly и = 'LyRadioGroup';\n /** @docs-private */\n readonly classes = this._theme.renderStyleSheet(STYLES);\n private _value: any;\n /** @docs-private */\n name = `ly-radio-name-${idx++}`;\n\n @Input()\n set value(val: any) {\n if (this._value !== val) {\n if (this._radios) {\n this._updateCheckFromValue(val);\n }\n }\n }\n get value() {\n return this._value;\n }\n\n @Output() readonly change: EventEmitter<void> = new EventEmitter<void>();\n\n @Input() color = 'accent';\n @ContentChildren(forwardRef(() => LyRadio)) _radios: QueryList<LyRadio>;\n\n /** The method to be called in order to update ngModel */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched: () => any = () => {};\n\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n /** @docs-private */\n writeValue(value: any) {\n if (!!this._radios) {\n this.value = value;\n this._markForCheck();\n }\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n * @docs-private\n */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n * @docs-private\n */\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param _isDisabled Whether the control should be disabled.\n * @docs-private\n */\n setDisabledState(_isDisabled: boolean) {\n // this.disabled = isDisabled;\n this._markForCheck();\n }\n\n constructor(\n elementRef: ElementRef,\n renderer: Renderer2,\n private _theme: LyTheme2,\n private _cd: ChangeDetectorRef\n ) {\n renderer.addClass(elementRef.nativeElement, this.classes.root);\n }\n\n _updateCheckFromValue(val: any) {\n let newChecked: boolean;\n this._radios.forEach(radioButton => {\n if (val === radioButton.value) {\n this.updatevalue(val);\n newChecked = true;\n radioButton.checked = true;\n } else if (radioButton.checked) {\n radioButton.checked = false;\n }\n });\n if (!newChecked!) {\n /** when val not exist in radio button !== */\n this._controlValueAccessorChangeFn(null);\n if (this._value != null) {\n this._value = null;\n }\n }\n }\n /** @docs-private */\n updatevalue(value: any) {\n this._value = value;\n this._controlValueAccessorChangeFn(value);\n this.change.emit();\n this._markForCheck();\n }\n\n _markForCheck() {\n this._cd.markForCheck();\n }\n\n _radioResetChecked() {\n this._radios.forEach(_ => _._setCheckedToFalsy());\n }\n\n}\n\n/** @docs-private */\nexport class LyRadioBase {\n constructor(\n public _theme: LyTheme2,\n public _ngZone: NgZone,\n public _platform: Platform\n ) { }\n}\n\n/** @docs-private */\nexport const LyRadioMixinBase = mixinDisableRipple(LyRadioBase);\n\n@Component({\n selector: 'ly-radio',\n templateUrl: 'radio.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n inputs: [\n 'disableRipple'\n ],\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyRadio extends LyRadioMixinBase implements OnInit, AfterViewInit, OnDestroy {\n /** @docs-private */\n static readonly и = 'LyRadio';\n /** @docs-private */\n readonly classes = this.radioGroup.classes;\n /** @docs-private */\n id = `ly-radio-id-${idx++}`;\n /** @docs-private */\n name = '';\n private _value = null;\n private _checked = false;\n private _color: string;\n private _animClass: string;\n private _disabled: boolean;\n private _disabledClass?: string;\n @ViewChild('_input') _input: ElementRef;\n @ViewChild('_radioContainer') private _radioContainer: ElementRef;\n @ViewChild('_labelContainer') _labelContainer: ElementRef;\n @Output() change = new EventEmitter<boolean>();\n\n @Input()\n set value(val: any) {\n if (this._value !== val) {\n this._value = val;\n }\n }\n get value() { return this._value; }\n\n @Input()\n set color(val) {\n if (this._color !== val) {\n this._color = val;\n this[0x1] = this._styleRenderer.add(\n `${LyRadio.и}--color-${val}`,\n (theme: ThemeVariables, ref) => {\n const {\n checked,\n container\n } = ref.selectorsOf(STYLES);\n return (_className: string) => `${_className}${checked} ${container},${_className}${checked} ${container} div:nth-child(1),${_className} ${container} div:nth-child(2){color:${theme.colorOf(val)};}`;\n },\n STYLE_PRIORITY,\n this[0x1]\n );\n }\n }\n get color() { return this._color; }\n [0x1]: string;\n\n @Input()\n set checked(val: BooleanInput) {\n const newCheckedState = coerceBooleanProperty(val);\n const before = this._checked;\n if (before !== newCheckedState) {\n this._checked = newCheckedState;\n if (!before && newCheckedState) {\n /** Add class checked */\n this._renderer.addClass(this._elementRef.nativeElement, this.classes.checked);\n\n if (this.value !== this.radioGroup.value) {\n /** update Value */\n this.radioGroup.updatevalue(this.value);\n }\n } else {\n /** Remove class checked */\n this._renderer.removeClass(this._elementRef.nativeElement, this.classes.checked);\n }\n this._markForCheck();\n }\n }\n\n get checked() {\n return this._checked;\n }\n\n /** @docs-private */\n get inputId(): string {\n return `${this.id}-input`;\n }\n\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: BooleanInput) {\n const newVal = coerceBooleanProperty(value);\n if (newVal) {\n this._renderer.addClass(this._elementRef.nativeElement, this.classes.disabled);\n this._disabledClass = this.classes.disabled;\n } else if (this._disabledClass) {\n this._renderer.removeClass(this._elementRef.nativeElement, this.classes.disabled);\n this._disabledClass = undefined;\n }\n this._disabled = coerceBooleanProperty(value);\n this._markForCheck();\n }\n\n constructor(\n /** @docs-private */\n @Optional() public radioGroup: LyRadioGroup,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n theme: LyTheme2,\n private changeDetectorRef: ChangeDetectorRef,\n ngZone: NgZone,\n public _coreStyles: LyCoreStyles,\n private _focusState: LyFocusState,\n private _styleRenderer: StyleRenderer,\n platform: Platform\n ) {\n super(theme, ngZone, platform);\n this._triggerElement = this._elementRef;\n this._rippleConfig = {\n centered: true,\n radius: 'containerSize',\n percentageToIncrease: 150\n };\n _renderer.addClass(_elementRef.nativeElement, radioGroup.classes.radio);\n }\n\n ngOnInit() {\n if (this.radioGroup) {\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n if (!this.color) {\n this.color = this.radioGroup.color || DEFAULT_COLOR;\n }\n }\n\n ngAfterViewInit() {\n this._rippleContainer = this._radioContainer;\n\n // set default disable ripple\n if (this.disableRipple == null) {\n this.disableRipple = DEFAULT_DISABLE_RIPPLE;\n }\n const focusState = this._focusState.listen(this._input, this._elementRef);\n if (focusState) {\n focusState.subscribe((event) => {\n if (event === 'keyboard') {\n this._renderer.addClass(this._elementRef.nativeElement, this.classes.onFocusByKeyboard);\n } else if (event == null) {\n this._renderer.removeClass(this._elementRef.nativeElement, this.classes.onFocusByKeyboard);\n }\n });\n }\n }\n\n _markForCheck() {\n this.changeDetectorRef.markForCheck();\n }\n\n ngOnDestroy() {\n this._focusState.unlisten(this._elementRef);\n this._removeRippleEvents();\n }\n\n _onInputChange(event: any) {\n event.stopPropagation();\n this.radioGroup._updateCheckFromValue(this.value);\n this.radioGroup._touch();\n this._addAnim();\n }\n\n private _addAnim() {\n if (!this._animClass) {\n this._renderer.addClass(this._elementRef.nativeElement, this.classes._animations);\n this._animClass = this.classes._animations;\n }\n }\n\n _onInputClick(event: Event) { event.stopPropagation(); }\n\n _setCheckedToFalsy() {\n this.checked = false;\n }\n\n}\n\n@NgModule({\n imports: [CommonModule, FormsModule, LyCommonModule],\n exports: [LyRadioGroup, LyRadio],\n declarations: [LyRadioGroup, LyRadio],\n})\nexport class LyRadioModule { }\n","<label #_labelContainer [attr.for]=\"inputId\" [className]=\"classes.label\">\n <input #_input\n [className]=\"_coreStyles.classes.visuallyHidden\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [name]=\"name\"\n (change)=\"_onInputChange($event)\"\n (click)=\"_onInputClick($event)\"\n [disabled]=\"disabled\"\n type=\"radio\"\n >\n <div #_radioContainer [className]=\"classes.container\">\n <div [className]=\"_coreStyles.classes.fill\"></div>\n <div [className]=\"_coreStyles.classes.fill\"></div>\n </div>\n <div\n [className]=\"classes.labelContent\">\n <ng-content></ng-content>\n </div>\n</label>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}