@emuanalytics/flow-rdf-ui 4.1.26 → 4.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1985,6 +1985,19 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
1985
1985
  private pendingChangeEvent;
1986
1986
  private pendingInputEvent;
1987
1987
  private hasOptions;
1988
+ /** @internal True while the user is typing to filter (input text has diverged from the committed value). */
1989
+ private inputChanged;
1990
+ /** @internal Stable base used to generate option DOM ids when the host has no `id` of its own. */
1991
+ private optionIdBase;
1992
+ /** @internal Monotonic per-host suffix for option DOM ids, so ids never collide across re-renders. */
1993
+ private nextOptionId;
1994
+ /**
1995
+ * @internal True while hide()'s close animation is in flight. `open` stays true across that
1996
+ * animation (so the popup remains visible while it fades out), which would otherwise make a
1997
+ * concurrent show() no-op at its `!this.open` guard. show() flips this to false to cancel the
1998
+ * close and reopen; hide() bails after its animation if it finds the close was cancelled.
1999
+ */
2000
+ private closing;
1988
2001
  private readonly formControlController;
1989
2002
  /** The autocomplete's size */
1990
2003
  size: 'small' | 'medium' | 'large';
@@ -2044,7 +2057,9 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2044
2057
  hasFocus: boolean;
2045
2058
  private input;
2046
2059
  private popup;
2060
+ private listbox;
2047
2061
  connectedCallback(): void;
2062
+ disconnectedCallback(): void;
2048
2063
  /** Gets the associated form, if one exists. */
2049
2064
  getForm(): HTMLFormElement | null;
2050
2065
  /** Gets the validity state object.*/
@@ -2063,10 +2078,31 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2063
2078
  private getFirstOption;
2064
2079
  /**
2065
2080
  * @internal
2066
- * Un-highlights currently highlighted option
2067
- * and highlights the given option
2081
+ * Gives each slotted option a stable DOM `id` (`<host-id>-option-<n>`) used purely for
2082
+ * ARIA wiring (`aria-activedescendant`). A consumer-provided `id` is preserved. This `id` is
2083
+ * independent of the option's `value` (domain identity). See ADR-0001.
2084
+ *
2085
+ * The suffix comes from a monotonic per-host counter rather than the option's index: a filter
2086
+ * re-render can retain some option elements while creating others, so an index-based suffix
2087
+ * could hand a new element an id that a retained element already owns.
2088
+ */
2089
+ private assignOptionIds;
2090
+ /**
2091
+ * @internal
2092
+ * Un-highlights currently highlighted option and highlights the given option.
2093
+ *
2094
+ * DOM focus stays on the `<input>` (per the APG editable-combobox pattern); the highlighted
2095
+ * ("current") option is conveyed to assistive tech via the input's `aria-activedescendant`,
2096
+ * not by moving focus. See ADR-0001.
2068
2097
  */
2069
2098
  private setCurrentOption;
2099
+ /**
2100
+ * @internal
2101
+ * Sets the input's `aria-activedescendant` to the given option `id`, or clears it (to `''`,
2102
+ * per the APG reference) when passed `null` or an empty id. Centralises the ARIA wiring so the
2103
+ * highlight and close paths stay in sync. See ADR-0001.
2104
+ */
2105
+ private setActiveDescendant;
2070
2106
  /**
2071
2107
  * @internal
2072
2108
  * Unselects currently selected option
@@ -2108,6 +2144,17 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2108
2144
  private removeListenersForDropdown;
2109
2145
  /** @internal Handles changes in the default slot */
2110
2146
  private handleDefaultSlotChange;
2147
+ /**
2148
+ * @internal
2149
+ * Establishes the highlighted ("current") option per the APG rules (ADR-0001):
2150
+ * - while filtering (input text has changed): always the first option, so type-then-Enter
2151
+ * selects the narrowed-down top option.
2152
+ * - on open with unchanged input: the selected option if one matches, else the first.
2153
+ *
2154
+ * Called both on slot change (list re-rendered) and on open (listbox shown without a
2155
+ * re-render, e.g. clicking back into the input), since the latter fires no slot change.
2156
+ */
2157
+ private highlightCurrentOption;
2111
2158
  /** @internal Toggles listbox based on focus and options in the default slot. */
2112
2159
  toggleListbox(): void;
2113
2160
  /**
package/dist/index.d.ts CHANGED
@@ -1985,6 +1985,19 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
1985
1985
  private pendingChangeEvent;
1986
1986
  private pendingInputEvent;
1987
1987
  private hasOptions;
1988
+ /** @internal True while the user is typing to filter (input text has diverged from the committed value). */
1989
+ private inputChanged;
1990
+ /** @internal Stable base used to generate option DOM ids when the host has no `id` of its own. */
1991
+ private optionIdBase;
1992
+ /** @internal Monotonic per-host suffix for option DOM ids, so ids never collide across re-renders. */
1993
+ private nextOptionId;
1994
+ /**
1995
+ * @internal True while hide()'s close animation is in flight. `open` stays true across that
1996
+ * animation (so the popup remains visible while it fades out), which would otherwise make a
1997
+ * concurrent show() no-op at its `!this.open` guard. show() flips this to false to cancel the
1998
+ * close and reopen; hide() bails after its animation if it finds the close was cancelled.
1999
+ */
2000
+ private closing;
1988
2001
  private readonly formControlController;
1989
2002
  /** The autocomplete's size */
1990
2003
  size: 'small' | 'medium' | 'large';
@@ -2044,7 +2057,9 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2044
2057
  hasFocus: boolean;
2045
2058
  private input;
2046
2059
  private popup;
2060
+ private listbox;
2047
2061
  connectedCallback(): void;
2062
+ disconnectedCallback(): void;
2048
2063
  /** Gets the associated form, if one exists. */
2049
2064
  getForm(): HTMLFormElement | null;
2050
2065
  /** Gets the validity state object.*/
@@ -2063,10 +2078,31 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2063
2078
  private getFirstOption;
2064
2079
  /**
2065
2080
  * @internal
2066
- * Un-highlights currently highlighted option
2067
- * and highlights the given option
2081
+ * Gives each slotted option a stable DOM `id` (`<host-id>-option-<n>`) used purely for
2082
+ * ARIA wiring (`aria-activedescendant`). A consumer-provided `id` is preserved. This `id` is
2083
+ * independent of the option's `value` (domain identity). See ADR-0001.
2084
+ *
2085
+ * The suffix comes from a monotonic per-host counter rather than the option's index: a filter
2086
+ * re-render can retain some option elements while creating others, so an index-based suffix
2087
+ * could hand a new element an id that a retained element already owns.
2088
+ */
2089
+ private assignOptionIds;
2090
+ /**
2091
+ * @internal
2092
+ * Un-highlights currently highlighted option and highlights the given option.
2093
+ *
2094
+ * DOM focus stays on the `<input>` (per the APG editable-combobox pattern); the highlighted
2095
+ * ("current") option is conveyed to assistive tech via the input's `aria-activedescendant`,
2096
+ * not by moving focus. See ADR-0001.
2068
2097
  */
2069
2098
  private setCurrentOption;
2099
+ /**
2100
+ * @internal
2101
+ * Sets the input's `aria-activedescendant` to the given option `id`, or clears it (to `''`,
2102
+ * per the APG reference) when passed `null` or an empty id. Centralises the ARIA wiring so the
2103
+ * highlight and close paths stay in sync. See ADR-0001.
2104
+ */
2105
+ private setActiveDescendant;
2070
2106
  /**
2071
2107
  * @internal
2072
2108
  * Unselects currently selected option
@@ -2108,6 +2144,17 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2108
2144
  private removeListenersForDropdown;
2109
2145
  /** @internal Handles changes in the default slot */
2110
2146
  private handleDefaultSlotChange;
2147
+ /**
2148
+ * @internal
2149
+ * Establishes the highlighted ("current") option per the APG rules (ADR-0001):
2150
+ * - while filtering (input text has changed): always the first option, so type-then-Enter
2151
+ * selects the narrowed-down top option.
2152
+ * - on open with unchanged input: the selected option if one matches, else the first.
2153
+ *
2154
+ * Called both on slot change (list re-rendered) and on open (listbox shown without a
2155
+ * re-render, e.g. clicking back into the input), since the latter fires no slot change.
2156
+ */
2157
+ private highlightCurrentOption;
2111
2158
  /** @internal Toggles listbox based on focus and options in the default slot. */
2112
2159
  toggleListbox(): void;
2113
2160
  /**
@@ -1,3 +1,3 @@
1
- const version = "4.1.26";
1
+ const version = "4.1.28";
2
2
 
3
3
  export { version };