Files
gitbook/packages/react-contentkit/src/ElementTextInput.tsx
T
Samy Pessé 70c6c9df42 First pass at implementing ContentKit (#69)
* Start

* Try webframe

* Lint and format

* Move to package

* Continue

* Implement card and cleanup contexts

* Start code blocks

* Start rendering image

* Continue with card

* Start stack

* Start text

* Start modal

* Format

* Continue

* Fix TS errors

* Cleanup

* Make markdown work with server components

* Format

* Add visual test

* Lint and format

* Fix lifecycle

* Implement textinput

* Divider

* Remove console logs

* Remove listSpaceIntegrationsBlocks
2024-02-28 14:46:47 +01:00

47 lines
1.4 KiB
TypeScript

'use client';
import { ContentKitTextInput } from '@gitbook/api';
import { ContentKitClientElementProps } from './types';
import classNames from 'classnames';
import { useContentKitClientContext } from './context';
import React from 'react';
import { getStateStringValue } from './dynamic';
export function ElementTextInput(props: ContentKitClientElementProps<ContentKitTextInput>) {
const { element } = props;
const clientContext = useContentKitClientContext();
const value =
getStateStringValue(clientContext.state, element.state) ?? element.initialValue ?? '';
const onChange: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement> = (event) => {
clientContext.setState({
[element.state]: event.target.value,
});
};
if (element.multiline) {
return (
<textarea
disabled={element.disabled}
className={classNames('contentkit-textinput')}
value={value}
placeholder={element.placeholder}
onChange={onChange}
/>
);
}
return (
<input
type={element.inputType ?? 'text'}
disabled={element.disabled}
className={classNames('contentkit-textinput')}
value={value}
placeholder={element.placeholder}
onChange={onChange}
/>
);
}