diff --git a/webapp/channels/src/components/__snapshots__/textbox.test.tsx.snap b/webapp/channels/src/components/__snapshots__/textbox.test.tsx.snap index a039205a4c..900f259b54 100644 --- a/webapp/channels/src/components/__snapshots__/textbox.test.tsx.snap +++ b/webapp/channels/src/components/__snapshots__/textbox.test.tsx.snap @@ -28,7 +28,6 @@ exports[`components/TextBox should match snapshot with additional, optional prop onKeyPress={[Function]} onKeyUp={[Function]} onMouseUp={[Function]} - onSelect={[Function]} openWhenEmpty={true} placeholder="placeholder text" providers={ @@ -142,7 +141,6 @@ exports[`components/TextBox should match snapshot with required props 1`] = ` onKeyPress={[Function]} onKeyUp={[Function]} onMouseUp={[Function]} - onSelect={[Function]} placeholder="placeholder text" providers={ Array [ @@ -236,7 +234,6 @@ exports[`components/TextBox should throw error when new property is too long 1`] onKeyPress={[Function]} onKeyUp={[Function]} onMouseUp={[Function]} - onSelect={[Function]} placeholder="placeholder text" providers={ Array [ @@ -330,7 +327,6 @@ exports[`components/TextBox should throw error when value is too long 1`] = ` onKeyPress={[Function]} onKeyUp={[Function]} onMouseUp={[Function]} - onSelect={[Function]} placeholder="placeholder text" providers={ Array [ diff --git a/webapp/channels/src/components/advanced_create_comment/__snapshots__/advanced_create_comment.test.jsx.snap b/webapp/channels/src/components/advanced_create_comment/__snapshots__/advanced_create_comment.test.jsx.snap index 59cff85bf7..1e7b3700f3 100644 --- a/webapp/channels/src/components/advanced_create_comment/__snapshots__/advanced_create_comment.test.jsx.snap +++ b/webapp/channels/src/components/advanced_create_comment/__snapshots__/advanced_create_comment.test.jsx.snap @@ -43,7 +43,6 @@ exports[`components/AdvancedCreateComment should match snapshot when cannot post handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -110,7 +109,6 @@ exports[`components/AdvancedCreateComment should match snapshot, comment with me handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -184,7 +182,6 @@ exports[`components/AdvancedCreateComment should match snapshot, emoji picker di handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -251,7 +248,6 @@ exports[`components/AdvancedCreateComment should match snapshot, empty comment 1 handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -325,7 +321,6 @@ exports[`components/AdvancedCreateComment should match snapshot, non-empty messa handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} diff --git a/webapp/channels/src/components/advanced_create_comment/advanced_create_comment.tsx b/webapp/channels/src/components/advanced_create_comment/advanced_create_comment.tsx index 1a8b180bd1..c384956538 100644 --- a/webapp/channels/src/components/advanced_create_comment/advanced_create_comment.tsx +++ b/webapp/channels/src/components/advanced_create_comment/advanced_create_comment.tsx @@ -826,10 +826,6 @@ class AdvancedCreateComment extends React.PureComponent { }); }; - handleSelect = (e: React.SyntheticEvent) => { - Utils.adjustSelection(this.textboxRef.current?.getInputBox(), e); - }; - handleKeyDown = (e: React.KeyboardEvent) => { const ctrlOrMetaKeyPressed = e.ctrlKey || e.metaKey; const lastMessageReactionKeyCombo = ctrlOrMetaKeyPressed && e.shiftKey && Keyboard.isKeyPressed(e, KeyCodes.BACK_SLASH); @@ -1237,7 +1233,6 @@ class AdvancedCreateComment extends React.PureComponent { handlePostError={this.handlePostError} emitTypingEvent={this.emitTypingEvent} handleMouseUpKeyUp={this.handleMouseUpKeyUp} - handleSelect={this.handleSelect} handleKeyDown={this.handleKeyDown} postMsgKeyPress={this.commentMsgKeyPress} handleChange={this.handleChange} diff --git a/webapp/channels/src/components/advanced_create_post/__snapshots__/advanced_create_post.test.jsx.snap b/webapp/channels/src/components/advanced_create_post/__snapshots__/advanced_create_post.test.jsx.snap index 3441f60081..b4f00f50de 100644 --- a/webapp/channels/src/components/advanced_create_post/__snapshots__/advanced_create_post.test.jsx.snap +++ b/webapp/channels/src/components/advanced_create_post/__snapshots__/advanced_create_post.test.jsx.snap @@ -47,7 +47,6 @@ exports[`components/advanced_create_post Show tutorial 1`] = ` handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -126,7 +125,6 @@ exports[`components/advanced_create_post should match snapshot for center textbo handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -205,7 +203,6 @@ exports[`components/advanced_create_post should match snapshot when cannot post handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -284,7 +281,6 @@ exports[`components/advanced_create_post should match snapshot when file upload handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -363,7 +359,6 @@ exports[`components/advanced_create_post should match snapshot, can post; previe handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -442,7 +437,6 @@ exports[`components/advanced_create_post should match snapshot, can post; previe handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -521,7 +515,6 @@ exports[`components/advanced_create_post should match snapshot, cannot post; pre handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -600,7 +593,6 @@ exports[`components/advanced_create_post should match snapshot, cannot post; pre handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -679,7 +671,6 @@ exports[`components/advanced_create_post should match snapshot, init 1`] = ` handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -763,7 +754,6 @@ exports[`components/advanced_create_post should match snapshot, post priority di handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -850,7 +840,6 @@ exports[`components/advanced_create_post should match snapshot, post priority en handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} @@ -947,7 +936,6 @@ exports[`components/advanced_create_post should match snapshot, post priority en handleKeyDown={[Function]} handleMouseUpKeyUp={[Function]} handlePostError={[Function]} - handleSelect={[Function]} handleSubmit={[Function]} handleUploadError={[Function]} handleUploadProgress={[Function]} diff --git a/webapp/channels/src/components/advanced_create_post/advanced_create_post.test.jsx b/webapp/channels/src/components/advanced_create_post/advanced_create_post.test.jsx index f09009ea23..dda6dc8e3b 100644 --- a/webapp/channels/src/components/advanced_create_post/advanced_create_post.test.jsx +++ b/webapp/channels/src/components/advanced_create_post/advanced_create_post.test.jsx @@ -1457,35 +1457,6 @@ describe('components/advanced_create_post', () => { 'post_textbox', ); - /** - * TODO@all: move this test to advanced_text_editor.test.tsx and rewrite it according to the component - * - * it is not possible to test for this here since we only shallow render - * - * @see: https://mattermost.atlassian.net/browse/MM-44343 - */ - // it('should adjust selection to correct text', () => { - // const value = 'Jalebi _Fafda_ and Sambharo'; - // const wrapper = shallow(advancedCreatePost({draft: {...draftProp, message: value}})); - // - // const setSelectionRangeFn = jest.fn(); - // wrapper.instance().textboxRef = { - // current: { - // getInputBox: jest.fn(() => { - // return { - // focus: jest.fn(), - // setSelectionRange: setSelectionRangeFn, - // }; - // }), - // }, - // }; - // - // const textbox = wrapper.find(Textbox); - // const e = makeSelectionEvent(value, 7, 14); - // textbox.props().onSelect(e); - // expect(setSelectionRangeFn).toHaveBeenCalledWith(8, 13); - // }); - it('should match snapshot, can post; preview enabled', () => { const wrapper = shallow(advancedCreatePost({canPost: true, isMarkdownPreviewEnabled: true})); diff --git a/webapp/channels/src/components/advanced_create_post/advanced_create_post.tsx b/webapp/channels/src/components/advanced_create_post/advanced_create_post.tsx index 2704580b28..e438b77f44 100644 --- a/webapp/channels/src/components/advanced_create_post/advanced_create_post.tsx +++ b/webapp/channels/src/components/advanced_create_post/advanced_create_post.tsx @@ -1127,10 +1127,6 @@ class AdvancedCreatePost extends React.PureComponent { }); }; - handleSelect = (e: React.SyntheticEvent) => { - Utils.adjustSelection(this.textboxRef.current?.getInputBox(), e as React.KeyboardEvent); - }; - handleKeyDown = (e: React.KeyboardEvent) => { const messageIsEmpty = this.state.message.length === 0; const draftMessageIsEmpty = this.props.draft.message.length === 0; @@ -1612,7 +1608,6 @@ class AdvancedCreatePost extends React.PureComponent { handlePostError={this.handlePostError} emitTypingEvent={this.emitTypingEvent} handleMouseUpKeyUp={this.handleMouseUpKeyUp} - handleSelect={this.handleSelect} handleKeyDown={this.handleKeyDown} postMsgKeyPress={this.postMsgKeyPress} handleChange={this.handleChange} diff --git a/webapp/channels/src/components/advanced_text_editor/advanced_text_editor.tsx b/webapp/channels/src/components/advanced_text_editor/advanced_text_editor.tsx index 41c8a67b3b..cdea3f1660 100644 --- a/webapp/channels/src/components/advanced_text_editor/advanced_text_editor.tsx +++ b/webapp/channels/src/components/advanced_text_editor/advanced_text_editor.tsx @@ -78,7 +78,6 @@ type Props = { handlePostError: (postError: React.ReactNode) => void; emitTypingEvent: () => void; handleMouseUpKeyUp: (e: React.MouseEvent | React.KeyboardEvent) => void; - handleSelect: (e: React.SyntheticEvent) => void; handleKeyDown: (e: React.KeyboardEvent) => void; postMsgKeyPress: (e: React.KeyboardEvent) => void; handleChange: (e: React.ChangeEvent) => void; @@ -136,7 +135,6 @@ const AdvanceTextEditor = ({ handlePostError, emitTypingEvent, handleMouseUpKeyUp, - handleSelect, handleKeyDown, postMsgKeyPress, handleChange, @@ -473,7 +471,6 @@ const AdvanceTextEditor = ({ onChange={handleChange} onKeyPress={postMsgKeyPress} onKeyDown={handleKeyDown} - onSelect={handleSelect} onMouseUp={handleMouseUpKeyUp} onKeyUp={handleMouseUpKeyUp} onComposition={emitTypingEvent} diff --git a/webapp/channels/src/components/edit_post/edit_post.tsx b/webapp/channels/src/components/edit_post/edit_post.tsx index fd30647e9a..e4a5a92f00 100644 --- a/webapp/channels/src/components/edit_post/edit_post.tsx +++ b/webapp/channels/src/components/edit_post/edit_post.tsx @@ -349,12 +349,6 @@ const EditPost = ({editingPost, actions, canEditPost, config, channelId, draft, } }; - const handleSelect = (e: React.SyntheticEvent) => { - if (textboxRef.current) { - Utils.adjustSelection(textboxRef.current.getInputBox(), e); - } - }; - const handleChange = (e: React.ChangeEvent) => { const message = e.target.value; @@ -490,7 +484,6 @@ const EditPost = ({editingPost, actions, canEditPost, config, channelId, draft, onChange={handleChange} onKeyPress={handleEditKeyPress} onKeyDown={handleKeyDown} - onSelect={handleSelect} onHeightChange={handleHeightChange} handlePostError={handlePostError} onPaste={handlePaste} diff --git a/webapp/channels/src/components/forward_post_modal/forward_post_comment_input.tsx b/webapp/channels/src/components/forward_post_modal/forward_post_comment_input.tsx index bca35dd1e6..425be8cc79 100644 --- a/webapp/channels/src/components/forward_post_modal/forward_post_comment_input.tsx +++ b/webapp/channels/src/components/forward_post_modal/forward_post_comment_input.tsx @@ -44,13 +44,6 @@ const ForwardPostCommentInput = ({channelId, canForwardPost, comment, permaLinkL // we do not allow sending the forwarding when hitting enter const postMsgKeyPress = () => {}; - const handleSelect = (e: React.SyntheticEvent) => { - Utils.adjustSelection( - textboxRef?.current?.getInputBox(), - e as React.KeyboardEvent, - ); - }; - const handleChange = useCallback( (e: React.ChangeEvent) => { const message = e.target.value; @@ -138,7 +131,6 @@ const ForwardPostCommentInput = ({channelId, canForwardPost, comment, permaLinkL onChange={handleChange} onKeyPress={postMsgKeyPress} onKeyDown={handleKeyDown} - onSelect={handleSelect} onHeightChange={onHeightChange} handlePostError={onError} value={comment} diff --git a/webapp/channels/src/components/suggestion/suggestion_box/suggestion_box.jsx b/webapp/channels/src/components/suggestion/suggestion_box/suggestion_box.jsx index 71456f1512..5994040e81 100644 --- a/webapp/channels/src/components/suggestion/suggestion_box/suggestion_box.jsx +++ b/webapp/channels/src/components/suggestion/suggestion_box/suggestion_box.jsx @@ -97,7 +97,6 @@ export default class SuggestionBox extends React.PureComponent { onKeyPress: PropTypes.func, onComposition: PropTypes.func, - onSelect: PropTypes.func, onSearchTypeSelected: PropTypes.func, /** @@ -624,12 +623,6 @@ export default class SuggestionBox extends React.PureComponent { } }; - handleSelect = (e) => { - if (this.props.onSelect) { - this.props.onSelect(e); - } - }; - focusInputOnEscape = () => { if (this.inputRef.current) { document.dispatchEvent(new CustomEvent( @@ -840,7 +833,6 @@ export default class SuggestionBox extends React.PureComponent { onCompositionUpdate={this.handleCompositionUpdate} onCompositionEnd={this.handleCompositionEnd} onKeyDown={this.handleKeyDown} - onSelect={this.handleSelect} /> {(this.props.openWhenEmpty || this.props.value.length >= this.props.requiredCharacters) && this.state.presentationType === 'text' && ( { onComposition={() => {}} onHeightChange={() => {}} onKeyDown={() => {}} - onSelect={() => {}} onMouseUp={() => {}} onKeyUp={() => {}} onBlur={() => {}} diff --git a/webapp/channels/src/components/textbox/textbox.tsx b/webapp/channels/src/components/textbox/textbox.tsx index 61082e52e3..ade4638d8c 100644 --- a/webapp/channels/src/components/textbox/textbox.tsx +++ b/webapp/channels/src/components/textbox/textbox.tsx @@ -40,7 +40,6 @@ export type Props = { onWidthChange?: (width: number) => void; createMessage: string; onKeyDown?: (e: KeyboardEvent) => void; - onSelect?: (e: React.SyntheticEvent) => void; onMouseUp?: (e: React.MouseEvent) => void; onKeyUp?: (e: React.KeyboardEvent) => void; onBlur?: (e: FocusEvent) => void; @@ -229,8 +228,6 @@ export default class Textbox extends React.PureComponent { this.props.onKeyDown?.(e as KeyboardEvent); }; - handleSelect = (e: React.SyntheticEvent) => this.props.onSelect?.(e); - handleMouseUp = (e: MouseEvent) => this.props.onMouseUp?.(e); handleKeyUp = (e: KeyboardEvent) => this.props.onKeyUp?.(e); @@ -318,7 +315,6 @@ export default class Textbox extends React.PureComponent { placeholder={this.props.createMessage} onChange={this.handleChange} onKeyPress={this.props.onKeyPress} - onSelect={this.handleSelect} onKeyDown={this.handleKeyDown} onMouseUp={this.handleMouseUp} onKeyUp={this.handleKeyUp} diff --git a/webapp/channels/src/utils/utils.test.tsx b/webapp/channels/src/utils/utils.test.tsx index f271a282f2..f5bdaeac79 100644 --- a/webapp/channels/src/utils/utils.test.tsx +++ b/webapp/channels/src/utils/utils.test.tsx @@ -9,10 +9,8 @@ import store from 'stores/redux_store.jsx'; import Constants, {ValidationErrors} from 'utils/constants'; import * as Utils from 'utils/utils'; import * as lineBreakHelpers from 'tests/helpers/line_break_helpers.js'; -import {makeSelectionEvent} from 'tests/helpers/markdown_hotkey_helpers.js'; import * as ua from 'tests/helpers/user_agent_mocks'; import {UserProfile} from '@mattermost/types/users'; -import {TextboxElement} from 'components/textbox'; describe('Utils.getDisplayNameByUser', () => { afterEach(() => { @@ -422,68 +420,6 @@ describe('Utils.insertLineBreakFromKeyEvent', () => { }); }); -describe('Utils.adjustSelection', () => { - test('adjustSelection fixes selection to correct text', () => { - // "_Fafda_" is selected - const e = makeSelectionEvent('Jalebi _Fafda_ and Sambharo', 7, 14); - const input = { - focus: jest.fn(), - setSelectionRange: jest.fn(), - } as unknown as HTMLInputElement; - - Utils.adjustSelection(input, e as React.KeyboardEvent); - expect(input.setSelectionRange).toHaveBeenCalledWith(8, 13); - }); - - test('adjustSelection does not fix selection when selected text does not end with "_"', () => { - // "_Fafda" is selected - const e = makeSelectionEvent('Jalebi _Fafda and Sambharo', 7, 13); - const input = { - focus: jest.fn(), - setSelectionRange: jest.fn(), - } as unknown as HTMLInputElement; - - Utils.adjustSelection(input, e as React.KeyboardEvent); - expect(input.setSelectionRange).not.toHaveBeenCalled(); - }); - - test('adjustSelection does not fix selection when selected text does start end with "_"', () => { - // "Fafda_" is selected - const e = makeSelectionEvent('Jalebi Fafda_ and Sambharo', 7, 13); - const input = { - focus: jest.fn(), - setSelectionRange: jest.fn(), - } as unknown as HTMLInputElement; - - Utils.adjustSelection(input, e as React.KeyboardEvent); - expect(input.setSelectionRange).not.toHaveBeenCalled(); - }); - - test('adjustSelection fixes selection at start of text', () => { - // "_Jalebi_" is selected - const e = makeSelectionEvent('_Jalebi_ Fafda and Sambharo', 0, 8); - const input = { - focus: jest.fn(), - setSelectionRange: jest.fn(), - } as unknown as HTMLInputElement; - - Utils.adjustSelection(input, e as React.KeyboardEvent); - expect(input.setSelectionRange).toHaveBeenCalledWith(1, 7); - }); - - test('adjustSelection fixes selection at end of text', () => { - // "_Sambharo_" is selected - const e = makeSelectionEvent('Jalebi Fafda and _Sambharo_', 17, 27); - const input = { - focus: jest.fn(), - setSelectionRange: jest.fn(), - } as unknown as HTMLInputElement; - - Utils.adjustSelection(input, e as React.KeyboardEvent); - expect(input.setSelectionRange).toHaveBeenCalledWith(18, 26); - }); -}); - describe('Utils.copyTextAreaToDiv', () => { const textArea = document.createElement('textarea'); diff --git a/webapp/channels/src/utils/utils.tsx b/webapp/channels/src/utils/utils.tsx index 6740377d9e..41a37fb065 100644 --- a/webapp/channels/src/utils/utils.tsx +++ b/webapp/channels/src/utils/utils.tsx @@ -1608,31 +1608,6 @@ export function getClosestParent(elem: HTMLElement, selector: string) { return null; } -/** - * Adjust selection to correct text when there is Italic markdown (_) around selected text. - */ -export function adjustSelection(inputBox: HTMLInputElement, e: React.SyntheticEvent) { - const el = e.target as TextboxElement; - const {selectionEnd, selectionStart, value} = el; - - if (selectionStart === selectionEnd) { - // nothing selected. - return; - } - - e.preventDefault(); - - const firstUnderscore = value.charAt(selectionStart!) === '_'; - const lastUnderscore = value.charAt(selectionEnd! - 1) === '_'; - - const spaceBefore = value.charAt(selectionStart! - 1) === ' '; - const spaceAfter = value.charAt(selectionEnd!) === ' '; - - if (firstUnderscore && lastUnderscore && (spaceBefore || spaceAfter)) { - setSelectionRange(inputBox, selectionStart! + 1, selectionEnd! - 1); - } -} - export function getNextBillingDate() { const nextBillingDate = moment().add(1, 'months').startOf('month'); return nextBillingDate.format('MMM D, YYYY');