summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorGravatar Federico Brigante <me@fregante.com> 2023-04-26 01:57:11 +0800
committerGravatar GitHub <noreply@github.com> 2023-04-26 01:57:11 +0800
commitd6139cfcb798cb1343f55efb835d9da9fcc0db76 (patch)
treeede0ae513b60e14284cc5bc413a090238d5a2e0e /source
parent98fb24e53704b436d68f254429885fb7bef09541 (diff)
downloadrefined-github-d6139cfcb798cb1343f55efb835d9da9fcc0db76.tar.gz
refined-github-d6139cfcb798cb1343f55efb835d9da9fcc0db76.tar.zst
refined-github-d6139cfcb798cb1343f55efb835d9da9fcc0db76.zip
Enable `fit-textareas` sooner, don't wait for focus (#6565)
Diffstat (limited to 'source')
-rw-r--r--source/features/fit-textareas.tsx41
1 files changed, 8 insertions, 33 deletions
diff --git a/source/features/fit-textareas.tsx b/source/features/fit-textareas.tsx
index 46ac127f..e4c5f206 100644
--- a/source/features/fit-textareas.tsx
+++ b/source/features/fit-textareas.tsx
@@ -1,41 +1,29 @@
import './fit-textareas.css';
-import select from 'select-dom';
-import delegate, {DelegateEvent} from 'delegate-it';
import {isSafari} from 'webext-detect-page';
import fitTextarea from 'fit-textarea';
import * as pageDetect from 'github-url-detection';
import features from '../feature-manager';
-import onPrMergePanelOpen from '../github-events/on-pr-merge-panel-open';
+import observe from '../helpers/selector-observer';
function inputListener({target}: Event): void {
fitTextarea(target as HTMLTextAreaElement);
}
-function watchTextarea(textarea: HTMLTextAreaElement): void {
- textarea.addEventListener('input', inputListener); // The user triggers `input` event
- textarea.addEventListener('change', inputListener); // File uploads trigger `change` events
+function watchTextarea(textarea: HTMLTextAreaElement, {signal}: SignalAsOptions): void {
+ textarea.addEventListener('input', inputListener, {signal}); // The user triggers `input` event
+ textarea.addEventListener('change', inputListener, {signal}); // File uploads trigger `change` events
+ textarea.form?.addEventListener('reset', inputListener, {signal});
fitTextarea(textarea);
// Disable constrained native feature
textarea.classList.replace('js-size-to-fit', 'rgh-fit-textareas');
}
-function focusListener({delegateTarget: textarea}: DelegateEvent<Event, HTMLTextAreaElement>): void {
- watchTextarea(textarea);
-}
-
-function fitPrCommitMessageBox(): void {
- watchTextarea(select('textarea[name="commit_message"]')!);
-}
-
function init(signal: AbortSignal): void {
- // Exclude PR review box because it's in a `position:fixed` container; The scroll HAS to appear within the fixed element.
- delegate('textarea:not(#pull_request_review_body)', 'focusin', focusListener, {signal});
-
- for (const textArea of select.all('textarea')) {
- watchTextarea(textArea);
- }
+ // Exclude PR review box because it's in a `position:fixed` container;
+ // The scroll HAS to appear within the fixed element.
+ observe('textarea:not(#pull_request_review_body)', watchTextarea, {signal});
}
void features.add(import.meta.url, {
@@ -45,18 +33,5 @@ void features.add(import.meta.url, {
exclude: [
isSafari,
],
- awaitDomReady: true, // TODO: Probably doesn't have to
init,
-}, {
- include: [
- pageDetect.isPRConversation,
- ],
- exclude: [
- isSafari,
- ],
- additionalListeners: [
- onPrMergePanelOpen,
- ],
- onlyAdditionalListeners: true,
- init: fitPrCommitMessageBox,
});