From b66d6878842aa7b7f2be8be4e9018644d4e6d936 Mon Sep 17 00:00:00 2001 From: Keith Cirkel Date: Wed, 23 Nov 2022 18:55:20 +0000 Subject: [PATCH] add JSX IntrinsicElement types --- .eslintrc.json | 6 ++++++ src/local-time-element-define.ts | 8 ++++++++ src/relative-time-element-define.ts | 8 ++++++++ src/time-ago-element-define.ts | 8 ++++++++ src/time-until-element-define.ts | 8 ++++++++ 5 files changed, 38 insertions(+) diff --git a/.eslintrc.json b/.eslintrc.json index 4b2d4d7..1184df5 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,6 +6,12 @@ "import/no-unresolved": "off" }, "overrides": [ + { + "files": "src/*-define.ts", + "rules": { + "@typescript-eslint/no-namespace": "off" + } + }, { "files": "test/**/*.js", "rules": { diff --git a/src/local-time-element-define.ts b/src/local-time-element-define.ts index 0ad5aaa..7846189 100644 --- a/src/local-time-element-define.ts +++ b/src/local-time-element-define.ts @@ -13,6 +13,9 @@ try { } } +type JSXBaseElement = JSX.IntrinsicElements extends {span: unknown} + ? JSX.IntrinsicElements['span'] + : Record declare global { interface Window { LocalTimeElement: typeof LocalTimeElement @@ -20,6 +23,11 @@ declare global { interface HTMLElementTagNameMap { 'local-time': LocalTimeElement } + namespace JSX { + interface IntrinsicElements { + ['local-time']: JSXBaseElement & Partial> + } + } } export default LocalTimeElement diff --git a/src/relative-time-element-define.ts b/src/relative-time-element-define.ts index 33137da..f627a0e 100644 --- a/src/relative-time-element-define.ts +++ b/src/relative-time-element-define.ts @@ -13,6 +13,9 @@ try { } } +type JSXBaseElement = JSX.IntrinsicElements extends {span: unknown} + ? JSX.IntrinsicElements['span'] + : Record declare global { interface Window { RelativeTimeElement: typeof RelativeTimeElement @@ -20,6 +23,11 @@ declare global { interface HTMLElementTagNameMap { 'relative-time': RelativeTimeElement } + namespace JSX { + interface IntrinsicElements { + ['relative-time']: JSXBaseElement & Partial> + } + } } export default RelativeTimeElement diff --git a/src/time-ago-element-define.ts b/src/time-ago-element-define.ts index b6993bc..dbc7e46 100644 --- a/src/time-ago-element-define.ts +++ b/src/time-ago-element-define.ts @@ -13,6 +13,9 @@ try { } } +type JSXBaseElement = JSX.IntrinsicElements extends {span: unknown} + ? JSX.IntrinsicElements['span'] + : Record declare global { interface Window { TimeAgoElement: typeof TimeAgoElement @@ -20,6 +23,11 @@ declare global { interface HTMLElementTagNameMap { 'time-ago': TimeAgoElement } + namespace JSX { + interface IntrinsicElements { + ['time-ago']: JSXBaseElement & Partial> + } + } } export default TimeAgoElement diff --git a/src/time-until-element-define.ts b/src/time-until-element-define.ts index 8222c17..1cf7a9f 100644 --- a/src/time-until-element-define.ts +++ b/src/time-until-element-define.ts @@ -13,6 +13,9 @@ try { } } +type JSXBaseElement = JSX.IntrinsicElements extends {span: unknown} + ? JSX.IntrinsicElements['span'] + : Record declare global { interface Window { TimeUntilElement: typeof TimeUntilElement @@ -20,6 +23,11 @@ declare global { interface HTMLElementTagNameMap { 'time-until': TimeUntilElement } + namespace JSX { + interface IntrinsicElements { + ['time-until']: JSXBaseElement & Partial> + } + } } export default TimeUntilElement