UNPKG

7.22 kBSource Map (JSON)View Raw
1{"version":3,"file":"Radio.js","sources":["../src/components/Input/Radio.js"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport Checkbox from './Checkbox'\nimport { RadioGroupConsumer } from '../Radio/RadioGroup'\nimport { noop } from '../../utils'\n\nconst KEYS_PREV = [\n 'ArrowUp',\n 'ArrowLeft',\n // IE / Edge support\n 'Up',\n 'Left',\n]\n\nconst KEYS_NEXT = [\n 'ArrowDown',\n 'ArrowRight',\n // IE / Edge support\n 'Down',\n 'Right',\n]\n\nclass RadioButton extends React.PureComponent {\n static propTypes = {\n addRadio: PropTypes.func,\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n onChange: PropTypes.func,\n removeRadio: PropTypes.func,\n selectNext: PropTypes.func,\n selectPrev: PropTypes.func,\n tabIndex: PropTypes.string,\n }\n static defaultProps = {\n addRadio: noop,\n checked: false,\n disabled: false,\n id: null,\n onChange: undefined, // <Button /> need to detect if onChange has been set\n removeRadio: noop,\n selectNext: noop,\n selectPrev: noop,\n }\n _element = React.createRef()\n componentDidMount() {\n const { addRadio, id } = this.props\n if (addRadio && id !== null) {\n addRadio(id)\n }\n }\n componentWillUnmount() {\n const { removeRadio, id } = this.props\n if (removeRadio && id !== null) {\n removeRadio(id)\n }\n }\n componentDidUpdate(prevProps) {\n const { checked } = this.props\n if (checked && !prevProps.checked) {\n this._element.current.focus()\n }\n }\n handleKeyDown = event => {\n const { selectPrev, selectNext } = this.props\n if (KEYS_PREV.includes(event.key)) {\n selectPrev()\n event.preventDefault()\n }\n if (KEYS_NEXT.includes(event.key)) {\n selectNext()\n event.preventDefault()\n }\n }\n handleChange = () => {\n const { onChange, id } = this.props\n if (onChange) {\n onChange(id)\n }\n }\n render() {\n const { checked, disabled, id, onChange, tabIndex, ...props } = this.props\n return (\n <Checkbox\n ref={this._element}\n checked={checked}\n disabled={disabled}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n tabIndex={tabIndex}\n variant=\"radio\"\n {...props}\n />\n )\n }\n}\n\nclass Radio extends React.PureComponent {\n static propTypes = RadioButton.propTypes\n static defaultProps = RadioButton.defaultProps\n render() {\n const { props } = this\n return (\n <RadioGroupConsumer>\n {({\n onChange,\n selected,\n focusableId,\n addRadio,\n removeRadio,\n selectNext,\n selectPrev,\n }) => (\n <RadioButton\n {...props}\n onChange={props.onChange || onChange}\n checked={\n props.checked || (props.id === selected && selected !== null)\n }\n tabIndex={\n props.tabIndex ||\n (focusableId === undefined || props.id === focusableId\n ? '0'\n : '-1')\n }\n addRadio={addRadio}\n removeRadio={removeRadio}\n selectPrev={selectPrev}\n selectNext={selectNext}\n />\n )}\n </RadioGroupConsumer>\n )\n }\n}\n\nexport default Radio\n"],"names":["KEYS_PREV","KEYS_NEXT","RadioButton","React","createRef","event","props","selectPrev","selectNext","includes","key","preventDefault","onChange","id","addRadio","removeRadio","prevProps","checked","_element","current","focus","disabled","tabIndex","Checkbox","handleChange","handleKeyDown","PureComponent","PropTypes","func","bool","oneOfType","string","number","noop","undefined","Radio","RadioGroupConsumer","selected","focusableId","propTypes","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,SAAS,GAAG,CAChB,SADgB,EAEhB,WAFgB;AAIhB,IAJgB,EAKhB,MALgB,CAAlB;AAQA,IAAMC,SAAS,GAAG,CAChB,WADgB,EAEhB,YAFgB;AAIhB,MAJgB,EAKhB,OALgB,CAAlB;;IAQMC;;;;;;;;;;;;;;;;4GAsBOC,cAAK,CAACC,SAAN;;oGAmBK,UAAAC,KAAK,EAAI;AAAA,wBACY,MAAKC,KADjB;AAAA,UACfC,UADe,eACfA,UADe;AAAA,UACHC,UADG,eACHA,UADG;;AAEvB,UAAIR,SAAS,CAACS,QAAV,CAAmBJ,KAAK,CAACK,GAAzB,CAAJ,EAAmC;AACjCH,QAAAA,UAAU;AACVF,QAAAA,KAAK,CAACM,cAAN;AACD;;AACD,UAAIV,SAAS,CAACQ,QAAV,CAAmBJ,KAAK,CAACK,GAAzB,CAAJ,EAAmC;AACjCF,QAAAA,UAAU;AACVH,QAAAA,KAAK,CAACM,cAAN;AACD;AACF;;mGACc,YAAM;AAAA,yBACM,MAAKL,KADX;AAAA,UACXM,QADW,gBACXA,QADW;AAAA,UACDC,EADC,gBACDA,EADC;;AAEnB,UAAID,QAAJ,EAAc;AACZA,QAAAA,QAAQ,CAACC,EAAD,CAAR;AACD;AACF;;;;;;;wCAlCmB;AAAA,yBACO,KAAKP,KADZ;AAAA,UACVQ,QADU,gBACVA,QADU;AAAA,UACAD,EADA,gBACAA,EADA;;AAElB,UAAIC,QAAQ,IAAID,EAAE,KAAK,IAAvB,EAA6B;AAC3BC,QAAAA,QAAQ,CAACD,EAAD,CAAR;AACD;AACF;;;2CACsB;AAAA,yBACO,KAAKP,KADZ;AAAA,UACbS,WADa,gBACbA,WADa;AAAA,UACAF,EADA,gBACAA,EADA;;AAErB,UAAIE,WAAW,IAAIF,EAAE,KAAK,IAA1B,EAAgC;AAC9BE,QAAAA,WAAW,CAACF,EAAD,CAAX;AACD;AACF;;;uCACkBG,WAAW;AAAA,UACpBC,OADoB,GACR,KAAKX,KADG,CACpBW,OADoB;;AAE5B,UAAIA,OAAO,IAAI,CAACD,SAAS,CAACC,OAA1B,EAAmC;AACjC,aAAKC,QAAL,CAAcC,OAAd,CAAsBC,KAAtB;AACD;AACF;;;6BAkBQ;AAAA,yBACyD,KAAKd,KAD9D;AAAA,UACCW,OADD,gBACCA,OADD;AAAA,UACUI,QADV,gBACUA,QADV;AAAA,UACoBR,EADpB,gBACoBA,EADpB;AAAA,UACwBD,QADxB,gBACwBA,QADxB;AAAA,UACkCU,QADlC,gBACkCA,QADlC;AAAA,UAC+ChB,KAD/C;;AAEP,0BACEH,6BAACoB,gBAAD;AACE,QAAA,GAAG,EAAE,KAAKL,QADZ;AAEE,QAAA,OAAO,EAAED,OAFX;AAGE,QAAA,QAAQ,EAAEI,QAHZ;AAIE,QAAA,QAAQ,EAAE,KAAKG,YAJjB;AAKE,QAAA,SAAS,EAAE,KAAKC,aALlB;AAME,QAAA,QAAQ,EAAEH,QANZ;AAOE,QAAA,OAAO,EAAC;AAPV,SAQMhB,KARN,EADF;AAYD;;;;EAxEuBH,cAAK,CAACuB;;iCAA1BxB,0BACe;AACjBY,EAAAA,QAAQ,EAAEa,eAAS,CAACC,IADH;AAEjBX,EAAAA,OAAO,EAAEU,eAAS,CAACE,IAFF;AAGjBR,EAAAA,QAAQ,EAAEM,eAAS,CAACE,IAHH;AAIjBhB,EAAAA,EAAE,EAAEc,eAAS,CAACG,SAAV,CAAoB,CAACH,eAAS,CAACI,MAAX,EAAmBJ,eAAS,CAACK,MAA7B,CAApB,CAJa;AAKjBpB,EAAAA,QAAQ,EAAEe,eAAS,CAACC,IALH;AAMjBb,EAAAA,WAAW,EAAEY,eAAS,CAACC,IANN;AAOjBpB,EAAAA,UAAU,EAAEmB,eAAS,CAACC,IAPL;AAQjBrB,EAAAA,UAAU,EAAEoB,eAAS,CAACC,IARL;AASjBN,EAAAA,QAAQ,EAAEK,eAAS,CAACI;AATH;;iCADf7B,6BAYkB;AACpBY,EAAAA,QAAQ,EAAEmB,kBADU;AAEpBhB,EAAAA,OAAO,EAAE,KAFW;AAGpBI,EAAAA,QAAQ,EAAE,KAHU;AAIpBR,EAAAA,EAAE,EAAE,IAJgB;AAKpBD,EAAAA,QAAQ,EAAEsB,SALU;AAKC;AACrBnB,EAAAA,WAAW,EAAEkB,kBANO;AAOpBzB,EAAAA,UAAU,EAAEyB,kBAPQ;AAQpB1B,EAAAA,UAAU,EAAE0B;AARQ;;IA+DlBE;;;;;;;;;;;;;6BAGK;AAAA,UACC7B,KADD,GACW,IADX,CACCA,KADD;AAEP,0BACEH,6BAACiC,6BAAD,QACG;AAAA,YACCxB,QADD,QACCA,QADD;AAAA,YAECyB,QAFD,QAECA,QAFD;AAAA,YAGCC,WAHD,QAGCA,WAHD;AAAA,YAICxB,QAJD,QAICA,QAJD;AAAA,YAKCC,WALD,QAKCA,WALD;AAAA,YAMCP,UAND,QAMCA,UAND;AAAA,YAOCD,UAPD,QAOCA,UAPD;AAAA,4BASCJ,6BAAC,WAAD,0BACMG,KADN;AAEE,UAAA,QAAQ,EAAEA,KAAK,CAACM,QAAN,IAAkBA,QAF9B;AAGE,UAAA,OAAO,EACLN,KAAK,CAACW,OAAN,IAAkBX,KAAK,CAACO,EAAN,KAAawB,QAAb,IAAyBA,QAAQ,KAAK,IAJ5D;AAME,UAAA,QAAQ,EACN/B,KAAK,CAACgB,QAAN,KACCgB,WAAW,KAAKJ,SAAhB,IAA6B5B,KAAK,CAACO,EAAN,KAAayB,WAA1C,GACG,GADH,GAEG,IAHJ,CAPJ;AAYE,UAAA,QAAQ,EAAExB,QAZZ;AAaE,UAAA,WAAW,EAAEC,WAbf;AAcE,UAAA,UAAU,EAAER,UAdd;AAeE,UAAA,UAAU,EAAEC;AAfd,WATD;AAAA,OADH,CADF;AA+BD;;;;EApCiBL,cAAK,CAACuB;;iCAApBS,oBACejC,WAAW,CAACqC;;iCAD3BJ,uBAEkBjC,WAAW,CAACsC;;;;"}
\No newline at end of file