diff --git a/src/components/IconPicker.tsx b/src/components/IconPicker.tsx index e427e86..2801c3e 100644 --- a/src/components/IconPicker.tsx +++ b/src/components/IconPicker.tsx @@ -19,7 +19,12 @@ import type { SearchResultsOnSelectCallback } from './SearchResults'; import type { IconObject, IconPickerOptions } from '../types'; import type { ObjectInputProps } from 'sanity'; -const IconPicker = ({ schemaType, value = {}, onChange }: ObjectInputProps) => { +const IconPicker = ({ + schemaType, + value = {}, + readOnly, + onChange, +}: ObjectInputProps) => { const options: IconPickerOptions = schemaType.options; const [isPopupOpen, setIsPopupOpen] = useState(false); const { query, loading, results, setQuery } = useQuery(options); @@ -88,7 +93,11 @@ const IconPicker = ({ schemaType, value = {}, onChange }: ObjectInputProps) => { - + diff --git a/src/components/Menu.test.tsx b/src/components/Menu.test.tsx index 565b94a..3174c92 100644 --- a/src/components/Menu.test.tsx +++ b/src/components/Menu.test.tsx @@ -57,4 +57,11 @@ describe('Menu', () => { await user.click(getByText('Delete')); expect(mockOnClick).toHaveBeenCalledWith(Action.delete); }); + + it('renders disabled state when readOnly is true', () => { + const { getByText } = render( + + ); + expect(getByText('Add icon').closest('button')).toBeDisabled(); + }); }); diff --git a/src/components/Menu.tsx b/src/components/Menu.tsx index 8c3fede..d4a2e28 100644 --- a/src/components/Menu.tsx +++ b/src/components/Menu.tsx @@ -14,14 +14,17 @@ export type MenuClickCallback = (action: Action) => void | Error; const Menu = ({ onClick, selected, + readOnly, }: { onClick: MenuClickCallback; selected: IconObject | null; + readOnly?: boolean | undefined; }) => { return ( <> {!selected && (