@rjsf/fluentui-rc 5.14.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.
Files changed (210) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +127 -0
  3. package/dist/core.umd.js +940 -0
  4. package/dist/index.esm.js +1091 -0
  5. package/dist/index.esm.js.map +7 -0
  6. package/dist/index.js +1063 -0
  7. package/dist/index.js.map +7 -0
  8. package/lib/AddButton/AddButton.d.ts +3 -0
  9. package/lib/AddButton/AddButton.js +11 -0
  10. package/lib/AddButton/AddButton.js.map +1 -0
  11. package/lib/AddButton/index.d.ts +2 -0
  12. package/lib/AddButton/index.js +3 -0
  13. package/lib/AddButton/index.js.map +1 -0
  14. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.d.ts +7 -0
  15. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js +12 -0
  16. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js.map +1 -0
  17. package/lib/ArrayFieldItemTemplate/index.d.ts +2 -0
  18. package/lib/ArrayFieldItemTemplate/index.js +3 -0
  19. package/lib/ArrayFieldItemTemplate/index.js.map +1 -0
  20. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +7 -0
  21. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js +28 -0
  22. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js.map +1 -0
  23. package/lib/ArrayFieldTemplate/index.d.ts +2 -0
  24. package/lib/ArrayFieldTemplate/index.js +3 -0
  25. package/lib/ArrayFieldTemplate/index.js.map +1 -0
  26. package/lib/BaseInputTemplate/BaseInputTemplate.d.ts +9 -0
  27. package/lib/BaseInputTemplate/BaseInputTemplate.js +38 -0
  28. package/lib/BaseInputTemplate/BaseInputTemplate.js.map +1 -0
  29. package/lib/BaseInputTemplate/index.d.ts +2 -0
  30. package/lib/BaseInputTemplate/index.js +3 -0
  31. package/lib/BaseInputTemplate/index.js.map +1 -0
  32. package/lib/CheckboxWidget/CheckboxWidget.d.ts +8 -0
  33. package/lib/CheckboxWidget/CheckboxWidget.js +23 -0
  34. package/lib/CheckboxWidget/CheckboxWidget.js.map +1 -0
  35. package/lib/CheckboxWidget/index.d.ts +2 -0
  36. package/lib/CheckboxWidget/index.js +3 -0
  37. package/lib/CheckboxWidget/index.js.map +1 -0
  38. package/lib/CheckboxesWidget/CheckboxesWidget.d.ts +8 -0
  39. package/lib/CheckboxesWidget/CheckboxesWidget.js +30 -0
  40. package/lib/CheckboxesWidget/CheckboxesWidget.js.map +1 -0
  41. package/lib/CheckboxesWidget/index.d.ts +2 -0
  42. package/lib/CheckboxesWidget/index.js +3 -0
  43. package/lib/CheckboxesWidget/index.js.map +1 -0
  44. package/lib/DescriptionField/DescriptionField.d.ts +7 -0
  45. package/lib/DescriptionField/DescriptionField.js +21 -0
  46. package/lib/DescriptionField/DescriptionField.js.map +1 -0
  47. package/lib/DescriptionField/index.d.ts +2 -0
  48. package/lib/DescriptionField/index.js +3 -0
  49. package/lib/DescriptionField/index.js.map +1 -0
  50. package/lib/ErrorList/ErrorList.d.ts +7 -0
  51. package/lib/ErrorList/ErrorList.js +26 -0
  52. package/lib/ErrorList/ErrorList.js.map +1 -0
  53. package/lib/ErrorList/index.d.ts +2 -0
  54. package/lib/ErrorList/index.js +3 -0
  55. package/lib/ErrorList/index.js.map +1 -0
  56. package/lib/FieldErrorTemplate/FieldErrorTemplate.d.ts +7 -0
  57. package/lib/FieldErrorTemplate/FieldErrorTemplate.js +28 -0
  58. package/lib/FieldErrorTemplate/FieldErrorTemplate.js.map +1 -0
  59. package/lib/FieldErrorTemplate/index.d.ts +2 -0
  60. package/lib/FieldErrorTemplate/index.js +3 -0
  61. package/lib/FieldErrorTemplate/index.js.map +1 -0
  62. package/lib/FieldHelpTemplate/FieldHelpTemplate.d.ts +7 -0
  63. package/lib/FieldHelpTemplate/FieldHelpTemplate.js +16 -0
  64. package/lib/FieldHelpTemplate/FieldHelpTemplate.js.map +1 -0
  65. package/lib/FieldHelpTemplate/index.d.ts +2 -0
  66. package/lib/FieldHelpTemplate/index.js +3 -0
  67. package/lib/FieldHelpTemplate/index.js.map +1 -0
  68. package/lib/FieldTemplate/FieldTemplate.d.ts +8 -0
  69. package/lib/FieldTemplate/FieldTemplate.js +18 -0
  70. package/lib/FieldTemplate/FieldTemplate.js.map +1 -0
  71. package/lib/FieldTemplate/index.d.ts +2 -0
  72. package/lib/FieldTemplate/index.js +3 -0
  73. package/lib/FieldTemplate/index.js.map +1 -0
  74. package/lib/FluentForm/FluentForm.d.ts +6 -0
  75. package/lib/FluentForm/FluentForm.js +7 -0
  76. package/lib/FluentForm/FluentForm.js.map +1 -0
  77. package/lib/FluentForm/index.d.ts +2 -0
  78. package/lib/FluentForm/index.js +3 -0
  79. package/lib/FluentForm/index.js.map +1 -0
  80. package/lib/FluentUIRCFrameProvider.d.ts +2 -0
  81. package/lib/FluentUIRCFrameProvider.js +12 -0
  82. package/lib/FluentUIRCFrameProvider.js.map +1 -0
  83. package/lib/IconButton/IconButton.d.ts +7 -0
  84. package/lib/IconButton/IconButton.js +26 -0
  85. package/lib/IconButton/IconButton.js.map +1 -0
  86. package/lib/IconButton/index.d.ts +2 -0
  87. package/lib/IconButton/index.js +3 -0
  88. package/lib/IconButton/index.js.map +1 -0
  89. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +9 -0
  90. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js +22 -0
  91. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -0
  92. package/lib/ObjectFieldTemplate/index.d.ts +2 -0
  93. package/lib/ObjectFieldTemplate/index.js +3 -0
  94. package/lib/ObjectFieldTemplate/index.js.map +1 -0
  95. package/lib/RadioWidget/RadioWidget.d.ts +8 -0
  96. package/lib/RadioWidget/RadioWidget.js +22 -0
  97. package/lib/RadioWidget/RadioWidget.js.map +1 -0
  98. package/lib/RadioWidget/index.d.ts +2 -0
  99. package/lib/RadioWidget/index.js +3 -0
  100. package/lib/RadioWidget/index.js.map +1 -0
  101. package/lib/RangeWidget/RangeWidget.d.ts +8 -0
  102. package/lib/RangeWidget/RangeWidget.js +20 -0
  103. package/lib/RangeWidget/RangeWidget.js.map +1 -0
  104. package/lib/RangeWidget/index.d.ts +2 -0
  105. package/lib/RangeWidget/index.js +3 -0
  106. package/lib/RangeWidget/index.js.map +1 -0
  107. package/lib/SelectWidget/SelectWidget.d.ts +9 -0
  108. package/lib/SelectWidget/SelectWidget.js +41 -0
  109. package/lib/SelectWidget/SelectWidget.js.map +1 -0
  110. package/lib/SelectWidget/index.d.ts +2 -0
  111. package/lib/SelectWidget/index.js +3 -0
  112. package/lib/SelectWidget/index.js.map +1 -0
  113. package/lib/SubmitButton/SubmitButton.d.ts +3 -0
  114. package/lib/SubmitButton/SubmitButton.js +17 -0
  115. package/lib/SubmitButton/SubmitButton.js.map +1 -0
  116. package/lib/SubmitButton/index.d.ts +2 -0
  117. package/lib/SubmitButton/index.js +3 -0
  118. package/lib/SubmitButton/index.js.map +1 -0
  119. package/lib/Templates/Templates.d.ts +4 -0
  120. package/lib/Templates/Templates.js +39 -0
  121. package/lib/Templates/Templates.js.map +1 -0
  122. package/lib/Templates/index.d.ts +2 -0
  123. package/lib/Templates/index.js +3 -0
  124. package/lib/Templates/index.js.map +1 -0
  125. package/lib/TextareaWidget/TextareaWidget.d.ts +7 -0
  126. package/lib/TextareaWidget/TextareaWidget.js +27 -0
  127. package/lib/TextareaWidget/TextareaWidget.js.map +1 -0
  128. package/lib/TextareaWidget/index.d.ts +2 -0
  129. package/lib/TextareaWidget/index.js +3 -0
  130. package/lib/TextareaWidget/index.js.map +1 -0
  131. package/lib/Theme/Theme.d.ts +5 -0
  132. package/lib/Theme/Theme.js +10 -0
  133. package/lib/Theme/Theme.js.map +1 -0
  134. package/lib/Theme/index.d.ts +2 -0
  135. package/lib/Theme/index.js +3 -0
  136. package/lib/Theme/index.js.map +1 -0
  137. package/lib/TitleField/TitleField.d.ts +7 -0
  138. package/lib/TitleField/TitleField.js +17 -0
  139. package/lib/TitleField/TitleField.js.map +1 -0
  140. package/lib/TitleField/index.d.ts +2 -0
  141. package/lib/TitleField/index.js +3 -0
  142. package/lib/TitleField/index.js.map +1 -0
  143. package/lib/Widgets/Widgets.d.ts +4 -0
  144. package/lib/Widgets/Widgets.js +18 -0
  145. package/lib/Widgets/Widgets.js.map +1 -0
  146. package/lib/Widgets/index.d.ts +2 -0
  147. package/lib/Widgets/index.js +3 -0
  148. package/lib/Widgets/index.js.map +1 -0
  149. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.d.ts +8 -0
  150. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js +40 -0
  151. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js.map +1 -0
  152. package/lib/WrapIfAdditionalTemplate/index.d.ts +2 -0
  153. package/lib/WrapIfAdditionalTemplate/index.js +3 -0
  154. package/lib/WrapIfAdditionalTemplate/index.js.map +1 -0
  155. package/lib/index.d.ts +7 -0
  156. package/lib/index.js +8 -0
  157. package/lib/index.js.map +1 -0
  158. package/lib/tsconfig.tsbuildinfo +1 -0
  159. package/package.json +98 -0
  160. package/src/AddButton/AddButton.tsx +12 -0
  161. package/src/AddButton/index.ts +2 -0
  162. package/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +72 -0
  163. package/src/ArrayFieldItemTemplate/index.ts +2 -0
  164. package/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx +87 -0
  165. package/src/ArrayFieldTemplate/index.ts +2 -0
  166. package/src/BaseInputTemplate/BaseInputTemplate.tsx +99 -0
  167. package/src/BaseInputTemplate/index.ts +2 -0
  168. package/src/CheckboxWidget/CheckboxWidget.tsx +81 -0
  169. package/src/CheckboxWidget/index.ts +2 -0
  170. package/src/CheckboxesWidget/CheckboxesWidget.tsx +91 -0
  171. package/src/CheckboxesWidget/index.ts +2 -0
  172. package/src/DescriptionField/DescriptionField.tsx +31 -0
  173. package/src/DescriptionField/index.ts +2 -0
  174. package/src/ErrorList/ErrorList.tsx +40 -0
  175. package/src/ErrorList/index.ts +2 -0
  176. package/src/FieldErrorTemplate/FieldErrorTemplate.tsx +44 -0
  177. package/src/FieldErrorTemplate/index.ts +2 -0
  178. package/src/FieldHelpTemplate/FieldHelpTemplate.tsx +19 -0
  179. package/src/FieldHelpTemplate/index.ts +2 -0
  180. package/src/FieldTemplate/FieldTemplate.tsx +80 -0
  181. package/src/FieldTemplate/index.ts +2 -0
  182. package/src/FluentForm/FluentForm.ts +15 -0
  183. package/src/FluentForm/index.ts +2 -0
  184. package/src/FluentUIRCFrameProvider.tsx +21 -0
  185. package/src/IconButton/IconButton.tsx +73 -0
  186. package/src/IconButton/index.ts +2 -0
  187. package/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx +97 -0
  188. package/src/ObjectFieldTemplate/index.ts +2 -0
  189. package/src/RadioWidget/RadioWidget.tsx +77 -0
  190. package/src/RadioWidget/index.ts +2 -0
  191. package/src/RangeWidget/RangeWidget.tsx +49 -0
  192. package/src/RangeWidget/index.ts +2 -0
  193. package/src/SelectWidget/SelectWidget.tsx +98 -0
  194. package/src/SelectWidget/index.ts +2 -0
  195. package/src/SubmitButton/SubmitButton.tsx +27 -0
  196. package/src/SubmitButton/index.ts +2 -0
  197. package/src/Templates/Templates.ts +45 -0
  198. package/src/Templates/index.ts +2 -0
  199. package/src/TextareaWidget/TextareaWidget.tsx +81 -0
  200. package/src/TextareaWidget/index.ts +2 -0
  201. package/src/Theme/Theme.ts +18 -0
  202. package/src/Theme/index.ts +2 -0
  203. package/src/TitleField/TitleField.tsx +28 -0
  204. package/src/TitleField/index.ts +2 -0
  205. package/src/Widgets/Widgets.ts +24 -0
  206. package/src/Widgets/index.ts +2 -0
  207. package/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +100 -0
  208. package/src/WrapIfAdditionalTemplate/index.ts +2 -0
  209. package/src/index.ts +9 -0
  210. package/src/tsconfig.json +24 -0
@@ -0,0 +1,45 @@
1
+ import ArrayFieldItemTemplate from '../ArrayFieldItemTemplate';
2
+ import AddButton from '../AddButton';
3
+ import ArrayFieldTemplate from '../ArrayFieldTemplate';
4
+ import BaseInputTemplate from '../BaseInputTemplate/BaseInputTemplate';
5
+ import DescriptionField from '../DescriptionField';
6
+ import ErrorList from '../ErrorList';
7
+ import { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } from '../IconButton';
8
+ import FieldErrorTemplate from '../FieldErrorTemplate';
9
+ import FieldHelpTemplate from '../FieldHelpTemplate';
10
+ import FieldTemplate from '../FieldTemplate';
11
+ import ObjectFieldTemplate from '../ObjectFieldTemplate';
12
+ import SubmitButton from '../SubmitButton';
13
+ import TitleField from '../TitleField';
14
+ import WrapIfAdditionalTemplate from '../WrapIfAdditionalTemplate';
15
+ import { FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';
16
+
17
+ export function generateTemplates<
18
+ T = any,
19
+ S extends StrictRJSFSchema = RJSFSchema,
20
+ F extends FormContextType = any
21
+ >(): Partial<TemplatesType<T, S, F>> {
22
+ return {
23
+ ArrayFieldItemTemplate,
24
+ ArrayFieldTemplate,
25
+ BaseInputTemplate,
26
+ ButtonTemplates: {
27
+ CopyButton,
28
+ AddButton,
29
+ MoveDownButton,
30
+ MoveUpButton,
31
+ RemoveButton,
32
+ SubmitButton,
33
+ },
34
+ DescriptionFieldTemplate: DescriptionField,
35
+ ErrorListTemplate: ErrorList,
36
+ FieldErrorTemplate,
37
+ FieldHelpTemplate,
38
+ FieldTemplate,
39
+ ObjectFieldTemplate,
40
+ TitleFieldTemplate: TitleField,
41
+ WrapIfAdditionalTemplate,
42
+ };
43
+ }
44
+
45
+ export default generateTemplates();
@@ -0,0 +1,2 @@
1
+ export { default } from './Templates';
2
+ export * from './Templates';
@@ -0,0 +1,81 @@
1
+ import { Label, Textarea, makeStyles } from '@fluentui/react-components';
2
+ import {
3
+ FormContextType,
4
+ RJSFSchema,
5
+ StrictRJSFSchema,
6
+ WidgetProps,
7
+ ariaDescribedByIds,
8
+ labelValue,
9
+ } from '@rjsf/utils';
10
+ import { ChangeEvent, FocusEvent } from 'react';
11
+
12
+ const useStyles = makeStyles({
13
+ label: {
14
+ paddingTop: '2px',
15
+ paddingBottom: '2px',
16
+ marginBottom: '2px',
17
+ },
18
+ });
19
+
20
+ /** The `TextareaWidget` is a widget for rendering input fields as textarea.
21
+ *
22
+ * @param props - The `WidgetProps` for this component
23
+ */
24
+ export default function TextareaWidget<
25
+ T = any,
26
+ S extends StrictRJSFSchema = RJSFSchema,
27
+ F extends FormContextType = any
28
+ >(props: WidgetProps<T, S, F>) {
29
+ const {
30
+ id,
31
+ placeholder,
32
+ required,
33
+ readonly,
34
+ disabled,
35
+ value,
36
+ label,
37
+ hideLabel,
38
+ onChange,
39
+ onChangeOverride,
40
+ onBlur,
41
+ onFocus,
42
+ autofocus,
43
+ options,
44
+ schema,
45
+ } = props;
46
+ const classes = useStyles();
47
+ const _onChange = ({ target: { value } }: ChangeEvent<HTMLTextAreaElement>) =>
48
+ onChange(value === '' ? options.emptyValue : value);
49
+ const _onBlur = ({ target: { value } }: FocusEvent<HTMLTextAreaElement>) => onBlur(id, value);
50
+ const _onFocus = ({ target: { value } }: FocusEvent<HTMLTextAreaElement>) => onFocus(id, value);
51
+
52
+ let rows: string | number = 5;
53
+ if (typeof options.rows === 'string' || typeof options.rows === 'number') {
54
+ rows = options.rows;
55
+ }
56
+
57
+ return (
58
+ <>
59
+ {labelValue(
60
+ <Label htmlFor={id} required={required} disabled={disabled} className={classes.label}>
61
+ {label}
62
+ </Label>,
63
+ hideLabel
64
+ )}
65
+ <Textarea
66
+ id={id}
67
+ name={id}
68
+ placeholder={placeholder}
69
+ autoFocus={autofocus}
70
+ required={required}
71
+ disabled={disabled || readonly}
72
+ value={value || value === 0 ? value : ''}
73
+ onChange={onChangeOverride || _onChange}
74
+ onFocus={_onFocus}
75
+ onBlur={_onBlur}
76
+ aria-describedby={ariaDescribedByIds<T>(id, !!schema.examples)}
77
+ rows={rows}
78
+ />
79
+ </>
80
+ );
81
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './TextareaWidget';
2
+ export * from './TextareaWidget';
@@ -0,0 +1,18 @@
1
+ import { ThemeProps } from '@rjsf/core';
2
+
3
+ import { generateTemplates } from '../Templates';
4
+ import { generateWidgets } from '../Widgets';
5
+ import { FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
6
+
7
+ export function generateTheme<
8
+ T = any,
9
+ S extends StrictRJSFSchema = RJSFSchema,
10
+ F extends FormContextType = any
11
+ >(): ThemeProps<T, S, F> {
12
+ return {
13
+ templates: generateTemplates<T, S, F>(),
14
+ widgets: generateWidgets<T, S, F>(),
15
+ };
16
+ }
17
+
18
+ export default generateTheme();
@@ -0,0 +1,2 @@
1
+ export { default } from './Theme';
2
+ export * from './Theme';
@@ -0,0 +1,28 @@
1
+ import { Text, Divider, makeStyles } from '@fluentui/react-components';
2
+ import { FormContextType, TitleFieldProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
3
+
4
+ const useStyles = makeStyles({
5
+ root: {
6
+ marginTop: '8px',
7
+ marginBottom: '8px',
8
+ },
9
+ });
10
+
11
+ /** The `TitleField` is the template to use to render the title of a field
12
+ *
13
+ * @param props - The `TitleFieldProps` for this component
14
+ */
15
+ export default function TitleField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({
16
+ id,
17
+ title,
18
+ }: TitleFieldProps<T, S, F>) {
19
+ const classes = useStyles();
20
+ return (
21
+ <div id={id} className={classes.root}>
22
+ <Text as='h5' size={600}>
23
+ {title}
24
+ </Text>
25
+ <Divider />
26
+ </div>
27
+ );
28
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './TitleField';
2
+ export * from './TitleField';
@@ -0,0 +1,24 @@
1
+ import CheckboxWidget from '../CheckboxWidget/CheckboxWidget';
2
+ import CheckboxesWidget from '../CheckboxesWidget/CheckboxesWidget';
3
+ import RadioWidget from '../RadioWidget/RadioWidget';
4
+ import RangeWidget from '../RangeWidget/RangeWidget';
5
+ import SelectWidget from '../SelectWidget/SelectWidget';
6
+ import TextareaWidget from '../TextareaWidget/TextareaWidget';
7
+ import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
8
+
9
+ export function generateWidgets<
10
+ T = any,
11
+ S extends StrictRJSFSchema = RJSFSchema,
12
+ F extends FormContextType = any
13
+ >(): RegistryWidgetsType<T, S, F> {
14
+ return {
15
+ CheckboxWidget,
16
+ CheckboxesWidget,
17
+ RadioWidget,
18
+ RangeWidget,
19
+ SelectWidget,
20
+ TextareaWidget,
21
+ };
22
+ }
23
+
24
+ export default generateWidgets();
@@ -0,0 +1,2 @@
1
+ export { default } from './Widgets';
2
+ export * from './Widgets';
@@ -0,0 +1,100 @@
1
+ import { CSSProperties, FocusEvent } from 'react';
2
+ import {
3
+ ADDITIONAL_PROPERTY_FLAG,
4
+ FormContextType,
5
+ RJSFSchema,
6
+ StrictRJSFSchema,
7
+ TranslatableString,
8
+ WrapIfAdditionalTemplateProps,
9
+ } from '@rjsf/utils';
10
+ import { Field, Input, makeStyles } from '@fluentui/react-components';
11
+ import { Flex } from '@fluentui/react-migration-v0-v9';
12
+
13
+ const useStyles = makeStyles({
14
+ input: {
15
+ width: '100%',
16
+ },
17
+ label: {
18
+ marginBottom: '4px',
19
+ },
20
+ });
21
+
22
+ /** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are
23
+ * part of an `additionalProperties` part of a schema.
24
+ *
25
+ * @param props - The `WrapIfAdditionalProps` for this component
26
+ */
27
+ export default function WrapIfAdditionalTemplate<
28
+ T = any,
29
+ S extends StrictRJSFSchema = RJSFSchema,
30
+ F extends FormContextType = any
31
+ >(props: WrapIfAdditionalTemplateProps<T, S, F>) {
32
+ const {
33
+ children,
34
+ classNames,
35
+ style,
36
+ disabled,
37
+ id,
38
+ label,
39
+ onDropPropertyClick,
40
+ onKeyChange,
41
+ readonly,
42
+ required,
43
+ schema,
44
+ uiSchema,
45
+ registry,
46
+ } = props;
47
+ const { templates, translateString } = registry;
48
+ const classes = useStyles();
49
+ // Button templates are not overridden in the uiSchema
50
+ const { RemoveButton } = templates.ButtonTemplates;
51
+ const keyLabel = translateString(TranslatableString.KeyLabel, [label]);
52
+ const additional = ADDITIONAL_PROPERTY_FLAG in schema;
53
+ const btnStyle: CSSProperties = {
54
+ flex: 1,
55
+ paddingLeft: 6,
56
+ paddingRight: 6,
57
+ fontWeight: 'bold',
58
+ };
59
+
60
+ if (!additional) {
61
+ return (
62
+ <div className={classNames} style={style}>
63
+ {children}
64
+ </div>
65
+ );
66
+ }
67
+
68
+ const handleBlur = ({ target }: FocusEvent<HTMLInputElement>) => onKeyChange(target.value);
69
+ return (
70
+ <Flex gap='gap.medium' vAlign='center' key={`${id}-key`} className={classNames} style={style}>
71
+ <div>
72
+ <Field label={keyLabel} required={required}>
73
+ <Input
74
+ required={required}
75
+ defaultValue={label}
76
+ disabled={disabled || readonly}
77
+ id={`${id}-key`}
78
+ name={`${id}-key`}
79
+ onBlur={!readonly ? handleBlur : undefined}
80
+ type='text'
81
+ input={{
82
+ className: classes.input,
83
+ }}
84
+ />
85
+ </Field>
86
+ </div>
87
+ <div>{children}</div>
88
+ <div>
89
+ <RemoveButton
90
+ iconType='default'
91
+ style={btnStyle}
92
+ disabled={disabled || readonly}
93
+ onClick={onDropPropertyClick(label)}
94
+ uiSchema={uiSchema}
95
+ registry={registry}
96
+ />
97
+ </div>
98
+ </Flex>
99
+ );
100
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './WrapIfAdditionalTemplate';
2
+ export * from './WrapIfAdditionalTemplate';
package/src/index.ts ADDED
@@ -0,0 +1,9 @@
1
+ import FluentForm from './FluentForm';
2
+
3
+ export { default as Form, generateForm } from './FluentForm';
4
+ export { default as Templates, generateTemplates } from './Templates';
5
+ export { default as Theme, generateTheme } from './Theme';
6
+ export { default as Widgets, generateWidgets } from './Widgets';
7
+ export { __createFluentUIRCFrameProvider } from './FluentUIRCFrameProvider';
8
+
9
+ export default FluentForm;
@@ -0,0 +1,24 @@
1
+ {
2
+ "extends": "../../../tsconfig.base.json",
3
+ "include": [
4
+ "./"
5
+ ],
6
+ "compilerOptions": {
7
+ "rootDir": "./",
8
+ "outDir": "../lib",
9
+ "baseUrl": "../",
10
+ "jsx": "react-jsx",
11
+ "skipLibCheck": true
12
+ },
13
+ "references": [
14
+ {
15
+ "path": "../../core"
16
+ },
17
+ {
18
+ "path": "../../utils"
19
+ },
20
+ {
21
+ "path": "../../validator-ajv8"
22
+ }
23
+ ]
24
+ }