reafctor: normalize component formatting (#2082)
* refactor: move/rename BanUserButton file * refactor: move/rename Chart file * refactor: update generic component filenames to PascalCase * refactor: update config component filenames to PascalCase * refactor: update AdminLayout component filename to PascalCase * refactor: update/move VideoJS component * chore(eslint): disable bad react/require-default-props rule * refactor: normalize ActionButton component * refactor: normalize ActionButtonRow component * refactor: normalize FollowButton component * refactor: normalize NotifyButton component * refactor: normalize ChatActionMessage component * refactor: normalize ChatContainer component * refactor: normalize ChatJoinMessage component * refactor: normalize ChatModerationActionMenu component * refactor: normalize ChatModerationDetailsModal component * refactor: normalize ChatModeratorNotification component * refactor: normalize ChatSocialMessage component * refactor: normalize ChatSystemMessage component * refactor: normalize ChatTextField component * refactor: normalize ChatUserBadge component * refactor: normalize ChatUserMessage component * refactor: normalize ContentHeader component * refactor: normalize OwncastLogo component * refactor: normalize UserDropdown component * chore(eslint): modify react/function-component-definition rule * refactor: normalize CodecSelector component * refactor: update a bunch of functional components using eslint * refactor: update a bunch of functional components using eslint, pt2 * refactor: update a bunch of functional components using eslint, pt3 * refactor: replace all component->component default imports with named imports * refactor: replace all component-stories->component default imports with named imports * refactor: remove default exports from most components * chore(eslint): add eslint config files for the components and pages dirs * fix: use-before-define error in ChatContainer * Fix ChatContainer import * Only process .tsx files in Next builds Co-authored-by: Gabe Kangas <gabek@real-ity.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import { ComponentStory, ComponentMeta } from '@storybook/react';
|
||||
import { RecoilRoot } from 'recoil';
|
||||
import ChatTextField from './ChatTextField';
|
||||
import { ChatTextField } from './ChatTextField';
|
||||
import Mockup from '../../../stories/assets/mocks/chatinput-mock.png';
|
||||
|
||||
const mockResponse = JSON.parse(
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { SendOutlined, SmileOutlined } from '@ant-design/icons';
|
||||
import { Button, Popover } from 'antd';
|
||||
import React, { useMemo, useState } from 'react';
|
||||
import React, { FC, useMemo, useState } from 'react';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { Editor, Node, Path, Transforms, createEditor, BaseEditor, Text, Descendant } from 'slate';
|
||||
import { Transforms, createEditor, BaseEditor, Text, Descendant, Editor, Node, Path } from 'slate';
|
||||
import { Slate, Editable, withReact, ReactEditor, useSelected, useFocused } from 'slate-react';
|
||||
import EmojiPicker from './EmojiPicker';
|
||||
import { EmojiPicker } from './EmojiPicker';
|
||||
import WebsocketService from '../../../services/websocket-service';
|
||||
import { websocketServiceAtom } from '../../stores/ClientConfigStore';
|
||||
import { MessageType } from '../../../interfaces/socket-events';
|
||||
import style from './ChatTextField.module.scss';
|
||||
import styles from './ChatTextField.module.scss';
|
||||
|
||||
type CustomElement = { type: 'paragraph' | 'span'; children: CustomText[] } | ImageNode;
|
||||
type CustomText = { text: string };
|
||||
@@ -90,7 +90,9 @@ const serialize = node => {
|
||||
}
|
||||
};
|
||||
|
||||
export default function ChatTextField() {
|
||||
export type ChatTextFieldProps = {};
|
||||
|
||||
export const ChatTextField: FC<ChatTextFieldProps> = () => {
|
||||
const [showEmojis, setShowEmojis] = useState(false);
|
||||
const websocketService = useRecoilValue<WebsocketService>(websocketServiceAtom);
|
||||
const editor = useMemo(() => withReact(withImages(createEditor())), []);
|
||||
@@ -196,14 +198,13 @@ export default function ChatTextField() {
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className={style.root}>
|
||||
<div className={styles.root}>
|
||||
<Slate editor={editor} value={defaultEditorValue}>
|
||||
<Editable
|
||||
onKeyDown={onKeyDown}
|
||||
renderElement={renderElement}
|
||||
placeholder="Chat message goes here..."
|
||||
style={{ width: '100%' }}
|
||||
// onChange={change => setValue(change.value)}
|
||||
autoFocus
|
||||
/>
|
||||
<Popover
|
||||
@@ -221,14 +222,14 @@ export default function ChatTextField() {
|
||||
|
||||
<button
|
||||
type="button"
|
||||
className={style.emojiButton}
|
||||
className={styles.emojiButton}
|
||||
title="Emoji picker button"
|
||||
onClick={() => setShowEmojis(!showEmojis)}
|
||||
>
|
||||
<SmileOutlined />
|
||||
</button>
|
||||
<Button
|
||||
className={style.sendButton}
|
||||
className={styles.sendButton}
|
||||
size="large"
|
||||
type="ghost"
|
||||
icon={<SendOutlined />}
|
||||
@@ -237,4 +238,4 @@ export default function ChatTextField() {
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -9,7 +9,7 @@ interface Props {
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export default function EmojiPicker(props: Props) {
|
||||
export const EmojiPicker = (props: Props) => {
|
||||
const [customEmoji, setCustomEmoji] = useState([]);
|
||||
const { onEmojiSelect, onCustomEmojiSelect } = props;
|
||||
const ref = useRef();
|
||||
@@ -54,4 +54,4 @@ export default function EmojiPicker(props: Props) {
|
||||
}, [customEmoji]);
|
||||
|
||||
return <div ref={ref} />;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user