@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.
Files changed (150) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +7 -0
  3. package/package.json +52 -0
  4. package/src/index.d.ts +17 -0
  5. package/src/index.js +18 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/components/color-picker-tokens.d.ts +135 -0
  8. package/src/lib/components/color-picker-tokens.js +431 -0
  9. package/src/lib/components/color-picker-tokens.js.map +1 -0
  10. package/src/lib/components/color-picker.component.d.ts +64 -0
  11. package/src/lib/components/color-picker.component.js +322 -0
  12. package/src/lib/components/color-picker.component.js.map +1 -0
  13. package/src/lib/components/create-artifact-drawer.component.d.ts +100 -0
  14. package/src/lib/components/create-artifact-drawer.component.js +184 -0
  15. package/src/lib/components/create-artifact-drawer.component.js.map +1 -0
  16. package/src/lib/components/grid-form-template.component.d.ts +21 -0
  17. package/src/lib/components/grid-form-template.component.js +81 -0
  18. package/src/lib/components/grid-form-template.component.js.map +1 -0
  19. package/src/lib/components/icon-select.component.d.ts +52 -0
  20. package/src/lib/components/icon-select.component.js +453 -0
  21. package/src/lib/components/icon-select.component.js.map +1 -0
  22. package/src/lib/components/select.component.d.ts +58 -0
  23. package/src/lib/components/select.component.js +107 -0
  24. package/src/lib/components/select.component.js.map +1 -0
  25. package/src/lib/components/switch.component.d.ts +38 -0
  26. package/src/lib/components/switch.component.js +76 -0
  27. package/src/lib/components/switch.component.js.map +1 -0
  28. package/src/lib/components/text-field.component.d.ts +45 -0
  29. package/src/lib/components/text-field.component.js +77 -0
  30. package/src/lib/components/text-field.component.js.map +1 -0
  31. package/src/lib/components/textarea.component.d.ts +45 -0
  32. package/src/lib/components/textarea.component.js +61 -0
  33. package/src/lib/components/textarea.component.js.map +1 -0
  34. package/src/lib/components/toggle-button.component.d.ts +27 -0
  35. package/src/lib/components/toggle-button.component.js +116 -0
  36. package/src/lib/components/toggle-button.component.js.map +1 -0
  37. package/src/lib/constants/component-mappers.d.ts +42 -0
  38. package/src/lib/constants/component-mappers.js +70 -0
  39. package/src/lib/constants/component-mappers.js.map +1 -0
  40. package/src/lib/constants/dynamic-fields.d.ts +45 -0
  41. package/src/lib/constants/dynamic-fields.js +65 -0
  42. package/src/lib/constants/dynamic-fields.js.map +1 -0
  43. package/src/lib/constants/field-configurations.d.ts +53 -0
  44. package/src/lib/constants/field-configurations.js +121 -0
  45. package/src/lib/constants/field-configurations.js.map +1 -0
  46. package/src/lib/constants/flags.d.ts +72 -0
  47. package/src/lib/constants/flags.js +69 -0
  48. package/src/lib/constants/flags.js.map +1 -0
  49. package/src/lib/hocs/with-grid-item.d.ts +25 -0
  50. package/src/lib/hocs/with-grid-item.js +48 -0
  51. package/src/lib/hocs/with-grid-item.js.map +1 -0
  52. package/src/lib/jsx-forms.d.ts +41 -0
  53. package/src/lib/jsx-forms.js +42 -0
  54. package/src/lib/jsx-forms.js.map +1 -0
  55. package/src/lib/mapper/breakpoint-span.d.ts +73 -0
  56. package/src/lib/mapper/breakpoint-span.js +346 -0
  57. package/src/lib/mapper/breakpoint-span.js.map +1 -0
  58. package/src/lib/mapper/checkbox.d.ts +43 -0
  59. package/src/lib/mapper/checkbox.js +111 -0
  60. package/src/lib/mapper/checkbox.js.map +1 -0
  61. package/src/lib/mapper/css-border.d.ts +113 -0
  62. package/src/lib/mapper/css-border.js +410 -0
  63. package/src/lib/mapper/css-border.js.map +1 -0
  64. package/src/lib/mapper/css-dimension.d.ts +89 -0
  65. package/src/lib/mapper/css-dimension.js +327 -0
  66. package/src/lib/mapper/css-dimension.js.map +1 -0
  67. package/src/lib/mapper/css-gradient.d.ts +110 -0
  68. package/src/lib/mapper/css-gradient.js +720 -0
  69. package/src/lib/mapper/css-gradient.js.map +1 -0
  70. package/src/lib/mapper/data-table.d.ts +23 -0
  71. package/src/lib/mapper/data-table.js +296 -0
  72. package/src/lib/mapper/data-table.js.map +1 -0
  73. package/src/lib/mapper/date-picker.d.ts +26 -0
  74. package/src/lib/mapper/date-picker.js +69 -0
  75. package/src/lib/mapper/date-picker.js.map +1 -0
  76. package/src/lib/mapper/dual-list-select.d.ts +115 -0
  77. package/src/lib/mapper/dual-list-select.js +353 -0
  78. package/src/lib/mapper/dual-list-select.js.map +1 -0
  79. package/src/lib/mapper/field-array.d.ts +71 -0
  80. package/src/lib/mapper/field-array.js +326 -0
  81. package/src/lib/mapper/field-array.js.map +1 -0
  82. package/src/lib/mapper/form-field-grid.d.ts +155 -0
  83. package/src/lib/mapper/form-field-grid.js +194 -0
  84. package/src/lib/mapper/form-field-grid.js.map +1 -0
  85. package/src/lib/mapper/index.d.ts +50 -0
  86. package/src/lib/mapper/index.js +49 -0
  87. package/src/lib/mapper/index.js.map +1 -0
  88. package/src/lib/mapper/multiple-choice-list.d.ts +32 -0
  89. package/src/lib/mapper/multiple-choice-list.js +105 -0
  90. package/src/lib/mapper/multiple-choice-list.js.map +1 -0
  91. package/src/lib/mapper/plain-text.d.ts +31 -0
  92. package/src/lib/mapper/plain-text.js +48 -0
  93. package/src/lib/mapper/plain-text.js.map +1 -0
  94. package/src/lib/mapper/preset-choice.d.ts +106 -0
  95. package/src/lib/mapper/preset-choice.js +267 -0
  96. package/src/lib/mapper/preset-choice.js.map +1 -0
  97. package/src/lib/mapper/radio.d.ts +40 -0
  98. package/src/lib/mapper/radio.js +122 -0
  99. package/src/lib/mapper/radio.js.map +1 -0
  100. package/src/lib/mapper/select.d.ts +60 -0
  101. package/src/lib/mapper/select.js +203 -0
  102. package/src/lib/mapper/select.js.map +1 -0
  103. package/src/lib/mapper/slider.d.ts +45 -0
  104. package/src/lib/mapper/slider.js +119 -0
  105. package/src/lib/mapper/slider.js.map +1 -0
  106. package/src/lib/mapper/stored-field-value.d.ts +23 -0
  107. package/src/lib/mapper/stored-field-value.js +29 -0
  108. package/src/lib/mapper/stored-field-value.js.map +1 -0
  109. package/src/lib/mapper/sub-form.d.ts +39 -0
  110. package/src/lib/mapper/sub-form.js +108 -0
  111. package/src/lib/mapper/sub-form.js.map +1 -0
  112. package/src/lib/mapper/switch.d.ts +47 -0
  113. package/src/lib/mapper/switch.js +93 -0
  114. package/src/lib/mapper/switch.js.map +1 -0
  115. package/src/lib/mapper/tabs.d.ts +34 -0
  116. package/src/lib/mapper/tabs.js +64 -0
  117. package/src/lib/mapper/tabs.js.map +1 -0
  118. package/src/lib/mapper/text-field.d.ts +33 -0
  119. package/src/lib/mapper/text-field.js +88 -0
  120. package/src/lib/mapper/text-field.js.map +1 -0
  121. package/src/lib/mapper/textarea.d.ts +31 -0
  122. package/src/lib/mapper/textarea.js +68 -0
  123. package/src/lib/mapper/textarea.js.map +1 -0
  124. package/src/lib/mapper/theme-scale.d.ts +79 -0
  125. package/src/lib/mapper/theme-scale.js +162 -0
  126. package/src/lib/mapper/theme-scale.js.map +1 -0
  127. package/src/lib/mapper/time-picker.d.ts +26 -0
  128. package/src/lib/mapper/time-picker.js +69 -0
  129. package/src/lib/mapper/time-picker.js.map +1 -0
  130. package/src/lib/mapper/types.d.ts +43 -0
  131. package/src/lib/mapper/types.js +22 -0
  132. package/src/lib/mapper/types.js.map +1 -0
  133. package/src/lib/mapper/validation-error.d.ts +24 -0
  134. package/src/lib/mapper/validation-error.js +24 -0
  135. package/src/lib/mapper/validation-error.js.map +1 -0
  136. package/src/lib/mapper/wizard.d.ts +21 -0
  137. package/src/lib/mapper/wizard.js +203 -0
  138. package/src/lib/mapper/wizard.js.map +1 -0
  139. package/src/lib/types.d.ts +19 -0
  140. package/src/lib/types.js +18 -0
  141. package/src/lib/types.js.map +1 -0
  142. package/src/lib/utils/option-is-equal-to-value.d.ts +20 -0
  143. package/src/lib/utils/option-is-equal-to-value.js +21 -0
  144. package/src/lib/utils/option-is-equal-to-value.js.map +1 -0
  145. package/src/lib/utils/validation-message.d.ts +22 -0
  146. package/src/lib/utils/validation-message.js +24 -0
  147. package/src/lib/utils/validation-message.js.map +1 -0
  148. package/src/lib/vendor/data-driven-forms.d.ts +33 -0
  149. package/src/lib/vendor/data-driven-forms.js +29 -0
  150. 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 &#8811;\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 &gt;\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 &lt;\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 &#8810;\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":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;CAIC;;AAKD,SACEA,MAAM,EAENC,QAAQ,EACRC,WAAW,EAEXC,cAAc,EAEdC,SAAS,EAETC,IAAI,EAEJC,UAAU,EAEVC,IAAI,EACJC,QAAQ,EACRC,cAAc,EAEdC,YAAY,EAEZC,YAAY,EAGZC,KAAK,EAELC,SAAS,EAETC,OAAO,EAEPC,UAAU,QAEL,gBAAe;AACtB,SAASC,MAAM,QAAQ,uBAAsB;AAE7C,OAAOC,cAAc,kCAAiC;AAEtD,OAAOC,UAAU,OAAM;AAEvB,OAAOC,0BAA0B,6CAA4C;AAE7E,OAAOC,mBAAmB,uBAAmB;AAC7C,SAAiCC,eAAe,QAAQ,wBAAoB;AAE5E,MAAMC,SAAS;AAEf,MAAMC,UAAU;IACdC,eAAe,GAAGF,OAAO,cAAc,CAAC;IACxCG,YAAY,GAAGH,OAAO,WAAW,CAAC;IAClCI,MAAM,GAAGJ,OAAO,KAAK,CAAC;IACtBK,QAAQ,GAAGL,OAAO,OAAO,CAAC;IAC1BM,aAAa,GAAGN,OAAO,YAAY,CAAC;IACpCO,QAAQ,GAAGP,OAAO,OAAO,CAAC;IAC1BQ,SAAS,GAAGR,OAAO,QAAQ,CAAC;AAC9B;AAEA,MAAMS,uBAAuBf,OAAOI,eAAe,CAAC,EAAEY,KAAK,EAAE,GAAM,CAAA;QACjE,CAAC,CAAC,GAAG,EAAET,QAAQC,aAAa,EAAE,CAAC,EAAE;YAC/BS,WAAW;QACb;QAEA,CAAC,CAAC,GAAG,EAAEV,QAAQE,UAAU,EAAE,CAAC,EAAE;YAC5BQ,WAAW;QACb;QAEA,CAAC,CAAC,GAAG,EAAEV,QAAQG,IAAI,EAAE,CAAC,EAAE;YACtBQ,QAAQ;YACRC,UAAU;QACZ;QAEA,CAAC,CAAC,GAAG,EAAEZ,QAAQI,MAAM,EAAE,CAAC,EAAE;YACxBS,SAAS;YACTC,gBAAgB;YAChBC,QAAQN,MAAMO,OAAO,CAAC,KAAK;QAC7B;QAEA,CAAC,CAAC,GAAG,EAAEhB,QAAQK,WAAW,EAAE,CAAC,EAAE;YAC7BM,QAAQ;YACRM,cAAc;QAChB;QAEA,CAAC,CAAC,GAAG,EAAEjB,QAAQM,MAAM,EAAE,CAAC,EAAE;YACxBY,OAAO;QACT;QAEA,CAAC,CAAC,GAAG,EAAElB,QAAQO,OAAO,EAAE,CAAC,EAAE;YACzBY,aAAa;YACbC,cAAc;QAChB;IACF,CAAA;AAiCA,MAAMC,eAAe,CAAC,EACpBC,QAAQ,EAAE,EACVC,WAAW,EACXC,cAAc,EACdC,WAAW,EACXC,eAAe,EACfC,cAAc,EACdC,YAAY,CAAC,CAAC,EACdC,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EACjBC,eAAe,EACfC,UAAU,EACVC,cAAc,EACI,iBAClB,KAAC7C,oBACK4C,YACAC;QACJC,WAAWxC,KACTsC,cAAcA,WAAWE,SAAS,EAClCD,kBAAkBA,eAAeC,SAAS;kBAG5C,cAAA,MAACnD;YACCoD,WAAU;YACVC,MAAK;YACLC,KAAK;WACDV;YACJO,WAAWxC,KAAKK,QAAQG,IAAI,EAAEyB,UAAUO,SAAS;;gBAEhDb,MAAMiB,MAAM,GAAG,mBACd,KAACrD;oBAAesD,QAAQ;mBAAKX;8BAC3B,cAAA,KAACzC;wBAAaqD,SAAShB,cAAcC,kBAAkBF;;;gBAG1DF,MAAMiB,MAAM,GAAG,KACdjB,MAAMoB,GAAG,CACP,CAAC,EACCpB,KAAK,EACLqB,KAAK,EACLC,IAAI,EACJC,UAAU,EACVC,gBAAgB,EAChBjB,eAAekB,iBAAiB,EAChCjB,mBAAmBkB,qBAAqB,EACxCjB,mBAAmBkB,qBAAqB,EACzC,iBACC,KAAChE;wBAECiE,cAAc;uBACTJ,oBAAoB;wBAAEK,iBAAiBL;oBAAiB;kCAE7D,cAAA,MAAC5D;4BACCkE,UAAUzB,eAAe0B,QAAQ,CAAC/B;4BAClCgC,SAAS,CAACC,IACRhC,YACEsB,cAAcb,kBAAkB,aAAKuB;oCAAGC,SAAS;qCAASD,GAC1DjC;4BAGJmC,IAAI;gCAAEC,QAAQ;4BAAU;2BACpB7B,eACAkB;;gCAEFH,CAAAA,QAAQC,cAAcb,eAAc,mBACpC,KAAC7C,2BAAiB2C,mBAAuBkB;8CACtCH,cAAcb,gCACb,KAACtD;wCACCiF,MAAK;wCACLC,SAASjC,eAAe0B,QAAQ,CAAC/B;wCACjCuC,UAAU,CAAC;wCACXC,aAAa;yCAGflB;;8CAIN,KAACxD;oCACCqD,SAASE;mCACLZ,mBACAkB;;;wBAjCH3B;;;;AAgEnB,MAAMyC,kBAAkB,CAAC,EACvBC,YAAY,EACZC,gBAAgB,EAChBC,aAAa,EACbC,kBAAkB,EAClBC,gBAAgB,EAChBC,WAAW,EACXC,mBAAmB,EACnBC,aAAa,EACbC,iBAAiB,EACjBC,oBAAoB,EACpBC,uBAAuB,EACvBpE,MAAM,EACNqE,QAAQ,EACRC,UAAU,KAAK,EACM,iBACrB,MAACrF;QACCsF,SAAQ;OACJb,cACAC;QACJ9B,WAAWxC,KACTK,QAAQO,OAAO,EACfyD,gBAAgBA,aAAa7B,SAAS,EACtC8B,oBAAoBA,iBAAiB9B,SAAS;;0BAGhD,KAAC7C;gBACCwF,cAAYF,UAAU,iBAAiB;gBACvCjC,OAAOwB;gBACPY,UAAU,CAAC,EAAEC,QAAQ,EAAE1D,KAAK,EAAE,EAAE,GAAK4C,cAAc5C;gBACnDA,OAAOhB;gBACP2E,MAAK;eACDb,kBACAK;gBACJtC,WAAWxC,KACTK,QAAQM,MAAM,EACd8D,oBAAoBA,iBAAiBjC,SAAS,EAC9CsC,wBAAwBA,qBAAqBtC,SAAS;;0BAG1D,KAACpD;gBACC+F,cAAYF,UAAU,eAAe;gBACrCjB,MAAK;gBACLL,SAASe;gBACTa,OAAM;eACFZ,qBACAI;gBACJS,MAAK;0BAEL,cAAA,KAACzF,uBACK6E,eACAC;oBACJrC,WAAWxC,KACT,CAACgF,YAAY3E,QAAQE,UAAU,EAC/BqE,iBAAiBA,cAAcpC,SAAS,EACxCqC,qBAAqBA,kBAAkBrC,SAAS;;;;;AA2G1D,MAAMiD,iBAAiB,CAAC,EACtBC,kBAAkB,EAClBC,WAAW,EACXC,eAAe,aAAa,EAC5B7D,kBAAkB,wCAAwC,EAC1D8D,UAAU,EACVhE,iBAAiB,sBAAsB,EACvCiE,KAAK,EACLC,oBAAoB,uCAAuC,EAC3DC,iBAAiB,EACjBC,eAAe,EACfC,iBAAiB,wBAAwB,EACzCC,qBAAqB,EACrBC,oBAAoB,mBAAmB,EACvCC,sBAAsB,EACtBC,mBAAmB,kBAAkB,EACrCC,cAAc,EACdC,gBAAgB,uBAAuB,EACvCC,aAAa,IAAI,EACjBC,YAAY,IAAI,EAChBrE,eAAe,EACfsE,UAAU,EACVC,IAAI,EACJC,eAAe,EACf7D,KAAK,EACL8D,UAAU,EACVC,WAAW,EACXvC,qBAAqB,gBAAgB,EACrCwC,YAAY,SAAS,EACrBzC,aAAa,EACbG,WAAW,EACXuC,UAAU,EACVC,mBAAmB,uBAAuB,EAC1CC,YAAY,EACZC,aAAa,UAAU,EACvBC,eAAe,IAAI,EACnBC,IAAI,EACJ,QAAQ;AACRC,kBAAkB,EAClBC,iBAAiB,EACjBC,aAAa,EACbC,iBAAiB,EACjBzF,SAAS,EACT0F,aAAa,EACbC,gBAAgB,EAChBC,wBAAwB,EACxBC,eAAe,EACfC,gBAAgB,EAChBC,eAAe,EACfC,sBAAsB,EACtBC,mBAAmB,EACnBC,yBAAyB,EACzBC,kBAAkB,EAClBC,wBAAwB,EACxBC,eAAe,EACfC,qBAAqB,EACrBC,kBAAkB,EAClBC,cAAc,EACdvG,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EACjBsG,iBAAiB,EACjBC,qBAAqB,EACrBC,iBAAiB,EACjBC,kBAAkB,EAClBC,sBAAsB,EACtBC,kBAAkB,EAClBC,gBAAgB,EAChBC,cAAc,EACdC,mBAAmB,EACnBC,UAAU,EACV9E,YAAY,EACZI,gBAAgB,EAChBE,mBAAmB,EACnBC,aAAa,EACbN,gBAAgB,EAChBQ,oBAAoB,EACpBC,uBAAuB,EACvBF,iBAAiB,EACjBuE,cAAc,EACdC,iBAAiB,EACjBC,qBAAqB,EACrBC,wBAAwB,EACxBC,kBAAkB,EAClBC,eAAe,EACfnH,UAAU,EACVC,cAAc,EACdmH,eAAe,EACK;IACpB,MAAMC,UAAUxJ,gBAAgByG,MAAMC;IACtC,MAAM+C,OACJD,WACC,AAAC/C,CAAAA,KAAKiD,OAAO,IAAIhD,eAAc,KAAMD,KAAKkD,OAAO,IAClDhD,cACAC;IAEF,qBACE,KAAClG;QAAqByG,MAAMA;OAAUC;kBACpC,cAAA,MAACvI;YACC+K,SAAS;YACTC,UAAUrD;YACVsD,OAAO,CAAC,CAACN;YACTlH,WAAU;WACNuG;;8BAEJ,KAAC9J;oBAAUuD,WAAU;mBAAawG;8BAC/BjG;;8BAEH,MAAC7D;oBAAK+K,SAAS;mBAAK1C;;sCAClB,MAACrI;4BAAKqG,MAAM;gCAAE2E,IAAI;gCAAIC,IAAI;4BAAE;2BAAO3C,eAAmBC;;gCACnDV,2BACC,KAACnH;oCACCqF,SAAQ;oCACRmF,YAAY;mCACRlB,YACAC;8CAEHpC;;gCAGJK,8BACC,KAACjD;oCACCC,cAAcA;oCACdC,kBAAkBA;oCAClBC,eAAeA;oCACfC,oBAAoBA;oCACpBC,kBAAkBA;oCAClBC,aAAaA;oCACbC,qBAAqBA;oCACrBC,eAAeA;oCACfC,mBAAmBA;oCACnBC,sBAAsBA;oCACtBC,yBAAyBA;oCACzBpE,QAAQmF,MAAMvB,aAAa;oCAC3BS,UAAUc,MAAMwE,YAAY;;8CAGhC,KAAC5I;oCACCE,aAAa8D;oCACb/D,OAAOkE;oCACPhE,gBAAgBA;oCAChBC,aAAagE,MAAMvB,aAAa;oCAChCxC,iBAAiBgE;oCACjB/D,gBAAgB8D,MAAMyE,kBAAkB;oCACxClI,iBAAiBA;oCACjBJ,WAAW,aAAKA,WAAc0F;oCAC9BzF,eAAe,aAAKA,eAAkBwG;oCACtCvG,mBAAmB,aAAKA,mBAAsBwG;oCAC9CvG,mBAAmB,aAAKA,mBAAsBwG;oCAC9CtG,YAAYA;oCACZC,gBAAgBA;;;;sCAGpB,KAACpD;4BAAKqG,MAAM;gCAAE2E,IAAI;gCAAIC,IAAI;4BAAE;2BAAOxC;sCACjC,cAAA,MAACzI;gCACC+K,SAAS;+BACLrC;gCACJrF,WAAWxC,KACTK,QAAQK,WAAW,EACnBmH,4BAA4BA,yBAAyBrF,SAAS;;oCAG/DiE,4BACC,KAACtH;wCACCqG,MAAM;4CAAE4E,IAAI;4CAAII,IAAI;wCAAE;uCAClB1C,iBACAI;wCACJ1F,WAAWxC,KACTK,QAAQI,MAAM,EACdqH,mBAAmBA,gBAAgBtF,SAAS,EAC5C0F,uBAAuBA,oBAAoB1F,SAAS;kDAGtD,cAAA,KAAC1D;4CACCoG,SAAQ;4CACRM,MAAK;4CACL3C,UAAUgD,WAAWjD,MAAM,KAAK;4CAChCe,SAASwC;4CACThB,cAAYiB;2CACR4B,iBACAG;sDACL;;;kDAKL,KAAChJ;wCACCqG,MAAM;4CAAE4E,IAAI;4CAAII,IAAI;wCAAE;uCAClB1C,iBACAC;wCACJvF,WAAWxC,KACTK,QAAQI,MAAM,EACdqH,mBAAmBA,gBAAgBtF,SAAS,EAC5CuF,oBAAoBA,iBAAiBvF,SAAS;kDAGhD,cAAA,KAAC1D;4CACCoG,SAAQ;4CACRM,MAAK;4CACL3C,UAAUgD,WAAWjD,MAAM,KAAK;4CAChCe,SAASsC;4CACTd,cAAYe;2CACR8B,iBACAC;sDACL;;;kDAIH,KAAC9I;wCACCqG,MAAM;4CAAE4E,IAAI;4CAAII,IAAI;wCAAE;uCAClB1C,iBACAQ;wCACJ9F,WAAWxC,KACTK,QAAQI,MAAM,EACdqH,mBAAmBA,gBAAgBtF,SAAS,EAC5C8F,mBAAmBA,gBAAgB9F,SAAS;kDAG9C,cAAA,KAAC1D;4CACCoG,SAAQ;4CACRM,MAAK;4CACL3C,UAAU8C,YAAY/C,MAAM,KAAK;4CACjCe,SAAS4C;4CACTpB,cAAYqB;2CACRwB,iBACAO;sDACL;;;oCAIF7B,2BACC,KAACvH;wCACCqG,MAAM;4CAAE4E,IAAI;4CAAII,IAAI;wCAAE;uCAClB1C,iBACAM;wCACJ5F,WAAWxC,KACTK,QAAQI,MAAM,EACdqH,mBAAmBA,gBAAgBtF,SAAS,EAC5C4F,sBAAsBA,mBAAmB5F,SAAS;kDAGpD,cAAA,KAAC1D;4CACCoG,SAAQ;4CACRM,MAAK;4CACL3C,UAAU8C,YAAY/C,MAAM,KAAK;4CACjCe,SAAS0C;4CACTlB,cAAYmB;2CACR0B,iBACAK;sDACL;;;;;;sCAOT,MAAClJ;4BAAKqG,MAAM;gCAAE2E,IAAI;gCAAIC,IAAI;4BAAE;2BAAO3C,eAAmBe;;gCACnDpB,4BACC,KAACvH;oCACCqF,SAAQ;oCACRmF,YAAY;mCACRlB,YACAM;8CAEHrC;;gCAGJC,8BACC,KAACjD;oCACCC,cAAcA;oCACdC,kBAAkB+E;oCAClB9E,eAAe4C;oCACf3C,oBAAoB0C;oCACpBzC,kBAAkBA;oCAClBC,aAAauC;oCACbtC,qBAAqBA;oCACrBC,eAAeA;oCACfC,mBAAmB2E;oCACnB1E,sBAAsBwE;oCACtBvE,yBAAyBwE;oCACzB5I,QAAQmF,MAAMhE,WAAW;oCACzBkD,UAAUc,MAAM2E,aAAa;oCAC7BxF,OAAO;;8CAGX,KAACvD;oCACCW,iBAAiBA;oCACjBT,aAAaoE;oCACbrE,OAAOgE;oCACP9D,gBAAgB+D;oCAChB9D,aAAagE,MAAMhE,WAAW;oCAC9BC,iBAAiBA;oCACjBC,gBAAgB8D,MAAM4E,mBAAmB;oCACzCzI,WAAW,aAAKA,WAAcwG;oCAC9BvG,eAAe,aAAKA,eAAkB2G;oCACtC1G,mBAAmB,aAAKA,mBAAsB2G;oCAC9C1G,mBAAmB,aAAKA,mBAAsB2G;oCAC9CzG,YAAYA;oCACZC,gBAAgBmH;;;;;;gBAIrBE,sBACC,KAAC3K,6BAAmBiK;8BAAsBU;;;;;AAKpD;AAEA,8DAA8D;AAC9D,OAAO,MAAMe,wBAAwB,CAACC,sBACpC,KAAC3K,mCAAyB2K;QAAOnF,gBAAgBA;QAClD;AAED,eAAekF,sBAAqB"}
@@ -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;