| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | 
							- import BaseFoundation, { DefaultAdapter } from '../base/foundation';
 
- import { RadioChangeEvent } from './radioInnerFoundation';
 
- export interface RadioGroupAdapter extends DefaultAdapter {
 
-     isInProps?: (name: string) => boolean;
 
-     notifyChange?: (e: RadioChangeEvent) => void;
 
-     setValue?: (value: any) => void;
 
- }
 
- export default class RadioGroupFoundation extends BaseFoundation<RadioGroupAdapter> {
 
-     constructor(adapter: RadioGroupAdapter) {
 
-         super({ ...adapter });
 
-     }
 
-     init() {
 
-         const displayValue = this._getDisplayValue();
 
-         this._setValue(displayValue);
 
-     }
 
-     _getDisplayValue() {
 
-         const { value, defaultValue } = this.getProps();
 
-         let displayValue;
 
-         if ('value' in this.getProps()) {
 
-             displayValue = value;
 
-         } else if ('defaultValue' in this.getProps()) {
 
-             displayValue = defaultValue;
 
-         }
 
-         return displayValue;
 
-     }
 
-     handleChange(evt: any) {
 
-         const mode = this.getProp('mode');
 
-         const lastValue = this.getState('value');
 
-         const { checked, value } = evt.target;
 
-         const isControlledComponent = this._adapter.isInProps('value');
 
-         const cbValue = {
 
-             ...evt,
 
-             target: {
 
-                 ...evt.target,
 
-                 value,
 
-             }
 
-         };
 
-         if (mode === 'advanced' && !checked) {
 
-             cbValue.target.value = undefined;
 
-         }
 
-         if (!isControlledComponent) {
 
-             if (mode === 'advanced' && !checked) {
 
-                 this._setValue(undefined);
 
-             } else {
 
-                 this._setValue(value);
 
-             }
 
-         }
 
-         if (mode === 'advanced' || lastValue !== value) {
 
-             this._adapter.notifyChange(cbValue);
 
-         }
 
-     }
 
-     // call when prop.value change
 
-     handlePropValueChange(propValue: any) {
 
-         this._setValue(propValue);
 
-     }
 
-     _setValue(value: any) {
 
-         this._adapter.setValue(value);
 
-     }
 
-     // eslint-disable-next-line @typescript-eslint/no-empty-function
 
-     destroy() {}
 
- }
 
 
  |