From b84bd7db63c29aede9a63940e2e7dbdc7eca28db Mon Sep 17 00:00:00 2001
From: Erika <3019731+Princesseuh@users.noreply.github.com>
Date: Thu, 7 Jul 2022 14:44:15 -0400
Subject: [PATCH] Improve JSX definitions (#3801)
---
.changeset/rare-news-confess.md | 5 +
packages/astro/astro-jsx.d.ts | 1336 ++++++++++++++++++++-----------
2 files changed, 861 insertions(+), 480 deletions(-)
create mode 100644 .changeset/rare-news-confess.md
diff --git a/.changeset/rare-news-confess.md b/.changeset/rare-news-confess.md
new file mode 100644
index 000000000..d28a7511d
--- /dev/null
+++ b/.changeset/rare-news-confess.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Update JSX definitions with element specific types and added some missing attributes
diff --git a/packages/astro/astro-jsx.d.ts b/packages/astro/astro-jsx.d.ts
index c9cfd9e17..81d3d1f92 100644
--- a/packages/astro/astro-jsx.d.ts
+++ b/packages/astro/astro-jsx.d.ts
@@ -1,10 +1,10 @@
///
/* eslint @typescript-eslint/no-unused-vars: off */
/**
- * Adapted from jsx-dom
- * @see https://github.com/proteriax/jsx-dom/blob/be06937ba16908d87bf8aa4372a3583133e02b8a/index.d.ts
+ * Adapted from babel-plugin-react-html-attrs's TypeScript definition from DefinitelyTyped.
+ * @see https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/babel-plugin-react-html-attrs/index.d.ts
*
- * which was adapted from
+ * and
*
* Adapted from React’s TypeScript definition from DefinitelyTyped.
* @see https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts
@@ -36,164 +36,141 @@ declare namespace astroHTML.JSX {
type AstroComponent = import('astro').AstroComponentFactory;
type Element = HTMLElement | AstroComponent;
- //
- // Event Handler Types
- // ----------------------------------------------------------------------
- type EventHandler = (
- event: E & { currentTarget: EventTarget & T }
- ) => any;
-
- type ClipboardEventHandler = EventHandler;
- type CompositionEventHandler = EventHandler;
- type DragEventHandler = EventHandler;
- type FocusEventHandler = EventHandler;
- type FormEventHandler = EventHandler;
- type ChangeEventHandler = EventHandler;
- type KeyboardEventHandler = EventHandler;
- type MouseEventHandler = EventHandler;
- type TouchEventHandler = EventHandler;
- type PointerEventHandler = EventHandler;
- type UIEventHandler = EventHandler;
- type WheelEventHandler = EventHandler;
- type AnimationEventHandler = EventHandler;
- type TransitionEventHandler = EventHandler;
- type MessageEventHandler = EventHandler;
-
- interface DOMAttributes {
+ interface DOMAttributes {
children?: Children;
// Clipboard Events
- oncopy?: ClipboardEventHandler | string | undefined | null;
- oncut?: ClipboardEventHandler | string | undefined | null;
- onpaste?: ClipboardEventHandler | string | undefined | null;
+ oncopy?: string | undefined | null;
+ oncut?: string | undefined | null;
+ onpaste?: string | undefined | null;
// Composition Events
- oncompositionend?: CompositionEventHandler | string | undefined | null;
- oncompositionstart?: CompositionEventHandler | string | undefined | null;
- oncompositionupdate?: CompositionEventHandler | string | undefined | null;
+ oncompositionend?: string | undefined | null;
+ oncompositionstart?: string | undefined | null;
+ oncompositionupdate?: string | undefined | null;
// Focus Events
- onfocus?: FocusEventHandler | string | undefined | null;
- onfocusin?: FocusEventHandler | string | undefined | null;
- onfocusout?: FocusEventHandler | string | undefined | null;
- onblur?: FocusEventHandler | string | undefined | null;
+ onfocus?: string | undefined | null;
+ onfocusin?: string | undefined | null;
+ onfocusout?: string | undefined | null;
+ onblur?: string | undefined | null;
// Form Events
- onchange?: FormEventHandler | string | undefined | null;
- oninput?: FormEventHandler | string | undefined | null;
- onreset?: FormEventHandler | string | undefined | null;
- onsubmit?: EventHandler | string | undefined | null;
- oninvalid?: EventHandler | string | undefined | null;
- onbeforeinput?: EventHandler | string | undefined | null;
+ onchange?: string | undefined | null;
+ oninput?: string | undefined | null;
+ onreset?: string | undefined | null;
+ onsubmit?: string | undefined | null;
+ oninvalid?: string | undefined | null;
+ onbeforeinput?: string | undefined | null;
// Image Events
- onload?: EventHandler | string | undefined | null;
- onerror?: EventHandler | string | undefined | null; // also a Media Event
+ onload?: string | undefined | null;
+ onerror?: string | undefined | null; // also a Media Event
// Detail Events
- ontoggle?: EventHandler | string | undefined | null;
+ ontoggle?: string | undefined | null;
// Keyboard Events
- onkeydown?: KeyboardEventHandler | string | undefined | null;
- onkeypress?: KeyboardEventHandler | string | undefined | null;
- onkeyup?: KeyboardEventHandler | string | undefined | null;
+ onkeydown?: string | undefined | null;
+ onkeypress?: string | undefined | null;
+ onkeyup?: string | undefined | null;
// Media Events
- onabort?: EventHandler | string | undefined | null;
- oncanplay?: EventHandler | string | undefined | null;
- oncanplaythrough?: EventHandler | string | undefined | null;
- oncuechange?: EventHandler | string | undefined | null;
- ondurationchange?: EventHandler | string | undefined | null;
- onemptied?: EventHandler | string | undefined | null;
- onencrypted?: EventHandler | string | undefined | null;
- onended?: EventHandler | string | undefined | null;
- onloadeddata?: EventHandler | string | undefined | null;
- onloadedmetadata?: EventHandler | string | undefined | null;
- onloadstart?: EventHandler | string | undefined | null;
- onpause?: EventHandler | string | undefined | null;
- onplay?: EventHandler | string | undefined | null;
- onplaying?: EventHandler | string | undefined | null;
- onprogress?: EventHandler | string | undefined | null;
- onratechange?: EventHandler | string | undefined | null;
- onseeked?: EventHandler | string | undefined | null;
- onseeking?: EventHandler | string | undefined | null;
- onstalled?: EventHandler | string | undefined | null;
- onsuspend?: EventHandler | string | undefined | null;
- ontimeupdate?: EventHandler | string | undefined | null;
- onvolumechange?: EventHandler | string | undefined | null;
- onwaiting?: EventHandler | string | undefined | null;
+ onabort?: string | undefined | null;
+ oncanplay?: string | undefined | null;
+ oncanplaythrough?: string | undefined | null;
+ oncuechange?: string | undefined | null;
+ ondurationchange?: string | undefined | null;
+ onemptied?: string | undefined | null;
+ onencrypted?: string | undefined | null;
+ onended?: string | undefined | null;
+ onloadeddata?: string | undefined | null;
+ onloadedmetadata?: string | undefined | null;
+ onloadstart?: string | undefined | null;
+ onpause?: string | undefined | null;
+ onplay?: string | undefined | null;
+ onplaying?: string | undefined | null;
+ onprogress?: string | undefined | null;
+ onratechange?: string | undefined | null;
+ onseeked?: string | undefined | null;
+ onseeking?: string | undefined | null;
+ onstalled?: string | undefined | null;
+ onsuspend?: string | undefined | null;
+ ontimeupdate?: string | undefined | null;
+ onvolumechange?: string | undefined | null;
+ onwaiting?: string | undefined | null;
// MouseEvents
- onauxclick?: MouseEventHandler | string | undefined | null;
- onclick?: MouseEventHandler | string | undefined | null;
- oncontextmenu?: MouseEventHandler | string | undefined | null;
- ondblclick?: MouseEventHandler | string | undefined | null;
- ondrag?: DragEventHandler | string | undefined | null;
- ondragend?: DragEventHandler | string | undefined | null;
- ondragenter?: DragEventHandler | string | undefined | null;
- ondragexit?: DragEventHandler | string | undefined | null;
- ondragleave?: DragEventHandler | string | undefined | null;
- ondragover?: DragEventHandler | string | undefined | null;
- ondragstart?: DragEventHandler | string | undefined | null;
- ondrop?: DragEventHandler | string | undefined | null;
- onmousedown?: MouseEventHandler | string | undefined | null;
- onmouseenter?: MouseEventHandler | string | undefined | null;
- onmouseleave?: MouseEventHandler | string | undefined | null;
- onmousemove?: MouseEventHandler | string | undefined | null;
- onmouseout?: MouseEventHandler | string | undefined | null;
- onmouseover?: MouseEventHandler | string | undefined | null;
- onmouseup?: MouseEventHandler | string | undefined | null;
+ onauxclick?: string | undefined | null;
+ onclick?: string | undefined | null;
+ oncontextmenu?: string | undefined | null;
+ ondblclick?: string | undefined | null;
+ ondrag?: string | undefined | null;
+ ondragend?: string | undefined | null;
+ ondragenter?: string | undefined | null;
+ ondragexit?: string | undefined | null;
+ ondragleave?: string | undefined | null;
+ ondragover?: string | undefined | null;
+ ondragstart?: string | undefined | null;
+ ondrop?: string | undefined | null;
+ onmousedown?: string | undefined | null;
+ onmouseenter?: string | undefined | null;
+ onmouseleave?: string | undefined | null;
+ onmousemove?: string | undefined | null;
+ onmouseout?: string | undefined | null;
+ onmouseover?: string | undefined | null;
+ onmouseup?: string | undefined | null;
// Selection Events
- onselect?: EventHandler | string | undefined | null;
- onselectionchange?: EventHandler | string | undefined | null;
- onselectstart?: EventHandler | string | undefined | null;
+ onselect?: string | undefined | null;
+ onselectionchange?: string | undefined | null;
+ onselectstart?: string | undefined | null;
// Touch Events
- ontouchcancel?: TouchEventHandler | string | undefined | null;
- ontouchend?: TouchEventHandler | string | undefined | null;
- ontouchmove?: TouchEventHandler | string | undefined | null;
- ontouchstart?: TouchEventHandler | string | undefined | null;
+ ontouchcancel?: string | undefined | null;
+ ontouchend?: string | undefined | null;
+ ontouchmove?: string | undefined | null;
+ ontouchstart?: string | undefined | null;
// Pointer Events
- ongotpointercapture?: PointerEventHandler | string | undefined | null;
- onpointercancel?: PointerEventHandler | string | undefined | null;
- onpointerdown?: PointerEventHandler | string | undefined | null;
- onpointerenter?: PointerEventHandler | string | undefined | null;
- onpointerleave?: PointerEventHandler | string | undefined | null;
- onpointermove?: PointerEventHandler | string | undefined | null;
- onpointerout?: PointerEventHandler | string | undefined | null;
- onpointerover?: PointerEventHandler | string | undefined | null;
- onpointerup?: PointerEventHandler | string | undefined | null;
- onlostpointercapture?: PointerEventHandler | string | undefined | null;
+ ongotpointercapture?: string | undefined | null;
+ onpointercancel?: string | undefined | null;
+ onpointerdown?: string | undefined | null;
+ onpointerenter?: string | undefined | null;
+ onpointerleave?: string | undefined | null;
+ onpointermove?: string | undefined | null;
+ onpointerout?: string | undefined | null;
+ onpointerover?: string | undefined | null;
+ onpointerup?: string | undefined | null;
+ onlostpointercapture?: string | undefined | null;
// UI Events
- onscroll?: UIEventHandler | string | undefined | null;
- onresize?: UIEventHandler | string | undefined | null;
+ onscroll?: string | undefined | null;
+ onresize?: string | undefined | null;
// Wheel Events
- onwheel?: WheelEventHandler | string | undefined | null;
+ onwheel?: string | undefined | null;
// Animation Events
- onanimationstart?: AnimationEventHandler | string | undefined | null;
- onanimationend?: AnimationEventHandler | string | undefined | null;
- onanimationiteration?: AnimationEventHandler | string | undefined | null;
+ onanimationstart?: string | undefined | null;
+ onanimationend?: string | undefined | null;
+ onanimationiteration?: string | undefined | null;
// Transition Events
- ontransitionstart?: TransitionEventHandler | string | undefined | null;
- ontransitionrun?: TransitionEventHandler | string | undefined | null;
- ontransitionend?: TransitionEventHandler | string | undefined | null;
- ontransitioncancel?: TransitionEventHandler | string | undefined | null;
+ ontransitionstart?: string | undefined | null;
+ ontransitionrun?: string | undefined | null;
+ ontransitionend?: string | undefined | null;
+ ontransitioncancel?: string | undefined | null;
// Message Events
- onmessage?: MessageEventHandler | string | undefined | null;
- onmessageerror?: MessageEventHandler | string | undefined | null;
+ onmessage?: string | undefined | null;
+ onmessageerror?: string | undefined | null;
// Global Events
- oncancel?: EventHandler | string | undefined | null;
- onclose?: EventHandler | string | undefined | null;
- onfullscreenchange?: EventHandler | string | undefined | null;
- onfullscreenerror?: EventHandler | string | undefined | null;
+ oncancel?: string | undefined | null;
+ onclose?: string | undefined | null;
+ onfullscreenchange?: string | undefined | null;
+ onfullscreenerror?: string | undefined | null;
}
// All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/
@@ -218,17 +195,17 @@ declare namespace astroHTML.JSX {
* Defines the total number of columns in a table, grid, or treegrid.
* @see aria-colindex.
*/
- 'aria-colcount'?: number | undefined | null;
+ 'aria-colcount'?: number | string | undefined | null;
/**
* Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.
* @see aria-colcount @see aria-colspan.
*/
- 'aria-colindex'?: number | undefined | null;
+ 'aria-colindex'?: number | string | undefined | null;
/**
* Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.
* @see aria-colindex @see aria-rowspan.
*/
- 'aria-colspan'?: number | undefined | null;
+ 'aria-colspan'?: number | string | undefined | null;
/**
* Identifies the element (or elements) whose contents or presence are controlled by the current element.
* @see aria-owns.
@@ -318,7 +295,7 @@ declare namespace astroHTML.JSX {
*/
'aria-labelledby'?: string | undefined | null;
/** Defines the hierarchical level of an element within a structure. */
- 'aria-level'?: number | undefined | null;
+ 'aria-level'?: number | string | undefined | null;
/** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */
'aria-live'?: 'off' | 'assertive' | 'polite' | undefined | null;
/** Indicates whether an element is modal when displayed. */
@@ -344,7 +321,7 @@ declare namespace astroHTML.JSX {
* Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
* @see aria-setsize.
*/
- 'aria-posinset'?: number | undefined | null;
+ 'aria-posinset'?: number | string | undefined | null;
/**
* Indicates the current "pressed" state of toggle buttons.
* @see aria-checked @see aria-selected.
@@ -380,17 +357,17 @@ declare namespace astroHTML.JSX {
* Defines the total number of rows in a table, grid, or treegrid.
* @see aria-rowindex.
*/
- 'aria-rowcount'?: number | undefined | null;
+ 'aria-rowcount'?: number | string | undefined | null;
/**
* Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.
* @see aria-rowcount @see aria-rowspan.
*/
- 'aria-rowindex'?: number | undefined | null;
+ 'aria-rowindex'?: number | string | undefined | null;
/**
* Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.
* @see aria-rowindex @see aria-colspan.
*/
- 'aria-rowspan'?: number | undefined | null;
+ 'aria-rowspan'?: number | string | undefined | null;
/**
* Indicates the current "selected" state of various widgets.
* @see aria-checked @see aria-pressed.
@@ -400,86 +377,103 @@ declare namespace astroHTML.JSX {
* Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
* @see aria-posinset.
*/
- 'aria-setsize'?: number | undefined | null;
+ 'aria-setsize'?: number | string | undefined | null;
/** Indicates if items in a table or grid are sorted in ascending or descending order. */
'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other' | undefined | null;
/** Defines the maximum allowed value for a range widget. */
- 'aria-valuemax'?: number | undefined | null;
+ 'aria-valuemax'?: number | string | undefined | null;
/** Defines the minimum allowed value for a range widget. */
- 'aria-valuemin'?: number | undefined | null;
+ 'aria-valuemin'?: number | string | undefined | null;
/**
* Defines the current value for a range widget.
* @see aria-valuetext.
*/
- 'aria-valuenow'?: number | undefined | null;
+ 'aria-valuenow'?: number | string | undefined | null;
/** Defines the human readable text alternative of aria-valuenow for a range widget. */
'aria-valuetext'?: string | undefined | null;
}
- interface HTMLAttributes
- extends AriaAttributes,
- DOMAttributes,
- AstroBuiltinAttributes {
+ // All the WAI-ARIA 1.1 role attribute values from https://www.w3.org/TR/wai-aria-1.1/#role_definitions
+ type AriaRole =
+ | 'alert'
+ | 'alertdialog'
+ | 'application'
+ | 'article'
+ | 'banner'
+ | 'button'
+ | 'cell'
+ | 'checkbox'
+ | 'columnheader'
+ | 'combobox'
+ | 'complementary'
+ | 'contentinfo'
+ | 'definition'
+ | 'dialog'
+ | 'directory'
+ | 'document'
+ | 'feed'
+ | 'figure'
+ | 'form'
+ | 'grid'
+ | 'gridcell'
+ | 'group'
+ | 'heading'
+ | 'img'
+ | 'link'
+ | 'list'
+ | 'listbox'
+ | 'listitem'
+ | 'log'
+ | 'main'
+ | 'marquee'
+ | 'math'
+ | 'menu'
+ | 'menubar'
+ | 'menuitem'
+ | 'menuitemcheckbox'
+ | 'menuitemradio'
+ | 'navigation'
+ | 'none'
+ | 'note'
+ | 'option'
+ | 'presentation'
+ | 'progressbar'
+ | 'radio'
+ | 'radiogroup'
+ | 'region'
+ | 'row'
+ | 'rowgroup'
+ | 'rowheader'
+ | 'scrollbar'
+ | 'search'
+ | 'searchbox'
+ | 'separator'
+ | 'slider'
+ | 'spinbutton'
+ | 'status'
+ | 'switch'
+ | 'tab'
+ | 'table'
+ | 'tablist'
+ | 'tabpanel'
+ | 'term'
+ | 'textbox'
+ | 'timer'
+ | 'toolbar'
+ | 'tooltip'
+ | 'tree'
+ | 'treegrid'
+ | 'treeitem';
+
+ interface HTMLAttributes extends AriaAttributes, DOMAttributes, AstroBuiltinAttributes {
// Standard HTML Attributes
- class?: string | undefined | null;
- dataset?: object | undefined | null; // eslint-disable-line
- accept?: string | undefined | null;
- acceptcharset?: string | undefined | null;
accesskey?: string | undefined | null;
- action?: string | undefined | null;
- allow?: string | undefined | null;
- allowfullscreen?: boolean | undefined | null;
- allowtransparency?: boolean | undefined | null;
- allowpaymentrequest?: boolean | undefined | null;
- alt?: string | undefined | null;
- as?: string | undefined | null;
- async?: boolean | undefined | null;
- autocomplete?: string | undefined | null;
- autofocus?: boolean | undefined | null;
- autoplay?: boolean | undefined | null;
- capture?: 'environment' | 'user' | boolean | undefined | null;
- cellpadding?: number | string | undefined | null;
- cellspacing?: number | string | undefined | null;
- charset?: string | undefined | null;
- challenge?: string | undefined | null;
- checked?: boolean | undefined | null;
- cite?: string | undefined | null;
- classid?: string | undefined | null;
- cols?: number | undefined | null;
- colspan?: number | undefined | null;
- content?: string | URL | undefined | null;
- contenteditable?: 'true' | 'false' | boolean | undefined | null;
-
- // Doesn't work when used as HTML attribute
- /**
- * Elements with the contenteditable attribute support innerHTML and textContent bindings.
- */
- innerHTML?: string | undefined | null;
- // Doesn't work when used as HTML attribute
- /**
- * Elements with the contenteditable attribute support innerHTML and textContent bindings.
- */
-
- textContent?: string | undefined | null;
-
- contextmenu?: string | undefined | null;
- controls?: boolean | undefined | null;
- coords?: string | undefined | null;
- crossorigin?: string | boolean | undefined | null;
- currenttime?: number | undefined | null;
- decoding?: 'async' | 'sync' | 'auto' | undefined | null;
- data?: string | undefined | null;
- datetime?: string | undefined | null;
- default?: boolean | undefined | null;
- defaultmuted?: boolean | undefined | null;
- defaultplaybackrate?: number | undefined | null;
- defer?: boolean | undefined | null;
+ autocapitalize?: string | undefined | null;
+ autofocus?: boolean | string | undefined | null;
+ class?: string | undefined | null;
+ contenteditable?: 'true' | 'false' | boolean | 'inherit' | string | undefined | null;
dir?: string | undefined | null;
- dirname?: string | undefined | null;
- disabled?: boolean | undefined | null;
- download?: any | undefined | null;
- draggable?: boolean | 'true' | 'false' | undefined | null;
- enctype?: string | undefined | null;
+ draggable?: 'true' | 'false' | boolean | undefined | null;
enterkeyhint?:
| 'enter'
| 'done'
@@ -490,107 +484,44 @@ declare namespace astroHTML.JSX {
| 'send'
| undefined
| null;
- for?: string | undefined | null;
- form?: string | undefined | null;
- formaction?: string | undefined | null;
- formenctype?: string | undefined | null;
- formmethod?: string | undefined | null;
- formnovalidate?: boolean | undefined | null;
- formtarget?: string | undefined | null;
- frameborder?: number | string | undefined | null;
- headers?: string | undefined | null;
- height?: number | string | undefined | null;
- hidden?: boolean | undefined | null;
- high?: number | undefined | null;
- href?: string | URL | undefined | null;
- hreflang?: string | undefined | null;
- htmlfor?: string | undefined | null;
- httpequiv?: string | undefined | null;
+ hidden?: boolean | string | undefined | null;
id?: string | undefined | null;
- inputmode?: string | undefined | null;
- integrity?: string | undefined | null;
+ inert?: boolean | string | undefined | null;
+ inputmode?:
+ | 'none'
+ | 'text'
+ | 'tel'
+ | 'url'
+ | 'email'
+ | 'numeric'
+ | 'decimal'
+ | 'search'
+ | undefined
+ | null;
is?: string | undefined | null;
- ismap?: boolean | undefined | null;
- keyparams?: string | undefined | null;
- keytype?: string | undefined | null;
- kind?: string | undefined | null;
- label?: string | undefined | null;
+ itemid?: string | undefined | null;
+ itemprop?: string | undefined | null;
+ itemref?: string | undefined | null;
+ itemscope?: boolean | string | undefined | null;
+ itemtype?: string | undefined | null;
lang?: string | undefined | null;
- list?: string | undefined | null;
- loading?: string | undefined | null;
- loop?: boolean | undefined | null;
- low?: number | undefined | null;
- manifest?: string | undefined | null;
- marginheight?: number | undefined | null;
- marginwidth?: number | undefined | null;
- max?: number | string | undefined | null;
- maxlength?: number | undefined | null;
- media?: string | undefined | null;
- mediagroup?: string | undefined | null;
- method?: string | undefined | null;
- min?: number | string | undefined | null;
- minlength?: number | undefined | null;
- multiple?: boolean | undefined | null;
- muted?: boolean | undefined | null;
- name?: string | undefined | null;
- nonce?: string | undefined | null;
- novalidate?: boolean | undefined | null;
- open?: boolean | undefined | null;
- optimum?: number | undefined | null;
- part?: string | undefined | null;
- pattern?: string | undefined | null;
- placeholder?: string | undefined | null;
- playsinline?: boolean | undefined | null;
- poster?: string | undefined | null;
- preload?: string | undefined | null;
- radiogroup?: string | undefined | null;
- readonly?: boolean | undefined | null;
- referrerpolicy?: string | undefined | null;
- rel?: string | undefined | null;
- required?: boolean | undefined | null;
- reversed?: boolean | undefined | null;
- role?: string | undefined | null;
- rows?: number | undefined | null;
- rowspan?: number | undefined | null;
- sandbox?: string | undefined | null;
- scope?: string | undefined | null;
- scoped?: boolean | undefined | null;
- scrolling?: string | undefined | null;
- seamless?: boolean | undefined | null;
- selected?: boolean | undefined | null;
- shape?: string | undefined | null;
- size?: number | undefined | null;
- sizes?: string | undefined | null;
slot?: string | undefined | null;
- span?: number | undefined | null;
- spellcheck?: boolean | 'true' | 'false' | undefined | null;
- src?: string | undefined | null;
- srcdoc?: string | undefined | null;
- srclang?: string | undefined | null;
- srcset?: string | undefined | null;
- start?: number | undefined | null;
- step?: number | string | undefined | null;
+ spellcheck?: 'true' | 'false' | boolean | undefined | null;
style?: string | undefined | null;
- summary?: string | undefined | null;
- tabindex?: number | undefined | null;
- target?: string | undefined | null;
+ tabindex?: number | string | undefined | null;
title?: string | undefined | null;
- translate?: 'yes' | 'no' | '' | undefined | null;
- type?: string | undefined | null;
- usemap?: string | undefined | null;
- value?: any | undefined | null;
- /**
- * a value between 0 and 1
- */
- volume?: number | undefined | null;
- width?: number | string | undefined | null;
- wmode?: string | undefined | null;
- wrap?: string | undefined | null;
+ translate?: 'yes' | 'no' | undefined | null;
+
+ // ,