Skip to content

Commit 2e4f54c

Browse files
authored
Merge pull request #926 from rvsia/duallistselector
feat(pf4): replace custom dual list
2 parents fd4c6c4 + 02464c7 commit 2e4f54c

File tree

13 files changed

+799
-1358
lines changed

13 files changed

+799
-1358
lines changed

packages/pf4-component-mapper/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
3131
"@babel/preset-env": "^7.1.6",
3232
"@babel/preset-react": "^7.0.0",
33-
"@patternfly/react-core": "^4.75.2",
34-
"@patternfly/react-icons": "^4.7.16",
33+
"@patternfly/react-core": "^4.90.2",
34+
"@patternfly/react-icons": "^4.8.4",
3535
"@semantic-release/git": "^7.0.5",
3636
"@semantic-release/npm": "^5.1.1",
3737
"babel-core": "^7.0.0-bridge.0",
@@ -74,8 +74,8 @@
7474
},
7575
"peerDependencies": {
7676
"@data-driven-forms/react-form-renderer": ">=2.4.6",
77-
"@patternfly/react-core": "^4.75.2",
78-
"@patternfly/react-icons": "^4.7.16"
77+
"@patternfly/react-core": "^4.90.2",
78+
"@patternfly/react-icons": "^4.8.4"
7979
},
8080
"dependencies": {
8181
"prop-types": "^15.7.2",
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export interface SortConfig {
2+
left: 'asc' | 'desc';
3+
right: 'asc' | 'desc';
4+
}
5+
6+
export type SetSortConfig = (newSortConfig: SortConfig) => void;
7+
8+
export interface DualListContextValue {
9+
sortConfig: SortConfig;
10+
setSortConfig: SetSortConfig;
11+
}
12+
13+
export interface DualListContext {
14+
value: DualListContextValue;
15+
}
16+
17+
export default DualListContext;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { createContext } from 'react';
2+
3+
const DualListContext = createContext({});
4+
5+
export default DualListContext;

packages/pf4-component-mapper/src/files/dual-list-select.d.ts

Lines changed: 8 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,21 @@
11
import { UseFieldApiComponentConfig, AnyObject } from "@data-driven-forms/react-form-renderer";
2+
import { DualListSelectorProps } from "@patternfly/react-core";
23
import { ReactNode } from "react";
34
import FormGroupProps from "./form-group";
4-
import { FormGroupProps as FormGrpProps, ListProps, ToolbarProps, TextInputProps, ButtonProps, GridProps, GridItemProps, TextContentProps, FlexProps, FlexItemProps } from "@patternfly/react-core";
5-
import { SVGIconProps } from "@patternfly/react-icons/dist/js/createIcon";
6-
75
export interface DualListSelectOption extends AnyObject {
8-
value?: any;
9-
label: ReactNode;
10-
}
11-
12-
export interface RenderStatusInput {
13-
selected: number;
14-
options: number;
6+
value: any;
7+
label: ReactNode | string;
158
}
169

17-
export interface RenderStatusFunction {
18-
(input: RenderStatusInput): ReactNode;
19-
}
10+
export type GetValueFromNode = (node: ReactNode) => string;
2011

2112
interface InternalDualListSelectProps {
22-
leftTitle?: ReactNode;
23-
rightTitle?: ReactNode;
24-
moveLeftTitle?: ReactNode;
25-
moveRightTitle?: ReactNode;
26-
allToLeft?: boolean;
27-
allToRight?: boolean;
28-
moveAllLeftTitle?: ReactNode;
29-
moveAllRightTitle?: ReactNode;
30-
label?: ReactNode;
31-
isRequired?: boolean;
32-
helperText?: ReactNode;
33-
noValueTitle?: ReactNode;
34-
noOptionsTitle?: ReactNode;
35-
filterOptionsTitle?: ReactNode;
36-
filterValueTitle?: ReactNode;
37-
filterValueText?: ReactNode;
38-
filterOptionsText?: ReactNode;
39-
description?: ReactNode;
40-
hideLabel?: boolean;
41-
id?: string;
42-
renderStatus?: RenderStatusFunction;
43-
FormGroupProps: FormGrpProps,
44-
ListProps: ListProps,
45-
LeftListProps: ListProps,
46-
RightListProps: ListProps,
47-
ListItemProps: React.HTMLProps<HTMLDivElement>,
48-
LeftListItemProps: React.HTMLProps<HTMLDivElement>,
49-
RightListItemProps: React.HTMLProps<HTMLDivElement>,
50-
ToolbarProps: ToolbarProps,
51-
LeftToolbarProps: ToolbarProps,
52-
RightToolbarProps: ToolbarProps,
53-
FilterFieldProps: TextInputProps,
54-
LeftFilterFieldProps: TextInputProps,
55-
RightFilterFieldProps: TextInputProps,
56-
SearchIconProps: SVGIconProps,
57-
LeftSearchIconProps: SVGIconProps,
58-
RightSearchIconProps: SVGIconProps,
59-
SearchIconButtonProps: ButtonProps,
60-
LeftSearchIconButtonProps: ButtonProps,
61-
RightSearchIconButtonProps: ButtonProps,
62-
SortIconButtonProps: ButtonProps,
63-
LeftSortIconButtonProps: ButtonProps,
64-
RightSortIconButtonProps: ButtonProps,
65-
SortIconProps: SVGIconProps,
66-
LeftSortIconProps: SVGIconProps,
67-
RightSortIconProps: SVGIconProps,
68-
InternalGridProps: GridProps,
69-
ListGridProps: GridItemProps,
70-
LeftListGridProps: GridItemProps,
71-
RightListGridProps: GridItemProps,
72-
TitleProps: TextContentProps,
73-
LeftTitleProps: TextContentProps,
74-
RightTitleProps: TextContentProps,
75-
ButtonsGridProps: GridItemProps,
76-
ButtonsInternalFlexProps: FlexProps,
77-
ButtonFlexProps: FlexItemProps,
78-
ToRightFlexProps: FlexItemProps,
79-
IconButtonProps: ButtonProps,
80-
ToRightIconButtonProps: ButtonProps,
81-
IconProps: SVGIconProps,
82-
AllToRightFlexProps: FlexItemProps,
83-
AllToRightIconButtonProps: ButtonProps,
84-
AllToLeftFlexProps: FlexProps,
85-
AllToLeftIconButtonProps: ButtonProps,
86-
ToLeftFlexProps: FlexProps,
87-
ToLeftIconButtonProps: ButtonProps,
88-
ToRightIconProps: SVGIconProps,
89-
AllToRightIconProps: SVGIconProps,
90-
AllToLeftIconProps: SVGIconProps,
91-
ToLeftIconProps: SVGIconProps
13+
options: Array<DualListSelectOption | string>;
14+
getValueFromNode?: GetValueFromNode;
15+
isSortable?: boolean;
9216
}
9317

94-
export type DualListSelectProps = InternalDualListSelectProps & FormGroupProps & UseFieldApiComponentConfig;
18+
export type DualListSelectProps = InternalDualListSelectProps & FormGroupProps & UseFieldApiComponentConfig & DualListSelectorProps;
9519

9620
declare const DualListSelect: React.ComponentType<DualListSelectProps>;
9721

0 commit comments

Comments
 (0)