@aglyn/shared-ui-jsx-forms 1.0.0-beta.143
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/LICENSE +201 -0
- package/README.md +7 -0
- package/package.json +52 -0
- package/src/index.d.ts +17 -0
- package/src/index.js +18 -0
- package/src/index.js.map +1 -0
- package/src/lib/components/color-picker-tokens.d.ts +135 -0
- package/src/lib/components/color-picker-tokens.js +431 -0
- package/src/lib/components/color-picker-tokens.js.map +1 -0
- package/src/lib/components/color-picker.component.d.ts +64 -0
- package/src/lib/components/color-picker.component.js +322 -0
- package/src/lib/components/color-picker.component.js.map +1 -0
- package/src/lib/components/create-artifact-drawer.component.d.ts +100 -0
- package/src/lib/components/create-artifact-drawer.component.js +184 -0
- package/src/lib/components/create-artifact-drawer.component.js.map +1 -0
- package/src/lib/components/grid-form-template.component.d.ts +21 -0
- package/src/lib/components/grid-form-template.component.js +81 -0
- package/src/lib/components/grid-form-template.component.js.map +1 -0
- package/src/lib/components/icon-select.component.d.ts +52 -0
- package/src/lib/components/icon-select.component.js +453 -0
- package/src/lib/components/icon-select.component.js.map +1 -0
- package/src/lib/components/select.component.d.ts +58 -0
- package/src/lib/components/select.component.js +107 -0
- package/src/lib/components/select.component.js.map +1 -0
- package/src/lib/components/switch.component.d.ts +38 -0
- package/src/lib/components/switch.component.js +76 -0
- package/src/lib/components/switch.component.js.map +1 -0
- package/src/lib/components/text-field.component.d.ts +45 -0
- package/src/lib/components/text-field.component.js +77 -0
- package/src/lib/components/text-field.component.js.map +1 -0
- package/src/lib/components/textarea.component.d.ts +45 -0
- package/src/lib/components/textarea.component.js +61 -0
- package/src/lib/components/textarea.component.js.map +1 -0
- package/src/lib/components/toggle-button.component.d.ts +27 -0
- package/src/lib/components/toggle-button.component.js +116 -0
- package/src/lib/components/toggle-button.component.js.map +1 -0
- package/src/lib/constants/component-mappers.d.ts +42 -0
- package/src/lib/constants/component-mappers.js +70 -0
- package/src/lib/constants/component-mappers.js.map +1 -0
- package/src/lib/constants/dynamic-fields.d.ts +45 -0
- package/src/lib/constants/dynamic-fields.js +65 -0
- package/src/lib/constants/dynamic-fields.js.map +1 -0
- package/src/lib/constants/field-configurations.d.ts +53 -0
- package/src/lib/constants/field-configurations.js +121 -0
- package/src/lib/constants/field-configurations.js.map +1 -0
- package/src/lib/constants/flags.d.ts +72 -0
- package/src/lib/constants/flags.js +69 -0
- package/src/lib/constants/flags.js.map +1 -0
- package/src/lib/hocs/with-grid-item.d.ts +25 -0
- package/src/lib/hocs/with-grid-item.js +48 -0
- package/src/lib/hocs/with-grid-item.js.map +1 -0
- package/src/lib/jsx-forms.d.ts +41 -0
- package/src/lib/jsx-forms.js +42 -0
- package/src/lib/jsx-forms.js.map +1 -0
- package/src/lib/mapper/breakpoint-span.d.ts +73 -0
- package/src/lib/mapper/breakpoint-span.js +346 -0
- package/src/lib/mapper/breakpoint-span.js.map +1 -0
- package/src/lib/mapper/checkbox.d.ts +43 -0
- package/src/lib/mapper/checkbox.js +111 -0
- package/src/lib/mapper/checkbox.js.map +1 -0
- package/src/lib/mapper/css-border.d.ts +113 -0
- package/src/lib/mapper/css-border.js +410 -0
- package/src/lib/mapper/css-border.js.map +1 -0
- package/src/lib/mapper/css-dimension.d.ts +89 -0
- package/src/lib/mapper/css-dimension.js +327 -0
- package/src/lib/mapper/css-dimension.js.map +1 -0
- package/src/lib/mapper/css-gradient.d.ts +110 -0
- package/src/lib/mapper/css-gradient.js +720 -0
- package/src/lib/mapper/css-gradient.js.map +1 -0
- package/src/lib/mapper/data-table.d.ts +23 -0
- package/src/lib/mapper/data-table.js +296 -0
- package/src/lib/mapper/data-table.js.map +1 -0
- package/src/lib/mapper/date-picker.d.ts +26 -0
- package/src/lib/mapper/date-picker.js +69 -0
- package/src/lib/mapper/date-picker.js.map +1 -0
- package/src/lib/mapper/dual-list-select.d.ts +115 -0
- package/src/lib/mapper/dual-list-select.js +353 -0
- package/src/lib/mapper/dual-list-select.js.map +1 -0
- package/src/lib/mapper/field-array.d.ts +71 -0
- package/src/lib/mapper/field-array.js +326 -0
- package/src/lib/mapper/field-array.js.map +1 -0
- package/src/lib/mapper/form-field-grid.d.ts +155 -0
- package/src/lib/mapper/form-field-grid.js +194 -0
- package/src/lib/mapper/form-field-grid.js.map +1 -0
- package/src/lib/mapper/index.d.ts +50 -0
- package/src/lib/mapper/index.js +49 -0
- package/src/lib/mapper/index.js.map +1 -0
- package/src/lib/mapper/multiple-choice-list.d.ts +32 -0
- package/src/lib/mapper/multiple-choice-list.js +105 -0
- package/src/lib/mapper/multiple-choice-list.js.map +1 -0
- package/src/lib/mapper/plain-text.d.ts +31 -0
- package/src/lib/mapper/plain-text.js +48 -0
- package/src/lib/mapper/plain-text.js.map +1 -0
- package/src/lib/mapper/preset-choice.d.ts +106 -0
- package/src/lib/mapper/preset-choice.js +267 -0
- package/src/lib/mapper/preset-choice.js.map +1 -0
- package/src/lib/mapper/radio.d.ts +40 -0
- package/src/lib/mapper/radio.js +122 -0
- package/src/lib/mapper/radio.js.map +1 -0
- package/src/lib/mapper/select.d.ts +60 -0
- package/src/lib/mapper/select.js +203 -0
- package/src/lib/mapper/select.js.map +1 -0
- package/src/lib/mapper/slider.d.ts +45 -0
- package/src/lib/mapper/slider.js +119 -0
- package/src/lib/mapper/slider.js.map +1 -0
- package/src/lib/mapper/stored-field-value.d.ts +23 -0
- package/src/lib/mapper/stored-field-value.js +29 -0
- package/src/lib/mapper/stored-field-value.js.map +1 -0
- package/src/lib/mapper/sub-form.d.ts +39 -0
- package/src/lib/mapper/sub-form.js +108 -0
- package/src/lib/mapper/sub-form.js.map +1 -0
- package/src/lib/mapper/switch.d.ts +47 -0
- package/src/lib/mapper/switch.js +93 -0
- package/src/lib/mapper/switch.js.map +1 -0
- package/src/lib/mapper/tabs.d.ts +34 -0
- package/src/lib/mapper/tabs.js +64 -0
- package/src/lib/mapper/tabs.js.map +1 -0
- package/src/lib/mapper/text-field.d.ts +33 -0
- package/src/lib/mapper/text-field.js +88 -0
- package/src/lib/mapper/text-field.js.map +1 -0
- package/src/lib/mapper/textarea.d.ts +31 -0
- package/src/lib/mapper/textarea.js +68 -0
- package/src/lib/mapper/textarea.js.map +1 -0
- package/src/lib/mapper/theme-scale.d.ts +79 -0
- package/src/lib/mapper/theme-scale.js +162 -0
- package/src/lib/mapper/theme-scale.js.map +1 -0
- package/src/lib/mapper/time-picker.d.ts +26 -0
- package/src/lib/mapper/time-picker.js +69 -0
- package/src/lib/mapper/time-picker.js.map +1 -0
- package/src/lib/mapper/types.d.ts +43 -0
- package/src/lib/mapper/types.js +22 -0
- package/src/lib/mapper/types.js.map +1 -0
- package/src/lib/mapper/validation-error.d.ts +24 -0
- package/src/lib/mapper/validation-error.js +24 -0
- package/src/lib/mapper/validation-error.js.map +1 -0
- package/src/lib/mapper/wizard.d.ts +21 -0
- package/src/lib/mapper/wizard.js +203 -0
- package/src/lib/mapper/wizard.js.map +1 -0
- package/src/lib/types.d.ts +19 -0
- package/src/lib/types.js +18 -0
- package/src/lib/types.js.map +1 -0
- package/src/lib/utils/option-is-equal-to-value.d.ts +20 -0
- package/src/lib/utils/option-is-equal-to-value.js +21 -0
- package/src/lib/utils/option-is-equal-to-value.js.map +1 -0
- package/src/lib/utils/validation-message.d.ts +22 -0
- package/src/lib/utils/validation-message.js +24 -0
- package/src/lib/utils/validation-message.js.map +1 -0
- package/src/lib/vendor/data-driven-forms.d.ts +33 -0
- package/src/lib/vendor/data-driven-forms.js +29 -0
- package/src/lib/vendor/data-driven-forms.js.map +1 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Ported from `@data-driven-forms/mui-component-mapper` (Apache-2.0) and
|
|
19
|
+
* updated for the current MUI APIs (Grid `size`, `ListItemButton` instead of
|
|
20
|
+
* the removed `ListItem button` prop).
|
|
21
|
+
*/
|
|
22
|
+
import type { HelpTipContent } from '@aglyn/shared-ui-jsx';
|
|
23
|
+
import { type ButtonProps, type FormControlProps, type FormHelperTextProps, type FormLabelProps, type GridProps, type IconButtonProps, type ListItemButtonProps, type ListItemIconProps, type ListItemTextProps, type ListProps, type PaperProps, type TextFieldProps, type ToolbarProps, type TypographyProps } from '@mui/material';
|
|
24
|
+
import { type ExtendedFieldMeta } from './validation-error';
|
|
25
|
+
export interface DualListSelectProps {
|
|
26
|
+
handleOptionsClick: (e: any, value: any) => void;
|
|
27
|
+
rightValues: any[];
|
|
28
|
+
noValueTitle?: string;
|
|
29
|
+
filterValueText?: string;
|
|
30
|
+
leftValues: any[];
|
|
31
|
+
noOptionsTitle?: string;
|
|
32
|
+
state: any;
|
|
33
|
+
filterOptionsText?: string;
|
|
34
|
+
handleValuesClick: (e: any, value: any) => void;
|
|
35
|
+
handleMoveRight: () => void;
|
|
36
|
+
moveRightTitle?: string;
|
|
37
|
+
handleClearLeftValues: () => void;
|
|
38
|
+
moveAllRightTitle?: string;
|
|
39
|
+
handleClearRightValues: () => void;
|
|
40
|
+
moveAllLeftTitle?: string;
|
|
41
|
+
handleMoveLeft: () => void;
|
|
42
|
+
moveLeftTitle?: string;
|
|
43
|
+
allToRight?: boolean;
|
|
44
|
+
allToLeft?: boolean;
|
|
45
|
+
checkboxVariant?: boolean;
|
|
46
|
+
isRequired?: boolean;
|
|
47
|
+
meta: ExtendedFieldMeta;
|
|
48
|
+
validateOnMount?: boolean;
|
|
49
|
+
label?: string;
|
|
50
|
+
helperText?: string;
|
|
51
|
+
description?: string;
|
|
52
|
+
filterOptionsTitle?: string;
|
|
53
|
+
leftTitle?: string;
|
|
54
|
+
filterOptions: (value: string) => void;
|
|
55
|
+
sortOptions: () => void;
|
|
56
|
+
sortValues: () => void;
|
|
57
|
+
filterValueTitle?: string;
|
|
58
|
+
filterValues: (value: string) => void;
|
|
59
|
+
rightTitle?: string;
|
|
60
|
+
isFilterable?: boolean;
|
|
61
|
+
/** Contextual help tooltip rendered at the field's top-right (AGL-601). */
|
|
62
|
+
help?: HelpTipContent;
|
|
63
|
+
FormFieldGridProps?: any;
|
|
64
|
+
InternalGridProps?: GridProps;
|
|
65
|
+
ListGridProps?: GridProps;
|
|
66
|
+
LeftListGridProps?: GridProps;
|
|
67
|
+
ListProps?: ListProps;
|
|
68
|
+
LeftListProps?: ListProps;
|
|
69
|
+
ButtonsGridProps?: GridProps;
|
|
70
|
+
ButtonsInternalGridProps?: GridProps;
|
|
71
|
+
ButtonGridProps?: GridProps;
|
|
72
|
+
ToRightGridProps?: GridProps;
|
|
73
|
+
IconButtonProps?: ButtonProps;
|
|
74
|
+
ToRightIconButtonProps?: ButtonProps;
|
|
75
|
+
AllToRightGridProps?: GridProps;
|
|
76
|
+
AllToRightIconButtonProps?: ButtonProps;
|
|
77
|
+
AllToLeftGridProps?: GridProps;
|
|
78
|
+
AllToLeftIconButtonProps?: ButtonProps;
|
|
79
|
+
ToLeftGridProps?: GridProps;
|
|
80
|
+
ToLeftIconButtonProps?: ButtonProps;
|
|
81
|
+
RightListGridProps?: GridProps;
|
|
82
|
+
RightListProps?: ListProps;
|
|
83
|
+
ListItemProps?: ListItemButtonProps;
|
|
84
|
+
ListItemIconProps?: ListItemIconProps;
|
|
85
|
+
ListItemTextProps?: ListItemTextProps;
|
|
86
|
+
LeftListItemProps?: ListItemButtonProps;
|
|
87
|
+
LeftListItemIconProps?: ListItemIconProps;
|
|
88
|
+
LeftItemTextProps?: ListItemTextProps;
|
|
89
|
+
RightListItemProps?: ListItemButtonProps;
|
|
90
|
+
RightListItemIconProps?: ListItemIconProps;
|
|
91
|
+
RightItemTextProps?: ListItemTextProps;
|
|
92
|
+
FormControlProps?: FormControlProps;
|
|
93
|
+
FormLabelProps?: FormLabelProps;
|
|
94
|
+
FormHelperTextProps?: FormHelperTextProps;
|
|
95
|
+
TitleProps?: TypographyProps;
|
|
96
|
+
ToolbarProps?: ToolbarProps;
|
|
97
|
+
FilterFieldProps?: TextFieldProps;
|
|
98
|
+
SortIconButtonProps?: IconButtonProps;
|
|
99
|
+
SortIconProps?: any;
|
|
100
|
+
LeftToolbarProps?: ToolbarProps;
|
|
101
|
+
LeftFilterFieldProps?: TextFieldProps;
|
|
102
|
+
LeftSortIconButtonProps?: IconButtonProps;
|
|
103
|
+
LeftSortIconProps?: any;
|
|
104
|
+
LeftTitleProps?: TypographyProps;
|
|
105
|
+
RightToolbarProps?: ToolbarProps;
|
|
106
|
+
RightFilterFieldProps?: TextFieldProps;
|
|
107
|
+
RightSortIconButtonProps?: IconButtonProps;
|
|
108
|
+
RightSortIconProps?: any;
|
|
109
|
+
RightTitleProps?: TypographyProps;
|
|
110
|
+
PaperProps?: PaperProps;
|
|
111
|
+
LeftPaperProps?: PaperProps;
|
|
112
|
+
RightPaperProps?: PaperProps;
|
|
113
|
+
}
|
|
114
|
+
export declare const DualListSelectWrapper: (props: any) => import("react").JSX.Element;
|
|
115
|
+
export default DualListSelectWrapper;
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ /**
|
|
17
|
+
* Ported from `@data-driven-forms/mui-component-mapper` (Apache-2.0) and
|
|
18
|
+
* updated for the current MUI APIs (Grid `size`, `ListItemButton` instead of
|
|
19
|
+
* the removed `ListItem button` prop).
|
|
20
|
+
*/ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
21
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
import { Button, Checkbox, FormControl, FormHelperText, FormLabel, Grid, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Paper, TextField, Toolbar, Typography } from "@mui/material";
|
|
23
|
+
import { styled } from "@mui/material/styles";
|
|
24
|
+
import SortIcon from "@mui/icons-material/ArrowUpward";
|
|
25
|
+
import clsx from "clsx";
|
|
26
|
+
import DualListSelectCommon from "@data-driven-forms/common/dual-list-select";
|
|
27
|
+
import FormFieldGrid from "./form-field-grid.js";
|
|
28
|
+
import { validationError } from "./validation-error.js";
|
|
29
|
+
const PREFIX = 'DualListSelectWrapper';
|
|
30
|
+
const classes = {
|
|
31
|
+
allToLeftIcon: `${PREFIX}-allToLeftIcon`,
|
|
32
|
+
upsideDown: `${PREFIX}-upsideDown`,
|
|
33
|
+
list: `${PREFIX}-list`,
|
|
34
|
+
button: `${PREFIX}-button`,
|
|
35
|
+
buttonsGrid: `${PREFIX}-buttonsGrid`,
|
|
36
|
+
filter: `${PREFIX}-filter`,
|
|
37
|
+
toolbar: `${PREFIX}-toolbar`
|
|
38
|
+
};
|
|
39
|
+
const StyledDualListSelect = styled(FormFieldGrid)(({ theme })=>({
|
|
40
|
+
[`& .${classes.allToLeftIcon}`]: {
|
|
41
|
+
transform: 'scaleX(-1)'
|
|
42
|
+
},
|
|
43
|
+
[`& .${classes.upsideDown}`]: {
|
|
44
|
+
transform: 'scaleY(-1)'
|
|
45
|
+
},
|
|
46
|
+
[`& .${classes.list}`]: {
|
|
47
|
+
height: 300,
|
|
48
|
+
overflow: 'auto'
|
|
49
|
+
},
|
|
50
|
+
[`& .${classes.button}`]: {
|
|
51
|
+
display: 'flex',
|
|
52
|
+
justifyContent: 'center',
|
|
53
|
+
margin: theme.spacing(0.5, 0)
|
|
54
|
+
},
|
|
55
|
+
[`& .${classes.buttonsGrid}`]: {
|
|
56
|
+
height: '100%',
|
|
57
|
+
alignContent: 'center'
|
|
58
|
+
},
|
|
59
|
+
[`& .${classes.filter}`]: {
|
|
60
|
+
width: '100%'
|
|
61
|
+
},
|
|
62
|
+
[`& .${classes.toolbar}`]: {
|
|
63
|
+
paddingLeft: 16,
|
|
64
|
+
paddingRight: 16
|
|
65
|
+
}
|
|
66
|
+
}));
|
|
67
|
+
const ListInternal = ({ value = [], optionClick, noOptionsTitle, filterValue, filterValueText, selectedValues, ListProps = {}, ListItemProps, ListItemIconProps, ListItemTextProps, checkboxVariant, PaperProps, LeftPaperProps })=>/*#__PURE__*/ _jsx(Paper, _extends({}, PaperProps, LeftPaperProps, {
|
|
68
|
+
className: clsx(PaperProps && PaperProps.className, LeftPaperProps && LeftPaperProps.className),
|
|
69
|
+
children: /*#__PURE__*/ _jsxs(List, _extends({
|
|
70
|
+
component: "div",
|
|
71
|
+
role: "list",
|
|
72
|
+
dense: true
|
|
73
|
+
}, ListProps, {
|
|
74
|
+
className: clsx(classes.list, ListProps.className),
|
|
75
|
+
children: [
|
|
76
|
+
value.length < 1 && /*#__PURE__*/ _jsx(ListItemButton, _extends({
|
|
77
|
+
disabled: true
|
|
78
|
+
}, ListItemProps, {
|
|
79
|
+
children: /*#__PURE__*/ _jsx(ListItemText, {
|
|
80
|
+
primary: filterValue ? filterValueText : noOptionsTitle
|
|
81
|
+
})
|
|
82
|
+
})),
|
|
83
|
+
value.length > 0 && value.map(({ value, label, icon, isCheckbox, secondaryActions, ListItemProps: ListItemPropsItem, ListItemIconProps: ListItemIconPropsItem, ListItemTextProps: ListItemTextPropsItem })=>/*#__PURE__*/ _jsx(ListItem, _extends({
|
|
84
|
+
disablePadding: true
|
|
85
|
+
}, secondaryActions && {
|
|
86
|
+
secondaryAction: secondaryActions
|
|
87
|
+
}, {
|
|
88
|
+
children: /*#__PURE__*/ _jsxs(ListItemButton, _extends({
|
|
89
|
+
selected: selectedValues.includes(value),
|
|
90
|
+
onClick: (e)=>optionClick(isCheckbox || checkboxVariant ? _extends({}, e, {
|
|
91
|
+
ctrlKey: true
|
|
92
|
+
}) : e, value),
|
|
93
|
+
sx: {
|
|
94
|
+
cursor: 'pointer'
|
|
95
|
+
}
|
|
96
|
+
}, ListItemProps, ListItemPropsItem, {
|
|
97
|
+
children: [
|
|
98
|
+
(icon || isCheckbox || checkboxVariant) && /*#__PURE__*/ _jsx(ListItemIcon, _extends({}, ListItemIconProps, ListItemIconPropsItem, {
|
|
99
|
+
children: isCheckbox || checkboxVariant ? /*#__PURE__*/ _jsx(Checkbox, {
|
|
100
|
+
edge: "start",
|
|
101
|
+
checked: selectedValues.includes(value),
|
|
102
|
+
tabIndex: -1,
|
|
103
|
+
disableRipple: true
|
|
104
|
+
}) : icon
|
|
105
|
+
})),
|
|
106
|
+
/*#__PURE__*/ _jsx(ListItemText, _extends({
|
|
107
|
+
primary: label
|
|
108
|
+
}, ListItemTextProps, ListItemTextPropsItem))
|
|
109
|
+
]
|
|
110
|
+
}))
|
|
111
|
+
}), value))
|
|
112
|
+
]
|
|
113
|
+
}))
|
|
114
|
+
}));
|
|
115
|
+
const ToolbarInternal = ({ ToolbarProps, LeftToolbarProps, filterOptions, filterOptionsTitle, FilterFieldProps, sortOptions, SortIconButtonProps, SortIconProps, LeftSortIconProps, LeftFilterFieldProps, LeftSortIconButtonProps, filter, sortDesc, isValue = false })=>/*#__PURE__*/ _jsxs(Toolbar, _extends({
|
|
116
|
+
variant: "dense"
|
|
117
|
+
}, ToolbarProps, LeftToolbarProps, {
|
|
118
|
+
className: clsx(classes.toolbar, ToolbarProps && ToolbarProps.className, LeftToolbarProps && LeftToolbarProps.className),
|
|
119
|
+
children: [
|
|
120
|
+
/*#__PURE__*/ _jsx(TextField, _extends({
|
|
121
|
+
"aria-label": isValue ? 'value-search' : 'options-search',
|
|
122
|
+
label: filterOptionsTitle,
|
|
123
|
+
onChange: ({ target: { value } })=>filterOptions(value),
|
|
124
|
+
value: filter,
|
|
125
|
+
type: "search"
|
|
126
|
+
}, FilterFieldProps, LeftFilterFieldProps, {
|
|
127
|
+
className: clsx(classes.filter, FilterFieldProps && FilterFieldProps.className, LeftFilterFieldProps && LeftFilterFieldProps.className)
|
|
128
|
+
})),
|
|
129
|
+
/*#__PURE__*/ _jsx(IconButton, _extends({
|
|
130
|
+
"aria-label": isValue ? 'sort value' : 'sort options',
|
|
131
|
+
edge: "end",
|
|
132
|
+
onClick: sortOptions,
|
|
133
|
+
color: "inherit"
|
|
134
|
+
}, SortIconButtonProps, LeftSortIconButtonProps, {
|
|
135
|
+
size: "large",
|
|
136
|
+
children: /*#__PURE__*/ _jsx(SortIcon, _extends({}, SortIconProps, LeftSortIconProps, {
|
|
137
|
+
className: clsx(!sortDesc && classes.upsideDown, SortIconProps && SortIconProps.className, LeftSortIconProps && LeftSortIconProps.className)
|
|
138
|
+
}))
|
|
139
|
+
}))
|
|
140
|
+
]
|
|
141
|
+
}));
|
|
142
|
+
const DualListSelect = ({ handleOptionsClick, rightValues, noValueTitle = 'No selected', filterValueText = 'Remove your filter to see all selected', leftValues, noOptionsTitle = 'No available options', state, filterOptionsText = 'Remove your filter to see all options', handleValuesClick, handleMoveRight, moveRightTitle = 'Move selected to right', handleClearLeftValues, moveAllRightTitle = 'Move all to right', handleClearRightValues, moveAllLeftTitle = 'Move all to left', handleMoveLeft, moveLeftTitle = 'Move selected to left', allToRight = true, allToLeft = true, checkboxVariant, isRequired, meta, validateOnMount, label, helperText, description, filterOptionsTitle = 'Filter options', leftTitle = 'Options', filterOptions, sortOptions, sortValues, filterValueTitle = 'Filter selected value', filterValues, rightTitle = 'Selected', isFilterable = true, help, // Props
|
|
143
|
+
FormFieldGridProps, InternalGridProps, ListGridProps, LeftListGridProps, ListProps, LeftListProps, ButtonsGridProps, ButtonsInternalGridProps, ButtonGridProps, ToRightGridProps, IconButtonProps, ToRightIconButtonProps, AllToRightGridProps, AllToRightIconButtonProps, AllToLeftGridProps, AllToLeftIconButtonProps, ToLeftGridProps, ToLeftIconButtonProps, RightListGridProps, RightListProps, ListItemProps, ListItemIconProps, ListItemTextProps, LeftListItemProps, LeftListItemIconProps, LeftItemTextProps, RightListItemProps, RightListItemIconProps, RightItemTextProps, FormControlProps, FormLabelProps, FormHelperTextProps, TitleProps, ToolbarProps, FilterFieldProps, SortIconButtonProps, SortIconProps, LeftToolbarProps, LeftFilterFieldProps, LeftSortIconButtonProps, LeftSortIconProps, LeftTitleProps, RightToolbarProps, RightFilterFieldProps, RightSortIconButtonProps, RightSortIconProps, RightTitleProps, PaperProps, LeftPaperProps, RightPaperProps })=>{
|
|
144
|
+
const invalid = validationError(meta, validateOnMount);
|
|
145
|
+
const text = invalid || (meta.touched || validateOnMount) && meta.warning || helperText || description;
|
|
146
|
+
return /*#__PURE__*/ _jsx(StyledDualListSelect, _extends({
|
|
147
|
+
help: help
|
|
148
|
+
}, FormFieldGridProps, {
|
|
149
|
+
children: /*#__PURE__*/ _jsxs(FormControl, _extends({
|
|
150
|
+
fullWidth: true,
|
|
151
|
+
required: isRequired,
|
|
152
|
+
error: !!invalid,
|
|
153
|
+
component: "fieldset"
|
|
154
|
+
}, FormControlProps, {
|
|
155
|
+
children: [
|
|
156
|
+
/*#__PURE__*/ _jsx(FormLabel, _extends({
|
|
157
|
+
component: "legend"
|
|
158
|
+
}, FormLabelProps, {
|
|
159
|
+
children: label
|
|
160
|
+
})),
|
|
161
|
+
/*#__PURE__*/ _jsxs(Grid, _extends({
|
|
162
|
+
container: true
|
|
163
|
+
}, InternalGridProps, {
|
|
164
|
+
children: [
|
|
165
|
+
/*#__PURE__*/ _jsxs(Grid, _extends({
|
|
166
|
+
size: {
|
|
167
|
+
xs: 12,
|
|
168
|
+
md: 5
|
|
169
|
+
}
|
|
170
|
+
}, ListGridProps, LeftListGridProps, {
|
|
171
|
+
children: [
|
|
172
|
+
leftTitle && /*#__PURE__*/ _jsx(Typography, _extends({
|
|
173
|
+
variant: "h6",
|
|
174
|
+
gutterBottom: true
|
|
175
|
+
}, TitleProps, LeftTitleProps, {
|
|
176
|
+
children: leftTitle
|
|
177
|
+
})),
|
|
178
|
+
isFilterable && /*#__PURE__*/ _jsx(ToolbarInternal, {
|
|
179
|
+
ToolbarProps: ToolbarProps,
|
|
180
|
+
LeftToolbarProps: LeftToolbarProps,
|
|
181
|
+
filterOptions: filterOptions,
|
|
182
|
+
filterOptionsTitle: filterOptionsTitle,
|
|
183
|
+
FilterFieldProps: FilterFieldProps,
|
|
184
|
+
sortOptions: sortOptions,
|
|
185
|
+
SortIconButtonProps: SortIconButtonProps,
|
|
186
|
+
SortIconProps: SortIconProps,
|
|
187
|
+
LeftSortIconProps: LeftSortIconProps,
|
|
188
|
+
LeftFilterFieldProps: LeftFilterFieldProps,
|
|
189
|
+
LeftSortIconButtonProps: LeftSortIconButtonProps,
|
|
190
|
+
filter: state.filterOptions,
|
|
191
|
+
sortDesc: state.sortLeftDesc
|
|
192
|
+
}),
|
|
193
|
+
/*#__PURE__*/ _jsx(ListInternal, {
|
|
194
|
+
optionClick: handleOptionsClick,
|
|
195
|
+
value: leftValues,
|
|
196
|
+
noOptionsTitle: noOptionsTitle,
|
|
197
|
+
filterValue: state.filterOptions,
|
|
198
|
+
filterValueText: filterOptionsText,
|
|
199
|
+
selectedValues: state.selectedLeftValues,
|
|
200
|
+
checkboxVariant: checkboxVariant,
|
|
201
|
+
ListProps: _extends({}, ListProps, LeftListProps),
|
|
202
|
+
ListItemProps: _extends({}, ListItemProps, LeftListItemProps),
|
|
203
|
+
ListItemIconProps: _extends({}, ListItemIconProps, LeftListItemIconProps),
|
|
204
|
+
ListItemTextProps: _extends({}, ListItemTextProps, LeftItemTextProps),
|
|
205
|
+
PaperProps: PaperProps,
|
|
206
|
+
LeftPaperProps: LeftPaperProps
|
|
207
|
+
})
|
|
208
|
+
]
|
|
209
|
+
})),
|
|
210
|
+
/*#__PURE__*/ _jsx(Grid, _extends({
|
|
211
|
+
size: {
|
|
212
|
+
xs: 12,
|
|
213
|
+
md: 2
|
|
214
|
+
}
|
|
215
|
+
}, ButtonsGridProps, {
|
|
216
|
+
children: /*#__PURE__*/ _jsxs(Grid, _extends({
|
|
217
|
+
container: true
|
|
218
|
+
}, ButtonsInternalGridProps, {
|
|
219
|
+
className: clsx(classes.buttonsGrid, ButtonsInternalGridProps && ButtonsInternalGridProps.className),
|
|
220
|
+
children: [
|
|
221
|
+
allToRight && /*#__PURE__*/ _jsx(Grid, _extends({
|
|
222
|
+
size: {
|
|
223
|
+
md: 12,
|
|
224
|
+
sm: 3
|
|
225
|
+
}
|
|
226
|
+
}, ButtonGridProps, AllToRightGridProps, {
|
|
227
|
+
className: clsx(classes.button, ButtonGridProps && ButtonGridProps.className, AllToRightGridProps && AllToRightGridProps.className),
|
|
228
|
+
children: /*#__PURE__*/ _jsx(Button, _extends({
|
|
229
|
+
variant: "outlined",
|
|
230
|
+
size: "small",
|
|
231
|
+
disabled: leftValues.length === 0,
|
|
232
|
+
onClick: handleClearLeftValues,
|
|
233
|
+
"aria-label": moveAllRightTitle
|
|
234
|
+
}, IconButtonProps, AllToRightIconButtonProps, {
|
|
235
|
+
children: "≫"
|
|
236
|
+
}))
|
|
237
|
+
})),
|
|
238
|
+
/*#__PURE__*/ _jsx(Grid, _extends({
|
|
239
|
+
size: {
|
|
240
|
+
md: 12,
|
|
241
|
+
sm: 3
|
|
242
|
+
}
|
|
243
|
+
}, ButtonGridProps, ToRightGridProps, {
|
|
244
|
+
className: clsx(classes.button, ButtonGridProps && ButtonGridProps.className, ToRightGridProps && ToRightGridProps.className),
|
|
245
|
+
children: /*#__PURE__*/ _jsx(Button, _extends({
|
|
246
|
+
variant: "outlined",
|
|
247
|
+
size: "small",
|
|
248
|
+
disabled: leftValues.length === 0,
|
|
249
|
+
onClick: handleMoveRight,
|
|
250
|
+
"aria-label": moveRightTitle
|
|
251
|
+
}, IconButtonProps, ToRightIconButtonProps, {
|
|
252
|
+
children: ">"
|
|
253
|
+
}))
|
|
254
|
+
})),
|
|
255
|
+
/*#__PURE__*/ _jsx(Grid, _extends({
|
|
256
|
+
size: {
|
|
257
|
+
md: 12,
|
|
258
|
+
sm: 3
|
|
259
|
+
}
|
|
260
|
+
}, ButtonGridProps, ToLeftGridProps, {
|
|
261
|
+
className: clsx(classes.button, ButtonGridProps && ButtonGridProps.className, ToLeftGridProps && ToLeftGridProps.className),
|
|
262
|
+
children: /*#__PURE__*/ _jsx(Button, _extends({
|
|
263
|
+
variant: "outlined",
|
|
264
|
+
size: "small",
|
|
265
|
+
disabled: rightValues.length === 0,
|
|
266
|
+
onClick: handleMoveLeft,
|
|
267
|
+
"aria-label": moveLeftTitle
|
|
268
|
+
}, IconButtonProps, ToLeftIconButtonProps, {
|
|
269
|
+
children: "<"
|
|
270
|
+
}))
|
|
271
|
+
})),
|
|
272
|
+
allToLeft && /*#__PURE__*/ _jsx(Grid, _extends({
|
|
273
|
+
size: {
|
|
274
|
+
md: 12,
|
|
275
|
+
sm: 3
|
|
276
|
+
}
|
|
277
|
+
}, ButtonGridProps, AllToLeftGridProps, {
|
|
278
|
+
className: clsx(classes.button, ButtonGridProps && ButtonGridProps.className, AllToLeftGridProps && AllToLeftGridProps.className),
|
|
279
|
+
children: /*#__PURE__*/ _jsx(Button, _extends({
|
|
280
|
+
variant: "outlined",
|
|
281
|
+
size: "small",
|
|
282
|
+
disabled: rightValues.length === 0,
|
|
283
|
+
onClick: handleClearRightValues,
|
|
284
|
+
"aria-label": moveAllLeftTitle
|
|
285
|
+
}, IconButtonProps, AllToLeftIconButtonProps, {
|
|
286
|
+
children: "≪"
|
|
287
|
+
}))
|
|
288
|
+
}))
|
|
289
|
+
]
|
|
290
|
+
}))
|
|
291
|
+
})),
|
|
292
|
+
/*#__PURE__*/ _jsxs(Grid, _extends({
|
|
293
|
+
size: {
|
|
294
|
+
xs: 12,
|
|
295
|
+
md: 5
|
|
296
|
+
}
|
|
297
|
+
}, ListGridProps, RightListGridProps, {
|
|
298
|
+
children: [
|
|
299
|
+
rightTitle && /*#__PURE__*/ _jsx(Typography, _extends({
|
|
300
|
+
variant: "h6",
|
|
301
|
+
gutterBottom: true
|
|
302
|
+
}, TitleProps, RightTitleProps, {
|
|
303
|
+
children: rightTitle
|
|
304
|
+
})),
|
|
305
|
+
isFilterable && /*#__PURE__*/ _jsx(ToolbarInternal, {
|
|
306
|
+
ToolbarProps: ToolbarProps,
|
|
307
|
+
LeftToolbarProps: RightToolbarProps,
|
|
308
|
+
filterOptions: filterValues,
|
|
309
|
+
filterOptionsTitle: filterValueTitle,
|
|
310
|
+
FilterFieldProps: FilterFieldProps,
|
|
311
|
+
sortOptions: sortValues,
|
|
312
|
+
SortIconButtonProps: SortIconButtonProps,
|
|
313
|
+
SortIconProps: SortIconProps,
|
|
314
|
+
LeftSortIconProps: RightSortIconProps,
|
|
315
|
+
LeftFilterFieldProps: RightFilterFieldProps,
|
|
316
|
+
LeftSortIconButtonProps: RightSortIconButtonProps,
|
|
317
|
+
filter: state.filterValue,
|
|
318
|
+
sortDesc: state.sortRightDesc,
|
|
319
|
+
isValue: true
|
|
320
|
+
}),
|
|
321
|
+
/*#__PURE__*/ _jsx(ListInternal, {
|
|
322
|
+
checkboxVariant: checkboxVariant,
|
|
323
|
+
optionClick: handleValuesClick,
|
|
324
|
+
value: rightValues,
|
|
325
|
+
noOptionsTitle: noValueTitle,
|
|
326
|
+
filterValue: state.filterValue,
|
|
327
|
+
filterValueText: filterValueText,
|
|
328
|
+
selectedValues: state.selectedRightValues,
|
|
329
|
+
ListProps: _extends({}, ListProps, RightListProps),
|
|
330
|
+
ListItemProps: _extends({}, ListItemProps, RightListItemProps),
|
|
331
|
+
ListItemIconProps: _extends({}, ListItemIconProps, RightListItemIconProps),
|
|
332
|
+
ListItemTextProps: _extends({}, ListItemTextProps, RightItemTextProps),
|
|
333
|
+
PaperProps: PaperProps,
|
|
334
|
+
LeftPaperProps: RightPaperProps
|
|
335
|
+
})
|
|
336
|
+
]
|
|
337
|
+
}))
|
|
338
|
+
]
|
|
339
|
+
})),
|
|
340
|
+
text && /*#__PURE__*/ _jsx(FormHelperText, _extends({}, FormHelperTextProps, {
|
|
341
|
+
children: text
|
|
342
|
+
}))
|
|
343
|
+
]
|
|
344
|
+
}))
|
|
345
|
+
}));
|
|
346
|
+
};
|
|
347
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
348
|
+
export const DualListSelectWrapper = (props)=>/*#__PURE__*/ _jsx(DualListSelectCommon, _extends({}, props, {
|
|
349
|
+
DualListSelect: DualListSelect
|
|
350
|
+
}));
|
|
351
|
+
export default DualListSelectWrapper;
|
|
352
|
+
|
|
353
|
+
//# sourceMappingURL=dual-list-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx-forms/src/lib/mapper/dual-list-select.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Ported from `@data-driven-forms/mui-component-mapper` (Apache-2.0) and\n * updated for the current MUI APIs (Grid `size`, `ListItemButton` instead of\n * the removed `ListItem button` prop).\n */\n\nimport type { HelpTipContent } from '@aglyn/shared-ui-jsx'\nimport type { ReactNode } from 'react'\n\nimport {\n Button,\n type ButtonProps,\n Checkbox,\n FormControl,\n type FormControlProps,\n FormHelperText,\n type FormHelperTextProps,\n FormLabel,\n type FormLabelProps,\n Grid,\n type GridProps,\n IconButton,\n type IconButtonProps,\n List,\n ListItem,\n ListItemButton,\n type ListItemButtonProps,\n ListItemIcon,\n type ListItemIconProps,\n ListItemText,\n type ListItemTextProps,\n type ListProps,\n Paper,\n type PaperProps,\n TextField,\n type TextFieldProps,\n Toolbar,\n type ToolbarProps,\n Typography,\n type TypographyProps,\n} from '@mui/material'\nimport { styled } from '@mui/material/styles'\n\nimport SortIcon from '@mui/icons-material/ArrowUpward'\n\nimport clsx from 'clsx'\n\nimport DualListSelectCommon from '@data-driven-forms/common/dual-list-select'\n\nimport FormFieldGrid from './form-field-grid'\nimport { type ExtendedFieldMeta, validationError } from './validation-error'\n\nconst PREFIX = 'DualListSelectWrapper'\n\nconst classes = {\n allToLeftIcon: `${PREFIX}-allToLeftIcon`,\n upsideDown: `${PREFIX}-upsideDown`,\n list: `${PREFIX}-list`,\n button: `${PREFIX}-button`,\n buttonsGrid: `${PREFIX}-buttonsGrid`,\n filter: `${PREFIX}-filter`,\n toolbar: `${PREFIX}-toolbar`,\n}\n\nconst StyledDualListSelect = styled(FormFieldGrid)(({ theme }) => ({\n [`& .${classes.allToLeftIcon}`]: {\n transform: 'scaleX(-1)',\n },\n\n [`& .${classes.upsideDown}`]: {\n transform: 'scaleY(-1)',\n },\n\n [`& .${classes.list}`]: {\n height: 300,\n overflow: 'auto',\n },\n\n [`& .${classes.button}`]: {\n display: 'flex',\n justifyContent: 'center',\n margin: theme.spacing(0.5, 0),\n },\n\n [`& .${classes.buttonsGrid}`]: {\n height: '100%',\n alignContent: 'center',\n },\n\n [`& .${classes.filter}`]: {\n width: '100%',\n },\n\n [`& .${classes.toolbar}`]: {\n paddingLeft: 16,\n paddingRight: 16,\n },\n}))\n\ninterface ListOption {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any\n label: string\n icon?: ReactNode\n isCheckbox?: boolean\n secondaryActions?: ReactNode\n ListItemProps?: ListItemButtonProps\n ListItemIconProps?: ListItemIconProps\n ListItemTextProps?: ListItemTextProps\n}\n\ninterface ListInternalProps {\n value?: ListOption[]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n optionClick: (e: any, value: any) => void\n noOptionsTitle: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filterValue: any\n filterValueText: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n selectedValues: any[]\n ListProps?: ListProps\n ListItemProps?: ListItemButtonProps\n ListItemIconProps?: ListItemIconProps\n ListItemTextProps?: ListItemTextProps\n checkboxVariant?: boolean\n PaperProps?: PaperProps\n LeftPaperProps?: PaperProps\n}\n\nconst ListInternal = ({\n value = [],\n optionClick,\n noOptionsTitle,\n filterValue,\n filterValueText,\n selectedValues,\n ListProps = {},\n ListItemProps,\n ListItemIconProps,\n ListItemTextProps,\n checkboxVariant,\n PaperProps,\n LeftPaperProps,\n}: ListInternalProps) => (\n <Paper\n {...PaperProps}\n {...LeftPaperProps}\n className={clsx(\n PaperProps && PaperProps.className,\n LeftPaperProps && LeftPaperProps.className,\n )}\n >\n <List\n component=\"div\"\n role=\"list\"\n dense\n {...ListProps}\n className={clsx(classes.list, ListProps.className)}\n >\n {value.length < 1 && (\n <ListItemButton disabled {...ListItemProps}>\n <ListItemText primary={filterValue ? filterValueText : noOptionsTitle} />\n </ListItemButton>\n )}\n {value.length > 0 &&\n value.map(\n ({\n value,\n label,\n icon,\n isCheckbox,\n secondaryActions,\n ListItemProps: ListItemPropsItem,\n ListItemIconProps: ListItemIconPropsItem,\n ListItemTextProps: ListItemTextPropsItem,\n }) => (\n <ListItem\n key={value}\n disablePadding\n {...(secondaryActions && { secondaryAction: secondaryActions })}\n >\n <ListItemButton\n selected={selectedValues.includes(value)}\n onClick={(e) =>\n optionClick(\n isCheckbox || checkboxVariant ? { ...e, ctrlKey: true } : e,\n value,\n )\n }\n sx={{ cursor: 'pointer' }}\n {...ListItemProps}\n {...ListItemPropsItem}\n >\n {(icon || isCheckbox || checkboxVariant) && (\n <ListItemIcon {...ListItemIconProps} {...ListItemIconPropsItem}>\n {isCheckbox || checkboxVariant ? (\n <Checkbox\n edge=\"start\"\n checked={selectedValues.includes(value)}\n tabIndex={-1}\n disableRipple\n />\n ) : (\n icon\n )}\n </ListItemIcon>\n )}\n <ListItemText\n primary={label}\n {...ListItemTextProps}\n {...ListItemTextPropsItem}\n />\n </ListItemButton>\n </ListItem>\n ),\n )}\n </List>\n </Paper>\n)\n\ninterface ToolbarInternalProps {\n ToolbarProps?: ToolbarProps\n LeftToolbarProps?: ToolbarProps\n filterOptions: (value: string) => void\n filterOptionsTitle: string\n FilterFieldProps?: TextFieldProps\n sortOptions: () => void\n SortIconButtonProps?: IconButtonProps\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n SortIconProps?: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LeftSortIconProps?: any\n LeftFilterFieldProps?: TextFieldProps\n LeftSortIconButtonProps?: IconButtonProps\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filter: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sortDesc: any\n isValue?: boolean\n}\n\nconst ToolbarInternal = ({\n ToolbarProps,\n LeftToolbarProps,\n filterOptions,\n filterOptionsTitle,\n FilterFieldProps,\n sortOptions,\n SortIconButtonProps,\n SortIconProps,\n LeftSortIconProps,\n LeftFilterFieldProps,\n LeftSortIconButtonProps,\n filter,\n sortDesc,\n isValue = false,\n}: ToolbarInternalProps) => (\n <Toolbar\n variant=\"dense\"\n {...ToolbarProps}\n {...LeftToolbarProps}\n className={clsx(\n classes.toolbar,\n ToolbarProps && ToolbarProps.className,\n LeftToolbarProps && LeftToolbarProps.className,\n )}\n >\n <TextField\n aria-label={isValue ? 'value-search' : 'options-search'}\n label={filterOptionsTitle}\n onChange={({ target: { value } }) => filterOptions(value)}\n value={filter}\n type=\"search\"\n {...FilterFieldProps}\n {...LeftFilterFieldProps}\n className={clsx(\n classes.filter,\n FilterFieldProps && FilterFieldProps.className,\n LeftFilterFieldProps && LeftFilterFieldProps.className,\n )}\n />\n <IconButton\n aria-label={isValue ? 'sort value' : 'sort options'}\n edge=\"end\"\n onClick={sortOptions}\n color=\"inherit\"\n {...SortIconButtonProps}\n {...LeftSortIconButtonProps}\n size=\"large\"\n >\n <SortIcon\n {...SortIconProps}\n {...LeftSortIconProps}\n className={clsx(\n !sortDesc && classes.upsideDown,\n SortIconProps && SortIconProps.className,\n LeftSortIconProps && LeftSortIconProps.className,\n )}\n />\n </IconButton>\n </Toolbar>\n)\n\nexport interface DualListSelectProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handleOptionsClick: (e: any, value: any) => void\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rightValues: any[]\n noValueTitle?: string\n filterValueText?: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n leftValues: any[]\n noOptionsTitle?: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n state: any\n filterOptionsText?: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handleValuesClick: (e: any, value: any) => void\n handleMoveRight: () => void\n moveRightTitle?: string\n handleClearLeftValues: () => void\n moveAllRightTitle?: string\n handleClearRightValues: () => void\n moveAllLeftTitle?: string\n handleMoveLeft: () => void\n moveLeftTitle?: string\n allToRight?: boolean\n allToLeft?: boolean\n checkboxVariant?: boolean\n isRequired?: boolean\n meta: ExtendedFieldMeta\n validateOnMount?: boolean\n label?: string\n helperText?: string\n description?: string\n filterOptionsTitle?: string\n leftTitle?: string\n filterOptions: (value: string) => void\n sortOptions: () => void\n sortValues: () => void\n filterValueTitle?: string\n filterValues: (value: string) => void\n rightTitle?: string\n isFilterable?: boolean\n /** Contextual help tooltip rendered at the field's top-right (AGL-601). */\n help?: HelpTipContent\n // MUI component props\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n FormFieldGridProps?: any\n InternalGridProps?: GridProps\n ListGridProps?: GridProps\n LeftListGridProps?: GridProps\n ListProps?: ListProps\n LeftListProps?: ListProps\n ButtonsGridProps?: GridProps\n ButtonsInternalGridProps?: GridProps\n ButtonGridProps?: GridProps\n ToRightGridProps?: GridProps\n IconButtonProps?: ButtonProps\n ToRightIconButtonProps?: ButtonProps\n AllToRightGridProps?: GridProps\n AllToRightIconButtonProps?: ButtonProps\n AllToLeftGridProps?: GridProps\n AllToLeftIconButtonProps?: ButtonProps\n ToLeftGridProps?: GridProps\n ToLeftIconButtonProps?: ButtonProps\n RightListGridProps?: GridProps\n RightListProps?: ListProps\n ListItemProps?: ListItemButtonProps\n ListItemIconProps?: ListItemIconProps\n ListItemTextProps?: ListItemTextProps\n LeftListItemProps?: ListItemButtonProps\n LeftListItemIconProps?: ListItemIconProps\n LeftItemTextProps?: ListItemTextProps\n RightListItemProps?: ListItemButtonProps\n RightListItemIconProps?: ListItemIconProps\n RightItemTextProps?: ListItemTextProps\n FormControlProps?: FormControlProps\n FormLabelProps?: FormLabelProps\n FormHelperTextProps?: FormHelperTextProps\n TitleProps?: TypographyProps\n ToolbarProps?: ToolbarProps\n FilterFieldProps?: TextFieldProps\n SortIconButtonProps?: IconButtonProps\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n SortIconProps?: any\n LeftToolbarProps?: ToolbarProps\n LeftFilterFieldProps?: TextFieldProps\n LeftSortIconButtonProps?: IconButtonProps\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n LeftSortIconProps?: any\n LeftTitleProps?: TypographyProps\n RightToolbarProps?: ToolbarProps\n RightFilterFieldProps?: TextFieldProps\n RightSortIconButtonProps?: IconButtonProps\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RightSortIconProps?: any\n RightTitleProps?: TypographyProps\n PaperProps?: PaperProps\n LeftPaperProps?: PaperProps\n RightPaperProps?: PaperProps\n}\n\nconst DualListSelect = ({\n handleOptionsClick,\n rightValues,\n noValueTitle = 'No selected',\n filterValueText = 'Remove your filter to see all selected',\n leftValues,\n noOptionsTitle = 'No available options',\n state,\n filterOptionsText = 'Remove your filter to see all options',\n handleValuesClick,\n handleMoveRight,\n moveRightTitle = 'Move selected to right',\n handleClearLeftValues,\n moveAllRightTitle = 'Move all to right',\n handleClearRightValues,\n moveAllLeftTitle = 'Move all to left',\n handleMoveLeft,\n moveLeftTitle = 'Move selected to left',\n allToRight = true,\n allToLeft = true,\n checkboxVariant,\n isRequired,\n meta,\n validateOnMount,\n label,\n helperText,\n description,\n filterOptionsTitle = 'Filter options',\n leftTitle = 'Options',\n filterOptions,\n sortOptions,\n sortValues,\n filterValueTitle = 'Filter selected value',\n filterValues,\n rightTitle = 'Selected',\n isFilterable = true,\n help,\n // Props\n FormFieldGridProps,\n InternalGridProps,\n ListGridProps,\n LeftListGridProps,\n ListProps,\n LeftListProps,\n ButtonsGridProps,\n ButtonsInternalGridProps,\n ButtonGridProps,\n ToRightGridProps,\n IconButtonProps,\n ToRightIconButtonProps,\n AllToRightGridProps,\n AllToRightIconButtonProps,\n AllToLeftGridProps,\n AllToLeftIconButtonProps,\n ToLeftGridProps,\n ToLeftIconButtonProps,\n RightListGridProps,\n RightListProps,\n ListItemProps,\n ListItemIconProps,\n ListItemTextProps,\n LeftListItemProps,\n LeftListItemIconProps,\n LeftItemTextProps,\n RightListItemProps,\n RightListItemIconProps,\n RightItemTextProps,\n FormControlProps,\n FormLabelProps,\n FormHelperTextProps,\n TitleProps,\n ToolbarProps,\n FilterFieldProps,\n SortIconButtonProps,\n SortIconProps,\n LeftToolbarProps,\n LeftFilterFieldProps,\n LeftSortIconButtonProps,\n LeftSortIconProps,\n LeftTitleProps,\n RightToolbarProps,\n RightFilterFieldProps,\n RightSortIconButtonProps,\n RightSortIconProps,\n RightTitleProps,\n PaperProps,\n LeftPaperProps,\n RightPaperProps,\n}: DualListSelectProps) => {\n const invalid = validationError(meta, validateOnMount)\n const text =\n invalid ||\n ((meta.touched || validateOnMount) && meta.warning) ||\n helperText ||\n description\n\n return (\n <StyledDualListSelect help={help} {...FormFieldGridProps}>\n <FormControl\n fullWidth\n required={isRequired}\n error={!!invalid}\n component=\"fieldset\"\n {...FormControlProps}\n >\n <FormLabel component=\"legend\" {...FormLabelProps}>\n {label}\n </FormLabel>\n <Grid container {...InternalGridProps}>\n <Grid size={{ xs: 12, md: 5 }} {...ListGridProps} {...LeftListGridProps}>\n {leftTitle && (\n <Typography\n variant=\"h6\"\n gutterBottom\n {...TitleProps}\n {...LeftTitleProps}\n >\n {leftTitle}\n </Typography>\n )}\n {isFilterable && (\n <ToolbarInternal\n ToolbarProps={ToolbarProps}\n LeftToolbarProps={LeftToolbarProps}\n filterOptions={filterOptions}\n filterOptionsTitle={filterOptionsTitle}\n FilterFieldProps={FilterFieldProps}\n sortOptions={sortOptions}\n SortIconButtonProps={SortIconButtonProps}\n SortIconProps={SortIconProps}\n LeftSortIconProps={LeftSortIconProps}\n LeftFilterFieldProps={LeftFilterFieldProps}\n LeftSortIconButtonProps={LeftSortIconButtonProps}\n filter={state.filterOptions}\n sortDesc={state.sortLeftDesc}\n />\n )}\n <ListInternal\n optionClick={handleOptionsClick}\n value={leftValues}\n noOptionsTitle={noOptionsTitle}\n filterValue={state.filterOptions}\n filterValueText={filterOptionsText}\n selectedValues={state.selectedLeftValues}\n checkboxVariant={checkboxVariant}\n ListProps={{ ...ListProps, ...LeftListProps }}\n ListItemProps={{ ...ListItemProps, ...LeftListItemProps }}\n ListItemIconProps={{ ...ListItemIconProps, ...LeftListItemIconProps }}\n ListItemTextProps={{ ...ListItemTextProps, ...LeftItemTextProps }}\n PaperProps={PaperProps}\n LeftPaperProps={LeftPaperProps}\n />\n </Grid>\n <Grid size={{ xs: 12, md: 2 }} {...ButtonsGridProps}>\n <Grid\n container\n {...ButtonsInternalGridProps}\n className={clsx(\n classes.buttonsGrid,\n ButtonsInternalGridProps && ButtonsInternalGridProps.className,\n )}\n >\n {allToRight && (\n <Grid\n size={{ md: 12, sm: 3 }}\n {...ButtonGridProps}\n {...AllToRightGridProps}\n className={clsx(\n classes.button,\n ButtonGridProps && ButtonGridProps.className,\n AllToRightGridProps && AllToRightGridProps.className,\n )}\n >\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={leftValues.length === 0}\n onClick={handleClearLeftValues}\n aria-label={moveAllRightTitle}\n {...IconButtonProps}\n {...AllToRightIconButtonProps}\n >\n ≫\n </Button>\n </Grid>\n )}\n <Grid\n size={{ md: 12, sm: 3 }}\n {...ButtonGridProps}\n {...ToRightGridProps}\n className={clsx(\n classes.button,\n ButtonGridProps && ButtonGridProps.className,\n ToRightGridProps && ToRightGridProps.className,\n )}\n >\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={leftValues.length === 0}\n onClick={handleMoveRight}\n aria-label={moveRightTitle}\n {...IconButtonProps}\n {...ToRightIconButtonProps}\n >\n >\n </Button>\n </Grid>\n <Grid\n size={{ md: 12, sm: 3 }}\n {...ButtonGridProps}\n {...ToLeftGridProps}\n className={clsx(\n classes.button,\n ButtonGridProps && ButtonGridProps.className,\n ToLeftGridProps && ToLeftGridProps.className,\n )}\n >\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={rightValues.length === 0}\n onClick={handleMoveLeft}\n aria-label={moveLeftTitle}\n {...IconButtonProps}\n {...ToLeftIconButtonProps}\n >\n <\n </Button>\n </Grid>\n {allToLeft && (\n <Grid\n size={{ md: 12, sm: 3 }}\n {...ButtonGridProps}\n {...AllToLeftGridProps}\n className={clsx(\n classes.button,\n ButtonGridProps && ButtonGridProps.className,\n AllToLeftGridProps && AllToLeftGridProps.className,\n )}\n >\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={rightValues.length === 0}\n onClick={handleClearRightValues}\n aria-label={moveAllLeftTitle}\n {...IconButtonProps}\n {...AllToLeftIconButtonProps}\n >\n ≪\n </Button>\n </Grid>\n )}\n </Grid>\n </Grid>\n <Grid size={{ xs: 12, md: 5 }} {...ListGridProps} {...RightListGridProps}>\n {rightTitle && (\n <Typography\n variant=\"h6\"\n gutterBottom\n {...TitleProps}\n {...RightTitleProps}\n >\n {rightTitle}\n </Typography>\n )}\n {isFilterable && (\n <ToolbarInternal\n ToolbarProps={ToolbarProps}\n LeftToolbarProps={RightToolbarProps}\n filterOptions={filterValues}\n filterOptionsTitle={filterValueTitle}\n FilterFieldProps={FilterFieldProps}\n sortOptions={sortValues}\n SortIconButtonProps={SortIconButtonProps}\n SortIconProps={SortIconProps}\n LeftSortIconProps={RightSortIconProps}\n LeftFilterFieldProps={RightFilterFieldProps}\n LeftSortIconButtonProps={RightSortIconButtonProps}\n filter={state.filterValue}\n sortDesc={state.sortRightDesc}\n isValue\n />\n )}\n <ListInternal\n checkboxVariant={checkboxVariant}\n optionClick={handleValuesClick}\n value={rightValues}\n noOptionsTitle={noValueTitle}\n filterValue={state.filterValue}\n filterValueText={filterValueText}\n selectedValues={state.selectedRightValues}\n ListProps={{ ...ListProps, ...RightListProps }}\n ListItemProps={{ ...ListItemProps, ...RightListItemProps }}\n ListItemIconProps={{ ...ListItemIconProps, ...RightListItemIconProps }}\n ListItemTextProps={{ ...ListItemTextProps, ...RightItemTextProps }}\n PaperProps={PaperProps}\n LeftPaperProps={RightPaperProps}\n />\n </Grid>\n </Grid>\n {text && (\n <FormHelperText {...FormHelperTextProps}>{text}</FormHelperText>\n )}\n </FormControl>\n </StyledDualListSelect>\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const DualListSelectWrapper = (props: any) => (\n <DualListSelectCommon {...props} DualListSelect={DualListSelect} />\n)\n\nexport default DualListSelectWrapper\n"],"names":["Button","Checkbox","FormControl","FormHelperText","FormLabel","Grid","IconButton","List","ListItem","ListItemButton","ListItemIcon","ListItemText","Paper","TextField","Toolbar","Typography","styled","SortIcon","clsx","DualListSelectCommon","FormFieldGrid","validationError","PREFIX","classes","allToLeftIcon","upsideDown","list","button","buttonsGrid","filter","toolbar","StyledDualListSelect","theme","transform","height","overflow","display","justifyContent","margin","spacing","alignContent","width","paddingLeft","paddingRight","ListInternal","value","optionClick","noOptionsTitle","filterValue","filterValueText","selectedValues","ListProps","ListItemProps","ListItemIconProps","ListItemTextProps","checkboxVariant","PaperProps","LeftPaperProps","className","component","role","dense","length","disabled","primary","map","label","icon","isCheckbox","secondaryActions","ListItemPropsItem","ListItemIconPropsItem","ListItemTextPropsItem","disablePadding","secondaryAction","selected","includes","onClick","e","ctrlKey","sx","cursor","edge","checked","tabIndex","disableRipple","ToolbarInternal","ToolbarProps","LeftToolbarProps","filterOptions","filterOptionsTitle","FilterFieldProps","sortOptions","SortIconButtonProps","SortIconProps","LeftSortIconProps","LeftFilterFieldProps","LeftSortIconButtonProps","sortDesc","isValue","variant","aria-label","onChange","target","type","color","size","DualListSelect","handleOptionsClick","rightValues","noValueTitle","leftValues","state","filterOptionsText","handleValuesClick","handleMoveRight","moveRightTitle","handleClearLeftValues","moveAllRightTitle","handleClearRightValues","moveAllLeftTitle","handleMoveLeft","moveLeftTitle","allToRight","allToLeft","isRequired","meta","validateOnMount","helperText","description","leftTitle","sortValues","filterValueTitle","filterValues","rightTitle","isFilterable","help","FormFieldGridProps","InternalGridProps","ListGridProps","LeftListGridProps","LeftListProps","ButtonsGridProps","ButtonsInternalGridProps","ButtonGridProps","ToRightGridProps","IconButtonProps","ToRightIconButtonProps","AllToRightGridProps","AllToRightIconButtonProps","AllToLeftGridProps","AllToLeftIconButtonProps","ToLeftGridProps","ToLeftIconButtonProps","RightListGridProps","RightListProps","LeftListItemProps","LeftListItemIconProps","LeftItemTextProps","RightListItemProps","RightListItemIconProps","RightItemTextProps","FormControlProps","FormLabelProps","FormHelperTextProps","TitleProps","LeftTitleProps","RightToolbarProps","RightFilterFieldProps","RightSortIconButtonProps","RightSortIconProps","RightTitleProps","RightPaperProps","invalid","text","touched","warning","fullWidth","required","error","container","xs","md","gutterBottom","sortLeftDesc","selectedLeftValues","sm","sortRightDesc","selectedRightValues","DualListSelectWrapper","props"],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { type ButtonProps, type FormControlProps, type FormHelperTextProps, type GridProps, type IconButtonProps, type TypographyProps } from '@mui/material';
|
|
18
|
+
import { type FormFieldGridProps } from './form-field-grid';
|
|
19
|
+
import type { BaseFieldProps } from './types';
|
|
20
|
+
interface ButtonLabels {
|
|
21
|
+
add?: string;
|
|
22
|
+
remove?: string;
|
|
23
|
+
}
|
|
24
|
+
interface HistoryAction {
|
|
25
|
+
action: 'remove';
|
|
26
|
+
value: any;
|
|
27
|
+
}
|
|
28
|
+
interface HistoryState {
|
|
29
|
+
index: number;
|
|
30
|
+
history: HistoryAction[];
|
|
31
|
+
}
|
|
32
|
+
type ReducerAction = {
|
|
33
|
+
type: 'redo';
|
|
34
|
+
} | {
|
|
35
|
+
type: 'undo';
|
|
36
|
+
} | {
|
|
37
|
+
type: 'action';
|
|
38
|
+
action: HistoryAction;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'resetHistory';
|
|
41
|
+
};
|
|
42
|
+
export declare const reducer: (state: HistoryState, actionObj: ReducerAction) => HistoryState;
|
|
43
|
+
export interface FieldArrayProps extends BaseFieldProps {
|
|
44
|
+
arrayValidator?: (value: any[]) => string | undefined;
|
|
45
|
+
fields: Record<string, any>[];
|
|
46
|
+
defaultItem?: any;
|
|
47
|
+
minItems?: number;
|
|
48
|
+
maxItems?: number;
|
|
49
|
+
noItemsMessage?: string;
|
|
50
|
+
buttonLabels?: ButtonLabels;
|
|
51
|
+
FormFieldGridProps?: FormFieldGridProps;
|
|
52
|
+
FormControlProps?: FormControlProps;
|
|
53
|
+
GridContainerProps?: GridProps;
|
|
54
|
+
HeaderGridProps?: GridProps;
|
|
55
|
+
HeaderProps?: TypographyProps;
|
|
56
|
+
UndoButtonProps?: IconButtonProps;
|
|
57
|
+
RedoButtonProps?: IconButtonProps;
|
|
58
|
+
AddButtonProps?: ButtonProps;
|
|
59
|
+
DescriptionGridProps?: GridProps;
|
|
60
|
+
DescriptionProps?: TypographyProps;
|
|
61
|
+
BodyGridProps?: GridProps;
|
|
62
|
+
NoItemsProps?: TypographyProps;
|
|
63
|
+
FormHelperTextGridProps?: GridProps;
|
|
64
|
+
FormHelperTextProps?: FormHelperTextProps;
|
|
65
|
+
FieldContainerProps?: GridProps;
|
|
66
|
+
FieldGroupGridProps?: GridProps;
|
|
67
|
+
RemoveButtonGridProps?: GridProps;
|
|
68
|
+
RemoveButtonProps?: ButtonProps;
|
|
69
|
+
}
|
|
70
|
+
export declare const DynamicArray: (props: FieldArrayProps) => import("react").JSX.Element;
|
|
71
|
+
export default DynamicArray;
|