import { StoryObj } from '@storybook/react-vite';
import { MantineThemeDecorator } from '../../docs/MantineThemeDecorator';
import { StringOptions } from './StringWidget';
import { UseEditorOptions, useEditor, Widget } from '@sagold/react-json-editor';
type WidgetProps = StringOptions & { editorProps: UseEditorOptions };
function WidgetForm({ editorProps, ...props }: WidgetProps) {
const editor = useEditor(editorProps);
return ;
}
export default {
title: 'packages/rje-mantine-widgets/widgets/StringWidget',
component: WidgetForm,
decorators: [MantineThemeDecorator],
argTypes: {
showHeader: { control: 'boolean' },
icon: { control: 'text' },
tag: { control: 'text' },
swapIconPosition: { control: 'boolean' },
clearable: { control: 'boolean' }
},
args: {
editorProps: {
data: null,
onChange: (v) => console.log(`change:`, v),
schema: {
title: 'A string value',
description: 'Simple single-line text input',
type: 'string'
}
}
}
};
type Story = StoryObj;
export const Default: Story = {
args: {
liveUpdate: false
}
};
export const LiveUpdate: Story = {
args: {
liveUpdate: true
}
};
export const ColorWidget: Story = {
args: {
liveUpdate: true,
editorProps: {
data: '',
onChange: (v) => console.log(`change: '${v}'`, typeof v),
schema: {
type: 'string',
format: 'hexColor'
}
}
}
};
export const TextareaWidget: Story = {
args: {
liveUpdate: true,
editorProps: {
data: '',
onChange: (v) => console.log(`change: '${v}'`, typeof v),
schema: {
type: 'string',
'x-widget': 'textarea'
}
}
}
};