From 0df8eac67560611a5c18d5c8229d25e12f8e39c5 Mon Sep 17 00:00:00 2001 From: Rian Mandala Date: Mon, 18 Nov 2024 18:06:33 +0700 Subject: [PATCH] feat: expose wrapper radio item level --- lerna.json | 2 +- packages/apsara-icons/package.json | 2 +- packages/apsara-ui/package.json | 2 +- packages/apsara-ui/src/Radio/Radio.styles.tsx | 1 - packages/apsara-ui/src/Radio/Radio.tsx | 55 +++++++++++++------ packages/apsara-ui/src/Tooltip/Tooltip.tsx | 3 +- 6 files changed, 42 insertions(+), 23 deletions(-) diff --git a/lerna.json b/lerna.json index 20ff2b26..c3c06def 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": ["packages/*"], "npmClient": "yarn", "useWorkspaces": true, - "version": "0.11.1", + "version": "0.11.2", "command": { "version": { "message": "chore(release): publish %s" diff --git a/packages/apsara-icons/package.json b/packages/apsara-icons/package.json index 177891cd..7d5910b3 100644 --- a/packages/apsara-icons/package.json +++ b/packages/apsara-icons/package.json @@ -1,6 +1,6 @@ { "name": "@goto-company/icons", - "version": "0.11.1", + "version": "0.11.2", "description": "Apsara icons", "scripts": { "build": "node scripts/build.js", diff --git a/packages/apsara-ui/package.json b/packages/apsara-ui/package.json index ae465ed4..2afbb230 100644 --- a/packages/apsara-ui/package.json +++ b/packages/apsara-ui/package.json @@ -1,6 +1,6 @@ { "name": "@goto-company/apsara", - "version": "0.11.1", + "version": "0.11.2", "description": "A list of base components for apsara", "author": "Praveen Yadav ", "license": "Apache-2.0", diff --git a/packages/apsara-ui/src/Radio/Radio.styles.tsx b/packages/apsara-ui/src/Radio/Radio.styles.tsx index 566e7fa8..b873e72e 100644 --- a/packages/apsara-ui/src/Radio/Radio.styles.tsx +++ b/packages/apsara-ui/src/Radio/Radio.styles.tsx @@ -53,7 +53,6 @@ export const Label = styled("label")` color: ${({ theme }) => theme?.radio?.label}; margin: ${({ dir }) => dir === "rtl" && "8px"}; font-size: 15px; - line-height: 1px; user-select: none; padding-left: 15px; `; diff --git a/packages/apsara-ui/src/Radio/Radio.tsx b/packages/apsara-ui/src/Radio/Radio.tsx index 2c2961f6..a59b296e 100644 --- a/packages/apsara-ui/src/Radio/Radio.tsx +++ b/packages/apsara-ui/src/Radio/Radio.tsx @@ -1,14 +1,19 @@ -import React, { forwardRef } from "react"; +import React, { forwardRef, ReactNode } from "react"; import { RadioGroup, StyledRadioItem, StyledIndicator, Label, Flex, StyledRadioButton } from "./Radio.styles"; import * as RadioGroupPrimitive from "@radix-ui/react-radio-group"; import { generateRandomId } from "../helper"; import { PREFIX_CLS } from "./constants"; +interface WrapperProps { + children: ReactNode; +} + export type RadioItem = { label?: string; value: string; disabled?: boolean; required?: boolean; + wrapper?: ({ children }: WrapperProps) => ReactNode; }; type RadioButtonType = { @@ -40,6 +45,10 @@ export type RadioProps = { id?: string; }; +const defaultWrapper = ({ children }: WrapperProps) => { + return <>{children}; +}; + const Radio = forwardRef( ({ defaultValue, value, items, onChange, required, orientation, dir, id = generateRandomId(), ...props }, ref) => { return ( @@ -56,23 +65,33 @@ const Radio = forwardRef( ref={ref} > {items && - items.map((item, i) => ( - - - - - - - ))} + items.map((item, i) => { + const { wrapper = defaultWrapper } = item; + + return ( + <> + {wrapper({ + children: ( + + + + + + + ), + })} + + ); + })} {!items && props.children} ); diff --git a/packages/apsara-ui/src/Tooltip/Tooltip.tsx b/packages/apsara-ui/src/Tooltip/Tooltip.tsx index 0f62fd25..4876216e 100644 --- a/packages/apsara-ui/src/Tooltip/Tooltip.tsx +++ b/packages/apsara-ui/src/Tooltip/Tooltip.tsx @@ -14,7 +14,8 @@ export type TooltipProps = { onOpenChange?: ((open: boolean) => void) | undefined; delayDuration?: number; avoidCollisions?: boolean; -} & HTMLAttributes; +} & HTMLAttributes & + RadixTooltip.TooltipContentProps; export const PREFIX_CLS = "apsara-tooltip"; const Tooltip = ({