@fluentui/react-field 9.0.0-alpha.16 → 9.0.0-alpha.17
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.json +34 -1
- package/CHANGELOG.md +14 -2
- package/dist/index.d.ts +60 -86
- package/lib/components/Field/Field.js +11 -0
- package/lib/components/Field/Field.js.map +1 -0
- package/lib/components/Field/Field.types.js.map +1 -1
- package/lib/components/Field/index.js +1 -0
- package/lib/components/Field/index.js.map +1 -1
- package/lib/components/Field/renderField.js +1 -3
- package/lib/components/Field/renderField.js.map +1 -1
- package/lib/components/Field/useField.js +37 -71
- package/lib/components/Field/useField.js.map +1 -1
- package/lib/components/Field/useFieldStyles.js +15 -18
- package/lib/components/Field/useFieldStyles.js.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/util/makeDeprecatedField.js +71 -0
- package/lib/util/makeDeprecatedField.js.map +1 -0
- package/lib-amd/components/Field/Field.js +12 -0
- package/lib-amd/components/Field/Field.js.map +1 -0
- package/lib-amd/components/Field/Field.types.js.map +1 -1
- package/lib-amd/components/Field/index.js +2 -1
- package/lib-amd/components/Field/index.js.map +1 -1
- package/lib-amd/components/Field/renderField.js +1 -1
- package/lib-amd/components/Field/renderField.js.map +1 -1
- package/lib-amd/components/Field/useField.js +30 -53
- package/lib-amd/components/Field/useField.js.map +1 -1
- package/lib-amd/components/Field/useFieldStyles.js +13 -19
- package/lib-amd/components/Field/useFieldStyles.js.map +1 -1
- package/lib-amd/index.js +6 -3
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/util/makeDeprecatedField.js +38 -0
- package/lib-amd/util/makeDeprecatedField.js.map +1 -0
- package/lib-commonjs/components/Field/Field.js +17 -0
- package/lib-commonjs/components/Field/Field.js.map +1 -0
- package/lib-commonjs/components/Field/index.js +1 -0
- package/lib-commonjs/components/Field/index.js.map +1 -1
- package/lib-commonjs/components/Field/renderField.js +1 -3
- package/lib-commonjs/components/Field/renderField.js.map +1 -1
- package/lib-commonjs/components/Field/useField.js +38 -73
- package/lib-commonjs/components/Field/useField.js.map +1 -1
- package/lib-commonjs/components/Field/useFieldStyles.js +16 -20
- package/lib-commonjs/components/Field/useFieldStyles.js.map +1 -1
- package/lib-commonjs/index.js +23 -3
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/util/makeDeprecatedField.js +79 -0
- package/lib-commonjs/util/makeDeprecatedField.js.map +1 -0
- package/package.json +5 -4
- package/lib/components/Field/SlotComponent.types.js +0 -2
- package/lib/components/Field/SlotComponent.types.js.map +0 -1
- package/lib-amd/components/Field/SlotComponent.types.js +0 -5
- package/lib-amd/components/Field/SlotComponent.types.js.map +0 -1
- package/lib-commonjs/components/Field/SlotComponent.types.js +0 -6
- package/lib-commonjs/components/Field/SlotComponent.types.js.map +0 -1
package/CHANGELOG.json
CHANGED
@@ -2,7 +2,40 @@
|
|
2
2
|
"name": "@fluentui/react-field",
|
3
3
|
"entries": [
|
4
4
|
{
|
5
|
-
"date": "
|
5
|
+
"date": "Thu, 26 Jan 2023 13:27:46 GMT",
|
6
|
+
"tag": "@fluentui/react-field_v9.0.0-alpha.17",
|
7
|
+
"version": "9.0.0-alpha.17",
|
8
|
+
"comments": {
|
9
|
+
"prerelease": [
|
10
|
+
{
|
11
|
+
"author": "behowell@microsoft.com",
|
12
|
+
"package": "@fluentui/react-field",
|
13
|
+
"commit": "d6e98c0b5390c5c7e03601537b2026307e01a8d4",
|
14
|
+
"comment": "Implement Field component to replace InputField, ComboboxField, etc."
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"author": "beachball",
|
18
|
+
"package": "@fluentui/react-field",
|
19
|
+
"comment": "Bump @fluentui/react-context-selector to v9.1.6",
|
20
|
+
"commit": "403e1370f1effca7d3db131eda381abf31cf66b1"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"author": "beachball",
|
24
|
+
"package": "@fluentui/react-field",
|
25
|
+
"comment": "Bump @fluentui/react-label to v9.0.18",
|
26
|
+
"commit": "403e1370f1effca7d3db131eda381abf31cf66b1"
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"author": "beachball",
|
30
|
+
"package": "@fluentui/react-field",
|
31
|
+
"comment": "Bump @fluentui/react-utilities to v9.5.0",
|
32
|
+
"commit": "403e1370f1effca7d3db131eda381abf31cf66b1"
|
33
|
+
}
|
34
|
+
]
|
35
|
+
}
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"date": "Mon, 23 Jan 2023 16:43:09 GMT",
|
6
39
|
"tag": "@fluentui/react-field_v9.0.0-alpha.16",
|
7
40
|
"version": "9.0.0-alpha.16",
|
8
41
|
"comments": {
|
package/CHANGELOG.md
CHANGED
@@ -1,12 +1,24 @@
|
|
1
1
|
# Change Log - @fluentui/react-field
|
2
2
|
|
3
|
-
This log was last generated on
|
3
|
+
This log was last generated on Thu, 26 Jan 2023 13:27:46 GMT and should not be manually modified.
|
4
4
|
|
5
5
|
<!-- Start content -->
|
6
6
|
|
7
|
+
## [9.0.0-alpha.17](https://github.com/microsoft/fluentui/tree/@fluentui/react-field_v9.0.0-alpha.17)
|
8
|
+
|
9
|
+
Thu, 26 Jan 2023 13:27:46 GMT
|
10
|
+
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-field_v9.0.0-alpha.16..@fluentui/react-field_v9.0.0-alpha.17)
|
11
|
+
|
12
|
+
### Changes
|
13
|
+
|
14
|
+
- Implement Field component to replace InputField, ComboboxField, etc. ([PR #26430](https://github.com/microsoft/fluentui/pull/26430) by behowell@microsoft.com)
|
15
|
+
- Bump @fluentui/react-context-selector to v9.1.6 ([PR #26496](https://github.com/microsoft/fluentui/pull/26496) by beachball)
|
16
|
+
- Bump @fluentui/react-label to v9.0.18 ([PR #26496](https://github.com/microsoft/fluentui/pull/26496) by beachball)
|
17
|
+
- Bump @fluentui/react-utilities to v9.5.0 ([PR #26496](https://github.com/microsoft/fluentui/pull/26496) by beachball)
|
18
|
+
|
7
19
|
## [9.0.0-alpha.16](https://github.com/microsoft/fluentui/tree/@fluentui/react-field_v9.0.0-alpha.16)
|
8
20
|
|
9
|
-
Mon, 23 Jan 2023 16:
|
21
|
+
Mon, 23 Jan 2023 16:43:09 GMT
|
10
22
|
[Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-field_v9.0.0-alpha.15..@fluentui/react-field_v9.0.0-alpha.16)
|
11
23
|
|
12
24
|
### Changes
|
package/dist/index.d.ts
CHANGED
@@ -2,55 +2,45 @@
|
|
2
2
|
|
3
3
|
import type { ComponentProps } from '@fluentui/react-utilities';
|
4
4
|
import type { ComponentState } from '@fluentui/react-utilities';
|
5
|
+
import { ForwardRefComponent } from '@fluentui/react-utilities';
|
5
6
|
import { Label } from '@fluentui/react-label';
|
6
7
|
import * as React_2 from 'react';
|
7
8
|
import type { Slot } from '@fluentui/react-utilities';
|
8
9
|
import type { SlotClassNames } from '@fluentui/react-utilities';
|
9
|
-
import type { SlotRenderFunction } from '@fluentui/react-utilities';
|
10
|
-
import type { SlotShorthandValue } from '@fluentui/react-utilities';
|
11
10
|
|
12
11
|
/**
|
13
|
-
*
|
12
|
+
* @deprecated Only for use to make deprecated [Control]Field shim components.
|
13
|
+
* @internal
|
14
14
|
*/
|
15
|
-
export declare type
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
* Class names for this component, created by `getFieldClassNames`.
|
22
|
-
*/
|
23
|
-
classNames: SlotClassNames<FieldSlots<T>>;
|
24
|
-
/**
|
25
|
-
* How the label be connected to the control.
|
26
|
-
* * htmlFor - Set the Label's htmlFor prop to the component's ID (and generate an ID if not provided).
|
27
|
-
* This is the preferred method for components that use the underlying <input> tag.
|
28
|
-
* * aria-labelledby - Set the component's aria-labelledby prop to the Label's ID. Use this for components
|
29
|
-
* that are not directly <input> elements (such as RadioGroup).
|
30
|
-
*
|
31
|
-
* @default htmlFor
|
32
|
-
*/
|
33
|
-
labelConnection?: 'htmlFor' | 'aria-labelledby';
|
34
|
-
/**
|
35
|
-
* Should the aria-invalid attribute be set when validationState="error".
|
36
|
-
*
|
37
|
-
* @default true
|
38
|
-
*/
|
39
|
-
ariaInvalidOnError?: boolean;
|
40
|
-
};
|
15
|
+
export declare type DeprecatedFieldProps<ControlProps> = ControlProps & {
|
16
|
+
root?: FieldProps;
|
17
|
+
control?: ControlProps;
|
18
|
+
} & Pick<FieldProps, 'className' | 'hint' | 'label' | 'orientation' | 'style' | 'validationMessage' | 'validationMessageIcon' | 'validationState'>;
|
19
|
+
|
20
|
+
export declare const Field: ForwardRefComponent<FieldProps>;
|
41
21
|
|
42
22
|
/**
|
43
|
-
* The
|
44
|
-
*
|
45
|
-
* Note: the use of VoidFunctionComponent means that component is not *required* to have a children prop,
|
46
|
-
* but it is still allowed to have a children prop.
|
23
|
+
* The props added to the Field's child element.
|
47
24
|
*/
|
48
|
-
|
25
|
+
declare type FieldChildProps = Pick<React_2.HTMLAttributes<HTMLElement>, 'id' | 'aria-labelledby' | 'aria-describedby' | 'aria-invalid' | 'aria-required'>;
|
26
|
+
|
27
|
+
export declare const fieldClassNames: SlotClassNames<FieldSlots>;
|
49
28
|
|
50
29
|
/**
|
51
30
|
* Field Props
|
52
31
|
*/
|
53
|
-
export declare type FieldProps
|
32
|
+
export declare type FieldProps = Omit<ComponentProps<FieldSlots>, 'children'> & {
|
33
|
+
/**
|
34
|
+
* The Field's child can be a single form control, or a render function that takes the props that should be spread on
|
35
|
+
* a form control.
|
36
|
+
*
|
37
|
+
* All form controls in this library can be used directly as children (such as `<Input>` or `<RadioGroup>`), as well
|
38
|
+
* as intrinsic form controls like `<input>` or `<textarea>`. Custom controls can also be used as long as they
|
39
|
+
* accept FieldChildProps and spread them on the appropriate element.
|
40
|
+
*
|
41
|
+
* For more complex scenarios, a render function can be used to pass the FieldChildProps to the appropriate control.
|
42
|
+
*/
|
43
|
+
children?: React_2.ReactElement<FieldChildProps> | null | ((props: FieldChildProps) => React_2.ReactNode);
|
54
44
|
/**
|
55
45
|
* The orientation of the label relative to the field component.
|
56
46
|
* This only affects the label, and not the validationMessage or hint (which always appear below the field component).
|
@@ -59,47 +49,30 @@ export declare type FieldProps<T extends FieldControl> = ComponentProps<Partial<
|
|
59
49
|
*/
|
60
50
|
orientation?: 'vertical' | 'horizontal';
|
61
51
|
/**
|
62
|
-
* The `validationState` affects the color of the `validationMessage`, the `validationMessageIcon
|
63
|
-
* field components, an `validationState="error"` causes the border to become red.
|
52
|
+
* The `validationState` affects the color of the `validationMessage`, the `validationMessageIcon`
|
64
53
|
*
|
65
|
-
*
|
54
|
+
* Setting `validationState` to `error` will also set `aria-invalid` to `true` on the Field's child,
|
55
|
+
* `role="alert"` on the `validationMessage`, and for some field components, causes the border to become red.
|
66
56
|
*/
|
67
57
|
validationState?: 'error' | 'warning' | 'success';
|
68
|
-
};
|
69
|
-
|
70
|
-
/**
|
71
|
-
* FieldProps plus extra optional props that are supported by useField_unstable, but not required to be part of the
|
72
|
-
* API of every Field component.
|
73
|
-
*
|
74
|
-
* This allows Field to forward the required and size props to the label if the underlying component supports them,
|
75
|
-
* but doesn't add them to the public API of fields that don't support them.
|
76
|
-
*/
|
77
|
-
declare type FieldPropsWithOptionalComponentProps<T extends FieldControl> = FieldProps<T> & {
|
78
58
|
/**
|
79
|
-
*
|
80
|
-
|
81
|
-
ref?: React_2.Ref<HTMLElement>;
|
82
|
-
/**
|
83
|
-
* Whether the field label should be marked as required.
|
59
|
+
* Marks the Field as required. If `true`, an asterisk will be appended to the label, and `aria-required` will be set
|
60
|
+
* on the Field's child.
|
84
61
|
*/
|
85
62
|
required?: boolean;
|
86
63
|
/**
|
87
|
-
*
|
64
|
+
* The size of the Field's label.
|
88
65
|
*
|
89
|
-
*
|
66
|
+
* @default medium
|
90
67
|
*/
|
91
|
-
size?: 'small' | 'medium' | 'large'
|
68
|
+
size?: 'small' | 'medium' | 'large';
|
92
69
|
};
|
93
70
|
|
94
71
|
/**
|
95
|
-
* Slots
|
72
|
+
* Slots of the Field component
|
96
73
|
*/
|
97
|
-
export declare type FieldSlots
|
74
|
+
export declare type FieldSlots = {
|
98
75
|
root: NonNullable<Slot<'div'>>;
|
99
|
-
/**
|
100
|
-
* The underlying component wrapped by this field.
|
101
|
-
*/
|
102
|
-
control: SlotComponent<T>;
|
103
76
|
/**
|
104
77
|
* The label associated with the field.
|
105
78
|
*/
|
@@ -124,22 +97,34 @@ export declare type FieldSlots<T extends FieldControl> = {
|
|
124
97
|
/**
|
125
98
|
* State used in rendering Field
|
126
99
|
*/
|
127
|
-
export declare type FieldState
|
128
|
-
|
100
|
+
export declare type FieldState = ComponentState<Required<FieldSlots>> & Pick<FieldProps, 'orientation' | 'validationState'>;
|
101
|
+
|
102
|
+
/**
|
103
|
+
* @deprecated Only for use to make deprecated [Control]Field shim components.
|
104
|
+
* @internal
|
105
|
+
*/
|
106
|
+
export declare const getDeprecatedFieldClassNames: (controlRootClassName: string) => {
|
107
|
+
control: string;
|
108
|
+
root: string;
|
109
|
+
label: string;
|
110
|
+
validationMessage: string;
|
111
|
+
validationMessageIcon: string;
|
112
|
+
hint: string;
|
129
113
|
};
|
130
114
|
|
131
|
-
|
115
|
+
/**
|
116
|
+
* @deprecated Only for use to make deprecated [Control]Field shim components.
|
117
|
+
* @internal
|
118
|
+
*/
|
119
|
+
export declare function makeDeprecatedField<ControlProps>(Control: React_2.ComponentType<ControlProps>, options?: {
|
120
|
+
mapProps?: (props: DeprecatedFieldProps<ControlProps>) => DeprecatedFieldProps<ControlProps>;
|
121
|
+
displayName?: string;
|
122
|
+
}): ForwardRefComponent<DeprecatedFieldProps<ControlProps>>;
|
132
123
|
|
133
124
|
/**
|
134
125
|
* Render the final JSX of Field
|
135
126
|
*/
|
136
|
-
export declare const renderField_unstable:
|
137
|
-
|
138
|
-
declare type SlotComponent<Type extends React_2.ComponentType | React_2.VoidFunctionComponent> = WithSlotShorthandValue<Type extends React_2.ComponentType<infer Props> ? WithSlotRenderFunction<Props extends {
|
139
|
-
children?: unknown;
|
140
|
-
} ? Props : Props & {
|
141
|
-
children?: never;
|
142
|
-
}> : never>;
|
127
|
+
export declare const renderField_unstable: (state: FieldState) => JSX.Element;
|
143
128
|
|
144
129
|
/**
|
145
130
|
* Create the state required to render Field.
|
@@ -148,24 +133,13 @@ declare type SlotComponent<Type extends React_2.ComponentType | React_2.VoidFunc
|
|
148
133
|
* before being passed to renderField_unstable.
|
149
134
|
*
|
150
135
|
* @param props - Props passed to this field
|
151
|
-
* @param ref - Ref to the
|
152
|
-
* @param params - Configuration parameters for this Field
|
136
|
+
* @param ref - Ref to the root
|
153
137
|
*/
|
154
|
-
export declare const useField_unstable:
|
138
|
+
export declare const useField_unstable: (props: FieldProps, ref: React_2.Ref<HTMLDivElement>) => FieldState;
|
155
139
|
|
156
140
|
/**
|
157
141
|
* Apply styling to the Field slots based on the state
|
158
142
|
*/
|
159
|
-
export declare const useFieldStyles_unstable:
|
160
|
-
|
161
|
-
declare type WithSlotRenderFunction<Props extends {
|
162
|
-
children?: unknown;
|
163
|
-
}> = Props & {
|
164
|
-
children?: Props['children'] | SlotRenderFunction<Props>;
|
165
|
-
};
|
166
|
-
|
167
|
-
declare type WithSlotShorthandValue<Props extends {
|
168
|
-
children?: unknown;
|
169
|
-
}> = Props | Extract<SlotShorthandValue, Props['children']>;
|
143
|
+
export declare const useFieldStyles_unstable: (state: FieldState) => void;
|
170
144
|
|
171
145
|
export { }
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { renderField_unstable } from './renderField';
|
3
|
+
import { useField_unstable } from './useField';
|
4
|
+
import { useFieldStyles_unstable } from './useFieldStyles';
|
5
|
+
export const Field = /*#__PURE__*/React.forwardRef((props, ref) => {
|
6
|
+
const state = useField_unstable(props, ref);
|
7
|
+
useFieldStyles_unstable(state);
|
8
|
+
return renderField_unstable(state);
|
9
|
+
});
|
10
|
+
Field.displayName = 'Field';
|
11
|
+
//# sourceMappingURL=Field.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,SAASC,oBAAoB,QAAQ,eAAe;AACpD,SAASC,iBAAiB,QAAQ,YAAY;AAC9C,SAASC,uBAAuB,QAAQ,kBAAkB;AAE1D,OAAO,MAAMC,KAAK,gBAAoCJ,KAAK,CAACK,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAI;EACpF,MAAMC,KAAK,GAAGN,iBAAiB,CAACI,KAAK,EAAEC,GAAG,CAAC;EAC3CJ,uBAAuB,CAACK,KAAK,CAAC;EAC9B,OAAOP,oBAAoB,CAACO,KAAK,CAAC;AACpC,CAAC,CAAC;AAEFJ,KAAK,CAACK,WAAW,GAAG,OAAO","names":["React","renderField_unstable","useField_unstable","useFieldStyles_unstable","Field","forwardRef","props","ref","state","displayName"],"sourceRoot":"../src/","sources":["packages/react-components/react-field/src/components/Field/Field.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport type { FieldProps } from './Field.types';\nimport { renderField_unstable } from './renderField';\nimport { useField_unstable } from './useField';\nimport { useFieldStyles_unstable } from './useFieldStyles';\n\nexport const Field: ForwardRefComponent<FieldProps> = React.forwardRef((props, ref) => {\n const state = useField_unstable(props, ref);\n useFieldStyles_unstable(state);\n return renderField_unstable(state);\n});\n\nField.displayName = 'Field';\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Field.types.js","sourceRoot":"../src/","sources":["packages/react-components/react-field/src/components/Field/Field.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { Label } from '@fluentui/react-label';\nimport type { ComponentProps, ComponentState, Slot
|
1
|
+
{"version":3,"file":"Field.types.js","sourceRoot":"../src/","sources":["packages/react-components/react-field/src/components/Field/Field.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { Label } from '@fluentui/react-label';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\n/**\n * The props added to the Field's child element.\n */\nexport type FieldChildProps = Pick<\n React.HTMLAttributes<HTMLElement>,\n 'id' | 'aria-labelledby' | 'aria-describedby' | 'aria-invalid' | 'aria-required'\n>;\n\n/**\n * Slots of the Field component\n */\nexport type FieldSlots = {\n root: NonNullable<Slot<'div'>>;\n\n /**\n * The label associated with the field.\n */\n label?: Slot<typeof Label>;\n\n /**\n * A message about the validation state. The appearance of the `validationMessage` depends on `validationState`.\n */\n validationMessage?: Slot<'div'>;\n\n /**\n * The icon associated with the `validationMessage`. If the `validationState` prop is set, this will default to an\n * icon corresponding to that state.\n *\n * This will only be displayed if `validationMessage` is set.\n */\n validationMessageIcon?: Slot<'span'>;\n\n /**\n * Additional hint text below the field.\n */\n hint?: Slot<'div'>;\n};\n\n/**\n * Field Props\n */\nexport type FieldProps = Omit<ComponentProps<FieldSlots>, 'children'> & {\n /**\n * The Field's child can be a single form control, or a render function that takes the props that should be spread on\n * a form control.\n *\n * All form controls in this library can be used directly as children (such as `<Input>` or `<RadioGroup>`), as well\n * as intrinsic form controls like `<input>` or `<textarea>`. Custom controls can also be used as long as they\n * accept FieldChildProps and spread them on the appropriate element.\n *\n * For more complex scenarios, a render function can be used to pass the FieldChildProps to the appropriate control.\n */\n children?: React.ReactElement<FieldChildProps> | null | ((props: FieldChildProps) => React.ReactNode);\n\n /**\n * The orientation of the label relative to the field component.\n * This only affects the label, and not the validationMessage or hint (which always appear below the field component).\n *\n * @default vertical\n */\n orientation?: 'vertical' | 'horizontal';\n\n /**\n * The `validationState` affects the color of the `validationMessage`, the `validationMessageIcon`\n *\n * Setting `validationState` to `error` will also set `aria-invalid` to `true` on the Field's child,\n * `role=\"alert\"` on the `validationMessage`, and for some field components, causes the border to become red.\n */\n validationState?: 'error' | 'warning' | 'success';\n\n /**\n * Marks the Field as required. If `true`, an asterisk will be appended to the label, and `aria-required` will be set\n * on the Field's child.\n */\n required?: boolean;\n\n /**\n * The size of the Field's label.\n *\n * @default medium\n */\n size?: 'small' | 'medium' | 'large';\n};\n\n/**\n * State used in rendering Field\n */\nexport type FieldState = ComponentState<Required<FieldSlots>> & Pick<FieldProps, 'orientation' | 'validationState'>;\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../src/","sources":["packages/react-components/react-field/src/components/Field/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './Field.types';\nexport * from './renderField';\nexport * from './useField';\nexport * from './useFieldStyles';\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../src/","sources":["packages/react-components/react-field/src/components/Field/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './Field.types';\nexport * from './Field';\nexport * from './renderField';\nexport * from './useField';\nexport * from './useFieldStyles';\n"]}
|
@@ -12,9 +12,7 @@ export const renderField_unstable = state => {
|
|
12
12
|
...slotProps.root
|
13
13
|
}, slots.label && /*#__PURE__*/React.createElement(slots.label, {
|
14
14
|
...slotProps.label
|
15
|
-
}), slots.
|
16
|
-
...slotProps.control
|
17
|
-
}), slots.validationMessage && /*#__PURE__*/React.createElement(slots.validationMessage, {
|
15
|
+
}), slotProps.root.children, slots.validationMessage && /*#__PURE__*/React.createElement(slots.validationMessage, {
|
18
16
|
...slotProps.validationMessage
|
19
17
|
}, slots.validationMessageIcon && /*#__PURE__*/React.createElement(slots.validationMessageIcon, {
|
20
18
|
...slotProps.validationMessageIcon
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,2BAA2B;AAGpD;;;AAGA,OAAO,MAAMC,oBAAoB,
|
1
|
+
{"version":3,"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,2BAA2B;AAGpD;;;AAGA,OAAO,MAAMC,oBAAoB,GAAIC,KAAiB,IAAI;EACxD,MAAM;IAAEC,KAAK;IAAEC;EAAS,CAAE,GAAGJ,QAAQ,CAAaE,KAAK,CAAC;EAExD,oBACEH,oBAACI,KAAK,CAACE,IAAI;IAAA,GAAKD,SAAS,CAACC;EAAI,GAC3BF,KAAK,CAACG,KAAK,iBAAIP,oBAACI,KAAK,CAACG,KAAK;IAAA,GAAKF,SAAS,CAACE;EAAK,EAAI,EACnDF,SAAS,CAACC,IAAI,CAACE,QAAQ,EACvBJ,KAAK,CAACK,iBAAiB,iBACtBT,oBAACI,KAAK,CAACK,iBAAiB;IAAA,GAAKJ,SAAS,CAACI;EAAiB,GACrDL,KAAK,CAACM,qBAAqB,iBAAIV,oBAACI,KAAK,CAACM,qBAAqB;IAAA,GAAKL,SAAS,CAACK;EAAqB,EAAI,EACnGL,SAAS,CAACI,iBAAiB,CAACD,QAAQ,CAExC,EACAJ,KAAK,CAACO,IAAI,iBAAIX,oBAACI,KAAK,CAACO,IAAI;IAAA,GAAKN,SAAS,CAACM;EAAI,EAAI,CACtC;AAEjB,CAAC","names":["React","getSlots","renderField_unstable","state","slots","slotProps","root","label","children","validationMessage","validationMessageIcon","hint"],"sourceRoot":"../src/","sources":["packages/react-components/react-field/src/components/Field/renderField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getSlots } from '@fluentui/react-utilities';\nimport type { FieldSlots, FieldState } from './Field.types';\n\n/**\n * Render the final JSX of Field\n */\nexport const renderField_unstable = (state: FieldState) => {\n const { slots, slotProps } = getSlots<FieldSlots>(state);\n\n return (\n <slots.root {...slotProps.root}>\n {slots.label && <slots.label {...slotProps.label} />}\n {slotProps.root.children}\n {slots.validationMessage && (\n <slots.validationMessage {...slotProps.validationMessage}>\n {slots.validationMessageIcon && <slots.validationMessageIcon {...slotProps.validationMessageIcon} />}\n {slotProps.validationMessage.children}\n </slots.validationMessage>\n )}\n {slots.hint && <slots.hint {...slotProps.hint} />}\n </slots.root>\n );\n};\n"]}
|
@@ -7,37 +7,6 @@ const validationMessageIcons = {
|
|
7
7
|
warning: /*#__PURE__*/React.createElement(Warning12Filled, null),
|
8
8
|
success: /*#__PURE__*/React.createElement(CheckmarkCircle12Filled, null)
|
9
9
|
};
|
10
|
-
/**
|
11
|
-
* Partition the props used by the Field itself, from the props that are passed to the underlying field component.
|
12
|
-
*/
|
13
|
-
export const getPartitionedFieldProps = props => {
|
14
|
-
const {
|
15
|
-
className,
|
16
|
-
control,
|
17
|
-
hint,
|
18
|
-
label,
|
19
|
-
orientation,
|
20
|
-
root,
|
21
|
-
style,
|
22
|
-
validationMessage,
|
23
|
-
validationMessageIcon,
|
24
|
-
validationState,
|
25
|
-
...restOfProps
|
26
|
-
} = props;
|
27
|
-
const fieldProps = {
|
28
|
-
className,
|
29
|
-
control,
|
30
|
-
hint,
|
31
|
-
label,
|
32
|
-
orientation,
|
33
|
-
root,
|
34
|
-
style,
|
35
|
-
validationMessage,
|
36
|
-
validationMessageIcon,
|
37
|
-
validationState
|
38
|
-
};
|
39
|
-
return [fieldProps, restOfProps];
|
40
|
-
};
|
41
10
|
/**
|
42
11
|
* Create the state required to render Field.
|
43
12
|
*
|
@@ -45,54 +14,58 @@ export const getPartitionedFieldProps = props => {
|
|
45
14
|
* before being passed to renderField_unstable.
|
46
15
|
*
|
47
16
|
* @param props - Props passed to this field
|
48
|
-
* @param ref - Ref to the
|
49
|
-
* @param params - Configuration parameters for this Field
|
17
|
+
* @param ref - Ref to the root
|
50
18
|
*/
|
51
|
-
export const useField_unstable = (props, ref
|
52
|
-
var _a, _b, _c;
|
53
|
-
const [fieldProps, controlProps] = getPartitionedFieldProps(props);
|
19
|
+
export const useField_unstable = (props, ref) => {
|
20
|
+
var _a, _b, _c, _d;
|
54
21
|
const {
|
22
|
+
children,
|
55
23
|
orientation = 'vertical',
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
ariaInvalidOnError = true
|
61
|
-
} = params;
|
24
|
+
required,
|
25
|
+
validationState,
|
26
|
+
size
|
27
|
+
} = props;
|
62
28
|
const baseId = useId('field-');
|
63
|
-
const root =
|
64
|
-
|
65
|
-
|
66
|
-
});
|
67
|
-
const label = resolveShorthand(
|
29
|
+
const root = getNativeElementProps('div', {
|
30
|
+
...props,
|
31
|
+
ref
|
32
|
+
}, /*excludedPropNames:*/['children']);
|
33
|
+
const label = resolveShorthand(props.label, {
|
68
34
|
defaultProps: {
|
69
35
|
id: baseId + '__label',
|
70
|
-
required
|
71
|
-
size
|
36
|
+
required,
|
37
|
+
size
|
72
38
|
// htmlFor is handled below
|
73
39
|
}
|
74
40
|
});
|
75
41
|
|
76
|
-
const validationMessage = resolveShorthand(
|
42
|
+
const validationMessage = resolveShorthand(props.validationMessage, {
|
77
43
|
defaultProps: {
|
78
44
|
id: baseId + '__validationMessage',
|
79
45
|
role: validationState === 'error' ? 'alert' : undefined
|
80
46
|
}
|
81
47
|
});
|
82
|
-
const hint = resolveShorthand(
|
48
|
+
const hint = resolveShorthand(props.hint, {
|
83
49
|
defaultProps: {
|
84
50
|
id: baseId + '__hint'
|
85
51
|
}
|
86
52
|
});
|
87
|
-
const validationMessageIcon = resolveShorthand(
|
53
|
+
const validationMessageIcon = resolveShorthand(props.validationMessageIcon, {
|
88
54
|
required: !!validationState,
|
89
55
|
defaultProps: {
|
90
56
|
children: validationState ? validationMessageIcons[validationState] : undefined
|
91
57
|
}
|
92
58
|
});
|
93
|
-
|
94
|
-
|
59
|
+
const controlProps = /*#__PURE__*/React.isValidElement(children) ? {
|
60
|
+
...children.props
|
61
|
+
} : {};
|
62
|
+
if (label) {
|
95
63
|
(_a = controlProps['aria-labelledby']) !== null && _a !== void 0 ? _a : controlProps['aria-labelledby'] = label.id;
|
64
|
+
if (!label.htmlFor) {
|
65
|
+
// Assign the child a generated ID if doesn't already have an ID
|
66
|
+
(_b = controlProps.id) !== null && _b !== void 0 ? _b : controlProps.id = baseId + '__control';
|
67
|
+
label.htmlFor = controlProps.id;
|
68
|
+
}
|
96
69
|
}
|
97
70
|
if (validationMessage || hint) {
|
98
71
|
// The control is described by the validation message, or hint, or both
|
@@ -100,39 +73,32 @@ export const useField_unstable = (props, ref, params) => {
|
|
100
73
|
// For reference: https://github.com/microsoft/fluentui/pull/25580#discussion_r1017259933
|
101
74
|
controlProps['aria-describedby'] = [validationMessage === null || validationMessage === void 0 ? void 0 : validationMessage.id, hint === null || hint === void 0 ? void 0 : hint.id, controlProps['aria-describedby']].filter(Boolean).join(' ');
|
102
75
|
}
|
103
|
-
if (validationState === 'error'
|
104
|
-
(
|
76
|
+
if (validationState === 'error') {
|
77
|
+
(_c = controlProps['aria-invalid']) !== null && _c !== void 0 ? _c : controlProps['aria-invalid'] = true;
|
105
78
|
}
|
106
|
-
|
107
|
-
required: true
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
});
|
114
|
-
if (label && labelConnection === 'htmlFor') {
|
115
|
-
(_c = label.htmlFor) !== null && _c !== void 0 ? _c : label.htmlFor = control.id;
|
79
|
+
if (required) {
|
80
|
+
(_d = controlProps['aria-required']) !== null && _d !== void 0 ? _d : controlProps['aria-required'] = true;
|
81
|
+
}
|
82
|
+
if ( /*#__PURE__*/React.isValidElement(children)) {
|
83
|
+
root.children = /*#__PURE__*/React.cloneElement(children, controlProps);
|
84
|
+
} else if (typeof children === 'function') {
|
85
|
+
root.children = children(controlProps);
|
116
86
|
}
|
117
|
-
|
87
|
+
return {
|
118
88
|
orientation,
|
119
89
|
validationState,
|
120
|
-
classNames: params.classNames,
|
121
90
|
components: {
|
122
91
|
root: 'div',
|
123
|
-
control: params.component,
|
124
92
|
label: Label,
|
125
93
|
validationMessage: 'div',
|
126
94
|
validationMessageIcon: 'span',
|
127
95
|
hint: 'div'
|
128
96
|
},
|
129
97
|
root,
|
130
|
-
control,
|
131
98
|
label,
|
132
99
|
validationMessageIcon,
|
133
100
|
validationMessage,
|
134
101
|
hint
|
135
102
|
};
|
136
|
-
return state;
|
137
103
|
};
|
138
104
|
//# sourceMappingURL=useField.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;
|
1
|
+
{"version":3,"mappings":"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","names":["React","CheckmarkCircle12Filled","ErrorCircle12Filled","Warning12Filled","Label","getNativeElementProps","resolveShorthand","useId","validationMessageIcons","error","warning","success","useField_unstable","props","ref","children","orientation","required","validationState","size","baseId","root","label","defaultProps","id","validationMessage","role","undefined","hint","validationMessageIcon","controlProps","isValidElement","htmlFor","filter","Boolean","join","cloneElement","components"],"sourceRoot":"../src/","sources":["packages/react-components/react-field/src/components/Field/useField.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { CheckmarkCircle12Filled, ErrorCircle12Filled, Warning12Filled } from '@fluentui/react-icons';\nimport { Label } from '@fluentui/react-label';\nimport { getNativeElementProps, resolveShorthand, useId } from '@fluentui/react-utilities';\nimport type { FieldChildProps, FieldProps, FieldState } from './Field.types';\n\nconst validationMessageIcons = {\n error: <ErrorCircle12Filled />,\n warning: <Warning12Filled />,\n success: <CheckmarkCircle12Filled />,\n} as const;\n\n/**\n * Create the state required to render Field.\n *\n * The returned state can be modified with hooks such as useFieldStyles_unstable,\n * before being passed to renderField_unstable.\n *\n * @param props - Props passed to this field\n * @param ref - Ref to the root\n */\nexport const useField_unstable = (props: FieldProps, ref: React.Ref<HTMLDivElement>): FieldState => {\n const { children, orientation = 'vertical', required, validationState, size } = props;\n\n const baseId = useId('field-');\n\n const root = getNativeElementProps('div', { ...props, ref }, /*excludedPropNames:*/ ['children']);\n\n const label = resolveShorthand(props.label, {\n defaultProps: {\n id: baseId + '__label',\n required,\n size,\n // htmlFor is handled below\n },\n });\n\n const validationMessage = resolveShorthand(props.validationMessage, {\n defaultProps: {\n id: baseId + '__validationMessage',\n role: validationState === 'error' ? 'alert' : undefined,\n },\n });\n\n const hint = resolveShorthand(props.hint, {\n defaultProps: {\n id: baseId + '__hint',\n },\n });\n\n const validationMessageIcon = resolveShorthand(props.validationMessageIcon, {\n required: !!validationState,\n defaultProps: {\n children: validationState ? validationMessageIcons[validationState] : undefined,\n },\n });\n\n const controlProps: FieldChildProps = React.isValidElement(children) ? { ...children.props } : {};\n\n if (label) {\n controlProps['aria-labelledby'] ??= label.id;\n\n if (!label.htmlFor) {\n // Assign the child a generated ID if doesn't already have an ID\n controlProps.id ??= baseId + '__control';\n label.htmlFor = controlProps.id;\n }\n }\n\n if (validationMessage || hint) {\n // The control is described by the validation message, or hint, or both\n // We also preserve and append any aria-describedby supplied by the user\n // For reference: https://github.com/microsoft/fluentui/pull/25580#discussion_r1017259933\n controlProps['aria-describedby'] = [validationMessage?.id, hint?.id, controlProps['aria-describedby']]\n .filter(Boolean)\n .join(' ');\n }\n\n if (validationState === 'error') {\n controlProps['aria-invalid'] ??= true;\n }\n\n if (required) {\n controlProps['aria-required'] ??= true;\n }\n\n if (React.isValidElement(children)) {\n root.children = React.cloneElement(children, controlProps);\n } else if (typeof children === 'function') {\n root.children = children(controlProps);\n }\n\n return {\n orientation,\n validationState,\n components: {\n root: 'div',\n label: Label,\n validationMessage: 'div',\n validationMessageIcon: 'span',\n hint: 'div',\n },\n root,\n label,\n validationMessageIcon,\n validationMessage,\n hint,\n };\n};\n"]}
|