diff --git a/packages/inferno/__tests__/types.spec.tsx b/packages/inferno/__tests__/types.spec.tsx
index e0089f0d5..b67b9680e 100644
--- a/packages/inferno/__tests__/types.spec.tsx
+++ b/packages/inferno/__tests__/types.spec.tsx
@@ -192,5 +192,13 @@ describe('top level context', () => {
container
);
});
+
+ it('Should allow null for attributes', function () {
+ const row =
;
+ const aria = ;
+
+ expect(row).not.toBeNull();
+ expect(aria).not.toBeNull();
+ });
})
});
diff --git a/packages/inferno/src/core/types.ts b/packages/inferno/src/core/types.ts
index f694ca212..d1dac8014 100644
--- a/packages/inferno/src/core/types.ts
+++ b/packages/inferno/src/core/types.ts
@@ -421,142 +421,142 @@ export declare namespace Inferno {
// All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/
interface AriaAttributes {
/** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */
- 'aria-activedescendant'?: string | undefined;
+ 'aria-activedescendant'?: string | null | undefined;
/** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */
- 'aria-atomic'?: Booleanish | undefined;
+ 'aria-atomic'?: Booleanish | null | undefined;
/**
* Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be
* presented if they are made.
*/
- 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both' | undefined;
+ 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both' | null | undefined;
/** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */
- 'aria-busy'?: Booleanish | undefined;
+ 'aria-busy'?: Booleanish | null | undefined;
/**
* Indicates the current "checked" state of checkboxes, radio buttons, and other widgets.
* @see aria-pressed @see aria-selected.
*/
- 'aria-checked'?: boolean | 'false' | 'mixed' | 'true' | undefined;
+ 'aria-checked'?: boolean | 'false' | 'mixed' | 'true' | null | undefined;
/**
* Defines the total number of columns in a table, grid, or treegrid.
* @see aria-colindex.
*/
- 'aria-colcount'?: number | undefined;
+ 'aria-colcount'?: number | null | undefined;
/**
* 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;
+ 'aria-colindex'?: number | null | undefined;
/**
* 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;
+ 'aria-colspan'?: number | null | undefined;
/**
* Identifies the element (or elements) whose contents or presence are controlled by the current element.
* @see aria-owns.
*/
- 'aria-controls'?: string | undefined;
+ 'aria-controls'?: string | null | undefined;
/** Indicates the element that represents the current item within a container or set of related elements. */
- 'aria-current'?: boolean | 'false' | 'true' | 'page' | 'step' | 'location' | 'date' | 'time' | undefined;
+ 'aria-current'?: boolean | 'false' | 'true' | 'page' | 'step' | 'location' | 'date' | 'time' | null | undefined;
/**
* Identifies the element (or elements) that describes the object.
* @see aria-labelledby
*/
- 'aria-describedby'?: string | undefined;
+ 'aria-describedby'?: string | null | undefined;
/**
* Identifies the element that provides a detailed, extended description for the object.
* @see aria-describedby.
*/
- 'aria-details'?: string | undefined;
+ 'aria-details'?: string | null | undefined;
/**
* Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
* @see aria-hidden @see aria-readonly.
*/
- 'aria-disabled'?: Booleanish | undefined;
+ 'aria-disabled'?: Booleanish | null | undefined;
/**
* Indicates what functions can be performed when a dragged object is released on the drop target.
* @deprecated in ARIA 1.1
*/
- 'aria-dropeffect'?: 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined;
+ 'aria-dropeffect'?: 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | null | undefined;
/**
* Identifies the element that provides an error message for the object.
* @see aria-invalid @see aria-describedby.
*/
- 'aria-errormessage'?: string | undefined;
+ 'aria-errormessage'?: string | null | undefined;
/** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */
- 'aria-expanded'?: Booleanish | undefined;
+ 'aria-expanded'?: Booleanish | null | undefined;
/**
* Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion,
* allows assistive technology to override the general default of reading in document source order.
*/
- 'aria-flowto'?: string | undefined;
+ 'aria-flowto'?: string | null | undefined;
/**
* Indicates an element's "grabbed" state in a drag-and-drop operation.
* @deprecated in ARIA 1.1
*/
- 'aria-grabbed'?: Booleanish | undefined;
+ 'aria-grabbed'?: Booleanish | null | undefined;
/** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */
- 'aria-haspopup'?: boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | undefined;
+ 'aria-haspopup'?: boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | null | undefined;
/**
* Indicates whether the element is exposed to an accessibility API.
* @see aria-disabled.
*/
- 'aria-hidden'?: Booleanish | undefined;
+ 'aria-hidden'?: Booleanish | null | undefined;
/**
* Indicates the entered value does not conform to the format expected by the application.
* @see aria-errormessage.
*/
- 'aria-invalid'?: boolean | 'false' | 'true' | 'grammar' | 'spelling' | undefined;
+ 'aria-invalid'?: boolean | 'false' | 'true' | 'grammar' | 'spelling' | null | undefined;
/** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */
- 'aria-keyshortcuts'?: string | undefined;
+ 'aria-keyshortcuts'?: string | null | undefined;
/**
* Defines a string value that labels the current element.
* @see aria-labelledby.
*/
- 'aria-label'?: string | undefined;
+ 'aria-label'?: string | null | undefined;
/**
* Identifies the element (or elements) that labels the current element.
* @see aria-describedby.
*/
- 'aria-labelledby'?: string | undefined;
+ 'aria-labelledby'?: string | null | undefined;
/** Defines the hierarchical level of an element within a structure. */
- 'aria-level'?: number | undefined;
+ 'aria-level'?: number | null | undefined;
/** 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;
+ 'aria-live'?: 'off' | 'assertive' | 'polite' | null | undefined;
/** Indicates whether an element is modal when displayed. */
- 'aria-modal'?: Booleanish | undefined;
+ 'aria-modal'?: Booleanish | null | undefined;
/** Indicates whether a text box accepts multiple lines of input or only a single line. */
- 'aria-multiline'?: Booleanish | undefined;
+ 'aria-multiline'?: Booleanish | null | undefined;
/** Indicates that the user may select more than one item from the current selectable descendants. */
- 'aria-multiselectable'?: Booleanish | undefined;
+ 'aria-multiselectable'?: Booleanish | null | undefined;
/** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */
- 'aria-orientation'?: 'horizontal' | 'vertical' | undefined;
+ 'aria-orientation'?: 'horizontal' | 'vertical' | null | undefined;
/**
* Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship
* between DOM elements where the DOM hierarchy cannot be used to represent the relationship.
* @see aria-controls.
*/
- 'aria-owns'?: string | undefined;
+ 'aria-owns'?: string | null | undefined;
/**
* Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.
* A hint could be a sample value or a brief description of the expected format.
*/
- 'aria-placeholder'?: string | undefined;
+ 'aria-placeholder'?: string | null | undefined;
/**
* 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;
+ 'aria-posinset'?: number | null | undefined;
/**
* Indicates the current "pressed" state of toggle buttons.
* @see aria-checked @see aria-selected.
*/
- 'aria-pressed'?: boolean | 'false' | 'mixed' | 'true' | undefined;
+ 'aria-pressed'?: boolean | 'false' | 'mixed' | 'true' | null | undefined;
/**
* Indicates that the element is not editable, but is otherwise operable.
* @see aria-disabled.
*/
- 'aria-readonly'?: Booleanish | undefined;
+ 'aria-readonly'?: Booleanish | null | undefined;
/**
* Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.
* @see aria-atomic.
@@ -575,47 +575,47 @@ export declare namespace Inferno {
| null
| undefined;
/** Indicates that user input is required on the element before a form may be submitted. */
- 'aria-required'?: Booleanish | undefined;
+ 'aria-required'?: Booleanish | null | undefined;
/** Defines a human-readable, author-localized description for the role of an element. */
- 'aria-roledescription'?: string | undefined;
+ 'aria-roledescription'?: string | null | undefined;
/**
* Defines the total number of rows in a table, grid, or treegrid.
* @see aria-rowindex.
*/
- 'aria-rowcount'?: number | undefined;
+ 'aria-rowcount'?: number | null | undefined;
/**
* 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;
+ 'aria-rowindex'?: number | null | undefined;
/**
* 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;
+ 'aria-rowspan'?: number | null | undefined;
/**
* Indicates the current "selected" state of various widgets.
* @see aria-checked @see aria-pressed.
*/
- 'aria-selected'?: Booleanish | undefined;
+ 'aria-selected'?: Booleanish | null | undefined;
/**
* 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;
+ 'aria-setsize'?: number | null | undefined;
/** Indicates if items in a table or grid are sorted in ascending or descending order. */
- 'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other' | undefined;
+ 'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other' | null | undefined;
/** Defines the maximum allowed value for a range widget. */
- 'aria-valuemax'?: number | undefined;
+ 'aria-valuemax'?: number | null | undefined;
/** Defines the minimum allowed value for a range widget. */
- 'aria-valuemin'?: number | undefined;
+ 'aria-valuemin'?: number | null | undefined;
/**
* Defines the current value for a range widget.
* @see aria-valuetext.
*/
- 'aria-valuenow'?: number | undefined;
+ 'aria-valuenow'?: number | null | undefined;
/** Defines the human-readable text alternative of aria-valuenow for a range widget. */
- 'aria-valuetext'?: string | undefined;
+ 'aria-valuetext'?: string | null | undefined;
}
// All the WAI-ARIA 1.1 role attribute values from https://www.w3.org/TR/wai-aria-1.1/#role_definitions
@@ -693,179 +693,179 @@ export declare namespace Inferno {
interface HTMLAttributes extends AriaAttributes, DOMAttributes {
// Inferno-specific Attributes
- class?: string | undefined;
- defaultChecked?: boolean | undefined;
- defaultValue?: string | number | ReadonlyArray | undefined;
+ class?: string | null | undefined;
+ defaultChecked?: boolean | null | undefined;
+ defaultValue?: string | number | ReadonlyArray | null | undefined;
// Standard HTML Attributes
- accessKey?: string | undefined;
- className?: string | undefined;
- contentEditable?: Booleanish | 'inherit' | undefined;
- contextMenu?: string | undefined;
- dir?: string | undefined;
- draggable?: Booleanish | undefined;
- hidden?: boolean | undefined;
- id?: string | undefined;
- lang?: string | undefined;
- placeholder?: string | undefined;
- slot?: string | undefined;
- spellCheck?: Booleanish | undefined;
+ accessKey?: string | null | undefined;
+ className?: string | null | undefined;
+ contentEditable?: Booleanish | 'inherit' | null | undefined;
+ contextMenu?: string | null | undefined;
+ dir?: string | null | undefined;
+ draggable?: Booleanish | null | undefined;
+ hidden?: boolean | null | undefined;
+ id?: string | null | undefined;
+ lang?: string | null | undefined;
+ placeholder?: string | null | undefined;
+ slot?: string | null | undefined;
+ spellCheck?: Booleanish | null | undefined;
style?: PropertiesHyphen | string | null | undefined;
- tabIndex?: number | undefined;
- title?: string | undefined;
- translate?: 'yes' | 'no' | undefined;
+ tabIndex?: number | null | undefined;
+ title?: string | null | undefined;
+ translate?: 'yes' | 'no' | null | undefined;
// Unknown
- radioGroup?: string | undefined; // ,