pne-ui 4.0.18 → 4.0.20
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/cjs/component/PneField.d.ts +18 -0
- package/cjs/component/PneField.js +42 -0
- package/cjs/component/PneField.js.map +1 -0
- package/cjs/component/PneSwitch.d.ts +2 -0
- package/cjs/component/PneSwitch.js +158 -1
- package/cjs/component/PneSwitch.js.map +1 -1
- package/cjs/component/dropdown/PneSelect.d.ts +2 -1
- package/cjs/component/dropdown/PneSelect.js +38 -3
- package/cjs/component/dropdown/PneSelect.js.map +1 -1
- package/cjs/exports/inputs.d.ts +3 -0
- package/cjs/exports/inputs.js +3 -1
- package/cjs/exports/inputs.js.map +1 -1
- package/esm/component/PneField.d.ts +18 -0
- package/esm/component/PneField.js +39 -0
- package/esm/component/PneField.js.map +1 -0
- package/esm/component/PneSwitch.d.ts +2 -0
- package/esm/component/PneSwitch.js +158 -1
- package/esm/component/PneSwitch.js.map +1 -1
- package/esm/component/dropdown/PneSelect.d.ts +2 -1
- package/esm/component/dropdown/PneSelect.js +40 -5
- package/esm/component/dropdown/PneSelect.js.map +1 -1
- package/esm/exports/inputs.d.ts +3 -0
- package/esm/exports/inputs.js +1 -0
- package/esm/exports/inputs.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import { FormControlProps, SxProps } from '@mui/material';
|
|
3
|
+
import { Theme } from '@mui/material/styles';
|
|
4
|
+
export interface PneFieldProps extends Omit<FormControlProps, 'children' | 'disabled' | 'error' | 'fullWidth' | 'required'> {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
error?: boolean;
|
|
8
|
+
fullWidth?: boolean;
|
|
9
|
+
helperText?: ReactNode;
|
|
10
|
+
helperTextSx?: SxProps<Theme>;
|
|
11
|
+
htmlFor?: string;
|
|
12
|
+
id?: string;
|
|
13
|
+
label?: ReactNode;
|
|
14
|
+
labelSx?: SxProps<Theme>;
|
|
15
|
+
required?: boolean;
|
|
16
|
+
}
|
|
17
|
+
declare const PneField: React.ForwardRefExoticComponent<Omit<PneFieldProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export default PneField;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
|
+
const material_1 = require("@mui/material");
|
|
6
|
+
const PneField = (0, react_1.forwardRef)((props, ref) => {
|
|
7
|
+
const { children, disabled = false, error = false, fullWidth = true, helperText, helperTextSx, htmlFor, id, label, labelSx, required = false, sx, ...rest } = props;
|
|
8
|
+
const helperTextId = helperText && id ? `${id}-helper-text` : undefined;
|
|
9
|
+
return react_1.default.createElement(material_1.FormControl, { disabled: disabled, error: error, fullWidth: fullWidth, id: id, required: required, ref: ref, sx: [
|
|
10
|
+
{
|
|
11
|
+
gap: '4px',
|
|
12
|
+
},
|
|
13
|
+
...(Array.isArray(sx) ? sx : [sx]),
|
|
14
|
+
], ...rest },
|
|
15
|
+
label
|
|
16
|
+
? react_1.default.createElement(material_1.FormLabel, { htmlFor: htmlFor, required: required, sx: [
|
|
17
|
+
{
|
|
18
|
+
color: error ? 'error.main' : 'text.secondary',
|
|
19
|
+
fontSize: '0.875rem',
|
|
20
|
+
lineHeight: '20px',
|
|
21
|
+
'&.Mui-focused': {
|
|
22
|
+
color: error ? 'error.main' : 'text.secondary',
|
|
23
|
+
},
|
|
24
|
+
'& .MuiFormLabel-asterisk': {
|
|
25
|
+
color: 'error.main',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
...(Array.isArray(labelSx) ? labelSx : [labelSx]),
|
|
29
|
+
] }, label)
|
|
30
|
+
: null,
|
|
31
|
+
children,
|
|
32
|
+
helperText
|
|
33
|
+
? react_1.default.createElement(material_1.FormHelperText, { id: helperTextId, sx: [
|
|
34
|
+
{
|
|
35
|
+
mx: 0,
|
|
36
|
+
},
|
|
37
|
+
...(Array.isArray(helperTextSx) ? helperTextSx : [helperTextSx]),
|
|
38
|
+
] }, helperText)
|
|
39
|
+
: null);
|
|
40
|
+
});
|
|
41
|
+
exports.default = PneField;
|
|
42
|
+
//# sourceMappingURL=PneField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PneField.js","sourceRoot":"","sources":["../../src/component/PneField.tsx"],"names":[],"mappings":";;;AAAA,uDAAkD;AAClD,4CAA+F;AAkB/F,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAgC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACtE,MAAM,EACF,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,IAAI,EAChB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,EAAE,EACF,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,EAAE,EACF,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,YAAY,GAAG,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAA;IAEvE,OAAO,8BAAC,sBAAW,IACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,EAAE,EAAE;YACA;gBACI,GAAG,EAAE,KAAK;aACb;YACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACrC,KACG,IAAI;QAEP,KAAK;YACF,CAAC,CAAC,8BAAC,oBAAS,IACR,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE;oBACA;wBACI,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;wBAC9C,QAAQ,EAAE,UAAU;wBACpB,UAAU,EAAE,MAAM;wBAClB,eAAe,EAAE;4BACb,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;yBACjD;wBACD,0BAA0B,EAAE;4BACxB,KAAK,EAAE,YAAY;yBACtB;qBACJ;oBACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACpD,IAEA,KAAK,CACE;YACZ,CAAC,CAAC,IAAI;QACT,QAAQ;QACR,UAAU;YACP,CAAC,CAAC,8BAAC,yBAAc,IACb,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE;oBACA;wBACI,EAAE,EAAE,CAAC;qBACR;oBACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;iBACnE,IAEA,UAAU,CACE;YACjB,CAAC,CAAC,IAAI,CACA,CAAA;AAClB,CAAC,CAAC,CAAA;AAEF,kBAAe,QAAQ,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SwitchProps } from '@mui/material';
|
|
3
|
+
export type PneSwitchSize = NonNullable<SwitchProps['size']>;
|
|
4
|
+
export type PneSwitchProps = SwitchProps;
|
|
3
5
|
declare const PneSwitch: React.ForwardRefExoticComponent<Omit<SwitchProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
4
6
|
export default PneSwitch;
|
|
@@ -3,12 +3,169 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
5
5
|
const material_1 = require("@mui/material");
|
|
6
|
+
const styles_1 = require("@mui/material/styles");
|
|
6
7
|
const PneSwitch = (0, react_1.forwardRef)((props, ref) => {
|
|
7
|
-
const { sx, size = '
|
|
8
|
+
const { sx, size = 'medium', ...rest } = props;
|
|
8
9
|
const _sx = [
|
|
10
|
+
switchSxBySize[size],
|
|
9
11
|
...(Array.isArray(sx) ? sx : [sx]),
|
|
10
12
|
];
|
|
11
13
|
return react_1.default.createElement(material_1.Switch, { sx: _sx, size: size, ...rest, ref: ref });
|
|
12
14
|
});
|
|
15
|
+
const createSwitchSx = (config) => theme => {
|
|
16
|
+
const trackFeedbackColor = (0, styles_1.alpha)(theme.palette.primary.main, 0.1);
|
|
17
|
+
return {
|
|
18
|
+
width: config.rootWidth,
|
|
19
|
+
height: config.rootHeight,
|
|
20
|
+
padding: 0,
|
|
21
|
+
overflow: 'visible',
|
|
22
|
+
'&:hover .MuiSwitch-track::before, & .MuiSwitch-switchBase:hover + .MuiSwitch-track::before': {
|
|
23
|
+
boxShadow: `0 0 0 2px ${trackFeedbackColor}`,
|
|
24
|
+
opacity: 1,
|
|
25
|
+
transform: 'scale(1)',
|
|
26
|
+
},
|
|
27
|
+
'&:active .MuiSwitch-track::before, & .MuiSwitch-switchBase:active + .MuiSwitch-track::before': {
|
|
28
|
+
boxShadow: `0 0 0 ${config.pressedOutlineWidth}px ${trackFeedbackColor}`,
|
|
29
|
+
opacity: 1,
|
|
30
|
+
transform: 'scale(1)',
|
|
31
|
+
transitionDuration: '80ms',
|
|
32
|
+
},
|
|
33
|
+
'& .MuiSwitch-switchBase': {
|
|
34
|
+
top: config.trackTop,
|
|
35
|
+
left: config.trackLeft,
|
|
36
|
+
padding: `${config.thumbPadding}px`,
|
|
37
|
+
color: '#fff',
|
|
38
|
+
'&.Mui-checked': {
|
|
39
|
+
transform: `translateX(${config.checkedShift}px)`,
|
|
40
|
+
color: '#fff',
|
|
41
|
+
'& + .MuiSwitch-track': {
|
|
42
|
+
backgroundColor: 'primary.main',
|
|
43
|
+
opacity: 1,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
'&:hover + .MuiSwitch-track': {
|
|
47
|
+
backgroundColor: '#5E7594',
|
|
48
|
+
opacity: 1,
|
|
49
|
+
},
|
|
50
|
+
'&.Mui-checked:hover + .MuiSwitch-track': {
|
|
51
|
+
backgroundColor: 'primary.dark',
|
|
52
|
+
opacity: 1,
|
|
53
|
+
},
|
|
54
|
+
'&.Mui-disabled': {
|
|
55
|
+
color: '#fff',
|
|
56
|
+
opacity: 1,
|
|
57
|
+
'& .MuiSwitch-thumb': {
|
|
58
|
+
backgroundColor: '#fff',
|
|
59
|
+
},
|
|
60
|
+
'& + .MuiSwitch-track': {
|
|
61
|
+
backgroundColor: '#E6E6E6',
|
|
62
|
+
opacity: 1,
|
|
63
|
+
},
|
|
64
|
+
'& + .MuiSwitch-track::before': {
|
|
65
|
+
boxShadow: 'none',
|
|
66
|
+
opacity: 0,
|
|
67
|
+
transform: 'scale(1)',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
'&.Mui-checked.Mui-disabled + .MuiSwitch-track': {
|
|
71
|
+
backgroundColor: '#E6E6E6',
|
|
72
|
+
opacity: 1,
|
|
73
|
+
},
|
|
74
|
+
'&.Mui-checked.Mui-disabled .MuiSwitch-thumb': {
|
|
75
|
+
backgroundColor: '#fff',
|
|
76
|
+
},
|
|
77
|
+
'&.Mui-checked.Mui-disabled': {
|
|
78
|
+
color: '#fff',
|
|
79
|
+
opacity: 1,
|
|
80
|
+
'& + .MuiSwitch-track': {
|
|
81
|
+
backgroundColor: '#E6E6E6',
|
|
82
|
+
opacity: 1,
|
|
83
|
+
},
|
|
84
|
+
'& + .MuiSwitch-track::before': {
|
|
85
|
+
boxShadow: 'none',
|
|
86
|
+
opacity: 0,
|
|
87
|
+
transform: 'scale(1)',
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
'&.Mui-disabled:hover + .MuiSwitch-track': {
|
|
91
|
+
backgroundColor: '#E6E6E6',
|
|
92
|
+
opacity: 1,
|
|
93
|
+
},
|
|
94
|
+
'&.Mui-checked.Mui-disabled:hover + .MuiSwitch-track': {
|
|
95
|
+
backgroundColor: '#E6E6E6',
|
|
96
|
+
opacity: 1,
|
|
97
|
+
},
|
|
98
|
+
'&.Mui-focusVisible:not(.Mui-disabled) + .MuiSwitch-track::before': {
|
|
99
|
+
boxShadow: `0 0 0 ${config.focusOutlineWidth}px ${trackFeedbackColor}`,
|
|
100
|
+
opacity: 1,
|
|
101
|
+
transform: 'scale(1)',
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
'&:active .MuiSwitch-switchBase.Mui-focusVisible:not(.Mui-disabled) + .MuiSwitch-track::before, & .MuiSwitch-switchBase.Mui-focusVisible:not(.Mui-disabled):active + .MuiSwitch-track::before': {
|
|
105
|
+
boxShadow: `0 0 0 ${config.pressedOutlineWidth}px ${trackFeedbackColor}`,
|
|
106
|
+
opacity: 1,
|
|
107
|
+
transform: 'scale(1)',
|
|
108
|
+
transitionDuration: '80ms',
|
|
109
|
+
},
|
|
110
|
+
'& .MuiSwitch-thumb': {
|
|
111
|
+
width: config.thumbSize,
|
|
112
|
+
height: config.thumbSize,
|
|
113
|
+
borderRadius: '50%',
|
|
114
|
+
boxShadow: '0px 1px 4px rgba(0, 0, 0, 0.2)',
|
|
115
|
+
},
|
|
116
|
+
'& .MuiSwitch-track': {
|
|
117
|
+
position: 'absolute',
|
|
118
|
+
top: config.trackTop,
|
|
119
|
+
left: config.trackLeft,
|
|
120
|
+
width: config.trackWidth,
|
|
121
|
+
height: config.trackHeight,
|
|
122
|
+
borderRadius: 40,
|
|
123
|
+
backgroundColor: '#809EAE',
|
|
124
|
+
opacity: 1,
|
|
125
|
+
overflow: 'visible',
|
|
126
|
+
'&::before': {
|
|
127
|
+
borderRadius: 'inherit',
|
|
128
|
+
boxShadow: 'none',
|
|
129
|
+
boxSizing: 'border-box',
|
|
130
|
+
content: '""',
|
|
131
|
+
inset: 0,
|
|
132
|
+
opacity: 0,
|
|
133
|
+
pointerEvents: 'none',
|
|
134
|
+
position: 'absolute',
|
|
135
|
+
transform: 'scale(1)',
|
|
136
|
+
transformOrigin: 'center',
|
|
137
|
+
transition: 'box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1), opacity 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1)',
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
const switchSxBySize = {
|
|
143
|
+
small: createSwitchSx({
|
|
144
|
+
rootWidth: 40,
|
|
145
|
+
rootHeight: 24,
|
|
146
|
+
trackLeft: 8,
|
|
147
|
+
trackTop: 4,
|
|
148
|
+
trackWidth: 24,
|
|
149
|
+
trackHeight: 16,
|
|
150
|
+
thumbSize: 12,
|
|
151
|
+
thumbPadding: 2,
|
|
152
|
+
checkedShift: 8,
|
|
153
|
+
focusOutlineWidth: 2,
|
|
154
|
+
pressedOutlineWidth: 4,
|
|
155
|
+
}),
|
|
156
|
+
medium: createSwitchSx({
|
|
157
|
+
rootWidth: 58,
|
|
158
|
+
rootHeight: 32,
|
|
159
|
+
trackLeft: 12,
|
|
160
|
+
trackTop: 5,
|
|
161
|
+
trackWidth: 34,
|
|
162
|
+
trackHeight: 22,
|
|
163
|
+
thumbSize: 16,
|
|
164
|
+
thumbPadding: 3,
|
|
165
|
+
checkedShift: 12,
|
|
166
|
+
focusOutlineWidth: 4,
|
|
167
|
+
pressedOutlineWidth: 6,
|
|
168
|
+
}),
|
|
169
|
+
};
|
|
13
170
|
exports.default = PneSwitch;
|
|
14
171
|
//# sourceMappingURL=PneSwitch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneSwitch.js","sourceRoot":"","sources":["../../src/component/PneSwitch.tsx"],"names":[],"mappings":";;;AAAA,uDAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"PneSwitch.js","sourceRoot":"","sources":["../../src/component/PneSwitch.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,11 @@ import React, { ReactNode } from 'react';
|
|
|
2
2
|
import { SelectProps, SelectVariants } from '@mui/material';
|
|
3
3
|
import { PneDropdownChoice } from '../../common/paynet/dropdown';
|
|
4
4
|
import { SelectOption } from '../../common/pne/type';
|
|
5
|
-
export interface IProps<T extends PneDropdownChoice> extends Omit<SelectProps<T>, 'children' | 'onChange' | 'variant'> {
|
|
5
|
+
export interface IProps<T extends PneDropdownChoice> extends Omit<SelectProps<T>, 'children' | 'onChange' | 'placeholder' | 'variant'> {
|
|
6
6
|
options: readonly T[];
|
|
7
7
|
onChange: (option: T) => void;
|
|
8
8
|
getOptionLabel?: (option: SelectOption) => ReactNode;
|
|
9
|
+
placeholder?: ReactNode;
|
|
9
10
|
variant?: SelectVariants;
|
|
10
11
|
disableMenuItem?: (option: SelectOption) => boolean;
|
|
11
12
|
}
|
|
@@ -6,20 +6,55 @@ const material_1 = require("@mui/material");
|
|
|
6
6
|
const type_1 = require("../../common/pne/type");
|
|
7
7
|
const type_2 = require("../../common/paynet/type");
|
|
8
8
|
const PneSelect = (0, react_1.forwardRef)((props, ref) => {
|
|
9
|
-
const { options, onChange, size = 'small', getOptionLabel = createDefaultOptionLabel, variant = 'outlined', disableMenuItem, label, disabled, error, required, sx, ...rest } = props;
|
|
9
|
+
const { options, onChange, size = 'small', getOptionLabel = createDefaultOptionLabel, variant = 'outlined', disableMenuItem, label, disabled, error, required, sx, displayEmpty, placeholder, renderValue, ...rest } = props;
|
|
10
|
+
const labelId = (0, react_1.useId)();
|
|
11
|
+
const hasLabel = label !== undefined && label !== null && label !== '';
|
|
12
|
+
const mappedOptions = options.map(mapChoiceToSelectOption);
|
|
10
13
|
const handleChange = (event) => {
|
|
11
14
|
const value = event.target.value;
|
|
12
15
|
onChange((0, type_1.ensure)(options.find(opt => mapChoiceToSelectOption(opt).value === value)));
|
|
13
16
|
};
|
|
14
17
|
const optionsPresent = options?.length > 0;
|
|
18
|
+
const shouldRenderPlaceholder = placeholder !== undefined && placeholder !== null;
|
|
19
|
+
const renderSelectedValue = (selected) => {
|
|
20
|
+
if (isEmptyValue(selected)) {
|
|
21
|
+
return react_1.default.createElement(material_1.Box, { component: 'span', sx: { color: 'text.secondary' } }, placeholder);
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(selected)) {
|
|
24
|
+
return selected.map((value, index) => react_1.default.createElement(react_1.default.Fragment, { key: String(value) },
|
|
25
|
+
index > 0 ? ', ' : null,
|
|
26
|
+
renderSingleSelectedValue(value, mappedOptions, getOptionLabel)));
|
|
27
|
+
}
|
|
28
|
+
return renderSingleSelectedValue(selected, mappedOptions, getOptionLabel);
|
|
29
|
+
};
|
|
15
30
|
return react_1.default.createElement(material_1.FormControl, { size: size, variant: variant, disabled: disabled, error: error, required: required, sx: sx, fullWidth: true },
|
|
16
|
-
react_1.default.createElement(material_1.InputLabel, { id:
|
|
17
|
-
react_1.default.createElement(material_1.Select, { ref: ref, labelId:
|
|
31
|
+
hasLabel ? react_1.default.createElement(material_1.InputLabel, { id: labelId }, label) : null,
|
|
32
|
+
react_1.default.createElement(material_1.Select, { ref: ref, displayEmpty: displayEmpty ?? shouldRenderPlaceholder, labelId: hasLabel ? labelId : undefined, onChange: handleChange, size: size, variant: variant, label: hasLabel ? label : undefined, renderValue: renderValue ?? (shouldRenderPlaceholder ? renderSelectedValue : undefined), ...rest }, optionsPresent ? mappedOptions.map(option => react_1.default.createElement(material_1.MenuItem, { disabled: disableMenuItem ? disableMenuItem(option) : false, key: option.value, value: option.value }, getOptionLabel(option))) : null));
|
|
18
33
|
});
|
|
19
34
|
exports.default = PneSelect;
|
|
20
35
|
const createDefaultOptionLabel = (option) => {
|
|
21
36
|
return option.label;
|
|
22
37
|
};
|
|
38
|
+
const isEmptyValue = (value) => {
|
|
39
|
+
return value === '' || value === undefined || value === null
|
|
40
|
+
|| (Array.isArray(value) && value.length === 0);
|
|
41
|
+
};
|
|
42
|
+
const renderSingleSelectedValue = (value, options, getOptionLabel) => {
|
|
43
|
+
const option = options.find(option => option.value === value);
|
|
44
|
+
if (option) {
|
|
45
|
+
return getOptionLabel(option);
|
|
46
|
+
}
|
|
47
|
+
if (typeof value === 'string' || typeof value === 'number') {
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
if ((0, type_2.isIAutoCompleteChoice)(value)) {
|
|
51
|
+
return value.displayName;
|
|
52
|
+
}
|
|
53
|
+
if ((0, type_2.isAbstractEntity)(value)) {
|
|
54
|
+
return value.displayName;
|
|
55
|
+
}
|
|
56
|
+
return '';
|
|
57
|
+
};
|
|
23
58
|
const mapChoiceToSelectOption = (choice) => {
|
|
24
59
|
if (typeof choice === 'string') {
|
|
25
60
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneSelect.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneSelect.tsx"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"PneSelect.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneSelect.tsx"],"names":[],"mappings":"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"}
|
package/cjs/exports/inputs.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { default as PneTextField } from '../component/PneTextField';
|
|
2
|
+
export { default as PneField } from '../component/PneField';
|
|
3
|
+
export type { PneFieldProps } from '../component/PneField';
|
|
2
4
|
export { default as PneAutocomplete } from '../component/dropdown/PneAutocomplete';
|
|
3
5
|
export { default as PneAsyncAutocomplete } from '../component/dropdown/PneAsyncAutocomplete';
|
|
4
6
|
export type { PneAsyncAutocompleteProps } from '../component/dropdown/PneAsyncAutocomplete';
|
|
@@ -8,3 +10,4 @@ export { PneCheckbox } from '../component/PneCheckbox';
|
|
|
8
10
|
export { PneLabeledCheckbox } from '../component/PneLabeledCheckbox';
|
|
9
11
|
export { PneHighContrastLabeledCheckbox } from '../component/PneHighContrastLabeledCheckbox';
|
|
10
12
|
export { default as PneSwitch } from '../component/PneSwitch';
|
|
13
|
+
export type { PneSwitchProps, PneSwitchSize } from '../component/PneSwitch';
|
package/cjs/exports/inputs.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PneSwitch = exports.PneHighContrastLabeledCheckbox = exports.PneLabeledCheckbox = exports.PneCheckbox = exports.PneSelect = exports.PneAsyncAutocomplete = exports.PneAutocomplete = exports.PneTextField = void 0;
|
|
3
|
+
exports.PneSwitch = exports.PneHighContrastLabeledCheckbox = exports.PneLabeledCheckbox = exports.PneCheckbox = exports.PneSelect = exports.PneAsyncAutocomplete = exports.PneAutocomplete = exports.PneField = exports.PneTextField = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
var PneTextField_1 = require("../component/PneTextField");
|
|
6
6
|
Object.defineProperty(exports, "PneTextField", { enumerable: true, get: function () { return tslib_1.__importDefault(PneTextField_1).default; } });
|
|
7
|
+
var PneField_1 = require("../component/PneField");
|
|
8
|
+
Object.defineProperty(exports, "PneField", { enumerable: true, get: function () { return tslib_1.__importDefault(PneField_1).default; } });
|
|
7
9
|
var PneAutocomplete_1 = require("../component/dropdown/PneAutocomplete");
|
|
8
10
|
Object.defineProperty(exports, "PneAutocomplete", { enumerable: true, get: function () { return tslib_1.__importDefault(PneAutocomplete_1).default; } });
|
|
9
11
|
var PneAsyncAutocomplete_1 = require("../component/dropdown/PneAsyncAutocomplete");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/exports/inputs.ts"],"names":[],"mappings":";;;;AAAA,0DAAmE;AAA1D,qIAAA,OAAO,OAAgB;AAChC,yEAAkF;AAAzE,2IAAA,OAAO,OAAmB;AACnC,mFAA4F;AAAnF,qJAAA,OAAO,OAAwB;AAExC,6DAAsE;AAA7D,+HAAA,OAAO,OAAa;AAG7B,wDAAsD;AAA7C,0GAAA,WAAW,OAAA;AACpB,sEAAoE;AAA3D,wHAAA,kBAAkB,OAAA;AAC3B,8FAA4F;AAAnF,gJAAA,8BAA8B,OAAA;AACvC,oDAA6D;AAApD,+HAAA,OAAO,OAAa"}
|
|
1
|
+
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/exports/inputs.ts"],"names":[],"mappings":";;;;AAAA,0DAAmE;AAA1D,qIAAA,OAAO,OAAgB;AAChC,kDAA2D;AAAlD,6HAAA,OAAO,OAAY;AAE5B,yEAAkF;AAAzE,2IAAA,OAAO,OAAmB;AACnC,mFAA4F;AAAnF,qJAAA,OAAO,OAAwB;AAExC,6DAAsE;AAA7D,+HAAA,OAAO,OAAa;AAG7B,wDAAsD;AAA7C,0GAAA,WAAW,OAAA;AACpB,sEAAoE;AAA3D,wHAAA,kBAAkB,OAAA;AAC3B,8FAA4F;AAAnF,gJAAA,8BAA8B,OAAA;AACvC,oDAA6D;AAApD,+HAAA,OAAO,OAAa"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import { FormControlProps, SxProps } from '@mui/material';
|
|
3
|
+
import { Theme } from '@mui/material/styles';
|
|
4
|
+
export interface PneFieldProps extends Omit<FormControlProps, 'children' | 'disabled' | 'error' | 'fullWidth' | 'required'> {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
error?: boolean;
|
|
8
|
+
fullWidth?: boolean;
|
|
9
|
+
helperText?: ReactNode;
|
|
10
|
+
helperTextSx?: SxProps<Theme>;
|
|
11
|
+
htmlFor?: string;
|
|
12
|
+
id?: string;
|
|
13
|
+
label?: ReactNode;
|
|
14
|
+
labelSx?: SxProps<Theme>;
|
|
15
|
+
required?: boolean;
|
|
16
|
+
}
|
|
17
|
+
declare const PneField: React.ForwardRefExoticComponent<Omit<PneFieldProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export default PneField;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { FormControl, FormHelperText, FormLabel } from '@mui/material';
|
|
3
|
+
const PneField = forwardRef((props, ref) => {
|
|
4
|
+
const { children, disabled = false, error = false, fullWidth = true, helperText, helperTextSx, htmlFor, id, label, labelSx, required = false, sx, ...rest } = props;
|
|
5
|
+
const helperTextId = helperText && id ? `${id}-helper-text` : undefined;
|
|
6
|
+
return React.createElement(FormControl, { disabled: disabled, error: error, fullWidth: fullWidth, id: id, required: required, ref: ref, sx: [
|
|
7
|
+
{
|
|
8
|
+
gap: '4px',
|
|
9
|
+
},
|
|
10
|
+
...(Array.isArray(sx) ? sx : [sx]),
|
|
11
|
+
], ...rest },
|
|
12
|
+
label
|
|
13
|
+
? React.createElement(FormLabel, { htmlFor: htmlFor, required: required, sx: [
|
|
14
|
+
{
|
|
15
|
+
color: error ? 'error.main' : 'text.secondary',
|
|
16
|
+
fontSize: '0.875rem',
|
|
17
|
+
lineHeight: '20px',
|
|
18
|
+
'&.Mui-focused': {
|
|
19
|
+
color: error ? 'error.main' : 'text.secondary',
|
|
20
|
+
},
|
|
21
|
+
'& .MuiFormLabel-asterisk': {
|
|
22
|
+
color: 'error.main',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
...(Array.isArray(labelSx) ? labelSx : [labelSx]),
|
|
26
|
+
] }, label)
|
|
27
|
+
: null,
|
|
28
|
+
children,
|
|
29
|
+
helperText
|
|
30
|
+
? React.createElement(FormHelperText, { id: helperTextId, sx: [
|
|
31
|
+
{
|
|
32
|
+
mx: 0,
|
|
33
|
+
},
|
|
34
|
+
...(Array.isArray(helperTextSx) ? helperTextSx : [helperTextSx]),
|
|
35
|
+
] }, helperText)
|
|
36
|
+
: null);
|
|
37
|
+
});
|
|
38
|
+
export default PneField;
|
|
39
|
+
//# sourceMappingURL=PneField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PneField.js","sourceRoot":"","sources":["../../src/component/PneField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAY,UAAU,EAAC,MAAM,OAAO,CAAA;AAClD,OAAO,EAAC,WAAW,EAAoB,cAAc,EAAE,SAAS,EAAU,MAAM,eAAe,CAAA;AAkB/F,MAAM,QAAQ,GAAG,UAAU,CAAgC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACtE,MAAM,EACF,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,IAAI,EAChB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,EAAE,EACF,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,EAAE,EACF,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,YAAY,GAAG,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAA;IAEvE,OAAO,oBAAC,WAAW,IACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,EAAE,EAAE;YACA;gBACI,GAAG,EAAE,KAAK;aACb;YACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACrC,KACG,IAAI;QAEP,KAAK;YACF,CAAC,CAAC,oBAAC,SAAS,IACR,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE;oBACA;wBACI,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;wBAC9C,QAAQ,EAAE,UAAU;wBACpB,UAAU,EAAE,MAAM;wBAClB,eAAe,EAAE;4BACb,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;yBACjD;wBACD,0BAA0B,EAAE;4BACxB,KAAK,EAAE,YAAY;yBACtB;qBACJ;oBACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACpD,IAEA,KAAK,CACE;YACZ,CAAC,CAAC,IAAI;QACT,QAAQ;QACR,UAAU;YACP,CAAC,CAAC,oBAAC,cAAc,IACb,EAAE,EAAE,YAAY,EAChB,EAAE,EAAE;oBACA;wBACI,EAAE,EAAE,CAAC;qBACR;oBACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;iBACnE,IAEA,UAAU,CACE;YACjB,CAAC,CAAC,IAAI,CACA,CAAA;AAClB,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SwitchProps } from '@mui/material';
|
|
3
|
+
export type PneSwitchSize = NonNullable<SwitchProps['size']>;
|
|
4
|
+
export type PneSwitchProps = SwitchProps;
|
|
3
5
|
declare const PneSwitch: React.ForwardRefExoticComponent<Omit<SwitchProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
4
6
|
export default PneSwitch;
|
|
@@ -1,11 +1,168 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
2
|
import { Switch } from '@mui/material';
|
|
3
|
+
import { alpha } from '@mui/material/styles';
|
|
3
4
|
const PneSwitch = forwardRef((props, ref) => {
|
|
4
|
-
const { sx, size = '
|
|
5
|
+
const { sx, size = 'medium', ...rest } = props;
|
|
5
6
|
const _sx = [
|
|
7
|
+
switchSxBySize[size],
|
|
6
8
|
...(Array.isArray(sx) ? sx : [sx]),
|
|
7
9
|
];
|
|
8
10
|
return React.createElement(Switch, { sx: _sx, size: size, ...rest, ref: ref });
|
|
9
11
|
});
|
|
12
|
+
const createSwitchSx = (config) => theme => {
|
|
13
|
+
const trackFeedbackColor = alpha(theme.palette.primary.main, 0.1);
|
|
14
|
+
return {
|
|
15
|
+
width: config.rootWidth,
|
|
16
|
+
height: config.rootHeight,
|
|
17
|
+
padding: 0,
|
|
18
|
+
overflow: 'visible',
|
|
19
|
+
'&:hover .MuiSwitch-track::before, & .MuiSwitch-switchBase:hover + .MuiSwitch-track::before': {
|
|
20
|
+
boxShadow: `0 0 0 2px ${trackFeedbackColor}`,
|
|
21
|
+
opacity: 1,
|
|
22
|
+
transform: 'scale(1)',
|
|
23
|
+
},
|
|
24
|
+
'&:active .MuiSwitch-track::before, & .MuiSwitch-switchBase:active + .MuiSwitch-track::before': {
|
|
25
|
+
boxShadow: `0 0 0 ${config.pressedOutlineWidth}px ${trackFeedbackColor}`,
|
|
26
|
+
opacity: 1,
|
|
27
|
+
transform: 'scale(1)',
|
|
28
|
+
transitionDuration: '80ms',
|
|
29
|
+
},
|
|
30
|
+
'& .MuiSwitch-switchBase': {
|
|
31
|
+
top: config.trackTop,
|
|
32
|
+
left: config.trackLeft,
|
|
33
|
+
padding: `${config.thumbPadding}px`,
|
|
34
|
+
color: '#fff',
|
|
35
|
+
'&.Mui-checked': {
|
|
36
|
+
transform: `translateX(${config.checkedShift}px)`,
|
|
37
|
+
color: '#fff',
|
|
38
|
+
'& + .MuiSwitch-track': {
|
|
39
|
+
backgroundColor: 'primary.main',
|
|
40
|
+
opacity: 1,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
'&:hover + .MuiSwitch-track': {
|
|
44
|
+
backgroundColor: '#5E7594',
|
|
45
|
+
opacity: 1,
|
|
46
|
+
},
|
|
47
|
+
'&.Mui-checked:hover + .MuiSwitch-track': {
|
|
48
|
+
backgroundColor: 'primary.dark',
|
|
49
|
+
opacity: 1,
|
|
50
|
+
},
|
|
51
|
+
'&.Mui-disabled': {
|
|
52
|
+
color: '#fff',
|
|
53
|
+
opacity: 1,
|
|
54
|
+
'& .MuiSwitch-thumb': {
|
|
55
|
+
backgroundColor: '#fff',
|
|
56
|
+
},
|
|
57
|
+
'& + .MuiSwitch-track': {
|
|
58
|
+
backgroundColor: '#E6E6E6',
|
|
59
|
+
opacity: 1,
|
|
60
|
+
},
|
|
61
|
+
'& + .MuiSwitch-track::before': {
|
|
62
|
+
boxShadow: 'none',
|
|
63
|
+
opacity: 0,
|
|
64
|
+
transform: 'scale(1)',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
'&.Mui-checked.Mui-disabled + .MuiSwitch-track': {
|
|
68
|
+
backgroundColor: '#E6E6E6',
|
|
69
|
+
opacity: 1,
|
|
70
|
+
},
|
|
71
|
+
'&.Mui-checked.Mui-disabled .MuiSwitch-thumb': {
|
|
72
|
+
backgroundColor: '#fff',
|
|
73
|
+
},
|
|
74
|
+
'&.Mui-checked.Mui-disabled': {
|
|
75
|
+
color: '#fff',
|
|
76
|
+
opacity: 1,
|
|
77
|
+
'& + .MuiSwitch-track': {
|
|
78
|
+
backgroundColor: '#E6E6E6',
|
|
79
|
+
opacity: 1,
|
|
80
|
+
},
|
|
81
|
+
'& + .MuiSwitch-track::before': {
|
|
82
|
+
boxShadow: 'none',
|
|
83
|
+
opacity: 0,
|
|
84
|
+
transform: 'scale(1)',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
'&.Mui-disabled:hover + .MuiSwitch-track': {
|
|
88
|
+
backgroundColor: '#E6E6E6',
|
|
89
|
+
opacity: 1,
|
|
90
|
+
},
|
|
91
|
+
'&.Mui-checked.Mui-disabled:hover + .MuiSwitch-track': {
|
|
92
|
+
backgroundColor: '#E6E6E6',
|
|
93
|
+
opacity: 1,
|
|
94
|
+
},
|
|
95
|
+
'&.Mui-focusVisible:not(.Mui-disabled) + .MuiSwitch-track::before': {
|
|
96
|
+
boxShadow: `0 0 0 ${config.focusOutlineWidth}px ${trackFeedbackColor}`,
|
|
97
|
+
opacity: 1,
|
|
98
|
+
transform: 'scale(1)',
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
'&:active .MuiSwitch-switchBase.Mui-focusVisible:not(.Mui-disabled) + .MuiSwitch-track::before, & .MuiSwitch-switchBase.Mui-focusVisible:not(.Mui-disabled):active + .MuiSwitch-track::before': {
|
|
102
|
+
boxShadow: `0 0 0 ${config.pressedOutlineWidth}px ${trackFeedbackColor}`,
|
|
103
|
+
opacity: 1,
|
|
104
|
+
transform: 'scale(1)',
|
|
105
|
+
transitionDuration: '80ms',
|
|
106
|
+
},
|
|
107
|
+
'& .MuiSwitch-thumb': {
|
|
108
|
+
width: config.thumbSize,
|
|
109
|
+
height: config.thumbSize,
|
|
110
|
+
borderRadius: '50%',
|
|
111
|
+
boxShadow: '0px 1px 4px rgba(0, 0, 0, 0.2)',
|
|
112
|
+
},
|
|
113
|
+
'& .MuiSwitch-track': {
|
|
114
|
+
position: 'absolute',
|
|
115
|
+
top: config.trackTop,
|
|
116
|
+
left: config.trackLeft,
|
|
117
|
+
width: config.trackWidth,
|
|
118
|
+
height: config.trackHeight,
|
|
119
|
+
borderRadius: 40,
|
|
120
|
+
backgroundColor: '#809EAE',
|
|
121
|
+
opacity: 1,
|
|
122
|
+
overflow: 'visible',
|
|
123
|
+
'&::before': {
|
|
124
|
+
borderRadius: 'inherit',
|
|
125
|
+
boxShadow: 'none',
|
|
126
|
+
boxSizing: 'border-box',
|
|
127
|
+
content: '""',
|
|
128
|
+
inset: 0,
|
|
129
|
+
opacity: 0,
|
|
130
|
+
pointerEvents: 'none',
|
|
131
|
+
position: 'absolute',
|
|
132
|
+
transform: 'scale(1)',
|
|
133
|
+
transformOrigin: 'center',
|
|
134
|
+
transition: 'box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1), opacity 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1)',
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
const switchSxBySize = {
|
|
140
|
+
small: createSwitchSx({
|
|
141
|
+
rootWidth: 40,
|
|
142
|
+
rootHeight: 24,
|
|
143
|
+
trackLeft: 8,
|
|
144
|
+
trackTop: 4,
|
|
145
|
+
trackWidth: 24,
|
|
146
|
+
trackHeight: 16,
|
|
147
|
+
thumbSize: 12,
|
|
148
|
+
thumbPadding: 2,
|
|
149
|
+
checkedShift: 8,
|
|
150
|
+
focusOutlineWidth: 2,
|
|
151
|
+
pressedOutlineWidth: 4,
|
|
152
|
+
}),
|
|
153
|
+
medium: createSwitchSx({
|
|
154
|
+
rootWidth: 58,
|
|
155
|
+
rootHeight: 32,
|
|
156
|
+
trackLeft: 12,
|
|
157
|
+
trackTop: 5,
|
|
158
|
+
trackWidth: 34,
|
|
159
|
+
trackHeight: 22,
|
|
160
|
+
thumbSize: 16,
|
|
161
|
+
thumbPadding: 3,
|
|
162
|
+
checkedShift: 12,
|
|
163
|
+
focusOutlineWidth: 4,
|
|
164
|
+
pressedOutlineWidth: 6,
|
|
165
|
+
}),
|
|
166
|
+
};
|
|
10
167
|
export default PneSwitch;
|
|
11
168
|
//# sourceMappingURL=PneSwitch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneSwitch.js","sourceRoot":"","sources":["../../src/component/PneSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAM,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"PneSwitch.js","sourceRoot":"","sources":["../../src/component/PneSwitch.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,11 @@ import React, { ReactNode } from 'react';
|
|
|
2
2
|
import { SelectProps, SelectVariants } from '@mui/material';
|
|
3
3
|
import { PneDropdownChoice } from '../../common/paynet/dropdown';
|
|
4
4
|
import { SelectOption } from '../../common/pne/type';
|
|
5
|
-
export interface IProps<T extends PneDropdownChoice> extends Omit<SelectProps<T>, 'children' | 'onChange' | 'variant'> {
|
|
5
|
+
export interface IProps<T extends PneDropdownChoice> extends Omit<SelectProps<T>, 'children' | 'onChange' | 'placeholder' | 'variant'> {
|
|
6
6
|
options: readonly T[];
|
|
7
7
|
onChange: (option: T) => void;
|
|
8
8
|
getOptionLabel?: (option: SelectOption) => ReactNode;
|
|
9
|
+
placeholder?: ReactNode;
|
|
9
10
|
variant?: SelectVariants;
|
|
10
11
|
disableMenuItem?: (option: SelectOption) => boolean;
|
|
11
12
|
}
|
|
@@ -1,22 +1,57 @@
|
|
|
1
|
-
import React, { forwardRef } from 'react';
|
|
2
|
-
import { FormControl, InputLabel, MenuItem, Select } from '@mui/material';
|
|
1
|
+
import React, { forwardRef, useId } from 'react';
|
|
2
|
+
import { Box, FormControl, InputLabel, MenuItem, Select } from '@mui/material';
|
|
3
3
|
import { assertObject, ensure, exhaustiveCheck } from '../../common/pne/type';
|
|
4
4
|
import { isAbstractEntity, isIAutoCompleteChoice } from '../../common/paynet/type';
|
|
5
5
|
const PneSelect = forwardRef((props, ref) => {
|
|
6
|
-
const { options, onChange, size = 'small', getOptionLabel = createDefaultOptionLabel, variant = 'outlined', disableMenuItem, label, disabled, error, required, sx, ...rest } = props;
|
|
6
|
+
const { options, onChange, size = 'small', getOptionLabel = createDefaultOptionLabel, variant = 'outlined', disableMenuItem, label, disabled, error, required, sx, displayEmpty, placeholder, renderValue, ...rest } = props;
|
|
7
|
+
const labelId = useId();
|
|
8
|
+
const hasLabel = label !== undefined && label !== null && label !== '';
|
|
9
|
+
const mappedOptions = options.map(mapChoiceToSelectOption);
|
|
7
10
|
const handleChange = (event) => {
|
|
8
11
|
const value = event.target.value;
|
|
9
12
|
onChange(ensure(options.find(opt => mapChoiceToSelectOption(opt).value === value)));
|
|
10
13
|
};
|
|
11
14
|
const optionsPresent = options?.length > 0;
|
|
15
|
+
const shouldRenderPlaceholder = placeholder !== undefined && placeholder !== null;
|
|
16
|
+
const renderSelectedValue = (selected) => {
|
|
17
|
+
if (isEmptyValue(selected)) {
|
|
18
|
+
return React.createElement(Box, { component: 'span', sx: { color: 'text.secondary' } }, placeholder);
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(selected)) {
|
|
21
|
+
return selected.map((value, index) => React.createElement(React.Fragment, { key: String(value) },
|
|
22
|
+
index > 0 ? ', ' : null,
|
|
23
|
+
renderSingleSelectedValue(value, mappedOptions, getOptionLabel)));
|
|
24
|
+
}
|
|
25
|
+
return renderSingleSelectedValue(selected, mappedOptions, getOptionLabel);
|
|
26
|
+
};
|
|
12
27
|
return React.createElement(FormControl, { size: size, variant: variant, disabled: disabled, error: error, required: required, sx: sx, fullWidth: true },
|
|
13
|
-
React.createElement(InputLabel, { id:
|
|
14
|
-
React.createElement(Select, { ref: ref, labelId:
|
|
28
|
+
hasLabel ? React.createElement(InputLabel, { id: labelId }, label) : null,
|
|
29
|
+
React.createElement(Select, { ref: ref, displayEmpty: displayEmpty ?? shouldRenderPlaceholder, labelId: hasLabel ? labelId : undefined, onChange: handleChange, size: size, variant: variant, label: hasLabel ? label : undefined, renderValue: renderValue ?? (shouldRenderPlaceholder ? renderSelectedValue : undefined), ...rest }, optionsPresent ? mappedOptions.map(option => React.createElement(MenuItem, { disabled: disableMenuItem ? disableMenuItem(option) : false, key: option.value, value: option.value }, getOptionLabel(option))) : null));
|
|
15
30
|
});
|
|
16
31
|
export default PneSelect;
|
|
17
32
|
const createDefaultOptionLabel = (option) => {
|
|
18
33
|
return option.label;
|
|
19
34
|
};
|
|
35
|
+
const isEmptyValue = (value) => {
|
|
36
|
+
return value === '' || value === undefined || value === null
|
|
37
|
+
|| (Array.isArray(value) && value.length === 0);
|
|
38
|
+
};
|
|
39
|
+
const renderSingleSelectedValue = (value, options, getOptionLabel) => {
|
|
40
|
+
const option = options.find(option => option.value === value);
|
|
41
|
+
if (option) {
|
|
42
|
+
return getOptionLabel(option);
|
|
43
|
+
}
|
|
44
|
+
if (typeof value === 'string' || typeof value === 'number') {
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
if (isIAutoCompleteChoice(value)) {
|
|
48
|
+
return value.displayName;
|
|
49
|
+
}
|
|
50
|
+
if (isAbstractEntity(value)) {
|
|
51
|
+
return value.displayName;
|
|
52
|
+
}
|
|
53
|
+
return '';
|
|
54
|
+
};
|
|
20
55
|
const mapChoiceToSelectOption = (choice) => {
|
|
21
56
|
if (typeof choice === 'string') {
|
|
22
57
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PneSelect.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"PneSelect.js","sourceRoot":"","sources":["../../../src/component/dropdown/PneSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAa,KAAK,EAAC,MAAM,OAAO,CAAA;AACzD,OAAO,EAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAiD,MAAM,eAAe,CAAA;AAE5H,OAAO,EAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAe,MAAM,uBAAuB,CAAA;AACzF,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,0BAA0B,CAAA;AAYhF,MAAM,SAAS,GAAG,UAAU,CAAC,CACzB,KAAgB,EAChB,GAAiC,EACnC,EAAE;IACA,MAAM,EACF,OAAO,EACP,QAAQ,EACR,IAAI,GAAG,OAAO,EACd,cAAc,GAAG,wBAAwB,EACzC,OAAO,GAAG,UAAU,EACpB,eAAe,EACf,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,EAAE,EACF,YAAY,EACZ,WAAW,EACX,WAAW,EACX,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,OAAO,GAAG,KAAK,EAAE,CAAA;IACvB,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAA;IACtE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAE1D,MAAM,YAAY,GAAG,CAAC,KAA2B,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAA;QAEhC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACxB,GAAG,CAAC,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CACtD,CAAC,CAAC,CAAA;IACP,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,OAAO,EAAE,MAAM,GAAG,CAAC,CAAA;IAC1C,MAAM,uBAAuB,GAAG,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,CAAA;IAEjF,MAAM,mBAAmB,GAAG,CAAC,QAAW,EAAE,EAAE;QACxC,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,oBAAC,GAAG,IACP,SAAS,EAAC,MAAM,EAChB,EAAE,EAAE,EAAC,KAAK,EAAE,gBAAgB,EAAC,IAE5B,WAAW,CACV,CAAA;QACV,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC;gBACnE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;gBACvB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,cAAc,CAAC,CACnD,CAAC,CAAA;QACtB,CAAC;QAED,OAAO,yBAAyB,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,CAAA;IAC7E,CAAC,CAAA;IAED,OAAO,oBAAC,WAAW,IACf,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,EAAE,EACN,SAAS;QAER,QAAQ,CAAC,CAAC,CAAC,oBAAC,UAAU,IAAC,EAAE,EAAE,OAAO,IAAG,KAAK,CAAc,CAAC,CAAC,CAAC,IAAI;QAChE,oBAAC,MAAM,IACH,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,YAAY,IAAI,uBAAuB,EACrD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACvC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACnC,WAAW,EAAE,WAAW,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,KACnF,IAAI,IAEP,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACzC,oBAAC,QAAQ,IACL,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAC3D,GAAG,EAAE,MAAM,CAAC,KAAK,EACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAElB,cAAc,CAAC,MAAM,CAAC,CAChB,CAAC,CAAC,CAAC,CAAC,IAAI,CAClB,CACC,CAAA;AAClB,CAAC,CAAC,CAAA;AAEF,eAAe,SAAS,CAAA;AAExB,MAAM,wBAAwB,GAAG,CAAC,MAAoB,EAAa,EAAE;IACjE,OAAO,MAAM,CAAC,KAAK,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,KAAc,EAAW,EAAE;IAC7C,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;WACrD,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,yBAAyB,GAAG,CAC9B,KAAc,EACd,OAAuB,EACvB,cAAmD,EAC1C,EAAE;IACX,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;IAE7D,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,cAAc,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,WAAW,CAAA;IAC5B,CAAC;IAED,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,WAAW,CAAA;IAC5B,CAAC;IAED,OAAO,EAAE,CAAA;AACb,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAA8B,MAAS,EAAgB,EAAE;IACrF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACH,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,MAAM;SAChB,CAAA;IACL,CAAC;IAED,YAAY,CAAC,MAAM,CAAC,CAAA;IACpB,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,QAAQ;YACtB,KAAK,EAAE,MAAM,CAAC,WAAW;SAC5B,CAAA;IACL,CAAC;SAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,EAAE;YAChB,KAAK,EAAE,MAAM,CAAC,WAAW;SAC5B,CAAA;IACL,CAAC;IAED,eAAe,CAAC,MAAM,CAAC,CAAA;IAEvB,MAAM,IAAI,SAAS,CAAC,wCAAwC;UACtD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CACpC,CAAA;AACL,CAAC,CAAA"}
|
package/esm/exports/inputs.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { default as PneTextField } from '../component/PneTextField';
|
|
2
|
+
export { default as PneField } from '../component/PneField';
|
|
3
|
+
export type { PneFieldProps } from '../component/PneField';
|
|
2
4
|
export { default as PneAutocomplete } from '../component/dropdown/PneAutocomplete';
|
|
3
5
|
export { default as PneAsyncAutocomplete } from '../component/dropdown/PneAsyncAutocomplete';
|
|
4
6
|
export type { PneAsyncAutocompleteProps } from '../component/dropdown/PneAsyncAutocomplete';
|
|
@@ -8,3 +10,4 @@ export { PneCheckbox } from '../component/PneCheckbox';
|
|
|
8
10
|
export { PneLabeledCheckbox } from '../component/PneLabeledCheckbox';
|
|
9
11
|
export { PneHighContrastLabeledCheckbox } from '../component/PneHighContrastLabeledCheckbox';
|
|
10
12
|
export { default as PneSwitch } from '../component/PneSwitch';
|
|
13
|
+
export type { PneSwitchProps, PneSwitchSize } from '../component/PneSwitch';
|
package/esm/exports/inputs.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { default as PneTextField } from '../component/PneTextField';
|
|
2
|
+
export { default as PneField } from '../component/PneField';
|
|
2
3
|
export { default as PneAutocomplete } from '../component/dropdown/PneAutocomplete';
|
|
3
4
|
export { default as PneAsyncAutocomplete } from '../component/dropdown/PneAsyncAutocomplete';
|
|
4
5
|
export { default as PneSelect } from '../component/dropdown/PneSelect';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/exports/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4CAA4C,CAAA;AAE5F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAA;AAC5F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../src/exports/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4CAA4C,CAAA;AAE5F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAA;AAC5F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA"}
|