@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
1 lines • 3.63 kB
Source Map (JSON)
{"version":3,"file":"input-group.cjs","names":["useFieldProps","useValidChildren","isSomeElement","InputElement","InputPropsContext","InputAddonPropsContext","InputElementPropsContext","Group"],"sources":["../../../../src/components/input/input-group.tsx"],"sourcesContent":["\"use client\"\n\nimport type { Component, ThemeProps, WithoutThemeProps } from \"../../core\"\nimport type { FieldProps } from \"../field\"\nimport type { GroupProps } from \"../group\"\nimport type { InputProps } from \"./input\"\nimport type { InputStyle } from \"./input.style\"\nimport { cloneElement, useMemo } from \"react\"\nimport { isSomeElement, isTruthyDataAttr, useValidChildren } from \"../../utils\"\nimport { useFieldProps } from \"../field\"\nimport { Group } from \"../group\"\nimport { InputPropsContext } from \"./input\"\nimport { InputAddonPropsContext } from \"./input-addon\"\nimport { InputElement, InputElementPropsContext } from \"./input-element\"\n\nexport interface InputGroupRootProps\n extends WithoutThemeProps<GroupProps, InputStyle>,\n ThemeProps<InputStyle>,\n Pick<InputProps, \"errorBorderColor\" | \"focusBorderColor\">,\n FieldProps {}\n\nexport const InputGroupRoot = ((props: InputGroupRootProps) => {\n const {\n props: {\n id: _id,\n size,\n variant,\n children,\n disabled,\n errorBorderColor,\n focusBorderColor,\n readOnly,\n required,\n ...rest\n },\n dataProps,\n } = useFieldProps(props)\n const validChildren = useValidChildren(children)\n const cloneChildren = useMemo(\n () =>\n validChildren.map((child, index) => {\n const first = !index\n\n if (isSomeElement(child.type, InputElement)) {\n return cloneElement(child, {\n \"data-ungrouped\": \"\",\n placement: first ? \"start\" : \"end\",\n ...child.props,\n })\n } else {\n return child\n }\n }),\n [validChildren],\n )\n const sharedContext = useMemo(\n () => ({\n size,\n variant,\n errorBorderColor,\n focusBorderColor,\n ...dataProps,\n }),\n [size, variant, errorBorderColor, focusBorderColor, dataProps],\n )\n const inputContext = useMemo(\n () => ({\n ...sharedContext,\n disabled,\n invalid: isTruthyDataAttr(sharedContext[\"data-invalid\"]),\n readOnly,\n required,\n }),\n [sharedContext, disabled, readOnly, required],\n )\n\n return (\n <InputPropsContext value={inputContext}>\n <InputAddonPropsContext value={sharedContext}>\n <InputElementPropsContext value={sharedContext}>\n <Group attached minW=\"0\" w=\"full\" {...rest}>\n {cloneChildren}\n </Group>\n </InputElementPropsContext>\n </InputAddonPropsContext>\n </InputPropsContext>\n )\n}) as Component<\"div\", InputGroupRootProps>\n"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,MAAa,mBAAmB,UAA+B;CAC7D,MAAM,EACJ,OAAO,EACL,IAAI,KACJ,MACA,SACA,UACA,UACA,kBACA,kBACA,UACA,SACA,GAAG,QAEL,cACEA,sCAAc,MAAM;CACxB,MAAM,gBAAgBC,kCAAiB,SAAS;CAChD,MAAM,yCAEF,cAAc,KAAK,OAAO,UAAU;EAClC,MAAM,QAAQ,CAAC;AAEf,MAAIC,+BAAc,MAAM,MAAMC,mCAAa,CACzC,gCAAoB,OAAO;GACzB,kBAAkB;GAClB,WAAW,QAAQ,UAAU;GAC7B,GAAG,MAAM;GACV,CAAC;MAEF,QAAO;GAET,EACJ,CAAC,cAAc,CAChB;CACD,MAAM,0CACG;EACL;EACA;EACA;EACA;EACA,GAAG;EACJ,GACD;EAAC;EAAM;EAAS;EAAkB;EAAkB;EAAU,CAC/D;AAYD,QACE,2CAACC;EAAkB,iCAXZ;GACL,GAAG;GACH;GACA,iEAA0B,cAAc,gBAAgB;GACxD;GACA;GACD,GACD;GAAC;GAAe;GAAU;GAAU;GAAS,CAC9C;YAIG,2CAACC;GAAuB,OAAO;aAC7B,2CAACC;IAAyB,OAAO;cAC/B,2CAACC;KAAM;KAAS,MAAK;KAAI,GAAE;KAAO,GAAI;eACnC;MACK;KACiB;IACJ;GACP"}