@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
1 lines • 3.23 kB
Source Map (JSON)
{"version":3,"file":"ComboboxOption.cjs","names":["factory","useProps","useComboboxContext","Box","classes"],"sources":["../../../../src/components/Combobox/ComboboxOption/ComboboxOption.tsx"],"sourcesContent":["import { useId } from 'react';\nimport {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n Primitive,\n useProps,\n} from '../../../core';\nimport { useComboboxContext } from '../Combobox.context';\nimport classes from '../Combobox.module.css';\n\nexport type ComboboxOptionStylesNames = 'option';\n\nexport interface ComboboxOptionProps\n extends BoxProps, CompoundStylesApiProps<ComboboxOptionFactory>, ElementProps<'div'> {\n /** Option value */\n value: Primitive;\n\n /** Current active state */\n active?: boolean;\n\n /** Disabled state */\n disabled?: boolean;\n\n /** Current selected state */\n selected?: boolean;\n}\n\nexport type ComboboxOptionFactory = Factory<{\n props: ComboboxOptionProps;\n ref: HTMLDivElement;\n stylesNames: ComboboxOptionStylesNames;\n compound: true;\n}>;\n\nexport const ComboboxOption = factory<ComboboxOptionFactory>((_props) => {\n const props = useProps('ComboboxOption', null, _props);\n const {\n classNames,\n className,\n style,\n styles,\n vars,\n onClick,\n id,\n active,\n onMouseDown,\n onMouseOver,\n disabled,\n selected,\n mod,\n ...others\n } = props;\n\n const ctx = useComboboxContext();\n const uuid = useId();\n const _id = id || uuid;\n\n return (\n <Box\n {...ctx.getStyles('option', { className, classNames, styles, style })}\n {...others}\n id={_id}\n mod={[\n 'combobox-option',\n { 'combobox-active': active, 'combobox-disabled': disabled, 'combobox-selected': selected },\n mod,\n ]}\n role=\"option\"\n onClick={(event) => {\n if (!disabled) {\n ctx.onOptionSubmit?.(props.value as any, props);\n onClick?.(event);\n } else {\n event.preventDefault();\n }\n }}\n onMouseDown={(event) => {\n event.preventDefault();\n onMouseDown?.(event);\n }}\n onMouseOver={(event) => {\n if (ctx.resetSelectionOnOptionHover) {\n ctx.store.resetSelectedOption();\n }\n onMouseOver?.(event);\n }}\n />\n );\n});\n\nComboboxOption.classes = classes;\nComboboxOption.displayName = '@mantine/core/ComboboxOption';\n"],"mappings":";;;;;;;;;;AAsCA,MAAa,iBAAiBA,gBAAAA,SAAgC,WAAW;CACvE,MAAM,QAAQC,kBAAAA,SAAS,kBAAkB,MAAM,OAAO;CACtD,MAAM,EACJ,YACA,WACA,OACA,QACA,MACA,SACA,IACA,QACA,aACA,aACA,UACA,UACA,KACA,GAAG,WACD;CAEJ,MAAM,MAAMC,yBAAAA,oBAAoB;CAChC,MAAM,QAAA,GAAA,MAAA,QAAc;CACpB,MAAM,MAAM,MAAM;AAElB,QACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,KAAD;EACE,GAAI,IAAI,UAAU,UAAU;GAAE;GAAW;GAAY;GAAQ;GAAO,CAAC;EACrE,GAAI;EACJ,IAAI;EACJ,KAAK;GACH;GACA;IAAE,mBAAmB;IAAQ,qBAAqB;IAAU,qBAAqB;IAAU;GAC3F;GACD;EACD,MAAK;EACL,UAAU,UAAU;AAClB,OAAI,CAAC,UAAU;AACb,QAAI,iBAAiB,MAAM,OAAc,MAAM;AAC/C,cAAU,MAAM;SAEhB,OAAM,gBAAgB;;EAG1B,cAAc,UAAU;AACtB,SAAM,gBAAgB;AACtB,iBAAc,MAAM;;EAEtB,cAAc,UAAU;AACtB,OAAI,IAAI,4BACN,KAAI,MAAM,qBAAqB;AAEjC,iBAAc,MAAM;;EAEtB,CAAA;EAEJ;AAEF,eAAe,UAAUC,wBAAAA;AACzB,eAAe,cAAc"}