@fluentui/web-components 3.0.0-beta.77 → 3.0.0-beta.78

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.
Files changed (151) hide show
  1. package/CHANGELOG.md +12 -2
  2. package/dist/dts/dropdown/define.d.ts +1 -0
  3. package/dist/dts/dropdown/dropdown.d.ts +492 -0
  4. package/dist/dts/dropdown/dropdown.definition.d.ts +9 -0
  5. package/dist/dts/dropdown/dropdown.options.d.ts +53 -0
  6. package/dist/dts/dropdown/dropdown.styles.d.ts +6 -0
  7. package/dist/dts/dropdown/dropdown.template.d.ts +38 -0
  8. package/dist/dts/dropdown/index.d.ts +5 -0
  9. package/dist/dts/index-rollup.d.ts +3 -0
  10. package/dist/dts/index.d.ts +3 -0
  11. package/dist/dts/listbox/define.d.ts +1 -0
  12. package/dist/dts/listbox/index.d.ts +5 -0
  13. package/dist/dts/listbox/listbox.d.ts +116 -0
  14. package/dist/dts/listbox/listbox.definition.d.ts +9 -0
  15. package/dist/dts/listbox/listbox.options.d.ts +10 -0
  16. package/dist/dts/listbox/listbox.styles.d.ts +6 -0
  17. package/dist/dts/listbox/listbox.template.d.ts +17 -0
  18. package/dist/dts/option/define.d.ts +1 -0
  19. package/dist/dts/option/index.d.ts +5 -0
  20. package/dist/dts/option/option.d.ts +260 -0
  21. package/dist/dts/option/option.definition.d.ts +9 -0
  22. package/dist/dts/option/option.options.d.ts +20 -0
  23. package/dist/dts/option/option.styles.d.ts +6 -0
  24. package/dist/dts/option/option.template.d.ts +16 -0
  25. package/dist/dts/patterns/start-end.d.ts +16 -2
  26. package/dist/dts/styles/states/index.d.ts +34 -0
  27. package/dist/dts/utils/element-internals.d.ts +3 -6
  28. package/dist/dts/utils/index.d.ts +1 -0
  29. package/dist/dts/utils/language.d.ts +9 -0
  30. package/dist/dts/utils/support.d.ts +15 -0
  31. package/dist/dts/utils/unique-id.d.ts +9 -0
  32. package/dist/esm/accordion/accordion.js +2 -3
  33. package/dist/esm/accordion/accordion.js.map +1 -1
  34. package/dist/esm/anchor-button/anchor-button.js +2 -4
  35. package/dist/esm/anchor-button/anchor-button.js.map +1 -1
  36. package/dist/esm/avatar/avatar.js +11 -12
  37. package/dist/esm/avatar/avatar.js.map +1 -1
  38. package/dist/esm/button/button.js +19 -23
  39. package/dist/esm/button/button.js.map +1 -1
  40. package/dist/esm/button/button.template.js +1 -1
  41. package/dist/esm/button/button.template.js.map +1 -1
  42. package/dist/esm/checkbox/checkbox.js +10 -11
  43. package/dist/esm/checkbox/checkbox.js.map +1 -1
  44. package/dist/esm/compound-button/compound-button.template.js +1 -1
  45. package/dist/esm/compound-button/compound-button.template.js.map +1 -1
  46. package/dist/esm/counter-badge/counter-badge.js +1 -2
  47. package/dist/esm/counter-badge/counter-badge.js.map +1 -1
  48. package/dist/esm/dialog-body/dialog-body.template.js +2 -2
  49. package/dist/esm/dialog-body/dialog-body.template.js.map +1 -1
  50. package/dist/esm/divider/divider.js +4 -5
  51. package/dist/esm/divider/divider.js.map +1 -1
  52. package/dist/esm/dropdown/define.js +4 -0
  53. package/dist/esm/dropdown/define.js.map +1 -0
  54. package/dist/esm/dropdown/dropdown.definition.js +20 -0
  55. package/dist/esm/dropdown/dropdown.definition.js.map +1 -0
  56. package/dist/esm/dropdown/dropdown.js +779 -0
  57. package/dist/esm/dropdown/dropdown.js.map +1 -0
  58. package/dist/esm/dropdown/dropdown.options.js +43 -0
  59. package/dist/esm/dropdown/dropdown.options.js.map +1 -0
  60. package/dist/esm/dropdown/dropdown.styles.js +213 -0
  61. package/dist/esm/dropdown/dropdown.styles.js.map +1 -0
  62. package/dist/esm/dropdown/dropdown.template.js +92 -0
  63. package/dist/esm/dropdown/dropdown.template.js.map +1 -0
  64. package/dist/esm/dropdown/index.js +6 -0
  65. package/dist/esm/dropdown/index.js.map +1 -0
  66. package/dist/esm/field/field.js +3 -4
  67. package/dist/esm/field/field.js.map +1 -1
  68. package/dist/esm/form-associated/form-associated.js +3 -5
  69. package/dist/esm/form-associated/form-associated.js.map +1 -1
  70. package/dist/esm/index-rollup.js +3 -0
  71. package/dist/esm/index-rollup.js.map +1 -1
  72. package/dist/esm/index.js +3 -0
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/listbox/define.js +4 -0
  75. package/dist/esm/listbox/define.js.map +1 -0
  76. package/dist/esm/listbox/index.js +6 -0
  77. package/dist/esm/listbox/index.js.map +1 -0
  78. package/dist/esm/listbox/listbox.definition.js +17 -0
  79. package/dist/esm/listbox/listbox.definition.js.map +1 -0
  80. package/dist/esm/listbox/listbox.js +175 -0
  81. package/dist/esm/listbox/listbox.js.map +1 -0
  82. package/dist/esm/listbox/listbox.options.js +15 -0
  83. package/dist/esm/listbox/listbox.options.js.map +1 -0
  84. package/dist/esm/listbox/listbox.styles.js +26 -0
  85. package/dist/esm/listbox/listbox.styles.js.map +1 -0
  86. package/dist/esm/listbox/listbox.template.js +33 -0
  87. package/dist/esm/listbox/listbox.template.js.map +1 -0
  88. package/dist/esm/menu/menu.js +23 -32
  89. package/dist/esm/menu/menu.js.map +1 -1
  90. package/dist/esm/menu-item/menu-item.js +9 -14
  91. package/dist/esm/menu-item/menu-item.js.map +1 -1
  92. package/dist/esm/menu-list/menu-list.js +4 -5
  93. package/dist/esm/menu-list/menu-list.js.map +1 -1
  94. package/dist/esm/option/define.js +4 -0
  95. package/dist/esm/option/define.js.map +1 -0
  96. package/dist/esm/option/index.js +6 -0
  97. package/dist/esm/option/index.js.map +1 -0
  98. package/dist/esm/option/option.definition.js +17 -0
  99. package/dist/esm/option/option.definition.js.map +1 -0
  100. package/dist/esm/option/option.js +296 -0
  101. package/dist/esm/option/option.js.map +1 -0
  102. package/dist/esm/option/option.options.js +15 -0
  103. package/dist/esm/option/option.options.js.map +1 -0
  104. package/dist/esm/option/option.styles.js +127 -0
  105. package/dist/esm/option/option.styles.js.map +1 -0
  106. package/dist/esm/option/option.template.js +42 -0
  107. package/dist/esm/option/option.template.js.map +1 -0
  108. package/dist/esm/patterns/start-end.js +12 -0
  109. package/dist/esm/patterns/start-end.js.map +1 -1
  110. package/dist/esm/progress-bar/progress-bar.js +3 -4
  111. package/dist/esm/progress-bar/progress-bar.js.map +1 -1
  112. package/dist/esm/radio-group/radio-group.js +27 -38
  113. package/dist/esm/radio-group/radio-group.js.map +1 -1
  114. package/dist/esm/rating-display/rating-display.js +7 -13
  115. package/dist/esm/rating-display/rating-display.js.map +1 -1
  116. package/dist/esm/slider/slider.js +13 -16
  117. package/dist/esm/slider/slider.js.map +1 -1
  118. package/dist/esm/styles/states/index.js +34 -0
  119. package/dist/esm/styles/states/index.js.map +1 -1
  120. package/dist/esm/tablist/tablist.js +5 -7
  121. package/dist/esm/tablist/tablist.js.map +1 -1
  122. package/dist/esm/tabs/tabs.js +5 -8
  123. package/dist/esm/tabs/tabs.js.map +1 -1
  124. package/dist/esm/text-input/text-input.js +13 -15
  125. package/dist/esm/text-input/text-input.js.map +1 -1
  126. package/dist/esm/textarea/textarea.js +20 -29
  127. package/dist/esm/textarea/textarea.js.map +1 -1
  128. package/dist/esm/theme/set-theme.js +1 -2
  129. package/dist/esm/theme/set-theme.js.map +1 -1
  130. package/dist/esm/tooltip/tooltip.js +13 -18
  131. package/dist/esm/tooltip/tooltip.js.map +1 -1
  132. package/dist/esm/utils/direction.js +1 -2
  133. package/dist/esm/utils/direction.js.map +1 -1
  134. package/dist/esm/utils/element-internals.js +8 -11
  135. package/dist/esm/utils/element-internals.js.map +1 -1
  136. package/dist/esm/utils/get-initials.js +2 -2
  137. package/dist/esm/utils/get-initials.js.map +1 -1
  138. package/dist/esm/utils/index.js +1 -0
  139. package/dist/esm/utils/index.js.map +1 -1
  140. package/dist/esm/utils/language.js +12 -0
  141. package/dist/esm/utils/language.js.map +1 -0
  142. package/dist/esm/utils/support.js +16 -0
  143. package/dist/esm/utils/support.js.map +1 -0
  144. package/dist/esm/utils/unique-id.js +14 -0
  145. package/dist/esm/utils/unique-id.js.map +1 -0
  146. package/dist/esm/utils/whitespace-filter.js +1 -1
  147. package/dist/esm/utils/whitespace-filter.js.map +1 -1
  148. package/dist/web-components.d.ts +1928 -862
  149. package/dist/web-components.js +1665 -445
  150. package/dist/web-components.min.js +344 -322
  151. package/package.json +1 -1
@@ -1633,1192 +1633,1186 @@ export declare class BaseDivider extends FASTElement {
1633
1633
  }
1634
1634
 
1635
1635
  /**
1636
- * A Field Custom HTML Element.
1636
+ * A Dropdown Custom HTML Element.
1637
+ * Implements the {@link https://w3c.github.io/aria/#combobox | ARIA combobox } role.
1638
+ *
1639
+ * @remarks
1640
+ * The Dropdown element does not provide a form association value. Instead, the slotted Option elements handle form
1641
+ * association the same way as {@link (Checkbox:class)} elements. See the {@link (DropdownOption:class)} element for
1642
+ * more details.
1643
+ *
1644
+ * @slot - The default slot. Accepts a {@link (Listbox:class)} element.
1645
+ * @slot indicator - The indicator slot.
1646
+ * @slot control - The control slot. This slot is automatically populated and should not be manually manipulated.
1637
1647
  *
1638
1648
  * @public
1639
1649
  */
1640
- export declare class BaseField extends FASTElement {
1641
- /**
1642
- * The slotted label elements.
1643
- *
1644
- * @internal
1645
- */
1646
- labelSlot: Node[];
1650
+ export declare class BaseDropdown extends FASTElement {
1647
1651
  /**
1648
- * Updates attributes on the slotted label elements.
1652
+ * The ID of the current active descendant.
1649
1653
  *
1650
- * @param prev - the previous list of slotted label elements
1651
- * @param next - the current list of slotted label elements
1654
+ * @public
1652
1655
  */
1653
- protected labelSlotChanged(prev: Node[], next: Node[]): void;
1656
+ get activeDescendant(): string | undefined;
1654
1657
  /**
1655
- * The slotted message elements. Filtered to only include elements with a `flag` attribute.
1658
+ * The index of the currently active option.
1656
1659
  *
1657
1660
  * @internal
1658
1661
  */
1659
- messageSlot: Element[];
1662
+ activeIndex: number;
1660
1663
  /**
1661
- * Adds or removes the `invalid` event listener based on the presence of slotted message elements.
1664
+ * Sets the active index when the active index property changes.
1662
1665
  *
1663
- * @param prev - the previous list of slotted message elements
1664
- * @param next - the current list of slotted message elements
1666
+ * @param prev - the previous active index
1667
+ * @param next - the current active index
1665
1668
  * @internal
1666
1669
  */
1667
- messageSlotChanged(prev: Element[], next: Element[]): void;
1670
+ activeIndexChanged(prev: number | undefined, next: number | undefined): void;
1668
1671
  /**
1669
- * The slotted inputs.
1672
+ * The `aria-labelledby` attribute value of the dropdown.
1670
1673
  *
1671
- * @internal
1672
- * @privateRemarks
1673
- * This field is populated with the `children` directive in the template rather than `slotted`.
1674
+ * @public
1674
1675
  */
1675
- slottedInputs: SlottableInput[];
1676
+ ariaLabelledBy: string;
1676
1677
  /**
1677
- * Sets the `input` property to the first slotted input.
1678
- *
1679
- * @param prev - The previous collection of inputs.
1680
- * @param next - The current collection of inputs.
1678
+ * Reference to the control element.
1681
1679
  * @internal
1682
1680
  */
1683
- slottedInputsChanged(prev: SlottableInput[] | undefined, next: SlottableInput[] | undefined): void;
1681
+ control: HTMLInputElement;
1684
1682
  /**
1685
- * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
1683
+ * Updates properties on the control element when the control slot changes.
1686
1684
  *
1685
+ * @param prev - the previous control element
1686
+ * @param next - the current control element
1687
1687
  * @internal
1688
+ * @remarks
1689
+ * The control element is assigned to the dropdown via the control slot with manual slot assignment.
1688
1690
  */
1689
- elementInternals: ElementInternals;
1691
+ controlChanged(prev: HTMLInputElement | undefined, next: HTMLInputElement | undefined): void;
1690
1692
  /**
1691
- * Reference to the first slotted input.
1692
- *
1693
+ * The disabled state of the dropdown.
1693
1694
  * @public
1694
1695
  */
1695
- input: SlottableInput;
1696
+ disabled?: boolean;
1696
1697
  /**
1697
- * Updates the field's states and label properties when the assigned input changes.
1698
+ * Updates the disabled state of the options when the disabled property changes.
1698
1699
  *
1699
- * @param prev - the previous input
1700
- * @param next - the current input
1700
+ * @param prev - the previous disabled state
1701
+ * @param next - the current disabled state
1701
1702
  */
1702
- inputChanged(prev: SlottableInput | undefined, next: SlottableInput | undefined): void;
1703
+ disabledChanged(prev: boolean | undefined, next: boolean | undefined): void;
1703
1704
  /**
1704
- * Calls the `setStates` method when a `change` event is emitted from the slotted input.
1705
+ * The display value for the control.
1705
1706
  *
1706
- * @param e - the event object
1707
- * @internal
1707
+ * @public
1708
1708
  */
1709
- changeHandler(e: Event): boolean | void;
1709
+ get displayValue(): string;
1710
1710
  /**
1711
- * Redirects `click` events to the slotted input.
1711
+ * Sets the listbox ID to a unique value if one is not provided.
1712
1712
  *
1713
- * @param e - the event object
1714
- * @internal
1713
+ * @override
1714
+ * @public
1715
+ * @remarks
1716
+ * HTML Attribute: `id`
1715
1717
  */
1716
- clickHandler(e: MouseEvent): boolean | void;
1717
- constructor();
1718
+ id: string;
1718
1719
  /**
1719
- * Applies the `focus-visible` state to the element when the slotted input receives visible focus.
1720
+ * Reference to the indicator button element.
1720
1721
  *
1721
- * @param e - the focus event
1722
1722
  * @internal
1723
1723
  */
1724
- focusinHandler(e: FocusEvent): boolean | void;
1724
+ indicator: HTMLDivElement;
1725
1725
  /**
1726
- * Removes the `focus-visible` state from the field when a slotted input loses focus.
1726
+ * Reference to the indicator slot element.
1727
1727
  *
1728
- * @param e - the focus event
1729
1728
  * @internal
1730
1729
  */
1731
- focusoutHandler(e: FocusEvent): boolean | void;
1730
+ indicatorSlot?: HTMLSlotElement;
1732
1731
  /**
1733
- * Toggles validity state flags on the element when the slotted input emits an `invalid` event (if slotted validation messages are present).
1732
+ * The value of the selected option.
1734
1733
  *
1735
- * @param e - the event object
1736
- * @internal
1734
+ * @public
1735
+ * @remarks
1736
+ * HTML Attribute: `value`
1737
1737
  */
1738
- invalidHandler(e: Event): boolean | void;
1738
+ initialValue?: string;
1739
1739
  /**
1740
- * Sets ARIA and form-related attributes on slotted label elements.
1740
+ * Reference to the slotted listbox element.
1741
1741
  *
1742
1742
  * @internal
1743
1743
  */
1744
- private setLabelProperties;
1744
+ listbox: Listbox;
1745
1745
  /**
1746
- * Toggles the field's states based on the slotted input.
1746
+ * Updates properties on the listbox element when the listbox reference changes.
1747
1747
  *
1748
+ * @param prev - the previous listbox element
1749
+ * @param next - the current listbox element
1748
1750
  * @internal
1751
+ *
1752
+ * @remarks
1753
+ * The listbox element is assigned to the dropdown via the default slot with manual slot assignment.
1749
1754
  */
1750
- setStates(): void;
1751
- setValidationStates(): void;
1752
- }
1753
-
1754
- /**
1755
- * A Progress HTML Element.
1756
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#progressbar | ARIA progressbar }.
1757
- *
1758
- * @public
1759
- */
1760
- export declare class BaseProgressBar extends FASTElement {
1755
+ listboxChanged(prev: Listbox | undefined, next: Listbox | undefined): void;
1761
1756
  /**
1762
- * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
1757
+ * Reference to the listbox slot element.
1763
1758
  *
1764
1759
  * @internal
1765
1760
  */
1766
- elementInternals: ElementInternals;
1761
+ listboxSlot: HTMLSlotElement;
1767
1762
  /**
1768
- * The validation state of the progress bar
1763
+ * Indicates whether the dropdown allows multiple options to be selected.
1764
+ *
1769
1765
  * @public
1770
- * HTML Attribute: `validation-state`
1771
- */
1772
- validationState: ProgressBarValidationState | null;
1773
- /**
1774
- * Handles changes to validation-state attribute custom states
1775
- * @param prev - the previous state
1776
- * @param next - the next state
1777
- */
1778
- validationStateChanged(prev: ProgressBarValidationState | undefined, next: ProgressBarValidationState | undefined): void;
1779
- /**
1780
- * The value of the progress
1781
- * @internal
1782
- * HTML Attribute: `value`
1766
+ * @remarks
1767
+ * HTML Attribute: `multiple`
1783
1768
  */
1784
- value?: number;
1769
+ multiple?: boolean;
1785
1770
  /**
1786
- * Updates the percent complete when the `value` property changes.
1771
+ * Toggles between single and multiple selection modes when the `multiple` property changes.
1787
1772
  *
1773
+ * @param prev - the previous multiple state
1774
+ * @param next - the next multiple state
1788
1775
  * @internal
1789
1776
  */
1790
- protected valueChanged(prev: number | undefined, next: number | undefined): void;
1791
- /**
1792
- * The minimum value
1793
- * @internal
1794
- * HTML Attribute: `min`
1795
- */
1796
- min?: number;
1777
+ protected multipleChanged(prev: boolean | undefined, next: boolean | undefined): void;
1797
1778
  /**
1798
- * Updates the percent complete when the `min` property changes.
1779
+ * The name of the dropdown.
1799
1780
  *
1800
- * @param prev - The previous min value
1801
- * @param next - The current min value
1781
+ * @public
1782
+ * @remarks
1783
+ * HTML Attribute: `name`
1802
1784
  */
1803
- protected minChanged(prev: number | undefined, next: number | undefined): void;
1785
+ name: string;
1804
1786
  /**
1805
- * The maximum value
1806
- * @internal
1807
- * HTML Attribute: `max`
1787
+ * Updates the name of the options when the name property changes.
1788
+ *
1789
+ * @param prev - the previous name
1790
+ * @param next - the current name
1808
1791
  */
1809
- max?: number;
1792
+ nameChanged(prev: string, next: string): void;
1810
1793
  /**
1811
- * Updates the percent complete when the `max` property changes.
1794
+ * Indicates whether the dropdown is open.
1812
1795
  *
1813
- * @param prev - The previous max value
1814
- * @param next - The current max value
1815
- * @internal
1796
+ * @public
1797
+ * @remarks
1798
+ * HTML Attribute: `open`
1816
1799
  */
1817
- protected maxChanged(prev: number | undefined, next: number | undefined): void;
1800
+ open: boolean;
1818
1801
  /**
1819
- * Indicates progress in %
1802
+ * Handles the open state of the dropdown.
1803
+ *
1804
+ * @param prev - the previous open state
1805
+ * @param next - the current open state
1806
+ *
1820
1807
  * @internal
1821
1808
  */
1822
- get percentComplete(): number;
1823
- constructor();
1824
- }
1825
-
1826
- /**
1827
- * The base class used for constructing a fluent-rating-display custom element
1828
- *
1829
- * @slot icon - SVG element used as the rating icon
1830
- *
1831
- * @public
1832
- */
1833
- export declare class BaseRatingDisplay extends FASTElement {
1809
+ openChanged(prev: boolean | undefined, next: boolean | undefined): void;
1834
1810
  /**
1835
- * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
1811
+ * The placeholder text of the dropdown.
1836
1812
  *
1837
- * @internal
1813
+ * @public
1838
1814
  */
1839
- elementInternals: ElementInternals;
1815
+ placeholder: string;
1840
1816
  /**
1841
- * The number of ratings.
1817
+ * The required state of the dropdown.
1842
1818
  *
1843
1819
  * @public
1844
1820
  * @remarks
1845
- * HTML Attribute: `count`
1821
+ * HTML Attribute: `required`
1846
1822
  */
1847
- count?: number;
1823
+ required: boolean;
1848
1824
  /**
1849
- * The `viewBox` attribute of the icon <svg> element.
1825
+ * The dropdown type.
1850
1826
  *
1851
1827
  * @public
1852
- * @default `0 0 20 20`
1853
1828
  * @remarks
1854
- * HTML Attribute: `icon-view-box`
1829
+ * HTML Attribute: `type`
1855
1830
  */
1856
- iconViewBox?: string;
1831
+ type: DropdownType;
1857
1832
  /**
1858
- * The maximum possible value of the rating.
1859
- * This attribute determines the number of icons displayed.
1860
- * Must be a whole number greater than 1.
1833
+ * Changes the slotted control element based on the dropdown type.
1861
1834
  *
1862
- * @public
1863
- * @remarks
1864
- * HTML Attribute: `max`
1835
+ * @param prev - the previous dropdown type
1836
+ * @param next - the current dropdown type
1837
+ * @internal
1865
1838
  */
1866
- max?: number;
1839
+ typeChanged(prev: DropdownType | undefined, next: DropdownType | undefined): void;
1867
1840
  /**
1868
- * The value of the rating.
1841
+ * The initial value of the control. When the control is a combobox, this value is used to set the value of the
1842
+ * control when the dropdown is initialized.
1869
1843
  *
1870
1844
  * @public
1871
1845
  * @remarks
1872
1846
  * HTML Attribute: `value`
1873
1847
  */
1874
- value?: number;
1848
+ valueAttribute: string;
1875
1849
  /**
1850
+ * The slot element for the control.
1876
1851
  * @internal
1877
1852
  */
1878
- slottedIcon: HTMLElement[];
1853
+ controlSlot: HTMLSlotElement;
1879
1854
  /**
1855
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
1856
+ *
1880
1857
  * @internal
1881
1858
  */
1882
- slottedIconChanged(): void;
1859
+ elementInternals: ElementInternals;
1883
1860
  /**
1884
- * @internal
1861
+ * The collection of enabled options.
1862
+ * @public
1885
1863
  */
1886
- private customIcon?;
1887
- private intlNumberFormatter;
1888
- constructor();
1864
+ get enabledOptions(): DropdownOption[];
1889
1865
  /**
1890
- * Returns "count" as string, formatted according to the locale.
1866
+ * The form-associated flag.
1867
+ * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example | Form-associated custom elements}
1891
1868
  *
1892
- * @internal
1869
+ * @public
1893
1870
  */
1894
- get formattedCount(): string;
1871
+ static formAssociated: boolean;
1895
1872
  /**
1896
- * Gets the selected value
1873
+ * Resets the form value to its initial value when the form is reset.
1897
1874
  *
1898
- * @protected
1875
+ * @internal
1899
1876
  */
1900
- protected getSelectedValue(): number;
1877
+ formResetCallback(): void;
1901
1878
  /**
1902
- * Gets the maximum icons to render
1879
+ * A reference to the first freeform option, if present.
1903
1880
  *
1904
- * @protected
1881
+ * @internal
1905
1882
  */
1906
- protected getMaxIcons(): number;
1883
+ private get freeformOption();
1907
1884
  /**
1908
- * Generates the icon SVG elements based on the "max" attribute.
1885
+ * Indicates whether the dropdown is a combobox.
1909
1886
  *
1910
1887
  * @internal
1911
1888
  */
1912
- generateIcons(): string;
1913
- }
1914
-
1915
- /**
1916
- * The base class used for constructing a fluent-spinner custom element
1917
- * @public
1918
- */
1919
- export declare class BaseSpinner extends FASTElement {
1889
+ private get isCombobox();
1920
1890
  /**
1921
- * The internal {@link https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
1891
+ * The list formatter for the dropdown. Used to format the display value when the dropdown is in multiple selection mode.
1922
1892
  *
1923
1893
  * @internal
1924
1894
  */
1925
- elementInternals: ElementInternals;
1926
- constructor();
1927
- }
1928
-
1929
- /**
1930
- * A Tablist element that wraps a collection of tab elements
1931
- * @public
1932
- */
1933
- export declare class BaseTablist extends FASTElement {
1895
+ private listFormatter?;
1934
1896
  /**
1935
- * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
1897
+ * The list collator for the dropdown. Used to filter options based on the input value.
1936
1898
  *
1937
1899
  * @internal
1938
1900
  */
1939
- elementInternals: ElementInternals;
1901
+ private listCollator?;
1940
1902
  /**
1941
- * Used for disabling all click and keyboard events for the tabs, child tab elements.
1903
+ * The collection of all child options.
1904
+ *
1942
1905
  * @public
1943
- * @remarks
1944
- * HTML Attribute: disabled.
1945
1906
  */
1946
- disabled: boolean;
1907
+ get options(): DropdownOption[];
1947
1908
  /**
1948
- * Handles disabled changes
1949
- * @param prev - previous value
1950
- * @param next - next value
1909
+ * The index of the first selected option, scoped to the enabled options.
1951
1910
  *
1952
1911
  * @internal
1953
- */
1954
- protected disabledChanged(prev: boolean, next: boolean): void;
1955
- /**
1956
- * The orientation
1957
- * @public
1958
1912
  * @remarks
1959
- * HTML Attribute: orientation
1913
+ * This property is a reflection of {@link Listbox.selectedIndex}.
1960
1914
  */
1961
- orientation: TablistOrientation;
1962
- /**
1963
- * @internal
1964
- */
1965
- protected orientationChanged(prev: TablistOrientation, next: TablistOrientation): void;
1915
+ get selectedIndex(): number;
1966
1916
  /**
1967
- * The id of the active tab
1917
+ * The collection of selected options.
1968
1918
  *
1969
1919
  * @public
1970
1920
  * @remarks
1971
- * HTML Attribute: activeid
1921
+ * This property is a reflection of {@link Listbox.selectedOptions}.
1972
1922
  */
1973
- activeid: string;
1923
+ get selectedOptions(): DropdownOption[];
1974
1924
  /**
1925
+ * The fallback validation message, taken from a native `<input>` element.
1926
+ *
1975
1927
  * @internal
1976
1928
  */
1977
- protected activeidChanged(oldValue: string, newValue: string): void;
1929
+ private validationFallbackMessage;
1978
1930
  /**
1931
+ * The validation message. Uses the browser's default validation message for native checkboxes if not otherwise
1932
+ * specified (e.g., via `setCustomValidity`).
1933
+ *
1979
1934
  * @internal
1980
1935
  */
1981
- tabs: HTMLElement[];
1936
+ get validationMessage(): string;
1982
1937
  /**
1983
- * @internal
1984
- */
1985
- protected tabsChanged(): void;
1986
- /**
1987
- * A reference to the active tab
1938
+ * The current value of the selected option.
1939
+ *
1988
1940
  * @public
1989
1941
  */
1990
- activetab: HTMLElement;
1991
- private prevActiveTabIndex;
1992
- private activeTabIndex;
1993
- private tabIds;
1994
- private change;
1995
- private getActiveIndex;
1942
+ get value(): string | null;
1943
+ set value(next: string | null);
1996
1944
  /**
1997
- * Function that is invoked whenever the selected tab or the tab collection changes.
1945
+ * Handles the change events for the dropdown.
1946
+ *
1947
+ * @param e - the event object
1998
1948
  *
1999
1949
  * @public
2000
1950
  */
2001
- protected setTabs(): void;
2002
- private getTabIds;
2003
- private setComponent;
2004
- private handleTabClick;
2005
- private isHorizontal;
2006
- private handleTabKeyDown;
1951
+ changeHandler(e: Event): boolean | void;
2007
1952
  /**
2008
- * The adjust method for FASTTabs
1953
+ * Handles the click events for the dropdown.
1954
+ *
1955
+ * @param e - the event object
1956
+ *
2009
1957
  * @public
2010
- * @remarks
2011
- * This method allows the active index to be adjusted by numerical increments
2012
1958
  */
2013
- adjust(adjustment: number): void;
2014
- private activateTabByIndex;
2015
- private focusTab;
1959
+ clickHandler(e: PointerEvent): boolean | void;
1960
+ constructor();
2016
1961
  /**
1962
+ * Filters the options based on the input value.
1963
+ *
1964
+ * @param value - the input value to filter the options by
1965
+ * @param collection - the collection of options to filter
1966
+ * @returns the filtered options
2017
1967
  * @internal
2018
1968
  */
2019
- connectedCallback(): void;
2020
- }
2021
-
2022
- /**
2023
- * A Tabs component that wraps a collection of tab and tab panel elements.
2024
- *
2025
- * @public
2026
- */
2027
- declare class BaseTabs extends FASTElement {
2028
- /**
2029
- * The orientation
2030
- * @public
2031
- * @remarks
2032
- * HTML Attribute: orientation
2033
- */
2034
- orientation: TabsOrientation;
1969
+ filterOptions(value: string, collection?: DropdownOption[]): DropdownOption[];
2035
1970
  /**
1971
+ * Focuses the control when the dropdown receives focus.
1972
+ *
2036
1973
  * @internal
2037
1974
  */
2038
- orientationChanged(): void;
1975
+ focus(options?: FocusOptions): void;
2039
1976
  /**
2040
- * The id of the active tab
1977
+ * Toggles the listbox when the control element loses focus.
2041
1978
  *
2042
- * @public
2043
- * @remarks
2044
- * HTML Attribute: activeid
2045
- */
2046
- activeid: string;
2047
- /**
1979
+ * @param e - the focus event
2048
1980
  * @internal
2049
1981
  */
2050
- activeidChanged(oldValue: string, newValue: string): void;
1982
+ focusoutHandler(e: FocusEvent): boolean | void;
2051
1983
  /**
1984
+ * Ensures the active index is within bounds of the enabled options. Out-of-bounds indices are wrapped to the opposite
1985
+ * end of the range.
1986
+ *
1987
+ * @param index - the desired index
1988
+ * @param upperBound - the upper bound of the range
1989
+ * @returns the index in bounds
2052
1990
  * @internal
2053
1991
  */
2054
- tabs: HTMLElement[];
1992
+ private getEnabledIndexInBounds;
2055
1993
  /**
2056
- * @internal
1994
+ * Handles the input events for the dropdown from the control element.
1995
+ *
1996
+ * @param e - the input event
1997
+ * @public
2057
1998
  */
2058
- tabsChanged(): void;
1999
+ inputHandler(e: InputEvent): boolean | void;
2059
2000
  /**
2060
- * @internal
2001
+ * Inserts the control element based on the dropdown type.
2002
+ *
2003
+ * @public
2004
+ * @remarks
2005
+ * This method can be overridden in derived classes to provide custom control elements, though this is not recommended.
2061
2006
  */
2062
- tabpanels: HTMLElement[];
2007
+ protected insertControl(): void;
2063
2008
  /**
2064
- * @internal
2009
+ * Handles the keydown events for the dropdown.
2010
+ *
2011
+ * @param e - the keyboard event
2012
+ * @public
2065
2013
  */
2066
- tabpanelsChanged(): void;
2014
+ keydownHandler(e: KeyboardEvent): boolean | void;
2067
2015
  /**
2068
- * A reference to the active tab
2069
- * @public
2016
+ * Prevents the default behavior of the mousedown event. This is necessary to prevent the input from losing focus
2017
+ * when the dropdown is open.
2018
+ *
2019
+ * @param e - the mouse event
2020
+ *
2021
+ * @internal
2070
2022
  */
2071
- activetab: HTMLElement;
2072
- private prevActiveTabIndex;
2073
- private activeTabIndex;
2074
- private tabIds;
2075
- private tabpanelIds;
2076
- private change;
2077
- private isDisabledElement;
2078
- private isHiddenElement;
2079
- private isFocusableElement;
2080
- private getActiveIndex;
2023
+ mousedownHandler(e: MouseEvent): boolean | void;
2081
2024
  /**
2082
- * Function that is invoked whenever the selected tab or the tab collection changes.
2025
+ * Selects an option by index.
2083
2026
  *
2027
+ * @param index - The index of the option to select.
2084
2028
  * @public
2085
2029
  */
2086
- protected setTabs(): void;
2087
- private setTabPanels;
2088
- private getTabIds;
2089
- private getTabPanelIds;
2090
- private setComponent;
2091
- private handleTabClick;
2092
- private isHorizontal;
2093
- private handleTabKeyDown;
2030
+ selectOption(index?: number): void;
2094
2031
  /**
2095
- * The adjust method for FASTTabs
2096
- * @public
2097
- * @remarks
2098
- * This method allows the active index to be adjusted by numerical increments
2032
+ * Sets the validity of the element.
2033
+ *
2034
+ * @param flags - Validity flags to set.
2035
+ * @param message - Optional message to supply. If not provided, the element's `validationMessage` will be used.
2036
+ * @param anchor - Optional anchor to use for the validation message.
2037
+ *
2038
+ * @internal
2099
2039
  */
2100
- adjust(adjustment: number): void;
2101
- private adjustForward;
2102
- private adjustBackward;
2103
- private moveToTabByIndex;
2104
- private focusTab;
2040
+ setValidity(flags?: Partial<ValidityState>, message?: string, anchor?: HTMLElement): void;
2105
2041
  /**
2042
+ * Updates the freeform option with the provided value.
2043
+ *
2044
+ * @param value - the value to update the freeform option with
2106
2045
  * @internal
2107
2046
  */
2108
- connectedCallback(): void;
2047
+ protected updateFreeformOption(value?: string): void;
2109
2048
  }
2110
2049
 
2111
2050
  /**
2112
- * A Text Area Custom HTML Element.
2113
- * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | `<textarea>`} element.
2114
- *
2115
- * @slot - The default content/value of the component.
2116
- * @slot label - The content for the `<label>`, it should be a `<fluent-label>` element.
2117
- * @csspart label - The `<label>` element.
2118
- * @csspart root - The container element of the `<textarea>` element.
2119
- * @csspart control - The internal `<textarea>` element.
2120
- * @fires change - Fires after the control loses focus, if the content has changed.
2121
- * @fires select - Fires when the `select()` method is called.
2051
+ * A Field Custom HTML Element.
2122
2052
  *
2123
2053
  * @public
2124
2054
  */
2125
- export declare class BaseTextArea extends FASTElement {
2055
+ export declare class BaseField extends FASTElement {
2126
2056
  /**
2127
- * The form-associated flag.
2128
- * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example | Form-associated custom elements}
2057
+ * The slotted label elements.
2129
2058
  *
2130
- * @public
2059
+ * @internal
2131
2060
  */
2132
- static readonly formAssociated = true;
2061
+ labelSlot: Node[];
2133
2062
  /**
2134
- * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
2063
+ * Updates attributes on the slotted label elements.
2135
2064
  *
2136
- * @internal
2065
+ * @param prev - the previous list of slotted label elements
2066
+ * @param next - the current list of slotted label elements
2137
2067
  */
2138
- elementInternals: ElementInternals;
2068
+ protected labelSlotChanged(prev: Node[], next: Node[]): void;
2139
2069
  /**
2140
- * The `<label>` element.
2070
+ * The slotted message elements. Filtered to only include elements with a `flag` attribute.
2071
+ *
2141
2072
  * @internal
2142
2073
  */
2143
- labelEl: HTMLLabelElement;
2074
+ messageSlot: Element[];
2144
2075
  /**
2145
- * The `<textarea>` element.
2076
+ * Adds or removes the `invalid` event listener based on the presence of slotted message elements.
2077
+ *
2078
+ * @param prev - the previous list of slotted message elements
2079
+ * @param next - the current list of slotted message elements
2146
2080
  * @internal
2147
2081
  */
2148
- controlEl: HTMLTextAreaElement;
2082
+ messageSlotChanged(prev: Element[], next: Element[]): void;
2149
2083
  /**
2084
+ * The slotted inputs.
2085
+ *
2150
2086
  * @internal
2087
+ * @privateRemarks
2088
+ * This field is populated with the `children` directive in the template rather than `slotted`.
2151
2089
  */
2152
- autoSizerEl?: HTMLDivElement;
2090
+ slottedInputs: SlottableInput[];
2153
2091
  /**
2154
- * The list of nodes that are assigned to the default slot.
2092
+ * Sets the `input` property to the first slotted input.
2093
+ *
2094
+ * @param prev - The previous collection of inputs.
2095
+ * @param next - The current collection of inputs.
2155
2096
  * @internal
2156
2097
  */
2157
- defaultSlottedNodes: Node[];
2158
- protected defaultSlottedNodesChanged(): void;
2098
+ slottedInputsChanged(prev: SlottableInput[] | undefined, next: SlottableInput[] | undefined): void;
2159
2099
  /**
2160
- * The list of nodes that are assigned to the `label` slot.
2100
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
2101
+ *
2161
2102
  * @internal
2162
2103
  */
2163
- labelSlottedNodes: Label[];
2164
- protected labelSlottedNodesChanged(): void;
2165
- private userInteracted;
2166
- private autoSizerObserver?;
2167
- private controlElAttrObserver;
2168
- private preConnectControlEl;
2104
+ elementInternals: ElementInternals;
2169
2105
  /**
2170
- * Indicates the element's autocomplete state.
2171
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/autocomplete | `autocomplete`} attribute
2106
+ * Reference to the first slotted input.
2172
2107
  *
2173
2108
  * @public
2174
- * @remarks
2175
- * HTML Attribute: `autocomplete`
2176
2109
  */
2177
- autocomplete?: TextAreaAutocomplete;
2110
+ input: SlottableInput;
2178
2111
  /**
2179
- * Indicates whether the element’s block size (height) should be automatically changed based on the content.
2180
- * Note: When this property’s value is set to be `true`, the element should not have a fixed block-size
2181
- * defined in CSS. Instead, use `min-height` or `min-block-size`.
2112
+ * Updates the field's states and label properties when the assigned input changes.
2182
2113
  *
2183
- * @public
2184
- * @remarks
2185
- * HTML Attribute: `auto-resize`
2114
+ * @param prev - the previous input
2115
+ * @param next - the current input
2186
2116
  */
2187
- autoResize: boolean;
2188
- protected autoResizeChanged(): void;
2117
+ inputChanged(prev: SlottableInput | undefined, next: SlottableInput | undefined): void;
2189
2118
  /**
2190
- * Sets the name of the value directionality to be submitted with form data.
2191
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/dirname | `dirname`} attribute
2119
+ * Calls the `setStates` method when a `change` event is emitted from the slotted input.
2192
2120
  *
2193
- * @public
2194
- * @remarks
2195
- * HTML Attribute: `dirname`
2121
+ * @param e - the event object
2122
+ * @internal
2196
2123
  */
2197
- dirName?: string;
2124
+ changeHandler(e: Event): boolean | void;
2198
2125
  /**
2199
- * Sets the element's disabled state.
2200
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/disabled | `disabled`} attribute
2126
+ * Redirects `click` events to the slotted input.
2201
2127
  *
2202
- * @public
2203
- * @remarks
2204
- * HTML Attribute: `disabled`
2128
+ * @param e - the event object
2129
+ * @internal
2205
2130
  */
2206
- disabled: boolean;
2207
- protected disabledChanged(): void;
2131
+ clickHandler(e: MouseEvent): boolean | void;
2132
+ constructor();
2208
2133
  /**
2209
- * Indicates whether the element displays a box shadow. This only has effect when `appearance` is set to be `filled-darker` or `filled-lighter`.
2134
+ * Applies the `focus-visible` state to the element when the slotted input receives visible focus.
2210
2135
  *
2211
- * @public
2212
- * @remarks
2213
- * HTML Attribute: `display-shadow`
2136
+ * @param e - the focus event
2137
+ * @internal
2214
2138
  */
2215
- displayShadow: boolean;
2139
+ focusinHandler(e: FocusEvent): boolean | void;
2216
2140
  /**
2217
- * The id of a form to associate the element to.
2141
+ * Removes the `focus-visible` state from the field when a slotted input loses focus.
2218
2142
  *
2219
- * @public
2220
- * @remarks
2221
- * HTML Attribute: `form`
2143
+ * @param e - the focus event
2144
+ * @internal
2222
2145
  */
2223
- initialForm?: string;
2146
+ focusoutHandler(e: FocusEvent): boolean | void;
2224
2147
  /**
2225
- * The form element that’s associated to the element, or `null` if no form is associated.
2148
+ * Toggles validity state flags on the element when the slotted input emits an `invalid` event (if slotted validation messages are present).
2226
2149
  *
2227
- * @public
2150
+ * @param e - the event object
2151
+ * @internal
2228
2152
  */
2229
- get form(): HTMLFormElement | null;
2153
+ invalidHandler(e: Event): boolean | void;
2230
2154
  /**
2231
- * A `NodeList` of `<label>` element associated with the element.
2232
- * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement/labels | `labels`} property
2155
+ * Sets ARIA and form-related attributes on slotted label elements.
2233
2156
  *
2234
- * @public
2157
+ * @internal
2235
2158
  */
2236
- get labels(): NodeList;
2159
+ private setLabelProperties;
2237
2160
  /**
2238
- * The maximum number of characters a user can enter.
2161
+ * Toggles the field's states based on the slotted input.
2239
2162
  *
2240
- * @public
2241
- * @remarks
2242
- * HTML Attribute: `maxlength`
2163
+ * @internal
2243
2164
  */
2244
- maxLength?: number;
2165
+ setStates(): void;
2166
+ setValidationStates(): void;
2167
+ }
2168
+
2169
+ /**
2170
+ * A Progress HTML Element.
2171
+ * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#progressbar | ARIA progressbar }.
2172
+ *
2173
+ * @public
2174
+ */
2175
+ export declare class BaseProgressBar extends FASTElement {
2245
2176
  /**
2246
- * The minimum number of characters a user can enter.
2247
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/minlength | `minlength`} attribute
2177
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
2248
2178
  *
2249
- * @public
2250
- * @remarks
2251
- * HTML Attribute: `minlength`
2179
+ * @internal
2252
2180
  */
2253
- minLength?: number;
2181
+ elementInternals: ElementInternals;
2254
2182
  /**
2255
- * The name of the element. This element's value will be surfaced during form submission under the provided name.
2256
- *
2183
+ * The validation state of the progress bar
2257
2184
  * @public
2258
- * @remarks
2259
- * HTML Attribute: `name`
2185
+ * HTML Attribute: `validation-state`
2260
2186
  */
2261
- name: string;
2187
+ validationState: ProgressBarValidationState | null;
2262
2188
  /**
2263
- * Sets the placeholder value of the element, generally used to provide a hint to the user.
2264
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/placeholder | `placeholder`} attribute
2265
- *
2266
- * @public
2267
- * @remarks
2268
- * HTML Attribute: `placeholder`
2269
- * This attribute is not a valid substitute for a label.
2189
+ * Handles changes to validation-state attribute custom states
2190
+ * @param prev - the previous state
2191
+ * @param next - the next state
2270
2192
  */
2271
- placeholder?: string;
2193
+ validationStateChanged(prev: ProgressBarValidationState | undefined, next: ProgressBarValidationState | undefined): void;
2272
2194
  /**
2273
- * When true, the control will be immutable by user interaction.
2274
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/readonly | `readonly`} attribute
2275
- *
2276
- * @public
2277
- * @remarks
2278
- * HTML Attribute: `readonly`
2195
+ * The value of the progress
2196
+ * @internal
2197
+ * HTML Attribute: `value`
2279
2198
  */
2280
- readOnly: boolean;
2281
- protected readOnlyChanged(): void;
2199
+ value?: number;
2282
2200
  /**
2283
- * The element's required attribute.
2201
+ * Updates the percent complete when the `value` property changes.
2284
2202
  *
2285
- * @public
2286
- * @remarks
2287
- * HTML Attribute: `required`
2203
+ * @internal
2288
2204
  */
2289
- required: boolean;
2290
- protected requiredChanged(): void;
2205
+ protected valueChanged(prev: number | undefined, next: number | undefined): void;
2291
2206
  /**
2292
- * Indicates whether the element can be resized by end users.
2293
- *
2294
- * @public
2295
- * @remarks
2296
- * HTML Attribute: `resize`
2207
+ * The minimum value
2208
+ * @internal
2209
+ * HTML Attribute: `min`
2297
2210
  */
2298
- resize: TextAreaResize;
2299
- protected resizeChanged(prev: TextAreaResize | undefined, next: TextAreaResize | undefined): void;
2211
+ min?: number;
2300
2212
  /**
2301
- * Controls whether or not to enable spell checking for the input field, or if the default spell checking configuration should be used.
2302
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck | `spellcheck`} attribute
2213
+ * Updates the percent complete when the `min` property changes.
2303
2214
  *
2304
- * @public
2305
- * @remarks
2306
- * HTML Attribute: `spellcheck`
2215
+ * @param prev - The previous min value
2216
+ * @param next - The current min value
2307
2217
  */
2308
- spellcheck: boolean;
2218
+ protected minChanged(prev: number | undefined, next: number | undefined): void;
2309
2219
  /**
2310
- * The length of the current value.
2311
- * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement#textLength | 'textLength'} property
2312
- *
2313
- * @public
2220
+ * The maximum value
2221
+ * @internal
2222
+ * HTML Attribute: `max`
2314
2223
  */
2315
- get textLength(): number;
2224
+ max?: number;
2316
2225
  /**
2317
- * The type of the element, which is always "textarea".
2318
- * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement/type | `type`} property
2226
+ * Updates the percent complete when the `max` property changes.
2319
2227
  *
2320
- * @public
2228
+ * @param prev - The previous max value
2229
+ * @param next - The current max value
2230
+ * @internal
2321
2231
  */
2322
- get type(): 'textarea';
2232
+ protected maxChanged(prev: number | undefined, next: number | undefined): void;
2323
2233
  /**
2324
- * The element's validity state.
2234
+ * Indicates progress in %
2235
+ * @internal
2236
+ */
2237
+ get percentComplete(): number;
2238
+ constructor();
2239
+ }
2240
+
2241
+ /**
2242
+ * The base class used for constructing a fluent-rating-display custom element
2243
+ *
2244
+ * @slot icon - SVG element used as the rating icon
2245
+ *
2246
+ * @public
2247
+ */
2248
+ export declare class BaseRatingDisplay extends FASTElement {
2249
+ /**
2250
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
2325
2251
  *
2326
- * @public
2327
- * @remarks
2328
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validity | `ElementInternals.validity`} property.
2252
+ * @internal
2329
2253
  */
2330
- get validity(): ValidityState;
2254
+ elementInternals: ElementInternals;
2331
2255
  /**
2332
- * The validation message.
2256
+ * The number of ratings.
2333
2257
  *
2334
2258
  * @public
2335
2259
  * @remarks
2336
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validationMessage | `ElementInternals.validationMessage`} property.
2260
+ * HTML Attribute: `count`
2337
2261
  */
2338
- get validationMessage(): string;
2262
+ count?: number;
2339
2263
  /**
2340
- * Determines if the control can be submitted for constraint validation.
2264
+ * The `viewBox` attribute of the icon <svg> element.
2341
2265
  *
2342
2266
  * @public
2267
+ * @default `0 0 20 20`
2343
2268
  * @remarks
2344
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/willValidate | `ElementInternals.willValidate`} property.
2269
+ * HTML Attribute: `icon-view-box`
2345
2270
  */
2346
- get willValidate(): boolean;
2271
+ iconViewBox?: string;
2347
2272
  /**
2348
- * The text content of the element before user interaction.
2349
- * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement#defaultvalue | `defaultValue`} property
2273
+ * The maximum possible value of the rating.
2274
+ * This attribute determines the number of icons displayed.
2275
+ * Must be a whole number greater than 1.
2350
2276
  *
2351
2277
  * @public
2352
2278
  * @remarks
2353
- * In order to set the initial/default value, an author should either add the default value in the HTML as the children
2354
- * of the component, or setting this property in JavaScript. Setting `innerHTML`, `innerText`, or `textContent` on this
2355
- * component will not change the default value or the content displayed inside the component.
2279
+ * HTML Attribute: `max`
2356
2280
  */
2357
- get defaultValue(): string;
2358
- set defaultValue(next: string);
2281
+ max?: number;
2359
2282
  /**
2360
- * The value of the element.
2283
+ * The value of the rating.
2361
2284
  *
2362
2285
  * @public
2363
2286
  * @remarks
2364
- * Reflects the `value` property.
2365
- */
2366
- get value(): string;
2367
- set value(next: string);
2368
- constructor();
2369
- /**
2370
- * @internal
2287
+ * HTML Attribute: `value`
2371
2288
  */
2372
- connectedCallback(): void;
2289
+ value?: number;
2373
2290
  /**
2374
2291
  * @internal
2375
2292
  */
2376
- disconnectedCallback(): void;
2293
+ slottedIcon: HTMLElement[];
2377
2294
  /**
2378
- * Resets the value to its initial value when the form is reset.
2379
- *
2380
2295
  * @internal
2381
2296
  */
2382
- formResetCallback(): void;
2297
+ slottedIconChanged(): void;
2383
2298
  /**
2384
2299
  * @internal
2385
2300
  */
2386
- formDisabledCallback(disabled: boolean): void;
2301
+ private customIcon?;
2302
+ private intlNumberFormatter;
2303
+ constructor();
2387
2304
  /**
2388
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/setFormValue | `ElementInternals.setFormValue()`} method.
2305
+ * Returns "count" as string, formatted according to the locale.
2389
2306
  *
2390
2307
  * @internal
2391
2308
  */
2392
- setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
2309
+ get formattedCount(): string;
2393
2310
  /**
2394
- * Checks the validity of the element and returns the result.
2311
+ * Gets the selected value
2395
2312
  *
2396
- * @public
2397
- * @remarks
2398
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity | `HTMLInputElement.checkValidity()`} method.
2313
+ * @protected
2399
2314
  */
2400
- checkValidity(): boolean;
2315
+ protected getSelectedValue(): number;
2401
2316
  /**
2402
- * Reports the validity of the element.
2317
+ * Gets the maximum icons to render
2403
2318
  *
2404
- * @public
2405
- * @remarks
2406
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/reportValidity | `HTMLInputElement.reportValidity()`} method.
2319
+ * @protected
2407
2320
  */
2408
- reportValidity(): boolean;
2321
+ protected getMaxIcons(): number;
2409
2322
  /**
2410
- * Sets the custom validity message.
2411
- * @param message - The message to set
2323
+ * Generates the icon SVG elements based on the "max" attribute.
2412
2324
  *
2413
- * @public
2325
+ * @internal
2414
2326
  */
2415
- setCustomValidity(message: string | null): void;
2327
+ generateIcons(): string;
2328
+ }
2329
+
2330
+ /**
2331
+ * The base class used for constructing a fluent-spinner custom element
2332
+ * @public
2333
+ */
2334
+ export declare class BaseSpinner extends FASTElement {
2416
2335
  /**
2417
- * Sets the validity of the control.
2418
- *
2419
- * @param flags - Validity flags. If not provided, the control's `validity` will be used.
2420
- * @param message - Optional message to supply. If not provided, the control's `validationMessage` will be used. If the control does not have a `validationMessage`, the message will be empty.
2421
- * @param anchor - Optional anchor to use for the validation message. If not provided, the control will be used.
2336
+ * The internal {@link https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
2422
2337
  *
2423
2338
  * @internal
2424
2339
  */
2425
- setValidity(flags?: Partial<ValidityState>, message?: string, anchor?: HTMLElement): void;
2340
+ elementInternals: ElementInternals;
2341
+ constructor();
2342
+ }
2343
+
2344
+ /**
2345
+ * A Tablist element that wraps a collection of tab elements
2346
+ * @public
2347
+ */
2348
+ export declare class BaseTablist extends FASTElement {
2426
2349
  /**
2427
- * Selects the content in the element.
2350
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
2428
2351
  *
2429
- * @public
2352
+ * @internal
2430
2353
  */
2431
- select(): void;
2432
- private setDefaultValue;
2433
- private bindEvents;
2354
+ elementInternals: ElementInternals;
2434
2355
  /**
2435
- * Gets the content inside the light DOM, if any HTML element is present, use its `outerHTML` value.
2356
+ * Used for disabling all click and keyboard events for the tabs, child tab elements.
2357
+ * @public
2358
+ * @remarks
2359
+ * HTML Attribute: disabled.
2436
2360
  */
2437
- private getContent;
2438
- private observeControlElAttrs;
2439
- private setDisabledSideEffect;
2440
- private toggleUserValidityState;
2441
- private maybeCreateAutoSizerEl;
2361
+ disabled: boolean;
2442
2362
  /**
2363
+ * Handles disabled changes
2364
+ * @param prev - previous value
2365
+ * @param next - next value
2366
+ *
2443
2367
  * @internal
2444
2368
  */
2445
- handleControlInput(): void;
2446
- /**
2447
- * @internal
2448
- */
2449
- handleControlChange(): void;
2450
- /**
2451
- * @internal
2452
- */
2453
- handleControlSelect(): void;
2454
- }
2455
-
2456
- /**
2457
- * A Text Input Custom HTML Element.
2458
- * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input | `<input>`} element.
2459
- *
2460
- * @slot start - Content which can be provided before the input
2461
- * @slot end - Content which can be provided after the input
2462
- * @slot - The default slot for button content
2463
- * @csspart label - The internal `<label>` element
2464
- * @csspart root - the root container for the internal control
2465
- * @csspart control - The internal `<input>` control
2466
- * @public
2467
- */
2468
- export declare class BaseTextInput extends FASTElement {
2369
+ protected disabledChanged(prev: boolean, next: boolean): void;
2469
2370
  /**
2470
- * Indicates the element's autocomplete state.
2471
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/autocomplete | `autocomplete`} attribute
2472
- *
2371
+ * The orientation
2473
2372
  * @public
2474
2373
  * @remarks
2475
- * HTML Attribute: `autocomplete`
2374
+ * HTML Attribute: orientation
2476
2375
  */
2477
- autocomplete?: string;
2376
+ orientation: TablistOrientation;
2478
2377
  /**
2479
- * Indicates that the element should get focus after the page finishes loading.
2480
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Element/input#autofocus | `autofocus`} attribute
2481
- *
2482
- * @public
2483
- * @remarks
2484
- * HTML Attribute: `autofocus`
2378
+ * @internal
2485
2379
  */
2486
- autofocus: boolean;
2380
+ protected orientationChanged(prev: TablistOrientation, next: TablistOrientation): void;
2487
2381
  /**
2488
- * The current value of the input.
2382
+ * The id of the active tab
2383
+ *
2489
2384
  * @public
2490
2385
  * @remarks
2491
- * HTML Attribute: `current-value`
2386
+ * HTML Attribute: activeid
2492
2387
  */
2493
- currentValue: string;
2388
+ activeid: string;
2494
2389
  /**
2495
- * Tracks the current value of the input.
2496
- *
2497
- * @param prev - the previous value
2498
- * @param next - the next value
2499
- *
2500
2390
  * @internal
2501
2391
  */
2502
- currentValueChanged(prev: string, next: string): void;
2392
+ protected activeidChanged(oldValue: string, newValue: string): void;
2503
2393
  /**
2504
- * The default slotted content. This is the content that appears in the text field label.
2505
- *
2506
2394
  * @internal
2507
2395
  */
2508
- defaultSlottedNodes: Node[];
2396
+ tabs: HTMLElement[];
2509
2397
  /**
2510
- * Updates the control label visibility based on the presence of default slotted content.
2511
- *
2512
2398
  * @internal
2513
2399
  */
2514
- defaultSlottedNodesChanged(prev: Node[] | undefined, next: Node[] | undefined): void;
2400
+ protected tabsChanged(): void;
2515
2401
  /**
2516
- * Sets the directionality of the element to be submitted with form data.
2517
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/dirname | `dirname`} attribute
2518
- *
2402
+ * A reference to the active tab
2519
2403
  * @public
2520
- * @remarks
2521
- * HTML Attribute: `dirname`
2522
2404
  */
2523
- dirname?: string;
2405
+ activetab: HTMLElement;
2406
+ private prevActiveTabIndex;
2407
+ private activeTabIndex;
2408
+ private tabIds;
2409
+ private change;
2410
+ private getActiveIndex;
2524
2411
  /**
2525
- * Sets the element's disabled state.
2526
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/disabled | `disabled`} attribute
2412
+ * Function that is invoked whenever the selected tab or the tab collection changes.
2527
2413
  *
2528
2414
  * @public
2529
- * @remarks
2530
- * HTML Attribute: `disabled`
2531
2415
  */
2532
- disabled?: boolean;
2416
+ protected setTabs(): void;
2417
+ private getTabIds;
2418
+ private setComponent;
2419
+ private handleTabClick;
2420
+ private isHorizontal;
2421
+ private handleTabKeyDown;
2533
2422
  /**
2534
- * The id of a form to associate the element to.
2535
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Element/input#form | `form`} attribute
2536
- *
2423
+ * The adjust method for FASTTabs
2537
2424
  * @public
2538
2425
  * @remarks
2539
- * HTML Attribute: `form`
2426
+ * This method allows the active index to be adjusted by numerical increments
2540
2427
  */
2541
- formAttribute?: string;
2428
+ adjust(adjustment: number): void;
2429
+ private activateTabByIndex;
2430
+ private focusTab;
2542
2431
  /**
2543
- * The initial value of the input.
2544
- *
2432
+ * @internal
2433
+ */
2434
+ connectedCallback(): void;
2435
+ }
2436
+
2437
+ /**
2438
+ * A Tabs component that wraps a collection of tab and tab panel elements.
2439
+ *
2440
+ * @public
2441
+ */
2442
+ declare class BaseTabs extends FASTElement {
2443
+ /**
2444
+ * The orientation
2545
2445
  * @public
2546
2446
  * @remarks
2547
- * HTML Attribute: `value`
2447
+ * HTML Attribute: orientation
2548
2448
  */
2549
- initialValue: string;
2449
+ orientation: TabsOrientation;
2550
2450
  /**
2551
- * Sets the value of the element to the initial value.
2552
- *
2553
2451
  * @internal
2554
2452
  */
2555
- initialValueChanged(): void;
2453
+ orientationChanged(): void;
2556
2454
  /**
2557
- * Allows associating a `<datalist>` to the element by ID.
2558
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Element/input#list | `list`} attribute
2455
+ * The id of the active tab
2559
2456
  *
2560
2457
  * @public
2561
2458
  * @remarks
2562
- * HTML Attribute: `list`
2459
+ * HTML Attribute: activeid
2563
2460
  */
2564
- list: string;
2461
+ activeid: string;
2565
2462
  /**
2566
- * The maximum number of characters a user can enter.
2567
- *
2568
- * @public
2569
- * @remarks
2570
- * HTML Attribute: `maxlength`
2463
+ * @internal
2571
2464
  */
2572
- maxlength: number;
2465
+ activeidChanged(oldValue: string, newValue: string): void;
2573
2466
  /**
2574
- * The minimum number of characters a user can enter.
2575
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/minlength | `minlength`} attribute
2576
- *
2577
- * @public
2578
- * @remarks
2579
- * HTML Attribute: `minlength`
2467
+ * @internal
2580
2468
  */
2581
- minlength: number;
2469
+ tabs: HTMLElement[];
2582
2470
  /**
2583
- * Indicates that a comma-separated list of email addresses can be entered. This attribute is only valid when `type="email"`.
2584
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/multiple | `multiple`} attribute
2585
- *
2586
- * @public
2587
- * @remarks
2588
- * HTML Attribute: `multiple`
2471
+ * @internal
2589
2472
  */
2590
- multiple: boolean;
2473
+ tabsChanged(): void;
2591
2474
  /**
2592
- * The name of the element. This element's value will be surfaced during form submission under the provided name.
2593
- *
2594
- * @public
2595
- * @remarks
2596
- * HTML Attribute: `name`
2475
+ * @internal
2597
2476
  */
2598
- name: string;
2477
+ tabpanels: HTMLElement[];
2599
2478
  /**
2600
- * A regular expression that the value must match to pass validation.
2601
- *
2479
+ * @internal
2480
+ */
2481
+ tabpanelsChanged(): void;
2482
+ /**
2483
+ * A reference to the active tab
2602
2484
  * @public
2603
- * @remarks
2604
- * HTML Attribute: `pattern`
2605
2485
  */
2606
- pattern: string;
2486
+ activetab: HTMLElement;
2487
+ private prevActiveTabIndex;
2488
+ private activeTabIndex;
2489
+ private tabIds;
2490
+ private tabpanelIds;
2491
+ private change;
2492
+ private isDisabledElement;
2493
+ private isHiddenElement;
2494
+ private isFocusableElement;
2495
+ private getActiveIndex;
2607
2496
  /**
2608
- * Sets the placeholder value of the element, generally used to provide a hint to the user.
2609
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/placeholder | `placeholder`} attribute
2497
+ * Function that is invoked whenever the selected tab or the tab collection changes.
2610
2498
  *
2611
2499
  * @public
2612
- * @remarks
2613
- * HTML Attribute: `placeholder`
2614
- * This attribute is not a valid substitute for a label.
2615
2500
  */
2616
- placeholder: string;
2501
+ protected setTabs(): void;
2502
+ private setTabPanels;
2503
+ private getTabIds;
2504
+ private getTabPanelIds;
2505
+ private setComponent;
2506
+ private handleTabClick;
2507
+ private isHorizontal;
2508
+ private handleTabKeyDown;
2617
2509
  /**
2618
- * When true, the control will be immutable by user interaction.
2619
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/readonly | `readonly`} attribute
2620
- *
2510
+ * The adjust method for FASTTabs
2621
2511
  * @public
2622
2512
  * @remarks
2623
- * HTML Attribute: `readonly`
2513
+ * This method allows the active index to be adjusted by numerical increments
2624
2514
  */
2625
- readOnly?: boolean;
2515
+ adjust(adjustment: number): void;
2516
+ private adjustForward;
2517
+ private adjustBackward;
2518
+ private moveToTabByIndex;
2519
+ private focusTab;
2626
2520
  /**
2627
- * Syncs the `ElementInternals.ariaReadOnly` property when the `readonly` property changes.
2628
- *
2629
2521
  * @internal
2630
2522
  */
2631
- readOnlyChanged(): void;
2523
+ connectedCallback(): void;
2524
+ }
2525
+
2526
+ /**
2527
+ * A Text Area Custom HTML Element.
2528
+ * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | `<textarea>`} element.
2529
+ *
2530
+ * @slot - The default content/value of the component.
2531
+ * @slot label - The content for the `<label>`, it should be a `<fluent-label>` element.
2532
+ * @csspart label - The `<label>` element.
2533
+ * @csspart root - The container element of the `<textarea>` element.
2534
+ * @csspart control - The internal `<textarea>` element.
2535
+ * @fires change - Fires after the control loses focus, if the content has changed.
2536
+ * @fires select - Fires when the `select()` method is called.
2537
+ *
2538
+ * @public
2539
+ */
2540
+ export declare class BaseTextArea extends FASTElement {
2632
2541
  /**
2633
- * The element's required attribute.
2542
+ * The form-associated flag.
2543
+ * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example | Form-associated custom elements}
2634
2544
  *
2635
2545
  * @public
2636
- * @remarks
2637
- * HTML Attribute: `required`
2638
2546
  */
2639
- required: boolean;
2547
+ static readonly formAssociated = true;
2640
2548
  /**
2641
- * Syncs the element's internal `aria-required` state with the `required` attribute.
2642
- *
2643
- * @param previous - the previous required state
2644
- * @param next - the current required state
2549
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
2645
2550
  *
2646
2551
  * @internal
2647
2552
  */
2648
- requiredChanged(previous: boolean, next: boolean): void;
2553
+ elementInternals: ElementInternals;
2649
2554
  /**
2650
- * Sets the width of the element to a specified number of characters.
2651
- *
2652
- * @public
2653
- * @remarks
2654
- * HTML Attribute: `size`
2555
+ * The `<label>` element.
2556
+ * @internal
2655
2557
  */
2656
- size: number;
2558
+ labelEl: HTMLLabelElement;
2657
2559
  /**
2658
- * Controls whether or not to enable spell checking for the input field, or if the default spell checking configuration should be used.
2659
- * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck | `spellcheck`} attribute
2660
- *
2560
+ * The `<textarea>` element.
2561
+ * @internal
2562
+ */
2563
+ controlEl: HTMLTextAreaElement;
2564
+ /**
2565
+ * @internal
2566
+ */
2567
+ autoSizerEl?: HTMLDivElement;
2568
+ /**
2569
+ * The list of nodes that are assigned to the default slot.
2570
+ * @internal
2571
+ */
2572
+ defaultSlottedNodes: Node[];
2573
+ protected defaultSlottedNodesChanged(): void;
2574
+ /**
2575
+ * The list of nodes that are assigned to the `label` slot.
2576
+ * @internal
2577
+ */
2578
+ labelSlottedNodes: Label[];
2579
+ protected labelSlottedNodesChanged(): void;
2580
+ private userInteracted;
2581
+ private autoSizerObserver?;
2582
+ private controlElAttrObserver;
2583
+ private preConnectControlEl;
2584
+ /**
2585
+ * Indicates the element's autocomplete state.
2586
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/autocomplete | `autocomplete`} attribute
2587
+ *
2661
2588
  * @public
2662
2589
  * @remarks
2663
- * HTML Attribute: `spellcheck`
2590
+ * HTML Attribute: `autocomplete`
2664
2591
  */
2665
- spellcheck: boolean;
2592
+ autocomplete?: TextAreaAutocomplete;
2666
2593
  /**
2667
- * Allows setting a type or mode of text.
2594
+ * Indicates whether the element’s block size (height) should be automatically changed based on the content.
2595
+ * Note: When this property’s value is set to be `true`, the element should not have a fixed block-size
2596
+ * defined in CSS. Instead, use `min-height` or `min-block-size`.
2668
2597
  *
2669
2598
  * @public
2670
2599
  * @remarks
2671
- * HTML Attribute: `type`
2600
+ * HTML Attribute: `auto-resize`
2672
2601
  */
2673
- type: TextInputType;
2602
+ autoResize: boolean;
2603
+ protected autoResizeChanged(): void;
2674
2604
  /**
2675
- * A reference to the internal input element.
2605
+ * Sets the name of the value directionality to be submitted with form data.
2606
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/dirname | `dirname`} attribute
2676
2607
  *
2677
- * @internal
2608
+ * @public
2609
+ * @remarks
2610
+ * HTML Attribute: `dirname`
2678
2611
  */
2679
- control: HTMLInputElement;
2612
+ dirName?: string;
2680
2613
  /**
2681
- * A reference to the internal label element.
2614
+ * Sets the element's disabled state.
2615
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/disabled | `disabled`} attribute
2682
2616
  *
2683
- * @internal
2617
+ * @public
2618
+ * @remarks
2619
+ * HTML Attribute: `disabled`
2684
2620
  */
2685
- controlLabel: HTMLLabelElement;
2621
+ disabled: boolean;
2622
+ protected disabledChanged(): void;
2686
2623
  /**
2687
- * Indicates that the value has been changed by the user.
2624
+ * Indicates whether the element displays a box shadow. This only has effect when `appearance` is set to be `filled-darker` or `filled-lighter`.
2688
2625
  *
2689
- * @internal
2626
+ * @public
2627
+ * @remarks
2628
+ * HTML Attribute: `display-shadow`
2690
2629
  */
2691
- private dirtyValue;
2630
+ displayShadow: boolean;
2692
2631
  /**
2693
- * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
2632
+ * The id of a form to associate the element to.
2694
2633
  *
2695
- * @internal
2634
+ * @public
2635
+ * @remarks
2636
+ * HTML Attribute: `form`
2696
2637
  */
2697
- elementInternals: ElementInternals;
2638
+ initialForm?: string;
2698
2639
  /**
2699
- * The form-associated flag.
2700
- * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example | Form-associated custom elements}
2640
+ * The form element that’s associated to the element, or `null` if no form is associated.
2701
2641
  *
2702
2642
  * @public
2703
2643
  */
2704
- static readonly formAssociated = true;
2644
+ get form(): HTMLFormElement | null;
2705
2645
  /**
2706
- * The element's validity state.
2646
+ * A `NodeList` of `<label>` element associated with the element.
2647
+ * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement/labels | `labels`} property
2648
+ *
2649
+ * @public
2650
+ */
2651
+ get labels(): NodeList;
2652
+ /**
2653
+ * The maximum number of characters a user can enter.
2707
2654
  *
2708
2655
  * @public
2709
2656
  * @remarks
2710
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validity | `ElementInternals.validity`} property.
2657
+ * HTML Attribute: `maxlength`
2711
2658
  */
2712
- get validity(): ValidityState;
2659
+ maxLength?: number;
2713
2660
  /**
2714
- * The validation message.
2661
+ * The minimum number of characters a user can enter.
2662
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/minlength | `minlength`} attribute
2715
2663
  *
2716
2664
  * @public
2717
2665
  * @remarks
2718
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validationMessage | `ElementInternals.validationMessage`} property.
2666
+ * HTML Attribute: `minlength`
2719
2667
  */
2720
- get validationMessage(): string;
2668
+ minLength?: number;
2721
2669
  /**
2722
- * The current value of the input.
2670
+ * The name of the element. This element's value will be surfaced during form submission under the provided name.
2671
+ *
2723
2672
  * @public
2673
+ * @remarks
2674
+ * HTML Attribute: `name`
2724
2675
  */
2725
- get value(): string;
2726
- set value(value: string);
2676
+ name: string;
2727
2677
  /**
2728
- * Determines if the control can be submitted for constraint validation.
2678
+ * Sets the placeholder value of the element, generally used to provide a hint to the user.
2679
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/placeholder | `placeholder`} attribute
2729
2680
  *
2730
2681
  * @public
2731
2682
  * @remarks
2732
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/willValidate | `ElementInternals.willValidate`} property.
2683
+ * HTML Attribute: `placeholder`
2684
+ * This attribute is not a valid substitute for a label.
2733
2685
  */
2734
- get willValidate(): boolean;
2686
+ placeholder?: string;
2735
2687
  /**
2736
- * The associated form element.
2688
+ * When true, the control will be immutable by user interaction.
2689
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/readonly | `readonly`} attribute
2737
2690
  *
2738
2691
  * @public
2739
2692
  * @remarks
2740
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/form | `ElementInternals.form`} property.
2693
+ * HTML Attribute: `readonly`
2741
2694
  */
2742
- get form(): HTMLFormElement | null;
2695
+ readOnly: boolean;
2696
+ protected readOnlyChanged(): void;
2743
2697
  /**
2744
- * Handles the internal control's `keypress` event.
2698
+ * The element's required attribute.
2745
2699
  *
2746
- * @internal
2700
+ * @public
2701
+ * @remarks
2702
+ * HTML Attribute: `required`
2747
2703
  */
2748
- beforeinputHandler(e: InputEvent): boolean | void;
2704
+ required: boolean;
2705
+ protected requiredChanged(): void;
2749
2706
  /**
2750
- * Change event handler for inner control.
2707
+ * Indicates whether the element can be resized by end users.
2751
2708
  *
2752
- * @internal
2753
- * @privateRemarks
2754
- * "Change" events are not `composable` so they will not permeate the shadow DOM boundary. This function effectively
2755
- * proxies the change event, emitting a `change` event whenever the internal control emits a `change` event.
2709
+ * @public
2710
+ * @remarks
2711
+ * HTML Attribute: `resize`
2756
2712
  */
2757
- changeHandler(e: InputEvent): boolean | void;
2713
+ resize: TextAreaResize;
2714
+ protected resizeChanged(prev: TextAreaResize | undefined, next: TextAreaResize | undefined): void;
2758
2715
  /**
2759
- * Checks the validity of the element and returns the result.
2716
+ * Controls whether or not to enable spell checking for the input field, or if the default spell checking configuration should be used.
2717
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck | `spellcheck`} attribute
2760
2718
  *
2761
2719
  * @public
2762
2720
  * @remarks
2763
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity | `HTMLInputElement.checkValidity()`} method.
2721
+ * HTML Attribute: `spellcheck`
2764
2722
  */
2765
- checkValidity(): boolean;
2723
+ spellcheck: boolean;
2766
2724
  /**
2767
- * Clicks the inner control when the component is clicked.
2725
+ * The length of the current value.
2726
+ * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement#textLength | 'textLength'} property
2768
2727
  *
2769
- * @param e - the event object
2728
+ * @public
2770
2729
  */
2771
- clickHandler(e: MouseEvent): boolean | void;
2772
- connectedCallback(): void;
2730
+ get textLength(): number;
2773
2731
  /**
2774
- * Focuses the inner control when the component is focused.
2732
+ * The type of the element, which is always "textarea".
2733
+ * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement/type | `type`} property
2775
2734
  *
2776
- * @param e - the event object
2777
2735
  * @public
2778
2736
  */
2779
- focusinHandler(e: FocusEvent): boolean | void;
2737
+ get type(): 'textarea';
2780
2738
  /**
2781
- * Resets the value to its initial value when the form is reset.
2739
+ * The element's validity state.
2782
2740
  *
2783
- * @internal
2741
+ * @public
2742
+ * @remarks
2743
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validity | `ElementInternals.validity`} property.
2784
2744
  */
2785
- formResetCallback(): void;
2745
+ get validity(): ValidityState;
2786
2746
  /**
2787
- * Handles implicit form submission when the user presses the "Enter" key.
2747
+ * The validation message.
2788
2748
  *
2789
- * @internal
2749
+ * @public
2750
+ * @remarks
2751
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validationMessage | `ElementInternals.validationMessage`} property.
2790
2752
  */
2791
- private implicitSubmit;
2753
+ get validationMessage(): string;
2792
2754
  /**
2793
- * Handles the internal control's `input` event.
2755
+ * Determines if the control can be submitted for constraint validation.
2794
2756
  *
2795
- * @internal
2757
+ * @public
2758
+ * @remarks
2759
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/willValidate | `ElementInternals.willValidate`} property.
2796
2760
  */
2797
- inputHandler(e: InputEvent): boolean | void;
2761
+ get willValidate(): boolean;
2798
2762
  /**
2799
- * Handles the internal control's `keydown` event.
2763
+ * The text content of the element before user interaction.
2764
+ * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement#defaultvalue | `defaultValue`} property
2800
2765
  *
2801
- * @param e - the event object
2802
- * @internal
2766
+ * @public
2767
+ * @remarks
2768
+ * In order to set the initial/default value, an author should either add the default value in the HTML as the children
2769
+ * of the component, or setting this property in JavaScript. Setting `innerHTML`, `innerText`, or `textContent` on this
2770
+ * component will not change the default value or the content displayed inside the component.
2803
2771
  */
2804
- keydownHandler(e: KeyboardEvent): boolean | void;
2772
+ get defaultValue(): string;
2773
+ set defaultValue(next: string);
2805
2774
  /**
2806
- * Selects all the text in the text field.
2775
+ * The value of the element.
2807
2776
  *
2808
2777
  * @public
2809
- * @privateRemarks
2810
- * The `select` event does not permeate the shadow DOM boundary. This function effectively proxies the event,
2811
- * emitting a `select` event whenever the internal control emits a `select` event
2778
+ * @remarks
2779
+ * Reflects the `value` property.
2780
+ */
2781
+ get value(): string;
2782
+ set value(next: string);
2783
+ constructor();
2784
+ /**
2785
+ * @internal
2786
+ */
2787
+ connectedCallback(): void;
2788
+ /**
2789
+ * @internal
2790
+ */
2791
+ disconnectedCallback(): void;
2792
+ /**
2793
+ * Resets the value to its initial value when the form is reset.
2812
2794
  *
2795
+ * @internal
2813
2796
  */
2814
- select(): void;
2797
+ formResetCallback(): void;
2815
2798
  /**
2816
- * Sets the custom validity message.
2817
- * @param message - The message to set
2799
+ * @internal
2800
+ */
2801
+ formDisabledCallback(disabled: boolean): void;
2802
+ /**
2803
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/setFormValue | `ElementInternals.setFormValue()`} method.
2804
+ *
2805
+ * @internal
2806
+ */
2807
+ setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
2808
+ /**
2809
+ * Checks the validity of the element and returns the result.
2818
2810
  *
2819
2811
  * @public
2812
+ * @remarks
2813
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity | `HTMLInputElement.checkValidity()`} method.
2820
2814
  */
2821
- setCustomValidity(message: string): void;
2815
+ checkValidity(): boolean;
2822
2816
  /**
2823
2817
  * Reports the validity of the element.
2824
2818
  *
@@ -2828,11 +2822,12 @@ export declare class BaseTextInput extends FASTElement {
2828
2822
  */
2829
2823
  reportValidity(): boolean;
2830
2824
  /**
2831
- * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/setFormValue | `ElementInternals.setFormValue()`} method.
2825
+ * Sets the custom validity message.
2826
+ * @param message - The message to set
2832
2827
  *
2833
- * @internal
2828
+ * @public
2834
2829
  */
2835
- setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
2830
+ setCustomValidity(message: string | null): void;
2836
2831
  /**
2837
2832
  * Sets the validity of the control.
2838
2833
  *
@@ -2843,10 +2838,430 @@ export declare class BaseTextInput extends FASTElement {
2843
2838
  * @internal
2844
2839
  */
2845
2840
  setValidity(flags?: Partial<ValidityState>, message?: string, anchor?: HTMLElement): void;
2846
- }
2847
-
2848
- /**
2849
- * CSS custom property value for the {@link @fluentui/tokens#borderRadiusCircular | `borderRadiusCircular`} design token.
2841
+ /**
2842
+ * Selects the content in the element.
2843
+ *
2844
+ * @public
2845
+ */
2846
+ select(): void;
2847
+ private setDefaultValue;
2848
+ private bindEvents;
2849
+ /**
2850
+ * Gets the content inside the light DOM, if any HTML element is present, use its `outerHTML` value.
2851
+ */
2852
+ private getContent;
2853
+ private observeControlElAttrs;
2854
+ private setDisabledSideEffect;
2855
+ private toggleUserValidityState;
2856
+ private maybeCreateAutoSizerEl;
2857
+ /**
2858
+ * @internal
2859
+ */
2860
+ handleControlInput(): void;
2861
+ /**
2862
+ * @internal
2863
+ */
2864
+ handleControlChange(): void;
2865
+ /**
2866
+ * @internal
2867
+ */
2868
+ handleControlSelect(): void;
2869
+ }
2870
+
2871
+ /**
2872
+ * A Text Input Custom HTML Element.
2873
+ * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input | `<input>`} element.
2874
+ *
2875
+ * @slot start - Content which can be provided before the input
2876
+ * @slot end - Content which can be provided after the input
2877
+ * @slot - The default slot for button content
2878
+ * @csspart label - The internal `<label>` element
2879
+ * @csspart root - the root container for the internal control
2880
+ * @csspart control - The internal `<input>` control
2881
+ * @public
2882
+ */
2883
+ export declare class BaseTextInput extends FASTElement {
2884
+ /**
2885
+ * Indicates the element's autocomplete state.
2886
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/autocomplete | `autocomplete`} attribute
2887
+ *
2888
+ * @public
2889
+ * @remarks
2890
+ * HTML Attribute: `autocomplete`
2891
+ */
2892
+ autocomplete?: string;
2893
+ /**
2894
+ * Indicates that the element should get focus after the page finishes loading.
2895
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Element/input#autofocus | `autofocus`} attribute
2896
+ *
2897
+ * @public
2898
+ * @remarks
2899
+ * HTML Attribute: `autofocus`
2900
+ */
2901
+ autofocus: boolean;
2902
+ /**
2903
+ * The current value of the input.
2904
+ * @public
2905
+ * @remarks
2906
+ * HTML Attribute: `current-value`
2907
+ */
2908
+ currentValue: string;
2909
+ /**
2910
+ * Tracks the current value of the input.
2911
+ *
2912
+ * @param prev - the previous value
2913
+ * @param next - the next value
2914
+ *
2915
+ * @internal
2916
+ */
2917
+ currentValueChanged(prev: string, next: string): void;
2918
+ /**
2919
+ * The default slotted content. This is the content that appears in the text field label.
2920
+ *
2921
+ * @internal
2922
+ */
2923
+ defaultSlottedNodes: Node[];
2924
+ /**
2925
+ * Updates the control label visibility based on the presence of default slotted content.
2926
+ *
2927
+ * @internal
2928
+ */
2929
+ defaultSlottedNodesChanged(prev: Node[] | undefined, next: Node[] | undefined): void;
2930
+ /**
2931
+ * Sets the directionality of the element to be submitted with form data.
2932
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/dirname | `dirname`} attribute
2933
+ *
2934
+ * @public
2935
+ * @remarks
2936
+ * HTML Attribute: `dirname`
2937
+ */
2938
+ dirname?: string;
2939
+ /**
2940
+ * Sets the element's disabled state.
2941
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/disabled | `disabled`} attribute
2942
+ *
2943
+ * @public
2944
+ * @remarks
2945
+ * HTML Attribute: `disabled`
2946
+ */
2947
+ disabled?: boolean;
2948
+ /**
2949
+ * The id of a form to associate the element to.
2950
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Element/input#form | `form`} attribute
2951
+ *
2952
+ * @public
2953
+ * @remarks
2954
+ * HTML Attribute: `form`
2955
+ */
2956
+ formAttribute?: string;
2957
+ /**
2958
+ * The initial value of the input.
2959
+ *
2960
+ * @public
2961
+ * @remarks
2962
+ * HTML Attribute: `value`
2963
+ */
2964
+ initialValue: string;
2965
+ /**
2966
+ * Sets the value of the element to the initial value.
2967
+ *
2968
+ * @internal
2969
+ */
2970
+ initialValueChanged(): void;
2971
+ /**
2972
+ * Allows associating a `<datalist>` to the element by ID.
2973
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Element/input#list | `list`} attribute
2974
+ *
2975
+ * @public
2976
+ * @remarks
2977
+ * HTML Attribute: `list`
2978
+ */
2979
+ list: string;
2980
+ /**
2981
+ * The maximum number of characters a user can enter.
2982
+ *
2983
+ * @public
2984
+ * @remarks
2985
+ * HTML Attribute: `maxlength`
2986
+ */
2987
+ maxlength: number;
2988
+ /**
2989
+ * The minimum number of characters a user can enter.
2990
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/minlength | `minlength`} attribute
2991
+ *
2992
+ * @public
2993
+ * @remarks
2994
+ * HTML Attribute: `minlength`
2995
+ */
2996
+ minlength: number;
2997
+ /**
2998
+ * Indicates that a comma-separated list of email addresses can be entered. This attribute is only valid when `type="email"`.
2999
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/multiple | `multiple`} attribute
3000
+ *
3001
+ * @public
3002
+ * @remarks
3003
+ * HTML Attribute: `multiple`
3004
+ */
3005
+ multiple: boolean;
3006
+ /**
3007
+ * The name of the element. This element's value will be surfaced during form submission under the provided name.
3008
+ *
3009
+ * @public
3010
+ * @remarks
3011
+ * HTML Attribute: `name`
3012
+ */
3013
+ name: string;
3014
+ /**
3015
+ * A regular expression that the value must match to pass validation.
3016
+ *
3017
+ * @public
3018
+ * @remarks
3019
+ * HTML Attribute: `pattern`
3020
+ */
3021
+ pattern: string;
3022
+ /**
3023
+ * Sets the placeholder value of the element, generally used to provide a hint to the user.
3024
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/placeholder | `placeholder`} attribute
3025
+ *
3026
+ * @public
3027
+ * @remarks
3028
+ * HTML Attribute: `placeholder`
3029
+ * This attribute is not a valid substitute for a label.
3030
+ */
3031
+ placeholder: string;
3032
+ /**
3033
+ * When true, the control will be immutable by user interaction.
3034
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/readonly | `readonly`} attribute
3035
+ *
3036
+ * @public
3037
+ * @remarks
3038
+ * HTML Attribute: `readonly`
3039
+ */
3040
+ readOnly?: boolean;
3041
+ /**
3042
+ * Syncs the `ElementInternals.ariaReadOnly` property when the `readonly` property changes.
3043
+ *
3044
+ * @internal
3045
+ */
3046
+ readOnlyChanged(): void;
3047
+ /**
3048
+ * The element's required attribute.
3049
+ *
3050
+ * @public
3051
+ * @remarks
3052
+ * HTML Attribute: `required`
3053
+ */
3054
+ required: boolean;
3055
+ /**
3056
+ * Syncs the element's internal `aria-required` state with the `required` attribute.
3057
+ *
3058
+ * @param previous - the previous required state
3059
+ * @param next - the current required state
3060
+ *
3061
+ * @internal
3062
+ */
3063
+ requiredChanged(previous: boolean, next: boolean): void;
3064
+ /**
3065
+ * Sets the width of the element to a specified number of characters.
3066
+ *
3067
+ * @public
3068
+ * @remarks
3069
+ * HTML Attribute: `size`
3070
+ */
3071
+ size: number;
3072
+ /**
3073
+ * Controls whether or not to enable spell checking for the input field, or if the default spell checking configuration should be used.
3074
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck | `spellcheck`} attribute
3075
+ *
3076
+ * @public
3077
+ * @remarks
3078
+ * HTML Attribute: `spellcheck`
3079
+ */
3080
+ spellcheck: boolean;
3081
+ /**
3082
+ * Allows setting a type or mode of text.
3083
+ *
3084
+ * @public
3085
+ * @remarks
3086
+ * HTML Attribute: `type`
3087
+ */
3088
+ type: TextInputType;
3089
+ /**
3090
+ * A reference to the internal input element.
3091
+ *
3092
+ * @internal
3093
+ */
3094
+ control: HTMLInputElement;
3095
+ /**
3096
+ * A reference to the internal label element.
3097
+ *
3098
+ * @internal
3099
+ */
3100
+ controlLabel: HTMLLabelElement;
3101
+ /**
3102
+ * Indicates that the value has been changed by the user.
3103
+ *
3104
+ * @internal
3105
+ */
3106
+ private dirtyValue;
3107
+ /**
3108
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
3109
+ *
3110
+ * @internal
3111
+ */
3112
+ elementInternals: ElementInternals;
3113
+ /**
3114
+ * The form-associated flag.
3115
+ * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example | Form-associated custom elements}
3116
+ *
3117
+ * @public
3118
+ */
3119
+ static readonly formAssociated = true;
3120
+ /**
3121
+ * The element's validity state.
3122
+ *
3123
+ * @public
3124
+ * @remarks
3125
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validity | `ElementInternals.validity`} property.
3126
+ */
3127
+ get validity(): ValidityState;
3128
+ /**
3129
+ * The validation message.
3130
+ *
3131
+ * @public
3132
+ * @remarks
3133
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validationMessage | `ElementInternals.validationMessage`} property.
3134
+ */
3135
+ get validationMessage(): string;
3136
+ /**
3137
+ * The current value of the input.
3138
+ * @public
3139
+ */
3140
+ get value(): string;
3141
+ set value(value: string);
3142
+ /**
3143
+ * Determines if the control can be submitted for constraint validation.
3144
+ *
3145
+ * @public
3146
+ * @remarks
3147
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/willValidate | `ElementInternals.willValidate`} property.
3148
+ */
3149
+ get willValidate(): boolean;
3150
+ /**
3151
+ * The associated form element.
3152
+ *
3153
+ * @public
3154
+ * @remarks
3155
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/form | `ElementInternals.form`} property.
3156
+ */
3157
+ get form(): HTMLFormElement | null;
3158
+ /**
3159
+ * Handles the internal control's `keypress` event.
3160
+ *
3161
+ * @internal
3162
+ */
3163
+ beforeinputHandler(e: InputEvent): boolean | void;
3164
+ /**
3165
+ * Change event handler for inner control.
3166
+ *
3167
+ * @internal
3168
+ * @privateRemarks
3169
+ * "Change" events are not `composable` so they will not permeate the shadow DOM boundary. This function effectively
3170
+ * proxies the change event, emitting a `change` event whenever the internal control emits a `change` event.
3171
+ */
3172
+ changeHandler(e: InputEvent): boolean | void;
3173
+ /**
3174
+ * Checks the validity of the element and returns the result.
3175
+ *
3176
+ * @public
3177
+ * @remarks
3178
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity | `HTMLInputElement.checkValidity()`} method.
3179
+ */
3180
+ checkValidity(): boolean;
3181
+ /**
3182
+ * Clicks the inner control when the component is clicked.
3183
+ *
3184
+ * @param e - the event object
3185
+ */
3186
+ clickHandler(e: MouseEvent): boolean | void;
3187
+ connectedCallback(): void;
3188
+ /**
3189
+ * Focuses the inner control when the component is focused.
3190
+ *
3191
+ * @param e - the event object
3192
+ * @public
3193
+ */
3194
+ focusinHandler(e: FocusEvent): boolean | void;
3195
+ /**
3196
+ * Resets the value to its initial value when the form is reset.
3197
+ *
3198
+ * @internal
3199
+ */
3200
+ formResetCallback(): void;
3201
+ /**
3202
+ * Handles implicit form submission when the user presses the "Enter" key.
3203
+ *
3204
+ * @internal
3205
+ */
3206
+ private implicitSubmit;
3207
+ /**
3208
+ * Handles the internal control's `input` event.
3209
+ *
3210
+ * @internal
3211
+ */
3212
+ inputHandler(e: InputEvent): boolean | void;
3213
+ /**
3214
+ * Handles the internal control's `keydown` event.
3215
+ *
3216
+ * @param e - the event object
3217
+ * @internal
3218
+ */
3219
+ keydownHandler(e: KeyboardEvent): boolean | void;
3220
+ /**
3221
+ * Selects all the text in the text field.
3222
+ *
3223
+ * @public
3224
+ * @privateRemarks
3225
+ * The `select` event does not permeate the shadow DOM boundary. This function effectively proxies the event,
3226
+ * emitting a `select` event whenever the internal control emits a `select` event
3227
+ *
3228
+ */
3229
+ select(): void;
3230
+ /**
3231
+ * Sets the custom validity message.
3232
+ * @param message - The message to set
3233
+ *
3234
+ * @public
3235
+ */
3236
+ setCustomValidity(message: string): void;
3237
+ /**
3238
+ * Reports the validity of the element.
3239
+ *
3240
+ * @public
3241
+ * @remarks
3242
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/reportValidity | `HTMLInputElement.reportValidity()`} method.
3243
+ */
3244
+ reportValidity(): boolean;
3245
+ /**
3246
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/setFormValue | `ElementInternals.setFormValue()`} method.
3247
+ *
3248
+ * @internal
3249
+ */
3250
+ setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
3251
+ /**
3252
+ * Sets the validity of the control.
3253
+ *
3254
+ * @param flags - Validity flags. If not provided, the control's `validity` will be used.
3255
+ * @param message - Optional message to supply. If not provided, the control's `validationMessage` will be used. If the control does not have a `validationMessage`, the message will be empty.
3256
+ * @param anchor - Optional anchor to use for the validation message. If not provided, the control will be used.
3257
+ *
3258
+ * @internal
3259
+ */
3260
+ setValidity(flags?: Partial<ValidityState>, message?: string, anchor?: HTMLElement): void;
3261
+ }
3262
+
3263
+ /**
3264
+ * CSS custom property value for the {@link @fluentui/tokens#borderRadiusCircular | `borderRadiusCircular`} design token.
2850
3265
  * @public
2851
3266
  */
2852
3267
  export declare const borderRadiusCircular = "var(--borderRadiusCircular)";
@@ -5811,279 +6226,737 @@ export declare class Divider extends BaseDivider {
5811
6226
  * Align content within divider
5812
6227
  * @public
5813
6228
  */
5814
- export declare const DividerAlignContent: {
5815
- readonly center: "center";
6229
+ export declare const DividerAlignContent: {
6230
+ readonly center: "center";
6231
+ readonly start: "start";
6232
+ readonly end: "end";
6233
+ };
6234
+
6235
+ /**
6236
+ * The types for DividerAlignContent
6237
+ * @public
6238
+ */
6239
+ export declare type DividerAlignContent = ValuesOf<typeof DividerAlignContent>;
6240
+
6241
+ /**
6242
+ * DividerAppearance - divider color defined by a design token alias.
6243
+ * @public
6244
+ */
6245
+ export declare const DividerAppearance: {
6246
+ readonly strong: "strong";
6247
+ readonly brand: "brand";
6248
+ readonly subtle: "subtle";
6249
+ };
6250
+
6251
+ /**
6252
+ * The types for Appearance
6253
+ * @public
6254
+ */
6255
+ export declare type DividerAppearance = ValuesOf<typeof DividerAppearance>;
6256
+
6257
+ /**
6258
+ * The Fluent Divider Element
6259
+ *
6260
+ * @public
6261
+ * @remarks
6262
+ * HTML Element: \<fluent-divider\>
6263
+ */
6264
+ export declare const DividerDefinition: FASTElementDefinition<typeof Divider>;
6265
+
6266
+ /**
6267
+ * Divider orientation
6268
+ * @public
6269
+ */
6270
+ export declare const DividerOrientation: {
6271
+ readonly horizontal: "horizontal"; /**
6272
+ * Divider roles
6273
+ * @public
6274
+ */
6275
+ readonly vertical: "vertical";
6276
+ };
6277
+
6278
+ /**
6279
+ * The types for Divider orientation
6280
+ * @public
6281
+ */
6282
+ export declare type DividerOrientation = ValuesOf<typeof DividerOrientation>;
6283
+
6284
+ /**
6285
+ * Divider roles
6286
+ * @public
6287
+ */
6288
+ export declare const DividerRole: {
6289
+ /**
6290
+ * The divider semantically separates content
6291
+ */
6292
+ readonly separator: "separator";
6293
+ /**
6294
+ * The divider has no semantic value and is for visual presentation only.
6295
+ */
6296
+ readonly presentation: "presentation";
6297
+ };
6298
+
6299
+ /**
6300
+ * The types for Divider roles
6301
+ * @public
6302
+ */
6303
+ export declare type DividerRole = ValuesOf<typeof DividerRole>;
6304
+
6305
+ /** Divider styles
6306
+ * @public
6307
+ */
6308
+ export declare const DividerStyles: ElementStyles;
6309
+
6310
+ /**
6311
+ * Template for the Divider component
6312
+ * @public
6313
+ */
6314
+ export declare const DividerTemplate: ElementViewTemplate<Divider>;
6315
+
6316
+ /**
6317
+ * A Drawer component that allows content to be displayed in a side panel. It can be rendered as modal or non-modal.
6318
+ * @extends FASTElement
6319
+ *
6320
+ * @attr {DrawerType} type - Determines whether the drawer should be displayed as modal, non-modal, or alert.
6321
+ * @attr {DrawerPosition} position - Sets the position of the drawer (start/end).
6322
+ * @attr {DrawerSize} size - Sets the size of the drawer (small/medium/large).
6323
+ * @attr {string} ariaDescribedby - The ID of the element that describes the drawer.
6324
+ * @attr {string} ariaLabelledby - The ID of the element that labels the drawer.
6325
+ *
6326
+ * @csspart dialog - The dialog element of the drawer.
6327
+ *
6328
+ * @slot - Default slot for the content of the drawer.
6329
+ *
6330
+ * @fires toggle - Event emitted after the dialog's open state changes.
6331
+ * @fires beforetoggle - Event emitted before the dialog's open state changes.
6332
+ *
6333
+ * @method show - Method to show the drawer.
6334
+ * @method hide - Method to hide the drawer.
6335
+ * @method clickHandler - Handles click events on the drawer.
6336
+ * @method emitToggle - Emits an event after the dialog's open state changes.
6337
+ * @method emitBeforeToggle - Emits an event before the dialog's open state changes.
6338
+ *
6339
+ * @summary A component that provides a drawer for displaying content in a side panel.
6340
+ *
6341
+ * @tag fluent-drawer
6342
+ */
6343
+ export declare class Drawer extends FASTElement {
6344
+ /**
6345
+ * @public
6346
+ * Determines whether the drawer should be displayed as modal or non-modal
6347
+ * When rendered as a modal, an overlay is applied over the rest of the view.
6348
+ */
6349
+ type: DrawerType;
6350
+ /**
6351
+ * @public
6352
+ * The ID of the element that labels the drawer.
6353
+ */
6354
+ ariaLabelledby?: string;
6355
+ /**
6356
+ * @public
6357
+ * The ID of the element that describes the drawer.
6358
+ */
6359
+ ariaDescribedby?: string;
6360
+ /**""
6361
+ * @public
6362
+ * @defaultValue start
6363
+ * Sets the position of the drawer (start/end).
6364
+ */
6365
+ position: DrawerPosition;
6366
+ /**
6367
+ * @public
6368
+ * @defaultValue medium
6369
+ * Sets the size of the drawer (small/medium/large).
6370
+ */
6371
+ size: DrawerSize;
6372
+ /**
6373
+ * @public
6374
+ * The dialog element.
6375
+ */
6376
+ dialog: HTMLDialogElement;
6377
+ /**
6378
+ * @public
6379
+ * Method to emit an event after the dialog's open state changes
6380
+ * HTML spec proposal: https://github.com/whatwg/html/issues/9733
6381
+ */
6382
+ emitToggle: () => void;
6383
+ /**
6384
+ * @public
6385
+ * Method to emit an event before the dialog's open state changes
6386
+ * HTML spec proposal: https://github.com/whatwg/html/issues/9733
6387
+ */
6388
+ emitBeforeToggle: () => void;
6389
+ /**
6390
+ * @public
6391
+ * Method to show the drawer
6392
+ */
6393
+ show(): void;
6394
+ /**
6395
+ * @public
6396
+ * Method to hide the drawer
6397
+ */
6398
+ hide(): void;
6399
+ /**
6400
+ * @public
6401
+ * @param event - The click event
6402
+ * @returns boolean - Always returns true
6403
+ * Handles click events on the drawer.
6404
+ */
6405
+ clickHandler(event: Event): boolean;
6406
+ }
6407
+
6408
+ /**
6409
+ * A DrawerBody component to layout drawer content
6410
+ * @extends FASTElement
6411
+ *
6412
+ * @slot title - The title slot
6413
+ * @slot close - The close button slot
6414
+ * @slot - The default content slot
6415
+ * @slot footer - The footer slot
6416
+ *
6417
+ * @csspart header - The header part of the drawer
6418
+ * @csspart content - The content part of the drawer
6419
+ * @csspart footer - The footer part of the drawer
6420
+ *
6421
+ * @summary A component that provides a drawer body for displaying content in a side panel.
6422
+ *
6423
+ * @tag fluent-drawer-body
6424
+ */
6425
+ export declare class DrawerBody extends FASTElement {
6426
+ }
6427
+
6428
+ /**
6429
+ *
6430
+ * @public
6431
+ * @remarks
6432
+ * HTML Element: <fluent-drawer>
6433
+ */
6434
+ export declare const DrawerBodyDefinition: FASTElementDefinition<typeof DrawerBody>;
6435
+
6436
+ /** Drawer styles
6437
+ * @public
6438
+ */
6439
+ export declare const DrawerBodyStyles: ElementStyles;
6440
+
6441
+ export declare const DrawerBodyTemplate: ElementViewTemplate<DrawerBody>;
6442
+
6443
+ /**
6444
+ *
6445
+ * @public
6446
+ * @remarks
6447
+ * HTML Element: <fluent-drawer>
6448
+ */
6449
+ export declare const DrawerDefinition: FASTElementDefinition<typeof Drawer>;
6450
+
6451
+ /**
6452
+ * A drawer can be positioned on the left or right side of the viewport.
6453
+ */
6454
+ export declare const DrawerPosition: {
5816
6455
  readonly start: "start";
5817
6456
  readonly end: "end";
5818
6457
  };
5819
6458
 
5820
6459
  /**
5821
- * The types for DividerAlignContent
6460
+ * The position of the drawer.
5822
6461
  * @public
5823
6462
  */
5824
- export declare type DividerAlignContent = ValuesOf<typeof DividerAlignContent>;
6463
+ export declare type DrawerPosition = ValuesOf<typeof DrawerPosition>;
5825
6464
 
5826
6465
  /**
5827
- * DividerAppearance - divider color defined by a design token alias.
5828
- * @public
6466
+ * A drawer can be different sizes
5829
6467
  */
5830
- export declare const DividerAppearance: {
5831
- readonly strong: "strong";
5832
- readonly brand: "brand";
5833
- readonly subtle: "subtle";
6468
+ export declare const DrawerSize: {
6469
+ readonly small: "small";
6470
+ readonly medium: "medium";
6471
+ readonly large: "large";
6472
+ readonly full: "full";
5834
6473
  };
5835
6474
 
5836
6475
  /**
5837
- * The types for Appearance
6476
+ * The size of the drawer.
5838
6477
  * @public
5839
6478
  */
5840
- export declare type DividerAppearance = ValuesOf<typeof DividerAppearance>;
6479
+ export declare type DrawerSize = ValuesOf<typeof DrawerSize>;
5841
6480
 
5842
- /**
5843
- * The Fluent Divider Element
5844
- *
6481
+ /** Drawer styles
5845
6482
  * @public
5846
- * @remarks
5847
- * HTML Element: \<fluent-divider\>
5848
6483
  */
5849
- export declare const DividerDefinition: FASTElementDefinition<typeof Divider>;
6484
+ export declare const DrawerStyles: ElementStyles;
6485
+
6486
+ export declare const DrawerTemplate: ElementViewTemplate<Drawer>;
5850
6487
 
5851
6488
  /**
5852
- * Divider orientation
5853
- * @public
6489
+ * A drawer can be different sizes
5854
6490
  */
5855
- export declare const DividerOrientation: {
5856
- readonly horizontal: "horizontal"; /**
5857
- * Divider roles
5858
- * @public
5859
- */
5860
- readonly vertical: "vertical";
6491
+ export declare const DrawerType: {
6492
+ readonly nonModal: "non-modal";
6493
+ readonly modal: "modal";
6494
+ readonly inline: "inline";
5861
6495
  };
5862
6496
 
5863
6497
  /**
5864
- * The types for Divider orientation
6498
+ * The size of the drawer.
5865
6499
  * @public
5866
6500
  */
5867
- export declare type DividerOrientation = ValuesOf<typeof DividerOrientation>;
6501
+ export declare type DrawerType = ValuesOf<typeof DrawerType>;
5868
6502
 
5869
6503
  /**
5870
- * Divider roles
6504
+ * The Fluent Dropdown Element. Implements {@link @microsoft/fast-foundation#BaseDropdown}.
6505
+ *
6506
+ * @slot - The default slot. Accepts a {@link (Listbox:class)} element.
6507
+ * @slot indicator - The indicator slot.
6508
+ * @slot control - The control slot. This slot is automatically populated and should not be manually manipulated.
6509
+ *
5871
6510
  * @public
5872
6511
  */
5873
- export declare const DividerRole: {
6512
+ export declare class Dropdown extends BaseDropdown {
5874
6513
  /**
5875
- * The divider semantically separates content
6514
+ * Static property for the anchor positioning fallback observer. The observer is used to flip the listbox when it is
6515
+ * out of view.
6516
+ * @remarks This is only used when the browser does not support CSS anchor positioning.
6517
+ * @internal
5876
6518
  */
5877
- readonly separator: "separator";
6519
+ private static AnchorPositionFallbackObserver;
5878
6520
  /**
5879
- * The divider has no semantic value and is for visual presentation only.
6521
+ * The appearance of the dropdown.
6522
+ *
6523
+ * @public
6524
+ * @remarks
6525
+ * HTML Attribute: `appearance`
5880
6526
  */
5881
- readonly presentation: "presentation";
5882
- };
6527
+ appearance: DropdownAppearance;
6528
+ /**
6529
+ * Swaps appearance states when the appearance property changes.
6530
+ *
6531
+ * @param prev - the previous appearance state
6532
+ * @param next - the current appearance state
6533
+ * @internal
6534
+ */
6535
+ appearanceChanged(prev: DropdownAppearance | undefined, next: DropdownAppearance | undefined): void;
6536
+ /**
6537
+ * The size of the dropdown.
6538
+ * @public
6539
+ * @remarks
6540
+ * HTML Attribute: `size`
6541
+ */
6542
+ size?: DropdownSize;
6543
+ /**
6544
+ * Swaps size states when the size property changes.
6545
+ *
6546
+ * @param prev - the previous size state
6547
+ * @param next - the current size state
6548
+ * @internal
6549
+ */
6550
+ sizeChanged(prev: DropdownSize | undefined, next: DropdownSize | undefined): void;
6551
+ connectedCallback(): void;
6552
+ constructor();
6553
+ disconnectedCallback(): void;
6554
+ /**
6555
+ * Handles the connected event for the listbox.
6556
+ *
6557
+ * @param e - the event object
6558
+ * @internal
6559
+ */
6560
+ private listboxConnectedHandler;
6561
+ /**
6562
+ * Adds or removes the window event listener based on the open state.
6563
+ *
6564
+ * @param prev - the previous open state
6565
+ * @param next - the current open state
6566
+ * @internal
6567
+ */
6568
+ openChanged(prev: boolean | undefined, next: boolean | undefined): void;
6569
+ /**
6570
+ * When anchor positioning isn't supported, an intersection observer is used to flip the listbox when it hits the
6571
+ * viewport bounds. One static observer is used for all dropdowns.
6572
+ *
6573
+ * @internal
6574
+ */
6575
+ private anchorPositionFallback;
6576
+ }
5883
6577
 
5884
6578
  /**
5885
- * The types for Divider roles
6579
+ * Values for the `appearance` attribute of the {@link (Dropdown:class)} component.
5886
6580
  * @public
5887
6581
  */
5888
- export declare type DividerRole = ValuesOf<typeof DividerRole>;
6582
+ export declare const DropdownAppearance: {
6583
+ filledDarker: string;
6584
+ filledLighter: string;
6585
+ outline: string;
6586
+ transparent: string;
6587
+ };
5889
6588
 
5890
- /** Divider styles
6589
+ /** @public */
6590
+ export declare type DropdownAppearance = ValuesOf<typeof DropdownAppearance>;
6591
+
6592
+ /**
6593
+ * The template partial for the dropdown button element. This template is used when the `type` property is set to "dropdown".
6594
+ *
5891
6595
  * @public
6596
+ * @remarks
6597
+ * Since the button element must be present in the light DOM for ARIA to function correctly, this template should not be
6598
+ * overridden.
6599
+ * @see {@link BaseDropdown.insertControl}
5892
6600
  */
5893
- export declare const DividerStyles: ElementStyles;
6601
+ export declare const dropdownButtonTemplate: ViewTemplate<BaseDropdown, any>;
5894
6602
 
5895
6603
  /**
5896
- * Template for the Divider component
6604
+ * The Fluent Dropdown Element.
6605
+ *
5897
6606
  * @public
6607
+ * @remarks
6608
+ * HTML Element: `<fluent-dropdown>`
5898
6609
  */
5899
- export declare const DividerTemplate: ElementViewTemplate<Divider>;
6610
+ export declare const DropdownDefinition: FASTElementDefinition<typeof Dropdown>;
5900
6611
 
5901
6612
  /**
5902
- * A Drawer component that allows content to be displayed in a side panel. It can be rendered as modal or non-modal.
5903
- * @extends FASTElement
5904
- *
5905
- * @attr {DrawerType} type - Determines whether the drawer should be displayed as modal, non-modal, or alert.
5906
- * @attr {DrawerPosition} position - Sets the position of the drawer (start/end).
5907
- * @attr {DrawerSize} size - Sets the size of the drawer (small/medium/large).
5908
- * @attr {string} ariaDescribedby - The ID of the element that describes the drawer.
5909
- * @attr {string} ariaLabelledby - The ID of the element that labels the drawer.
5910
- *
5911
- * @csspart dialog - The dialog element of the drawer.
6613
+ * The template partial for the dropdown input element. This template is used when the `type` property is set to "combobox".
5912
6614
  *
5913
- * @slot - Default slot for the content of the drawer.
6615
+ * @public
6616
+ * @remarks
6617
+ * Since the input element must be present in the light DOM for ARIA to function correctly, this template should not be
6618
+ * overridden.
6619
+ * @see {@link BaseDropdown.insertControl}
6620
+ */
6621
+ export declare const dropdownInputTemplate: ViewTemplate<BaseDropdown, any>;
6622
+
6623
+ /**
6624
+ * A DropdownOption Custom HTML Element.
6625
+ * Implements the {@link https://w3c.github.io/aria/#option | ARIA option } role.
5914
6626
  *
5915
- * @fires toggle - Event emitted after the dialog's open state changes.
5916
- * @fires beforetoggle - Event emitted before the dialog's open state changes.
6627
+ * @slot - The default slot for the option's content.
6628
+ * @slot checked-indicator - The checked indicator.
6629
+ * @slot description - Optional description content.
5917
6630
  *
5918
- * @method show - Method to show the drawer.
5919
- * @method hide - Method to hide the drawer.
5920
- * @method clickHandler - Handles click events on the drawer.
5921
- * @method emitToggle - Emits an event after the dialog's open state changes.
5922
- * @method emitBeforeToggle - Emits an event before the dialog's open state changes.
6631
+ * @remarks
6632
+ * To support single and multiple selection modes with the {@link (BaseDropdown:class)} element, the Option element
6633
+ * itself handles form association and value submission, rather than its parent Dropdown element. In this way, the
6634
+ * Option element is a variation of the Checkbox element that is specifically designed for use in the Dropdown element.
5923
6635
  *
5924
- * @summary A component that provides a drawer for displaying content in a side panel.
6636
+ * This class is named `DropdownOption` to avoid conflicts with the native `Option` global. Related constructs are also
6637
+ * titled with `DropdownOption` to maintain consistency.
5925
6638
  *
5926
- * @tag fluent-drawer
6639
+ * @public
5927
6640
  */
5928
- export declare class Drawer extends FASTElement {
6641
+ export declare class DropdownOption extends FASTElement implements Start {
5929
6642
  /**
6643
+ * Indicates that the option is active.
6644
+ *
5930
6645
  * @public
5931
- * Determines whether the drawer should be displayed as modal or non-modal
5932
- * When rendered as a modal, an overlay is applied over the rest of the view.
5933
6646
  */
5934
- type: DrawerType;
6647
+ active: boolean;
6648
+ /**
6649
+ * Changes the active state of the option when the active property changes.
6650
+ *
6651
+ * @param prev - the previous active state
6652
+ * @param next - the current active state
6653
+ * @internal
6654
+ */
6655
+ protected activeChanged(prev: boolean, next: boolean): void;
6656
+ /**
6657
+ * The current selected state of the option.
6658
+ *
6659
+ * @internal
6660
+ */
6661
+ currentSelected?: boolean;
6662
+ /**
6663
+ * Sets the selected property to match the currentSelected state.
6664
+ *
6665
+ * @param prev - the previous selected state
6666
+ * @param next - the current selected state
6667
+ * @internal
6668
+ */
6669
+ currentSelectedChanged(prev: boolean | undefined, next: boolean | undefined): void;
6670
+ /**
6671
+ * The initial selected state of the option.
6672
+ *
6673
+ * @public
6674
+ * @remarks
6675
+ * HTML Attribute: `checked`
6676
+ */
6677
+ defaultSelected?: boolean;
6678
+ /**
6679
+ * Updates the selected state when the `selected` attribute is changed, unless the selected state has been changed by the user.
6680
+ *
6681
+ * @param prev - The previous initial selected state
6682
+ * @param next - The current initial selected state
6683
+ * @internal
6684
+ */
6685
+ protected defaultSelectedChanged(prev: boolean | undefined, next: boolean | undefined): void;
6686
+ /**
6687
+ * The collection of slotted description elements.
6688
+ *
6689
+ * @internal
6690
+ */
6691
+ descriptionSlot: Node[];
6692
+ /**
6693
+ * Changes the description state of the option when the description slot changes.
6694
+ *
6695
+ * @param prev - the previous collection of description elements
6696
+ * @param next - the current collection of description elements
6697
+ * @internal
6698
+ */
6699
+ descriptionSlotChanged(prev: Node[] | undefined, next: Node[] | undefined): void;
6700
+ /**
6701
+ * The current disabled state of the option.
6702
+ *
6703
+ * @public
6704
+ */
6705
+ disabled?: boolean;
6706
+ /**
6707
+ * Toggles the disabled state when the user changes the `disabled` property.
6708
+ *
6709
+ * @internal
6710
+ */
6711
+ protected disabledChanged(prev: boolean | undefined, next: boolean | undefined): void;
6712
+ /**
6713
+ * The initial disabled state of the option.
6714
+ *
6715
+ * @public
6716
+ * @remarks
6717
+ * HTML Attribute: `disabled`
6718
+ */
6719
+ disabledAttribute?: boolean;
6720
+ /**
6721
+ * Sets the disabled state when the `disabled` attribute changes.
6722
+ *
6723
+ * @param prev - the previous value
6724
+ * @param next - the current value
6725
+ * @internal
6726
+ */
6727
+ protected disabledAttributeChanged(prev: boolean | undefined, next: boolean | undefined): void;
6728
+ /**
6729
+ * The id of a form to associate the element to.
6730
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Element/input#form | `form`} attribute
6731
+ *
6732
+ * @public
6733
+ * @remarks
6734
+ * HTML Attribute: `form`
6735
+ */
6736
+ formAttribute?: string;
6737
+ /**
6738
+ * Indicates that the option value should sync with the value of the dropdown's control.
6739
+ *
6740
+ * @public
6741
+ * @remarks
6742
+ * HTML Attribute: `freeform`
6743
+ */
6744
+ freeform?: boolean;
6745
+ /**
6746
+ * The id of the option. If not provided, a unique id will be assigned.
6747
+ *
6748
+ * @override
6749
+ * @public
6750
+ * @remarks
6751
+ * HTML Attribute: `id`
6752
+ */
6753
+ id: string;
6754
+ /**
6755
+ * The initial value of the option.
6756
+ *
6757
+ * @public
6758
+ * @remarks
6759
+ * HTML Attribute: `value`
6760
+ */
6761
+ initialValue: string;
6762
+ /**
6763
+ * Sets the value of the option when the `value` attribute changes.
6764
+ *
6765
+ * @param prev - The previous initial value
6766
+ * @param next - The current initial value
6767
+ * @internal
6768
+ */
6769
+ protected initialValueChanged(prev: string, next: string): void;
6770
+ /**
6771
+ * Indicates that the option is in a multiple selection mode context.
6772
+ * @public
6773
+ */
6774
+ multiple: boolean;
6775
+ /**
6776
+ * Updates the multiple state of the option when the multiple property changes.
6777
+ *
6778
+ * @param prev - the previous multiple state
6779
+ * @param next - the current multiple state
6780
+ */
6781
+ multipleChanged(prev: boolean, next: boolean): void;
6782
+ /**
6783
+ * The name of the option. This option's value will be surfaced during form submission under the provided name.
6784
+ *
6785
+ * @public
6786
+ * @remarks
6787
+ * HTML Attribute: `name`
6788
+ */
6789
+ name: string;
6790
+ /**
6791
+ * Reference to the start slot element.
6792
+ *
6793
+ * @internal
6794
+ */
6795
+ start: HTMLSlotElement;
6796
+ /**
6797
+ * The text to display in the dropdown control when the option is selected.
6798
+ *
6799
+ * @public
6800
+ * @remarks
6801
+ * HTML Attribute: `text`
6802
+ */
6803
+ textAttribute?: string;
6804
+ /**
6805
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
6806
+ *
6807
+ * @internal
6808
+ */
6809
+ elementInternals: ElementInternals;
5935
6810
  /**
6811
+ * The associated `<form>` element.
6812
+ *
5936
6813
  * @public
5937
- * The ID of the element that labels the drawer.
6814
+ * @remarks
6815
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/form | `ElementInternals.form`} property.
5938
6816
  */
5939
- ariaLabelledby?: string;
6817
+ get form(): HTMLFormElement | null;
5940
6818
  /**
5941
- * @public
5942
- * The ID of the element that describes the drawer.
6819
+ * The collection of slotted `output` elements, used to display the value when the option is freeform.
6820
+ *
6821
+ * @internal
5943
6822
  */
5944
- ariaDescribedby?: string;
5945
- /**""
6823
+ freeformOutputs?: HTMLOutputElement[];
6824
+ /**
6825
+ * The form-associated flag.
6826
+ * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example | Form-associated custom elements}
6827
+ *
5946
6828
  * @public
5947
- * @defaultValue start
5948
- * Sets the position of the drawer (start/end).
5949
6829
  */
5950
- position: DrawerPosition;
6830
+ static formAssociated: boolean;
5951
6831
  /**
6832
+ * A reference to all associated `<label>` elements.
6833
+ *
5952
6834
  * @public
5953
- * @defaultValue medium
5954
- * Sets the size of the drawer (small/medium/large).
5955
6835
  */
5956
- size: DrawerSize;
6836
+ get labels(): ReadonlyArray<HTMLLabelElement>;
5957
6837
  /**
6838
+ * The option's current selected state.
6839
+ *
5958
6840
  * @public
5959
- * The dialog element.
5960
6841
  */
5961
- dialog: HTMLDialogElement;
6842
+ get selected(): boolean;
6843
+ set selected(next: boolean);
5962
6844
  /**
6845
+ * The display text of the option.
6846
+ *
5963
6847
  * @public
5964
- * Method to emit an event after the dialog's open state changes
5965
- * HTML spec proposal: https://github.com/whatwg/html/issues/9733
6848
+ * @remarks
6849
+ * When the option is freeform, the text is the value of the option.
5966
6850
  */
5967
- emitToggle: () => void;
6851
+ get text(): string;
5968
6852
  /**
5969
- * @public
5970
- * Method to emit an event before the dialog's open state changes
5971
- * HTML spec proposal: https://github.com/whatwg/html/issues/9733
6853
+ * The internal value of the option.
6854
+ *
6855
+ * @internal
5972
6856
  */
5973
- emitBeforeToggle: () => void;
6857
+ private _value;
5974
6858
  /**
6859
+ * The current value of the option.
6860
+ *
5975
6861
  * @public
5976
- * Method to show the drawer
5977
6862
  */
5978
- show(): void;
6863
+ get value(): string;
6864
+ set value(value: string);
6865
+ connectedCallback(): void;
6866
+ constructor();
5979
6867
  /**
5980
- * @public
5981
- * Method to hide the drawer
6868
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/setFormValue | `ElementInternals.setFormValue()`} method.
6869
+ *
6870
+ * @internal
5982
6871
  */
5983
- hide(): void;
6872
+ setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
5984
6873
  /**
6874
+ * Toggles the selected state of the control.
6875
+ *
6876
+ * @param force - Forces the element to be checked or unchecked
5985
6877
  * @public
5986
- * @param event - The click event
5987
- * @returns boolean - Always returns true
5988
- * Handles click events on the drawer.
5989
6878
  */
5990
- clickHandler(event: Event): boolean;
6879
+ toggleSelected(force?: boolean): void;
5991
6880
  }
5992
6881
 
5993
6882
  /**
5994
- * A DrawerBody component to layout drawer content
5995
- * @extends FASTElement
5996
- *
5997
- * @slot title - The title slot
5998
- * @slot close - The close button slot
5999
- * @slot - The default content slot
6000
- * @slot footer - The footer slot
6001
- *
6002
- * @csspart header - The header part of the drawer
6003
- * @csspart content - The content part of the drawer
6004
- * @csspart footer - The footer part of the drawer
6005
- *
6006
- * @summary A component that provides a drawer body for displaying content in a side panel.
6883
+ * The Fluent Option Element.
6007
6884
  *
6008
- * @tag fluent-drawer-body
6885
+ * @public
6886
+ * @remarks
6887
+ * HTML Element: `<fluent-option>`
6009
6888
  */
6010
- export declare class DrawerBody extends FASTElement {
6011
- }
6889
+ export declare const DropdownOptionDefinition: FASTElementDefinition<typeof DropdownOption>;
6012
6890
 
6013
6891
  /**
6892
+ * The options for the {@link DropdownOption} component.
6014
6893
  *
6015
6894
  * @public
6016
- * @remarks
6017
- * HTML Element: <fluent-drawer>
6018
6895
  */
6019
- export declare const DrawerBodyDefinition: FASTElementDefinition<typeof DrawerBody>;
6896
+ export declare type DropdownOptionOptions = StartOptions<DropdownOption> & {
6897
+ checkedIndicator?: StaticallyComposableHTML<DropdownOption>;
6898
+ };
6020
6899
 
6021
- /** Drawer styles
6900
+ /**
6901
+ * Template options for the {@link (Dropdown:class)} component.
6022
6902
  * @public
6023
6903
  */
6024
- export declare const DrawerBodyStyles: ElementStyles;
6025
-
6026
- export declare const DrawerBodyTemplate: ElementViewTemplate<DrawerBody>;
6904
+ export declare type DropdownOptions = {
6905
+ indicator?: StaticallyComposableHTML<BaseDropdown>;
6906
+ };
6027
6907
 
6028
6908
  /**
6909
+ * Styles for the {@link (DropdownOption:class)} component.
6029
6910
  *
6030
6911
  * @public
6031
- * @remarks
6032
- * HTML Element: <fluent-drawer>
6033
- */
6034
- export declare const DrawerDefinition: FASTElementDefinition<typeof Drawer>;
6035
-
6036
- /**
6037
- * A drawer can be positioned on the left or right side of the viewport.
6038
6912
  */
6039
- export declare const DrawerPosition: {
6040
- readonly start: "start";
6041
- readonly end: "end";
6042
- };
6913
+ export declare const DropdownOptionStyles: ElementStyles;
6043
6914
 
6044
6915
  /**
6045
- * The position of the drawer.
6916
+ * Template for the Option component.
6046
6917
  * @public
6047
6918
  */
6048
- export declare type DrawerPosition = ValuesOf<typeof DrawerPosition>;
6919
+ export declare const DropdownOptionTemplate: ElementViewTemplate<DropdownOption>;
6049
6920
 
6050
6921
  /**
6051
- * A drawer can be different sizes
6922
+ * Values for the `size` attribute of the {@link (Dropdown:class)} component.
6923
+ * @public
6052
6924
  */
6053
- export declare const DrawerSize: {
6925
+ export declare const DropdownSize: {
6054
6926
  readonly small: "small";
6055
6927
  readonly medium: "medium";
6056
6928
  readonly large: "large";
6057
- readonly full: "full";
6058
6929
  };
6059
6930
 
6931
+ /** @public */
6932
+ export declare type DropdownSize = ValuesOf<typeof DropdownSize>;
6933
+
6060
6934
  /**
6061
- * The size of the drawer.
6935
+ * Styles for the {@link (Dropdown:class)} component.
6936
+ *
6062
6937
  * @public
6063
6938
  */
6064
- export declare type DrawerSize = ValuesOf<typeof DrawerSize>;
6939
+ export declare const DropdownStyles: ElementStyles;
6065
6940
 
6066
- /** Drawer styles
6941
+ /**
6942
+ * Template for the Dropdown component.
6943
+ *
6067
6944
  * @public
6068
6945
  */
6069
- export declare const DrawerStyles: ElementStyles;
6070
-
6071
- export declare const DrawerTemplate: ElementViewTemplate<Drawer>;
6946
+ export declare const DropdownTemplate: ElementViewTemplate<BaseDropdown>;
6072
6947
 
6073
6948
  /**
6074
- * A drawer can be different sizes
6949
+ * Values for the `type` attribute of the {@link (Dropdown:class)} component.
6950
+ * @public
6075
6951
  */
6076
- export declare const DrawerType: {
6077
- readonly nonModal: "non-modal";
6078
- readonly modal: "modal";
6079
- readonly inline: "inline";
6952
+ export declare const DropdownType: {
6953
+ readonly combobox: "combobox";
6954
+ readonly dropdown: "dropdown";
6955
+ readonly select: "select";
6080
6956
  };
6081
6957
 
6082
- /**
6083
- * The size of the drawer.
6084
- * @public
6085
- */
6086
- export declare type DrawerType = ValuesOf<typeof DrawerType>;
6958
+ /** @public */
6959
+ export declare type DropdownType = ValuesOf<typeof DropdownType>;
6087
6960
 
6088
6961
  /**
6089
6962
  * CSS custom property value for the {@link @fluentui/tokens#durationFast | `durationFast`} design token.
@@ -6133,6 +7006,14 @@ export declare const durationUltraFast = "var(--durationUltraFast)";
6133
7006
  */
6134
7007
  export declare const durationUltraSlow = "var(--durationUltraSlow)";
6135
7008
 
7009
+ /**
7010
+ * A mixin class implementing end slots.
7011
+ * @public
7012
+ */
7013
+ declare class End {
7014
+ end: HTMLSlotElement;
7015
+ }
7016
+
6136
7017
  /**
6137
7018
  * End configuration options
6138
7019
  * @public
@@ -6459,6 +7340,36 @@ export declare const ImageStyles: ElementStyles;
6459
7340
  */
6460
7341
  export declare const ImageTemplate: ElementViewTemplate<Image_2>;
6461
7342
 
7343
+ /**
7344
+ * Predicate function that determines if the element should be considered a dropdown.
7345
+ *
7346
+ * @param element - The element to check.
7347
+ * @param tagName - The tag name to check.
7348
+ * @returns true if the element is a dropdown.
7349
+ * @public
7350
+ */
7351
+ export declare function isDropdown(element?: Node | null, tagName?: string): element is BaseDropdown;
7352
+
7353
+ /**
7354
+ * Predicate function that determines if the element should be considered an option.
7355
+ *
7356
+ * @param element - The element to check.
7357
+ * @param tagName - The tag name to check.
7358
+ * @returns true if the element is an option.
7359
+ * @public
7360
+ */
7361
+ export declare function isDropdownOption(value: Node | null, tagName?: string): value is DropdownOption;
7362
+
7363
+ /**
7364
+ * Predicate function that determines if the element should be considered a listbox.
7365
+ *
7366
+ * @param element - The element to check.
7367
+ * @param tagName - The tag name to check.
7368
+ * @returns true if the element is a listbox.
7369
+ * @public
7370
+ */
7371
+ export declare function isListbox(element?: Node | null, tagName?: string): element is Listbox;
7372
+
6462
7373
  /**
6463
7374
  * The base class used for constructing a fluent-label custom element
6464
7375
  * @public
@@ -6726,6 +7637,153 @@ export declare type LinkTarget = ValuesOf<typeof AnchorTarget>;
6726
7637
  */
6727
7638
  export declare const LinkTemplate: ElementViewTemplate<Link>;
6728
7639
 
7640
+ /**
7641
+ * A Listbox Custom HTML Element.
7642
+ * Implements the {@link https://w3c.github.io/aria/#listbox | ARIA listbox } role.
7643
+ *
7644
+ * @slot - The default slot for the options.
7645
+ * @emits connected - Dispatched when the element is connected to the DOM.
7646
+ *
7647
+ * @remarks
7648
+ * The listbox component represents a list of options that can be selected.
7649
+ * It is intended to be used in conjunction with the {@link BaseDropdown | Dropdown} component.
7650
+ *
7651
+ * @public
7652
+ */
7653
+ export declare class Listbox extends FASTElement {
7654
+ /**
7655
+ * Sets the listbox ID to a unique value if one is not provided.
7656
+ *
7657
+ * @override
7658
+ * @public
7659
+ * @remarks
7660
+ * HTML Attribute: `id`
7661
+ */
7662
+ id: string;
7663
+ /**
7664
+ * Indicates whether the listbox allows multiple selection.
7665
+ *
7666
+ * @public
7667
+ */
7668
+ multiple?: boolean;
7669
+ /**
7670
+ * Updates the multiple selection state of the listbox and its options.
7671
+ *
7672
+ * @param prev - the previous multiple value
7673
+ * @param next - the current multiple value
7674
+ */
7675
+ multipleChanged(prev: boolean | undefined, next: boolean | undefined): void;
7676
+ /**
7677
+ * The collection of all child options.
7678
+ *
7679
+ * @public
7680
+ */
7681
+ options: DropdownOption[];
7682
+ /**
7683
+ * Updates the enabled options collection when properties on the child options change.
7684
+ *
7685
+ * @param prev - the previous options
7686
+ * @param next - the current options
7687
+ *
7688
+ * @internal
7689
+ */
7690
+ optionsChanged(prev: DropdownOption[] | undefined, next: DropdownOption[] | undefined): void;
7691
+ /**
7692
+ * The index of the first selected and enabled option.
7693
+ * @internal
7694
+ */
7695
+ selectedIndex: number;
7696
+ /**
7697
+ * Reference to the parent dropdown element.
7698
+ * @internal
7699
+ */
7700
+ dropdown?: BaseDropdown;
7701
+ /**
7702
+ * Handles the `beforetoggle` event on the listbox.
7703
+ *
7704
+ * @param e - the toggle event
7705
+ * @returns true to allow the default popover behavior, undefined to prevent it
7706
+ * @internal
7707
+ */
7708
+ beforetoggleHandler(e: ToggleEvent): boolean | undefined;
7709
+ /**
7710
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
7711
+ *
7712
+ * @internal
7713
+ */
7714
+ elementInternals: ElementInternals;
7715
+ /**
7716
+ * The collection of child options that are not disabled.
7717
+ *
7718
+ * @internal
7719
+ */
7720
+ get enabledOptions(): DropdownOption[];
7721
+ /**
7722
+ * The collection of child options that are selected.
7723
+ *
7724
+ * @public
7725
+ */
7726
+ get selectedOptions(): DropdownOption[];
7727
+ /**
7728
+ * Sets the `selected` state on a target option when clicked.
7729
+ *
7730
+ * @param e - The pointer event
7731
+ * @public
7732
+ */
7733
+ clickHandler(e: PointerEvent): boolean | void;
7734
+ constructor();
7735
+ connectedCallback(): void;
7736
+ /**
7737
+ * Handles observable subscriptions for the listbox.
7738
+ *
7739
+ * @param source - The source of the observed change
7740
+ * @param propertyName - The name of the property that changed
7741
+ *
7742
+ * @internal
7743
+ */
7744
+ handleChange(source: any, propertyName?: string): void;
7745
+ /**
7746
+ * Selects an option by index.
7747
+ *
7748
+ * @param index - The index of the option to select.
7749
+ * @public
7750
+ */
7751
+ selectOption(index?: number): void;
7752
+ }
7753
+
7754
+ /**
7755
+ * The Fluent Listbox Element
7756
+ *
7757
+ * @public
7758
+ * @remarks
7759
+ * HTML Element: `<fluent-listbox>`
7760
+ */
7761
+ export declare const ListboxDefinition: FASTElementDefinition<typeof Listbox>;
7762
+
7763
+ /**
7764
+ * Styles for the {@link (Listbox:class)} component.
7765
+ *
7766
+ * @public
7767
+ */
7768
+ export declare const ListboxStyles: ElementStyles;
7769
+
7770
+ /**
7771
+ * Template for the Listbox component.
7772
+ *
7773
+ * @public
7774
+ */
7775
+ export declare const ListboxTemplate: ElementViewTemplate<Listbox>;
7776
+
7777
+ /**
7778
+ * Generates a template for the {@link (Dropdown:class)} component.
7779
+ *
7780
+ * @param options - The {@link (DropdownOptions:interface)} to use for generating the template.
7781
+ * @returns The template object.
7782
+ *
7783
+ * @public
7784
+ */
7785
+ export declare function listboxTemplate<T extends Listbox>(): ElementViewTemplate<T>;
7786
+
6729
7787
  /**
6730
7788
  * An abstract behavior to react to media queries. Implementations should implement
6731
7789
  * the `constructListener` method to perform some action based on media query changes.
@@ -8915,12 +9973,20 @@ export declare const SpinnerStyles: ElementStyles;
8915
9973
 
8916
9974
  export declare const SpinnerTemplate: ViewTemplate<Spinner, any>;
8917
9975
 
9976
+ /**
9977
+ * A mixin class implementing start slots.
9978
+ * @public
9979
+ */
9980
+ declare class Start {
9981
+ start: HTMLSlotElement;
9982
+ }
9983
+
8918
9984
  /**
8919
9985
  * A mixin class implementing start and end slots.
8920
9986
  * These are generally used to decorate text elements with icons or other visual indicators.
8921
9987
  * @public
8922
9988
  */
8923
- export declare class StartEnd {
9989
+ export declare class StartEnd implements Start, End {
8924
9990
  start: HTMLSlotElement;
8925
9991
  end: HTMLSlotElement;
8926
9992
  }
@@ -8945,7 +10011,7 @@ export declare type StartOptions<TSource = any, TParent = any> = {
8945
10011
  *
8946
10012
  * @public
8947
10013
  */
8948
- export declare function startSlotTemplate<TSource extends StartEnd = StartEnd, TParent = any>(options: StartOptions<TSource, TParent>): CaptureType<TSource, TParent>;
10014
+ export declare function startSlotTemplate<TSource extends Pick<StartEnd, 'start'> = StartEnd, TParent = any>(options: StartOptions<TSource, TParent>): CaptureType<TSource, TParent>;
8949
10015
 
8950
10016
  /**
8951
10017
  * A value that can be statically composed into a