@yamada-ui/checkbox
Version:
Yamada UI checkbox component
1 lines • 4.67 kB
Source Map (JSON)
{"version":3,"sources":["../src/checkbox-group.tsx"],"sourcesContent":["import type { ComponentArgs, ThemeProps } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { FlexProps } from \"@yamada-ui/layouts\"\nimport type {\n ForwardedRef,\n ReactElement,\n ReactNode,\n RefAttributes,\n} from \"react\"\nimport type { CheckboxProps } from \"./checkbox\"\nimport type { CheckboxGroupContext } from \"./checkbox-context\"\nimport type { UseCheckboxGroupProps } from \"./use-checkbox-group\"\nimport { useFormControl } from \"@yamada-ui/form-control\"\nimport { Flex } from \"@yamada-ui/layouts\"\nimport { cx, getValidChildren } from \"@yamada-ui/utils\"\nimport { forwardRef } from \"react\"\nimport { Checkbox } from \"./checkbox\"\nimport { CheckboxGroupProvider } from \"./checkbox-context\"\nimport { useCheckboxGroup } from \"./use-checkbox-group\"\n\nexport interface CheckboxItem<Y extends number | string = string>\n extends CheckboxProps<Y> {\n label?: ReactNode\n}\n\nexport interface CheckboxGroupSharedProps<Y extends number | string = string>\n extends Omit<FlexProps, \"defaultValue\" | \"onChange\">,\n UseCheckboxGroupProps<Y>,\n FormControlOptions {}\n\nexport interface CheckboxGroupProps<Y extends number | string = string>\n extends CheckboxGroupSharedProps<Y>,\n ThemeProps<\"Checkbox\"> {\n /**\n * If provided, generate checkboxes based on items.\n *\n * @default '[]'\n */\n items?: CheckboxItem<Y>[]\n}\n\nexport const CheckboxGroup = forwardRef(\n <Y extends number | string = string>(\n {\n className,\n colorScheme,\n size,\n variant,\n children,\n direction = \"column\",\n gap,\n items = [],\n ...props\n }: CheckboxGroupProps<Y>,\n ref: ForwardedRef<HTMLDivElement>,\n ) => {\n const {\n props: computedProps,\n value,\n getContainerProps,\n onChange,\n } = useCheckboxGroup<Y>(props)\n const {\n disabled,\n invalid,\n isDisabled: _isDisabled,\n isInvalid: _isInvalid,\n isReadOnly: _isReadOnly,\n isRequired: _isRequired,\n labelId,\n readOnly,\n required,\n ...rest\n } = useFormControl(computedProps)\n\n const validChildren = getValidChildren(children)\n let computedChildren: ReactElement[] = []\n\n if (!validChildren.length && items.length) {\n computedChildren = items.map((props, index) => (\n <Checkbox key={index} {...props} />\n ))\n }\n\n return (\n <CheckboxGroupProvider\n value={\n {\n colorScheme,\n size,\n variant,\n disabled,\n invalid,\n readOnly,\n required,\n value,\n onChange,\n } as CheckboxGroupContext\n }\n >\n <Flex\n ref={ref}\n className={cx(\"ui-checkbox-group\", className)}\n direction={direction}\n gap={gap ?? (direction === \"row\" ? \"1rem\" : undefined)}\n {...getContainerProps({\n \"aria-labelledby\": labelId,\n ...rest,\n })}\n >\n {children ?? computedChildren}\n </Flex>\n </CheckboxGroupProvider>\n )\n },\n) as {\n <Y extends number | string = string>(\n props: CheckboxGroupProps<Y> & RefAttributes<HTMLDivElement>,\n ): ReactElement\n} & ComponentArgs\n\nCheckboxGroup.displayName = \"CheckboxGroup\"\nCheckboxGroup.__ui__ = \"CheckboxGroup\"\n"],"mappings":";;;;;;;;;;;;AAYA,SAAS,sBAAsB;AAC/B,SAAS,YAAY;AACrB,SAAS,IAAI,wBAAwB;AACrC,SAAS,kBAAkB;AAiEnB;AAvCD,IAAM,gBAAgB;AAAA,EAC3B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,QAAQ,CAAC;AAAA,IACT,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,iBAAoB,KAAK;AAC7B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI,eAAe,aAAa;AAEhC,UAAM,gBAAgB,iBAAiB,QAAQ;AAC/C,QAAI,mBAAmC,CAAC;AAExC,QAAI,CAAC,cAAc,UAAU,MAAM,QAAQ;AACzC,yBAAmB,MAAM,IAAI,CAACA,QAAO,UACnC,oBAAC,YAAsB,GAAGA,UAAX,KAAkB,CAClC;AAAA,IACH;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OACE;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAGF;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,WAAW,GAAG,qBAAqB,SAAS;AAAA,YAC5C;AAAA,YACA,KAAK,oBAAQ,cAAc,QAAQ,SAAS;AAAA,YAC3C,GAAG,kBAAkB;AAAA,cACpB,mBAAmB;AAAA,cACnB,GAAG;AAAA,YACL,CAAC;AAAA,YAEA,wCAAY;AAAA;AAAA,QACf;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAMA,cAAc,cAAc;AAC5B,cAAc,SAAS;","names":["props"]}