1 line
5.9 KiB
Plaintext
1 line
5.9 KiB
Plaintext
{"version":3,"sources":["../src/radio.tsx","../../../utilities/object-utils/src/split.ts"],"sourcesContent":["import {\n chakra,\n forwardRef,\n layoutPropNames,\n omitThemingProps,\n SystemProps,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { callAll } from \"@chakra-ui/shared-utils\"\nimport { split } from \"@chakra-ui/object-utils\"\nimport { useRadioGroupContext } from \"./radio-group\"\nimport { useRadio, UseRadioProps } from \"./use-radio\"\n\ntype Omitted = \"onChange\" | \"defaultChecked\" | \"checked\"\ninterface BaseControlProps extends Omit<HTMLChakraProps<\"div\">, Omitted> {}\n\nexport interface RadioProps\n extends UseRadioProps,\n ThemingProps<\"Radio\">,\n BaseControlProps {\n /**\n * The spacing between the checkbox and its label text\n * @default 0.5rem\n * @type SystemProps[\"marginLeft\"]\n */\n spacing?: SystemProps[\"marginLeft\"]\n /**\n * Additional props to be forwarded to the `input` element\n */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}\n\n/**\n * Radio component is used in forms when a user needs to select a single value from\n * several options.\n *\n * @see Docs https://chakra-ui.com/radio\n */\nexport const Radio = forwardRef<RadioProps, \"input\">((props, ref) => {\n const group = useRadioGroupContext()\n const { onChange: onChangeProp, value: valueProp } = props\n\n const styles = useMultiStyleConfig(\"Radio\", { ...group, ...props })\n\n const ownProps = omitThemingProps(props)\n\n const {\n spacing = \"0.5rem\",\n children,\n isDisabled = group?.isDisabled,\n isFocusable = group?.isFocusable,\n inputProps: htmlInputProps,\n ...rest\n } = ownProps\n\n let isChecked = props.isChecked\n if (group?.value != null && valueProp != null) {\n isChecked = group.value === valueProp\n }\n\n let onChange = onChangeProp\n if (group?.onChange && valueProp != null) {\n onChange = callAll(group.onChange, onChangeProp)\n }\n\n const name = props?.name ?? group?.name\n\n const {\n getInputProps,\n getCheckboxProps,\n getLabelProps,\n getRootProps,\n htmlProps,\n } = useRadio({\n ...rest,\n isChecked,\n isFocusable,\n isDisabled,\n onChange,\n name,\n })\n\n const [layoutProps, otherProps] = split(htmlProps, layoutPropNames as any)\n\n const checkboxProps = getCheckboxProps(otherProps)\n const inputProps = getInputProps(htmlInputProps, ref)\n const labelProps = getLabelProps()\n const rootProps = Object.assign({}, layoutProps, getRootProps())\n\n const rootStyles = {\n display: \"inline-flex\",\n alignItems: \"center\",\n verticalAlign: \"top\",\n cursor: \"pointer\",\n position: \"relative\",\n ...styles.container,\n }\n\n const checkboxStyles = {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n ...styles.control,\n }\n\n const labelStyles: SystemStyleObject = {\n userSelect: \"none\",\n marginStart: spacing,\n ...styles.label,\n }\n\n return (\n <chakra.label className=\"chakra-radio\" {...rootProps} __css={rootStyles}>\n <input className=\"chakra-radio__input\" {...inputProps} />\n <chakra.span\n className=\"chakra-radio__control\"\n {...checkboxProps}\n __css={checkboxStyles}\n />\n {children && (\n <chakra.span\n className=\"chakra-radio__label\"\n {...labelProps}\n __css={labelStyles}\n >\n {children}\n </chakra.span>\n )}\n </chakra.label>\n )\n})\n\nRadio.displayName = \"Radio\"\n","export function split<T extends Record<string, any>, K extends keyof T>(\n object: T,\n keys: K[],\n) {\n const picked: Record<string, any> = {}\n const omitted: Record<string, any> = {}\n\n for (const [key, value] of Object.entries(object)) {\n if (keys.includes(key as T[K])) picked[key] = value\n else omitted[key] = value\n }\n\n return [picked, omitted] as [\n {\n [P in K]: T[P]\n },\n Omit<T, K>,\n ]\n}\n"],"mappings":";;;;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,OAEK;AACP,SAAS,eAAe;;;ACXjB,SAAS,MACd,QACA,MACA;AACA,QAAM,SAA8B,CAAC;AACrC,QAAM,UAA+B,CAAC;AAEtC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,KAAK,SAAS,GAAW;AAAG,aAAO,GAAG,IAAI;AAAA;AACzC,cAAQ,GAAG,IAAI;AAAA,EACtB;AAEA,SAAO,CAAC,QAAQ,OAAO;AAMzB;;;ADkGI,SACE,KADF;AA3EG,IAAM,QAAQ,WAAgC,CAAC,OAAO,QAAQ;AAzCrE;AA0CE,QAAM,QAAQ,qBAAqB;AACnC,QAAM,EAAE,UAAU,cAAc,OAAO,UAAU,IAAI;AAErD,QAAM,SAAS,oBAAoB,SAAS,EAAE,GAAG,OAAO,GAAG,MAAM,CAAC;AAElE,QAAM,WAAW,iBAAiB,KAAK;AAEvC,QAAM;AAAA,IACJ,UAAU;AAAA,IACV;AAAA,IACA,aAAa,+BAAO;AAAA,IACpB,cAAc,+BAAO;AAAA,IACrB,YAAY;AAAA,IACZ,GAAG;AAAA,EACL,IAAI;AAEJ,MAAI,YAAY,MAAM;AACtB,OAAI,+BAAO,UAAS,QAAQ,aAAa,MAAM;AAC7C,gBAAY,MAAM,UAAU;AAAA,EAC9B;AAEA,MAAI,WAAW;AACf,OAAI,+BAAO,aAAY,aAAa,MAAM;AACxC,eAAW,QAAQ,MAAM,UAAU,YAAY;AAAA,EACjD;AAEA,QAAM,QAAO,oCAAO,SAAP,YAAe,+BAAO;AAEnC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,SAAS;AAAA,IACX,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,CAAC,aAAa,UAAU,IAAI,MAAM,WAAW,eAAsB;AAEzE,QAAM,gBAAgB,iBAAiB,UAAU;AACjD,QAAM,aAAa,cAAc,gBAAgB,GAAG;AACpD,QAAM,aAAa,cAAc;AACjC,QAAM,YAAY,OAAO,OAAO,CAAC,GAAG,aAAa,aAAa,CAAC;AAE/D,QAAM,aAAa;AAAA,IACjB,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,GAAG,OAAO;AAAA,EACZ;AAEA,QAAM,iBAAiB;AAAA,IACrB,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,GAAG,OAAO;AAAA,EACZ;AAEA,QAAM,cAAiC;AAAA,IACrC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,GAAG,OAAO;AAAA,EACZ;AAEA,SACE,qBAAC,OAAO,OAAP,EAAa,WAAU,gBAAgB,GAAG,WAAW,OAAO,YAC3D;AAAA,wBAAC,WAAM,WAAU,uBAAuB,GAAG,YAAY;AAAA,IACvD;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACT,GAAG;AAAA,QACJ,OAAO;AAAA;AAAA,IACT;AAAA,IACC,YACC;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACT,GAAG;AAAA,QACJ,OAAO;AAAA,QAEN;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ,CAAC;AAED,MAAM,cAAc;","names":[]} |