UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 4.73 kB
{"version":3,"file":"CheckboxCard.cjs","names":["createVarsResolver","getRadius","factory","useProps","useStyles","CheckboxGroupContext","UnstyledButton","classes"],"sources":["../../../../src/components/Checkbox/CheckboxCard/CheckboxCard.tsx"],"sourcesContent":["import { createContext, use } from 'react';\nimport { useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getRadius,\n MantineRadius,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../../core';\nimport { UnstyledButton } from '../../UnstyledButton';\nimport { CheckboxGroupContext } from '../CheckboxGroup/CheckboxGroup';\nimport classes from './CheckboxCard.module.css';\n\nexport interface CheckboxCardContextValue {\n checked: boolean;\n}\n\nexport const CheckboxCardContext = createContext<CheckboxCardContextValue | null>(null);\n\nexport type CheckboxCardStylesNames = 'card';\nexport type CheckboxCardCssVariables = {\n card: '--card-radius';\n};\n\nexport interface CheckboxCardProps\n extends BoxProps, StylesApiProps<CheckboxCardFactory>, ElementProps<'button', 'onChange'> {\n /** Controlled component value */\n checked?: boolean;\n\n /** Uncontrolled component default value */\n defaultChecked?: boolean;\n\n /** Called when value changes */\n onChange?: (checked: boolean) => void;\n\n /** Adds border to the root element */\n withBorder?: boolean;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Value of the checkbox, used with `Checkbox.Group` */\n value?: string;\n}\n\nexport type CheckboxCardFactory = Factory<{\n props: CheckboxCardProps;\n ref: HTMLButtonElement;\n stylesNames: CheckboxCardStylesNames;\n vars: CheckboxCardCssVariables;\n}>;\n\nconst defaultProps = {\n withBorder: true,\n} satisfies Partial<CheckboxCardProps>;\n\nconst varsResolver = createVarsResolver<CheckboxCardFactory>((_, { radius }) => ({\n card: {\n '--card-radius': getRadius(radius),\n },\n}));\n\nexport const CheckboxCard = factory<CheckboxCardFactory>((_props) => {\n const props = useProps('CheckboxCard', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n checked,\n mod,\n withBorder,\n value,\n onClick,\n defaultChecked,\n onChange,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<CheckboxCardFactory>({\n name: 'CheckboxCard',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'card',\n });\n\n const ctx = use(CheckboxGroupContext);\n const _checked =\n typeof checked === 'boolean' ? checked : ctx ? ctx.value.includes(value || '') : undefined;\n\n const [_value, setValue] = useUncontrolled({\n value: _checked,\n defaultValue: defaultChecked,\n finalValue: false,\n onChange,\n });\n\n return (\n <CheckboxCardContext value={{ checked: _value }}>\n <UnstyledButton\n mod={[{ 'with-border': withBorder, checked: _value }, mod]}\n {...getStyles('card')}\n {...others}\n role=\"checkbox\"\n aria-checked={_value}\n onClick={(event) => {\n onClick?.(event);\n ctx?.onChange(value || '');\n setValue(!_value);\n }}\n />\n </CheckboxCardContext>\n );\n});\n\nCheckboxCard.displayName = '@mantine/core/CheckboxCard';\nCheckboxCard.classes = classes;\nCheckboxCard.varsResolver = varsResolver;\n"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAa,uBAAA,GAAA,MAAA,eAAqE,KAAK;AAmCvF,MAAM,eAAe,EACnB,YAAY,MACb;AAED,MAAM,eAAeA,6BAAAA,oBAAyC,GAAG,EAAE,cAAc,EAC/E,MAAM,EACJ,iBAAiBC,iBAAAA,UAAU,OAAO,EACnC,EACF,EAAE;AAEH,MAAa,eAAeC,gBAAAA,SAA8B,WAAW;CACnE,MAAM,QAAQC,kBAAAA,SAAS,gBAAgB,cAAc,OAAO;CAC5D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,SACA,KACA,YACA,OACA,SACA,gBACA,UACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAYC,mBAAAA,UAA+B;EAC/C,MAAM;EACN,SAAA,4BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACf,CAAC;CAEF,MAAM,OAAA,GAAA,MAAA,KAAUC,sBAAAA,qBAAqB;CAIrC,MAAM,CAAC,QAAQ,aAAA,GAAA,eAAA,iBAA4B;EACzC,OAHA,OAAO,YAAY,YAAY,UAAU,MAAM,IAAI,MAAM,SAAS,SAAS,GAAG,GAAG,KAAA;EAIjF,cAAc;EACd,YAAY;EACZ;EACD,CAAC;AAEF,QACE,iBAAA,GAAA,kBAAA,KAAC,qBAAD;EAAqB,OAAO,EAAE,SAAS,QAAQ;YAC7C,iBAAA,GAAA,kBAAA,KAACC,uBAAAA,gBAAD;GACE,KAAK,CAAC;IAAE,eAAe;IAAY,SAAS;IAAQ,EAAE,IAAI;GAC1D,GAAI,UAAU,OAAO;GACrB,GAAI;GACJ,MAAK;GACL,gBAAc;GACd,UAAU,UAAU;AAClB,cAAU,MAAM;AAChB,SAAK,SAAS,SAAS,GAAG;AAC1B,aAAS,CAAC,OAAO;;GAEnB,CAAA;EACkB,CAAA;EAExB;AAEF,aAAa,cAAc;AAC3B,aAAa,UAAUC,4BAAAA;AACvB,aAAa,eAAe"}