@anypoint-web-components/anypoint-radio-button
Version:
Anypoint styled radio button
115 lines (100 loc) • 3.59 kB
TypeScript
import { LitElement, TemplateResult, CSSResult } from 'lit-element';
import { AnypointMenuMixin } from '@anypoint-web-components/anypoint-menu-mixin';
/**
* A web component that groups custom radio buttons and handles selection inside
* the group.
*
* Requirements for children:
* - must have role="radio" attribute
* - must have name attribute
* - radio state change must be notified via `change` event.
*
* Radio buttons with the same name inside their group will have single selection.
* This means when selecting a radio button any other currently selected button
* will be deselected.
*
* Also. when initializing the component, only last selected component keeps the
* selection.
* When new checked radio button is inserted into the group the selection is passed to the newly
* arriving element.
*
* This behavior is consistent with native DOM API.
*
* The group element exposes `selected` property that holds a reference to
* currently selected radio button.
*
* Example
*
* ```
* <anypoint-radio-group>
* <anypoint-radio-button name="option"></anypoint-radio-button>
* <other-control role="button" name="option" checked></other-control>
* </anypoint-radio-group>
* ```
* @deprecated Migrate the `@anypoint-web-components/awc`
*/
export declare class AnypointRadioGroupElement extends AnypointMenuMixin(LitElement) {
onselect: EventListener;
createRenderRoot(): AnypointRadioGroupElement;
/**
* List of radio button nodes.
*/
readonly elements: NodeList;
connectedCallback(): void;
/**
* Function that manages attribute change.
* If the changed attribute is `role` with value `radio` then the node is processed
* as a button and is added or removed from collection.
* @param record A MutationRecord received from MutationObserver callback.
*/
_processNodeAttributeChange(record: MutationRecord): void;
/**
* Adds `change` event listener to detected radio buttons.
* A button is considered as a radio button when its `role` is `radio`.
*
* @param nodes List of nodes to process.
*/
_processAddedNodes(nodes: HTMLElement[]): void;
/**
* Removes event listeners and possibly clears `selected` when removing nodes from
* light DOM.
* @param nodes Nodes to process
*/
_processRemovedNodes(nodes: NodeList): void;
/**
* A function to be called when a node from the light DOM has been removed.
* It clears previously attached listeners and selection if passed node is
* currently selected node.
* @param node Removed node
*/
_nodeRemoved(node: Node): void;
/**
* Overrides `AnypointMenuMixin._onKeydown`. Adds right / left arrows support.
*/
_onKeydown(e: KeyboardEvent): void;
/**
* Overrides `AnypointSelectableMixin._applySelection` to manage item's checked
* state.
* @param item Selected / deselected item.
* @param isSelected True if the item is selected
*/
_applySelection(item: HTMLElement, isSelected: boolean): void;
/**
* Ensures that the last child element is checked in the group.
*/
_ensureSingleSelection(): void;
/**
* Overrides `AnypointSelectableMixin._mutationHandler`.
* Processes dynamically added nodes and updates selection if needed.
* @params mutationsList A list of changes record
*/
_mutationHandler(mutationsList: MutationRecord[]): void;
/**
* Overrides `AnypointSelectableMixin._observeItems` to include subtree.
*/
_observeItems(): MutationObserver;
/**
* Disables children when disabled state changes
*/
_disabledChanged(disabled: boolean): void;
}