@fluentui/web-components 3.0.0-rc.25 → 3.0.0-rc.27

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 (207) hide show
  1. package/CHANGELOG.md +21 -2
  2. package/README.md +26 -0
  3. package/custom-elements.json +723 -356
  4. package/dist/esm/accordion/accordion.d.ts +1 -1
  5. package/dist/esm/accordion/accordion.js +1 -1
  6. package/dist/esm/accordion/accordion.styles.css +11 -7
  7. package/dist/esm/accordion/accordion.template.html +4 -3
  8. package/dist/esm/accordion-item/accordion-item.d.ts +2 -2
  9. package/dist/esm/accordion-item/accordion-item.js +2 -0
  10. package/dist/esm/accordion-item/accordion-item.js.map +1 -1
  11. package/dist/esm/accordion-item/accordion-item.styles.css +174 -170
  12. package/dist/esm/accordion-item/accordion-item.template.html +38 -31
  13. package/dist/esm/anchor-button/anchor-button.d.ts +2 -2
  14. package/dist/esm/anchor-button/anchor-button.js +2 -0
  15. package/dist/esm/anchor-button/anchor-button.js.map +1 -1
  16. package/dist/esm/anchor-button/anchor-button.styles.css +224 -223
  17. package/dist/esm/anchor-button/anchor-button.template.html +8 -11
  18. package/dist/esm/avatar/avatar.d.ts +2 -0
  19. package/dist/esm/avatar/avatar.js +3 -1
  20. package/dist/esm/avatar/avatar.js.map +1 -1
  21. package/dist/esm/avatar/avatar.styles.css +475 -470
  22. package/dist/esm/avatar/avatar.template.html +10 -14
  23. package/dist/esm/badge/badge.d.ts +6 -1
  24. package/dist/esm/badge/badge.js +6 -1
  25. package/dist/esm/badge/badge.js.map +1 -1
  26. package/dist/esm/badge/badge.styles.css +264 -266
  27. package/dist/esm/badge/badge.template.html +5 -2
  28. package/dist/esm/button/button.base.d.ts +0 -9
  29. package/dist/esm/button/button.base.js +2 -3
  30. package/dist/esm/button/button.base.js.map +1 -1
  31. package/dist/esm/button/button.styles.css +260 -259
  32. package/dist/esm/button/button.template.html +8 -10
  33. package/dist/esm/checkbox/checkbox.base.d.ts +3 -9
  34. package/dist/esm/checkbox/checkbox.base.js +5 -3
  35. package/dist/esm/checkbox/checkbox.base.js.map +1 -1
  36. package/dist/esm/checkbox/checkbox.d.ts +2 -2
  37. package/dist/esm/checkbox/checkbox.js +2 -2
  38. package/dist/esm/checkbox/checkbox.styles.css +146 -142
  39. package/dist/esm/checkbox/checkbox.template.html +21 -16
  40. package/dist/esm/compound-button/compound-button.d.ts +3 -0
  41. package/dist/esm/compound-button/compound-button.js +3 -0
  42. package/dist/esm/compound-button/compound-button.js.map +1 -1
  43. package/dist/esm/compound-button/compound-button.styles.css +363 -365
  44. package/dist/esm/compound-button/compound-button.template.html +9 -11
  45. package/dist/esm/counter-badge/counter-badge.d.ts +3 -0
  46. package/dist/esm/counter-badge/counter-badge.js +3 -0
  47. package/dist/esm/counter-badge/counter-badge.js.map +1 -1
  48. package/dist/esm/counter-badge/counter-badge.styles.css +177 -177
  49. package/dist/esm/counter-badge/counter-badge.template.html +5 -2
  50. package/dist/esm/dialog/dialog.d.ts +4 -0
  51. package/dist/esm/dialog/dialog.js +4 -0
  52. package/dist/esm/dialog/dialog.js.map +1 -1
  53. package/dist/esm/dialog/dialog.styles.css +65 -66
  54. package/dist/esm/dialog/dialog.template.html +18 -15
  55. package/dist/esm/dialog-body/dialog-body.d.ts +9 -0
  56. package/dist/esm/dialog-body/dialog-body.js +9 -0
  57. package/dist/esm/dialog-body/dialog-body.js.map +1 -1
  58. package/dist/esm/dialog-body/dialog-body.styles.css +81 -76
  59. package/dist/esm/dialog-body/dialog-body.styles.js +1 -0
  60. package/dist/esm/dialog-body/dialog-body.styles.js.map +1 -1
  61. package/dist/esm/dialog-body/dialog-body.template.html +2 -1
  62. package/dist/esm/divider/divider.styles.css +105 -101
  63. package/dist/esm/divider/divider.template.html +6 -1
  64. package/dist/esm/drawer/drawer.d.ts +3 -4
  65. package/dist/esm/drawer/drawer.js +3 -4
  66. package/dist/esm/drawer/drawer.js.map +1 -1
  67. package/dist/esm/drawer/drawer.styles.css +124 -120
  68. package/dist/esm/drawer/drawer.styles.js +16 -17
  69. package/dist/esm/drawer/drawer.styles.js.map +1 -1
  70. package/dist/esm/drawer/drawer.template.html +5 -2
  71. package/dist/esm/drawer-body/drawer-body.styles.css +29 -26
  72. package/dist/esm/drawer-body/drawer-body.template.html +5 -2
  73. package/dist/esm/dropdown/dropdown.base.d.ts +3 -1
  74. package/dist/esm/dropdown/dropdown.base.js +5 -1
  75. package/dist/esm/dropdown/dropdown.base.js.map +1 -1
  76. package/dist/esm/dropdown/dropdown.styles.css +192 -190
  77. package/dist/esm/dropdown/dropdown.styles.js +1 -0
  78. package/dist/esm/dropdown/dropdown.styles.js.map +1 -1
  79. package/dist/esm/dropdown/dropdown.template.html +26 -19
  80. package/dist/esm/field/field.d.ts +7 -0
  81. package/dist/esm/field/field.js +7 -0
  82. package/dist/esm/field/field.js.map +1 -1
  83. package/dist/esm/field/field.styles.css +125 -121
  84. package/dist/esm/field/field.template.html +3 -2
  85. package/dist/esm/image/image.d.ts +2 -0
  86. package/dist/esm/image/image.js +2 -0
  87. package/dist/esm/image/image.js.map +1 -1
  88. package/dist/esm/image/image.styles.css +49 -50
  89. package/dist/esm/image/image.template.html +6 -1
  90. package/dist/esm/label/label.d.ts +3 -0
  91. package/dist/esm/label/label.js +3 -0
  92. package/dist/esm/label/label.js.map +1 -1
  93. package/dist/esm/label/label.styles.css +34 -30
  94. package/dist/esm/label/label.template.html +5 -2
  95. package/dist/esm/link/link.styles.css +58 -54
  96. package/dist/esm/link/link.template.html +4 -7
  97. package/dist/esm/listbox/listbox.styles.css +40 -36
  98. package/dist/esm/listbox/listbox.template.html +4 -6
  99. package/dist/esm/menu/menu.styles.css +56 -52
  100. package/dist/esm/menu/menu.template.html +6 -5
  101. package/dist/esm/menu-button/menu-button.styles.css +260 -259
  102. package/dist/esm/menu-button/menu-button.template.html +23 -14
  103. package/dist/esm/menu-item/menu-item.d.ts +1 -1
  104. package/dist/esm/menu-item/menu-item.js +3 -1
  105. package/dist/esm/menu-item/menu-item.js.map +1 -1
  106. package/dist/esm/menu-item/menu-item.styles.css +141 -137
  107. package/dist/esm/menu-item/menu-item.template.html +48 -17
  108. package/dist/esm/menu-list/menu-list.styles.css +19 -15
  109. package/dist/esm/menu-list/menu-list.template.html +4 -3
  110. package/dist/esm/message-bar/message-bar.d.ts +2 -0
  111. package/dist/esm/message-bar/message-bar.js +2 -0
  112. package/dist/esm/message-bar/message-bar.js.map +1 -1
  113. package/dist/esm/message-bar/message-bar.styles.css +83 -84
  114. package/dist/esm/message-bar/message-bar.template.html +7 -2
  115. package/dist/esm/option/option.d.ts +3 -0
  116. package/dist/esm/option/option.js +3 -0
  117. package/dist/esm/option/option.js.map +1 -1
  118. package/dist/esm/option/option.styles.css +117 -114
  119. package/dist/esm/option/option.template.html +17 -14
  120. package/dist/esm/progress-bar/progress-bar.base.d.ts +3 -3
  121. package/dist/esm/progress-bar/progress-bar.d.ts +1 -0
  122. package/dist/esm/progress-bar/progress-bar.js +1 -0
  123. package/dist/esm/progress-bar/progress-bar.js.map +1 -1
  124. package/dist/esm/progress-bar/progress-bar.styles.css +83 -79
  125. package/dist/esm/progress-bar/progress-bar.template.html +4 -1
  126. package/dist/esm/radio/radio.d.ts +3 -2
  127. package/dist/esm/radio/radio.js +3 -2
  128. package/dist/esm/radio/radio.js.map +1 -1
  129. package/dist/esm/radio/radio.styles.css +100 -96
  130. package/dist/esm/radio/radio.template.html +6 -9
  131. package/dist/esm/radio-group/radio-group.base.d.ts +2 -0
  132. package/dist/esm/radio-group/radio-group.base.js +2 -0
  133. package/dist/esm/radio-group/radio-group.base.js.map +1 -1
  134. package/dist/esm/radio-group/radio-group.d.ts +1 -0
  135. package/dist/esm/radio-group/radio-group.js +1 -0
  136. package/dist/esm/radio-group/radio-group.js.map +1 -1
  137. package/dist/esm/radio-group/radio-group.styles.css +45 -41
  138. package/dist/esm/radio-group/radio-group.template.html +11 -10
  139. package/dist/esm/rating-display/rating-display.styles.css +136 -134
  140. package/dist/esm/rating-display/rating-display.template.html +5 -2
  141. package/dist/esm/slider/slider.d.ts +1 -1
  142. package/dist/esm/slider/slider.js +3 -1
  143. package/dist/esm/slider/slider.js.map +1 -1
  144. package/dist/esm/slider/slider.styles.css +186 -182
  145. package/dist/esm/slider/slider.template.html +13 -15
  146. package/dist/esm/spinner/spinner.styles.css +155 -151
  147. package/dist/esm/spinner/spinner.template.html +16 -11
  148. package/dist/esm/switch/switch.d.ts +1 -0
  149. package/dist/esm/switch/switch.js +1 -0
  150. package/dist/esm/switch/switch.js.map +1 -1
  151. package/dist/esm/switch/switch.styles.css +112 -108
  152. package/dist/esm/switch/switch.template.html +9 -8
  153. package/dist/esm/tab/tab.js +2 -0
  154. package/dist/esm/tab/tab.js.map +1 -1
  155. package/dist/esm/tab/tab.styles.css +112 -108
  156. package/dist/esm/tab/tab.template.html +6 -5
  157. package/dist/esm/tablist/tablist.d.ts +1 -0
  158. package/dist/esm/tablist/tablist.js +1 -0
  159. package/dist/esm/tablist/tablist.js.map +1 -1
  160. package/dist/esm/tablist/tablist.styles.css +194 -190
  161. package/dist/esm/tablist/tablist.template.html +2 -5
  162. package/dist/esm/text/text.d.ts +2 -0
  163. package/dist/esm/text/text.js +2 -0
  164. package/dist/esm/text/text.js.map +1 -1
  165. package/dist/esm/text/text.styles.css +105 -101
  166. package/dist/esm/text/text.template.html +6 -1
  167. package/dist/esm/text-input/text-input.base.d.ts +4 -16
  168. package/dist/esm/text-input/text-input.base.js +7 -17
  169. package/dist/esm/text-input/text-input.base.js.map +1 -1
  170. package/dist/esm/text-input/text-input.d.ts +2 -0
  171. package/dist/esm/text-input/text-input.js +2 -0
  172. package/dist/esm/text-input/text-input.js.map +1 -1
  173. package/dist/esm/text-input/text-input.styles.css +199 -195
  174. package/dist/esm/text-input/text-input.template.html +34 -36
  175. package/dist/esm/text-input/text-input.template.js +1 -5
  176. package/dist/esm/text-input/text-input.template.js.map +1 -1
  177. package/dist/esm/textarea/textarea.base.d.ts +2 -2
  178. package/dist/esm/textarea/textarea.base.js +4 -2
  179. package/dist/esm/textarea/textarea.base.js.map +1 -1
  180. package/dist/esm/textarea/textarea.styles.css +254 -250
  181. package/dist/esm/textarea/textarea.template.html +28 -27
  182. package/dist/esm/toggle-button/toggle-button.styles.css +360 -357
  183. package/dist/esm/toggle-button/toggle-button.template.html +8 -10
  184. package/dist/esm/tooltip/tooltip.d.ts +2 -0
  185. package/dist/esm/tooltip/tooltip.js +2 -0
  186. package/dist/esm/tooltip/tooltip.js.map +1 -1
  187. package/dist/esm/tooltip/tooltip.styles.css +81 -77
  188. package/dist/esm/tooltip/tooltip.template.html +6 -1
  189. package/dist/esm/tree/tree.styles.css +9 -5
  190. package/dist/esm/tree/tree.template.html +3 -2
  191. package/dist/esm/tree-item/tree-item.base.d.ts +9 -0
  192. package/dist/esm/tree-item/tree-item.base.js +11 -0
  193. package/dist/esm/tree-item/tree-item.base.js.map +1 -1
  194. package/dist/esm/tree-item/tree-item.d.ts +15 -0
  195. package/dist/esm/tree-item/tree-item.js +15 -0
  196. package/dist/esm/tree-item/tree-item.js.map +1 -1
  197. package/dist/esm/tree-item/tree-item.styles.css +157 -153
  198. package/dist/esm/tree-item/tree-item.template.html +8 -7
  199. package/dist/esm/utils/autofocus.d.ts +12 -0
  200. package/dist/esm/utils/autofocus.js +25 -0
  201. package/dist/esm/utils/autofocus.js.map +1 -0
  202. package/dist/web-components-all.js +24 -27
  203. package/dist/web-components-all.min.js +15 -15
  204. package/dist/web-components.d.ts +110 -54
  205. package/dist/web-components.js +24 -27
  206. package/dist/web-components.min.js +15 -15
  207. package/package.json +6 -6
@@ -5980,6 +5980,16 @@ const definition$B = Badge.compose({
5980
5980
 
5981
5981
  definition$B.define(FluentDesignSystem.registry);
5982
5982
 
5983
+ function maybeSetAutoFocus(element) {
5984
+ const doc = element.ownerDocument;
5985
+ if (element?.isConnected && element?.hasAttribute("autofocus") && // Note: opacity=0 is considered visible based on the native `autofocus` implementation
5986
+ element?.checkVisibility?.({ contentVisibilityAuto: true, visibilityProperty: true }) && [null, element, doc.body, doc.documentElement].includes(doc.activeElement)) {
5987
+ Updates.enqueue(() => {
5988
+ element.focus();
5989
+ });
5990
+ }
5991
+ }
5992
+
5983
5993
  var __defProp$H = Object.defineProperty;
5984
5994
  var __getOwnPropDesc$H = Object.getOwnPropertyDescriptor;
5985
5995
  var __decorateClass$H = (decorators, target, key, kind) => {
@@ -6072,6 +6082,7 @@ class BaseButton extends FASTElement {
6072
6082
  super.connectedCallback();
6073
6083
  this.elementInternals.ariaDisabled = `${!!this.disabledFocusable}`;
6074
6084
  this.setTabIndex();
6085
+ maybeSetAutoFocus(this);
6075
6086
  }
6076
6087
  /**
6077
6088
  * This fallback creates a new slot, then creates a submit button to mirror the custom element's
@@ -6212,9 +6223,6 @@ class BaseButton extends FASTElement {
6212
6223
  * @public
6213
6224
  */
6214
6225
  BaseButton.formAssociated = true;
6215
- __decorateClass$H([
6216
- attr({ mode: "boolean" })
6217
- ], BaseButton.prototype, "autofocus", 2);
6218
6226
  __decorateClass$H([
6219
6227
  observable
6220
6228
  ], BaseButton.prototype, "defaultSlottedContent", 2);
@@ -6530,6 +6538,7 @@ class BaseCheckbox extends FASTElement {
6530
6538
  this.disabled = !!this.disabledAttribute;
6531
6539
  this.setAriaChecked();
6532
6540
  this.setValidity();
6541
+ maybeSetAutoFocus(this);
6533
6542
  }
6534
6543
  /**
6535
6544
  * Updates the form value when a user changes the `checked` state.
@@ -6656,9 +6665,6 @@ class BaseCheckbox extends FASTElement {
6656
6665
  * @public
6657
6666
  */
6658
6667
  BaseCheckbox.formAssociated = true;
6659
- __decorateClass$F([
6660
- attr({ mode: "boolean" })
6661
- ], BaseCheckbox.prototype, "autofocus", 2);
6662
6668
  __decorateClass$F([
6663
6669
  observable
6664
6670
  ], BaseCheckbox.prototype, "disabled", 2);
@@ -7097,7 +7103,7 @@ class DialogBody extends FASTElement {
7097
7103
 
7098
7104
  const template$v = html`<template><div class=title part=title><slot name=title></slot><slot name=title-action></slot><slot name=close @click=${(x, c) => x.clickHandler(c.event)}></slot></div><div class=content part=content><slot></slot></div><div class=actions part=actions><slot name=action></slot></div></template>`;
7099
7105
 
7100
- const styles$v = css`${display("grid")} :host{background:${colorNeutralBackground1};box-sizing:border-box;gap:${spacingVerticalS};padding:${spacingVerticalXXL} ${spacingHorizontalXXL};container:dialog-body/inline-size}.title{box-sizing:border-box;align-items:flex-start;background:${colorNeutralBackground1};color:${colorNeutralForeground1};column-gap:8px;display:flex;font-family:${fontFamilyBase};font-size:${fontSizeBase500};font-weight:${fontWeightSemibold};inset-block-start:0;justify-content:space-between;line-height:${lineHeightBase500};margin-block-end:calc(${spacingVerticalS} * -1);margin-block-start:calc(${spacingVerticalXXL} * -1);padding-block-end:${spacingVerticalS};padding-block-start:${spacingVerticalXXL}}.content{box-sizing:border-box;color:${colorNeutralForeground1};font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};line-height:${lineHeightBase300};min-height:32px}.actions{box-sizing:border-box;background:${colorNeutralBackground1};display:flex;flex-direction:column;gap:${spacingVerticalS};inset-block-end:0;margin-block-end:calc(${spacingVerticalXXL} * -1);padding-block-end:${spacingVerticalXXL};padding-block-start:${spacingVerticalL}}::slotted([slot='title-action']){margin-inline-start:auto}::slotted([slot='title']){font:inherit;padding:0;margin:0}:not(:has(:is([slot='title'],[slot='title-action']))) .title{justify-content:end}@container (min-width:480px){.actions{align-items:center;flex-direction:row;justify-content:flex-end;margin-block-start:calc(${spacingVerticalS} * -1);padding-block-start:${spacingVerticalS}}}@media (min-height:480px){.title{position:sticky;z-index:1}.actions{position:sticky;z-index:2}`;
7106
+ const styles$v = css`${display("grid")} :host{background:${colorNeutralBackground1};box-sizing:border-box;gap:${spacingVerticalS};padding:${spacingVerticalXXL} ${spacingHorizontalXXL};container:dialog-body/inline-size}.title{box-sizing:border-box;align-items:flex-start;background:${colorNeutralBackground1};color:${colorNeutralForeground1};column-gap:8px;display:flex;font-family:${fontFamilyBase};font-size:${fontSizeBase500};font-weight:${fontWeightSemibold};inset-block-start:0;justify-content:space-between;line-height:${lineHeightBase500};margin-block-end:calc(${spacingVerticalS} * -1);margin-block-start:calc(${spacingVerticalXXL} * -1);padding-block-end:${spacingVerticalS};padding-block-start:${spacingVerticalXXL}}.content{box-sizing:border-box;color:${colorNeutralForeground1};font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};line-height:${lineHeightBase300};min-height:32px}.actions{box-sizing:border-box;background:${colorNeutralBackground1};display:flex;flex-direction:column;gap:${spacingVerticalS};inset-block-end:0;margin-block-end:calc(${spacingVerticalXXL} * -1);padding-block-end:${spacingVerticalXXL};padding-block-start:${spacingVerticalL}}::slotted([slot='title-action']){margin-inline-start:auto}::slotted([slot='title']){font:inherit;padding:0;margin:0}:not(:has(:is([slot='title'],[slot='title-action']))) .title{justify-content:end}@container (min-width:480px){.actions{align-items:center;flex-direction:row;justify-content:flex-end;margin-block-start:calc(${spacingVerticalS} * -1);padding-block-start:${spacingVerticalS}}}@media (min-height:480px){.title{position:sticky;z-index:1}.actions{position:sticky;z-index:2}}`;
7101
7107
 
7102
7108
  const definition$v = DialogBody.compose({
7103
7109
  name: tagName$v,
@@ -7396,7 +7402,7 @@ __decorateClass$y([
7396
7402
  volatile
7397
7403
  ], Drawer.prototype, "dialogRole", 1);
7398
7404
 
7399
- const styles$t = css`${display("block")} :host{--dialog-backdrop:${colorBackgroundOverlay}}:host([type='non-modal']) dialog[open]::backdrop{display:none}:host([type='non-modal']) dialog{position:fixed;top:0;bottom:0}:host([type='inline']){height:100%;width:fit-content}:host([type='inline']) dialog[open]{box-shadow:none;position:relative}:host([size='small']) dialog{width:320px;max-width:320px}:host([size='large']) dialog{width:940px;max-width:940px}:host([size='full']) dialog{width:100%;max-width:100%}:host([position='end']) dialog{margin-inline-start:auto;margin-inline-end:0}dialog{box-sizing:border-box;z-index:var(--drawer-elevation,1000);font-size:${fontSizeBase300};line-height:${lineHeightBase300};font-family:${fontFamilyBase};font-weight:${fontWeightRegular};color:${colorNeutralForeground1};max-width:var(--drawer-width,592px);max-height:100vh;height:100%;margin-inline-start:0;margin-inline-end:auto;border-inline-end-color:${colorTransparentStroke};border-inline-start-color:var(--drawer-separator,${colorTransparentStroke});outline:none;top:0;bottom:0;width:var(--drawer-width,592px);border-radius:0;padding:0;max-width:var(--drawer-width,592px);box-shadow:${shadow64};border:${strokeWidthThin} solid ${colorTransparentStroke};background:${colorNeutralBackground1}}dialog::backdrop{background:var(--dialog-backdrop)}@layer animations{@media (prefers-reduced-motion:no-preference){dialog{transition:display allow-discrete,opacity,overlay allow-discrete,transform;transition-duration:${durationGentle};transition-timing-function:${curveDecelerateMid}}:host dialog:not([open]){transform:translateX(-100%);transition-timing-function:${curveAccelerateMid}}:host([position='end']) dialog:not([open]){transform:translateX(100%);transition-timing-function:${curveAccelerateMid}}dialog[open]{transform:translateX(0)}dialog::backdrop{transition:display allow-discrete,opacity,overlay allow-discrete,scale;transition-duration:${durationGentle};transition-timing-function:${curveDecelerateMid};background:var(--dialog-backdrop,${colorBackgroundOverlay});opacity:0}dialog[open]::backdrop{opacity:1}dialog::backdrop{transition-timing-function:${curveLinear}}}@starting-style{dialog[open]{transform:translateX(-100%)}:host([position='end']) dialog[open]{transform:translateX(100%)}dialog[open]::backdrop{opacity:0}}}`;
7405
+ const styles$t = css`${display("block")} :host{--dialog-backdrop:${colorBackgroundOverlay}}:host([type='non-modal']) dialog[open]::backdrop{display:none}:host([type='non-modal']) dialog{position:fixed;top:0;bottom:0}:host([type='inline']){height:100%;width:fit-content}:host([type='inline']) dialog[open]{box-shadow:none;position:relative}:host([size='small']) dialog{width:320px;max-width:320px}:host([size='large']) dialog{width:940px;max-width:940px}:host([size='full']) dialog{width:100%;max-width:100%}:host([position='end']) dialog{margin-inline-start:auto;margin-inline-end:0}dialog{background:${colorNeutralBackground1};border-radius:0;border:${strokeWidthThin} solid ${colorTransparentStroke};border-inline-end-color:${colorTransparentStroke};border-inline-start-color:var(--drawer-separator,${colorTransparentStroke});box-shadow:${shadow64};box-sizing:border-box;color:${colorNeutralForeground1};font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};height:100%;line-height:${lineHeightBase300};margin-inline-end:auto;margin-inline-start:0;max-height:100vh;max-width:calc(100vw - ${spacingHorizontalXXL});outline:none;padding:0;bottom:0;top:0;width:var(--drawer-width,592px);z-index:var(--drawer-elevation,1000)}dialog::backdrop{background:var(--dialog-backdrop)}@layer animations{@media (prefers-reduced-motion:no-preference){dialog{transition:display allow-discrete,opacity,overlay allow-discrete,transform;transition-duration:${durationGentle};transition-timing-function:${curveDecelerateMid}}:host dialog:not([open]){transform:translateX(-100%);transition-timing-function:${curveAccelerateMid}}:host([position='end']) dialog:not([open]){transform:translateX(100%);transition-timing-function:${curveAccelerateMid}}dialog[open]{transform:translateX(0)}dialog::backdrop{transition:display allow-discrete,opacity,overlay allow-discrete,scale;transition-duration:${durationGentle};transition-timing-function:${curveDecelerateMid};background:var(--dialog-backdrop,${colorBackgroundOverlay});opacity:0}dialog[open]::backdrop{opacity:1}dialog::backdrop{transition-timing-function:${curveLinear}}}@starting-style{dialog[open]{transform:translateX(-100%)}:host([position='end']) dialog[open]{transform:translateX(100%)}dialog[open]::backdrop{opacity:0}}}`;
7400
7406
 
7401
7407
  function drawerTemplate() {
7402
7408
  return html`<dialog class=dialog part=dialog aria-describedby=${(x) => x.dialogDescribedby} aria-labelledby=${(x) => x.dialogLabelledby} aria-label=${(x) => x.dialogLabel} aria-modal=${(x) => x.dialogModal} role=${(x) => x.dialogRole} size=${(x) => x.size} position=${(x) => x.position} @click=${(x, c) => x.clickHandler(c.event)} @cancel=${(x) => x.cancelHandler()} ${ref("dialog")}><slot></slot></dialog>`;
@@ -8039,7 +8045,7 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
8039
8045
  this._insertingControl = false;
8040
8046
  }
8041
8047
  /**
8042
- * Handles printable character input by moving {@link activeIndex} to the next option whose label matches the
8048
+ * Handles printable character input by moving {@link Dropdown#activeIndex} to the next option whose label matches the
8043
8049
  * accumulated search string. When the string is a single character (or the same character repeated), matching
8044
8050
  * options are cycled through; otherwise the string is treated as a prefix match.
8045
8051
  *
@@ -8242,6 +8248,7 @@ const _BaseDropdown = class _BaseDropdown extends FASTElement {
8242
8248
  Updates.enqueue(() => {
8243
8249
  this.insertControl();
8244
8250
  });
8251
+ maybeSetAutoFocus(this);
8245
8252
  }
8246
8253
  disconnectedCallback() {
8247
8254
  _BaseDropdown.AnchorPositionFallbackObserver?.disconnect();
@@ -8387,7 +8394,7 @@ __decorateClass$w([
8387
8394
  attr
8388
8395
  ], Dropdown.prototype, "size", 2);
8389
8396
 
8390
- const styles$r = css`${display("inline-flex")} :host{box-sizing:border-box;color:${colorNeutralForeground1};cursor:pointer}:host(${placeholderShownState}){color:${colorNeutralForeground4}}.control{appearance:none;background-color:${colorNeutralBackground1};border-radius:${borderRadiusMedium};border:${strokeWidthThin} solid ${colorTransparentStroke};box-shadow:inset 0 0 0 ${strokeWidthThin} var(--control-border-color);box-sizing:border-box;color:inherit;column-gap:${spacingHorizontalXXS};display:inline-flex;justify-content:space-between;min-width:160px;overflow:hidden;padding:${spacingVerticalSNudge} ${spacingHorizontalMNudge};white-space:normal;position:relative;text-align:start;width:100%;z-index:1;${typographyBody1Styles}}:host([size='small']) .control{column-gap:${spacingHorizontalXXS};padding:${spacingVerticalXS} ${spacingHorizontalSNudge};${typographyCaption1Styles}}:host([size='large']) .control{column-gap:${spacingHorizontalS};padding:${spacingVerticalS} ${spacingHorizontalM};${typographyBody2Styles}}::slotted(:is(input,button)){all:unset;flex:1 1 auto}::slotted(button){cursor:pointer}::slotted(input){cursor:text}:where(slot[name='indicator']>*,::slotted([slot='indicator'])){all:unset;align-items:center;appearance:none;aspect-ratio:1;color:${colorNeutralForeground3};display:inline-flex;justify-content:center;width:20px}:host([size='small']) :where(slot[name='indicator']>*,::slotted([slot='indicator'])){width:16px}:host([size='large']) :where(slot[name='indicator']>*,::slotted([slot='indicator'])){width:24px}.control::after,.control::before{content:''/'';inset:auto 0 0;pointer-events:none;position:absolute}.control::before{height:${strokeWidthThin}}.control::after{background-color:${colorCompoundBrandStroke};height:${strokeWidthThick};scale:0 1;transition:scale ${durationUltraFast} ${curveDecelerateMid}}:host(:where(:focus-within)) .control{border-radius:${borderRadiusMedium};box-shadow:inset 0 0 0 1px ${colorStrokeFocus1};outline:${strokeWidthThick} solid ${colorStrokeFocus2}}:host(:where(${openState},:focus-within)) .control::after{scale:1 1;transition-duration:${durationNormal};transition-timing-function:${curveAccelerateMid}}:host(:where([appearance='outline'],[appearance='transparent'])) .control::before{background-color:${colorNeutralStrokeAccessible}}:host([appearance='transparent']) .control{--control-border-color:${colorTransparentStrokeInteractive};background-color:${colorTransparentBackground};border-radius:${borderRadiusNone}}:host([appearance='outline']) .control{--control-border-color:${colorNeutralStroke1}}:host([appearance='outline']) .control:hover{--control-border-color:${colorNeutralStroke1Hover}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:hover::before{background-color:${colorNeutralStrokeAccessibleHover}}:host([appearance='outline']) .control:hover::after{background-color:${colorCompoundBrandBackgroundHover}}:host([appearance='outline']) .control:active{--control-border-color:${colorNeutralStroke1Pressed}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:active::before{background-color:${colorNeutralStrokeAccessiblePressed}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:active::after{background-color:${colorCompoundBrandBackgroundPressed}}:host([appearance='filled-darker']) .control{background-color:${colorNeutralBackground3}}:host(:where([appearance='filled-lighter'],[appearance='filled-darker'])) .control{--control-border-color:${colorTransparentStroke}}:host(:disabled),:host(:disabled) ::slotted(:where(button,input)){cursor:not-allowed}:host(:disabled) .control::before,:host(:disabled) .control::after{content:none}:host(:disabled) .control:is(*,:active,:hover),:host(:disabled) :where(slot[name='indicator']>*,::slotted([slot='indicator'])){--control-border-color:${colorNeutralStrokeDisabled};background-color:${colorNeutralBackgroundDisabled};color:${colorNeutralForegroundDisabled}}::slotted(:not([slot]):not([popover])),::slotted([popover]:not(:popover-open)){display:none}@supports not (anchor-name:--anchor){:host{--listbox-max-height:50vh;--margin-offset:calc(${lineHeightBase300} + (${spacingVerticalSNudge} * 2) + ${strokeWidthThin})}:host([size='small']){--margin-offset:calc(${lineHeightBase200} + (${spacingVerticalXS} * 2) + ${strokeWidthThin})}:host([size='large']){--margin-offset:calc(${lineHeightBase400} + (${spacingVerticalS} * 2) + ${strokeWidthThin})}}@media (forced-colors:active){:host(:disabled) .control{border-color:GrayText}:host(:disabled) :where(slot[name='indicator']>*,::slotted([slot='indicator'])){color:GrayText}`;
8397
+ const styles$r = css`${display("inline-flex")} :host{box-sizing:border-box;color:${colorNeutralForeground1};cursor:pointer}:host(${placeholderShownState}){color:${colorNeutralForeground4}}.control{appearance:none;background-color:${colorNeutralBackground1};border-radius:${borderRadiusMedium};border:${strokeWidthThin} solid ${colorTransparentStroke};box-shadow:inset 0 0 0 ${strokeWidthThin} var(--control-border-color);box-sizing:border-box;color:inherit;column-gap:${spacingHorizontalXXS};display:inline-flex;justify-content:space-between;min-width:160px;overflow:hidden;padding:${spacingVerticalSNudge} ${spacingHorizontalMNudge};white-space:normal;position:relative;text-align:start;width:100%;z-index:1;${typographyBody1Styles}}:host([size='small']) .control{column-gap:${spacingHorizontalXXS};padding:${spacingVerticalXS} ${spacingHorizontalSNudge};${typographyCaption1Styles}}:host([size='large']) .control{column-gap:${spacingHorizontalS};padding:${spacingVerticalS} ${spacingHorizontalM};${typographyBody2Styles}}::slotted(:is(input,button)){all:unset;flex:1 1 auto}::slotted(button){cursor:pointer}::slotted(input){cursor:text}:where(slot[name='indicator']>*,::slotted([slot='indicator'])){all:unset;align-items:center;appearance:none;aspect-ratio:1;color:${colorNeutralForeground3};display:inline-flex;justify-content:center;width:20px}:host([size='small']) :where(slot[name='indicator']>*,::slotted([slot='indicator'])){width:16px}:host([size='large']) :where(slot[name='indicator']>*,::slotted([slot='indicator'])){width:24px}.control::after,.control::before{content:''/'';inset:auto 0 0;pointer-events:none;position:absolute}.control::before{height:${strokeWidthThin}}.control::after{background-color:${colorCompoundBrandStroke};height:${strokeWidthThick};scale:0 1;transition:scale ${durationUltraFast} ${curveDecelerateMid}}:host(:where(:focus-within)) .control{border-radius:${borderRadiusMedium};box-shadow:inset 0 0 0 1px ${colorStrokeFocus1};outline:${strokeWidthThick} solid ${colorStrokeFocus2}}:host(:where(${openState},:focus-within)) .control::after{scale:1 1;transition-duration:${durationNormal};transition-timing-function:${curveAccelerateMid}}:host(:where([appearance='outline'],[appearance='transparent'])) .control::before{background-color:${colorNeutralStrokeAccessible}}:host([appearance='transparent']) .control{--control-border-color:${colorTransparentStrokeInteractive};background-color:${colorTransparentBackground};border-radius:${borderRadiusNone}}:host([appearance='outline']) .control{--control-border-color:${colorNeutralStroke1}}:host([appearance='outline']) .control:hover{--control-border-color:${colorNeutralStroke1Hover}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:hover::before{background-color:${colorNeutralStrokeAccessibleHover}}:host([appearance='outline']) .control:hover::after{background-color:${colorCompoundBrandBackgroundHover}}:host([appearance='outline']) .control:active{--control-border-color:${colorNeutralStroke1Pressed}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:active::before{background-color:${colorNeutralStrokeAccessiblePressed}}:host(:where([appearance='outline'],[appearance='transparent'])) .control:active::after{background-color:${colorCompoundBrandBackgroundPressed}}:host([appearance='filled-darker']) .control{background-color:${colorNeutralBackground3}}:host(:where([appearance='filled-lighter'],[appearance='filled-darker'])) .control{--control-border-color:${colorTransparentStroke}}:host(:disabled),:host(:disabled) ::slotted(:where(button,input)){cursor:not-allowed}:host(:disabled) .control::before,:host(:disabled) .control::after{content:none}:host(:disabled) .control:is(*,:active,:hover),:host(:disabled) :where(slot[name='indicator']>*,::slotted([slot='indicator'])){--control-border-color:${colorNeutralStrokeDisabled};background-color:${colorNeutralBackgroundDisabled};color:${colorNeutralForegroundDisabled}}::slotted(:not([slot]):not([popover])),::slotted([popover]:not(:popover-open)){display:none}@supports not (anchor-name:--anchor){:host{--listbox-max-height:50vh;--margin-offset:calc(${lineHeightBase300} + (${spacingVerticalSNudge} * 2) + ${strokeWidthThin})}:host([size='small']){--margin-offset:calc(${lineHeightBase200} + (${spacingVerticalXS} * 2) + ${strokeWidthThin})}:host([size='large']){--margin-offset:calc(${lineHeightBase400} + (${spacingVerticalS} * 2) + ${strokeWidthThin})}}@media (forced-colors:active){:host(:disabled) .control{border-color:GrayText}:host(:disabled) :where(slot[name='indicator']>*,::slotted([slot='indicator'])){color:GrayText}}`;
8391
8398
 
8392
8399
  const definition$r = Dropdown.compose({
8393
8400
  name: tagName$r,
@@ -9234,6 +9241,7 @@ class MenuItem extends FASTElement {
9234
9241
  super.connectedCallback();
9235
9242
  this.elementInternals.role = this.role ?? MenuItemRole.menuitem;
9236
9243
  this.elementInternals.ariaChecked = this.role !== MenuItemRole.menuitem ? `${!!this.checked}` : null;
9244
+ maybeSetAutoFocus(this);
9237
9245
  }
9238
9246
  }
9239
9247
  __decorateClass$p([
@@ -11932,6 +11940,7 @@ class Slider extends FASTElement {
11932
11940
  notifier.subscribe(this, "min");
11933
11941
  notifier.subscribe(this, "step");
11934
11942
  });
11943
+ maybeSetAutoFocus(this);
11935
11944
  }
11936
11945
  /**
11937
11946
  * @internal
@@ -12257,6 +12266,7 @@ class Tab extends FASTElement {
12257
12266
  }
12258
12267
  this.styles = css`:host{--textContent:'${this.textContent}'}`;
12259
12268
  this.$fastController.addStyles(this.styles);
12269
+ maybeSetAutoFocus(this);
12260
12270
  }
12261
12271
  setDisabledSideEffect(disabled) {
12262
12272
  if (disabled) {
@@ -12740,6 +12750,7 @@ class BaseTextArea extends FASTElement {
12740
12750
  this.setValidity();
12741
12751
  this.preConnectControlEl = null;
12742
12752
  this.maybeCreateAutoSizerEl();
12753
+ maybeSetAutoFocus(this);
12743
12754
  });
12744
12755
  }
12745
12756
  /**
@@ -13273,21 +13284,9 @@ class BaseTextInput extends FASTElement {
13273
13284
  }
13274
13285
  connectedCallback() {
13275
13286
  super.connectedCallback();
13276
- this.tabIndex = Number(this.getAttribute("tabindex") ?? 0) < 0 ? -1 : 0;
13277
13287
  this.setFormValue(this.value);
13278
13288
  this.setValidity();
13279
- }
13280
- /**
13281
- * Focuses the inner control when the component is focused.
13282
- *
13283
- * @param e - the event object
13284
- * @public
13285
- */
13286
- focusinHandler(e) {
13287
- if (e.target === this) {
13288
- this.control?.focus();
13289
- }
13290
- return true;
13289
+ maybeSetAutoFocus(this);
13291
13290
  }
13292
13291
  /**
13293
13292
  * Resets the value to its initial value when the form is reset.
@@ -13421,9 +13420,6 @@ BaseTextInput.formAssociated = true;
13421
13420
  __decorateClass$8([
13422
13421
  attr
13423
13422
  ], BaseTextInput.prototype, "autocomplete", 2);
13424
- __decorateClass$8([
13425
- attr({ mode: "boolean" })
13426
- ], BaseTextInput.prototype, "autofocus", 2);
13427
13423
  __decorateClass$8([
13428
13424
  attr({ attribute: "current-value" })
13429
13425
  ], BaseTextInput.prototype, "currentValue", 2);
@@ -13513,7 +13509,7 @@ applyMixins(TextInput, StartEnd);
13513
13509
  const styles$5 = css`${display("block")} :host{font-family:${fontFamilyBase};font-size:${fontSizeBase300};font-weight:${fontWeightRegular};line-height:${lineHeightBase300};max-width:400px}.label{display:flex;color:${colorNeutralForeground1};padding-bottom:${spacingVerticalXS};flex-shrink:0;padding-inline-end:${spacingHorizontalXS}}.label[hidden],:host(:empty) .label{display:none}.root{align-items:center;background-color:${colorNeutralBackground1};border:${strokeWidthThin} solid ${colorNeutralStroke1};border-bottom-color:${colorNeutralStrokeAccessible};border-radius:${borderRadiusMedium};box-sizing:border-box;height:32px;display:inline-flex;flex-direction:row;gap:${spacingHorizontalXXS};padding:0 ${spacingHorizontalMNudge};position:relative;width:100%}:has(.control:user-invalid){border-color:${colorPaletteRedBorder2}}.root::after{box-sizing:border-box;content:'';position:absolute;left:-1px;bottom:0px;right:-1px;height:max(2px,${borderRadiusMedium});border-radius:0 0 ${borderRadiusMedium} ${borderRadiusMedium};border-bottom:2px solid ${colorCompoundBrandStroke};clip-path:inset(calc(100% - 2px) 1px 0px);transform:scaleX(0);transition-property:transform;transition-duration:${durationUltraFast};transition-delay:${curveAccelerateMid}}.control{width:100%;height:100%;box-sizing:border-box;color:${colorNeutralForeground1};border-radius:${borderRadiusMedium};background:${colorTransparentBackground};font-family:${fontFamilyBase};font-weight:${fontWeightRegular};font-size:${fontSizeBase300};border:none;vertical-align:center}.control:focus-visible{outline:0;border:0}.control::placeholder{color:${colorNeutralForeground4}}:host ::slotted([slot='start']),:host ::slotted([slot='end']){display:flex;align-items:center;justify-content:center;color:${colorNeutralForeground3};font-size:${fontSizeBase500}}:host ::slotted([slot='start']){padding-right:${spacingHorizontalXXS}}:host ::slotted([slot='end']){padding-left:${spacingHorizontalXXS};gap:${spacingHorizontalXS}}:host(:hover) .root{border-color:${colorNeutralStroke1Hover};border-bottom-color:${colorNeutralStrokeAccessibleHover}}:host(:active) .root{border-color:${colorNeutralStroke1Pressed}}:host(:focus-within) .root{outline:transparent solid 2px;border-bottom:0}:host(:focus-within) .root::after{transform:scaleX(1);transition-property:transform;transition-duration:${durationNormal};transition-delay:${curveDecelerateMid}}:host(:focus-within:active) .root:after{border-bottom-color:${colorCompoundBrandStrokePressed}}:host([appearance='outline']:focus-within) .root{border:${strokeWidthThin} solid ${colorNeutralStroke1}}:host(:focus-within) .control{color:${colorNeutralForeground1}}:host([disabled]) .root{background:${colorTransparentBackground};border:${strokeWidthThin} solid ${colorNeutralStrokeDisabled}}:host([disabled]) .control::placeholder,:host([disabled]) ::slotted([slot='start']),:host([disabled]) ::slotted([slot='end']){color:${colorNeutralForegroundDisabled}}::selection{color:${colorNeutralForegroundInverted};background-color:${colorNeutralBackgroundInverted}}:host([control-size='small']) .control{font-size:${fontSizeBase200};font-weight:${fontWeightRegular};line-height:${lineHeightBase200}}:host([control-size='small']) .root{height:24px;gap:${spacingHorizontalXXS};padding:0 ${spacingHorizontalSNudge}}:host([control-size='small']) ::slotted([slot='start']),:host([control-size='small']) ::slotted([slot='end']){font-size:${fontSizeBase400}}:host([control-size='large']) .control{font-size:${fontSizeBase400};font-weight:${fontWeightRegular};line-height:${lineHeightBase400}}:host([control-size='large']) .root{height:40px;gap:${spacingHorizontalS};padding:0 ${spacingHorizontalM}}:host([control-size='large']) ::slotted([slot='start']),:host([control-size='large']) ::slotted([slot='end']){font-size:${fontSizeBase600}}:host([appearance='underline']) .root{background:${colorTransparentBackground};border:0;border-radius:0;border-bottom:${strokeWidthThin} solid ${colorNeutralStrokeAccessible}}:host([appearance='underline']:hover) .root{border-bottom-color:${colorNeutralStrokeAccessibleHover}}:host([appearance='underline']:active) .root{border-bottom-color:${colorNeutralStrokeAccessiblePressed}}:host([appearance='underline']:focus-within) .root{border:0;border-bottom-color:${colorNeutralStrokeAccessiblePressed}}:host([appearance='underline'][disabled]) .root{border-bottom-color:${colorNeutralStrokeDisabled}}:host([appearance='filled-lighter']) .root,:host([appearance='filled-darker']) .root{border:${strokeWidthThin} solid ${colorTransparentStroke};box-shadow:${shadow2}}:host([appearance='filled-lighter']) .root{background:${colorNeutralBackground1}}:host([appearance='filled-darker']) .root{background:${colorNeutralBackground3}}:host([appearance='filled-lighter']:hover) .root,:host([appearance='filled-darker']:hover) .root{border-color:${colorTransparentStrokeInteractive}}:host([appearance='filled-lighter']:active) .root,:host([appearance='filled-darker']:active) .root{border-color:${colorTransparentStrokeInteractive};background:${colorNeutralBackground3}}`;
13514
13510
 
13515
13511
  function textInputTemplate(options = {}) {
13516
- return html`<template @focusin=${(x, c) => x.focusinHandler(c.event)} @keydown=${(x, c) => x.keydownHandler(c.event)}><label part=label for=control class=label ${ref("controlLabel")}><slot ${slotted("defaultSlottedNodes")}></slot></label><div class=root part=root>${startSlotTemplate(options)} <input class=control part=control id=control @change=${(x, c) => x.changeHandler(c.event)} @input=${(x, c) => x.inputHandler(c.event)} ?autofocus=${(x) => x.autofocus} autocomplete=${(x) => x.autocomplete} ?disabled=${(x) => x.disabled} list=${(x) => x.list} maxlength=${(x) => x.maxlength} minlength=${(x) => x.minlength} ?multiple=${(x) => x.multiple} name=${(x) => x.name} pattern=${(x) => x.pattern} placeholder=${(x) => x.placeholder} ?readonly=${(x) => x.readOnly} ?required=${(x) => x.required} size=${(x) => x.size} spellcheck=${(x) => x.spellcheck} type=${(x) => x.type} value=${(x) => x.value} ${ref("control")}> ${endSlotTemplate(options)}</div></template>`;
13512
+ return html`<template @keydown=${(x, c) => x.keydownHandler(c.event)}><label part=label for=control class=label ${ref("controlLabel")}><slot ${slotted("defaultSlottedNodes")}></slot></label><div class=root part=root>${startSlotTemplate(options)} <input class=control part=control id=control @change=${(x, c) => x.changeHandler(c.event)} @input=${(x, c) => x.inputHandler(c.event)} autocomplete=${(x) => x.autocomplete} ?disabled=${(x) => x.disabled} list=${(x) => x.list} maxlength=${(x) => x.maxlength} minlength=${(x) => x.minlength} ?multiple=${(x) => x.multiple} name=${(x) => x.name} pattern=${(x) => x.pattern} placeholder=${(x) => x.placeholder} ?readonly=${(x) => x.readOnly} ?required=${(x) => x.required} size=${(x) => x.size} spellcheck=${(x) => x.spellcheck} type=${(x) => x.type} value=${(x) => x.value} ${ref("control")}> ${endSlotTemplate(options)}</div></template>`;
13517
13513
  }
13518
13514
  const template$5 = textInputTemplate();
13519
13515
 
@@ -14215,6 +14211,7 @@ class BaseTreeItem extends FASTElement {
14215
14211
  if (isTreeItem(this.parentElement)) {
14216
14212
  this.slot || (this.slot = "item");
14217
14213
  }
14214
+ maybeSetAutoFocus(this);
14218
14215
  }
14219
14216
  /**
14220
14217
  * Handles changes to the expanded attribute