diff --git a/src/components/DisabledItem.tsx b/src/components/DisabledItem.tsx index e317328..c8e7e4d 100644 --- a/src/components/DisabledItem.tsx +++ b/src/components/DisabledItem.tsx @@ -1,6 +1,7 @@ import React, { useContext } from "react"; import { SelectContext } from "./SelectProvider"; +import { DEFAULT_CLASSNAMES } from "../constants"; interface DisabledItemProps { children: JSX.Element | string; @@ -12,8 +13,8 @@ const DisabledItem: React.FC = ({ children }) => {
{children} diff --git a/src/components/GroupItem.tsx b/src/components/GroupItem.tsx index 84da5ee..ba9da23 100644 --- a/src/components/GroupItem.tsx +++ b/src/components/GroupItem.tsx @@ -3,6 +3,7 @@ import React from "react"; import Item from "./Item"; import { useSelectContext } from "./SelectProvider"; import { GroupOption } from "./type"; +import { DEFAULT_CLASSNAMES } from "../constants"; interface GroupItemProps { item: GroupOption; @@ -22,8 +23,8 @@ const GroupItem: React.FC = ({ item, primaryColor }) => {
{item.label} diff --git a/src/components/Item.tsx b/src/components/Item.tsx index a27feb3..d851883 100755 --- a/src/components/Item.tsx +++ b/src/components/Item.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useMemo } from "react"; -import { COLORS, DEFAULT_THEME, THEME_DATA } from "../constants"; +import { COLORS, DEFAULT_CLASSNAMES, DEFAULT_THEME, THEME_DATA } from "../constants"; import DisabledItem from "./DisabledItem"; import { useSelectContext } from "./SelectProvider"; @@ -40,15 +40,13 @@ const Item: React.FC = ({ item, primaryColor }) => { }, [primaryColor]); const getItemClass = useCallback(() => { - const baseClass = - "block transition duration-200 px-2 py-2 cursor-pointer select-none truncate rounded"; const selectedClass = isSelected ? `text-white ${bgColor}` : `text-gray-500 ${bgHoverColor} ${textHoverColor}`; return classNames && classNames.listItem - ? classNames.listItem({ isSelected }) - : `${baseClass} ${selectedClass}`; + ? classNames.listItem(DEFAULT_CLASSNAMES.listItem, { isSelected }) + : `${DEFAULT_CLASSNAMES.listItem} ${selectedClass}`; }, [bgColor, bgHoverColor, classNames, isSelected, textHoverColor]); return ( @@ -65,8 +63,8 @@ const Item: React.FC = ({ item, primaryColor }) => {
  • ) => { - if (e.key === ' ' || e.key === 'Enter') { - handleValueChange(item) + if (e.key === " " || e.key === "Enter") { + handleValueChange(item); } }} aria-selected={isSelected} diff --git a/src/components/Options.tsx b/src/components/Options.tsx index 85e27d0..b50db49 100755 --- a/src/components/Options.tsx +++ b/src/components/Options.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useContext, useMemo } from "react"; -import { DEFAULT_THEME } from "../constants"; +import { DEFAULT_CLASSNAMES, DEFAULT_THEME } from "../constants"; import DisabledItem from "./DisabledItem"; import GroupItem from "./GroupItem"; @@ -94,7 +94,11 @@ const Options: React.FC = ({ return (
    {filterResult.map((item, index) => ( diff --git a/src/components/SearchInput.tsx b/src/components/SearchInput.tsx index cce8e4f..c5ff90b 100755 --- a/src/components/SearchInput.tsx +++ b/src/components/SearchInput.tsx @@ -2,6 +2,7 @@ import React, { forwardRef, useContext } from "react"; import { SearchIcon } from "./Icons"; import { SelectContext } from "./SelectProvider"; +import { DEFAULT_CLASSNAMES } from "../constants"; interface SearchInputProps { placeholder?: string; @@ -19,23 +20,23 @@ const SearchInput = forwardRef(function Sear
    = ({ borderFocus = THEME_DATA.borderFocus[primaryColor as keyof typeof THEME_DATA.borderFocus]; } - const baseClass = - "flex text-sm text-gray-500 border border-gray-300 rounded shadow-sm transition-all duration-300 focus:outline-none"; - const defaultClass = `${baseClass} ${ + const defaultClass = `${DEFAULT_CLASSNAMES.menuButton} ${ isDisabled ? "bg-gray-200" : `bg-white hover:border-gray-400 ${borderFocus} focus:ring ${ringColor}` }`; return classNames && classNames.menuButton - ? classNames.menuButton({ isDisabled }) + ? classNames.menuButton(DEFAULT_CLASSNAMES.menuButton, { isDisabled }) : defaultClass; }, [classNames, isDisabled, primaryColor]); const getTagItemClass = useCallback( (item: Option) => { - const baseClasse = "bg-gray-200 border rounded-sm flex space-x-1"; const disabledClass = isDisabled ? "border-gray-500 px-1" : "pl-1"; return classNames?.tagItem - ? classNames.tagItem({ item, isDisabled }) - : `${baseClasse} ${disabledClass}`; + ? classNames.tagItem(DEFAULT_CLASSNAMES.tagItem, { item, isDisabled }) + : `${DEFAULT_CLASSNAMES.tagItem} ${disabledClass}`; }, [classNames, isDisabled] ); @@ -198,8 +195,10 @@ const Select: React.FC = ({

    {item.label} @@ -211,15 +210,19 @@ const Select: React.FC = ({ onClick={e => removeItem(e, item)} className={ classNames?.tagItemIconContainer - ? classNames.tagItemIconContainer - : "flex items-center px-1 cursor-pointer rounded-r-sm hover:bg-red-200 hover:text-red-600" + ? classNames.tagItemIconContainer( + DEFAULT_CLASSNAMES.tagItemIconContainer + ) + : DEFAULT_CLASSNAMES.tagItemIconContainer } >

    @@ -242,8 +245,8 @@ const Select: React.FC = ({
    @@ -267,8 +270,8 @@ const Select: React.FC = ({
    {isSearchable && ( diff --git a/src/components/type.ts b/src/components/type.ts index 1e5b8dc..731832f 100644 --- a/src/components/type.ts +++ b/src/components/type.ts @@ -15,21 +15,21 @@ export interface GroupOption { export type Options = Array