diff --git a/adev/src/content/aria/_build-info.json b/adev/src/content/aria/_build-info.json index 54c723b3136..27f7b0285cd 100644 --- a/adev/src/content/aria/_build-info.json +++ b/adev/src/content/aria/_build-info.json @@ -1,4 +1,4 @@ { "branchName": "refs/heads/main", - "sha": "d6e798ec341c4951dcbbeeea2d8a5f00d3147cbf" + "sha": "16b1a95b15f329bbd575acb64d874d77ba19bba5" } \ No newline at end of file diff --git a/adev/src/content/aria/aria-combobox.json b/adev/src/content/aria/aria-combobox.json index a06dad00073..a585240a4c3 100755 --- a/adev/src/content/aria/aria-combobox.json +++ b/adev/src/content/aria/aria-combobox.json @@ -5,44 +5,7 @@ "normalizedModuleName": "angular_aria_combobox", "entries": [ { - "name": "ComboboxPopupContainer", - "isAbstract": false, - "entryType": "undecorated_class", - "members": [], - "generics": [], - "description": "A structural directive that marks the `ng-template` to be used as the popup\nfor a combobox. This content is conditionally rendered.\n\nThe content of the popup can be a `ngListbox`, `ngTree`, or `role=\"dialog\"`, allowing for\nflexible and complex combobox implementations. The consumer is responsible for\nimplementing the filtering logic based on the `ngComboboxInput`'s value.\n\n```html\n\n
\n \n
\n
\n```\n\nWhen using CdkOverlay, this directive can be replaced by `cdkConnectedOverlay`.\n\n```html\n\n
\n \n
\n\n```", - "jsdocTags": [ - { - "name": "developerPreview", - "comment": "21.0" - }, - { - "name": "see", - "comment": "[Combobox](guide/aria/combobox)" - }, - { - "name": "see", - "comment": "[Select](guide/aria/select)" - }, - { - "name": "see", - "comment": "[Multiselect](guide/aria/multiselect)" - }, - { - "name": "see", - "comment": "[Autocomplete](guide/aria/autocomplete)" - } - ], - "rawComment": "/**\n * A structural directive that marks the `ng-template` to be used as the popup\n * for a combobox. This content is conditionally rendered.\n *\n * The content of the popup can be a `ngListbox`, `ngTree`, or `role=\"dialog\"`, allowing for\n * flexible and complex combobox implementations. The consumer is responsible for\n * implementing the filtering logic based on the `ngComboboxInput`'s value.\n *\n * ```html\n * \n *
\n * \n *
\n *
\n * ```\n *\n * When using CdkOverlay, this directive can be replaced by `cdkConnectedOverlay`.\n *\n * ```html\n * \n *
\n * \n *
\n * \n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Combobox](guide/aria/combobox)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n * @see [Autocomplete](guide/aria/autocomplete)\n */", - "implements": [], - "source": { - "filePath": "src/aria/combobox/combobox-popup-container.ts", - "startLine": 47, - "endLine": 52 - } - }, - { - "name": "ComboboxInput", + "name": "ComboboxWidget", "isAbstract": false, "entryType": "directive", "members": [ @@ -53,178 +16,37 @@ "memberTags": [ "readonly" ], - "description": "A reference to the input element.", + "description": "A reference to the popup widget element.", "jsdocTags": [] }, { - "name": "combobox", - "type": "Combobox", + "name": "popupId", + "type": "WritableSignal", "memberType": "property", "memberTags": [ "readonly" ], - "description": "The combobox that the input belongs to.", + "description": "The ID of the popup widget.", "jsdocTags": [] }, { - "name": "value", - "type": "ModelSignal", - "memberType": "property", - "memberTags": [ - "readonly", - "input", - "output" - ], - "description": "The value of the input.", - "jsdocTags": [], - "inputAlias": "value", - "isRequiredInput": false, - "outputAlias": "valueChange" - } - ], - "generics": [], - "description": "An input that is part of a combobox. It is responsible for displaying the\ncurrent value and handling user input for filtering and selection.\n\nThis directive should be applied to an `` element within an `ngCombobox`\ncontainer. It automatically handles keyboard interactions, such as opening the\npopup and navigating through the options.\n\n```html\n\n```", - "jsdocTags": [ - { - "name": "developerPreview", - "comment": "21.0" - }, - { - "name": "see", - "comment": "[Combobox](guide/aria/combobox)" - }, - { - "name": "see", - "comment": "[Select](guide/aria/select)" - }, - { - "name": "see", - "comment": "[Multiselect](guide/aria/multiselect)" - }, - { - "name": "see", - "comment": "[Autocomplete](guide/aria/autocomplete)" - } - ], - "rawComment": "/**\n * An input that is part of a combobox. It is responsible for displaying the\n * current value and handling user input for filtering and selection.\n *\n * This directive should be applied to an `` element within an `ngCombobox`\n * container. It automatically handles keyboard interactions, such as opening the\n * popup and navigating through the options.\n *\n * ```html\n * \n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Combobox](guide/aria/combobox)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n * @see [Autocomplete](guide/aria/autocomplete)\n */", - "implements": [], - "isStandalone": true, - "selector": "input[ngComboboxInput]", - "exportAs": [ - "ngComboboxInput" - ], - "aliases": [ - "ngComboboxInput" - ], - "source": { - "filePath": "src/aria/combobox/combobox-input.ts", - "startLine": 44, - "endLine": 92 - } - }, - { - "name": "ComboboxPopup", - "isAbstract": false, - "entryType": "directive", - "members": [ - { - "name": "combobox", - "type": "Combobox | null", - "memberType": "property", - "memberTags": [ - "readonly" - ], - "description": "The combobox that the popup belongs to.", - "jsdocTags": [] - } - ], - "generics": [ - { - "name": "V" - } - ], - "description": "Identifies an element as a popup for an `ngCombobox`.\n\nThis directive acts as a bridge, allowing the `ngCombobox` to discover and interact\nwith the underlying control (e.g., `ngListbox`, `ngTree`, or `ngComboboxDialog`) that\nmanages the options. It's primarily used as a host directive and is responsible for\nexposing the popup's control pattern to the parent combobox.", - "jsdocTags": [ - { - "name": "developerPreview", - "comment": "21.0" - }, - { - "name": "see", - "comment": "[Combobox](guide/aria/combobox)" - }, - { - "name": "see", - "comment": "[Select](guide/aria/select)" - }, - { - "name": "see", - "comment": "[Multiselect](guide/aria/multiselect)" - }, - { - "name": "see", - "comment": "[Autocomplete](guide/aria/autocomplete)" - } - ], - "rawComment": "/**\n * Identifies an element as a popup for an `ngCombobox`.\n *\n * This directive acts as a bridge, allowing the `ngCombobox` to discover and interact\n * with the underlying control (e.g., `ngListbox`, `ngTree`, or `ngComboboxDialog`) that\n * manages the options. It's primarily used as a host directive and is responsible for\n * exposing the popup's control pattern to the parent combobox.\n *\n * @developerPreview 21.0\n *\n * @see [Combobox](guide/aria/combobox)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n * @see [Autocomplete](guide/aria/autocomplete)\n */", - "implements": [], - "isStandalone": true, - "selector": "[ngComboboxPopup]", - "exportAs": [ - "ngComboboxPopup" - ], - "aliases": [ - "ngComboboxPopup" - ], - "source": { - "filePath": "/src/aria/combobox/combobox-popup.ts", - "startLine": 29, - "endLine": 44 - } - }, - { - "name": "ComboboxDialog", - "isAbstract": false, - "entryType": "directive", - "members": [ - { - "name": "element", - "type": "HTMLDialogElement", - "memberType": "property", - "memberTags": [ - "readonly" - ], - "description": "A reference to the dialog element.", - "jsdocTags": [] - }, - { - "name": "combobox", - "type": "Combobox", - "memberType": "property", - "memberTags": [ - "readonly" - ], - "description": "The combobox that the dialog belongs to.", - "jsdocTags": [] - }, - { - "name": "id", - "type": "InputSignal", + "name": "activeDescendant", + "type": "InputSignal", "memberType": "property", "memberTags": [ "readonly", "input" ], - "description": "The unique identifier for the trigger.", + "description": "The ID of the active descendant in the widget.", "jsdocTags": [], - "inputAlias": "id", + "inputAlias": "activeDescendant", "isRequiredInput": false }, { - "name": "close", + "name": "ngOnInit", "signatures": [ { - "name": "close", + "name": "ngOnInit", "entryType": "function", "description": "", "generics": [], @@ -240,7 +62,272 @@ "isNewType": false, "returnType": "void", "generics": [], - "name": "close", + "name": "ngOnInit", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, + { + "name": "onFocusin", + "signatures": [ + { + "name": "onFocusin", + "entryType": "function", + "description": "Handles focus in events for the widget.", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "/** Handles focus in events for the widget. */", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "onFocusin", + "description": "Handles focus in events for the widget.", + "entryType": "function", + "jsdocTags": [], + "rawComment": "/** Handles focus in events for the widget. */" + }, + "entryType": "function", + "description": "Handles focus in events for the widget.", + "jsdocTags": [], + "rawComment": "/** Handles focus in events for the widget. */", + "memberType": "method", + "memberTags": [] + }, + { + "name": "onFocusout", + "signatures": [ + { + "name": "onFocusout", + "entryType": "function", + "description": "Handles focus out events for the widget.", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [ + { + "name": "event", + "description": "", + "type": "FocusEvent", + "isOptional": false, + "isRestParam": false + } + ], + "rawComment": "/** Handles focus out events for the widget. */", + "returnType": "void" + } + ], + "implementation": { + "params": [ + { + "name": "event", + "description": "", + "type": "FocusEvent", + "isOptional": false, + "isRestParam": false + } + ], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "onFocusout", + "description": "Handles focus out events for the widget.", + "entryType": "function", + "jsdocTags": [], + "rawComment": "/** Handles focus out events for the widget. */" + }, + "entryType": "function", + "description": "Handles focus out events for the widget.", + "jsdocTags": [], + "rawComment": "/** Handles focus out events for the widget. */", + "memberType": "method", + "memberTags": [] + } + ], + "generics": [], + "description": "Identifies an element as a widget within a combobox popup.\n\nThis directive should be applied to the element that contains the options or content\nof the popup. It handles the communication of ID and active descendant information\nto the combobox.", + "jsdocTags": [], + "rawComment": "/**\n * Identifies an element as a widget within a combobox popup.\n *\n * This directive should be applied to the element that contains the options or content\n * of the popup. It handles the communication of ID and active descendant information\n * to the combobox.\n */", + "implements": [ + "OnInit", + "OnDestroy" + ], + "isStandalone": true, + "selector": "[ngComboboxWidget]", + "exportAs": [ + "ngComboboxWidget" + ], + "aliases": [ + "ngComboboxWidget" + ], + "source": { + "filePath": "/src/aria/combobox/combobox-widget.ts", + "startLine": 19, + "endLine": 78 + } + }, + { + "name": "ComboboxPopup", + "isAbstract": false, + "entryType": "directive", + "members": [ + { + "name": "combobox", + "type": "InputSignal", + "memberType": "property", + "memberTags": [ + "readonly", + "input" + ], + "description": "The combobox that the popup belongs to.", + "jsdocTags": [], + "inputAlias": "combobox", + "isRequiredInput": true + }, + { + "name": "controlTarget", + "type": "Signal", + "memberType": "property", + "memberTags": [ + "readonly" + ], + "description": "The element that serves as the control target for the popup.", + "jsdocTags": [] + }, + { + "name": "popupId", + "type": "Signal", + "memberType": "property", + "memberTags": [ + "readonly" + ], + "description": "The ID of the popup.", + "jsdocTags": [] + }, + { + "name": "activeDescendant", + "type": "Signal", + "memberType": "property", + "memberTags": [ + "readonly" + ], + "description": "The ID of the active descendant in the popup.", + "jsdocTags": [] + }, + { + "name": "popupType", + "type": "InputSignal<\"listbox\" | \"tree\" | \"grid\" | \"dialog\">", + "memberType": "property", + "memberTags": [ + "readonly", + "input" + ], + "description": "The type of the popup (e.g., listbox, tree, grid, dialog).", + "jsdocTags": [], + "inputAlias": "popupType", + "isRequiredInput": false + }, + { + "name": "ngOnInit", + "signatures": [ + { + "name": "ngOnInit", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnInit", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", "description": "", "entryType": "function", "jsdocTags": [], @@ -255,61 +342,32 @@ } ], "generics": [], - "description": "Integrates a native `` element with the combobox, allowing for\na modal or non-modal popup experience. It handles the opening and closing of the dialog\nbased on the combobox's expanded state.\n\n```html\n\n \n \n \n\n```", - "jsdocTags": [ - { - "name": "developerPreview", - "comment": "21.0" - }, - { - "name": "see", - "comment": "[Combobox](guide/aria/combobox)" - }, - { - "name": "see", - "comment": "[Select](guide/aria/select)" - }, - { - "name": "see", - "comment": "[Multiselect](guide/aria/multiselect)" - }, - { - "name": "see", - "comment": "[Autocomplete](guide/aria/autocomplete)" - } + "description": "A structural directive that marks the `ng-template` to be used as the popup\nfor a combobox. This content is conditionally rendered.\n\nThe content of the popup can be any element with the `ngComboboxWidget` directive.\n\n```html\n\n
\n \n
\n
\n```", + "jsdocTags": [], + "rawComment": "/**\n * A structural directive that marks the `ng-template` to be used as the popup\n * for a combobox. This content is conditionally rendered.\n *\n * The content of the popup can be any element with the `ngComboboxWidget` directive.\n *\n * ```html\n * \n *
\n * \n *
\n *
\n * ```\n */", + "implements": [ + "OnInit", + "OnDestroy" ], - "rawComment": "/**\n * Integrates a native `` element with the combobox, allowing for\n * a modal or non-modal popup experience. It handles the opening and closing of the dialog\n * based on the combobox's expanded state.\n *\n * ```html\n * \n * \n * \n * \n * \n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Combobox](guide/aria/combobox)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n * @see [Autocomplete](guide/aria/autocomplete)\n */", - "implements": [], "isStandalone": true, - "selector": "dialog[ngComboboxDialog]", + "selector": "ng-template[ngComboboxPopup]", "exportAs": [ - "ngComboboxDialog" + "ngComboboxPopup" ], "aliases": [ - "ngComboboxDialog" + "ngComboboxPopup" ], "source": { - "filePath": "src/aria/combobox/combobox-dialog.ts", - "startLine": 35, - "endLine": 84 + "filePath": "src/aria/combobox/combobox-popup.ts", + "startLine": 29, + "endLine": 79 } }, { "name": "Combobox", "isAbstract": false, - "entryType": "undecorated_class", + "entryType": "directive", "members": [ - { - "name": "textDirection", - "type": "Signal", - "memberType": "property", - "memberTags": [ - "protected", - "readonly" - ], - "description": "A signal wrapper for directionality.", - "jsdocTags": [] - }, { "name": "element", "type": "HTMLElement", @@ -317,27 +375,7 @@ "memberTags": [ "readonly" ], - "description": "A reference to the combobox element.", - "jsdocTags": [] - }, - { - "name": "popup", - "type": "Signal | undefined>", - "memberType": "property", - "memberTags": [ - "readonly" - ], - "description": "The combobox popup.", - "jsdocTags": [] - }, - { - "name": "filterMode", - "type": "InputSignal<\"manual\" | \"auto-select\" | \"highlight\">", - "memberType": "property", - "memberTags": [ - "readonly" - ], - "description": "The filter mode for the combobox.\n- `manual`: The consumer is responsible for filtering the options.\n- `auto-select`: The combobox automatically selects the first matching option.\n- `highlight`: The combobox highlights matching text in the options without changing selection.", + "description": "A reference to the input element.", "jsdocTags": [] }, { @@ -345,162 +383,172 @@ "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether the combobox is disabled.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "disabled", + "isRequiredInput": false }, { - "name": "readonly", + "name": "softDisabled", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], - "description": "Whether the combobox is read-only.", - "jsdocTags": [] - }, - { - "name": "firstMatch", - "type": "InputSignal", - "memberType": "property", - "memberTags": [ - "readonly" - ], - "description": "The value of the first matching item in the popup.", - "jsdocTags": [] - }, - { - "name": "expanded", - "type": "Signal", - "memberType": "property", - "memberTags": [ - "readonly" - ], - "description": "Whether the combobox is expanded.", - "jsdocTags": [] + "description": "Whether the combobox is soft disabled (remains focusable).", + "jsdocTags": [], + "inputAlias": "softDisabled", + "isRequiredInput": false }, { "name": "alwaysExpanded", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], - "description": "Whether the combobox popup should always be expanded, regardless of user interaction.", - "jsdocTags": [] + "description": "Whether the combobox should always remain expanded.", + "jsdocTags": [], + "inputAlias": "alwaysExpanded", + "isRequiredInput": false }, { - "name": "inputElement", - "type": "Signal", + "name": "tabIndex", + "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], - "description": "Input element connected to the combobox, if any.", + "description": "The tabindex of the combobox.", + "jsdocTags": [], + "inputAlias": "tabindex", + "isRequiredInput": false + }, + { + "name": "expanded", + "type": "ModelSignal", + "memberType": "property", + "memberTags": [ + "readonly", + "input", + "output" + ], + "description": "Whether the combobox is expanded.", + "jsdocTags": [], + "inputAlias": "expanded", + "isRequiredInput": false, + "outputAlias": "expandedChange" + }, + { + "name": "value", + "type": "ModelSignal", + "memberType": "property", + "memberTags": [ + "readonly", + "input", + "output" + ], + "description": "The value of the combobox input.", + "jsdocTags": [], + "inputAlias": "value", + "isRequiredInput": false, + "outputAlias": "valueChange" + }, + { + "name": "inlineSuggestion", + "type": "InputSignal", + "memberType": "property", + "memberTags": [ + "readonly", + "input" + ], + "description": "An inline suggestion to be displayed in the input.", + "jsdocTags": [], + "inputAlias": "inlineSuggestion", + "isRequiredInput": false + }, + { + "name": "ngOnInit", + "signatures": [ + { + "name": "ngOnInit", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnInit", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, + { + "name": "contentVisible", + "type": "WritableSignal", + "memberType": "property", + "memberTags": [ + "readonly", + "override" + ], + "description": "", "jsdocTags": [] }, { - "name": "open", - "signatures": [ - { - "name": "open", - "entryType": "function", - "description": "Opens the combobox to the selected item.", - "generics": [], - "isNewType": false, - "jsdocTags": [], - "params": [], - "rawComment": "/** Opens the combobox to the selected item. */", - "returnType": "void" - } + "name": "preserveContent", + "type": "ModelSignal", + "memberType": "property", + "memberTags": [ + "readonly", + "override" ], - "implementation": { - "params": [], - "isNewType": false, - "returnType": "void", - "generics": [], - "name": "open", - "description": "Opens the combobox to the selected item.", - "entryType": "function", - "jsdocTags": [], - "rawComment": "/** Opens the combobox to the selected item. */" - }, - "entryType": "function", - "description": "Opens the combobox to the selected item.", - "jsdocTags": [], - "rawComment": "/** Opens the combobox to the selected item. */", - "memberType": "method", - "memberTags": [] - }, - { - "name": "close", - "signatures": [ - { - "name": "close", - "entryType": "function", - "description": "Closes the combobox.", - "generics": [], - "isNewType": false, - "jsdocTags": [], - "params": [], - "rawComment": "/** Closes the combobox. */", - "returnType": "void" - } - ], - "implementation": { - "params": [], - "isNewType": false, - "returnType": "void", - "generics": [], - "name": "close", - "description": "Closes the combobox.", - "entryType": "function", - "jsdocTags": [], - "rawComment": "/** Closes the combobox. */" - }, - "entryType": "function", - "description": "Closes the combobox.", - "jsdocTags": [], - "rawComment": "/** Closes the combobox. */", - "memberType": "method", - "memberTags": [] + "description": "", + "jsdocTags": [] } ], - "generics": [ - { - "name": "V" - } + "generics": [], + "description": "The container element that wraps a combobox input and popup, and orchestrates its behavior.\n\nThe `ngCombobox` directive is the main entry point for creating a combobox and customizing its\nbehavior. It coordinates the interactions between the input and the popup.\n\n```html\n
\n \n\n \n
\n \n
\n
\n
\n```", + "jsdocTags": [], + "rawComment": "/**\n * The container element that wraps a combobox input and popup, and orchestrates its behavior.\n *\n * The `ngCombobox` directive is the main entry point for creating a combobox and customizing its\n * behavior. It coordinates the interactions between the input and the popup.\n *\n * ```html\n *
\n * \n *\n * \n *
\n * \n *
\n *
\n *
\n * ```\n */", + "extends": "DeferredContentAware", + "implements": [ + "OnInit" ], - "description": "The container element that wraps a combobox input and popup, and orchestrates its behavior.\n\nThe `ngCombobox` directive is the main entry point for creating a combobox and customizing its\nbehavior. It coordinates the interactions between the `ngComboboxInput` and the popup, which\nis defined by a `ng-template` with the `ngComboboxPopupContainer` directive. If using the\n`CdkOverlay`, the `cdkConnectedOverlay` directive takes the place of `ngComboboxPopupContainer`.\n\n```html\n
\n \n\n \n
\n @for (option of filteredOptions(); track option) {\n
\n {{option}}\n
\n }\n
\n
\n
\n```", - "jsdocTags": [ - { - "name": "developerPreview", - "comment": "21.0" - }, - { - "name": "see", - "comment": "[Combobox](guide/aria/combobox)" - }, - { - "name": "see", - "comment": "[Select](guide/aria/select)" - }, - { - "name": "see", - "comment": "[Multiselect](guide/aria/multiselect)" - }, - { - "name": "see", - "comment": "[Autocomplete](guide/aria/autocomplete)" - } + "isStandalone": true, + "selector": "[ngCombobox]", + "exportAs": [ + "ngCombobox" + ], + "aliases": [ + "ngCombobox" ], - "rawComment": "/**\n * The container element that wraps a combobox input and popup, and orchestrates its behavior.\n *\n * The `ngCombobox` directive is the main entry point for creating a combobox and customizing its\n * behavior. It coordinates the interactions between the `ngComboboxInput` and the popup, which\n * is defined by a `ng-template` with the `ngComboboxPopupContainer` directive. If using the\n * `CdkOverlay`, the `cdkConnectedOverlay` directive takes the place of `ngComboboxPopupContainer`.\n *\n * ```html\n *
\n * \n *\n * \n *
\n * @for (option of filteredOptions(); track option) {\n *
\n * {{option}}\n *
\n * }\n *
\n *
\n *
\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Combobox](guide/aria/combobox)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n * @see [Autocomplete](guide/aria/autocomplete)\n */", - "implements": [], "source": { "filePath": "/src/aria/combobox/combobox.ts", - "startLine": 60, - "endLine": 164 + "startLine": 43, + "endLine": 143 } } ], @@ -509,10 +557,6 @@ "Directive", "@angular/core" ], - [ - "afterRenderEffect", - "@angular/core" - ], [ "ElementRef", "@angular/core" @@ -522,15 +566,15 @@ "@angular/core" ], [ - "model", + "input", "@angular/core" ], [ - "untracked", + "OnDestroy", "@angular/core" ], [ - "WritableSignal", + "OnInit", "@angular/core" ], [ @@ -538,67 +582,87 @@ "@angular/core" ], [ - "input", + "computed", "@angular/core" ], [ - "_IdGenerator", - "@angular/cdk/a11y" + "DeferredContent", + "@angular/aria/private" + ], + [ + "ComboboxPopupPattern", + "@angular/aria/private" + ], + [ + "afterRenderEffect", + "@angular/core" ], [ "booleanAttribute", "@angular/core" ], [ - "computed", + "model", "@angular/core" ], [ - "contentChild", + "Renderer2", "@angular/core" ], [ - "Directionality", - "@angular/cdk/bidi" + "DeferredContentAware", + "@angular/aria/private" ], [ - "ComboboxPopupContainer", - "@angular/aria/combobox" + "ComboboxPattern", + "@angular/aria/private" ], [ - "ComboboxInput", + "tabIndexTransform", + "@angular/aria/private" + ], + [ + "ComboboxWidget", "@angular/aria/combobox" ], [ "ComboboxPopup", "@angular/aria/combobox" ], - [ - "ComboboxDialog", - "@angular/aria/combobox" - ], [ "Combobox", "@angular/aria/combobox" ], [ - "ComboboxPopupContainer", + "ComboboxWidget", "@angular/aria/combobox" ], [ - "ComboboxInput", + "ComboboxWidget.element", "@angular/aria/combobox" ], [ - "ComboboxInput.element", + "ComboboxWidget.popupId", "@angular/aria/combobox" ], [ - "ComboboxInput.combobox", + "ComboboxWidget.activeDescendant", "@angular/aria/combobox" ], [ - "ComboboxInput.value", + "ComboboxWidget.ngOnInit", + "@angular/aria/combobox" + ], + [ + "ComboboxWidget.ngOnDestroy", + "@angular/aria/combobox" + ], + [ + "ComboboxWidget.onFocusin", + "@angular/aria/combobox" + ], + [ + "ComboboxWidget.onFocusout", "@angular/aria/combobox" ], [ @@ -610,59 +674,43 @@ "@angular/aria/combobox" ], [ - "ComboboxDialog", + "ComboboxPopup.controlTarget", "@angular/aria/combobox" ], [ - "ComboboxDialog.element", + "ComboboxPopup.popupId", "@angular/aria/combobox" ], [ - "ComboboxDialog.combobox", + "ComboboxPopup.activeDescendant", "@angular/aria/combobox" ], [ - "ComboboxDialog.id", + "ComboboxPopup.popupType", "@angular/aria/combobox" ], [ - "ComboboxDialog.close", + "ComboboxPopup.ngOnInit", + "@angular/aria/combobox" + ], + [ + "ComboboxPopup.ngOnDestroy", "@angular/aria/combobox" ], [ "Combobox", "@angular/aria/combobox" ], - [ - "Combobox.textDirection", - "@angular/aria/combobox" - ], [ "Combobox.element", "@angular/aria/combobox" ], - [ - "Combobox.popup", - "@angular/aria/combobox" - ], - [ - "Combobox.filterMode", - "@angular/aria/combobox" - ], [ "Combobox.disabled", "@angular/aria/combobox" ], [ - "Combobox.readonly", - "@angular/aria/combobox" - ], - [ - "Combobox.firstMatch", - "@angular/aria/combobox" - ], - [ - "Combobox.expanded", + "Combobox.softDisabled", "@angular/aria/combobox" ], [ @@ -670,15 +718,31 @@ "@angular/aria/combobox" ], [ - "Combobox.inputElement", + "Combobox.tabIndex", "@angular/aria/combobox" ], [ - "Combobox.open", + "Combobox.expanded", "@angular/aria/combobox" ], [ - "Combobox.close", + "Combobox.value", + "@angular/aria/combobox" + ], + [ + "Combobox.inlineSuggestion", + "@angular/aria/combobox" + ], + [ + "Combobox.ngOnInit", + "@angular/aria/combobox" + ], + [ + "Combobox.contentVisible", + "@angular/aria/combobox" + ], + [ + "Combobox.preserveContent", "@angular/aria/combobox" ] ] diff --git a/adev/src/content/aria/aria-grid.json b/adev/src/content/aria/aria-grid.json index 61558a2745a..1d6a97f0a7e 100755 --- a/adev/src/content/aria/aria-grid.json +++ b/adev/src/content/aria/aria-grid.json @@ -31,6 +31,72 @@ "jsdocTags": [], "inputAlias": "rowIndex", "isRequiredInput": false + }, + { + "name": "ngOnInit", + "signatures": [ + { + "name": "ngOnInit", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnInit", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] } ], "generics": [], @@ -46,7 +112,10 @@ } ], "rawComment": "/**\n * Represents a row within a grid. It is a container for `ngGridCell` directives.\n *\n * ```html\n * \n * \n * \n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */", - "implements": [], + "implements": [ + "OnInit", + "OnDestroy" + ], "isStandalone": true, "selector": "[ngGridRow]", "exportAs": [ @@ -57,8 +126,8 @@ ], "source": { "filePath": "/src/aria/grid/grid-row.ts", - "startLine": 35, - "endLine": 74 + "startLine": 37, + "endLine": 91 } }, { @@ -275,7 +344,7 @@ "source": { "filePath": "src/aria/grid/grid-cell-widget.ts", "startLine": 42, - "endLine": 136 + "endLine": 127 } }, { @@ -430,6 +499,39 @@ "description": "The ID of the active descendant in the grid.", "jsdocTags": [] }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, { "name": "scrollActiveCellIntoView", "signatures": [ @@ -493,7 +595,9 @@ } ], "rawComment": "/**\n * The container for a grid. It provides keyboard navigation and focus management for the grid's\n * rows and cells. It manages the overall behavior of the grid, including focus\n * wrapping, selection, and disabled states.\n *\n * ```html\n * \n * @for (row of gridData; track row) {\n * \n * @for (cell of row; track cell) {\n * \n * }\n * \n * }\n *
\n * {{cell.value}}\n *
\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */", - "implements": [], + "implements": [ + "OnDestroy" + ], "isStandalone": true, "selector": "[ngGrid]", "exportAs": [ @@ -504,8 +608,8 @@ ], "source": { "filePath": "/src/aria/grid/grid.ts", - "startLine": 47, - "endLine": 172 + "startLine": 55, + "endLine": 191 } }, { @@ -523,18 +627,6 @@ "description": "A reference to the host element.", "jsdocTags": [] }, - { - "name": "activated", - "type": "EventEmitter", - "memberType": "property", - "memberTags": [ - "readonly", - "output" - ], - "description": "Emits when the cell is activated via Enter/Space (simple widgets only).", - "jsdocTags": [], - "outputAlias": "activated" - }, { "name": "active", "type": "Signal", @@ -686,6 +778,72 @@ "jsdocTags": [], "inputAlias": "tabindex", "isRequiredInput": false + }, + { + "name": "ngOnInit", + "signatures": [ + { + "name": "ngOnInit", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnInit", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] } ], "generics": [], @@ -701,7 +859,10 @@ } ], "rawComment": "/**\n * Represents a cell within a grid row. It is the primary focusable element\n * within the grid. It can be disabled and can have its selection state managed\n * through the `selected` input.\n *\n * ```html\n * \n * Cell Content\n * \n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Grid](guide/aria/grid)\n */", - "implements": [], + "implements": [ + "OnInit", + "OnDestroy" + ], "isStandalone": true, "selector": "[ngGridCell]", "exportAs": [ @@ -713,17 +874,17 @@ "source": { "filePath": "/src/aria/grid/grid-cell.ts", "startLine": 45, - "endLine": 177 + "endLine": 181 } } ], "symbols": [ [ - "computed", + "afterNextRender", "@angular/core" ], [ - "contentChildren", + "computed", "@angular/core" ], [ @@ -742,6 +903,14 @@ "input", "@angular/core" ], + [ + "OnDestroy", + "@angular/core" + ], + [ + "OnInit", + "@angular/core" + ], [ "Signal", "@angular/core" @@ -770,18 +939,10 @@ "contentChild", "@angular/core" ], - [ - "EventEmitter", - "@angular/core" - ], [ "model", "@angular/core" ], - [ - "Output", - "@angular/core" - ], [ "Renderer2", "@angular/core" @@ -814,6 +975,14 @@ "GridRow.rowIndex", "@angular/aria/grid" ], + [ + "GridRow.ngOnInit", + "@angular/aria/grid" + ], + [ + "GridRow.ngOnDestroy", + "@angular/aria/grid" + ], [ "GridCellWidget", "@angular/aria/grid" @@ -918,6 +1087,10 @@ "Grid.activeDescendant", "@angular/aria/grid" ], + [ + "Grid.ngOnDestroy", + "@angular/aria/grid" + ], [ "Grid.scrollActiveCellIntoView", "@angular/aria/grid" @@ -930,10 +1103,6 @@ "GridCell.element", "@angular/aria/grid" ], - [ - "GridCell.activated", - "@angular/aria/grid" - ], [ "GridCell.active", "@angular/aria/grid" @@ -981,6 +1150,14 @@ [ "GridCell.tabindex", "@angular/aria/grid" + ], + [ + "GridCell.ngOnInit", + "@angular/aria/grid" + ], + [ + "GridCell.ngOnDestroy", + "@angular/aria/grid" ] ] } \ No newline at end of file diff --git a/adev/src/content/aria/aria-listbox.json b/adev/src/content/aria/aria-listbox.json index 200c02e043c..0f8156808c3 100755 --- a/adev/src/content/aria/aria-listbox.json +++ b/adev/src/content/aria/aria-listbox.json @@ -208,17 +208,20 @@ { "name": "Listbox", "isAbstract": false, - "entryType": "undecorated_class", + "entryType": "directive", "members": [ { "name": "id", "type": "InputSignal", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "A unique identifier for the listbox.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "id", + "isRequiredInput": false }, { "name": "element", @@ -246,110 +249,145 @@ "type": "InputSignal<\"vertical\" | \"horizontal\">", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether the list is vertically or horizontally oriented.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "orientation", + "isRequiredInput": false }, { "name": "multi", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether multiple items in the list can be selected at once.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "multi", + "isRequiredInput": false }, { "name": "wrap", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether focus should wrap when navigating.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "wrap", + "isRequiredInput": false }, { "name": "softDisabled", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether to allow disabled items to receive focus. When `true`, disabled items are\nfocusable but not interactive. When `false`, disabled items are skipped during navigation.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "softDisabled", + "isRequiredInput": false }, { "name": "focusMode", "type": "InputSignal<\"roving\" | \"activedescendant\">", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The focus strategy used by the list.\n- `roving`: Focus is moved to the active item using `tabindex`.\n- `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "focusMode", + "isRequiredInput": false }, { "name": "selectionMode", "type": "InputSignal<\"follow\" | \"explicit\">", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The selection strategy used by the list.\n- `follow`: The focused item is automatically selected.\n- `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "selectionMode", + "isRequiredInput": false }, { "name": "typeaheadDelay", "type": "InputSignal", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The amount of time before the typeahead search is reset.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "typeaheadDelay", + "isRequiredInput": false }, { "name": "disabled", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether the listbox is disabled.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "disabled", + "isRequiredInput": false }, { "name": "readonly", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether the listbox is readonly.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "readonly", + "isRequiredInput": false }, { "name": "tabIndex", "type": "InputSignal", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The tabindex of the listbox.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "tabindex", + "isRequiredInput": false }, { "name": "value", "type": "ModelSignal", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input", + "output" ], "description": "The values of the currently selected items.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "value", + "isRequiredInput": false, + "outputAlias": "valueChange" }, { "name": "activeDescendant", @@ -509,10 +547,18 @@ "implements": [ "OnDestroy" ], + "isStandalone": true, + "selector": "[ngListbox]", + "exportAs": [ + "ngListbox" + ], + "aliases": [ + "ngListbox" + ], "source": { "filePath": "/src/aria/listbox/listbox.ts", - "startLine": 60, - "endLine": 236 + "startLine": 54, + "endLine": 218 } } ], diff --git a/adev/src/content/aria/aria-menu.json b/adev/src/content/aria/aria-menu.json index 47259f092c1..4e6abe7a603 100755 --- a/adev/src/content/aria/aria-menu.json +++ b/adev/src/content/aria/aria-menu.json @@ -256,7 +256,7 @@ "readonly", "input" ], - "description": "The value of the menu item, used as the default aria-label", + "description": "The value of the menu item.", "jsdocTags": [], "inputAlias": "value", "isRequiredInput": true @@ -342,6 +342,72 @@ "description": "Whether the menu item has a popup.", "jsdocTags": [] }, + { + "name": "ngOnInit", + "signatures": [ + { + "name": "ngOnInit", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnInit", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, { "name": "open", "signatures": [ @@ -414,7 +480,7 @@ "name": "V" } ], - "description": "An item in a Menu.\n\n`ngMenuItem` directives can be used in `ngMenu` and `ngMenuBar` to represent a choice\nor action a user can take. They can also act as triggers for sub-menus.\n\n```html\n
\n
Action Item
\n
Submenu Trigger
\n
\n```", + "description": "An item in a Menu.\n\n`ngMenuItem` directives can be used in `ngMenu` and `ngMenuBar` to represent a choice\nor action a user can take. They can also act as triggers for sub-menus.\n\n```html\n
\n
Action Item
\n
Submenu Trigger
\n
\n```", "jsdocTags": [ { "name": "developerPreview", @@ -429,8 +495,11 @@ "comment": "[MenuBar](guide/aria/menubar)" } ], - "rawComment": "/**\n * An item in a Menu.\n *\n * `ngMenuItem` directives can be used in `ngMenu` and `ngMenuBar` to represent a choice\n * or action a user can take. They can also act as triggers for sub-menus.\n *\n * ```html\n *
\n *
Action Item
\n *
Submenu Trigger
\n *
\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */", - "implements": [], + "rawComment": "/**\n * An item in a Menu.\n *\n * `ngMenuItem` directives can be used in `ngMenu` and `ngMenuBar` to represent a choice\n * or action a user can take. They can also act as triggers for sub-menus.\n *\n * ```html\n *
\n *
Action Item
\n *
Submenu Trigger
\n *
\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */", + "implements": [ + "OnInit", + "OnDestroy" + ], "isStandalone": true, "selector": "[ngMenuItem]", "exportAs": [ @@ -441,8 +510,8 @@ ], "source": { "filePath": "/src/aria/menu/menu-item.ts", - "startLine": 34, - "endLine": 107 + "startLine": 44, + "endLine": 124 } }, { @@ -549,6 +618,39 @@ "jsdocTags": [], "outputAlias": "itemSelected" }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, { "name": "close", "signatures": [ @@ -604,7 +706,9 @@ } ], "rawComment": "/**\n * A menu bar of menu items.\n *\n * Like the `ngMenu`, a `ngMenuBar` is used to offer a list of menu item choices to users.\n * However, a menubar is used to display a persistent, top-level, always-visible set of\n * menu item choices, typically found at the top of an application window.\n *\n * ```html\n *
\n * \n * \n *
\n *\n *
\n *
New
\n *
Open
\n *
\n *\n *
\n *
Cut
\n *
Copy
\n *
\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */", - "implements": [], + "implements": [ + "OnDestroy" + ], "isStandalone": true, "selector": "[ngMenuBar]", "exportAs": [ @@ -615,8 +719,8 @@ ], "source": { "filePath": "/src/aria/menu/menu-bar.ts", - "startLine": 56, - "endLine": 133 + "startLine": 57, + "endLine": 142 } }, { @@ -734,6 +838,39 @@ "description": "The delay in milliseconds before expanding sub-menus on hover.", "jsdocTags": [] }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, { "name": "close", "signatures": [ @@ -789,11 +926,13 @@ } ], "rawComment": "/**\n * A list of menu items.\n *\n * A `ngMenu` is used to offer a list of menu item choices to users. Menus can be nested\n * within other menus to create sub-menus. It works in conjunction with `ngMenuTrigger`\n * and `ngMenuItem` directives.\n *\n * ```html\n * \n *\n *
\n *
Star
\n *
Edit
\n *
More
\n *
\n *\n *
\n *
Sub Item 1
\n *
Sub Item 2
\n *
\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Menu](guide/aria/menu)\n * @see [MenuBar](guide/aria/menubar)\n */", - "implements": [], + "implements": [ + "OnDestroy" + ], "source": { "filePath": "/src/aria/menu/menu.ts", - "startLine": 58, - "endLine": 197 + "startLine": 59, + "endLine": 206 } } ], @@ -834,16 +973,24 @@ "model", "@angular/core" ], + [ + "OnDestroy", + "@angular/core" + ], + [ + "OnInit", + "@angular/core" + ], [ "_IdGenerator", "@angular/cdk/a11y" ], [ - "afterRenderEffect", + "afterNextRender", "@angular/core" ], [ - "contentChildren", + "afterRenderEffect", "@angular/core" ], [ @@ -970,6 +1117,14 @@ "MenuItem.hasPopup", "@angular/aria/menu" ], + [ + "MenuItem.ngOnInit", + "@angular/aria/menu" + ], + [ + "MenuItem.ngOnDestroy", + "@angular/aria/menu" + ], [ "MenuItem.open", "@angular/aria/menu" @@ -1014,6 +1169,10 @@ "MenuBar.itemSelected", "@angular/aria/menu" ], + [ + "MenuBar.ngOnDestroy", + "@angular/aria/menu" + ], [ "MenuBar.close", "@angular/aria/menu" @@ -1066,6 +1225,10 @@ "Menu.expansionDelay", "@angular/aria/menu" ], + [ + "Menu.ngOnDestroy", + "@angular/aria/menu" + ], [ "Menu.close", "@angular/aria/menu" diff --git a/adev/src/content/aria/aria-toolbar.json b/adev/src/content/aria/aria-toolbar.json index 441f5287432..6820810188e 100755 --- a/adev/src/content/aria/aria-toolbar.json +++ b/adev/src/content/aria/aria-toolbar.json @@ -4,6 +4,80 @@ "moduleName": "@angular/aria/toolbar", "normalizedModuleName": "angular_aria_toolbar", "entries": [ + { + "name": "ToolbarWidgetGroup", + "isAbstract": false, + "entryType": "directive", + "members": [ + { + "name": "element", + "type": "HTMLElement", + "memberType": "property", + "memberTags": [ + "readonly" + ], + "description": "A reference to the host element.", + "jsdocTags": [] + }, + { + "name": "disabled", + "type": "InputSignalWithTransform", + "memberType": "property", + "memberTags": [ + "readonly", + "input" + ], + "description": "Whether the widget group is disabled.", + "jsdocTags": [], + "inputAlias": "disabled", + "isRequiredInput": false + }, + { + "name": "multi", + "type": "InputSignalWithTransform", + "memberType": "property", + "memberTags": [ + "readonly", + "input" + ], + "description": "Whether the group allows multiple widgets to be selected.", + "jsdocTags": [], + "inputAlias": "multi", + "isRequiredInput": false + } + ], + "generics": [ + { + "name": "V" + } + ], + "description": "A directive that groups toolbar widgets, used for more complex widgets like radio groups\nthat have their own internal navigation.", + "jsdocTags": [ + { + "name": "developerPreview", + "comment": "21.0" + }, + { + "name": "see", + "comment": "[Toolbar](guide/aria/toolbar)" + } + ], + "rawComment": "/**\n * A directive that groups toolbar widgets, used for more complex widgets like radio groups\n * that have their own internal navigation.\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */", + "implements": [], + "isStandalone": true, + "selector": "[ngToolbarWidgetGroup]", + "exportAs": [ + "ngToolbarWidgetGroup" + ], + "aliases": [ + "ngToolbarWidgetGroup" + ], + "source": { + "filePath": "/src/aria/toolbar/toolbar-widget-group.ts", + "startLine": 31, + "endLine": 67 + } + }, { "name": "Toolbar", "isAbstract": false, @@ -95,6 +169,39 @@ "inputAlias": "value", "isRequiredInput": false, "outputAlias": "valueChange" + }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] } ], "generics": [ @@ -114,7 +221,9 @@ } ], "rawComment": "/**\n * A toolbar widget container for a group of interactive widgets, such as\n * buttons or radio groups. It provides a single point of reference for keyboard navigation\n * and focus management. It supports various orientations and disabled states.\n *\n * ```html\n *
\n * \n * \n *\n *
\n * \n * \n * \n *
\n *
\n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */", - "implements": [], + "implements": [ + "OnDestroy" + ], "isStandalone": true, "selector": "[ngToolbar]", "exportAs": [ @@ -125,82 +234,8 @@ ], "source": { "filePath": "/src/aria/toolbar/toolbar.ts", - "startLine": 46, - "endLine": 130 - } - }, - { - "name": "ToolbarWidgetGroup", - "isAbstract": false, - "entryType": "directive", - "members": [ - { - "name": "element", - "type": "HTMLElement", - "memberType": "property", - "memberTags": [ - "readonly" - ], - "description": "A reference to the host element.", - "jsdocTags": [] - }, - { - "name": "disabled", - "type": "InputSignalWithTransform", - "memberType": "property", - "memberTags": [ - "readonly", - "input" - ], - "description": "Whether the widget group is disabled.", - "jsdocTags": [], - "inputAlias": "disabled", - "isRequiredInput": false - }, - { - "name": "multi", - "type": "InputSignalWithTransform", - "memberType": "property", - "memberTags": [ - "readonly", - "input" - ], - "description": "Whether the group allows multiple widgets to be selected.", - "jsdocTags": [], - "inputAlias": "multi", - "isRequiredInput": false - } - ], - "generics": [ - { - "name": "V" - } - ], - "description": "A directive that groups toolbar widgets, used for more complex widgets like radio groups\nthat have their own internal navigation.", - "jsdocTags": [ - { - "name": "developerPreview", - "comment": "21.0" - }, - { - "name": "see", - "comment": "[Toolbar](guide/aria/toolbar)" - } - ], - "rawComment": "/**\n * A directive that groups toolbar widgets, used for more complex widgets like radio groups\n * that have their own internal navigation.\n *\n * @developerPreview 21.0\n *\n * @see [Toolbar](guide/aria/toolbar)\n */", - "implements": [], - "isStandalone": true, - "selector": "[ngToolbarWidgetGroup]", - "exportAs": [ - "ngToolbarWidgetGroup" - ], - "aliases": [ - "ngToolbarWidgetGroup" - ], - "source": { - "filePath": "/src/aria/toolbar/toolbar-widget-group.ts", - "startLine": 31, - "endLine": 67 + "startLine": 48, + "endLine": 125 } }, { @@ -391,10 +426,6 @@ } ], "symbols": [ - [ - "afterRenderEffect", - "@angular/core" - ], [ "Directive", "@angular/core" @@ -420,43 +451,67 @@ "@angular/core" ], [ - "signal", + "contentChildren", + "@angular/core" + ], + [ + "afterNextRender", + "@angular/core" + ], + [ + "afterRenderEffect", "@angular/core" ], [ "model", "@angular/core" ], + [ + "OnDestroy", + "@angular/core" + ], + [ + "signal", + "@angular/core" + ], [ "Directionality", "@angular/cdk/bidi" ], - [ - "contentChildren", - "@angular/core" - ], [ "OnInit", "@angular/core" ], - [ - "OnDestroy", - "@angular/core" - ], [ "_IdGenerator", "@angular/cdk/a11y" ], + [ + "ToolbarWidgetGroup", + "@angular/aria/toolbar" + ], [ "Toolbar", "@angular/aria/toolbar" ], + [ + "ToolbarWidget", + "@angular/aria/toolbar" + ], [ "ToolbarWidgetGroup", "@angular/aria/toolbar" ], [ - "ToolbarWidget", + "ToolbarWidgetGroup.element", + "@angular/aria/toolbar" + ], + [ + "ToolbarWidgetGroup.disabled", + "@angular/aria/toolbar" + ], + [ + "ToolbarWidgetGroup.multi", "@angular/aria/toolbar" ], [ @@ -492,19 +547,7 @@ "@angular/aria/toolbar" ], [ - "ToolbarWidgetGroup", - "@angular/aria/toolbar" - ], - [ - "ToolbarWidgetGroup.element", - "@angular/aria/toolbar" - ], - [ - "ToolbarWidgetGroup.disabled", - "@angular/aria/toolbar" - ], - [ - "ToolbarWidgetGroup.multi", + "Toolbar.ngOnDestroy", "@angular/aria/toolbar" ], [ diff --git a/adev/src/content/aria/aria-tree.json b/adev/src/content/aria/aria-tree.json index d8a8d6c0b21..a4b3064f494 100755 --- a/adev/src/content/aria/aria-tree.json +++ b/adev/src/content/aria/aria-tree.json @@ -387,14 +387,14 @@ ], "source": { "filePath": "/src/aria/tree/tree-item.ts", - "startLine": 44, - "endLine": 174 + "startLine": 43, + "endLine": 169 } }, { "name": "Tree", "isAbstract": false, - "entryType": "undecorated_class", + "entryType": "directive", "members": [ { "name": "element", @@ -411,110 +411,145 @@ "type": "InputSignal", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "A unique identifier for the tree.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "id", + "isRequiredInput": false }, { "name": "orientation", "type": "InputSignal<\"vertical\" | \"horizontal\">", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Orientation of the tree.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "orientation", + "isRequiredInput": false }, { "name": "multi", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether multi-selection is allowed.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "multi", + "isRequiredInput": false }, { "name": "disabled", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether the tree is disabled.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "disabled", + "isRequiredInput": false }, { "name": "selectionMode", "type": "InputSignal<\"explicit\" | \"follow\">", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The selection strategy used by the tree.\n- `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n- `follow`: The focused item is automatically selected.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "selectionMode", + "isRequiredInput": false }, { "name": "focusMode", "type": "InputSignal<\"roving\" | \"activedescendant\">", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The focus strategy used by the tree.\n- `roving`: Focus is moved to the active item using `tabindex`.\n- `activedescendant`: Focus remains on the tree container, and `aria-activedescendant` is used to indicate the active item.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "focusMode", + "isRequiredInput": false }, { "name": "wrap", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether navigation wraps.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "wrap", + "isRequiredInput": false }, { "name": "softDisabled", "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether to allow disabled items to receive focus. When `true`, disabled items are\nfocusable but not interactive. When `false`, disabled items are skipped during navigation.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "softDisabled", + "isRequiredInput": false }, { "name": "typeaheadDelay", "type": "InputSignal", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The delay in seconds before the typeahead search is reset.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "typeaheadDelay", + "isRequiredInput": false }, { "name": "tabIndex", "type": "InputSignal", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The tabindex of the tree.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "tabindex", + "isRequiredInput": false }, { "name": "value", "type": "ModelSignal", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input", + "output" ], "description": "The values of the currently selected items.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "value", + "isRequiredInput": false, + "outputAlias": "valueChange" }, { "name": "textDirection", @@ -531,20 +566,26 @@ "type": "InputSignalWithTransform", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "Whether the tree is in navigation mode.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "nav", + "isRequiredInput": false }, { "name": "currentType", "type": "InputSignal<\"page\" | \"step\" | \"location\" | \"date\" | \"time\" | \"true\" | \"false\">", "memberType": "property", "memberTags": [ - "readonly" + "readonly", + "input" ], "description": "The `aria-current` type. It can be used in navigation trees to indicate the currently active item.\nSee https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-current for more details.", - "jsdocTags": [] + "jsdocTags": [], + "inputAlias": "currentType", + "isRequiredInput": false }, { "name": "activeDescendant", @@ -556,6 +597,39 @@ "description": "The ID of the active descendant in the tree.", "jsdocTags": [] }, + { + "name": "ngOnDestroy", + "signatures": [ + { + "name": "ngOnDestroy", + "entryType": "function", + "description": "", + "generics": [], + "isNewType": false, + "jsdocTags": [], + "params": [], + "rawComment": "", + "returnType": "void" + } + ], + "implementation": { + "params": [], + "isNewType": false, + "returnType": "void", + "generics": [], + "name": "ngOnDestroy", + "description": "", + "entryType": "function", + "jsdocTags": [], + "rawComment": "" + }, + "entryType": "function", + "description": "", + "jsdocTags": [], + "rawComment": "", + "memberType": "method", + "memberTags": [] + }, { "name": "scrollActiveItemIntoView", "signatures": [ @@ -623,11 +697,21 @@ } ], "rawComment": "/**\n * A container that transforms nested lists into an accessible, ARIA-compliant tree structure.\n * It manages the overall state of the tree, including selection, expansion, and keyboard\n * navigation.\n *\n * ```html\n *
    \n * \n *
\n *\n * \n * @for (node of nodes; track node.name) {\n *
  • \n * {{ node.name }}\n * @if (node.children) {\n *
      \n * \n * \n * \n *
    \n * }\n *
  • \n * }\n *
    \n * ```\n *\n * @developerPreview 21.0\n *\n * @see [Tree](guide/aria/tree)\n */", - "implements": [], + "implements": [ + "OnDestroy" + ], + "isStandalone": true, + "selector": "[ngTree]", + "exportAs": [ + "ngTree" + ], + "aliases": [ + "ngTree" + ], "source": { "filePath": "/src/aria/tree/tree.ts", - "startLine": 70, - "endLine": 244 + "startLine": 65, + "endLine": 210 } } ], @@ -680,14 +764,14 @@ "Signal", "@angular/core" ], - [ - "afterNextRender", - "@angular/core" - ], [ "_IdGenerator", "@angular/cdk/a11y" ], + [ + "afterNextRender", + "@angular/core" + ], [ "untracked", "@angular/core" @@ -864,6 +948,10 @@ "Tree.activeDescendant", "@angular/aria/tree" ], + [ + "Tree.ngOnDestroy", + "@angular/aria/tree" + ], [ "Tree.scrollActiveItemIntoView", "@angular/aria/tree" diff --git a/adev/src/content/cli/_build-info.json b/adev/src/content/cli/_build-info.json index d1ed8afec18..f1955218b1b 100644 --- a/adev/src/content/cli/_build-info.json +++ b/adev/src/content/cli/_build-info.json @@ -1,4 +1,4 @@ { "branchName": "refs/heads/main", - "sha": "ea8265eb7f44ecb3521004ec6c72dcc85a333e94" + "sha": "62f80d27ea10c10a00194db0bb286ad960281a0d" } \ No newline at end of file diff --git a/adev/src/content/cli/generate.json b/adev/src/content/cli/generate.json index 3320b1e99e7..40c9c2fd75b 100644 --- a/adev/src/content/cli/generate.json +++ b/adev/src/content/cli/generate.json @@ -1009,6 +1009,12 @@ "default": true, "description": "Creates files at the top level of the project or the given path. If set to false, a new folder with the service's name will be created to contain the files." }, + { + "name": "injectable", + "type": "boolean", + "default": false, + "description": "When true, generates an `@Injectable` instead of `@Service`." + }, { "name": "name", "type": "string",