@fluentui/react-field 0.0.0-nightly-20250703-1103.1 → 0.0.0-nightly-20250707-0406.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,26 +1,26 @@
1
1
  # Change Log - @fluentui/react-field
2
2
 
3
- This log was last generated on Thu, 03 Jul 2025 11:19:18 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 07 Jul 2025 04:22:38 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## [0.0.0-nightly-20250703-1103.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-field_v0.0.0-nightly-20250703-1103.1)
7
+ ## [0.0.0-nightly-20250707-0406.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-field_v0.0.0-nightly-20250707-0406.1)
8
8
 
9
- Thu, 03 Jul 2025 11:19:18 GMT
10
- [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-field_v9.3.4..@fluentui/react-field_v0.0.0-nightly-20250703-1103.1)
9
+ Mon, 07 Jul 2025 04:22:38 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-field_v9.3.4..@fluentui/react-field_v0.0.0-nightly-20250707-0406.1)
11
11
 
12
12
  ### Changes
13
13
 
14
14
  - Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/not available) by fluentui-internal@service.microsoft.com)
15
- - Bump @fluentui/react-context-selector to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
16
- - Bump @fluentui/react-jsx-runtime to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
17
- - Bump @fluentui/react-label to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
18
- - Bump @fluentui/react-shared-contexts to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
19
- - Bump @fluentui/react-theme to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
20
- - Bump @fluentui/react-utilities to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
21
- - Bump @fluentui/react-tooltip to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
22
- - Bump @fluentui/react-conformance to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
23
- - Bump @fluentui/react-conformance-griffel to v0.0.0-nightly-20250703-1103.1 ([commit](https://github.com/microsoft/fluentui/commit/526d249cdcd844e3f173f9163b3ce779fe6035e8) by beachball)
15
+ - Bump @fluentui/react-context-selector to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
16
+ - Bump @fluentui/react-jsx-runtime to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
17
+ - Bump @fluentui/react-label to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
18
+ - Bump @fluentui/react-shared-contexts to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
19
+ - Bump @fluentui/react-theme to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
20
+ - Bump @fluentui/react-utilities to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
21
+ - Bump @fluentui/react-tooltip to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
22
+ - Bump @fluentui/react-conformance to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
23
+ - Bump @fluentui/react-conformance-griffel to v0.0.0-nightly-20250707-0406.1 ([commit](https://github.com/microsoft/fluentui/commit/0f2f74845f342625c7dff5f00e75864a86e297cb) by beachball)
24
24
 
25
25
  ## [9.3.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-field_v9.3.4)
26
26
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-field",
3
- "version": "0.0.0-nightly-20250703-1103.1",
3
+ "version": "0.0.0-nightly-20250707-0406.1",
4
4
  "description": "Fluent UI Field components",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -12,20 +12,20 @@
12
12
  },
13
13
  "license": "MIT",
14
14
  "devDependencies": {
15
- "@fluentui/react-tooltip": "0.0.0-nightly-20250703-1103.1",
15
+ "@fluentui/react-tooltip": "0.0.0-nightly-20250707-0406.1",
16
16
  "@fluentui/eslint-plugin": "*",
17
- "@fluentui/react-conformance": "0.0.0-nightly-20250703-1103.1",
18
- "@fluentui/react-conformance-griffel": "0.0.0-nightly-20250703-1103.1",
17
+ "@fluentui/react-conformance": "0.0.0-nightly-20250707-0406.1",
18
+ "@fluentui/react-conformance-griffel": "0.0.0-nightly-20250707-0406.1",
19
19
  "@fluentui/scripts-api-extractor": "*"
20
20
  },
21
21
  "dependencies": {
22
- "@fluentui/react-context-selector": "0.0.0-nightly-20250703-1103.1",
22
+ "@fluentui/react-context-selector": "0.0.0-nightly-20250707-0406.1",
23
23
  "@fluentui/react-icons": "^2.0.245",
24
- "@fluentui/react-jsx-runtime": "0.0.0-nightly-20250703-1103.1",
25
- "@fluentui/react-label": "0.0.0-nightly-20250703-1103.1",
26
- "@fluentui/react-shared-contexts": "0.0.0-nightly-20250703-1103.1",
27
- "@fluentui/react-theme": "0.0.0-nightly-20250703-1103.1",
28
- "@fluentui/react-utilities": "0.0.0-nightly-20250703-1103.1",
24
+ "@fluentui/react-jsx-runtime": "0.0.0-nightly-20250707-0406.1",
25
+ "@fluentui/react-label": "0.0.0-nightly-20250707-0406.1",
26
+ "@fluentui/react-shared-contexts": "0.0.0-nightly-20250707-0406.1",
27
+ "@fluentui/react-theme": "0.0.0-nightly-20250707-0406.1",
28
+ "@fluentui/react-utilities": "0.0.0-nightly-20250707-0406.1",
29
29
  "@griffel/react": "^1.5.22",
30
30
  "@swc/helpers": "^0.5.1"
31
31
  },
@@ -1,122 +0,0 @@
1
- import { tokens, typographyStyles } from '@fluentui/react-theme';
2
- import { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';
3
- export const fieldClassNames = {
4
- root: `fui-Field`,
5
- label: `fui-Field__label`,
6
- validationMessage: `fui-Field__validationMessage`,
7
- validationMessageIcon: `fui-Field__validationMessageIcon`,
8
- hint: `fui-Field__hint`
9
- };
10
- // Size of the icon in the validation message
11
- const iconSize = '12px';
12
- /**
13
- * Styles for the root slot
14
- */ const useRootStyles = makeStyles({
15
- base: {
16
- display: 'grid'
17
- },
18
- // In horizontal layout, the field is a grid with the label taking up the entire first column.
19
- // The last row is slack space in case the label is taller than the rest of the content.
20
- horizontal: {
21
- gridTemplateColumns: '33% 1fr',
22
- gridTemplateRows: 'auto auto auto 1fr'
23
- },
24
- // In horizontal layout without a label, replace the label's column with padding.
25
- // This lets grid auto-flow properly place the other children, and keeps fields with and without labels aligned.
26
- horizontalNoLabel: {
27
- paddingLeft: '33%',
28
- gridTemplateColumns: '1fr'
29
- }
30
- });
31
- const useLabelStyles = makeStyles({
32
- vertical: {
33
- paddingTop: tokens.spacingVerticalXXS,
34
- paddingBottom: tokens.spacingVerticalXXS,
35
- marginBottom: tokens.spacingVerticalXXS
36
- },
37
- verticalLarge: {
38
- paddingTop: '1px',
39
- paddingBottom: '1px',
40
- marginBottom: tokens.spacingVerticalXS
41
- },
42
- horizontal: {
43
- paddingTop: tokens.spacingVerticalSNudge,
44
- paddingBottom: tokens.spacingVerticalSNudge,
45
- marginRight: tokens.spacingHorizontalM,
46
- gridRowStart: '1',
47
- gridRowEnd: '-1'
48
- },
49
- horizontalSmall: {
50
- paddingTop: tokens.spacingVerticalXS,
51
- paddingBottom: tokens.spacingVerticalXS
52
- },
53
- horizontalLarge: {
54
- // To align the label text with the Input text, it should be centered within the 40px height of the Input.
55
- // This is (40px - lineHeightBase400) / 2 = 9px. Hardcoded since there is no 9px padding token.
56
- paddingTop: '9px',
57
- paddingBottom: '9px'
58
- }
59
- });
60
- const useSecondaryTextBaseClassName = makeResetStyles({
61
- marginTop: tokens.spacingVerticalXXS,
62
- color: tokens.colorNeutralForeground3,
63
- ...typographyStyles.caption1
64
- });
65
- const useSecondaryTextStyles = makeStyles({
66
- error: {
67
- color: tokens.colorPaletteRedForeground1
68
- },
69
- withIcon: {
70
- // Add a gutter for the icon, to allow multiple lines of text to line up to the right of the icon.
71
- paddingLeft: `calc(${iconSize} + ${tokens.spacingHorizontalXS})`
72
- }
73
- });
74
- const useValidationMessageIconBaseClassName = makeResetStyles({
75
- display: 'inline-block',
76
- fontSize: iconSize,
77
- // Negative left margin puts the icon in the gutter of the validation message div's withIcon style.
78
- marginLeft: `calc(-${iconSize} - ${tokens.spacingHorizontalXS})`,
79
- marginRight: tokens.spacingHorizontalXS,
80
- // Line height of 0 prevents the verticalAlign from affecting the line height of the text.
81
- lineHeight: '0',
82
- // Negative verticalAlign shifts the inline icon down to align with the text (effectively top padding).
83
- verticalAlign: '-1px'
84
- });
85
- const useValidationMessageIconStyles = makeStyles({
86
- error: {
87
- color: tokens.colorPaletteRedForeground1
88
- },
89
- warning: {
90
- color: tokens.colorPaletteDarkOrangeForeground1
91
- },
92
- success: {
93
- color: tokens.colorPaletteGreenForeground1
94
- }
95
- });
96
- /**
97
- * Apply styling to the Field slots based on the state
98
- */ export const useFieldStyles_unstable = (state)=>{
99
- 'use no memo';
100
- const { validationState, size } = state;
101
- const horizontal = state.orientation === 'horizontal';
102
- const rootStyles = useRootStyles();
103
- state.root.className = mergeClasses(fieldClassNames.root, rootStyles.base, horizontal && rootStyles.horizontal, horizontal && !state.label && rootStyles.horizontalNoLabel, state.root.className);
104
- const labelStyles = useLabelStyles();
105
- if (state.label) {
106
- state.label.className = mergeClasses(fieldClassNames.label, horizontal && labelStyles.horizontal, horizontal && size === 'small' && labelStyles.horizontalSmall, horizontal && size === 'large' && labelStyles.horizontalLarge, !horizontal && labelStyles.vertical, !horizontal && size === 'large' && labelStyles.verticalLarge, state.label.className);
107
- }
108
- const validationMessageIconBaseClassName = useValidationMessageIconBaseClassName();
109
- const validationMessageIconStyles = useValidationMessageIconStyles();
110
- if (state.validationMessageIcon) {
111
- state.validationMessageIcon.className = mergeClasses(fieldClassNames.validationMessageIcon, validationMessageIconBaseClassName, validationState !== 'none' && validationMessageIconStyles[validationState], state.validationMessageIcon.className);
112
- }
113
- const secondaryTextBaseClassName = useSecondaryTextBaseClassName();
114
- const secondaryTextStyles = useSecondaryTextStyles();
115
- if (state.validationMessage) {
116
- state.validationMessage.className = mergeClasses(fieldClassNames.validationMessage, secondaryTextBaseClassName, validationState === 'error' && secondaryTextStyles.error, !!state.validationMessageIcon && secondaryTextStyles.withIcon, state.validationMessage.className);
117
- }
118
- if (state.hint) {
119
- state.hint.className = mergeClasses(fieldClassNames.hint, secondaryTextBaseClassName, state.hint.className);
120
- }
121
- return state;
122
- };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Field/useFieldStyles.styles.ts"],"sourcesContent":["import { tokens, typographyStyles } from '@fluentui/react-theme';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\nimport { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';\nimport type { FieldSlots, FieldState } from './Field.types';\n\nexport const fieldClassNames: SlotClassNames<FieldSlots> = {\n root: `fui-Field`,\n label: `fui-Field__label`,\n validationMessage: `fui-Field__validationMessage`,\n validationMessageIcon: `fui-Field__validationMessageIcon`,\n hint: `fui-Field__hint`,\n};\n\n// Size of the icon in the validation message\nconst iconSize = '12px';\n\n/**\n * Styles for the root slot\n */\nconst useRootStyles = makeStyles({\n base: {\n display: 'grid',\n },\n\n // In horizontal layout, the field is a grid with the label taking up the entire first column.\n // The last row is slack space in case the label is taller than the rest of the content.\n horizontal: {\n gridTemplateColumns: '33% 1fr',\n gridTemplateRows: 'auto auto auto 1fr',\n },\n\n // In horizontal layout without a label, replace the label's column with padding.\n // This lets grid auto-flow properly place the other children, and keeps fields with and without labels aligned.\n horizontalNoLabel: {\n paddingLeft: '33%',\n gridTemplateColumns: '1fr',\n },\n});\n\nconst useLabelStyles = makeStyles({\n vertical: {\n paddingTop: tokens.spacingVerticalXXS,\n paddingBottom: tokens.spacingVerticalXXS,\n marginBottom: tokens.spacingVerticalXXS,\n },\n\n verticalLarge: {\n paddingTop: '1px',\n paddingBottom: '1px',\n marginBottom: tokens.spacingVerticalXS,\n },\n\n horizontal: {\n paddingTop: tokens.spacingVerticalSNudge,\n paddingBottom: tokens.spacingVerticalSNudge,\n marginRight: tokens.spacingHorizontalM,\n gridRowStart: '1',\n gridRowEnd: '-1',\n },\n\n horizontalSmall: {\n paddingTop: tokens.spacingVerticalXS,\n paddingBottom: tokens.spacingVerticalXS,\n },\n\n horizontalLarge: {\n // To align the label text with the Input text, it should be centered within the 40px height of the Input.\n // This is (40px - lineHeightBase400) / 2 = 9px. Hardcoded since there is no 9px padding token.\n paddingTop: '9px',\n paddingBottom: '9px',\n },\n});\n\nconst useSecondaryTextBaseClassName = makeResetStyles({\n marginTop: tokens.spacingVerticalXXS,\n color: tokens.colorNeutralForeground3,\n ...typographyStyles.caption1,\n});\n\nconst useSecondaryTextStyles = makeStyles({\n error: {\n color: tokens.colorPaletteRedForeground1,\n },\n\n withIcon: {\n // Add a gutter for the icon, to allow multiple lines of text to line up to the right of the icon.\n paddingLeft: `calc(${iconSize} + ${tokens.spacingHorizontalXS})`,\n },\n});\n\nconst useValidationMessageIconBaseClassName = makeResetStyles({\n display: 'inline-block',\n fontSize: iconSize,\n // Negative left margin puts the icon in the gutter of the validation message div's withIcon style.\n marginLeft: `calc(-${iconSize} - ${tokens.spacingHorizontalXS})`,\n marginRight: tokens.spacingHorizontalXS,\n // Line height of 0 prevents the verticalAlign from affecting the line height of the text.\n lineHeight: '0',\n // Negative verticalAlign shifts the inline icon down to align with the text (effectively top padding).\n verticalAlign: '-1px',\n});\n\nconst useValidationMessageIconStyles = makeStyles({\n error: {\n color: tokens.colorPaletteRedForeground1,\n },\n warning: {\n color: tokens.colorPaletteDarkOrangeForeground1,\n },\n success: {\n color: tokens.colorPaletteGreenForeground1,\n },\n});\n\n/**\n * Apply styling to the Field slots based on the state\n */\nexport const useFieldStyles_unstable = (state: FieldState): FieldState => {\n 'use no memo';\n\n const { validationState, size } = state;\n const horizontal = state.orientation === 'horizontal';\n\n const rootStyles = useRootStyles();\n state.root.className = mergeClasses(\n fieldClassNames.root,\n rootStyles.base,\n horizontal && rootStyles.horizontal,\n horizontal && !state.label && rootStyles.horizontalNoLabel,\n state.root.className,\n );\n\n const labelStyles = useLabelStyles();\n if (state.label) {\n state.label.className = mergeClasses(\n fieldClassNames.label,\n horizontal && labelStyles.horizontal,\n horizontal && size === 'small' && labelStyles.horizontalSmall,\n horizontal && size === 'large' && labelStyles.horizontalLarge,\n !horizontal && labelStyles.vertical,\n !horizontal && size === 'large' && labelStyles.verticalLarge,\n state.label.className,\n );\n }\n\n const validationMessageIconBaseClassName = useValidationMessageIconBaseClassName();\n const validationMessageIconStyles = useValidationMessageIconStyles();\n if (state.validationMessageIcon) {\n state.validationMessageIcon.className = mergeClasses(\n fieldClassNames.validationMessageIcon,\n validationMessageIconBaseClassName,\n validationState !== 'none' && validationMessageIconStyles[validationState],\n state.validationMessageIcon.className,\n );\n }\n\n const secondaryTextBaseClassName = useSecondaryTextBaseClassName();\n const secondaryTextStyles = useSecondaryTextStyles();\n if (state.validationMessage) {\n state.validationMessage.className = mergeClasses(\n fieldClassNames.validationMessage,\n secondaryTextBaseClassName,\n validationState === 'error' && secondaryTextStyles.error,\n !!state.validationMessageIcon && secondaryTextStyles.withIcon,\n state.validationMessage.className,\n );\n }\n\n if (state.hint) {\n state.hint.className = mergeClasses(fieldClassNames.hint, secondaryTextBaseClassName, state.hint.className);\n }\n\n return state;\n};\n"],"names":["tokens","typographyStyles","makeResetStyles","makeStyles","mergeClasses","fieldClassNames","root","label","validationMessage","validationMessageIcon","hint","iconSize","useRootStyles","base","display","horizontal","gridTemplateColumns","gridTemplateRows","horizontalNoLabel","paddingLeft","useLabelStyles","vertical","paddingTop","spacingVerticalXXS","paddingBottom","marginBottom","verticalLarge","spacingVerticalXS","spacingVerticalSNudge","marginRight","spacingHorizontalM","gridRowStart","gridRowEnd","horizontalSmall","horizontalLarge","useSecondaryTextBaseClassName","marginTop","color","colorNeutralForeground3","caption1","useSecondaryTextStyles","error","colorPaletteRedForeground1","withIcon","spacingHorizontalXS","useValidationMessageIconBaseClassName","fontSize","marginLeft","lineHeight","verticalAlign","useValidationMessageIconStyles","warning","colorPaletteDarkOrangeForeground1","success","colorPaletteGreenForeground1","useFieldStyles_unstable","state","validationState","size","orientation","rootStyles","className","labelStyles","validationMessageIconBaseClassName","validationMessageIconStyles","secondaryTextBaseClassName","secondaryTextStyles"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,138 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- fieldClassNames: function() {
13
- return fieldClassNames;
14
- },
15
- useFieldStyles_unstable: function() {
16
- return useFieldStyles_unstable;
17
- }
18
- });
19
- const _reacttheme = require("@fluentui/react-theme");
20
- const _react = require("@griffel/react");
21
- const fieldClassNames = {
22
- root: `fui-Field`,
23
- label: `fui-Field__label`,
24
- validationMessage: `fui-Field__validationMessage`,
25
- validationMessageIcon: `fui-Field__validationMessageIcon`,
26
- hint: `fui-Field__hint`
27
- };
28
- // Size of the icon in the validation message
29
- const iconSize = '12px';
30
- /**
31
- * Styles for the root slot
32
- */ const useRootStyles = (0, _react.makeStyles)({
33
- base: {
34
- display: 'grid'
35
- },
36
- // In horizontal layout, the field is a grid with the label taking up the entire first column.
37
- // The last row is slack space in case the label is taller than the rest of the content.
38
- horizontal: {
39
- gridTemplateColumns: '33% 1fr',
40
- gridTemplateRows: 'auto auto auto 1fr'
41
- },
42
- // In horizontal layout without a label, replace the label's column with padding.
43
- // This lets grid auto-flow properly place the other children, and keeps fields with and without labels aligned.
44
- horizontalNoLabel: {
45
- paddingLeft: '33%',
46
- gridTemplateColumns: '1fr'
47
- }
48
- });
49
- const useLabelStyles = (0, _react.makeStyles)({
50
- vertical: {
51
- paddingTop: _reacttheme.tokens.spacingVerticalXXS,
52
- paddingBottom: _reacttheme.tokens.spacingVerticalXXS,
53
- marginBottom: _reacttheme.tokens.spacingVerticalXXS
54
- },
55
- verticalLarge: {
56
- paddingTop: '1px',
57
- paddingBottom: '1px',
58
- marginBottom: _reacttheme.tokens.spacingVerticalXS
59
- },
60
- horizontal: {
61
- paddingTop: _reacttheme.tokens.spacingVerticalSNudge,
62
- paddingBottom: _reacttheme.tokens.spacingVerticalSNudge,
63
- marginRight: _reacttheme.tokens.spacingHorizontalM,
64
- gridRowStart: '1',
65
- gridRowEnd: '-1'
66
- },
67
- horizontalSmall: {
68
- paddingTop: _reacttheme.tokens.spacingVerticalXS,
69
- paddingBottom: _reacttheme.tokens.spacingVerticalXS
70
- },
71
- horizontalLarge: {
72
- // To align the label text with the Input text, it should be centered within the 40px height of the Input.
73
- // This is (40px - lineHeightBase400) / 2 = 9px. Hardcoded since there is no 9px padding token.
74
- paddingTop: '9px',
75
- paddingBottom: '9px'
76
- }
77
- });
78
- const useSecondaryTextBaseClassName = (0, _react.makeResetStyles)({
79
- marginTop: _reacttheme.tokens.spacingVerticalXXS,
80
- color: _reacttheme.tokens.colorNeutralForeground3,
81
- ..._reacttheme.typographyStyles.caption1
82
- });
83
- const useSecondaryTextStyles = (0, _react.makeStyles)({
84
- error: {
85
- color: _reacttheme.tokens.colorPaletteRedForeground1
86
- },
87
- withIcon: {
88
- // Add a gutter for the icon, to allow multiple lines of text to line up to the right of the icon.
89
- paddingLeft: `calc(${iconSize} + ${_reacttheme.tokens.spacingHorizontalXS})`
90
- }
91
- });
92
- const useValidationMessageIconBaseClassName = (0, _react.makeResetStyles)({
93
- display: 'inline-block',
94
- fontSize: iconSize,
95
- // Negative left margin puts the icon in the gutter of the validation message div's withIcon style.
96
- marginLeft: `calc(-${iconSize} - ${_reacttheme.tokens.spacingHorizontalXS})`,
97
- marginRight: _reacttheme.tokens.spacingHorizontalXS,
98
- // Line height of 0 prevents the verticalAlign from affecting the line height of the text.
99
- lineHeight: '0',
100
- // Negative verticalAlign shifts the inline icon down to align with the text (effectively top padding).
101
- verticalAlign: '-1px'
102
- });
103
- const useValidationMessageIconStyles = (0, _react.makeStyles)({
104
- error: {
105
- color: _reacttheme.tokens.colorPaletteRedForeground1
106
- },
107
- warning: {
108
- color: _reacttheme.tokens.colorPaletteDarkOrangeForeground1
109
- },
110
- success: {
111
- color: _reacttheme.tokens.colorPaletteGreenForeground1
112
- }
113
- });
114
- const useFieldStyles_unstable = (state)=>{
115
- 'use no memo';
116
- const { validationState, size } = state;
117
- const horizontal = state.orientation === 'horizontal';
118
- const rootStyles = useRootStyles();
119
- state.root.className = (0, _react.mergeClasses)(fieldClassNames.root, rootStyles.base, horizontal && rootStyles.horizontal, horizontal && !state.label && rootStyles.horizontalNoLabel, state.root.className);
120
- const labelStyles = useLabelStyles();
121
- if (state.label) {
122
- state.label.className = (0, _react.mergeClasses)(fieldClassNames.label, horizontal && labelStyles.horizontal, horizontal && size === 'small' && labelStyles.horizontalSmall, horizontal && size === 'large' && labelStyles.horizontalLarge, !horizontal && labelStyles.vertical, !horizontal && size === 'large' && labelStyles.verticalLarge, state.label.className);
123
- }
124
- const validationMessageIconBaseClassName = useValidationMessageIconBaseClassName();
125
- const validationMessageIconStyles = useValidationMessageIconStyles();
126
- if (state.validationMessageIcon) {
127
- state.validationMessageIcon.className = (0, _react.mergeClasses)(fieldClassNames.validationMessageIcon, validationMessageIconBaseClassName, validationState !== 'none' && validationMessageIconStyles[validationState], state.validationMessageIcon.className);
128
- }
129
- const secondaryTextBaseClassName = useSecondaryTextBaseClassName();
130
- const secondaryTextStyles = useSecondaryTextStyles();
131
- if (state.validationMessage) {
132
- state.validationMessage.className = (0, _react.mergeClasses)(fieldClassNames.validationMessage, secondaryTextBaseClassName, validationState === 'error' && secondaryTextStyles.error, !!state.validationMessageIcon && secondaryTextStyles.withIcon, state.validationMessage.className);
133
- }
134
- if (state.hint) {
135
- state.hint.className = (0, _react.mergeClasses)(fieldClassNames.hint, secondaryTextBaseClassName, state.hint.className);
136
- }
137
- return state;
138
- };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Field/useFieldStyles.styles.ts"],"sourcesContent":["import { tokens, typographyStyles } from '@fluentui/react-theme';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\nimport { makeResetStyles, makeStyles, mergeClasses } from '@griffel/react';\nimport type { FieldSlots, FieldState } from './Field.types';\n\nexport const fieldClassNames: SlotClassNames<FieldSlots> = {\n root: `fui-Field`,\n label: `fui-Field__label`,\n validationMessage: `fui-Field__validationMessage`,\n validationMessageIcon: `fui-Field__validationMessageIcon`,\n hint: `fui-Field__hint`,\n};\n\n// Size of the icon in the validation message\nconst iconSize = '12px';\n\n/**\n * Styles for the root slot\n */\nconst useRootStyles = makeStyles({\n base: {\n display: 'grid',\n },\n\n // In horizontal layout, the field is a grid with the label taking up the entire first column.\n // The last row is slack space in case the label is taller than the rest of the content.\n horizontal: {\n gridTemplateColumns: '33% 1fr',\n gridTemplateRows: 'auto auto auto 1fr',\n },\n\n // In horizontal layout without a label, replace the label's column with padding.\n // This lets grid auto-flow properly place the other children, and keeps fields with and without labels aligned.\n horizontalNoLabel: {\n paddingLeft: '33%',\n gridTemplateColumns: '1fr',\n },\n});\n\nconst useLabelStyles = makeStyles({\n vertical: {\n paddingTop: tokens.spacingVerticalXXS,\n paddingBottom: tokens.spacingVerticalXXS,\n marginBottom: tokens.spacingVerticalXXS,\n },\n\n verticalLarge: {\n paddingTop: '1px',\n paddingBottom: '1px',\n marginBottom: tokens.spacingVerticalXS,\n },\n\n horizontal: {\n paddingTop: tokens.spacingVerticalSNudge,\n paddingBottom: tokens.spacingVerticalSNudge,\n marginRight: tokens.spacingHorizontalM,\n gridRowStart: '1',\n gridRowEnd: '-1',\n },\n\n horizontalSmall: {\n paddingTop: tokens.spacingVerticalXS,\n paddingBottom: tokens.spacingVerticalXS,\n },\n\n horizontalLarge: {\n // To align the label text with the Input text, it should be centered within the 40px height of the Input.\n // This is (40px - lineHeightBase400) / 2 = 9px. Hardcoded since there is no 9px padding token.\n paddingTop: '9px',\n paddingBottom: '9px',\n },\n});\n\nconst useSecondaryTextBaseClassName = makeResetStyles({\n marginTop: tokens.spacingVerticalXXS,\n color: tokens.colorNeutralForeground3,\n ...typographyStyles.caption1,\n});\n\nconst useSecondaryTextStyles = makeStyles({\n error: {\n color: tokens.colorPaletteRedForeground1,\n },\n\n withIcon: {\n // Add a gutter for the icon, to allow multiple lines of text to line up to the right of the icon.\n paddingLeft: `calc(${iconSize} + ${tokens.spacingHorizontalXS})`,\n },\n});\n\nconst useValidationMessageIconBaseClassName = makeResetStyles({\n display: 'inline-block',\n fontSize: iconSize,\n // Negative left margin puts the icon in the gutter of the validation message div's withIcon style.\n marginLeft: `calc(-${iconSize} - ${tokens.spacingHorizontalXS})`,\n marginRight: tokens.spacingHorizontalXS,\n // Line height of 0 prevents the verticalAlign from affecting the line height of the text.\n lineHeight: '0',\n // Negative verticalAlign shifts the inline icon down to align with the text (effectively top padding).\n verticalAlign: '-1px',\n});\n\nconst useValidationMessageIconStyles = makeStyles({\n error: {\n color: tokens.colorPaletteRedForeground1,\n },\n warning: {\n color: tokens.colorPaletteDarkOrangeForeground1,\n },\n success: {\n color: tokens.colorPaletteGreenForeground1,\n },\n});\n\n/**\n * Apply styling to the Field slots based on the state\n */\nexport const useFieldStyles_unstable = (state: FieldState): FieldState => {\n 'use no memo';\n\n const { validationState, size } = state;\n const horizontal = state.orientation === 'horizontal';\n\n const rootStyles = useRootStyles();\n state.root.className = mergeClasses(\n fieldClassNames.root,\n rootStyles.base,\n horizontal && rootStyles.horizontal,\n horizontal && !state.label && rootStyles.horizontalNoLabel,\n state.root.className,\n );\n\n const labelStyles = useLabelStyles();\n if (state.label) {\n state.label.className = mergeClasses(\n fieldClassNames.label,\n horizontal && labelStyles.horizontal,\n horizontal && size === 'small' && labelStyles.horizontalSmall,\n horizontal && size === 'large' && labelStyles.horizontalLarge,\n !horizontal && labelStyles.vertical,\n !horizontal && size === 'large' && labelStyles.verticalLarge,\n state.label.className,\n );\n }\n\n const validationMessageIconBaseClassName = useValidationMessageIconBaseClassName();\n const validationMessageIconStyles = useValidationMessageIconStyles();\n if (state.validationMessageIcon) {\n state.validationMessageIcon.className = mergeClasses(\n fieldClassNames.validationMessageIcon,\n validationMessageIconBaseClassName,\n validationState !== 'none' && validationMessageIconStyles[validationState],\n state.validationMessageIcon.className,\n );\n }\n\n const secondaryTextBaseClassName = useSecondaryTextBaseClassName();\n const secondaryTextStyles = useSecondaryTextStyles();\n if (state.validationMessage) {\n state.validationMessage.className = mergeClasses(\n fieldClassNames.validationMessage,\n secondaryTextBaseClassName,\n validationState === 'error' && secondaryTextStyles.error,\n !!state.validationMessageIcon && secondaryTextStyles.withIcon,\n state.validationMessage.className,\n );\n }\n\n if (state.hint) {\n state.hint.className = mergeClasses(fieldClassNames.hint, secondaryTextBaseClassName, state.hint.className);\n }\n\n return state;\n};\n"],"names":["fieldClassNames","useFieldStyles_unstable","root","label","validationMessage","validationMessageIcon","hint","iconSize","useRootStyles","makeStyles","base","display","horizontal","gridTemplateColumns","gridTemplateRows","horizontalNoLabel","paddingLeft","useLabelStyles","vertical","paddingTop","tokens","spacingVerticalXXS","paddingBottom","marginBottom","verticalLarge","spacingVerticalXS","spacingVerticalSNudge","marginRight","spacingHorizontalM","gridRowStart","gridRowEnd","horizontalSmall","horizontalLarge","useSecondaryTextBaseClassName","makeResetStyles","marginTop","color","colorNeutralForeground3","typographyStyles","caption1","useSecondaryTextStyles","error","colorPaletteRedForeground1","withIcon","spacingHorizontalXS","useValidationMessageIconBaseClassName","fontSize","marginLeft","lineHeight","verticalAlign","useValidationMessageIconStyles","warning","colorPaletteDarkOrangeForeground1","success","colorPaletteGreenForeground1","state","validationState","size","orientation","rootStyles","className","mergeClasses","labelStyles","validationMessageIconBaseClassName","validationMessageIconStyles","secondaryTextBaseClassName","secondaryTextStyles"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}