Skip to content

Commit b3cb4d5

Browse files
committed
feat(pf): added types definitions for components
1 parent 3d8e64f commit b3cb4d5

19 files changed

+321
-5
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { UseFieldApiComponentConfig, AnyObject } from "@data-driven-forms/react-form-renderer";
2+
import { CheckboxProps as PfCheckboxProps, FormGroupProps } from '@patternfly/react-core';
3+
import { ReactNode } from "react";
4+
5+
interface CheckboxOptions extends AnyObject {
6+
label?: ReactNode;
7+
value?: any;
8+
}
9+
10+
interface CheckboxProps extends PfCheckboxProps {
11+
isReadOnly?: boolean;
12+
options?: CheckboxOptions;
13+
}
14+
15+
declare const Checkbox: React.ComponentType<CheckboxProps & FormGroupProps & UseFieldApiComponentConfig>;
16+
17+
export default Checkbox;
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { ComponentTypes } from '@data-driven-forms/react-form-renderer';
2+
3+
interface Components {
4+
TextField: React.ComponentType;
5+
Textarea: React.ComponentType;
6+
Select: React.ComponentType;
7+
Checkbox: React.ComponentType;
8+
Radio: React.ComponentType;
9+
Switch: React.ComponentType;
10+
DatePicker: React.ComponentType;
11+
TimePicker: React.ComponentType;
12+
PlainText: React.ComponentType;
13+
SubForm: React.ComponentType;
14+
Wizard: React.ComponentType;
15+
DualListSelect: React.ComponentType;
16+
Slider: React.ComponentType;
17+
}
18+
19+
interface componentMapper {
20+
[ComponentTypes.TEXT_FIELD]: React.ComponentType;
21+
[ComponentTypes.TEXTAREA]: React.ComponentType;
22+
[ComponentTypes.SELECT]: React.ComponentType;
23+
[ComponentTypes.CHECKBOX]: React.ComponentType;
24+
[ComponentTypes.SUB_FORM]: React.ComponentType;
25+
[ComponentTypes.RADIO]: React.ComponentType;
26+
[ComponentTypes.TABS]: React.ComponentType;
27+
[ComponentTypes.DATE_PICKER]: React.ComponentType;
28+
[ComponentTypes.TIME_PICKER]: React.ComponentType;
29+
[ComponentTypes.SWITCH]: React.ComponentType;
30+
[ComponentTypes.PLAIN_TEXT]: React.ComponentType;
31+
[ComponentTypes.WIZARD]: React.ComponentType;
32+
[ComponentTypes.FIELD_ARRAY]: React.ComponentType;
33+
[ComponentTypes.DUAL_LIST_SELECT]: React.ComponentType;
34+
[ComponentTypes.SLIDER]: React.ComponentType;
35+
}
36+
37+
interface RawComponents {
38+
RawSelect: React.ComponentType;
39+
}
40+
41+
export const rawComponents: RawComponents;
42+
43+
declare const componentMapper: componentMapper;
44+
45+
export const Components: Components;
46+
47+
export default componentMapper;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { UseFieldApiComponentConfig } from "@data-driven-forms/react-form-renderer";
2+
import { TextInputProps } from "@patternfly/react-core";
3+
import FormGroupProps from "./form-group";
4+
5+
declare const DatePicker: React.ComponentType<TextInputProps & FormGroupProps & UseFieldApiComponentConfig>;
6+
7+
export default DatePicker;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { UseFieldApiComponentConfig, AnyObject } from "@data-driven-forms/react-form-renderer";
2+
import { ReactNode } from "react";
3+
import { FormGroupProps } from "@patternfly/react-core";
4+
5+
export interface DualListSelectOption extends AnyObject {
6+
value?: any;
7+
label: ReactNode;
8+
}
9+
10+
export interface DualListSelectProps {
11+
leftTitle?: ReactNode;
12+
rightTitle?: ReactNode;
13+
moveLeftTitle?: ReactNode;
14+
moveRightTitle?: ReactNode;
15+
allToLeft?: boolean;
16+
allToRight?: boolean;
17+
moveAllLeftTitle?: ReactNode;
18+
moveAllRightTitle?: ReactNode;
19+
noValueTitle?: ReactNode;
20+
noOptionsTitle?: ReactNode;
21+
filterOptionsTitle?: ReactNode;
22+
filterValueTitle?: ReactNode;
23+
filterValueText?: ReactNode;
24+
filterOptionsText?: ReactNode;
25+
leftValues: DualListSelectOption[];
26+
rightValues: DualListSelectOption[];
27+
}
28+
29+
declare const DualListSelect: React.ComponentType<DualListSelectProps & FormGroupProps & UseFieldApiComponentConfig>;
30+
31+
export default DualListSelect;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { ReactNode } from "react";
2+
import { Field } from "@data-driven-forms/react-form-renderer";
3+
4+
export interface FieldArrayProps {
5+
label?: ReactNode;
6+
description?: ReactNode;
7+
fields: Field[];
8+
defaultItem?: any;
9+
minItems?: number;
10+
maxItems?: number;
11+
noItemsMessage?: ReactNode;
12+
}
13+
14+
declare const FieldArray: React.ComponentType<FieldArrayProps>;
15+
16+
export default FieldArray;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { ReactNode } from "react";
2+
3+
export default interface FormGroupProps {
4+
description?: ReactNode;
5+
hideLabel?: boolean;
6+
id?: string;
7+
label?: ReactNode;
8+
isRequired?: boolean;
9+
helperText?: ReactNode;
10+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { FormTemplateRenderProps } from "@data-driven-forms/react-form-renderer";
2+
3+
export interface FormTemplateProps extends FormTemplateRenderProps {
4+
FormWrapper?: React.ComponentType;
5+
Button?: React.ComponentType;
6+
ButtonGroup?: React.ComponentType;
7+
Title?: React.ComponentType;
8+
Description?: React.ComponentType;
9+
FormWrapperProps?: React.HTMLAttributes<HTMLFormElement>;
10+
}
11+
12+
declare const FormTemplate: React.ComponentType<FormTemplateProps>;
13+
14+
export default FormTemplate;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { ReactNode } from "react";
2+
3+
export interface PlainTextProps {
4+
label: ReactNode;
5+
name: string;
6+
variant?: 'p'|'span'|'strong'|'b'|'cite'|'caption'|'code'|'em'|'i'|'h1'|'h2'|'h3'|'h4'|'h5'|'h6'|'h6'|'div'|'label'|'pre'|'q'|'samp'|'small'|'sub'|'sup';
7+
}
8+
9+
declare const PlainText: React.ComponentType<PlainTextProps>;
10+
11+
export default PlainText;

packages/pf4-component-mapper/src/files/plain-text.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import validTextFields from '@data-driven-forms/common/src/utils/valid-text-fiel
66

77
const PlainText = ({ label, name, variant }) => (
88
<TextContent>
9-
{label.split('\n').map((paragraph, index) => (
10-
<Text component={variant} key={`${name}-${index}`}>
11-
{paragraph}
12-
</Text>
13-
))}
9+
{typeof label === 'string'
10+
? label.split('\n').map((paragraph, index) => (
11+
<Text component={variant} key={`${name}-${index}`}>
12+
{paragraph}
13+
</Text>
14+
))
15+
: label}
1416
</TextContent>
1517
);
1618

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { UseFieldApiComponentConfig, AnyObject } from "@data-driven-forms/react-form-renderer";
2+
import FormGroupProps from "./form-group";
3+
import { ReactNode } from "react";
4+
5+
export interface RadioOption extends AnyObject {
6+
label: ReactNode;
7+
value?: any;
8+
}
9+
10+
export interface RadioProps {
11+
name: string;
12+
options: RadioOption[];
13+
isReadOnly?: boolean;
14+
isDisabled?: boolean;
15+
}
16+
17+
declare const Radio: React.ComponentType<RadioProps & FormGroupProps & UseFieldApiComponentConfig>;
18+
19+
export default Radio;

0 commit comments

Comments
 (0)