import BaseFoundation, { DefaultAdapter } from '../base/foundation'; export interface SwitchAdapter

, S = Record> extends DefaultAdapter { setNativeControlChecked: (nativeControlChecked: boolean | undefined) => void; setNativeControlDisabled: (nativeControlDisabled: boolean | undefined) => void; notifyChange: (checked: boolean, e: any) => void; } export default class SwitchFoundation

, S = Record> extends BaseFoundation, P, S> { constructor(adapter: SwitchAdapter) { super({ ...adapter }); } init(): void { const { defaultChecked, checked, disabled } = this.getProps(); this.setChecked(defaultChecked || checked); this.setDisabled(disabled); } setChecked(checked: boolean | undefined): void { this._adapter.setNativeControlChecked(checked); } setDisabled(disabled: boolean | undefined): void { this._adapter.setNativeControlDisabled(disabled); } handleChange(checked: boolean, e: any): void { const propChecked = this.getProps().checked; const isControledComponent = typeof propChecked !== 'undefined'; if (isControledComponent) { this._adapter.notifyChange(checked, e); } else { this._adapter.setNativeControlChecked(checked); this._adapter.notifyChange(checked, e); } } // eslint-disable-next-line @typescript-eslint/no-empty-function destroy(): void {} }