From 61a4ee9ede68db421d2160a6840ba6d7f1f676a2 Mon Sep 17 00:00:00 2001 From: blacktail Date: Mon, 18 Jul 2022 16:19:53 +0800 Subject: [PATCH] fix: Inconsistent use of accents in Safari #16 --- src/ResizableTextArea.tsx | 13 ++++++++----- tests/index.spec.js | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/ResizableTextArea.tsx b/src/ResizableTextArea.tsx index 595f455..c9a7d18 100644 --- a/src/ResizableTextArea.tsx +++ b/src/ResizableTextArea.tsx @@ -1,10 +1,10 @@ -import * as React from 'react'; +import classNames from 'classnames'; import ResizeObserver from 'rc-resize-observer'; import omit from 'rc-util/lib/omit'; -import classNames from 'classnames'; -import calculateNodeHeight from './calculateNodeHeight'; -import type { TextAreaProps } from '.'; +import * as React from 'react'; import shallowEqual from 'shallowequal'; +import type { TextAreaProps } from '.'; +import calculateNodeHeight from './calculateNodeHeight'; // eslint-disable-next-line @typescript-eslint/naming-convention enum RESIZE_STATUS { @@ -109,7 +109,10 @@ class ResizableTextArea extends React.Component { // https://github.com/ant-design/ant-design/issues/21870 fixFirefoxAutoScroll() { try { - if (document.activeElement === this.textArea) { + if ( + navigator.userAgent.includes('Firefox') && + document.activeElement === this.textArea + ) { const currentStart = this.textArea.selectionStart; const currentEnd = this.textArea.selectionEnd; this.textArea.setSelectionRange(currentStart, currentEnd); diff --git a/tests/index.spec.js b/tests/index.spec.js index 3fd5035..78f54ac 100644 --- a/tests/index.spec.js +++ b/tests/index.spec.js @@ -1,13 +1,18 @@ -import React from 'react'; import { mount } from 'enzyme'; import TextArea from '../src'; -import { focusTest, sleep } from './utils'; import calculateNodeHeight, { calculateNodeStyling, } from '../src/calculateNodeHeight'; +import { focusTest, sleep } from './utils'; focusTest(TextArea); +let userAgentGetter; + +beforeEach(() => { + userAgentGetter = jest.spyOn(window.navigator, 'userAgent', 'get'); +}); + describe('TextArea', () => { const originalGetComputedStyle = window.getComputedStyle; beforeAll(() => { @@ -241,6 +246,9 @@ describe('TextArea', () => { }); it('scroll to bottom when autoSize', async () => { + userAgentGetter.mockReturnValue( + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Firefox/102.0', + ); const wrapper = mount(