@fluentui/web-components 2.5.5 → 2.5.7

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 (59) hide show
  1. package/CHANGELOG.json +46 -1
  2. package/CHANGELOG.md +20 -2
  3. package/dist/dts/combobox/combobox.stories.d.ts +5 -0
  4. package/dist/dts/custom-elements.d.ts +3 -35
  5. package/dist/dts/number-field/index.d.ts +1 -1
  6. package/dist/dts/number-field/number-field.styles.d.ts +1 -2
  7. package/dist/dts/search/index.d.ts +1 -1
  8. package/dist/dts/search/search.styles.d.ts +2 -3
  9. package/dist/dts/select/index.d.ts +1 -1
  10. package/dist/dts/select/select.styles.d.ts +11 -3
  11. package/dist/dts/styles/focus.d.ts +13 -0
  12. package/dist/dts/styles/index.d.ts +1 -0
  13. package/dist/dts/styles/patterns/button.styles.d.ts +12 -6
  14. package/dist/dts/styles/patterns/input.styles.d.ts +13 -5
  15. package/dist/dts/text-area/index.d.ts +2 -18
  16. package/dist/dts/text-area/text-area.stories.d.ts +1 -17
  17. package/dist/dts/text-area/text-area.styles.d.ts +1 -2
  18. package/dist/dts/text-field/index.d.ts +2 -18
  19. package/dist/dts/text-field/text-field.stories.d.ts +1 -17
  20. package/dist/dts/text-field/text-field.styles.d.ts +1 -2
  21. package/dist/esm/accordion/accordion-item/accordion-item.styles.js +8 -10
  22. package/dist/esm/anchor/anchor.styles.js +3 -10
  23. package/dist/esm/breadcrumb-item/breadcrumb-item.styles.js +6 -10
  24. package/dist/esm/button/button.styles.js +14 -39
  25. package/dist/esm/checkbox/checkbox.styles.js +4 -8
  26. package/dist/esm/combobox/combobox.stories.js +7 -2
  27. package/dist/esm/combobox/combobox.styles.js +22 -23
  28. package/dist/esm/data-grid/data-grid-cell.styles.js +6 -9
  29. package/dist/esm/flipper/flipper.styles.js +5 -6
  30. package/dist/esm/listbox/listbox.styles.js +3 -4
  31. package/dist/esm/listbox-option/listbox-option.styles.js +9 -6
  32. package/dist/esm/menu/menu.styles.js +1 -1
  33. package/dist/esm/menu-item/menu-item.styles.js +5 -9
  34. package/dist/esm/number-field/number-field.styles.js +5 -16
  35. package/dist/esm/progress/progress/progress.styles.js +0 -1
  36. package/dist/esm/progress/progress-ring/progress-ring.styles.js +0 -1
  37. package/dist/esm/radio/radio.styles.js +4 -9
  38. package/dist/esm/search/search.styles.js +8 -11
  39. package/dist/esm/select/select.stories.js +2 -2
  40. package/dist/esm/select/select.styles.js +37 -110
  41. package/dist/esm/styles/focus.js +21 -0
  42. package/dist/esm/styles/index.js +1 -0
  43. package/dist/esm/styles/patterns/button.styles.js +194 -161
  44. package/dist/esm/styles/patterns/input.styles.js +113 -102
  45. package/dist/esm/switch/switch.styles.js +5 -17
  46. package/dist/esm/tabs/tab/tab.styles.js +4 -6
  47. package/dist/esm/text-area/text-area.stories.js +2 -2
  48. package/dist/esm/text-area/text-area.styles.js +5 -11
  49. package/dist/esm/text-field/text-field.styles.js +5 -11
  50. package/dist/esm/toolbar/toolbar.styles.js +4 -3
  51. package/dist/esm/tree-item/tree-item.styles.js +4 -14
  52. package/dist/esm/tree-view/tree-view.styles.js +0 -4
  53. package/dist/fluent-web-components.api.json +179 -397
  54. package/dist/web-components.d.ts +54 -90
  55. package/dist/web-components.js +158 -132
  56. package/dist/web-components.min.js +137 -156
  57. package/docs/api-report.md +44 -99
  58. package/karma.conf.js +3 -8
  59. package/package.json +27 -40
@@ -2,8 +2,9 @@ import { css } from '@microsoft/fast-element';
2
2
  import { disabledCursor, display, focusVisible, forcedColorsStylesheetBehavior, } from '@microsoft/fast-foundation';
3
3
  import { SystemColors } from '@microsoft/fast-web-utilities';
4
4
  import { heightNumber } from '../styles';
5
- import { accentFillActive, accentFillHover, accentFillRest, controlCornerRadius, designUnit, disabledOpacity, fillColor, focusStrokeOuter, foregroundOnAccentRest, neutralFillInputAltActive, neutralFillInputAltFocus, neutralFillInputAltHover, neutralFillInputAltRest, neutralForegroundRest, neutralStrokeStrongActive, neutralStrokeStrongHover, neutralStrokeStrongRest, strokeWidth, } from '../design-tokens';
5
+ import { accentFillActive, accentFillHover, accentFillRest, controlCornerRadius, designUnit, disabledOpacity, foregroundOnAccentRest, neutralFillInputAltActive, neutralFillInputAltFocus, neutralFillInputAltHover, neutralFillInputAltRest, neutralForegroundRest, neutralStrokeStrongActive, neutralStrokeStrongHover, neutralStrokeStrongRest, strokeWidth, } from '../design-tokens';
6
6
  import { typeRampBase } from '../styles/patterns/type-ramp';
7
+ import { focusTreatmentTight } from '../styles/focus';
7
8
  export const checkboxStyles = (context, definition) => css `
8
9
  ${display('inline-flex')} :host {
9
10
  align-items: center;
@@ -23,7 +24,6 @@ export const checkboxStyles = (context, definition) => css `
23
24
  border-radius: calc(${controlCornerRadius} * 1px);
24
25
  border: calc(${strokeWidth} * 1px) solid ${neutralStrokeStrongRest};
25
26
  background: ${neutralFillInputAltRest};
26
- outline: none;
27
27
  cursor: pointer;
28
28
  }
29
29
 
@@ -74,9 +74,8 @@ export const checkboxStyles = (context, definition) => css `
74
74
  }
75
75
 
76
76
  :host(:${focusVisible}) .control {
77
- box-shadow: 0 0 0 1px ${fillColor}, 0 0 0 3px ${focusStrokeOuter};
78
77
  background: ${neutralFillInputAltFocus};
79
- border-color: ${focusStrokeOuter};
78
+ ${focusTreatmentTight}
80
79
  }
81
80
 
82
81
  :host(.checked) .control {
@@ -125,7 +124,7 @@ export const checkboxStyles = (context, definition) => css `
125
124
  }
126
125
  :host(:${focusVisible}) .control {
127
126
  forced-color-adjust: none;
128
- box-shadow: 0 0 0 1px ${SystemColors.Field}, 0 0 0 3px ${SystemColors.FieldText};
127
+ outline-color: ${SystemColors.FieldText};
129
128
  background: ${SystemColors.Field};
130
129
  border-color: ${SystemColors.Highlight};
131
130
  }
@@ -138,9 +137,6 @@ export const checkboxStyles = (context, definition) => css `
138
137
  background: ${SystemColors.HighlightText};
139
138
  border-color: ${SystemColors.Highlight};
140
139
  }
141
- :host(.checked:${focusVisible}) .control {
142
- box-shadow: 0 0 0 1px ${SystemColors.Field}, 0 0 0 3px ${SystemColors.FieldText};
143
- }
144
140
  :host(.checked) slot[name='checked-indicator'],
145
141
  :host(.checked) slot[name='indeterminate-indicator'] {
146
142
  fill: ${SystemColors.HighlightText};
@@ -7,6 +7,9 @@ export default {
7
7
  options: ['filled', 'outline'],
8
8
  control: { type: 'radio' },
9
9
  },
10
+ disabled: {
11
+ control: { type: 'boolean' },
12
+ },
10
13
  autocomplete: {
11
14
  options: ['inline', 'list', 'none', 'both'],
12
15
  control: { type: 'radio' },
@@ -20,7 +23,7 @@ export default {
20
23
  },
21
24
  },
22
25
  };
23
- const ComboboxTemplate = ({ appearance, autocomplete, position, required }) => `
26
+ const ComboboxTemplate = ({ appearance, disabled, autocomplete, position, required }) => `
24
27
  <style>
25
28
  div.docs-story>div:first-child {
26
29
  height: 32em !important;
@@ -28,7 +31,8 @@ const ComboboxTemplate = ({ appearance, autocomplete, position, required }) => `
28
31
  </style>
29
32
  <fluent-combobox
30
33
  ${appearance ? `appearance="${appearance}"` : ''}
31
- ${appearance ? `autocomplete="${autocomplete}"` : ''}
34
+ ${disabled ? 'disabled' : ''}
35
+ ${autocomplete ? `autocomplete="${autocomplete}"` : ''}
32
36
  ${required ? 'required' : ''}
33
37
  ${position ? `position="${position}"` : ''}
34
38
  style="margin-bottom: 500px;"
@@ -52,6 +56,7 @@ export const Combobox = ComboboxTemplate.bind({});
52
56
  Combobox.args = {
53
57
  value: 'Christopher Eccleston',
54
58
  appearance: 'outline',
59
+ disabled: false,
55
60
  };
56
61
  const example = `
57
62
  <fluent-combobox>
@@ -1,41 +1,40 @@
1
1
  import { css } from '@microsoft/fast-element';
2
- import { disabledCursor, focusVisible } from '@microsoft/fast-foundation';
3
- import { selectFilledStyles, selectStyles } from '../select/select.styles';
2
+ import { disabledCursor, forcedColorsStylesheetBehavior } from '@microsoft/fast-foundation';
3
+ import { baseSelectStyles } from '../select/select.styles';
4
4
  import { appearanceBehavior } from '../utilities/behaviors';
5
5
  import { strokeWidth } from '../design-tokens';
6
6
  import { typeRampBase } from '../styles/patterns/type-ramp';
7
+ import { inputFilledStyles, inputForcedColorStyles, inputOutlineStyles, inputStateStyles } from '../styles';
8
+ const logicalControlSelector = '.control';
9
+ const interactivitySelector = ':not([disabled]):not([open])';
7
10
  export const comboboxStyles = (context, definition) => css `
8
- ${selectStyles(context, definition)}
11
+ ${baseSelectStyles(context, definition)}
12
+
13
+ ${inputStateStyles(context, definition, logicalControlSelector)}
9
14
 
10
15
  :host(:empty) .listbox {
11
- display: none;
16
+ display: none;
12
17
  }
13
18
 
14
19
  :host([disabled]) *,
15
20
  :host([disabled]) {
16
- cursor: ${disabledCursor};
17
- user-select: none;
21
+ cursor: ${disabledCursor};
22
+ user-select: none;
18
23
  }
19
24
 
20
25
  :host(:active) .selected-value {
21
- user-select: none;
26
+ user-select: none;
22
27
  }
23
28
 
24
29
  .selected-value {
25
- -webkit-appearance: none;
26
- background: transparent;
27
- border: none;
28
- color: inherit;
29
- ${typeRampBase}
30
- height: calc(100% - ${strokeWidth} * 1px));
31
- margin: auto 0;
32
- width: 100%;
33
- }
34
-
35
- .selected-value:hover,
36
- .selected-value:${focusVisible},
37
- .selected-value:disabled,
38
- .selected-value:active {
39
- outline: none;
30
+ -webkit-appearance: none;
31
+ background: transparent;
32
+ border: none;
33
+ color: inherit;
34
+ ${typeRampBase}
35
+ height: calc(100% - ${strokeWidth} * 1px));
36
+ margin: auto 0;
37
+ width: 100%;
38
+ outline: none;
40
39
  }
41
- `.withBehaviors(appearanceBehavior('filled', selectFilledStyles(context, definition)));
40
+ `.withBehaviors(appearanceBehavior('outline', inputOutlineStyles(context, definition, logicalControlSelector, interactivitySelector)), appearanceBehavior('filled', inputFilledStyles(context, definition, logicalControlSelector, interactivitySelector)), forcedColorsStylesheetBehavior(inputForcedColorStyles(context, definition, logicalControlSelector, interactivitySelector)));
@@ -1,17 +1,17 @@
1
1
  import { css } from '@microsoft/fast-element';
2
2
  import { SystemColors } from '@microsoft/fast-web-utilities';
3
3
  import { focusVisible, forcedColorsStylesheetBehavior, } from '@microsoft/fast-foundation';
4
- import { controlCornerRadius, designUnit, focusStrokeOuter, focusStrokeWidth, neutralForegroundRest, } from '../design-tokens';
4
+ import { controlCornerRadius, designUnit, focusStrokeWidth, neutralForegroundRest, strokeWidth, } from '../design-tokens';
5
5
  import { typeRampBase } from '../styles/patterns/type-ramp';
6
+ import { focusTreatmentBase } from '../styles/focus';
6
7
  export const dataGridCellStyles = (context, definition) => css `
7
8
  :host {
8
- padding: calc(${designUnit} * 1px) calc(${designUnit} * 3px);
9
+ padding: calc((${designUnit} + ${focusStrokeWidth} - ${strokeWidth}) * 1px) calc(((${designUnit} * 3) + ${focusStrokeWidth} - ${strokeWidth}) * 1px);
9
10
  color: ${neutralForegroundRest};
10
11
  box-sizing: border-box;
11
12
  ${typeRampBase}
12
- border: transparent calc(${focusStrokeWidth} * 1px) solid;
13
+ border: transparent calc(${strokeWidth} * 1px) solid;
13
14
  overflow: hidden;
14
- outline: none;
15
15
  white-space: nowrap;
16
16
  border-radius: calc(${controlCornerRadius} * 1px);
17
17
  }
@@ -21,19 +21,16 @@ export const dataGridCellStyles = (context, definition) => css `
21
21
  }
22
22
 
23
23
  :host(:${focusVisible}) {
24
- border-color: ${focusStrokeOuter};
24
+ ${focusTreatmentBase}
25
25
  }
26
26
  `.withBehaviors(forcedColorsStylesheetBehavior(css `
27
27
  :host {
28
28
  forced-color-adjust: none;
29
- border-color: transparent;
30
29
  background: ${SystemColors.Field};
31
30
  color: ${SystemColors.FieldText};
32
31
  }
33
32
 
34
33
  :host(:${focusVisible}) {
35
- border-color: ${SystemColors.FieldText};
36
- box-shadow: 0 0 0 2px inset ${SystemColors.Field};
37
- color: ${SystemColors.FieldText};
34
+ outline-color: ${SystemColors.FieldText};
38
35
  }
39
36
  `));
@@ -2,7 +2,8 @@ import { css } from '@microsoft/fast-element';
2
2
  import { disabledCursor, display, focusVisible, forcedColorsStylesheetBehavior, } from '@microsoft/fast-foundation';
3
3
  import { SystemColors } from '@microsoft/fast-web-utilities';
4
4
  import { heightNumber } from '../styles';
5
- import { controlCornerRadius, designUnit, disabledOpacity, focusStrokeOuter, focusStrokeWidth, neutralFillRest, neutralFillStrongActive, neutralFillStrongHover, neutralFillStrongRest, neutralStrokeControlRest, } from '../design-tokens';
5
+ import { controlCornerRadius, designUnit, disabledOpacity, neutralFillRest, neutralFillStrongActive, neutralFillStrongHover, neutralFillStrongRest, neutralStrokeControlRest, strokeWidth, } from '../design-tokens';
6
+ import { focusTreatmentBase } from '../styles/focus';
6
7
  export const flipperStyles = (context, definition) => css `
7
8
  ${display('inline-flex')} :host {
8
9
  height: calc((${heightNumber} + ${designUnit}) * 1px);
@@ -13,9 +14,8 @@ export const flipperStyles = (context, definition) => css `
13
14
  background: padding-box linear-gradient(${neutralFillRest}, ${neutralFillRest}),
14
15
  border-box ${neutralStrokeControlRest};
15
16
  box-sizing: border-box;
16
- border: calc(${focusStrokeWidth} * 1px) solid transparent;
17
+ border: calc(${strokeWidth} * 1px) solid transparent;
17
18
  border-radius: calc(${controlCornerRadius} * 1px);
18
- outline: none;
19
19
  padding: 0;
20
20
  }
21
21
 
@@ -43,7 +43,7 @@ export const flipperStyles = (context, definition) => css `
43
43
  }
44
44
 
45
45
  :host(:${focusVisible}) {
46
- border-color: ${focusStrokeOuter};
46
+ ${focusTreatmentBase}
47
47
  }
48
48
 
49
49
  :host::-moz-focus-inner {
@@ -79,7 +79,6 @@ export const flipperStyles = (context, definition) => css `
79
79
  }
80
80
  :host(:${focusVisible}) {
81
81
  forced-color-adjust: none;
82
- border-color: ${SystemColors.Highlight};
83
- box-shadow: 0 0 0 2px ${SystemColors.ButtonFace}, 0 0 0 4px ${SystemColors.ButtonText};
82
+ outline-color: ${SystemColors.Highlight};
84
83
  }
85
84
  `));
@@ -1,6 +1,7 @@
1
1
  import { css } from '@microsoft/fast-element';
2
2
  import { display, ListboxOption } from '@microsoft/fast-foundation';
3
- import { controlCornerRadius, designUnit, focusStrokeOuter, neutralStrokeRest, strokeWidth, } from '../design-tokens';
3
+ import { controlCornerRadius, designUnit, neutralStrokeRest, strokeWidth, } from '../design-tokens';
4
+ import { focusTreatmentBase } from '../styles/focus';
4
5
  export const listboxStyles = (context, definition) => css `
5
6
  ${display('inline-flex')} :host {
6
7
  border: calc(${strokeWidth} * 1px) solid ${neutralStrokeRest};
@@ -8,7 +9,6 @@ export const listboxStyles = (context, definition) => css `
8
9
  box-sizing: border-box;
9
10
  flex-direction: column;
10
11
  padding: calc(${designUnit} * 1px) 0;
11
- outline: none;
12
12
  }
13
13
 
14
14
  ::slotted(${context.tagFor(ListboxOption)}) {
@@ -16,7 +16,6 @@ export const listboxStyles = (context, definition) => css `
16
16
  }
17
17
 
18
18
  :host(:focus-within:not([disabled])) {
19
- border-color: ${focusStrokeOuter};
20
- box-shadow: 0 0 0 1px ${focusStrokeOuter} inset;
19
+ ${focusTreatmentBase}
21
20
  }
22
21
  `;
@@ -2,24 +2,24 @@ import { css } from '@microsoft/fast-element';
2
2
  import { disabledCursor, display, focusVisible, forcedColorsStylesheetBehavior, } from '@microsoft/fast-foundation';
3
3
  import { SystemColors } from '@microsoft/fast-web-utilities';
4
4
  import { heightNumber } from '../styles/size';
5
- import { accentFillRest, controlCornerRadius, designUnit, disabledOpacity, focusStrokeOuter, focusStrokeWidth, neutralFillSecondaryActive, neutralFillSecondaryHover, neutralFillSecondaryRest, neutralFillStealthActive, neutralFillStealthFocus, neutralFillStealthHover, neutralFillStealthRest, neutralForegroundRest, } from '../design-tokens';
5
+ import { accentFillRest, controlCornerRadius, designUnit, disabledOpacity, focusStrokeWidth, neutralFillSecondaryActive, neutralFillSecondaryHover, neutralFillSecondaryRest, neutralFillStealthActive, neutralFillStealthFocus, neutralFillStealthHover, neutralFillStealthRest, neutralForegroundRest, strokeWidth, } from '../design-tokens';
6
6
  import { typeRampBase } from '../styles/patterns/type-ramp';
7
+ import { focusTreatmentBase } from '../styles/focus';
7
8
  export const optionStyles = (context, definition) => css `
8
9
  ${display('inline-flex')} :host {
9
10
  position: relative;
10
11
  ${typeRampBase}
11
12
  background: ${neutralFillStealthRest};
12
13
  border-radius: calc(${controlCornerRadius} * 1px);
13
- border: calc(${focusStrokeWidth} * 1px) solid transparent;
14
+ border: calc(${strokeWidth} * 1px) solid transparent;
14
15
  box-sizing: border-box;
15
16
  color: ${neutralForegroundRest};
16
17
  cursor: pointer;
17
18
  fill: currentcolor;
18
19
  height: calc(${heightNumber} * 1px);
19
- outline: none;
20
20
  overflow: hidden;
21
21
  align-items: center;
22
- padding: 0 calc(${designUnit} * 2.25px);
22
+ padding: 0 calc(((${designUnit} * 3) - ${strokeWidth} - 1) * 1px);
23
23
  user-select: none;
24
24
  white-space: nowrap;
25
25
  }
@@ -28,7 +28,7 @@ export const optionStyles = (context, definition) => css `
28
28
  content: '';
29
29
  display: block;
30
30
  position: absolute;
31
- left: 0;
31
+ left: calc((${focusStrokeWidth} - ${strokeWidth}) * 1px);
32
32
  top: calc((${heightNumber} / 4) - ${focusStrokeWidth} * 1px);
33
33
  width: 3px;
34
34
  height: calc((${heightNumber} / 2) * 1px);
@@ -54,7 +54,7 @@ export const optionStyles = (context, definition) => css `
54
54
  }
55
55
 
56
56
  :host(:${focusVisible}) {
57
- border-color: ${focusStrokeOuter};
57
+ ${focusTreatmentBase}
58
58
  background: ${neutralFillStealthFocus};
59
59
  }
60
60
 
@@ -127,4 +127,7 @@ export const optionStyles = (context, definition) => css `
127
127
  fill: currentcolor;
128
128
  opacity: 1;
129
129
  }
130
+ :host(:${focusVisible}) {
131
+ outline-color: ${SystemColors.CanvasText};
132
+ }
130
133
  `));
@@ -9,7 +9,7 @@ export const menuStyles = (context, definition) => css `
9
9
  border: calc(${strokeWidth} * 1px) solid transparent;
10
10
  border-radius: calc(${layerCornerRadius} * 1px);
11
11
  box-shadow: ${elevationShadowFlyout};
12
- padding: calc(${designUnit} * 1px) 0;
12
+ padding: calc((${designUnit} - ${strokeWidth}) * 1px) 0;
13
13
  max-width: 368px;
14
14
  min-width: 64px;
15
15
  }
@@ -2,14 +2,14 @@ import { css } from '@microsoft/fast-element';
2
2
  import { disabledCursor, display, focusVisible, forcedColorsStylesheetBehavior, } from '@microsoft/fast-foundation';
3
3
  import { SystemColors } from '@microsoft/fast-web-utilities';
4
4
  import { DirectionalStyleSheetBehavior, heightNumber } from '../styles/index';
5
- import { controlCornerRadius, disabledOpacity, focusStrokeOuter, focusStrokeWidth, neutralFillStealthActive, neutralFillStealthHover, neutralForegroundHint, neutralForegroundRest, strokeWidth, } from '../design-tokens';
5
+ import { controlCornerRadius, disabledOpacity, neutralFillStealthActive, neutralFillStealthHover, neutralForegroundHint, neutralForegroundRest, strokeWidth, } from '../design-tokens';
6
6
  import { typeRampBase } from '../styles/patterns/type-ramp';
7
+ import { focusTreatmentBase } from '../styles/focus';
7
8
  export const menuItemStyles = (context, definition) => css `
8
9
  ${display('grid')} :host {
9
10
  contain: layout;
10
11
  overflow: visible;
11
12
  ${typeRampBase}
12
- outline: none;
13
13
  box-sizing: border-box;
14
14
  height: calc(${heightNumber} * 1px);
15
15
  grid-template-columns: minmax(32px, auto) 1fr minmax(32px, auto);
@@ -64,8 +64,7 @@ export const menuItemStyles = (context, definition) => css `
64
64
  }
65
65
 
66
66
  :host(:${focusVisible}) {
67
- border: calc(${strokeWidth} * 1px) solid ${focusStrokeOuter};
68
- box-shadow: 0 0 0 calc((${focusStrokeWidth} - ${strokeWidth}) * 1px) ${focusStrokeOuter};
67
+ ${focusTreatmentBase}
69
68
  }
70
69
 
71
70
  :host(:not([disabled]):hover) {
@@ -151,7 +150,6 @@ export const menuItemStyles = (context, definition) => css `
151
150
  justify-content: center;
152
151
  position: relative;
153
152
  box-sizing: border-box;
154
- outline: none;
155
153
  }
156
154
 
157
155
  :host .checkbox-indicator,
@@ -197,13 +195,11 @@ export const menuItemStyles = (context, definition) => css `
197
195
  }
198
196
  :host(.expanded) {
199
197
  background: ${SystemColors.Highlight};
200
- border-color: ${SystemColors.Highlight};
201
198
  color: ${SystemColors.HighlightText};
202
199
  }
203
200
  :host(:${focusVisible}) {
204
201
  background: ${SystemColors.Highlight};
205
- border-color: ${SystemColors.ButtonText};
206
- box-shadow: 0 0 0 calc(${strokeWidth} * 1px) inset ${SystemColors.HighlightText};
202
+ outline-color: ${SystemColors.ButtonText};
207
203
  color: ${SystemColors.HighlightText};
208
204
  fill: currentcolor;
209
205
  }
@@ -219,7 +215,7 @@ export const menuItemStyles = (context, definition) => css `
219
215
  opacity: 1;
220
216
  }
221
217
  :host([disabled]:${focusVisible}) {
222
- border-color: ${SystemColors.GrayText};
218
+ outline-color: ${SystemColors.GrayText};
223
219
  }
224
220
  :host .expanded-toggle,
225
221
  :host .checkbox,
@@ -1,20 +1,15 @@
1
1
  import { css } from '@microsoft/fast-element';
2
2
  import { display, forcedColorsStylesheetBehavior, } from '@microsoft/fast-foundation';
3
- import { SystemColors } from "@microsoft/fast-web-utilities";
4
- import { inputFilledForcedColorStyles, inputFilledStyles, inputForcedColorStyles, inputStateStyles, inputStyles, } from '../styles/index';
3
+ import { baseInputStyles, inputFilledStyles, inputForcedColorStyles, inputOutlineStyles, inputStateStyles, } from '../styles/index';
5
4
  import { appearanceBehavior } from '../utilities/behaviors';
6
5
  import { designUnit } from '../design-tokens';
7
- export const numberFieldFilledStyles = (context, definition) => css `
8
- ${inputFilledStyles(context, definition, '.root')}
9
- `.withBehaviors(forcedColorsStylesheetBehavior(css `
10
- ${inputFilledForcedColorStyles(context, definition, '.root')}
11
- `));
6
+ const logicalControlSelector = '.root';
12
7
  export const numberFieldStyles = (context, definition) => css `
13
8
  ${display('inline-block')}
14
9
 
15
- ${inputStyles(context, definition, '.root')}
10
+ ${baseInputStyles(context, definition, logicalControlSelector)}
16
11
 
17
- ${inputStateStyles(context, definition, '.root')}
12
+ ${inputStateStyles(context, definition, logicalControlSelector)}
18
13
 
19
14
  .root {
20
15
  display: flex;
@@ -73,10 +68,4 @@ export const numberFieldStyles = (context, definition) => css `
73
68
  .step-up {
74
69
  padding-top: 3px;
75
70
  }
76
- `.withBehaviors(appearanceBehavior('filled', numberFieldFilledStyles(context, definition)), forcedColorsStylesheetBehavior(css `
77
- ${inputForcedColorStyles(context, definition, '.root')}
78
- .step-up,
79
- .step-down {
80
- fill: ${SystemColors.FieldText};
81
- }
82
- `));
71
+ `.withBehaviors(appearanceBehavior('outline', inputOutlineStyles(context, definition, logicalControlSelector)), appearanceBehavior('filled', inputFilledStyles(context, definition, logicalControlSelector)), forcedColorsStylesheetBehavior(inputForcedColorStyles(context, definition, logicalControlSelector)));
@@ -5,7 +5,6 @@ import { accentFillRest, designUnit, neutralForegroundHint, neutralStrokeStrongR
5
5
  export const progressStyles = (context, definition) => css `
6
6
  ${display('flex')} :host {
7
7
  align-items: center;
8
- outline: none;
9
8
  height: calc((${strokeWidth} * 3) * 1px);
10
9
  }
11
10
 
@@ -6,7 +6,6 @@ import { accentFillRest, neutralForegroundHint } from '../../design-tokens';
6
6
  export const progressRingStyles = (context, definition) => css `
7
7
  ${display('flex')} :host {
8
8
  align-items: center;
9
- outline: none;
10
9
  height: calc(${heightNumber} * 1px);
11
10
  width: calc(${heightNumber} * 1px);
12
11
  }
@@ -2,8 +2,9 @@ import { css } from '@microsoft/fast-element';
2
2
  import { SystemColors } from '@microsoft/fast-web-utilities';
3
3
  import { disabledCursor, display, focusVisible, forcedColorsStylesheetBehavior, } from '@microsoft/fast-foundation';
4
4
  import { heightNumber } from '../styles';
5
- import { accentFillActive, accentFillHover, accentFillRest, designUnit, disabledOpacity, fillColor, focusStrokeOuter, foregroundOnAccentRest, neutralFillInputAltActive, neutralFillInputAltFocus, neutralFillInputAltHover, neutralFillInputAltRest, neutralForegroundRest, neutralStrokeStrongActive, neutralStrokeStrongHover, neutralStrokeStrongRest, strokeWidth, } from '../design-tokens';
5
+ import { accentFillActive, accentFillHover, accentFillRest, designUnit, disabledOpacity, foregroundOnAccentRest, neutralFillInputAltActive, neutralFillInputAltFocus, neutralFillInputAltHover, neutralFillInputAltRest, neutralForegroundRest, neutralStrokeStrongActive, neutralStrokeStrongHover, neutralStrokeStrongRest, strokeWidth, } from '../design-tokens';
6
6
  import { typeRampBase } from '../styles/patterns/type-ramp';
7
+ import { focusTreatmentTight } from '../styles/focus';
7
8
  export const radioStyles = (context, definition) => css `
8
9
  ${display('inline-flex')} :host {
9
10
  --input-size: calc((${heightNumber} / 2) + ${designUnit});
@@ -27,7 +28,6 @@ export const radioStyles = (context, definition) => css `
27
28
  border-radius: 50%;
28
29
  border: calc(${strokeWidth} * 1px) solid ${neutralStrokeStrongRest};
29
30
  background: ${neutralFillInputAltRest};
30
- outline: none;
31
31
  cursor: pointer;
32
32
  }
33
33
 
@@ -76,9 +76,8 @@ export const radioStyles = (context, definition) => css `
76
76
  }
77
77
 
78
78
  :host(:${focusVisible}) .control {
79
- box-shadow: 0 0 0 1px ${fillColor}, 0 0 0 3px ${focusStrokeOuter};
79
+ ${focusTreatmentTight}
80
80
  background: ${neutralFillInputAltFocus};
81
- border-color: ${focusStrokeOuter};
82
81
  }
83
82
 
84
83
  :host(.checked) .control {
@@ -121,18 +120,14 @@ export const radioStyles = (context, definition) => css `
121
120
  }
122
121
  :host(:${focusVisible}) .control {
123
122
  forced-color-adjust: none;
124
- box-shadow: 0 0 0 1px ${SystemColors.Field}, 0 0 0 3px ${SystemColors.FieldText};
125
123
  background: ${SystemColors.Field};
126
- border-color: ${SystemColors.Highlight};
124
+ outline-color: ${SystemColors.FieldText};
127
125
  }
128
126
  :host(.checked:not(.disabled):hover) .control,
129
127
  :host(.checked:not(.disabled):active) .control {
130
128
  border-color: ${SystemColors.Highlight};
131
129
  background: ${SystemColors.Highlight};
132
130
  }
133
- :host(.checked:${focusVisible}) .control {
134
- box-shadow: 0 0 0 1px ${SystemColors.Field}, 0 0 0 3px ${SystemColors.FieldText};
135
- }
136
131
  :host(.checked) slot[name='checked-indicator'] {
137
132
  fill: ${SystemColors.Highlight};
138
133
  }
@@ -1,9 +1,10 @@
1
1
  import { css } from '@microsoft/fast-element';
2
2
  import { Button, DesignToken, display, forcedColorsStylesheetBehavior, } from '@microsoft/fast-foundation';
3
- import { heightNumber, inputFilledForcedColorStyles, inputFilledStyles, inputForcedColorStyles, inputStateStyles, inputStyles, } from '../styles';
3
+ import { baseInputStyles, heightNumber, inputFilledStyles, inputForcedColorStyles, inputOutlineStyles, inputStateStyles, } from '../styles';
4
4
  import { appearanceBehavior } from '../utilities/behaviors';
5
5
  import { controlCornerRadius, density, designUnit, neutralFillInputRecipe, neutralFillStealthRecipe, neutralForegroundRest } from '../design-tokens';
6
6
  import { typeRampBase } from '../styles/patterns/type-ramp';
7
+ const logicalControlSelector = '.root';
7
8
  const clearButtonHover = DesignToken.create("clear-button-hover").withDefault((target) => {
8
9
  const buttonRecipe = neutralFillStealthRecipe.getValueFor(target);
9
10
  const inputRecipe = neutralFillInputRecipe.getValueFor(target);
@@ -14,15 +15,13 @@ const clearButtonActive = DesignToken.create("clear-button-active").withDefault(
14
15
  const inputRecipe = neutralFillInputRecipe.getValueFor(target);
15
16
  return buttonRecipe.evaluate(target, inputRecipe.evaluate(target).focus).active;
16
17
  });
17
- export const searchFilledStyles = (context, definition) => css `
18
- ${inputFilledStyles(context, definition, '.root')}
19
- `.withBehaviors(forcedColorsStylesheetBehavior(css `
20
- ${inputFilledForcedColorStyles(context, definition, '.root')}
21
- `));
22
18
  export const searchStyles = (context, definition) => css `
23
19
  ${display('inline-block')}
24
- ${inputStyles(context, definition, '.root')}
25
- ${inputStateStyles(context, definition, '.root')}
20
+
21
+ ${baseInputStyles(context, definition, logicalControlSelector)}
22
+
23
+ ${inputStateStyles(context, definition, logicalControlSelector)}
24
+
26
25
  .root {
27
26
  display: flex;
28
27
  flex-direction: row;
@@ -102,6 +101,4 @@ export const searchStyles = (context, definition) => css `
102
101
  ::slotted(${context.tagFor(Button)}) {
103
102
  margin-inline-end: 1px;
104
103
  }
105
- `.withBehaviors(appearanceBehavior('filled', searchFilledStyles(context, definition)), forcedColorsStylesheetBehavior(css `
106
- ${inputForcedColorStyles(context, definition, '.root')}
107
- `));
104
+ `.withBehaviors(appearanceBehavior('outline', inputOutlineStyles(context, definition, logicalControlSelector)), appearanceBehavior('filled', inputFilledStyles(context, definition, logicalControlSelector)), forcedColorsStylesheetBehavior(inputForcedColorStyles(context, definition, logicalControlSelector)));
@@ -5,9 +5,9 @@ export default {
5
5
  component: fluentSelect,
6
6
  argTypes: {
7
7
  appearance: {
8
- options: ['filled', 'outlined', 'stealth'],
8
+ options: ['filled', 'outline', 'stealth'],
9
9
  control: { type: 'radio' },
10
- defaultValue: 'outlined',
10
+ defaultValue: 'outline',
11
11
  },
12
12
  disabled: {
13
13
  control: { type: 'boolean' },